diff options
210 files changed, 21842 insertions, 14371 deletions
diff --git a/.gitignore b/.gitignore index a301acc2c4..35a6c00106 100644 --- a/.gitignore +++ b/.gitignore @@ -110,9 +110,7 @@ /doc/tor-resolve.html.in /doc/tor-resolve.1.xml /doc/torify.1 -/doc/torify.1.in /doc/torify.html -/doc/torify.html.in /doc/torify.1.xml # /doc/spec/ @@ -1,3 +1,323 @@ +Changes in version 0.2.5.1-alpha - 2013-10-02 + Tor 0.2.5.1-alpha introduces experimental support for syscall sandboxing + on Linux, allows bridges that offer pluggable transports to report usage + statistics, fixes many issues to make testing easier, and provides + a pile of minor features and bugfixes that have been waiting for a + release of the new branch. + + This is the first alpha release in a new series, so expect there to + be bugs. Users who would rather test out a more stable branch should + stay with 0.2.4.x for now. + + o Major features (security): + - Use the seccomp2 syscall filtering facility on Linux to limit + which system calls Tor can invoke. This is an experimental, + Linux-only feature to provide defense-in-depth against unknown + attacks. To try turning it on, set "Sandbox 1" in your torrc + file. Please be ready to report bugs. We hope to add support + for better sandboxing in the future, including more fine-grained + filters, better division of responsibility, and support for more + platforms. This work has been done by Cristian-Matei Toader for + Google Summer of Code. + - Re-enable TLS 1.1 and 1.2 when built with OpenSSL 1.0.1e or later. + Resolves ticket 6055. (OpenSSL before 1.0.1 didn't have TLS 1.1 or + 1.2, and OpenSSL from 1.0.1 through 1.0.1d had bugs that prevented + renegotiation from working with TLS 1.1 or 1.2, so we had disabled + them to solve bug 6033.) + + o Major features (other): + - Add support for passing arguments to managed pluggable transport + proxies. Implements ticket 3594. + - Bridges now track GeoIP information and the number of their users + even when pluggable transports are in use, and report usage + statistics in their extra-info descriptors. Resolves tickets 4773 + and 5040. + - Make testing Tor networks bootstrap better: lower directory fetch + retry schedules and maximum interval without directory requests, + and raise maximum download tries. Implements ticket 6752. + - Add make target 'test-network' to run tests on a Chutney network. + Implements ticket 8530. + - The ntor handshake is now on-by-default, no matter what the + directory authorities recommend. Implements ticket 8561. + + o Major bugfixes: + - Instead of writing destroy cells directly to outgoing connection + buffers, queue them and intersperse them with other outgoing cells. + This can prevent a set of resource starvation conditions where too + many pending destroy cells prevent data cells from actually getting + delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912; + bugfix on 0.2.0.1-alpha. + - If we are unable to save a microdescriptor to the journal, do not + drop it from memory and then reattempt downloading it. Fixes bug + 9645; bugfix on 0.2.2.6-alpha. + - The new channel code sometimes lost track of in-progress circuits, + causing long-running clients to stop building new circuits. The + fix is to always call circuit_n_chan_done(chan, 0) from + channel_closed(). Fixes bug 9776; bugfix on 0.2.4.17-rc. + + o Build features: + - Tor now builds each source file in two modes: a mode that avoids + exposing identifiers needlessly, and another mode that exposes + more identifiers for testing. This lets the compiler do better at + optimizing the production code, while enabling us to take more + radical measures to let the unit tests test things. + - The production builds no longer include functions used only in + the unit tests; all functions exposed from a module only for + unit-testing are now static in production builds. + - Add an --enable-coverage configuration option to make the unit + tests (and a new src/or/tor-cov target) to build with gcov test + coverage support. + + o Testing: + - We now have rudimentary function mocking support that our unit + tests can use to test functions in isolation. Function mocking + lets the tests temporarily replace a function's dependencies with + stub functions, so that the tests can check the function without + invoking the other functions it calls. + - Add more unit tests for the <circid,channel>->circuit map, and + the destroy-cell-tracking code to fix bug 7912. + - Unit tests for failing cases of the TAP onion handshake. + - More unit tests for address-manipulation functions. + + o Minor features (protecting client timestamps): + - Clients no longer send timestamps in their NETINFO cells. These were + not used for anything, and they provided one small way for clients + to be distinguished from each other as they moved from network to + network or behind NAT. Implements part of proposal 222. + - Clients now round timestamps in INTRODUCE cells down to the nearest + 10 minutes. If a new Support022HiddenServices option is set to 0, or + if it's set to "auto" and the feature is disabled in the consensus, + the timestamp is sent as 0 instead. Implements part of proposal 222. + - Stop sending timestamps in AUTHENTICATE cells. This is not such + a big deal from a security point of view, but it achieves no actual + good purpose, and isn't needed. Implements part of proposal 222. + - Reduce down accuracy of timestamps in hidden service descriptors. + Implements part of proposal 222. + + o Minor features (config options): + - Config (torrc) lines now handle fingerprints which are missing + their initial '$'. Resolves ticket 4341; improvement over 0.0.9pre5. + - Support a --dump-config option to print some or all of the + configured options. Mainly useful for debugging the command-line + option parsing code. Helps resolve ticket 4647. + - Raise awareness of safer logging: notify user of potentially + unsafe config options, like logging more verbosely than severity + "notice" or setting SafeLogging to 0. Resolves ticket 5584. + - Add a new configuration option TestingV3AuthVotingStartOffset + that bootstraps a network faster by changing the timing for + consensus votes. Addresses ticket 8532. + - Add a new torrc option "ServerTransportOptions" that allows + bridge operators to pass configuration parameters to their + pluggable transports. Resolves ticket 8929. + - The config (torrc) file now accepts bandwidth and space limits in + bits as well as bytes. (Anywhere that you can say "2 Kilobytes", + you can now say "16 kilobits", and so on.) Resolves ticket 9214. + Patch by CharlieB. + + o Minor features (build): + - Add support for `--library-versions` flag. Implements ticket 6384. + - Return the "unexpected sendme" warnings to a warn severity, but make + them rate limited, to help diagnose ticket 8093. + - Detect a missing asciidoc, and warn the user about it, during + configure rather than at build time. Fixes issue 6506. Patch from + Arlo Breault. + + o Minor features (other): + - Use the SOCK_NONBLOCK socket type, if supported, to open nonblocking + sockets in a single system call. Implements ticket 5129. + - Log current accounting state (bytes sent and received + remaining + time for the current accounting period) in the relay's heartbeat + message. Implements ticket 5526; patch from Peter Retzlaff. + - Implement the TRANSPORT_LAUNCHED control port event that + notifies controllers about new launched pluggable + transports. Resolves ticket 5609. + - If we're using the pure-C 32-bit curve25519_donna implementation + of curve25519, build it with the -fomit-frame-pointer option to + make it go faster on register-starved hosts. This improves our + handshake performance by about 6% on i386 hosts without nacl. + Closes ticket 8109. + - Update to the September 4 2013 Maxmind GeoLite Country database. + + o Minor bugfixes: + - Set the listen() backlog limit to the largest actually supported + on the system, not to the value in a header file. Fixes bug 9716; + bugfix on every released Tor. + - No longer accept malformed http headers when parsing urls from + headers. Now we reply with Bad Request ("400"). Fixes bug 2767; + bugfix on 0.0.6pre1. + - In munge_extrainfo_into_routerinfo(), check the return value of + memchr(). This would have been a serious issue if we ever passed + it a non-extrainfo. Fixes bug 8791; bugfix on 0.2.0.6-alpha. Patch + from Arlo Breault. + - On the chance that somebody manages to build Tor on a + platform where time_t is unsigned, correct the way that + microdesc_add_to_cache() handles negative time arguments. + Fixes bug 8042; bugfix on 0.2.3.1-alpha. + - Reject relative control socket paths and emit a warning. Previously, + single-component control socket paths would be rejected, but Tor + would not log why it could not validate the config. Fixes bug 9258; + bugfix on 0.2.3.16-alpha. + + o Minor bugfixes (command line): + - Use a single command-line parser for parsing torrc options on the + command line and for finding special command-line options to avoid + inconsistent behavior for torrc option arguments that have the same + names as command-line options. Fixes bugs 4647 and 9578; bugfix on + 0.0.9pre5. + - No longer allow 'tor --hash-password' with no arguments. Fixes bug + 9573; bugfix on 0.0.9pre5. + + o Minor fixes (build, auxiliary programs): + - Stop preprocessing the "torify" script with autoconf, since + it no longer refers to LOCALSTATEDIR. Fixes bug 5505; patch + from Guilhem. + - The tor-fw-helper program now follows the standard convention and + exits with status code "0" on success. Fixes bug 9030; bugfix on + 0.2.3.1-alpha. Patch by Arlo Breault. + - Corrected ./configure advice for what openssl dev package you should + install on Debian. Fixes bug 9207; bugfix on 0.2.0.1-alpha. + + o Minor code improvements: + - Remove constants and tests for PKCS1 padding; it's insecure and + shouldn't be used for anything new. Fixes bug 8792; patch + from Arlo Breault. + - Remove instances of strcpy() from the unit tests. They weren't + hurting anything, since they were only in the unit tests, but it's + embarassing to have strcpy() in the code at all, and some analysis + tools don't like it. Fixes bug 8790; bugfix on 0.2.3.6-alpha and + 0.2.3.8-alpha. Patch from Arlo Breault. + + o Removed features: + - Remove migration code from when we renamed the "cached-routers" + file to "cached-descriptors" back in 0.2.0.8-alpha. This + incidentally resolves ticket 6502 by cleaning up the related code + a bit. Patch from Akshay Hebbar. + + o Code simplification and refactoring: + - Extract the common duplicated code for creating a subdirectory + of the data directory and writing to a file in it. Fixes ticket + 4282; patch from Peter Retzlaff. + - Since OpenSSL 0.9.7, the i2d_*() functions support allocating output + buffer. Avoid calling twice: i2d_RSAPublicKey(), i2d_DHparams(), + i2d_X509(), and i2d_PublicKey(). Resolves ticket 5170. + - Add a set of accessor functions for the circuit timeout data + structure. Fixes ticket 6153; patch from "piet". + - Clean up exit paths from connection_listener_new(). Closes ticket + 8789. Patch from Arlo Breault. + - Since we rely on OpenSSL 0.9.8 now, we can use EVP_PKEY_cmp() + and drop our own custom pkey_eq() implementation. Fixes bug 9043. + - Use a doubly-linked list to implement the global circuit list. + Resolves ticket 9108. Patch from Marek Majkowski. + - Remove contrib/id_to_fp.c since it wasn't used anywhere. + + +Changes in version 0.2.4.17-rc - 2013-09-05 + Tor 0.2.4.17-rc is the third release candidate for the Tor 0.2.4.x + series. It adds an emergency step to help us tolerate the massive + influx of users: 0.2.4 clients using the new (faster and safer) "NTor" + circuit-level handshakes now effectively jump the queue compared to + the 0.2.3 clients using "TAP" handshakes. This release also fixes a + big bug hindering bridge reachability tests. + + o Major features: + - Relays now process the new "NTor" circuit-level handshake requests + with higher priority than the old "TAP" circuit-level handshake + requests. We still process some TAP requests to not totally starve + 0.2.3 clients when NTor becomes popular. A new consensus parameter + "NumNTorsPerTAP" lets us tune the balance later if we need to. + Implements ticket 9574. + + o Major bugfixes: + - If the circuit build timeout logic is disabled (via the consensus, + or because we are an authority), then don't build testing circuits. + Fixes bug 9657; bugfix on 0.2.2.14-alpha. + - Bridges now send AUTH_CHALLENGE cells during their v3 handshakes; + previously they did not, which prevented them from receiving + successful connections from relays for self-test or bandwidth + testing. Also, when a relay is extending a circuit to a bridge, + it needs to send a NETINFO cell, even when the bridge hasn't sent + an AUTH_CHALLENGE cell. Fixes bug 9546; bugfix on 0.2.3.6-alpha. + - If the time to download the next old-style networkstatus is in + the future, do not decline to consider whether to download the + next microdescriptor networkstatus. Fixes bug 9564; bugfix on + 0.2.3.14-alpha. + + o Minor bugfixes: + - Avoid double-closing the listener socket in our socketpair() + replacement (used on Windows) in the case where the addresses on + our opened sockets don't match what we expected. Fixes bug 9400; + bugfix on 0.0.2pre7. Found by Coverity. + + o Minor fixes (config options): + - Avoid overflows when the user sets MaxCircuitDirtiness to a + ridiculously high value, by imposing a (ridiculously high) 30-day + maximum on MaxCircuitDirtiness. + - Fix the documentation of HeartbeatPeriod to say that the heartbeat + message is logged at notice, not at info. + - Warn and fail if a server is configured not to advertise any + ORPorts at all. (We need *something* to put in our descriptor, + or we just won't work.) + + o Minor features: + - Track how many "TAP" and "NTor" circuit handshake requests we get, + and how many we complete, and log it every hour to help relay + operators follow trends in network load. Addresses ticket 9658. + - Update to the August 7 2013 Maxmind GeoLite Country database. + + +Changes in version 0.2.4.16-rc - 2013-08-10 + Tor 0.2.4.16-rc is the second release candidate for the Tor 0.2.4.x + series. It fixes several crash bugs in the 0.2.4 branch. + + o Major bugfixes: + - Fix a bug in the voting algorithm that could yield incorrect results + when a non-naming authority declared too many flags. Fixes bug 9200; + bugfix on 0.2.0.3-alpha. + - Fix an uninitialized read that could in some cases lead to a remote + crash while parsing INTRODUCE2 cells. Bugfix on 0.2.4.1-alpha. + Anybody running a hidden service on the experimental 0.2.4.x + branch should upgrade. (This is, so far as we know, unrelated to + the recent news.) + - Avoid an assertion failure when processing DNS replies without the + answer types we expected. Fixes bug 9337; bugfix on 0.2.4.7-alpha. + - Avoid a crash when using --hash-password. Fixes bug 9295; bugfix on + 0.2.4.15-rc. Found by stem integration tests. + + o Minor bugfixes: + - Fix an invalid memory read that occured when a pluggable + transport proxy failed its configuration protocol. + Fixes bug 9288; bugfix on 0.2.4.1-alpha. + - When evaluating whether to use a connection that we haven't + decided is canonical using a recent link protocol version, + decide that it's canonical only if it used address _does_ + match the desired address. Fixes bug 9309; bugfix on + 0.2.4.4-alpha. Reported by skruffy. + - Make the default behavior of NumDirectoryGuards be to track + NumEntryGuards. Now a user who changes only NumEntryGuards will get + the behavior she expects. Fixes bug 9354; bugfix on 0.2.4.8-alpha. + - Fix a spurious compilation warning with some older versions of + GCC on FreeBSD. Fixes bug 9254; bugfix on 0.2.4.14-alpha. + + o Minor features: + - Update to the July 3 2013 Maxmind GeoLite Country database. + + +Changes in version 0.2.4.15-rc - 2013-07-01 + Tor 0.2.4.15-rc is the first release candidate for the Tor 0.2.4.x + series. It fixes a few smaller bugs, but generally appears stable. + Please test it and let us know whether it is! + + o Major bugfixes: + - When receiving a new configuration file via the control port's + LOADCONF command, do not treat the defaults file as absent. + Fixes bug 9122; bugfix on 0.2.3.9-alpha. + + o Minor features: + - Issue a warning when running with the bufferevents backend enabled. + It's still not stable, and people should know that they're likely + to hit unexpected problems. Closes ticket 9147. + + Changes in version 0.2.4.14-alpha - 2013-06-18 Tor 0.2.4.14-alpha fixes a pair of client guard enumeration problems present in 0.2.4.13-alpha. @@ -80,11 +400,11 @@ Changes in version 0.2.4.13-alpha - 2013-06-14 - Relays now treat a changed IPv6 ORPort as sufficient reason to publish an updated descriptor. Fixes bug 6026; bugfix on 0.2.4.1-alpha. - - When launching a resolve request on behalf of an AF_UNIX control - socket, omit the address field of the new entry connection, used in - subsequent controller events, rather than letting tor_dup_addr() - set it to "<unknown address type>". Fixes bug 8639; bugfix on - 0.2.4.12-alpha. + - When launching a resolve request on behalf of an AF_UNIX control + socket, omit the address field of the new entry connection, used in + subsequent controller events, rather than letting tor_dup_addr() + set it to "<unknown address type>". Fixes bug 8639; bugfix on + 0.2.4.12-alpha. o Minor bugfixes (log messages): - Fix a scaling issue in the path bias accounting code that @@ -800,8 +1120,7 @@ Changes in version 0.2.4.7-alpha - 2012-12-24 network connection drastically changes. Should help with bug 3443. o Major features (IPv6): - - Tor now has (alpha) support for exiting to IPv6 addresses. To - enable it as an exit node, make sure that you have IPv6 + - Relays can now exit to IPv6 addresses: make sure that you have IPv6 connectivity, then set the IPv6Exit flag to 1. Also make sure your exit policy reads as you would like: the address * applies to all address families, whereas *4 is IPv4 address only, and *6 is IPv6 @@ -1271,7 +1590,7 @@ Changes in version 0.2.4.3-alpha - 2012-09-22 than it ran through the part of the loop before it had made its choice. Addresses ticket 6538. - Disable the use of Guard nodes when in Tor2WebMode. Guard usage - by tor2web clients allows hidden services to identity tor2web + by tor2web clients allows hidden services to identify tor2web clients through their repeated selection of the same rendezvous and introduction point circuit endpoints (their guards). Resolves ticket 6888. @@ -1469,7 +1788,7 @@ Changes in version 0.2.4.1-alpha - 2012-09-05 o Minor features (code security and spec conformance): - Clear keys and key-derived material left on the stack in rendservice.c and rendclient.c. Check return value of - crypto_pk_write_private_key_to_string() in end_service_load_keys(). + crypto_pk_write_private_key_to_string() in rend_service_load_keys(). These fixes should make us more forward-secure against cold-boot attacks and the like. Fixes bug 2385. - Reject EXTEND cells sent to nonexistent streams. According to the diff --git a/acinclude.m4 b/acinclude.m4 index af1505156c..2943734143 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -43,6 +43,8 @@ AC_DEFUN([TOR_DEFINE_CODEPATH], ]) dnl 1:flags +dnl 2:also try to link (yes: non-empty string) +dnl will set yes or no in $tor_can_link_$1 (as modified by AS_VAR_PUSHDEF) AC_DEFUN([TOR_CHECK_CFLAGS], [ AS_VAR_PUSHDEF([VAR],[tor_cv_cflags_$1]) AC_CACHE_CHECK([whether the compiler accepts $1], VAR, [ @@ -51,6 +53,13 @@ AC_DEFUN([TOR_CHECK_CFLAGS], [ AC_TRY_COMPILE([], [return 0;], [AS_VAR_SET(VAR,yes)], [AS_VAR_SET(VAR,no)]) + if test x$2 != x; then + AS_VAR_PUSHDEF([can_link],[tor_can_link_$1]) + AC_TRY_LINK([], [return 0;], + [AS_VAR_SET(can_link,yes)], + [AS_VAR_SET(can_link,no)]) + AS_VAR_POPDEF([can_link]) + fi CFLAGS="$tor_saved_CFLAGS" ]) if test x$VAR = xyes; then diff --git a/changes/9854 b/changes/9854 new file mode 100644 index 0000000000..30105cb731 --- /dev/null +++ b/changes/9854 @@ -0,0 +1,3 @@ + o Documentation fixes: + - Clarify the usage and risks of ContactInfo. Resolves ticket 9854. + diff --git a/changes/address_tests b/changes/address_tests deleted file mode 100644 index b5a8012436..0000000000 --- a/changes/address_tests +++ /dev/null @@ -1,2 +0,0 @@ - o New unit tests: - - More unit tests for address-manipulation functions. diff --git a/changes/bug10046 b/changes/bug10046 new file mode 100644 index 0000000000..b2f545efe9 --- /dev/null +++ b/changes/bug10046 @@ -0,0 +1,3 @@ + o Minor bugfixes: + - Fix an always-true assertion in pluggable transports code. Fixes + issue 10046. Found by dcb. diff --git a/changes/bug10124 b/changes/bug10124 new file mode 100644 index 0000000000..95b0838839 --- /dev/null +++ b/changes/bug10124 @@ -0,0 +1,3 @@ + o Documentation: + - Replace remaining references to DirServer in man page and + log entries. Resolves ticket 10124. diff --git a/changes/bug1376 b/changes/bug1376 new file mode 100644 index 0000000000..bee42a39a4 --- /dev/null +++ b/changes/bug1376 @@ -0,0 +1,4 @@ + o Minor bugfixes: + + - Added additional argument to write_chunks_to_file to optionally skip + using a temp file to do non-atomic writes. Implements ticket #1376. diff --git a/changes/bug3594 b/changes/bug3594 deleted file mode 100644 index 110252d008..0000000000 --- a/changes/bug3594 +++ /dev/null @@ -1,3 +0,0 @@ - o Major bugfixes: - - Add support for passing arguments to managed pluggable transport - proxies. Implements ticket #3594. diff --git a/changes/bug4282 b/changes/bug4282 deleted file mode 100644 index 4d4f4896fe..0000000000 --- a/changes/bug4282 +++ /dev/null @@ -1,4 +0,0 @@ - o Code simplifications and refactoring: - - Extract the common duplicated code for creating a subdirectory - of the data directory and writing to a file in it. Fixes ticket - 4282; patch from Peter Retzlaff. diff --git a/changes/bug5018 b/changes/bug5018 new file mode 100644 index 0000000000..c5c12efaba --- /dev/null +++ b/changes/bug5018 @@ -0,0 +1,3 @@ + o Minor features: + - Don't launch pluggable transport proxies that contribute + transports we don't need. Resolves ticket 5018. diff --git a/changes/bug5170 b/changes/bug5170 deleted file mode 100644 index 4e52c5ea6b..0000000000 --- a/changes/bug5170 +++ /dev/null @@ -1,5 +0,0 @@ - o Code simplification and refactoring: - - Remove contrib/id_to_fp.c since it wasn't used anywhere. - - Since OpenSSL 0.9.7 i2d_* functions support allocating output - buffer. Avoid calling twice: i2d_RSAPublicKey, i2d_DHparams, - i2d_X509, i2d_PublicKey. Fixes #5170. diff --git a/changes/bug5584 b/changes/bug5584 deleted file mode 100644 index a81be00ae4..0000000000 --- a/changes/bug5584 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor features: - - Raise awareness of safer logging - notice user of potentially - unsafe configuration options: logging above "notice" or - clearning SafeLogging flag. Fixes #5584. diff --git a/changes/bug5595 b/changes/bug5595 deleted file mode 100644 index 31f4b84b03..0000000000 --- a/changes/bug5595 +++ /dev/null @@ -1,8 +0,0 @@ - o Critical bugfixes: - - Distinguish downloading an authority certificate by identity digest from - downloading one by identity digest/signing key digest pair; formerly we - always request them only by identity digest and get the newest one even - when we wanted one with a different signing key. Then we would complain - about being given a certificate we already had, and never get the one we - really wanted. Now we use the "fp-sk/" resource as well as the "fp/" - resource to request the one we want. Fixes bug 5595. diff --git a/changes/bug5605 b/changes/bug5605 new file mode 100644 index 0000000000..2144d968fd --- /dev/null +++ b/changes/bug5605 @@ -0,0 +1,5 @@ +o Minor Bugfixes: + - No longer writing control ports to file if updating reversible + options fail. Fixes bug 5605; bugfix on 0.2.2.26-beta. Patch from + Ryman. + diff --git a/changes/bug6026 b/changes/bug6026 deleted file mode 100644 index de5d6ead01..0000000000 --- a/changes/bug6026 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes: - - Relays now treat a changed IPv6 ORPort as sufficient reason to - publish an updated descriptor. Fix for bug 6026; bugfix for - 0.2.4.1-alpha. diff --git a/changes/bug6506 b/changes/bug6506 deleted file mode 100644 index 4c6f4900da..0000000000 --- a/changes/bug6506 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor features (build): - - Detect a missing asciidoc, and warn the user about it, during - configure, rather than at build time. Fixes issue 6506. Patch - from Arlo Breault. diff --git a/changes/bug6520 b/changes/bug6520 deleted file mode 100644 index 9f24f0dc39..0000000000 --- a/changes/bug6520 +++ /dev/null @@ -1,5 +0,0 @@ - o Removed features: - - Remove migration code from when we renamed the "cached-routers" - file to "cached-descriptors" back in 0.2.0.8-alpha. This - incidentally resolves #6502 by cleaning up the related code - a bit. Patch from Akshay Hebbar. diff --git a/changes/bug6752 b/changes/bug6752 deleted file mode 100644 index 8d620d56ee..0000000000 --- a/changes/bug6752 +++ /dev/null @@ -1,5 +0,0 @@ - o Minor features: - - Lower directory fetch retry schedules and maximum interval without - directory requests, and raise maximum download tries in testing - networks. Implements #6752. - diff --git a/changes/bug6979 b/changes/bug6979 new file mode 100644 index 0000000000..55572ecbac --- /dev/null +++ b/changes/bug6979 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Fix an assertion failure that would occur when disabling the + ORPort setting on a running Tor process while accounting was + enabled. Fixes bug 6979; bugfix on 0.2.2.18-alpha. diff --git a/changes/bug7359 b/changes/bug7359 new file mode 100644 index 0000000000..d1bff0afa2 --- /dev/null +++ b/changes/bug7359 @@ -0,0 +1,7 @@ + o Minor features (controller): + - Extend ORCONN controller event by ID parameter and add four new + controller event types CONN_BW, CIRC_BW, CELL_STATS, and TB_EMPTY + that shall help understand connection and circuit usage. The new + events are emitted in private Tor networks only. Implements + proposal 218. Resolves ticket #7359. + diff --git a/changes/bug7912 b/changes/bug7912 deleted file mode 100644 index 48c65d2241..0000000000 --- a/changes/bug7912 +++ /dev/null @@ -1,8 +0,0 @@ - o Major bugfixes: - - Instead of writing destroy cells directly to outgoing connection - buffers, queue them and intersperse them with other outgoing cells. - This can prevent a set of resource starvation conditions where too - many pending destroy cells prevent data cells from actually getting - delivered. Reported by "oftc_must_be_destroyed". Fixes bug 7912; - bugfix on 0.2.0.1-alpha. - diff --git a/changes/bug7982 b/changes/bug7982 deleted file mode 100644 index 46aa53249c..0000000000 --- a/changes/bug7982 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor bugfixes: - - Copy-paste description for PathBias params from man page into or.h - comment. Fixes bug 7982. diff --git a/changes/bug8093.part1 b/changes/bug8093.part1 deleted file mode 100644 index 2450794dd7..0000000000 --- a/changes/bug8093.part1 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor features: - - Downgrade "unexpected SENDME" warnings to protocol-warn for 0.2.4, - for bug 8093. diff --git a/changes/bug8093.part2 b/changes/bug8093.part2 deleted file mode 100644 index 263c7e8b86..0000000000 --- a/changes/bug8093.part2 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor features: - - Return the "unexpected sendme" warnings to a warn severity, but make - them rate limited. Related to ticket #8093. diff --git a/changes/bug8253-fix b/changes/bug8253-fix deleted file mode 100644 index 3d36d06c88..0000000000 --- a/changes/bug8253-fix +++ /dev/null @@ -1,6 +0,0 @@ - o Minor bugfixes (log messages) - - Fix a scaling issue in the path bias accounting code that resulted in - "Bug:" log messages from either pathbias_scale_close_rates() or - pathbias_count_build_success(). This represents a bugfix on a previous - bugfix: The original fix attempted in 0.2.4.10-alpha was incomplete. - Fixes bug 8235; bugfix on 0.2.4.1-alpha. diff --git a/changes/bug8530 b/changes/bug8530 deleted file mode 100644 index f66b602dbd..0000000000 --- a/changes/bug8530 +++ /dev/null @@ -1,3 +0,0 @@ - o Enhancements - - Add make target 'test-network' running tests on a Chutney - network. diff --git a/changes/bug8532 b/changes/bug8532 deleted file mode 100644 index e9fd06829a..0000000000 --- a/changes/bug8532 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor features - - Add support for offsetting the voting interval in order to - bootstrap a network faster by adding configuration option - TestingV3AuthVotingStartOffset. Addresses #8532. diff --git a/changes/bug8561 b/changes/bug8561 deleted file mode 100644 index 598071a728..0000000000 --- a/changes/bug8561 +++ /dev/null @@ -1,3 +0,0 @@ - o Major features: - - The ntor handshake is now on-by-default, no matter what the - directory authorities recommend. Implements ticket 8561. diff --git a/changes/bug8639 b/changes/bug8639 deleted file mode 100644 index 0db5c91429..0000000000 --- a/changes/bug8639 +++ /dev/null @@ -1,5 +0,0 @@ - o Normal bugfixes: - - When launching a resolve request on behalf of an AF_UNIX control - socket, omit the address field of the new entry connection, used in - subsequent controller events, rather than letting tor_dup_addr() set - it to "<unknown address type>". Fixes bug 8639. diff --git a/changes/bug8711 b/changes/bug8711 deleted file mode 100644 index 28a1daa454..0000000000 --- a/changes/bug8711 +++ /dev/null @@ -1,6 +0,0 @@ - o Minor features (authority): - - Add a "ignoring-advertised-bws" boolean to our flag-thresholds - lines to describe whether we have enough measured bandwidths to - ignore advertised bandwidth claims. Closes ticket 8711. - - diff --git a/changes/bug8716 b/changes/bug8716 deleted file mode 100644 index 74c74f82a6..0000000000 --- a/changes/bug8716 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor bugfixes (memory leak): - - Fix a memory leak that would occur whenever a configuration - option changed. Fixes bug #8718; bugfix on 0.2.3.3-alpha. diff --git a/changes/bug8719 b/changes/bug8719 deleted file mode 100644 index c05b79ddec..0000000000 --- a/changes/bug8719 +++ /dev/null @@ -1,6 +0,0 @@ - o Major bugfixes (memory leak): - - Avoid a memory leak where we would leak a consensus body when we find - that a consensus which we couldn't previously verify due to missing - certificates is now verifiable. Fixes bug 8719; bugfix on - 0.2.0.10-alpha. - diff --git a/changes/bug8789 b/changes/bug8789 deleted file mode 100644 index e3bcc40749..0000000000 --- a/changes/bug8789 +++ /dev/null @@ -1,3 +0,0 @@ - o Code simplifications and refactoring: - - Clean up exit path from connection_listener_new. Closes bug - 8789. Patch from Arlo Breault. diff --git a/changes/bug8790 b/changes/bug8790 deleted file mode 100644 index 9f1f0ba17d..0000000000 --- a/changes/bug8790 +++ /dev/null @@ -1,6 +0,0 @@ - o Minor code improvements: - - Remove instances of strcpy from the unit tests. They weren't - hurting anything, since they were only in the unit tests, but - it's embarassing to have strcpy() in the code at all, and some - analysis tools don't like it. Fixes 8790. Patch from Arlo Breault. - diff --git a/changes/bug8791 b/changes/bug8791 deleted file mode 100644 index 0a65e286c0..0000000000 --- a/changes/bug8791 +++ /dev/null @@ -1,5 +0,0 @@ - o Minor bugfixes: - - In the function munge_extrainfo_into_routerinfo(), check the return - value of memchr(). This would have been a serious issue if we ever - passed a non-extrainfo to munge_extrainfo_into_routerinfo. Fixes - bug 8791; bugfix on 0.2.0.6-alpha. Patch from Arlo Breault. diff --git a/changes/bug8792 b/changes/bug8792 deleted file mode 100644 index 6f4e3bf7b1..0000000000 --- a/changes/bug8792 +++ /dev/null @@ -1,4 +0,0 @@ - o Removed code - - Remove constants and tests for PKCS1 padding; it's insecure and - shouldn't be used for anything new. Fixes bug #8792; patch - from Arlo Breault. diff --git a/changes/bug8822 b/changes/bug8822 deleted file mode 100644 index c6787afe06..0000000000 --- a/changes/bug8822 +++ /dev/null @@ -1,5 +0,0 @@ - o Major bugfixes (windows): - - Prevent failures on Windows Vista and later when rebuilding the - microdescriptor cache. Diagnosed by Robert Ransom. Fixes bug 8822; - bugfix on 0.2.4.12-alpha. - diff --git a/changes/bug8833 b/changes/bug8833 deleted file mode 100644 index 681a86191f..0000000000 --- a/changes/bug8833 +++ /dev/null @@ -1,3 +0,0 @@ - o Major bugfixes (directory authority): - - Fix a crash bug when building a consensus using an older consensus as - its basis. Fixes bug 8833. Bugfix on 0.2.4.12-alpha. diff --git a/changes/bug8844 b/changes/bug8844 deleted file mode 100644 index 320e5f2845..0000000000 --- a/changes/bug8844 +++ /dev/null @@ -1,6 +0,0 @@ - o Major bugfixes: - - Prevent the get_freelists() function from running off the end of - the list of freelists if it somehow gets an unrecognized - allocation. Fixes bug 8844; bugfix on 0.2.0.16-alpha. Reported by - eugenis. - diff --git a/changes/bug8845 b/changes/bug8845 deleted file mode 100644 index ace043ab9b..0000000000 --- a/changes/bug8845 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor bugfixes (test): - - Fix an impossible buffer overrun in the AES unit tests. Fixes bug 8845; - bugfix on 0.2.0.7-alpha. Found by eugenis. diff --git a/changes/bug8846 b/changes/bug8846 deleted file mode 100644 index 377cc3708a..0000000000 --- a/changes/bug8846 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes: - - Give a less useless error message when the user asks for an IPv4 - address on an IPv6-only port, or vice versa. Fixes bug 8846; bugfix - on 0.2.4.7-alpha. diff --git a/changes/bug8879 b/changes/bug8879 deleted file mode 100644 index 0d2a70086c..0000000000 --- a/changes/bug8879 +++ /dev/null @@ -1,5 +0,0 @@ - o Major bugfixes: - - Follow the socks5 protocol when offering username/password - authentication. The fix for bug 8117 exposed this bug, and it - turns out real-world applications like Pidgin do care. Bugfix on - 0.2.3.2-alpha; fixes bug 8879. diff --git a/changes/bug8929 b/changes/bug8929 deleted file mode 100644 index 2a1898b8a9..0000000000 --- a/changes/bug8929 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor features: - - Add a new torrc option "ServerTransportOptions" that allows - bridge operators to pass configuration parameters to their - pluggable transports. Resolves ticket 8929. diff --git a/changes/bug8965 b/changes/bug8965 deleted file mode 100644 index b5af279632..0000000000 --- a/changes/bug8965 +++ /dev/null @@ -1,3 +0,0 @@ - o Removed documentation: - - Remove some of the older contents of doc/ as obsolete; move others - to torspec.git. Fixes bug 8965. diff --git a/changes/bug9002 b/changes/bug9002 deleted file mode 100644 index c41ace394a..0000000000 --- a/changes/bug9002 +++ /dev/null @@ -1,4 +0,0 @@ - o Major bugfixes: - - Limit hidden service descriptors to at most ten introduction - points, to slow one kind of guard enumeration. Fixes bug 9002; - bugfix on 0.1.1.11-alpha. diff --git a/changes/bug9017 b/changes/bug9017 deleted file mode 100644 index 359c526b00..0000000000 --- a/changes/bug9017 +++ /dev/null @@ -1,6 +0,0 @@ - o Major bugfixes: - - Avoid an assertion failure on OpenBSD (and perhaps other BSDs) - when an exit connection with optimistic data succeeds immediately - rather than returning EINPROGRESS. Fixes bug 9017; bugfix on - 0.2.3.1-alpha. - diff --git a/changes/bug9030 b/changes/bug9030 deleted file mode 100644 index d0be582929..0000000000 --- a/changes/bug9030 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes: - - The tor-fw-helper program now follows the standard convention and - exits with status code "0" on success. Fixes bug 9030; bugfix on - 0.2.3.1-alpha. Patch by Arlo Breault. diff --git a/changes/bug9043 b/changes/bug9043 deleted file mode 100644 index c3135ef0f4..0000000000 --- a/changes/bug9043 +++ /dev/null @@ -1,3 +0,0 @@ - o Code simplification and refactoring: - - Since OpenSSL 0.9.8 we can use EVP_PKEY_cmp instead of - implementing the same thing as pkey_eq. Fixes #9043. diff --git a/changes/bug9047 b/changes/bug9047 deleted file mode 100644 index 497f0d3372..0000000000 --- a/changes/bug9047 +++ /dev/null @@ -1,6 +0,0 @@ - o Minor bugfixes: - - If for some reason we fail to write a microdescriptor while - rebuilding the cache, do not let the annotations from that - microdescriptor linger in the cache file, and do not let the - microdescriptor stay recorded as present in its old location. - Fixes bug 9047; bugfix on 0.2.2.6-alpha. diff --git a/changes/bug9063 b/changes/bug9063 deleted file mode 100644 index e1d0a5e780..0000000000 --- a/changes/bug9063 +++ /dev/null @@ -1,4 +0,0 @@ - o Normal bugfixes: - - Close any circuit that has 10% more cells queued than the spec permits - and warn when the queue length exceeds that threshold. Fixes bug - #9063; bugfix on 0.2.4.12. diff --git a/changes/bug9063_redux b/changes/bug9063_redux deleted file mode 100644 index e6fae72efc..0000000000 --- a/changes/bug9063_redux +++ /dev/null @@ -1,15 +0,0 @@ - o Major bugfixes: - - When we have too much memory queued in circuits (according to a new - MaxMemInCellQueues option), close the circuits consuming the most - memory. This prevents us from running out of memory as a relay if - circuits fill up faster than they can be drained. Fixes - bug 9063; bugfix on the 54th commit of Tor. This bug is a further - fix beyond bug 6252, whose fix was merged into 0.2.3.21-rc. - - Also fixes an earlier approach taken in 0.2.4.13-alpha, where we - tried to solve this issue simply by imposing an upper limit on the - number of queued cells for a single circuit. That approach proved to - be problematic, since there are ways to provoke clients to send a - number of cells in excess of any such reasonable limit. - Fixes bug 9072; bugfix on 0.2.4.13-alpha. - diff --git a/changes/bug9072 b/changes/bug9072 deleted file mode 100644 index e594a38335..0000000000 --- a/changes/bug9072 +++ /dev/null @@ -1,3 +0,0 @@ - o Critical bugfixes: - - Disable middle relay queue overfill detection code due to possible - guard discovery attack, pending further analysis. Fixes bug #9072. diff --git a/changes/bug9093 b/changes/bug9093 new file mode 100644 index 0000000000..06b6cb926a --- /dev/null +++ b/changes/bug9093 @@ -0,0 +1,7 @@ + o Minor features: + - Improve the circuit queue out-of-memory handler. Previously, when + we ran low on memory, we'd close whichever circuits had the most + queued cells. Now, we close those that have the *oldest* queued + cells, on the theory that those are most responsible for us + running low on memory. Based on analysis from a forthcoming paper + by Jansen, Tschorsch, Johnson, and Scheuermann. Fixes bug 9093.
\ No newline at end of file diff --git a/changes/bug9122 b/changes/bug9122 deleted file mode 100644 index 5009da6126..0000000000 --- a/changes/bug9122 +++ /dev/null @@ -1,4 +0,0 @@ - o Major bugfixes: - - When receiving a new configuration file via the control port's - LOADCONF command, do not treat the defaults file as absent. - Fixes bug 9122; bugfix on 0.2.3.9-alpha. diff --git a/changes/bug9147 b/changes/bug9147 deleted file mode 100644 index e6064ea0e5..0000000000 --- a/changes/bug9147 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor features: - - Issue a warning when running with the bufferevents backend enabled. - It's still not stable, and people should know that they're likely - to hit unexpected problems. Closes ticket 9147. diff --git a/changes/bug9200 b/changes/bug9200 deleted file mode 100644 index 7b64dd1744..0000000000 --- a/changes/bug9200 +++ /dev/null @@ -1,5 +0,0 @@ - o Major bugfixes: - - Fix a bug in the voting algorithm that could yield incorrect results - when a non-naming authority declared too many flags. Fixes bug 9200; - bugfix on 0.2.0.3-alpha. - diff --git a/changes/bug9206 b/changes/bug9206 new file mode 100644 index 0000000000..7acb366990 --- /dev/null +++ b/changes/bug9206 @@ -0,0 +1,6 @@ + o Minor features (testing): + + - When bootstrapping a test network, few relays get the Guard + flag. There is now a new option, TestingDirAuthVoteGuard, which + can be used to specify a set of relays which should be voted + Guard regardless of uptime or bandwidth. Addresses ticket 9206. diff --git a/changes/bug9254 b/changes/bug9254 deleted file mode 100644 index 5179bdc523..0000000000 --- a/changes/bug9254 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes: - - Fix a spurious compilation warning with some older versions of - GCC on FreeBSD. Fixes bug 9254; bugfix on 0.2.4.14-alpha. - diff --git a/changes/bug9258 b/changes/bug9258 deleted file mode 100644 index 5165b3a677..0000000000 --- a/changes/bug9258 +++ /dev/null @@ -1,6 +0,0 @@ - o Minor bugfixes: - - Reject relative control socket paths and emit a warning. - Previously single-component control socket paths would be rejected, - but Tor would not log why it could not validate the config. - Now we reject all relative control socket paths and print a warning. - Fixes bug 9047; bugfix on 0.2.2.6-alpha. diff --git a/changes/bug9267 b/changes/bug9267 deleted file mode 100644 index 95a621148d..0000000000 --- a/changes/bug9267 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes: - - Added optional parameter to contrib/coverage script to specify directory - to put gcov files in, and added reset-gcov target to top-level makefile. - Fixes bug #9267. diff --git a/changes/bug9295 b/changes/bug9295 deleted file mode 100644 index 2c113616c3..0000000000 --- a/changes/bug9295 +++ /dev/null @@ -1,4 +0,0 @@ - o Major bugfixes: - - Avoid a crash when using --hash-password. Fixes bug 9295; bugfix on - 0.2.4.15-rc. Found by stem integration tests. - diff --git a/changes/bug9578 b/changes/bug9578 new file mode 100644 index 0000000000..96d66fe1f7 --- /dev/null +++ b/changes/bug9578 @@ -0,0 +1,6 @@ + o Minor bugfixes: + - When a command-line option such as --version or --help that ordinarily + implies --hush appears on the command line along with --quiet, obey + --quiet. Previously, we obeyed --quiet only if it appeared later on the + command line. Fixes bug 9578; bugfix on 0.2.5.1-alpha. + diff --git a/changes/bug9596 b/changes/bug9596 new file mode 100644 index 0000000000..b3d138ecdc --- /dev/null +++ b/changes/bug9596 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Correctly log long IPv6 exit policy, instead of truncating them + or reporting an error. Fixes bug 9596; bugfix on 0.2.4.7-alpha. + diff --git a/changes/bug9644 b/changes/bug9644 new file mode 100644 index 0000000000..51c58a5fff --- /dev/null +++ b/changes/bug9644 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - Fix a small memory leak on exit. (We weren't freeing directory + authority certificate download statuses.) Fixes bug 9644; bugfix + on 0.2.4.13-alpha. diff --git a/changes/bug9651 b/changes/bug9651 new file mode 100644 index 0000000000..453fe9a4a0 --- /dev/null +++ b/changes/bug9651 @@ -0,0 +1,3 @@ + o Minor features: + - Warn when the Extended ORPort should be set, but it isn't. Resolves + ticket 9651. diff --git a/changes/bug9698 b/changes/bug9698 new file mode 100644 index 0000000000..ee5c4f64a5 --- /dev/null +++ b/changes/bug9698 @@ -0,0 +1,3 @@ + o Minor features: + - When receiving a new controller connection, log the origin address. + Resolves ticket 9698; patch from "sigpipe". diff --git a/changes/bug9731 b/changes/bug9731 new file mode 100644 index 0000000000..11bbc6ab65 --- /dev/null +++ b/changes/bug9731 @@ -0,0 +1,3 @@ + o Major bugfixes: + - Do not apply connection_consider_empty_read/write_buckets to + non-rate-limited connections. diff --git a/changes/bug9780 b/changes/bug9780 new file mode 100644 index 0000000000..3cb51bd528 --- /dev/null +++ b/changes/bug9780 @@ -0,0 +1,8 @@ + o Minor bugfixes (performance, fingerprinting): + - Our default TLS ecdhe groups were backwards: we meant to be using + P224 for relays (for performance win) and P256 for bridges (since + it is more common in the wild). Instead we had it backwards. After + reconsideration, we decided that the default should be P256 on all + hosts, since its security is probably better, and since P224 is + reportedly used quite little in the wild. Found by "skruffy" on + IRC. Fix for bug 9780; bugfix on 0.2.4.8-alpha. diff --git a/changes/bug9869 b/changes/bug9869 new file mode 100644 index 0000000000..d67156d384 --- /dev/null +++ b/changes/bug9869 @@ -0,0 +1,7 @@ + o Minor features (build): + + - Assume that a user using configure --host wants to cross- + compile and error if we cannot find a properly named tool- + chain. Add --disable-tool-name-check to enable the user + to build nevertheless. Addresses ticket 9869. Patch by + Benedikt Gollatz. diff --git a/changes/bug9880 b/changes/bug9880 new file mode 100644 index 0000000000..a7dda8f82f --- /dev/null +++ b/changes/bug9880 @@ -0,0 +1,8 @@ + o Minor bugfixes: + + - When closing a channel that has already been open, do not close + pending circuits that were waiting to connect to the same relay. + Fixes bug 9880; bugfix on 0.2.5.1-alpha. Thanks to skruffy for + finding this bug. (Bug was merged to 0.2.4 branch but not released + in any 0.2.4 version) + diff --git a/changes/bug9904 b/changes/bug9904 new file mode 100644 index 0000000000..eec4144cce --- /dev/null +++ b/changes/bug9904 @@ -0,0 +1,4 @@ + o Minor bugfixes: + - When examining list of network interfaces to find our address, do + not consider non-running or disabled network interfaces. Fixes bug + 9904; bugfix on 0.2.3.11-alpha. Patch from "hantwister". diff --git a/changes/bug9922 b/changes/bug9922 new file mode 100644 index 0000000000..9ac21118da --- /dev/null +++ b/changes/bug9922 @@ -0,0 +1,5 @@ + o Minor bugfixes: + - Fix a bug where clients using bridges would report themselves + as 50% bootstrapped even without a live consensus document. + Fixes bug 9922; bugfix on 0.2.1.1-alpha. + diff --git a/changes/bug9926 b/changes/bug9926 new file mode 100644 index 0000000000..51af5e088e --- /dev/null +++ b/changes/bug9926 @@ -0,0 +1,6 @@ + o Minor bugfixes: + - Remove some old fallback code designed to keep Tor clients working + in a network with only two working nodes. Elsewhere in the code we + have long since stopped supporting such networks, so there wasn't + much point in keeping it around. Fixes bug 9926. + diff --git a/changes/bug9927 b/changes/bug9927 new file mode 100644 index 0000000000..e66280c3c4 --- /dev/null +++ b/changes/bug9927 @@ -0,0 +1,4 @@ + o Minor features: + - Generate bootstrapping status update events correctly for fetching + microdescriptors. Fixes bug 9927. + diff --git a/changes/bug9928 b/changes/bug9928 new file mode 100644 index 0000000000..b72cea3d87 --- /dev/null +++ b/changes/bug9928 @@ -0,0 +1,6 @@ + o Minor bugfixes: + - Avoid an off-by-one error when checking buffer boundaries when + formatting the exit status of a pluggable transport helper. + This is probably not an exploitable bug, but better safe than + sorry. Fixes bug 9928; bugfix on 0.2.3.18-rc. Bug found by + Pedro Ribeiro. diff --git a/changes/bug9934 b/changes/bug9934 new file mode 100644 index 0000000000..2a636dba83 --- /dev/null +++ b/changes/bug9934 @@ -0,0 +1,4 @@ + o Minor features (controller): + - New DROPGUARDS command to forget all current entry guards. Not + recommended for ordinary use, since replacing guards too frequently + makes several attacks easier. Resolves ticket #9934; patch from "ra". diff --git a/changes/bug9946 b/changes/bug9946 new file mode 100644 index 0000000000..5d1c888743 --- /dev/null +++ b/changes/bug9946 @@ -0,0 +1,11 @@ + o Minor bugfixes: + - If the guard we choose first doesn't answer, we would try the + second guard, but once we connected to the second guard we would + abandon it and retry the first one, slowing down bootstrapping. + The fix is to treat all our initially chosen guards as acceptable + to use. Fixes bug 9946; bugfix on 0.1.1.11-alpha. + + o Major bugfixes: + - Stop trying to fetch all our directory information from our first + guard. Discovered while fixing bug 9946; bugfix on 0.2.4.8-alpha. + diff --git a/changes/bug9948 b/changes/bug9948 new file mode 100644 index 0000000000..6a673c0548 --- /dev/null +++ b/changes/bug9948 @@ -0,0 +1,6 @@ + o Minor features (build): + + - Check in configure whether we can link an executable when + stack protection is enabled so we can warn the user about a + potentially missing libssp. Addresses ticket 9948. Patch + from Benedikt Gollatz. diff --git a/changes/bug9958 b/changes/bug9958 new file mode 100644 index 0000000000..b801dcf779 --- /dev/null +++ b/changes/bug9958 @@ -0,0 +1,8 @@ + o Minor bugfixes: + - Report bootstrapping progress correctly when we're downloading + microdescriptors. We had updated our "do we have enough microdescs + to begin building circuits?" logic most recently in 0.2.4.10-alpha + (see bug 5956), but we left the bootstrap status event logic at + "how far through getting 1/4 of them are we?" Fixes bug 9958; + bugfix on 0.2.2.36, which is where they diverged (see bug 5343). + diff --git a/changes/fancy_testing b/changes/fancy_testing deleted file mode 100644 index fa5b5703c4..0000000000 --- a/changes/fancy_testing +++ /dev/null @@ -1,27 +0,0 @@ - o Build features: - - - Tor now builds each source file in two modes: a mode that avoids - exposing identifiers needlessly, and another mode that exposes - more identifiers for testing. This lets the compiler do better at - optimizing the production code, while enabling us to take more - radical measures to let the unit tests test things. - - - The production builds no longer include functions used only - in the unit tests; all functions exposed from a module for - unit-testing only are now static in production builds. - - - Add an --enable-coverage configuration option to make the unit - tests (and a new src/or/tor-cov target) to build with gcov test - coverage support. - - o Testing: - - - We now have rudimentary function mocking support that our unit - tests can use to test functions in isolation. Function mocking - lets the tests temporarily replace a function's dependencies with - stub functions, so that the tests can check the function without - invoking the other functions it calls. - - - Add more unit tests for the <circid,channel>->circuit map, and - the destroy-cell-tracking code to fix bug 7912. - diff --git a/changes/fomit-frame-pointer b/changes/fomit-frame-pointer deleted file mode 100644 index 67706246ad..0000000000 --- a/changes/fomit-frame-pointer +++ /dev/null @@ -1,6 +0,0 @@ - o Minor features (performance): - - If we're using the pure-C 32-bit curve25519_donna implementation - of curve25519, build it with the -fomit-frame-pointer option to - make it go faster on register-starved hosts. This improves our - handshake performance by about 6% on i386 hosts without nacl. - Closes ticket 8109. diff --git a/changes/geoip-july2013 b/changes/geoip-july2013 deleted file mode 100644 index 097819dd7c..0000000000 --- a/changes/geoip-july2013 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor features: - - Update to the July 3 2013 Maxmind GeoLite Country database. - diff --git a/changes/geoip-june2013 b/changes/geoip-june2013 deleted file mode 100644 index f8e00a62c6..0000000000 --- a/changes/geoip-june2013 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor features: - - Update to the June 5 2013 Maxmind GeoLite Country database. - diff --git a/changes/geoip-may2013 b/changes/geoip-may2013 deleted file mode 100644 index ff4b98f22b..0000000000 --- a/changes/geoip-may2013 +++ /dev/null @@ -1,3 +0,0 @@ - o Minor features: - - Update to the May 9 2013 Maxmind GeoLite Country database. - diff --git a/changes/geoip-october2013 b/changes/geoip-october2013 new file mode 100644 index 0000000000..bc72850725 --- /dev/null +++ b/changes/geoip-october2013 @@ -0,0 +1,3 @@ + o Minor features: + - Update to the October 2 2013 Maxmind GeoLite Country database. + diff --git a/changes/less_charbuf_usage b/changes/less_charbuf_usage deleted file mode 100644 index 2ec42b544a..0000000000 --- a/changes/less_charbuf_usage +++ /dev/null @@ -1,5 +0,0 @@ - o Code simplification and refactoring: - - Avoid using character buffers when constructing most directory - objects: this approach was unweildy and error-prone. Instead, - build smartlists of strings, and concatenate them when done. - diff --git a/changes/onion_tap_tests b/changes/onion_tap_tests deleted file mode 100644 index f98243323e..0000000000 --- a/changes/onion_tap_tests +++ /dev/null @@ -1,2 +0,0 @@ - o New unit tests: - - Unit tests for failing cases of the TAP onion handshake. diff --git a/changes/prop221 b/changes/prop221 new file mode 100644 index 0000000000..b2bf44bc37 --- /dev/null +++ b/changes/prop221 @@ -0,0 +1,6 @@ + o Minor features: + - Stop sending the CREATE_FAST cells by default; instead, use a + parameter in the consensus to decide whether to use + CREATE_FAST. This can improve security on connections where + Tor's circuit handshake is stronger than the available TLS + connection security levels. Implements proposal 221. diff --git a/changes/python-tests b/changes/python-tests new file mode 100644 index 0000000000..4373e31e6a --- /dev/null +++ b/changes/python-tests @@ -0,0 +1,4 @@ + o Minor features: + - "make check" now runs extra tests beyond the unit test scripts if + Python is installed. + diff --git a/changes/seccomp2_sandbox b/changes/seccomp2_sandbox deleted file mode 100644 index 73b3a8d5e4..0000000000 --- a/changes/seccomp2_sandbox +++ /dev/null @@ -1,12 +0,0 @@ - o Major features (security): - - Use the seccomp2 syscall filtering facility on Linux to limit - which system calls Tor can invoke. This is an experimental, - Linux-only feature to provide defense-in-depth against unknown - attacks. To try turning it on, set "Sandbox 1" in your torrc - file. This is an experimental feature, however, and some things - may break, so please be ready to report bugs. We hope to add - support for better sandboxing in the future, - including more fine-grained filters, better division of - responsibility, and support for more platforms. This work has - been done by Cristian-Matei Toader for Google Summer of Code. - diff --git a/changes/ticket10060 b/changes/ticket10060 new file mode 100644 index 0000000000..867c46436b --- /dev/null +++ b/changes/ticket10060 @@ -0,0 +1,5 @@ + o Minor features: + - Adding --allow-missing-torrc commandline option that allows Tor to + run if configuration file specified by -f is not available. + Implements ticket 10060. + diff --git a/changes/ticket9866 b/changes/ticket9866 new file mode 100644 index 0000000000..6cbb1110db --- /dev/null +++ b/changes/ticket9866 @@ -0,0 +1,3 @@ + o Documentation: + - Add anchors to the manpage so we can link to the documentation for + specific options. Resolves ticket 9866. diff --git a/changes/warn-unsigned-time_t b/changes/warn-unsigned-time_t deleted file mode 100644 index f57f85ae37..0000000000 --- a/changes/warn-unsigned-time_t +++ /dev/null @@ -1,11 +0,0 @@ - o Minor bugfixes (portability): - - On the chance that somebody manages to build Tor on a - platform where time_t is unsigned, correct the way that - microdesc_add_to_cache handles negative time arguments. Fix for - bug 8042; bugfix on 0.2.3.1-alpha. - - o Build improvements: - - Warn if building on a platform with an unsigned time_t: there - are too many places where Tor currently assumes that time_t can - hold negative values. We'd like to fix them all, but probably - some will remain. diff --git a/configure.ac b/configure.ac index 06e9e3b37e..9c31ae28f2 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ dnl Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson dnl Copyright (c) 2007-2013, The Tor Project, Inc. dnl See LICENSE for licensing information -AC_INIT([tor],[0.2.5.0-alpha-dev]) +AC_INIT([tor],[0.2.5.1-alpha-dev]) AC_CONFIG_SRCDIR([src/or/main.c]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE @@ -158,12 +158,29 @@ fi]) AC_ARG_ENABLE(bufferevents, AS_HELP_STRING(--enable-bufferevents, use Libevent's buffered IO.)) +AC_ARG_ENABLE(tool-name-check, + AS_HELP_STRING(--disable-tool-name-check, check for sanely named toolchain when cross-compiling)) + dnl check for the correct "ar" when cross-compiling AN_MAKEVAR([AR], [AC_PROG_AR]) AN_PROGRAM([ar], [AC_PROG_AR]) AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL([AR], [ar], [ar])]) AC_PROG_AR +dnl Check whether the above macro has settled for a simply named tool even +dnl though we're cross compiling. We must do this before running AC_PROG_CC, +dnl because that will find any cc on the system, not only the cross-compiler, +dnl and then verify that a binary built with this compiler runs on the +dnl build system. It will then come to the false conclusion that we're not +dnl cross-compiling. +if test x$enable_tool_name_check != xno; then + if test x$ac_tool_warned = xyes; then + AC_MSG_ERROR([We are cross compiling but could not find a properly named toolchain. Do you have your cross-compiling toolchain in PATH? (You can --disable-tool-name-check to ignore this.)]) + elif test "x$ac_ct_AR" != x -a x$cross_compiling = xmaybe; then + AC_MSG_ERROR([We think we are cross compiling but could not find a properly named toolchain. Do you have your cross-compiling toolchain in PATH? (You can --disable-tool-name-check to ignore this.)]) + fi +fi + AC_PROG_CC AC_PROG_CPP AC_PROG_MAKE_SET @@ -183,6 +200,13 @@ AM_CONDITIONAL(NAT_PMP, test x$natpmp = xtrue) AM_CONDITIONAL(MINIUPNPC, test x$upnp = xtrue) AM_PROG_CC_C_O +AC_ARG_VAR(PYTHON) +AC_CHECK_PROGS(PYTHON, [python python2 python3]) +if test "x$PYTHON" = "x"; then + AC_MSG_WARN([Python unavailable; some tests will not be run.]) +fi +AM_CONDITIONAL(USEPYTHON, [test "x$PYTHON" != "x"]) + ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [ AC_C_FLEXIBLE_ARRAY_MEMBER ], [ @@ -405,7 +429,13 @@ save_CPPFLAGS="$CPPFLAGS" LIBS="-levent $STATIC_LIBEVENT_FLAGS $TOR_LIB_WS32 $LIBS" LDFLAGS="$TOR_LDFLAGS_libevent $LDFLAGS" CPPFLAGS="$TOR_CPPFLAGS_libevent $CPPFLAGS" -AC_CHECK_FUNCS(event_get_version event_get_version_number event_get_method event_set_log_callback evdns_set_outgoing_bind_address event_base_loopexit) +AC_CHECK_FUNCS([event_get_version \ + event_get_version_number \ + event_get_method \ + event_set_log_callback \ + evdns_set_outgoing_bind_address \ + evutil_secure_rng_set_urandom_device_file \ + event_base_loopexit]) AC_CHECK_MEMBERS([struct event.min_heap_idx], , , [#include <event.h> ]) @@ -502,7 +532,7 @@ dnl ------------------------------------------------------ dnl Where do you live, openssl? And how do we call you? tor_openssl_pkg_redhat="openssl" -tor_openssl_pkg_debian="libssl" +tor_openssl_pkg_debian="libssl-dev" tor_openssl_devpkg_redhat="openssl-devel" tor_openssl_devpkg_debian="libssl-dev" @@ -579,7 +609,16 @@ if test x$enable_gcc_hardening != xno; then if test x$have_clang = xyes; then TOR_CHECK_CFLAGS(-Qunused-arguments) fi - TOR_CHECK_CFLAGS(-fstack-protector-all) + TOR_CHECK_CFLAGS(-fstack-protector-all, also_link) + AS_VAR_PUSHDEF([can_compile], [tor_cv_cflags_-fstack-protector-all]) + AS_VAR_PUSHDEF([can_link], [tor_can_link_-fstack-protector-all]) + AS_VAR_IF(can_compile, [yes], + AS_VAR_IF(can_link, [yes], + [], + AC_MSG_ERROR([We tried to build with stack protection; it looks like your compiler supports it but your libc does not provide it. Are you missing libssp? (You can --disable-gcc-hardening to ignore this error.)])) + ) + AS_VAR_POPDEF([can_link]) + AS_VAR_POPDEF([can_compile]) TOR_CHECK_CFLAGS(-Wstack-protector) TOR_CHECK_CFLAGS(-fwrapv) TOR_CHECK_CFLAGS(--param ssp-buffer-size=1) @@ -1416,6 +1455,12 @@ if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xy #error #endif])], have_gcc43=yes, have_gcc43=no) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ +#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) +#error +#endif])], have_gcc46=yes, have_gcc46=no) + + save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wshorten-64-to-32" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes, @@ -1467,10 +1512,18 @@ if test x$enable_gcc_warnings = xyes || test x$enable_gcc_warnings_advisory = xy CFLAGS="$CFLAGS -Wextra -Warray-bounds" fi + if test x$have_gcc46 = xyes ; then + # This warning was added in gcc 4.3, but it appears to generate + # spurious warnings in gcc 4.4. I don't know if it works in 4.5. + CFLAGS="$CFLAGS -Wlogical-op" + fi + if test x$have_shorten64_flag = xyes ; then CFLAGS="$CFLAGS -Wshorten-64-to-32" fi + + ##This will break the world on some 64-bit architectures # CFLAGS="$CFLAGS -Winline" fi @@ -1491,7 +1544,6 @@ AC_CONFIG_FILES([ contrib/tor.logrotate contrib/tor.sh contrib/torctl - contrib/torify src/config/torrc.sample ]) diff --git a/contrib/include.am b/contrib/include.am index 6d7fb16f9a..62b76ebeb9 100644 --- a/contrib/include.am +++ b/contrib/include.am @@ -12,6 +12,7 @@ EXTRA_DIST+= \ contrib/tor.ico \ contrib/tor.nsi.in \ contrib/tor.sh \ + contrib/torify \ contrib/torctl bin_SCRIPTS+= contrib/torify diff --git a/contrib/tor-mingw.nsi.in b/contrib/tor-mingw.nsi.in index 05d9ebc5c3..d6a2f3362e 100644 --- a/contrib/tor-mingw.nsi.in +++ b/contrib/tor-mingw.nsi.in @@ -8,7 +8,7 @@ !include "LogicLib.nsh" !include "FileFunc.nsh" !insertmacro GetParameters -!define VERSION "0.2.5.0-alpha-dev" +!define VERSION "0.2.5.1-alpha-dev" !define INSTALLER "tor-${VERSION}-win32.exe" !define WEBSITE "https://www.torproject.org/" !define LICENSE "LICENSE" diff --git a/contrib/torify.in b/contrib/torify index 54acfed654..54acfed654 100755 --- a/contrib/torify.in +++ b/contrib/torify diff --git a/doc/HACKING b/doc/HACKING index b7cd8952d1..a0072ec531 100644 --- a/doc/HACKING +++ b/doc/HACKING @@ -118,25 +118,29 @@ Running gcov for unit test coverage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ----- - make clean - make CFLAGS='-g -fprofile-arcs -ftest-coverage' - ./src/test/test - gcov -o src/common src/common/*.[ch] - gcov -o src/or src/or/*.[ch] - cd ../or; gcov *.[ch] + ./configure --enable-coverage + make + ./src/test/test + mkdir coverage-output + ./contrib/coverage coverage-output ----- -Then, look at the .gcov files. '-' before a line means that the -compiler generated no code for that line. '######' means that the -line was never reached. Lines with numbers were called that number -of times. +(On OSX, you'll need to start with "--enable-coverage CC=clang".) + +Then, look at the .gcov files in coverage-output. '-' before a line means +that the compiler generated no code for that line. '######' means that the +line was never reached. Lines with numbers were called that number of times. If that doesn't work: * Try configuring Tor with --disable-gcc-hardening - * On recent OSX versions, you might need to add CC=clang to your - build line, as in: - make CFLAGS='-g -fprofile-arcs -ftest-coverage' CC=clang - Their llvm-gcc doesn't work so great for me. + * You might need to run 'make clean' after you run './configure'. + +Running integration tests +~~~~~~~~~~~~~~~~~~~~~~~~~ + +We have the beginnings of a set of scripts to run integration tests using +Chutney. To try them, set CHUTNEY_PATH to your chutney source directory, and +run "make test-network". Profiling Tor with oprofile ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -493,12 +497,8 @@ in their approved versions list. 8) scp the tarball and its sig to the website in the dist/ directory (i.e. /srv/www-master.torproject.org/htdocs/dist/ on vescum). Edit -include/versions.wmi to note the new version. From your website checkout, -run ./publish to build and publish the website. - -Try not to delay too much between scp'ing the tarball and running -./publish -- the website has multiple A records and your scp only sent -it to one of them. +"include/versions.wmi" and "Makefile" to note the new version. From your +website checkout, run ./publish to build and publish the website. 9) Email Erinn and weasel (cc'ing tor-assistants) that a new tarball is up. This step should probably change to mailing more packagers. diff --git a/doc/include.am b/doc/include.am index 9695292bdf..37c0237a00 100644 --- a/doc/include.am +++ b/doc/include.am @@ -12,8 +12,8 @@ # part of the source distribution, so that people without asciidoc can # just use the .1 and .html files. -regular_mans = doc/tor doc/tor-gencert doc/tor-resolve doc/torify -all_mans = $(regular_mans) doc/tor-fw-helper +regular_mans = doc/tor doc/tor-gencert doc/tor-resolve +all_mans = $(regular_mans) doc/torify doc/tor-fw-helper if USE_ASCIIDOC if USE_FW_HELPER @@ -55,13 +55,11 @@ $(man_in) : doc/tor.1.in: doc/tor.1.txt doc/tor-gencert.1.in: doc/tor-gencert.1.txt doc/tor-resolve.1.in: doc/tor-resolve.1.txt -doc/torify.1.in: doc/torify.1.txt doc/tor-fw-helper.1.in: doc/tor-fw-helper.1.txt doc/tor.html.in: doc/tor.1.txt doc/tor-gencert.html.in: doc/tor-gencert.1.txt doc/tor-resolve.html.in: doc/tor-resolve.1.txt -doc/torify.html.in: doc/torify.1.txt doc/tor-fw-helper.html.in: doc/tor-fw-helper.1.txt # use ../config.status to swap all machine-specific magic strings @@ -76,13 +74,13 @@ $(asciidoc_product) : doc/tor.html: doc/tor.html.in doc/tor-gencert.html: doc/tor-gencert.html.in doc/tor-resolve.html: doc/tor-resolve.html.in -doc/torify.html: doc/torify.html.in +doc/torify.html: doc/torify.1.txt doc/tor-fw-helper.html: doc/tor-fw-helper.html.in doc/tor.1: doc/tor.1.in doc/tor-gencert.1: doc/tor-gencert.1.in doc/tor-resolve.1: doc/tor-resolve.1.in -doc/torify.1: doc/torify.1.in +doc/torify.1: doc/torify.1.txt doc/tor-fw-helper.1: doc/tor-fw-helper.1.in CLEANFILES+= $(asciidoc_product) config.log diff --git a/doc/tor.1.txt b/doc/tor.1.txt index bade531a07..34a9f24eb6 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -18,61 +18,75 @@ SYNOPSIS DESCRIPTION ----------- -__tor__ is a connection-oriented anonymizing communication +Tor is a connection-oriented anonymizing communication service. Users choose a source-routed path through a set of nodes, and negotiate a "virtual circuit" through the network, in which each node knows its predecessor and successor, but no others. Traffic flowing down the circuit is unwrapped by a symmetric key at each node, which reveals the downstream node. + -Basically __tor__ provides a distributed network of servers ("onion routers"). -Users bounce their TCP streams -- web traffic, ftp, ssh, etc -- around the -routers, and recipients, observers, and even the routers themselves have +Basically, Tor provides a distributed network of servers or relays ("onion routers"). +Users bounce their TCP streams -- web traffic, ftp, ssh, etc. -- around the +network, and recipients, observers, and even the relays themselves have difficulty tracking the source of the stream. +By default, **tor** will only act as a client only. To help the network +by providing bandwidth as a relay, change the **ORPort** configuration +option -- see below. Please also consult the documentation on the Tor +Project's website. + COMMAND-LINE OPTIONS -------------------- -**-h**, **-help**:: +[[opt-h]] **-h**, **-help**:: Display a short help message and exit. -**-f** __FILE__:: +[[opt-f]] **-f** __FILE__:: Specify a new configuration file to contain further Tor configuration options. (Default: $HOME/.torrc, or @CONFDIR@/torrc if that file is not found) -**--defaults-torrc** __FILE__:: +[[opt-allow-missing-torrc]] **--allow-missing-torrc**:: + Do not require that configuration file specified by **-f** exist if + default torrc can be accessed. + +[[opt-defaults-torrc]] **--defaults-torrc** __FILE__:: Specify a file in which to find default values for Tor options. The contents of this file are overridden by those in the regular configuration file, and by those on the command line. (Default: @CONFDIR@/torrc-defaults.) -**--hash-password**:: +[[opt-ignore-missing-torrc]] **--ignore-missing-torrc**:: + Specifies that Tor should treat a missing torrc file as though it + were empty. Ordinarily, Tor does this for missing default torrc files, + but not for those specified on the command line. + +[[opt-hash-password]] **--hash-password** __PASSWORD__:: Generates a hashed password for control port access. -**--list-fingerprint**:: +[[opt-list-fingerprint]] **--list-fingerprint**:: Generate your keys and output your nickname and fingerprint. -**--verify-config**:: +[[opt-verify-config]] **--verify-config**:: Verify the configuration file is valid. -**--service install** [**--options** __command-line options__]:: +[[opt-serviceinstall]] **--service install** [**--options** __command-line options__]:: Install an instance of Tor as a Windows service, with the provided command-line options. Current instructions can be found at https://trac.torproject.org/projects/tor/wiki/doc/TorFAQ#HowdoIrunmyTorrelayasanNTservice -**--service** **remove**|**start**|**stop**:: +[[opt-service]] **--service** **remove**|**start**|**stop**:: Remove, start, or stop a configured Tor Windows service. -**--nt-service**:: +[[opt-nt-service]] **--nt-service**:: Used internally to implement a Windows service. -**--list-torrc-options**:: +[[opt-list-torrc-options]] **--list-torrc-options**:: List all valid options. -**--version**:: +[[opt-version]] **--version**:: Display Tor version and exit. -**--quiet**|**--hush**:: +[[opt-quiet]] **--quiet**|**--hush**:: Override the default console log. By default, Tor starts out logging messages at level "notice" and higher to the console. It stops doing so after it parses its configuration, if the configuration tells it to log @@ -124,47 +138,47 @@ option name with a forward slash. GENERAL OPTIONS --------------- -**BandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[BandwidthRate]] **BandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: A token bucket limits the average incoming bandwidth usage on this node to the specified number of bytes per second, and the average outgoing bandwidth usage to that same value. If you want to run a relay in the public network, this needs to be _at the very least_ 30 KBytes (that is, 30720 bytes). (Default: 1 GByte) -**BandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[BandwidthBurst]] **BandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: Limit the maximum token bucket size (also known as the burst) to the given number of bytes in each direction. (Default: 1 GByte) -**MaxAdvertisedBandwidth** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[MaxAdvertisedBandwidth]] **MaxAdvertisedBandwidth** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: If set, we will not advertise more than this amount of bandwidth for our BandwidthRate. Server operators who want to reduce the number of clients who ask to build circuits through them (since this is proportional to advertised bandwidth rate) can thus reduce the CPU demands on their server without impacting network performance. -**RelayBandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[RelayBandwidthRate]] **RelayBandwidthRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: If not 0, a separate token bucket limits the average incoming bandwidth usage for \_relayed traffic_ on this node to the specified number of bytes per second, and the average outgoing bandwidth usage to that same value. Relayed traffic currently is calculated to include answers to directory requests, but that may change in future versions. (Default: 0) -**RelayBandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[RelayBandwidthBurst]] **RelayBandwidthBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: If not 0, limit the maximum token bucket size (also known as the burst) for \_relayed traffic_ to the given number of bytes in each direction. (Default: 0) -**PerConnBWRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[PerConnBWRate]] **PerConnBWRate** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: If set, do separate rate limiting for each connection from a non-relay. You should never need to change this value, since a network-wide value is published in the consensus and your relay will use that value. (Default: 0) -**PerConnBWBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[PerConnBWBurst]] **PerConnBWBurst** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: If set, do separate rate limiting for each connection from a non-relay. You should never need to change this value, since a network-wide value is published in the consensus and your relay will use that value. (Default: 0) -**ClientTransportPlugin** __transport__ socks4|socks5 __IP__:__PORT__:: +[[ClientTransportPlugin]] **ClientTransportPlugin** __transport__ socks4|socks5 __IP__:__PORT__:: **ClientTransportPlugin** __transport__ exec __path-to-binary__ [options]:: In its first form, when set along with a corresponding Bridge line, the Tor client forwards its traffic to a SOCKS-speaking proxy on "IP:PORT". It's the @@ -176,22 +190,31 @@ GENERAL OPTIONS forwards its traffic to it. It's the duty of that proxy to properly forward the traffic to the bridge. -**ServerTransportPlugin** __transport__ exec __path-to-binary__ [options]:: +[[ServerTransportPlugin]] **ServerTransportPlugin** __transport__ exec __path-to-binary__ [options]:: The Tor relay launches the pluggable transport proxy in __path-to-binary__ using __options__ as its command-line options, and expects to receive proxied client traffic from it. -**ServerTransportListenAddr** __transport__ __IP__:__PORT__:: +[[ServerTransportListenAddr]] **ServerTransportListenAddr** __transport__ __IP__:__PORT__:: When this option is set, Tor will suggest __IP__:__PORT__ as the listening address of any pluggable transport proxy that tries to launch __transport__. -**ServerTransportOptions** __transport__ __k=v__ __k=v__ ...:: +[[ServerTransportOptions]] **ServerTransportOptions** __transport__ __k=v__ __k=v__ ...:: When this option is set, Tor will pass the __k=v__ parameters to any pluggable transport proxy that tries to launch __transport__. + (Example: ServerTransportOptions obfs45 shared-secret=bridgepasswd cache=/var/lib/tor/cache) -**ConnLimit** __NUM__:: +[[ExtORPort]] **ExtORPort** \['address':]__port__|**auto** + Open this port to listen for Extended ORPort connections from your + pluggable transports. + +[[ExtORPortCookieAuthFile]] **ExtORPortCookieAuthFile** __Path__:: + If set, this option overrides the default location and file name + for the Extended ORPort's cookie file -- the cookie file is needed + for pluggable transports to communicate through the Extended ORPort. + +[[ConnLimit]] **ConnLimit** __NUM__:: The minimum number of file descriptors that must be available to the Tor process before it will start. Tor will ask the OS for as many file descriptors as the OS will allow (you can find this by "ulimit -H -n"). @@ -200,13 +223,14 @@ GENERAL OPTIONS You probably don't need to adjust this. It has no effect on Windows since that platform lacks getrlimit(). (Default: 1000) -**DisableNetwork** **0**|**1**:: +[[DisableNetwork]] **DisableNetwork** **0**|**1**:: When this option is set, we don't listen for or accept any connections - other than controller connections, and we don't make any outbound + other than controller connections, and we close (and don't reattempt) + any outbound connections. Controllers sometimes use this option to avoid using the network until Tor is fully configured. (Default: 0) -**ConstrainedSockets** **0**|**1**:: +[[ConstrainedSockets]] **ConstrainedSockets** **0**|**1**:: If set, Tor will tell the kernel to attempt to shrink the buffers for all sockets to the size specified in **ConstrainedSockSize**. This is useful for virtual servers and other environments where system level TCP buffers may @@ -227,12 +251,12 @@ GENERAL OPTIONS the TCP stream and will reduce throughput in proportion to round trip time on long paths. (Default: 0) -**ConstrainedSockSize** __N__ **bytes**|**KBytes**:: +[[ConstrainedSockSize]] **ConstrainedSockSize** __N__ **bytes**|**KBytes**:: When **ConstrainedSockets** is enabled the receive and transmit buffers for all sockets will be set to this limit. Must be a value between 2048 and 262144, in 1024 byte increments. Default of 8192 is recommended. -**ControlPort** __PORT__|**auto**:: +[[ControlPort]] **ControlPort** __PORT__|**auto**:: If set, Tor will accept connections on this port and allow those connections to control the Tor process using the Tor Control Protocol (described in control-spec.txt). Note: unless you also specify one or @@ -243,7 +267,7 @@ GENERAL OPTIONS option is required for many Tor controllers; most use the value of 9051. Set it to "auto" to have Tor pick a port for you. (Default: 0) -**ControlListenAddress** __IP__[:__PORT__]:: +[[ControlListenAddress]] **ControlListenAddress** __IP__[:__PORT__]:: Bind the controller listener to this address. If you specify a port, bind to this port rather than the one specified in ControlPort. We strongly recommend that you leave this alone unless you know what you're doing, @@ -251,58 +275,58 @@ GENERAL OPTIONS dangerous. This directive can be specified multiple times to bind to multiple addresses/ports. (Default: 127.0.0.1) -**ControlSocket** __Path__:: +[[ControlSocket]] **ControlSocket** __Path__:: Like ControlPort, but listens on a Unix domain socket, rather than a TCP socket. (Unix and Unix-like systems only.) -**ControlSocketsGroupWritable** **0**|**1**:: +[[ControlSocketsGroupWritable]] **ControlSocketsGroupWritable** **0**|**1**:: If this option is set to 0, don't allow the filesystem group to read and write unix sockets (e.g. ControlSocket). If the option is set to 1, make the control socket readable and writable by the default GID. (Default: 0) -**HashedControlPassword** __hashed_password__:: +[[HashedControlPassword]] **HashedControlPassword** __hashed_password__:: Allow connections on the control port if they present the password whose one-way hash is __hashed_password__. You can compute the hash of a password by running "tor --hash-password __password__". You can provide several acceptable passwords by using more than one HashedControlPassword line. -**CookieAuthentication** **0**|**1**:: +[[CookieAuthentication]] **CookieAuthentication** **0**|**1**:: If this option is set to 1, allow connections on the control port when the connecting process knows the contents of a file named "control_auth_cookie", which Tor will create in its data directory. This authentication method should only be used on systems with good filesystem security. (Default: 0) -**CookieAuthFile** __Path__:: +[[CookieAuthFile]] **CookieAuthFile** __Path__:: If set, this option overrides the default location and file name for Tor's cookie file. (See CookieAuthentication above.) -**CookieAuthFileGroupReadable** **0**|**1**|__Groupname__:: +[[CookieAuthFileGroupReadable]] **CookieAuthFileGroupReadable** **0**|**1**|__Groupname__:: If this option is set to 0, don't allow the filesystem group to read the cookie file. If the option is set to 1, make the cookie file readable by the default GID. [Making the file readable by other groups is not yet implemented; let us know if you need this for some reason.] (Default: 0) -**ControlPortWriteToFile** __Path__:: +[[ControlPortWriteToFile]] **ControlPortWriteToFile** __Path__:: If set, Tor writes the address and port of any control port it opens to this address. Usable by controllers to learn the actual control port when ControlPort is set to "auto". -**ControlPortFileGroupReadable** **0**|**1**:: +[[ControlPortFileGroupReadable]] **ControlPortFileGroupReadable** **0**|**1**:: If this option is set to 0, don't allow the filesystem group to read the control port file. If the option is set to 1, make the control port file readable by the default GID. (Default: 0) -**DataDirectory** __DIR__:: +[[DataDirectory]] **DataDirectory** __DIR__:: Store working data in DIR (Default: @LOCALSTATEDIR@/lib/tor) -**FallbackDir** __address__:__port__ orport=__port__ id=__fingerprint__ [weight=__num__]:: +[[FallbackDir]] **FallbackDir** __address__:__port__ orport=__port__ id=__fingerprint__ [weight=__num__]:: When we're unable to connect to any directory cache for directory info (usually because we don't know about any yet) we try a FallbackDir. By default, the directory authorities are also FallbackDirs. -**DirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__:: +[[DirAuthority]] **DirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__:: Use a nonstandard authoritative directory server at the provided address and port, with the specified key fingerprint. This option can be repeated many times, for multiple authoritative directory servers. Flags are @@ -327,23 +351,23 @@ GENERAL OPTIONS distinguishable from other users, because you won't believe the same authorities they do. -**DirAuthorityFallbackRate** __NUM__:: +[[DirAuthorityFallbackRate]] **DirAuthorityFallbackRate** __NUM__:: When configured to use both directory authorities and fallback directories, the directory authorities also work as fallbacks. They are chosen with their regular weights, multiplied by this number, which should be 1.0 or less. (Default: 1.0) -**DynamicDHGroups** **0**|**1**:: +[[DynamicDHGroups]] **DynamicDHGroups** **0**|**1**:: If this option is set to 1, when running as a server, generate our own Diffie-Hellman group instead of using the one from Apache's mod_ssl. This option may help circumvent censorship based on static Diffie-Hellman parameters. (Default: 0) -**AlternateDirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ + +[[AlternateDirAuthority]] **AlternateDirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ + -**AlternateHSAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ + +[[AlternateHSAuthority]] **AlternateHSAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ + -**AlternateBridgeAuthority** [__nickname__] [**flags**] __address__:__port__ __ fingerprint__:: +[[AlternateBridgeAuthority]] **AlternateBridgeAuthority** [__nickname__] [**flags**] __address__:__port__ __ fingerprint__:: These options behave as DirAuthority, but they replace fewer of the default directory authorities. Using AlternateDirAuthority replaces the default Tor directory authorities, but @@ -353,7 +377,7 @@ GENERAL OPTIONS AlternateBridgeAuthority replaces the default bridge authority, but leaves the directory and hidden service authorities alone. -**DisableAllSwap** **0**|**1**:: +[[DisableAllSwap]] **DisableAllSwap** **0**|**1**:: If set to 1, Tor will attempt to lock all current and future memory pages, so that memory cannot be paged out. Windows, OS X and Solaris are currently not supported. We believe that this feature works on modern Gnu/Linux @@ -361,9 +385,10 @@ GENERAL OPTIONS option requires that you start your Tor as root, and you should use the **User** option to properly reduce Tor's privileges. (Default: 0) -**DisableDebuggerAttachment** **0**|**1**:: +[[DisableDebuggerAttachment]] **DisableDebuggerAttachment** **0**|**1**:: If set to 1, Tor will attempt to prevent basic debugging attachment attempts - by other processes. It has no impact for users who wish to attach if they + by other processes. This may also keep Tor from generating core files if + it crashes. It has no impact for users who wish to attach if they have CAP_SYS_PTRACE or if they are root. We believe that this feature works on modern Gnu/Linux distributions, and that it may also work on *BSD systems (untested). Some modern Gnu/Linux systems such as Ubuntu have the @@ -375,86 +400,86 @@ GENERAL OPTIONS this to 0 for the duration of your debugging. Normal users should leave it on. Disabling this option while Tor is running is prohibited. (Default: 1) -**FetchDirInfoEarly** **0**|**1**:: +[[FetchDirInfoEarly]] **FetchDirInfoEarly** **0**|**1**:: If set to 1, Tor will always fetch directory information like other directory caches, even if you don't meet the normal criteria for fetching early. Normal users should leave it off. (Default: 0) -**FetchDirInfoExtraEarly** **0**|**1**:: +[[FetchDirInfoExtraEarly]] **FetchDirInfoExtraEarly** **0**|**1**:: If set to 1, Tor will fetch directory information before other directory caches. It will attempt to download directory information closer to the start of the consensus period. Normal users should leave it off. (Default: 0) -**FetchHidServDescriptors** **0**|**1**:: +[[FetchHidServDescriptors]] **FetchHidServDescriptors** **0**|**1**:: If set to 0, Tor will never fetch any hidden service descriptors from the rendezvous directories. This option is only useful if you're using a Tor controller that handles hidden service fetches for you. (Default: 1) -**FetchServerDescriptors** **0**|**1**:: +[[FetchServerDescriptors]] **FetchServerDescriptors** **0**|**1**:: If set to 0, Tor will never fetch any network status summaries or server descriptors from the directory servers. This option is only useful if you're using a Tor controller that handles directory fetches for you. (Default: 1) -**FetchUselessDescriptors** **0**|**1**:: +[[FetchUselessDescriptors]] **FetchUselessDescriptors** **0**|**1**:: If set to 1, Tor will fetch every non-obsolete descriptor from the authorities that it hears about. Otherwise, it will avoid fetching useless descriptors, for example for routers that are not running. This option is useful if you're using the contributed "exitlist" script to enumerate Tor nodes that exit to certain addresses. (Default: 0) -**HTTPProxy** __host__[:__port__]:: +[[HTTPProxy]] **HTTPProxy** __host__[:__port__]:: Tor will make all its directory requests through this host:port (or host:80 if port is not specified), rather than connecting directly to any directory servers. -**HTTPProxyAuthenticator** __username:password__:: +[[HTTPProxyAuthenticator]] **HTTPProxyAuthenticator** __username:password__:: If defined, Tor will use this username:password for Basic HTTP proxy authentication, as in RFC 2617. This is currently the only form of HTTP proxy authentication that Tor supports; feel free to submit a patch if you want it to support others. -**HTTPSProxy** __host__[:__port__]:: +[[HTTPSProxy]] **HTTPSProxy** __host__[:__port__]:: Tor will make all its OR (SSL) connections through this host:port (or host:443 if port is not specified), via HTTP CONNECT rather than connecting directly to servers. You may want to set **FascistFirewall** to restrict the set of ports you might try to connect to, if your HTTPS proxy only allows connecting to certain ports. -**HTTPSProxyAuthenticator** __username:password__:: +[[HTTPSProxyAuthenticator]] **HTTPSProxyAuthenticator** __username:password__:: If defined, Tor will use this username:password for Basic HTTPS proxy authentication, as in RFC 2617. This is currently the only form of HTTPS proxy authentication that Tor supports; feel free to submit a patch if you want it to support others. -**Sandbox** **0**|**1**:: +[[Sandbox]] **Sandbox** **0**|**1**:: If set to 1, Tor will run securely through the use of a syscall sandbox. - Otherwise the sandbox will be disabled. The option is currently an + Otherwise the sandbox will be disabled. The option is currently an experimental feature. (Default: 0) -**Socks4Proxy** __host__[:__port__]:: +[[Socks4Proxy]] **Socks4Proxy** __host__[:__port__]:: Tor will make all OR connections through the SOCKS 4 proxy at host:port (or host:1080 if port is not specified). -**Socks5Proxy** __host__[:__port__]:: +[[Socks5Proxy]] **Socks5Proxy** __host__[:__port__]:: Tor will make all OR connections through the SOCKS 5 proxy at host:port (or host:1080 if port is not specified). -**Socks5ProxyUsername** __username__ + +[[Socks5ProxyUsername]] **Socks5ProxyUsername** __username__ + -**Socks5ProxyPassword** __password__:: +[[Socks5ProxyPassword]] **Socks5ProxyPassword** __password__:: If defined, authenticate to the SOCKS 5 server using username and password in accordance to RFC 1929. Both username and password must be between 1 and 255 characters. -**KeepalivePeriod** __NUM__:: +[[KeepalivePeriod]] **KeepalivePeriod** __NUM__:: To keep firewalls from expiring connections, send a padding keepalive cell every NUM seconds on open connections that are in use. If the connection has no open circuits, it will instead be closed after NUM seconds of idleness. (Default: 5 minutes) -**Log** __minSeverity__[-__maxSeverity__] **stderr**|**stdout**|**syslog**:: +[[Log]] **Log** __minSeverity__[-__maxSeverity__] **stderr**|**stdout**|**syslog**:: Send all messages between __minSeverity__ and __maxSeverity__ to the standard output stream, the standard error stream, or to the system log. (The "syslog" value is only supported on Unix.) Recognized severity levels are @@ -492,12 +517,12 @@ GENERAL OPTIONS messages from domains other than networking and memory management, and all messages of severity notice or higher. -**LogMessageDomains** **0**|**1**:: +[[LogMessageDomains]] **LogMessageDomains** **0**|**1**:: If 1, Tor includes message domains with each log message. Every log message currently has at least one domain; most currently have exactly one. This doesn't affect controller log messages. (Default: 0) -**OutboundBindAddress** __IP__:: +[[OutboundBindAddress]] **OutboundBindAddress** __IP__:: Make all outbound connections originate from the IP address specified. This is only useful when you have multiple network interfaces, and you want all of Tor's outgoing connections to use a single one. This option may @@ -505,21 +530,21 @@ GENERAL OPTIONS This setting will be ignored for connections to the loopback addresses (127.0.0.0/8 and ::1). -**PidFile** __FILE__:: +[[PidFile]] **PidFile** __FILE__:: On startup, write our PID to FILE. On clean shutdown, remove FILE. -**ProtocolWarnings** **0**|**1**:: +[[ProtocolWarnings]] **ProtocolWarnings** **0**|**1**:: If 1, Tor will log with severity \'warn' various cases of other parties not following the Tor specification. Otherwise, they are logged with severity \'info'. (Default: 0) -**RunAsDaemon** **0**|**1**:: +[[RunAsDaemon]] **RunAsDaemon** **0**|**1**:: If 1, Tor forks and daemonizes to the background. This option has no effect on Windows; instead you should use the --service command-line option. (Default: 0) -**LogTimeGranularity** __NUM__:: +[[LogTimeGranularity]] **LogTimeGranularity** __NUM__:: Set the resolution of timestamps in Tor's logs to NUM milliseconds. NUM must be positive and either a divisor or a multiple of 1 second. Note that this option only controls the granularity written by Tor to @@ -527,7 +552,7 @@ GENERAL OPTIONS messages to affect times logged by a controller, times attached to syslog messages, or the mtime fields on log files. (Default: 1 second) -**SafeLogging** **0**|**1**|**relay**:: +[[SafeLogging]] **SafeLogging** **0**|**1**|**relay**:: Tor can scrub potentially sensitive strings from log messages (e.g. addresses) by replacing them with the string [scrubbed]. This way logs can still be useful, but they don't leave behind personally identifying @@ -538,37 +563,37 @@ GENERAL OPTIONS relay, all log messages generated when acting as a relay are sanitized, but all messages generated when acting as a client are not. (Default: 1) -**User** __UID__:: +[[User]] **User** __UID__:: On startup, setuid to this user and setgid to their primary group. -**HardwareAccel** **0**|**1**:: +[[HardwareAccel]] **HardwareAccel** **0**|**1**:: If non-zero, try to use built-in (static) crypto hardware acceleration when available. (Default: 0) -**AccelName** __NAME__:: +[[AccelName]] **AccelName** __NAME__:: When using OpenSSL hardware crypto acceleration attempt to load the dynamic engine of this name. This must be used for any dynamic hardware engine. Names can be verified with the openssl engine command. -**AccelDir** __DIR__:: +[[AccelDir]] **AccelDir** __DIR__:: Specify this option if using dynamic hardware acceleration and the engine implementation library resides somewhere other than the OpenSSL default. -**AvoidDiskWrites** **0**|**1**:: +[[AvoidDiskWrites]] **AvoidDiskWrites** **0**|**1**:: If non-zero, try to write to disk less frequently than we would otherwise. This is useful when running on flash memory or other media that support only a limited number of writes. (Default: 0) -**TunnelDirConns** **0**|**1**:: +[[TunnelDirConns]] **TunnelDirConns** **0**|**1**:: If non-zero, when a directory server we contact supports it, we will build a one-hop circuit and make an encrypted connection via its ORPort. (Default: 1) -**PreferTunneledDirConns** **0**|**1**:: +[[PreferTunneledDirConns]] **PreferTunneledDirConns** **0**|**1**:: If non-zero, we will avoid directory servers that don't support tunneled directory connections, when possible. (Default: 1) -**CircuitPriorityHalflife** __NUM1__:: +[[CircuitPriorityHalflife]] **CircuitPriorityHalflife** __NUM1__:: If this value is set, we override the default algorithm for choosing which circuit's cell to deliver or relay next. When the value is 0, we round-robin between the active circuits on a connection, delivering one @@ -580,19 +605,19 @@ GENERAL OPTIONS networkstatus. This is an advanced option; you generally shouldn't have to mess with it. (Default: not set) -**DisableIOCP** **0**|**1**:: +[[DisableIOCP]] **DisableIOCP** **0**|**1**:: If Tor was built to use the Libevent's "bufferevents" networking code and you're running on Windows, setting this option to 1 will tell Libevent not to use the Windows IOCP networking API. (Default: 1) -**UserspaceIOCPBuffers** **0**|**1**:: +[[UserspaceIOCPBuffers]] **UserspaceIOCPBuffers** **0**|**1**:: If IOCP is enabled (see DisableIOCP above), setting this option to 1 will tell Tor to disable kernel-space TCP buffers, in order to avoid needless copy operations and try not to run out of non-paged RAM. This feature is experimental; don't use it yet unless you're eager to help tracking down bugs. (Default: 0) -**_UseFilteringSSLBufferevents** **0**|**1**:: +[[_UseFilteringSSLBufferevents]] **_UseFilteringSSLBufferevents** **0**|**1**:: Tells Tor to do its SSL communication using a chain of bufferevents: one for SSL and one for networking. This option has no effect if bufferevents are disabled (in which case it can't turn on), or @@ -600,7 +625,7 @@ GENERAL OPTIONS option is useful for debugging only; most users shouldn't touch it. (Default: 0) -**CountPrivateBandwidth** **0**|**1**:: +[[CountPrivateBandwidth]] **CountPrivateBandwidth** **0**|**1**:: If this option is set, then Tor's rate-limiting applies not only to remote connections, but also to connections to private addresses like 127.0.0.1 or 10.0.0.1. This is mostly useful for debugging @@ -610,16 +635,16 @@ CLIENT OPTIONS -------------- The following options are useful only for clients (that is, if -**SocksPort**, **TransPort**, **DNSPort**, or **NATDPort** is non-zero): +[[SocksPort]] **SocksPort**, **TransPort**, **DNSPort**, or **NATDPort** is non-zero): -**AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**:: +[[AllowInvalidNodes]] **AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**:: If some Tor servers are obviously not working right, the directory authorities can manually mark them as invalid, meaning that it's not recommended you use them for entry or exit positions in your circuits. You can opt to use them in some circuit positions, though. The default is "middle,rendezvous", and other choices are not advised. -**ExcludeSingleHopRelays** **0**|**1**:: +[[ExcludeSingleHopRelays]] **ExcludeSingleHopRelays** **0**|**1**:: This option controls whether circuits built by Tor will include relays with the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set to 0, these relays will be included. Note that these relays might be at @@ -628,10 +653,10 @@ The following options are useful only for clients (that is, if so using these relays might make your client stand out. (Default: 1) -**Bridge** [__transport__] __IP__:__ORPort__ [__fingerprint__]:: +[[Bridge]] **Bridge** [__transport__] __IP__:__ORPort__ [__fingerprint__]:: When set along with UseBridges, instructs Tor to use the relay at "IP:ORPort" as a "bridge" relaying into the Tor network. If "fingerprint" - is provided (using the same format as for DirServer), we will verify that + is provided (using the same format as for DirAuthority), we will verify that the relay running at that location has the right fingerprint. We also use fingerprint to look up the bridge descriptor at the bridge authority, if it's provided and if UpdateBridgesFromAuthority is set too. + @@ -640,10 +665,10 @@ The following options are useful only for clients (that is, if line, we use that pluggable transports proxy to transfer data to the bridge. -**LearnCircuitBuildTimeout** **0**|**1**:: +[[LearnCircuitBuildTimeout]] **LearnCircuitBuildTimeout** **0**|**1**:: If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1) -**CircuitBuildTimeout** __NUM__:: +[[CircuitBuildTimeout]] **CircuitBuildTimeout** __NUM__:: Try for at most NUM seconds when building circuits. If the circuit isn't open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this @@ -651,7 +676,7 @@ The following options are useful only for clients (that is, if LearnCircuitBuildTimeout is 0, this value is the only value used. (Default: 60 seconds) -**CircuitIdleTimeout** __NUM__:: +[[CircuitIdleTimeout]] **CircuitIdleTimeout** __NUM__:: If we have kept a clean (never used) circuit around for NUM seconds, then close it. This way when the Tor client is entirely idle, it can expire all of its circuits, and then expire its TLS connections. Also, if we end up @@ -659,13 +684,13 @@ The following options are useful only for clients (that is, if receiving, it won't forever take up a slot in the circuit list. (Default: 1 hour) -**CircuitStreamTimeout** __NUM__:: +[[CircuitStreamTimeout]] **CircuitStreamTimeout** __NUM__:: If non-zero, this option overrides our internal timeout schedule for how many seconds until we detach a stream from a circuit and try a new circuit. If your network is particularly slow, you might want to set this to a number like 60. (Default: 0) -**ClientOnly** **0**|**1**:: +[[ClientOnly]] **ClientOnly** **0**|**1**:: If set to 1, Tor will under no circumstances run as a relay or serve directory requests. This config option is mostly meaningless: we added it back when we were considering having Tor clients auto-promote @@ -673,7 +698,7 @@ The following options are useful only for clients (that is, if current behavior is simply that Tor is a client unless ORPort or DirPort are configured. (Default: 0) -**ExcludeNodes** __node__,__node__,__...__:: +[[ExcludeNodes]] **ExcludeNodes** __node__,__node__,__...__:: A list of identity fingerprints, nicknames, country codes and address patterns of nodes to avoid when building a circuit. (Example: @@ -696,14 +721,14 @@ The following options are useful only for clients (that is, if no GeoIPFile can be loaded. See also the GeoIPExcludeUnknown option below. -**ExcludeExitNodes** __node__,__node__,__...__:: +[[ExcludeExitNodes]] **ExcludeExitNodes** __node__,__node__,__...__:: A list of identity fingerprints, nicknames, country codes and address patterns of nodes to never use when picking an exit node---that is, a node that delivers traffic for you outside the Tor network. Note that any node listed in ExcludeNodes is automatically considered to be part of this list too. See also the caveats on the "ExitNodes" option below. -**GeoIPExcludeUnknown** **0**|**1**|**auto**:: +[[GeoIPExcludeUnknown]] **GeoIPExcludeUnknown** **0**|**1**|**auto**:: If this option is set to 'auto', then whenever any country code is set in ExcludeNodes or ExcludeExitNodes, all nodes with unknown country (\{??} and possibly \{A1}) are treated as excluded as well. If this option is set to @@ -711,7 +736,7 @@ The following options are useful only for clients (that is, if and ExcludeExitNodes. This option has no effect when a GeoIP file isn't configured or can't be found. (Default: auto) -**ExitNodes** __node__,__node__,__...__:: +[[ExitNodes]] **ExitNodes** __node__,__node__,__...__:: A list of identity fingerprints, nicknames, country codes and address patterns of nodes to use as exit node---that is, a node that delivers traffic for you outside the Tor network. + @@ -734,7 +759,7 @@ The following options are useful only for clients (that is, if The .exit address notation, if enabled via AllowDotExit, overrides this option. -**EntryNodes** __node__,__node__,__...__:: +[[EntryNodes]] **EntryNodes** __node__,__node__,__...__:: A list of identity fingerprints, nicknames, and country codes of nodes to use for the first hop in your normal circuits. Normal circuits include all @@ -745,7 +770,7 @@ The following options are useful only for clients (that is, if The ExcludeNodes option overrides this option: any node listed in both EntryNodes and ExcludeNodes is treated as excluded. -**StrictNodes** **0**|**1**:: +[[StrictNodes]] **StrictNodes** **0**|**1**:: If StrictNodes is set to 1, Tor will treat the ExcludeNodes option as a requirement to follow for all the circuits you generate, even if doing so will break functionality for you. If StrictNodes is set to 0, Tor will @@ -757,7 +782,7 @@ The following options are useful only for clients (that is, if request, upload directory information, or download directory information. (Default: 0) -**FascistFirewall** **0**|**1**:: +[[FascistFirewall]] **FascistFirewall** **0**|**1**:: If 1, Tor will only create outgoing connections to ORs running on ports that your firewall allows (defaults to 80 and 443; see **FirewallPorts**). This will allow you to run Tor as a client behind a firewall with @@ -765,12 +790,12 @@ The following options are useful only for clients (that is, if a firewall. If you prefer more fine-grained control, use ReachableAddresses instead. -**FirewallPorts** __PORTS__:: +[[FirewallPorts]] **FirewallPorts** __PORTS__:: A list of ports that your firewall allows you to connect to. Only used when **FascistFirewall** is set. This option is deprecated; use ReachableAddresses instead. (Default: 80, 443) -**ReachableAddresses** __ADDR__[/__MASK__][:__PORT__]...:: +[[ReachableAddresses]] **ReachableAddresses** __ADDR__[/__MASK__][:__PORT__]...:: A comma-separated list of IP addresses and ports that your firewall allows you to connect to. The format is as for the addresses in ExitPolicy, except that "accept" is understood unless "reject" is explicitly provided. For @@ -779,14 +804,14 @@ The following options are useful only for clients (that is, if 99, rejects port 80 connections to net 18, and accepts connections to port 80 otherwise. (Default: \'accept \*:*'.) -**ReachableDirAddresses** __ADDR__[/__MASK__][:__PORT__]...:: +[[ReachableDirAddresses]] **ReachableDirAddresses** __ADDR__[/__MASK__][:__PORT__]...:: Like **ReachableAddresses**, a list of addresses and ports. Tor will obey these restrictions when fetching directory information, using standard HTTP GET requests. If not set explicitly then the value of **ReachableAddresses** is used. If **HTTPProxy** is set then these connections will go through that proxy. -**ReachableORAddresses** __ADDR__[/__MASK__][:__PORT__]...:: +[[ReachableORAddresses]] **ReachableORAddresses** __ADDR__[/__MASK__][:__PORT__]...:: Like **ReachableAddresses**, a list of addresses and ports. Tor will obey these restrictions when connecting to Onion Routers, using TLS/SSL. If not set explicitly then the value of **ReachableAddresses** is used. If @@ -799,7 +824,7 @@ The following options are useful only for clients (that is, if and some limit HTTP GET requests (which Tor uses for fetching directory information) to port 80. -**HidServAuth** __onion-address__ __auth-cookie__ [__service-name__]:: +[[HidServAuth]] **HidServAuth** __onion-address__ __auth-cookie__ [__service-name__]:: Client authorization for a hidden service. Valid onion addresses contain 16 characters in a-z2-7 plus ".onion", and valid auth cookies contain 22 characters in A-Za-z0-9+/. The service name is only used for internal @@ -809,7 +834,7 @@ The following options are useful only for clients (that is, if services can be configured to require authorization using the **HiddenServiceAuthorizeClient** option. -**CloseHSClientCircuitsImmediatelyOnTimeout** **0**|**1**:: +[[CloseHSClientCircuitsImmediatelyOnTimeout]] **CloseHSClientCircuitsImmediatelyOnTimeout** **0**|**1**:: If 1, Tor will close unfinished hidden service client circuits which have not moved closer to connecting to their destination hidden service when their internal state has not changed for the @@ -819,7 +844,7 @@ The following options are useful only for clients (that is, if another set of introduction and rendezvous circuits for the same destination hidden service will be launched. (Default: 0) -**CloseHSServiceRendCircuitsImmediatelyOnTimeout** **0**|**1**:: +[[CloseHSServiceRendCircuitsImmediatelyOnTimeout]] **CloseHSServiceRendCircuitsImmediatelyOnTimeout** **0**|**1**:: If 1, Tor will close unfinished hidden-service-side rendezvous circuits after the current circuit-build timeout. Otherwise, such circuits will be left open, in the hope that they will finish @@ -827,7 +852,7 @@ The following options are useful only for clients (that is, if rendezvous circuit for the same destination client will be launched. (Default: 0) -**LongLivedPorts** __PORTS__:: +[[LongLivedPorts]] **LongLivedPorts** __PORTS__:: A list of ports for services that tend to have long-running connections (e.g. chat and interactive shells). Circuits for streams that use these ports will contain only high-uptime nodes, to reduce the chance that a node @@ -836,7 +861,7 @@ The following options are useful only for clients (that is, if services whose virtual port is in this list. (Default: 21, 22, 706, 1863, 5050, 5190, 5222, 5223, 6523, 6667, 6697, 8300) -**MapAddress** __address__ __newaddress__:: +[[MapAddress]] **MapAddress** __address__ __newaddress__:: When a request for address arrives to Tor, it will transform to newaddress before processing it. For example, if you always want connections to www.example.com to exit via __torserver__ (where __torserver__ is the @@ -876,22 +901,22 @@ The following options are useful only for clients (that is, if 4. Using a wildcard to match only part of a string (as in *ample.com) is also invalid. -**NewCircuitPeriod** __NUM__:: +[[NewCircuitPeriod]] **NewCircuitPeriod** __NUM__:: Every NUM seconds consider whether to build a new circuit. (Default: 30 seconds) -**MaxCircuitDirtiness** __NUM__:: +[[MaxCircuitDirtiness]] **MaxCircuitDirtiness** __NUM__:: Feel free to reuse a circuit that was first used at most NUM seconds ago, but never attach a new stream to a circuit that is too old. For hidden services, this applies to the __last__ time a circuit was used, not the first. (Default: 10 minutes) -**MaxClientCircuitsPending** __NUM__:: +[[MaxClientCircuitsPending]] **MaxClientCircuitsPending** __NUM__:: Do not allow more than NUM circuits to be pending at a time for handling client streams. A circuit is pending if we have begun constructing it, but it has not yet been completely constructed. (Default: 32) -**NodeFamily** __node__,__node__,__...__:: +[[NodeFamily]] **NodeFamily** __node__,__node__,__...__:: The Tor servers, defined by their identity fingerprints or nicknames, constitute a "family" of similar or co-administered servers, so never use any two of them in the same circuit. Defining a NodeFamily is only needed @@ -899,12 +924,12 @@ The following options are useful only for clients (that is, if can be used multiple times. In addition to nodes, you can also list IP address and ranges and country codes in {curly braces}. -**EnforceDistinctSubnets** **0**|**1**:: +[[EnforceDistinctSubnets]] **EnforceDistinctSubnets** **0**|**1**:: If 1, Tor will not put two servers whose IP addresses are "too close" on the same circuit. Currently, two addresses are "too close" if they lie in the same /16 range. (Default: 1) -**SOCKSPort** \['address':]__port__|**auto** [_flags_] [_isolation flags_]:: +[[SOCKSPort]] **SOCKSPort** \['address':]__port__|**auto** [_flags_] [_isolation flags_]:: Open this port to listen for connections from SOCKS-speaking applications. Set this to 0 if you don't want to allow application connections via SOCKS. Set it to "auto" to have Tor pick a port for @@ -992,7 +1017,7 @@ The following options are useful only for clients (that is, if authentication" when IsolateSOCKSAuth is disabled, or when this option is set. -**SOCKSListenAddress** __IP__[:__PORT__]:: +[[SOCKSListenAddress]] **SOCKSListenAddress** __IP__[:__PORT__]:: Bind to this address to listen for connections from Socks-speaking applications. (Default: 127.0.0.1) You can also specify a port (e.g. 192.168.0.1:9100). This directive can be specified multiple times to bind @@ -1002,24 +1027,24 @@ The following options are useful only for clients (that is, if compatibility, SOCKSListenAddress is only allowed when SOCKSPort is just a port number.) -**SocksPolicy** __policy__,__policy__,__...__:: +[[SocksPolicy]] **SocksPolicy** __policy__,__policy__,__...__:: Set an entrance policy for this server, to limit who can connect to the SocksPort and DNSPort ports. The policies have the same form as exit policies below. -**SocksTimeout** __NUM__:: +[[SocksTimeout]] **SocksTimeout** __NUM__:: Let a socks connection wait NUM seconds handshaking, and NUM seconds unattached waiting for an appropriate circuit, before we fail it. (Default: 2 minutes) -**TokenBucketRefillInterval** __NUM__ [**msec**|**second**]:: +[[TokenBucketRefillInterval]] **TokenBucketRefillInterval** __NUM__ [**msec**|**second**]:: Set the refill interval of Tor's token bucket to NUM milliseconds. NUM must be between 1 and 1000, inclusive. Note that the configured bandwidth limits are still expressed in bytes per second: this option only affects the frequency with which Tor checks to see whether previously exhausted connections may read again. (Default: 100 msec) -**TrackHostExits** __host__,__.domain__,__...__:: +[[TrackHostExits]] **TrackHostExits** __host__,__.domain__,__...__:: For each value in the comma separated list, Tor will track recent connections to hosts that match this value and attempt to reuse the same exit node for each. If the value is prepended with a \'.\', it is treated as @@ -1031,72 +1056,74 @@ The following options are useful only for clients (that is, if user. However, most people who would wish to observe this will observe it through cookies or other protocol-specific means anyhow. -**TrackHostExitsExpire** __NUM__:: +[[TrackHostExitsExpire]] **TrackHostExitsExpire** __NUM__:: Since exit servers go up and down, it is desirable to expire the association between host and exit server after NUM seconds. The default is 1800 seconds (30 minutes). -**UpdateBridgesFromAuthority** **0**|**1**:: +[[UpdateBridgesFromAuthority]] **UpdateBridgesFromAuthority** **0**|**1**:: When set (along with UseBridges), Tor will try to fetch bridge descriptors from the configured bridge authorities when feasible. It will fall back to a direct request if the authority responds with a 404. (Default: 0) -**UseBridges** **0**|**1**:: +[[UseBridges]] **UseBridges** **0**|**1**:: When set, Tor will fetch descriptors for each bridge listed in the "Bridge" config lines, and use these relays as both entry guards and directory guards. (Default: 0) -**UseEntryGuards** **0**|**1**:: +[[UseEntryGuards]] **UseEntryGuards** **0**|**1**:: If this option is set to 1, we pick a few long-term entry servers, and try to stick with them. This is desirable because constantly changing servers increases the odds that an adversary who owns some servers will observe a fraction of your paths. (Default: 1) -**UseEntryGuardsAsDirectoryGuards** **0**|**1**:: - If this option is set to 1, we try to use our entry guards as directory +[[UseEntryGuardsAsDirectoryGuards]] **UseEntryGuardsAsDirectoryGuards** **0**|**1**:: + If this option is set to 1, and UseEntryGuards is also set to 1, + we try to use our entry guards as directory guards, and failing that, pick more nodes to act as our directory guards. This helps prevent an adversary from enumerating clients. It's only available for clients (non-relay, non-bridge) that aren't configured to download any non-default directory material. It doesn't currently do anything when we lack a live consensus. (Default: 1) -**NumEntryGuards** __NUM__:: +[[NumEntryGuards]] **NumEntryGuards** __NUM__:: If UseEntryGuards is set to 1, we will try to pick a total of NUM routers as long-term entries for our circuits. (Default: 3) -**NumDirectoryGuards** __NUM__:: +[[NumDirectoryGuards]] **NumDirectoryGuards** __NUM__:: If UseEntryGuardsAsDirectoryGuards is enabled, we try to make sure we - have at least NUM routers to use as directory guards. (Default: 3) + have at least NUM routers to use as directory guards. If this option + is set to 0, use the value from NumEntryGuards. (Default: 0) -**GuardLifetime** __N__ **days**|**weeks**|**months**:: +[[GuardLifetime]] **GuardLifetime** __N__ **days**|**weeks**|**months**:: If nonzero, and UseEntryGuards is set, minimum time to keep a guard before picking a new one. If zero, we use the GuardLifetime parameter from the consensus directory. No value here may be less than 1 month or greater than 5 years; out-of-range values are clamped. (Default: 0) -**SafeSocks** **0**|**1**:: +[[SafeSocks]] **SafeSocks** **0**|**1**:: When this option is enabled, Tor will reject application connections that use unsafe variants of the socks protocol -- ones that only provide an IP address, meaning the application is doing a DNS resolve first. Specifically, these are socks4 and socks5 when not doing remote DNS. (Default: 0) -**TestSocks** **0**|**1**:: +[[TestSocks]] **TestSocks** **0**|**1**:: When this option is enabled, Tor will make a notice-level log entry for each connection to the Socks port indicating whether the request used a safe socks protocol or an unsafe one (see above entry on SafeSocks). This helps to determine whether an application using Tor is possibly leaking DNS requests. (Default: 0) -**WarnUnsafeSocks** **0**|**1**:: +[[WarnUnsafeSocks]] **WarnUnsafeSocks** **0**|**1**:: When this option is enabled, Tor will warn whenever a request is received that only contains an IP address instead of a hostname. Allowing applications to do DNS resolves themselves is usually a bad idea and can leak your location to attackers. (Default: 1) -**VirtualAddrNetworkIPv4** __Address__/__bits__ + +[[VirtualAddrNetworkIPv4]] **VirtualAddrNetworkIPv4** __Address__/__bits__ + -**VirtualAddrNetworkIPv6** [__Address__]/__bits__:: +[[VirtualAddrNetworkIPv6]] **VirtualAddrNetworkIPv6** [__Address__]/__bits__:: When Tor needs to assign a virtual (unused) address because of a MAPADDRESS command from the controller or the AutomapHostsOnResolve feature, Tor picks an unassigned address from this range. (Defaults: @@ -1110,29 +1137,31 @@ The following options are useful only for clients (that is, if interface. For local use, no change to the default VirtualAddrNetwork setting is needed. -**AllowNonRFC953Hostnames** **0**|**1**:: +[[AllowNonRFC953Hostnames]] **AllowNonRFC953Hostnames** **0**|**1**:: When this option is disabled, Tor blocks hostnames containing illegal characters (like @ and :) rather than sending them to an exit node to be resolved. This helps trap accidental attempts to resolve URLs and so on. (Default: 0) -**AllowDotExit** **0**|**1**:: +[[AllowDotExit]] **AllowDotExit** **0**|**1**:: If enabled, we convert "www.google.com.foo.exit" addresses on the SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from the node "foo". Disabled by default since attacking websites and exit relays can use it to manipulate your path selection. (Default: 0) -**FastFirstHopPK** **0**|**1**:: +[[FastFirstHopPK]] **FastFirstHopPK** **0**|**1**|**auto**:: When this option is disabled, Tor uses the public key step for the first hop of creating circuits. Skipping it is generally safe since we have already used TLS to authenticate the relay and to establish forward-secure - keys. Turning this option off makes circuit building slower. + + keys. Turning this option off makes circuit building a little + slower. Setting this option to "auto" takes advice from the authorities + in the latest consensus about whether to use this feature. + + Note that Tor will always use the public key step for the first hop if it's operating as a relay, and it will never use the public key step if it - doesn't yet know the onion key of the first hop. (Default: 1) + doesn't yet know the onion key of the first hop. (Default: auto) -**TransPort** \['address':]__port__|**auto** [_isolation flags_]:: +[[TransPort]] **TransPort** \['address':]__port__|**auto** [_isolation flags_]:: Open this port to listen for transparent proxy connections. Set this to 0 if you don't want to allow transparent proxy connections. Set the port to "auto" to have Tor pick a port for you. This directive can be @@ -1145,7 +1174,7 @@ The following options are useful only for clients (that is, if default setting. You'll also want to set the TransListenAddress option for the network you'd like to proxy. (Default: 0) -**TransListenAddress** __IP__[:__PORT__]:: +[[TransListenAddress]] **TransListenAddress** __IP__[:__PORT__]:: Bind to this address to listen for transparent proxy connections. (Default: 127.0.0.1). This is useful for exporting a transparent proxy server to an entire network. (DEPRECATED: As of 0.2.3.x-alpha, you can @@ -1154,7 +1183,7 @@ The following options are useful only for clients (that is, if compatibility, TransListenAddress is only allowed when TransPort is just a port number.) -**NATDPort** \['address':]__port__|**auto** [_isolation flags_]:: +[[NATDPort]] **NATDPort** \['address':]__port__|**auto** [_isolation flags_]:: Open this port to listen for connections from old versions of ipfw (as included in old versions of FreeBSD, etc) using the NATD protocol. Use 0 if you don't want to allow NATD connections. Set the port @@ -1164,25 +1193,25 @@ The following options are useful only for clients (that is, if + This option is only for people who cannot use TransPort. (Default: 0) -**NATDListenAddress** __IP__[:__PORT__]:: +[[NATDListenAddress]] **NATDListenAddress** __IP__[:__PORT__]:: Bind to this address to listen for NATD connections. (DEPRECATED: As of 0.2.3.x-alpha, you can now use multiple NATDPort entries, and provide addresses for NATDPort entries, so NATDListenAddress no longer has a purpose. For backward compatibility, NATDListenAddress is only allowed when NATDPort is just a port number.) -**AutomapHostsOnResolve** **0**|**1**:: +[[AutomapHostsOnResolve]] **AutomapHostsOnResolve** **0**|**1**:: When this option is enabled, and we get a request to resolve an address that ends with one of the suffixes in **AutomapHostsSuffixes**, we map an unused virtual address to that address, and return the new virtual address. This is handy for making ".onion" addresses work with applications that resolve an address and then connect to it. (Default: 0) -**AutomapHostsSuffixes** __SUFFIX__,__SUFFIX__,__...__:: +[[AutomapHostsSuffixes]] **AutomapHostsSuffixes** __SUFFIX__,__SUFFIX__,__...__:: A comma-separated list of suffixes to use with **AutomapHostsOnResolve**. The "." suffix is equivalent to "all addresses." (Default: .exit,.onion). -**DNSPort** \['address':]__port__|**auto** [_isolation flags_]:: +[[DNSPort]] **DNSPort** \['address':]__port__|**auto** [_isolation flags_]:: If non-zero, open this port to listen for UDP DNS requests, and resolve them anonymously. This port only handles A, AAAA, and PTR requests---it doesn't handle arbitrary DNS request types. Set the port to "auto" to @@ -1191,47 +1220,47 @@ The following options are useful only for clients (that is, if addresses/ports. See SOCKSPort for an explanation of isolation flags. (Default: 0) -**DNSListenAddress** __IP__[:__PORT__]:: +[[DNSListenAddress]] **DNSListenAddress** __IP__[:__PORT__]:: Bind to this address to listen for DNS connections. (DEPRECATED: As of 0.2.3.x-alpha, you can now use multiple DNSPort entries, and provide addresses for DNSPort entries, so DNSListenAddress no longer has a purpose. For backward compatibility, DNSListenAddress is only allowed when DNSPort is just a port number.) -**ClientDNSRejectInternalAddresses** **0**|**1**:: +[[ClientDNSRejectInternalAddresses]] **ClientDNSRejectInternalAddresses** **0**|**1**:: If true, Tor does not believe any anonymously retrieved DNS answer that tells it that an address resolves to an internal address (like 127.0.0.1 or 192.168.0.1). This option prevents certain browser-based attacks; don't turn it off unless you know what you're doing. (Default: 1) -**ClientRejectInternalAddresses** **0**|**1**:: +[[ClientRejectInternalAddresses]] **ClientRejectInternalAddresses** **0**|**1**:: If true, Tor does not try to fulfill requests to connect to an internal address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is specifically requested__ (for example, via a .exit hostname, or a controller request). (Default: 1) -**DownloadExtraInfo** **0**|**1**:: +[[DownloadExtraInfo]] **DownloadExtraInfo** **0**|**1**:: If true, Tor downloads and caches "extra-info" documents. These documents contain information about servers other than the information in their regular router descriptors. Tor does not use this information for anything itself; to save bandwidth, leave this option turned off. (Default: 0) -**WarnPlaintextPorts** __port__,__port__,__...__:: +[[WarnPlaintextPorts]] **WarnPlaintextPorts** __port__,__port__,__...__:: Tells Tor to issue a warnings whenever the user tries to make an anonymous connection to one of these ports. This option is designed to alert users to services that risk sending passwords in the clear. (Default: 23,109,110,143) -**RejectPlaintextPorts** __port__,__port__,__...__:: +[[RejectPlaintextPorts]] **RejectPlaintextPorts** __port__,__port__,__...__:: Like WarnPlaintextPorts, but instead of warning about risky port uses, Tor will instead refuse to make the connection. (Default: None) -**AllowSingleHopCircuits** **0**|**1**:: +[[AllowSingleHopCircuits]] **AllowSingleHopCircuits** **0**|**1**:: When this option is set, the attached Tor controller can use relays that have the **AllowSingleHopExits** option turned on to build one-hop Tor connections. (Default: 0) -**OptimisticData** **0**|**1**|**auto**:: +[[OptimisticData]] **OptimisticData** **0**|**1**|**auto**:: When this option is set, and Tor is using an exit node that supports the feature, it will try optimistically to send data to the exit node without waiting for the exit node to report whether the connection @@ -1240,7 +1269,7 @@ The following options are useful only for clients (that is, if Tor will look at the UseOptimisticData parameter in the networkstatus. (Default: auto) -**Tor2webMode** **0**|**1**:: +[[Tor2webMode]] **Tor2webMode** **0**|**1**:: When this option is set, Tor connects to hidden services **non-anonymously**. This option also disables client connections to non-hidden-service hostnames through Tor. It **must only** be used when @@ -1248,7 +1277,7 @@ The following options are useful only for clients (that is, if To enable this option the compile time flag --enable-tor2webmode must be specified. (Default: 0) -**UseMicrodescriptors** **0**|**1**|**auto**:: +[[UseMicrodescriptors]] **UseMicrodescriptors** **0**|**1**|**auto**:: Microdescriptors are a smaller version of the information that Tor needs in order to build its circuits. Using microdescriptors makes Tor clients download less directory information, thus saving bandwidth. Directory @@ -1257,7 +1286,7 @@ The following options are useful only for clients (that is, if "auto" (recommended) then it is on for all clients that do not set FetchUselessDescriptors. (Default: auto) -**UseNTorHandshake** **0**|**1**|**auto**:: +[[UseNTorHandshake]] **UseNTorHandshake** **0**|**1**|**auto**:: The "ntor" circuit-creation handshake is faster and (we think) more secure than the original ("TAP") circuit handshake, but starting to use it too early might make your client stand out. If this option is 0, your @@ -1267,17 +1296,17 @@ The following options are useful only for clients (that is, if will use the ntor handshake once enough directory authorities recommend it. (Default: 1) -**PathBiasCircThreshold** __NUM__ + +[[PathBiasCircThreshold]] **PathBiasCircThreshold** __NUM__ + -**PathBiasNoticeRate** __NUM__ + +[[PathBiasNoticeRate]] **PathBiasNoticeRate** __NUM__ + -**PathBiasWarnRate** __NUM__ + +[[PathBiasWarnRate]] **PathBiasWarnRate** __NUM__ + -**PathBiasExtremeRate** __NUM__ + +[[PathBiasExtremeRate]] **PathBiasExtremeRate** __NUM__ + -**PathBiasDropGuards** __NUM__ + +[[PathBiasDropGuards]] **PathBiasDropGuards** __NUM__ + -**PathBiasScaleThreshold** __NUM__:: +[[PathBiasScaleThreshold]] **PathBiasScaleThreshold** __NUM__:: These options override the default behavior of Tor's (**currently experimental**) path bias detection algorithm. To try to find broken or misbehaving guard nodes, Tor looks for nodes where more than a certain @@ -1299,13 +1328,13 @@ The following options are useful only for clients (that is, if If no defaults are available there, these options default to 150, .70, .50, .30, 0, and 300 respectively. -**PathBiasUseThreshold** __NUM__ + +[[PathBiasUseThreshold]] **PathBiasUseThreshold** __NUM__ + -**PathBiasNoticeUseRate** __NUM__ + +[[PathBiasNoticeUseRate]] **PathBiasNoticeUseRate** __NUM__ + -**PathBiasExtremeUseRate** __NUM__ + +[[PathBiasExtremeUseRate]] **PathBiasExtremeUseRate** __NUM__ + -**PathBiasScaleUseThreshold** __NUM__:: +[[PathBiasScaleUseThreshold]] **PathBiasScaleUseThreshold** __NUM__:: Similar to the above options, these options override the default behavior of Tor's (**currently experimental**) path use bias detection algorithm. + @@ -1321,19 +1350,19 @@ The following options are useful only for clients (that is, if If no defaults are available there, these options default to 20, .80, .60, and 100, respectively. -**ClientUseIPv6** **0**|**1**:: +[[ClientUseIPv6]] **ClientUseIPv6** **0**|**1**:: If this option is set to 1, Tor might connect to entry nodes over IPv6. Note that clients configured with an IPv6 address in a **Bridge** line will try connecting over IPv6 even if **ClientUseIPv6** is set to 0. (Default: 0) -**ClientPreferIPv6ORPort** **0**|**1**:: +[[ClientPreferIPv6ORPort]] **ClientPreferIPv6ORPort** **0**|**1**:: If this option is set to 1, Tor prefers an OR port with an IPv6 address over one with IPv4 if a given entry node has both. Other things may influence the choice. This option breaks a tie to the favor of IPv6. (Default: 0) -**PathsNeededToBuildCircuits** __NUM__:: +[[PathsNeededToBuildCircuits]] **PathsNeededToBuildCircuits** __NUM__:: Tor clients don't build circuits for user traffic until they know about enough of the network so that they could potentially construct enough of the possible paths through the network. If this option @@ -1345,6 +1374,15 @@ The following options are useful only for clients (that is, if Tor will use a default value chosen by the directory authorities. (Default: -1.) +[[Support022HiddenServices]] **Support022HiddenServices** **0**|**1**|**auto**:: + Tor hidden services running versions before 0.2.3.x required clients to + send timestamps, which can potentially be used to distinguish clients + whose view of the current time is skewed. If this option is set to 0, we + do not send this timestamp, and hidden services on obsolete Tor versions + will not work. If this option is set to 1, we send the timestamp. If + this optoin is "auto", we take a recommendation from the latest consensus + document. (Default: auto) + SERVER OPTIONS -------------- @@ -1352,7 +1390,7 @@ SERVER OPTIONS The following options are useful only for servers (that is, if ORPort is non-zero): -**Address** __address__:: +[[Address]] **Address** __address__:: The IP address or fully qualified domain name of this server (e.g. moria.mit.edu). You can leave this unset, and Tor will guess your IP address. This IP address is the one used to tell clients and other @@ -1360,32 +1398,36 @@ is non-zero): Tor client binds to. To bind to a different address, use the *ListenAddress and OutboundBindAddress options. -**AllowSingleHopExits** **0**|**1**:: +[[AllowSingleHopExits]] **AllowSingleHopExits** **0**|**1**:: This option controls whether clients can use this server as a single hop proxy. If set to 1, clients can use this server as an exit even if it is the only hop in the circuit. Note that most clients will refuse to use servers that set this option, since most clients have ExcludeSingleHopRelays set. (Default: 0) -**AssumeReachable** **0**|**1**:: +[[AssumeReachable]] **AssumeReachable** **0**|**1**:: This option is used when bootstrapping a new Tor network. If set to 1, don't do self-reachability testing; just upload your server descriptor immediately. If **AuthoritativeDirectory** is also set, this option instructs the dirserver to bypass remote reachability testing too and list all connected servers as running. -**BridgeRelay** **0**|**1**:: +[[BridgeRelay]] **BridgeRelay** **0**|**1**:: Sets the relay to act as a "bridge" with respect to relaying connections from bridge users to the Tor network. It mainly causes Tor to publish a server descriptor to the bridge database, rather than publishing a relay descriptor to the public directory authorities. -**ContactInfo** __email_address__:: - Administrative contact information for server. This line might get picked - up by spam harvesters, so you may want to obscure the fact that it's an - email address. +[[ContactInfo]] **ContactInfo** __email_address__:: + Administrative contact information for this relay or bridge. This line + can be used to contact you if your relay or bridge is misconfigured or + something else goes wrong. Note that we archive and publish all + descriptors containing these lines and that Google indexes them, so + spammers might also collect them. You may want to obscure the fact + that it's an email address and/or generate a new address for this + purpose. -**ExitPolicy** __policy__,__policy__,__...__:: +[[ExitPolicy]] **ExitPolicy** __policy__,__policy__,__...__:: Set an exit policy for this server. Each policy is of the form "**accept**|**reject** __ADDR__[/__MASK__][:__PORT__]". If /__MASK__ is omitted then this policy just applies to the host given. Instead of giving @@ -1430,20 +1472,20 @@ is non-zero): reject *:6881-6999 accept *:* -**ExitPolicyRejectPrivate** **0**|**1**:: +[[ExitPolicyRejectPrivate]] **ExitPolicyRejectPrivate** **0**|**1**:: Reject all private (local) networks, along with your own public IP address, at the beginning of your exit policy. See above entry on ExitPolicy. (Default: 1) -**IPv6Exit** **0**|**1**:: +[[IPv6Exit]] **IPv6Exit** **0**|**1**:: If set, and we are an exit node, allow clients to use us for IPv6 traffic. (Default: 0) -**MaxOnionQueueDelay** __NUM__ [**msec**|**second**]:: +[[MaxOnionQueueDelay]] **MaxOnionQueueDelay** __NUM__ [**msec**|**second**]:: If we have more onionskins queued for processing than we can process in this amount of time, reject new ones. (Default: 1750 msec) -**MyFamily** __node__,__node__,__...__:: +[[MyFamily]] **MyFamily** __node__,__node__,__...__:: Declare that this Tor server is controlled or administered by a group or organization identical or similar to that of the other servers, defined by their identity fingerprints or nicknames. When two servers both declare @@ -1455,16 +1497,16 @@ is non-zero): When listing a node, it's better to list it by fingerprint than by nickname: fingerprints are more reliable. -**Nickname** __name__:: +[[Nickname]] **Nickname** __name__:: Set the server's nickname to \'name'. Nicknames must be between 1 and 19 characters inclusive, and must contain only the characters [a-zA-Z0-9]. -**NumCPUs** __num__:: +[[NumCPUs]] **NumCPUs** __num__:: How many processes to use at once for decrypting onionskins and other parallelizable operations. If this is set to 0, Tor will try to detect how many CPUs you have, defaulting to 1 if it can't tell. (Default: 0) -**ORPort** \['address':]__PORT__|**auto** [_flags_]:: +[[ORPort]] **ORPort** \['address':]__PORT__|**auto** [_flags_]:: Advertise this port to listen for connections from Tor clients and servers. This option is required to be a Tor server. Set it to "auto" to have Tor pick a port for you. Set it to 0 to not @@ -1491,7 +1533,7 @@ is non-zero): For obvious reasons, NoAdvertise and NoListen are mutually exclusive, and IPv4Only and IPv6Only are mutually exclusive. -**ORListenAddress** __IP__[:__PORT__]:: +[[ORListenAddress]] **ORListenAddress** __IP__[:__PORT__]:: Bind to this IP address to listen for connections from Tor clients and servers. If you specify a port, bind to this port rather than the one specified in ORPort. (Default: 0.0.0.0) This directive can be specified @@ -1500,19 +1542,19 @@ is non-zero): This option is deprecated; you can get the same behavior with ORPort now that it supports NoAdvertise and explicit addresses. -**PortForwarding** **0**|**1**:: +[[PortForwarding]] **PortForwarding** **0**|**1**:: Attempt to automatically forward the DirPort and ORPort on a NAT router connecting this Tor server to the Internet. If set, Tor will try both NAT-PMP (common on Apple routers) and UPnP (common on routers from other manufacturers). (Default: 0) -**PortForwardingHelper** __filename__|__pathname__:: +[[PortForwardingHelper]] **PortForwardingHelper** __filename__|__pathname__:: If PortForwarding is set, use this executable to configure the forwarding. If set to a filename, the system path will be searched for the executable. If set to a path, only the specified path will be executed. (Default: tor-fw-helper) -**PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**:: +[[PublishServerDescriptor]] **PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**:: This option specifies which descriptors Tor will publish when acting as a relay. You can choose multiple arguments, separated by commas. @@ -1525,24 +1567,24 @@ is non-zero): which means "if running as a server, publish the appropriate descriptors to the authorities". -**ShutdownWaitLength** __NUM__:: +[[ShutdownWaitLength]] **ShutdownWaitLength** __NUM__:: When we get a SIGINT and we're a server, we begin shutting down: we close listeners and start refusing new circuits. After **NUM** seconds, we exit. If we get a second SIGINT, we exit immediately. (Default: 30 seconds) -**SSLKeyLifetime** __N__ **minutes**|**hours**|**days**|**weeks**:: +[[SSLKeyLifetime]] **SSLKeyLifetime** __N__ **minutes**|**hours**|**days**|**weeks**:: When creating a link certificate for our outermost SSL handshake, set its lifetime to this amount of time. If set to 0, Tor will choose some reasonable random defaults. (Default: 0) -**HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**:: +[[HeartbeatPeriod]] **HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**:: Log a heartbeat message every **HeartbeatPeriod** seconds. This is - a log level __info__ message, designed to let you know your Tor + a log level __notice__ message, designed to let you know your Tor server is still alive and doing useful things. Settings this to 0 will disable the heartbeat. (Default: 6 hours) -**AccountingMax** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**TBytes**:: +[[AccountingMax]] **AccountingMax** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**|**TBytes**:: Never send more than the specified number of bytes in a given accounting period, or receive more than that number in the period. For example, with AccountingMax set to 1 GByte, a server could send 900 MBytes and @@ -1557,7 +1599,7 @@ is non-zero): collection of fast servers that are up some of the time, which is more useful than a set of slow servers that are always "available". -**AccountingStart** **day**|**week**|**month** [__day__] __HH:MM__:: +[[AccountingStart]] **AccountingStart** **day**|**week**|**month** [__day__] __HH:MM__:: Specify how long accounting periods last. If **month** is given, each accounting period runs from the time __HH:MM__ on the __dayth__ day of one month to the same day and time of the next. (The day must be between 1 and @@ -1568,61 +1610,61 @@ is non-zero): the next day. All times are local, and given in 24-hour time. (Default: "month 1 0:00") -**RefuseUnknownExits** **0**|**1**|**auto**:: +[[RefuseUnknownExits]] **RefuseUnknownExits** **0**|**1**|**auto**:: Prevent nodes that don't appear in the consensus from exiting using this relay. If the option is 1, we always block exit attempts from such nodes; if it's 0, we never do, and if the option is "auto", then we do whatever the authorities suggest in the consensus (and block if the consensus is quiet on the issue). (Default: auto) -**ServerDNSResolvConfFile** __filename__:: +[[ServerDNSResolvConfFile]] **ServerDNSResolvConfFile** __filename__:: Overrides the default DNS configuration with the configuration in __filename__. The file format is the same as the standard Unix "**resolv.conf**" file (7). This option, like all other ServerDNS options, only affects name lookups that your server does on behalf of clients. (Defaults to use the system DNS configuration.) -**ServerDNSAllowBrokenConfig** **0**|**1**:: +[[ServerDNSAllowBrokenConfig]] **ServerDNSAllowBrokenConfig** **0**|**1**:: If this option is false, Tor exits immediately if there are problems parsing the system DNS configuration or connecting to nameservers. Otherwise, Tor continues to periodically retry the system nameservers until it eventually succeeds. (Default: 1) -**ServerDNSSearchDomains** **0**|**1**:: +[[ServerDNSSearchDomains]] **ServerDNSSearchDomains** **0**|**1**:: If set to 1, then we will search for addresses in the local search domain. For example, if this system is configured to believe it is in "example.com", and a client tries to connect to "www", the client will be connected to "www.example.com". This option only affects name lookups that your server does on behalf of clients. (Default: 0) -**ServerDNSDetectHijacking** **0**|**1**:: +[[ServerDNSDetectHijacking]] **ServerDNSDetectHijacking** **0**|**1**:: When this option is set to 1, we will test periodically to determine whether our local nameservers have been configured to hijack failing DNS requests (usually to an advertising site). If they are, we will attempt to correct this. This option only affects name lookups that your server does on behalf of clients. (Default: 1) -**ServerDNSTestAddresses** __address__,__address__,__...__:: +[[ServerDNSTestAddresses]] **ServerDNSTestAddresses** __address__,__address__,__...__:: When we're detecting DNS hijacking, make sure that these __valid__ addresses aren't getting redirected. If they are, then our DNS is completely useless, and we'll reset our exit policy to "reject *:*". This option only affects name lookups that your server does on behalf of clients. (Default: "www.google.com, www.mit.edu, www.yahoo.com, www.slashdot.org") -**ServerDNSAllowNonRFC953Hostnames** **0**|**1**:: +[[ServerDNSAllowNonRFC953Hostnames]] **ServerDNSAllowNonRFC953Hostnames** **0**|**1**:: When this option is disabled, Tor does not try to resolve hostnames containing illegal characters (like @ and :) rather than sending them to an exit node to be resolved. This helps trap accidental attempts to resolve URLs and so on. This option only affects name lookups that your server does on behalf of clients. (Default: 0) -**BridgeRecordUsageByCountry** **0**|**1**:: +[[BridgeRecordUsageByCountry]] **BridgeRecordUsageByCountry** **0**|**1**:: When this option is enabled and BridgeRelay is also enabled, and we have GeoIP data, Tor keeps a keep a per-country count of how many client addresses have contacted it so that it can help the bridge authority guess which countries have blocked access to it. (Default: 1) -**ServerDNSRandomizeCase** **0**|**1**:: +[[ServerDNSRandomizeCase]] **ServerDNSRandomizeCase** **0**|**1**:: When this option is set, Tor sets the case of each character randomly in outgoing DNS requests, and makes sure that the case matches in DNS replies. This so-called "0x20 hack" helps resist some types of DNS poisoning attack. @@ -1630,56 +1672,56 @@ is non-zero): 0x20-Bit Encoding". This option only affects name lookups that your server does on behalf of clients. (Default: 1) -**GeoIPFile** __filename__:: +[[GeoIPFile]] **GeoIPFile** __filename__:: A filename containing IPv4 GeoIP data, for use with by-country statistics. -**GeoIPv6File** __filename__:: +[[GeoIPv6File]] **GeoIPv6File** __filename__:: A filename containing IPv6 GeoIP data, for use with by-country statistics. -**TLSECGroup** **P224**|**P256**:: +[[TLSECGroup]] **TLSECGroup** **P224**|**P256**:: What EC group should we try to use for incoming TLS connections? P224 is faster, but makes us stand out more. Has no effect if we're a client, or if our OpenSSL version lacks support for ECDHE. - (Default: P224 for public servers; P256 for bridges.) + (Default: P256) -**CellStatistics** **0**|**1**:: +[[CellStatistics]] **CellStatistics** **0**|**1**:: When this option is enabled, Tor writes statistics on the mean time that cells spend in circuit queues to disk every 24 hours. (Default: 0) -**DirReqStatistics** **0**|**1**:: +[[DirReqStatistics]] **DirReqStatistics** **0**|**1**:: When this option is enabled, a Tor directory writes statistics on the number and response time of network status requests to disk every 24 hours. (Default: 1) -**EntryStatistics** **0**|**1**:: +[[EntryStatistics]] **EntryStatistics** **0**|**1**:: When this option is enabled, Tor writes statistics on the number of directly connecting clients to disk every 24 hours. (Default: 0) -**ExitPortStatistics** **0**|**1**:: +[[ExitPortStatistics]] **ExitPortStatistics** **0**|**1**:: When this option is enabled, Tor writes statistics on the number of relayed bytes and opened stream per exit port to disk every 24 hours. (Default: 0) -**ConnDirectionStatistics** **0**|**1**:: +[[ConnDirectionStatistics]] **ConnDirectionStatistics** **0**|**1**:: When this option is enabled, Tor writes statistics on the bidirectional use of connections to disk every 24 hours. (Default: 0) -**ExtraInfoStatistics** **0**|**1**:: +[[ExtraInfoStatistics]] **ExtraInfoStatistics** **0**|**1**:: When this option is enabled, Tor includes previously gathered statistics in its extra-info documents that it uploads to the directory authorities. (Default: 1) -**ExtendAllowPrivateAddresses** **0**|**1**:: +[[ExtendAllowPrivateAddresses]] **ExtendAllowPrivateAddresses** **0**|**1**:: When this option is enabled, Tor routers allow EXTEND request to localhost, RFC1918 addresses, and so on. This can create security issues; you should probably leave it off. (Default: 0) -**MaxMemInCellQueues** __N__ **bytes**|**KB**|**MB**|**GB**:: +[[MaxMemInCellQueues]] **MaxMemInCellQueues** __N__ **bytes**|**KB**|**MB**|**GB**:: This option configures a threshold above which Tor will assume that it needs to stop queueing cells because it's about to run out of memory. If it hits this threshold, it will begin killing circuits until it has recovered at least 10% of this memory. Do not set this option too low, or your relay may be unreliable under load. This option only - effects circuit queues, so the actual process size will be larger than + affects circuit queues, so the actual process size will be larger than this. (Default: 8GB) DIRECTORY SERVER OPTIONS @@ -1688,7 +1730,7 @@ DIRECTORY SERVER OPTIONS The following options are useful only for directory servers (that is, if DirPort is non-zero): -**AuthoritativeDirectory** **0**|**1**:: +[[AuthoritativeDirectory]] **AuthoritativeDirectory** **0**|**1**:: When this option is set to 1, Tor operates as an authoritative directory server. Instead of caching the directory, it generates its own list of good servers, signs it, and sends that to the clients. Unless the clients @@ -1696,37 +1738,37 @@ if DirPort is non-zero): to set this option. Please coordinate with the other admins at tor-ops@torproject.org if you think you should be a directory. -**DirPortFrontPage** __FILENAME__:: +[[DirPortFrontPage]] **DirPortFrontPage** __FILENAME__:: When this option is set, it takes an HTML file and publishes it as "/" on the DirPort. Now relay operators can provide a disclaimer without needing to set up a separate webserver. There's a sample disclaimer in contrib/tor-exit-notice.html. -**V1AuthoritativeDirectory** **0**|**1**:: +[[V1AuthoritativeDirectory]] **V1AuthoritativeDirectory** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor generates version 1 directory and running-routers documents (for legacy Tor clients up to 0.1.0.x). -**V2AuthoritativeDirectory** **0**|**1**:: +[[V2AuthoritativeDirectory]] **V2AuthoritativeDirectory** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor generates version 2 network statuses and serves descriptors, etc as described in doc/spec/dir-spec-v2.txt (for Tor clients and servers running 0.1.1.x and 0.1.2.x). -**V3AuthoritativeDirectory** **0**|**1**:: +[[V3AuthoritativeDirectory]] **V3AuthoritativeDirectory** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor generates version 3 network statuses and serves descriptors, etc as described in doc/spec/dir-spec.txt (for Tor clients and servers running at least 0.2.0.x). -**VersioningAuthoritativeDirectory** **0**|**1**:: +[[VersioningAuthoritativeDirectory]] **VersioningAuthoritativeDirectory** **0**|**1**:: When this option is set to 1, Tor adds information on which versions of Tor are still believed safe for use to the published directory. Each version 1 authority is automatically a versioning authority; version 2 authorities provide this service optionally. See **RecommendedVersions**, **RecommendedClientVersions**, and **RecommendedServerVersions**. -**NamingAuthoritativeDirectory** **0**|**1**:: +[[NamingAuthoritativeDirectory]] **NamingAuthoritativeDirectory** **0**|**1**:: When this option is set to 1, then the server advertises that it has opinions about nickname-to-fingerprint bindings. It will include these opinions in its published network-status pages, by listing servers with @@ -1735,33 +1777,33 @@ if DirPort is non-zero): accept or publish descriptors that contradict a registered binding. See **approved-routers** in the **FILES** section below. -**HSAuthoritativeDir** **0**|**1**:: +[[HSAuthoritativeDir]] **HSAuthoritativeDir** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor also accepts and serves v0 hidden service descriptors, which are produced and used by Tor 0.2.1.x and older. (Default: 0) -**HidServDirectoryV2** **0**|**1**:: +[[HidServDirectoryV2]] **HidServDirectoryV2** **0**|**1**:: When this option is set, Tor accepts and serves v2 hidden service descriptors. Setting DirPort is not required for this, because clients connect via the ORPort by default. (Default: 1) -**BridgeAuthoritativeDir** **0**|**1**:: +[[BridgeAuthoritativeDir]] **BridgeAuthoritativeDir** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor accepts and serves router descriptors, but it caches and serves the main networkstatus documents rather than generating its own. (Default: 0) -**MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: +[[MinUptimeHidServDirectoryV2]] **MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: Minimum uptime of a v2 hidden service directory to be accepted as such by authoritative directories. (Default: 25 hours) -**DirPort** \['address':]__PORT__|**auto** [_flags_]:: +[[DirPort]] **DirPort** \['address':]__PORT__|**auto** [_flags_]:: If this option is nonzero, advertise the directory service on this port. Set it to "auto" to have Tor pick a port for you. This option can occur more than once. (Default: 0) + The same flags are supported here as are supported by ORPort. -**DirListenAddress** __IP__[:__PORT__]:: +[[DirListenAddress]] **DirListenAddress** __IP__[:__PORT__]:: Bind the directory service to this address. If you specify a port, bind to this port rather than the one specified in DirPort. (Default: 0.0.0.0) This directive can be specified multiple times to bind to multiple @@ -1770,11 +1812,11 @@ if DirPort is non-zero): This option is deprecated; you can get the same behavior with DirPort now that it supports NoAdvertise and explicit addresses. -**DirPolicy** __policy__,__policy__,__...__:: +[[DirPolicy]] **DirPolicy** __policy__,__policy__,__...__:: Set an entrance policy for this server, to limit who can connect to the directory ports. The policies have the same form as exit policies above. -**FetchV2Networkstatus** **0**|**1**:: +[[FetchV2Networkstatus]] **FetchV2Networkstatus** **0**|**1**:: If set, we try to fetch the (obsolete, unused) version 2 network status consensus documents from the directory authorities. No currently supported Tor version uses them. (Default: 0) @@ -1783,108 +1825,108 @@ if DirPort is non-zero): DIRECTORY AUTHORITY SERVER OPTIONS ---------------------------------- -**RecommendedVersions** __STRING__:: +[[RecommendedVersions]] **RecommendedVersions** __STRING__:: STRING is a comma-separated list of Tor versions currently believed to be safe. The list is included in each directory, and nodes which pull down the directory learn whether they need to upgrade. This option can appear multiple times: the values from multiple lines are spliced together. When this is set then **VersioningAuthoritativeDirectory** should be set too. -**RecommendedClientVersions** __STRING__:: +[[RecommendedClientVersions]] **RecommendedClientVersions** __STRING__:: STRING is a comma-separated list of Tor versions currently believed to be safe for clients to use. This information is included in version 2 directories. If this is not set then the value of **RecommendedVersions** is used. When this is set then **VersioningAuthoritativeDirectory** should be set too. -**RecommendedServerVersions** __STRING__:: +[[RecommendedServerVersions]] **RecommendedServerVersions** __STRING__:: STRING is a comma-separated list of Tor versions currently believed to be safe for servers to use. This information is included in version 2 directories. If this is not set then the value of **RecommendedVersions** is used. When this is set then **VersioningAuthoritativeDirectory** should be set too. -**ConsensusParams** __STRING__:: +[[ConsensusParams]] **ConsensusParams** __STRING__:: STRING is a space-separated list of key=value pairs that Tor will include in the "params" line of its networkstatus vote. -**DirAllowPrivateAddresses** **0**|**1**:: +[[DirAllowPrivateAddresses]] **DirAllowPrivateAddresses** **0**|**1**:: If set to 1, Tor will accept router descriptors with arbitrary "Address" elements. Otherwise, if the address is not an IP address or is a private IP address, it will reject the router descriptor. (Default: 0) -**AuthDirBadDir** __AddressPattern...__:: +[[AuthDirBadDir]] **AuthDirBadDir** __AddressPattern...__:: Authoritative directories only. A set of address patterns for servers that will be listed as bad directories in any network status document this authority publishes, if **AuthDirListBadDirs** is set. -**AuthDirBadExit** __AddressPattern...__:: +[[AuthDirBadExit]] **AuthDirBadExit** __AddressPattern...__:: Authoritative directories only. A set of address patterns for servers that will be listed as bad exits in any network status document this authority publishes, if **AuthDirListBadExits** is set. -**AuthDirInvalid** __AddressPattern...__:: +[[AuthDirInvalid]] **AuthDirInvalid** __AddressPattern...__:: Authoritative directories only. A set of address patterns for servers that will never be listed as "valid" in any network status document that this authority publishes. -**AuthDirReject** __AddressPattern__...:: +[[AuthDirReject]] **AuthDirReject** __AddressPattern__...:: Authoritative directories only. A set of address patterns for servers that will never be listed at all in any network status document that this authority publishes, or accepted as an OR address in any descriptor submitted for publication by this authority. -**AuthDirBadDirCCs** __CC__,... + +[[AuthDirBadDirCCs]] **AuthDirBadDirCCs** __CC__,... + -**AuthDirBadExitCCs** __CC__,... + +[[AuthDirBadExitCCs]] **AuthDirBadExitCCs** __CC__,... + -**AuthDirInvalidCCs** __CC__,... + +[[AuthDirInvalidCCs]] **AuthDirInvalidCCs** __CC__,... + -**AuthDirRejectCCs** __CC__,...:: +[[AuthDirRejectCCs]] **AuthDirRejectCCs** __CC__,...:: Authoritative directories only. These options contain a comma-separated list of country codes such that any server in one of those country codes will be marked as a bad directory/bad exit/invalid for use, or rejected entirely. -**AuthDirListBadDirs** **0**|**1**:: +[[AuthDirListBadDirs]] **AuthDirListBadDirs** **0**|**1**:: Authoritative directories only. If set to 1, this directory has some opinion about which nodes are unsuitable as directory caches. (Do not set this to 1 unless you plan to list non-functioning directories as bad; otherwise, you are effectively voting in favor of every declared directory.) -**AuthDirListBadExits** **0**|**1**:: +[[AuthDirListBadExits]] **AuthDirListBadExits** **0**|**1**:: Authoritative directories only. If set to 1, this directory has some opinion about which nodes are unsuitable as exit nodes. (Do not set this to 1 unless you plan to list non-functioning exits as bad; otherwise, you are effectively voting in favor of every declared exit as an exit.) -**AuthDirRejectUnlisted** **0**|**1**:: +[[AuthDirRejectUnlisted]] **AuthDirRejectUnlisted** **0**|**1**:: Authoritative directories only. If set to 1, the directory server rejects all uploaded server descriptors that aren't explicitly listed in the fingerprints file. This acts as a "panic button" if we get hit with a Sybil attack. (Default: 0) -**AuthDirMaxServersPerAddr** __NUM__:: +[[AuthDirMaxServersPerAddr]] **AuthDirMaxServersPerAddr** __NUM__:: Authoritative directories only. The maximum number of servers that we will list as acceptable on a single IP address. Set this to "0" for "no limit". (Default: 2) -**AuthDirMaxServersPerAuthAddr** __NUM__:: +[[AuthDirMaxServersPerAuthAddr]] **AuthDirMaxServersPerAuthAddr** __NUM__:: Authoritative directories only. Like AuthDirMaxServersPerAddr, but applies to addresses shared with directory authorities. (Default: 5) -**AuthDirFastGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[AuthDirFastGuarantee]] **AuthDirFastGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: Authoritative directories only. If non-zero, always vote the Fast flag for any relay advertising this amount of capacity or more. (Default: 100 KBytes) -**AuthDirGuardBWGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[AuthDirGuardBWGuarantee]] **AuthDirGuardBWGuarantee** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: Authoritative directories only. If non-zero, this advertised capacity or more is always sufficient to satisfy the bandwidth requirement for the Guard flag. (Default: 250 KBytes) -**BridgePassword** __Password__:: +[[BridgePassword]] **BridgePassword** __Password__:: If set, contains an HTTP authenticator that tells a bridge authority to serve all requested bridge information. Used by the (only partially implemented) "bridge community" design, where a community of bridge @@ -1892,26 +1934,26 @@ DIRECTORY AUTHORITY SERVER OPTIONS and their target user audience can periodically fetch the list of available community bridges to stay up-to-date. (Default: not set) -**V3AuthVotingInterval** __N__ **minutes**|**hours**:: +[[V3AuthVotingInterval]] **V3AuthVotingInterval** __N__ **minutes**|**hours**:: V3 authoritative directories only. Configures the server's preferred voting interval. Note that voting will __actually__ happen at an interval chosen by consensus from all the authorities' preferred intervals. This time SHOULD divide evenly into a day. (Default: 1 hour) -**V3AuthVoteDelay** __N__ **minutes**|**hours**:: +[[V3AuthVoteDelay]] **V3AuthVoteDelay** __N__ **minutes**|**hours**:: V3 authoritative directories only. Configures the server's preferred delay between publishing its vote and assuming it has all the votes from all the other authorities. Note that the actual time used is not the server's preferred time, but the consensus of all preferences. (Default: 5 minutes) -**V3AuthDistDelay** __N__ **minutes**|**hours**:: +[[V3AuthDistDelay]] **V3AuthDistDelay** __N__ **minutes**|**hours**:: V3 authoritative directories only. Configures the server's preferred delay between publishing its consensus and signature and assuming it has all the signatures from all the other authorities. Note that the actual time used is not the server's preferred time, but the consensus of all preferences. (Default: 5 minutes) -**V3AuthNIntervalsValid** __NUM__:: +[[V3AuthNIntervalsValid]] **V3AuthNIntervalsValid** __NUM__:: V3 authoritative directories only. Configures the number of VotingIntervals for which each consensus should be valid for. Choosing high numbers increases network partitioning risks; choosing low numbers increases @@ -1919,28 +1961,28 @@ DIRECTORY AUTHORITY SERVER OPTIONS server's preferred number, but the consensus of all preferences. Must be at least 2. (Default: 3) -**V3BandwidthsFile** __FILENAME__:: +[[V3BandwidthsFile]] **V3BandwidthsFile** __FILENAME__:: V3 authoritative directories only. Configures the location of the bandwidth-authority generated file storing information on relays' measured bandwidth capacities. (Default: unset) -**V3AuthUseLegacyKey** **0**|**1**:: +[[V3AuthUseLegacyKey]] **V3AuthUseLegacyKey** **0**|**1**:: If set, the directory authority will sign consensuses not only with its own signing key, but also with a "legacy" key and certificate with a different identity. This feature is used to migrate directory authority keys in the event of a compromise. (Default: 0) -**RephistTrackTime** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: +[[RephistTrackTime]] **RephistTrackTime** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: Tells an authority, or other node tracking node reliability and history, that fine-grained information about nodes can be discarded when it hasn't changed for a given amount of time. (Default: 24 hours) -**VoteOnHidServDirectoriesV2** **0**|**1**:: +[[VoteOnHidServDirectoriesV2]] **VoteOnHidServDirectoriesV2** **0**|**1**:: When this option is set in addition to **AuthoritativeDirectory**, Tor votes on whether to accept relays as hidden service directories. (Default: 1) -**AuthDirHasIPv6Connectivity** **0**|**1**:: +[[AuthDirHasIPv6Connectivity]] **AuthDirHasIPv6Connectivity** **0**|**1**:: Authoritative directories only. When set to 0, OR ports with an IPv6 address are being accepted without reachability testing. When set to 1, IPv6 OR ports are being tested just like IPv4 OR @@ -1951,12 +1993,12 @@ HIDDEN SERVICE OPTIONS The following options are used to configure a hidden service. -**HiddenServiceDir** __DIRECTORY__:: +[[HiddenServiceDir]] **HiddenServiceDir** __DIRECTORY__:: Store data files for a hidden service in DIRECTORY. Every hidden service must have a separate directory. You may use this option multiple times to specify multiple services. DIRECTORY must be an existing directory. -**HiddenServicePort** __VIRTPORT__ [__TARGET__]:: +[[HiddenServicePort]] **HiddenServicePort** __VIRTPORT__ [__TARGET__]:: Configure a virtual port VIRTPORT for a hidden service. You may use this option multiple times; each time applies to the service using the most recent hiddenservicedir. By default, this option maps the virtual port to @@ -1966,17 +2008,17 @@ The following options are used to configure a hidden service. connects to that VIRTPORT, one of the TARGETs from those lines will be chosen at random. -**PublishHidServDescriptors** **0**|**1**:: +[[PublishHidServDescriptors]] **PublishHidServDescriptors** **0**|**1**:: If set to 0, Tor will run any hidden services you configure, but it won't advertise them to the rendezvous directory. This option is only useful if you're using a Tor controller that handles hidserv publishing for you. (Default: 1) -**HiddenServiceVersion** __version__,__version__,__...__:: +[[HiddenServiceVersion]] **HiddenServiceVersion** __version__,__version__,__...__:: A list of rendezvous service descriptor versions to publish for the hidden service. Currently, only version 2 is supported. (Default: 2) -**HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__:: +[[HiddenServiceAuthorizeClient]] **HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__:: If configured, the hidden service is accessible for authorized clients only. The auth-type can either be \'basic' for a general-purpose authorization protocol or \'stealth' for a less scalable protocol that also @@ -1988,7 +2030,7 @@ The following options are used to configure a hidden service. found in the hostname file. Clients need to put this authorization data in their configuration file using **HidServAuth**. -**RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: +[[RendPostPeriod]] **RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: Every time the specified period elapses, Tor uploads any rendezvous service descriptors to the directory servers. This information is also uploaded whenever it changes. (Default: 1 hour) @@ -1998,10 +2040,11 @@ TESTING NETWORK OPTIONS The following options are used for running a testing Tor network. -**TestingTorNetwork** **0**|**1**:: +[[TestingTorNetwork]] **TestingTorNetwork** **0**|**1**:: If set to 1, Tor adjusts default values of the configuration options below, so that it is easier to set up a testing Tor network. May only be set if - non-default set of DirServers is set. Cannot be unset while Tor is running. + non-default set of DirAuthorities is set. Cannot be unset while Tor is + running. (Default: 0) + ServerDNSAllowBrokenConfig 1 @@ -2035,123 +2078,151 @@ The following options are used for running a testing Tor network. TestingDescriptorMaxDownloadTries 80 TestingMicrodescMaxDownloadTries 80 TestingCertMaxDownloadTries 80 + TestingEnableConnBwEvent 1 + TestingEnableCellStatsEvent 1 + TestingEnableTbEmptyEvent 1 -**TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**:: +[[TestingV3AuthInitialVotingInterval]] **TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**:: Like V3AuthVotingInterval, but for initial voting interval before the first consensus has been created. Changing this requires that **TestingTorNetwork** is set. (Default: 30 minutes) -**TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**:: +[[TestingV3AuthInitialVoteDelay]] **TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**:: Like V3AuthVoteDelay, but for initial voting interval before the first consensus has been created. Changing this requires that **TestingTorNetwork** is set. (Default: 5 minutes) -**TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**:: +[[TestingV3AuthInitialDistDelay]] **TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**:: Like V3AuthDistDelay, but for initial voting interval before the first consensus has been created. Changing this requires that **TestingTorNetwork** is set. (Default: 5 minutes) -**TestingV3AuthVotingStartOffset** __N__ **seconds**|**minutes**|**hours**:: +[[TestingV3AuthVotingStartOffset]] **TestingV3AuthVotingStartOffset** __N__ **seconds**|**minutes**|**hours**:: Directory authorities offset voting start time by this much. Changing this requires that **TestingTorNetwork** is set. (Default: 0) -**TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**:: +[[TestingAuthDirTimeToLearnReachability]] **TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**:: After starting as an authority, do not make claims about whether routers are Running until this much time has passed. Changing this requires that **TestingTorNetwork** is set. (Default: 30 minutes) -**TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**:: +[[TestingEstimatedDescriptorPropagationTime]] **TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**:: Clients try downloading router descriptors from directory caches after this time. Changing this requires that **TestingTorNetwork** is set. (Default: 10 minutes) -**TestingMinFastFlagThreshold** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**:: +[[TestingMinFastFlagThreshold]] **TestingMinFastFlagThreshold** __N__ **bytes**|**KBytes**|**MBytes**|**GBytes**|**KBits**|**MBits**|**GBits**:: Minimum value for the Fast flag. Overrides the ordinary minimum taken from the consensus when TestingTorNetwork is set. (Default: 0.) -**TestingServerDownloadSchedule** __N__,__N__,__...__:: +[[TestingServerDownloadSchedule]] **TestingServerDownloadSchedule** __N__,__N__,__...__:: Schedule for when servers should download things in general. Changing this requires that **TestingTorNetwork** is set. (Default: 0, 0, 0, 60, 60, 120, 300, 900, 2147483647) -**TestingClientDownloadSchedule** __N__,__N__,__...__:: +[[TestingClientDownloadSchedule]] **TestingClientDownloadSchedule** __N__,__N__,__...__:: Schedule for when clients should download things in general. Changing this requires that **TestingTorNetwork** is set. (Default: 0, 0, 60, 300, 600, 2147483647) -**TestingServerConsensusDownloadSchedule** __N__,__N__,__...__:: +[[TestingServerConsensusDownloadSchedule]] **TestingServerConsensusDownloadSchedule** __N__,__N__,__...__:: Schedule for when servers should download consensuses. Changing this requires that **TestingTorNetwork** is set. (Default: 0, 0, 60, 300, 600, 1800, 1800, 1800, 1800, 1800, 3600, 7200) -**TestingClientConsensusDownloadSchedule** __N__,__N__,__...__:: +[[TestingClientConsensusDownloadSchedule]] **TestingClientConsensusDownloadSchedule** __N__,__N__,__...__:: Schedule for when clients should download consensuses. Changing this requires that **TestingTorNetwork** is set. (Default: 0, 0, 60, 300, 600, 1800, 3600, 3600, 3600, 10800, 21600, 43200) -**TestingBridgeDownloadSchedule** __N__,__N__,__...__:: +[[TestingBridgeDownloadSchedule]] **TestingBridgeDownloadSchedule** __N__,__N__,__...__:: Schedule for when clients should download bridge descriptors. Changing this requires that **TestingTorNetwork** is set. (Default: 3600, 900, 900, 3600) -**TestingClientMaxIntervalWithoutRequest** __N__ **seconds**|**minutes**:: +[[TestingClientMaxIntervalWithoutRequest]] **TestingClientMaxIntervalWithoutRequest** __N__ **seconds**|**minutes**:: When directory clients have only a few descriptors to request, they batch them until they have more, or until this amount of time has passed. Changing this requires that **TestingTorNetwork** is set. (Default: 10 minutes) -**TestingDirConnectionMaxStall** __N__ **seconds**|**minutes**:: +[[TestingDirConnectionMaxStall]] **TestingDirConnectionMaxStall** __N__ **seconds**|**minutes**:: Let a directory connection stall this long before expiring it. Changing this requires that **TestingTorNetwork** is set. (Default: 5 minutes) -**TestingConsensusMaxDownloadTries** __NUM__:: +[[TestingConsensusMaxDownloadTries]] **TestingConsensusMaxDownloadTries** __NUM__:: Try this often to download a consensus before giving up. Changing this requires that **TestingTorNetwork** is set. (Default: 8) -**TestingDescriptorMaxDownloadTries** __NUM__:: +[[TestingDescriptorMaxDownloadTries]] **TestingDescriptorMaxDownloadTries** __NUM__:: Try this often to download a router descriptor before giving up. Changing this requires that **TestingTorNetwork** is set. (Default: 8) -**TestingMicrodescMaxDownloadTries** __NUM__:: +[[TestingMicrodescMaxDownloadTries]] **TestingMicrodescMaxDownloadTries** __NUM__:: Try this often to download a microdesc descriptor before giving up. Changing this requires that **TestingTorNetwork** is set. (Default: 8) -**TestingCertMaxDownloadTries** __NUM__:: +[[TestingCertMaxDownloadTries]] **TestingCertMaxDownloadTries** __NUM__:: Try this often to download a v3 authority certificate before giving up. Changing this requires that **TestingTorNetwork** is set. (Default: 8) +**TestingDirAuthVoteGuard** __node__,__node__,__...__:: + A list of identity fingerprints, nicknames, country codes and + address patterns of nodes to vote Guard for regardless of their + uptime and bandwidth. See the **ExcludeNodes** option for more + information on how to specify nodes. + + + In order for this option to have any effect, **TestingTorNetwork** + has to be set. + +[[TestingEnableConnBwEvent]] **TestingEnableConnBwEvent** **0**|**1**:: + If this option is set, then Tor controllers may register for CONN_BW + events. Changing this requires that **TestingTorNetwork** is set. + (Default: 0) + +[[TestingEnableCellStatsEvent]] **TestingEnableCellStatsEvent** **0**|**1**:: + If this option is set, then Tor controllers may register for CELL_STATS + events. Changing this requires that **TestingTorNetwork** is set. + (Default: 0) + +[[TestingEnableTbEmptyEvent]] **TestingEnableTbEmptyEvent** **0**|**1**:: + If this option is set, then Tor controllers may register for TB_EMPTY + events. Changing this requires that **TestingTorNetwork** is set. + (Default: 0) + + SIGNALS ------- Tor catches the following signals: -**SIGTERM**:: +[[SIGTERM]] **SIGTERM**:: Tor will catch this, clean up and sync to disk if necessary, and exit. -**SIGINT**:: +[[SIGINT]] **SIGINT**:: Tor clients behave as with SIGTERM; but Tor servers will do a controlled slow shutdown, closing listeners and waiting 30 seconds before exiting. (The delay can be configured with the ShutdownWaitLength config option.) -**SIGHUP**:: +[[SIGHUP]] **SIGHUP**:: The signal instructs Tor to reload its configuration (including closing and reopening logs), and kill and restart its helper processes if applicable. -**SIGUSR1**:: +[[SIGUSR1]] **SIGUSR1**:: Log statistics about current connections, past connections, and throughput. -**SIGUSR2**:: +[[SIGUSR2]] **SIGUSR2**:: Switch all logs to loglevel debug. You can go back to the old loglevels by sending a SIGHUP. -**SIGCHLD**:: +[[SIGCHLD]] **SIGCHLD**:: Tor receives this signal when one of its helper processes has exited, so it can clean up. -**SIGPIPE**:: +[[SIGPIPE]] **SIGPIPE**:: Tor catches this signal and ignores it. -**SIGXFSZ**:: +[[SIGXFSZ]] **SIGXFSZ**:: If this signal exists on your platform, Tor catches and ignores it. FILES @@ -2168,6 +2239,10 @@ __DataDirectory__**/cached-status/**:: Each file holds one such document; the filenames are the hexadecimal identity key fingerprints of the directory authorities. Mostly obsolete. +__DataDirectory__**/cached-certs**:: + This file holds downloaded directory key certificates that are used to + verify authenticity of documents generated by Tor directory authorities. + __DataDirectory__**/cached-consensus** and/or **cached-microdesc-consensus**:: The most recent consensus network status document we've downloaded. @@ -2211,6 +2286,11 @@ __DataDirectory__**/control_auth_cookie**:: control-spec.txt for details. Only used when cookie authentication is enabled. +__DataDirectory__**/lock**:: + This file is used to prevent two Tor instances from using same data + directory. If access to this file is locked, data directory is already + in use by Tor. + __DataDirectory__**/keys/***:: Only used by servers. Holds identity keys and onion keys. @@ -2227,11 +2307,53 @@ __DataDirectory__**/approved-routers**:: **!invalid** then descriptors are accepted but marked in the directory as not valid, that is, not recommended. +__DataDirectory__**/v3-status-votes**:: + Only for authoritative directory servers. This file contains status votes + from all the authoritative directory servers and is used to generate the + network consensus document. + +__DataDirectory__**/unverified-consensus**:: + This file contains a network consensus document that has been downloaded, + but which we didn't have the right certificates to check yet. + +__DataDirectory__**/unverified-microdesc-consensus**:: + This file contains a microdescriptor-flavored network consensus document + that has been downloaded, but which we didn't have the right certificates + to check yet. + +__DataDirectory__**/unparseable-desc**:: + Onion router descriptors that Tor was unable to parse are dumped to this + file. Only used for debugging. + __DataDirectory__**/router-stability**:: Only used by authoritative directory servers. Tracks measurements for router mean-time-between-failures so that authorities have a good idea of how to set their Stable flags. +__DataDirectory__**/status/dirreq-stats**:: + Only used by directory caches and authorities. This file is used to + collect directory request statistics. + +__DataDirectory__**/status/entry-stats**:: + Only used by servers. This file is used to collect incoming connection + statistics by Tor entry nodes. + +__DataDirectory__**/status/bridge-stats**:: + Only used by servers. This file is used to collect incoming connection + statistics by Tor bridges. + +__DataDirectory__**/status/exit-stats**:: + Only used by servers. This file is used to collect outgoing connection + statistics by Tor exit routers. + +__DataDirectory__**/status/buffer-stats**:: + Only used by servers. This file is used to collect buffer usage + history. + +__DataDirectory__**/status/conn-stats**:: + Only used by servers. This file is used to collect approximate connection + history (number of active connections over time). + __HiddenServiceDirectory__**/hostname**:: The <base32-encoded-fingerprint>.onion domain name for this hidden service. If the hidden service is restricted to authorized clients only, this file @@ -2259,4 +2381,3 @@ Plenty, probably. Tor is still in development. Please report them. AUTHORS ------- Roger Dingledine [arma at mit.edu], Nick Mathewson [nickm at alum.mit.edu]. - diff --git a/src/common/address.c b/src/common/address.c index 227b4fbaee..b9f2d93154 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -14,6 +14,7 @@ #include "address.h" #include "torlog.h" #include "container.h" +#include "sandbox.h" #ifdef _WIN32 #include <process.h> @@ -234,7 +235,7 @@ tor_addr_lookup(const char *name, uint16_t family, tor_addr_t *addr) memset(&hints, 0, sizeof(hints)); hints.ai_family = family; hints.ai_socktype = SOCK_STREAM; - err = getaddrinfo(name, NULL, &hints, &res); + err = sandbox_getaddrinfo(name, NULL, &hints, &res); if (!err) { best = NULL; for (res_p = res; res_p; res_p = res_p->ai_next) { @@ -1187,6 +1188,8 @@ get_interface_addresses_raw(int severity) result = smartlist_new(); for (i = ifa; i; i = i->ifa_next) { tor_addr_t tmp; + if ((i->ifa_flags & (IFF_UP | IFF_RUNNING)) != (IFF_UP | IFF_RUNNING)) + continue; if (!i->ifa_addr) continue; if (i->ifa_addr->sa_family != AF_INET && diff --git a/src/common/compat.c b/src/common/compat.c index 0e943f38fe..8e2619f846 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -23,6 +23,7 @@ * we can also take out the configure check. */ #define _GNU_SOURCE +#define COMPAT_PRIVATE #include "compat.h" #ifdef _WIN32 @@ -109,6 +110,7 @@ #include "util.h" #include "container.h" #include "address.h" +#include "sandbox.h" /* Inline the strl functions if the platform doesn't have them. */ #ifndef HAVE_STRLCPY @@ -125,6 +127,7 @@ tor_open_cloexec(const char *path, int flags, unsigned mode) { int fd; #ifdef O_CLOEXEC + path = sandbox_intern_string(path); fd = open(path, flags|O_CLOEXEC, mode); if (fd >= 0) return fd; @@ -948,24 +951,40 @@ socket_accounting_unlock(void) } /** As close(), but guaranteed to work for sockets across platforms (including - * Windows, where close()ing a socket doesn't work. Returns 0 on success, -1 - * on failure. */ + * Windows, where close()ing a socket doesn't work. Returns 0 on success and + * the socket error code on failure. */ int -tor_close_socket(tor_socket_t s) +tor_close_socket_simple(tor_socket_t s) { int r = 0; /* On Windows, you have to call close() on fds returned by open(), - * and closesocket() on fds returned by socket(). On Unix, everything - * gets close()'d. We abstract this difference by always using - * tor_close_socket to close sockets, and always using close() on - * files. - */ -#if defined(_WIN32) - r = closesocket(s); -#else - r = close(s); -#endif + * and closesocket() on fds returned by socket(). On Unix, everything + * gets close()'d. We abstract this difference by always using + * tor_close_socket to close sockets, and always using close() on + * files. + */ + #if defined(_WIN32) + r = closesocket(s); + #else + r = close(s); + #endif + + if (r != 0) { + int err = tor_socket_errno(-1); + log_info(LD_NET, "Close returned an error: %s", tor_socket_strerror(err)); + return err; + } + + return r; +} + +/** As tor_close_socket_simple(), but keeps track of the number + * of open sockets. Returns 0 on success, -1 on failure. */ +int +tor_close_socket(tor_socket_t s) +{ + int r = tor_close_socket_simple(s); socket_accounting_lock(); #ifdef DEBUG_SOCKET_COUNTING @@ -980,13 +999,11 @@ tor_close_socket(tor_socket_t s) if (r == 0) { --n_sockets_open; } else { - int err = tor_socket_errno(-1); - log_info(LD_NET, "Close returned an error: %s", tor_socket_strerror(err)); #ifdef _WIN32 - if (err != WSAENOTSOCK) + if (r != WSAENOTSOCK) --n_sockets_open; #else - if (err != EBADF) + if (r != EBADF) --n_sockets_open; #endif r = -1; @@ -1032,33 +1049,61 @@ mark_socket_open(tor_socket_t s) tor_socket_t tor_open_socket(int domain, int type, int protocol) { + return tor_open_socket_with_extensions(domain, type, protocol, 1, 0); +} + +/** As socket(), but creates a nonblocking socket and + * counts the number of open sockets. */ +tor_socket_t +tor_open_socket_nonblocking(int domain, int type, int protocol) +{ + return tor_open_socket_with_extensions(domain, type, protocol, 1, 1); +} + +/** As socket(), but counts the number of open sockets and handles + * socket creation with either of SOCK_CLOEXEC and SOCK_NONBLOCK specified. + * <b>cloexec</b> and <b>nonblock</b> should be either 0 or 1 to indicate + * if the corresponding extension should be used.*/ +tor_socket_t +tor_open_socket_with_extensions(int domain, int type, int protocol, + int cloexec, int nonblock) +{ tor_socket_t s; -#ifdef SOCK_CLOEXEC - s = socket(domain, type|SOCK_CLOEXEC, protocol); +#if defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK) + int ext_flags = (cloexec ? SOCK_CLOEXEC : 0) | + (nonblock ? SOCK_NONBLOCK : 0); + s = socket(domain, type|ext_flags, protocol); if (SOCKET_OK(s)) goto socket_ok; /* If we got an error, see if it is EINVAL. EINVAL might indicate that, - * even though we were built on a system with SOCK_CLOEXEC support, we - * are running on one without. */ + * even though we were built on a system with SOCK_CLOEXEC and SOCK_NONBLOCK + * support, we are running on one without. */ if (errno != EINVAL) return s; -#endif /* SOCK_CLOEXEC */ +#endif /* SOCK_CLOEXEC && SOCK_NONBLOCK */ s = socket(domain, type, protocol); if (! SOCKET_OK(s)) return s; #if defined(FD_CLOEXEC) - if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { - log_warn(LD_FS,"Couldn't set FD_CLOEXEC: %s", strerror(errno)); -#if defined(_WIN32) - closesocket(s); + if (cloexec) { + if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { + log_warn(LD_FS,"Couldn't set FD_CLOEXEC: %s", strerror(errno)); + tor_close_socket_simple(s); + return TOR_INVALID_SOCKET; + } + } #else - close(s); + (void)cloexec; #endif - return -1; + + if (nonblock) { + if (set_socket_nonblocking(s) == -1) { + tor_close_socket_simple(s); + return TOR_INVALID_SOCKET; + } } -#endif goto socket_ok; /* So that socket_ok will not be unused. */ @@ -1070,19 +1115,41 @@ tor_open_socket(int domain, int type, int protocol) return s; } -/** As socket(), but counts the number of open sockets. */ +/** As accept(), but counts the number of open sockets. */ tor_socket_t tor_accept_socket(tor_socket_t sockfd, struct sockaddr *addr, socklen_t *len) { + return tor_accept_socket_with_extensions(sockfd, addr, len, 1, 0); +} + +/** As accept(), but returns a nonblocking socket and + * counts the number of open sockets. */ +tor_socket_t +tor_accept_socket_nonblocking(tor_socket_t sockfd, struct sockaddr *addr, + socklen_t *len) +{ + return tor_accept_socket_with_extensions(sockfd, addr, len, 1, 1); +} + +/** As accept(), but counts the number of open sockets and handles + * socket creation with either of SOCK_CLOEXEC and SOCK_NONBLOCK specified. + * <b>cloexec</b> and <b>nonblock</b> should be either 0 or 1 to indicate + * if the corresponding extension should be used.*/ +tor_socket_t +tor_accept_socket_with_extensions(tor_socket_t sockfd, struct sockaddr *addr, + socklen_t *len, int cloexec, int nonblock) +{ tor_socket_t s; -#if defined(HAVE_ACCEPT4) && defined(SOCK_CLOEXEC) - s = accept4(sockfd, addr, len, SOCK_CLOEXEC); +#if defined(HAVE_ACCEPT4) && defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK) + int ext_flags = (cloexec ? SOCK_CLOEXEC : 0) | + (nonblock ? SOCK_NONBLOCK : 0); + s = accept4(sockfd, addr, len, ext_flags); if (SOCKET_OK(s)) goto socket_ok; /* If we got an error, see if it is ENOSYS. ENOSYS indicates that, * even though we were built on a system with accept4 support, we * are running on one without. Also, check for EINVAL, which indicates that - * we are missing SOCK_CLOEXEC support. */ + * we are missing SOCK_CLOEXEC/SOCK_NONBLOCK support. */ if (errno != EINVAL && errno != ENOSYS) return s; #endif @@ -1092,13 +1159,24 @@ tor_accept_socket(tor_socket_t sockfd, struct sockaddr *addr, socklen_t *len) return s; #if defined(FD_CLOEXEC) - if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { - log_warn(LD_NET, "Couldn't set FD_CLOEXEC: %s", strerror(errno)); - close(s); - return TOR_INVALID_SOCKET; + if (cloexec) { + if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { + log_warn(LD_NET, "Couldn't set FD_CLOEXEC: %s", strerror(errno)); + tor_close_socket_simple(s); + return TOR_INVALID_SOCKET; + } } +#else + (void)cloexec; #endif + if (nonblock) { + if (set_socket_nonblocking(s) == -1) { + tor_close_socket_simple(s); + return TOR_INVALID_SOCKET; + } + } + goto socket_ok; /* So that socket_ok will not be unused. */ socket_ok: @@ -1220,17 +1298,29 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) return 0; #else + return tor_ersatz_socketpair(family, type, protocol, fd); +#endif +} + +#ifdef NEED_ERSATZ_SOCKETPAIR +/** + * Helper used to implement socketpair on systems that lack it, by + * making a direct connection to localhost. + */ +STATIC int +tor_ersatz_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) +{ /* This socketpair does not work when localhost is down. So * it's really not the same thing at all. But it's close enough * for now, and really, when localhost is down sometimes, we * have other problems too. */ - tor_socket_t listener = -1; - tor_socket_t connector = -1; - tor_socket_t acceptor = -1; + tor_socket_t listener = TOR_INVALID_SOCKET; + tor_socket_t connector = TOR_INVALID_SOCKET; + tor_socket_t acceptor = TOR_INVALID_SOCKET; struct sockaddr_in listen_addr; struct sockaddr_in connect_addr; - int size; + socklen_t size; int saved_errno = -1; if (protocol @@ -1281,7 +1371,6 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) goto tidy_up_and_fail; if (size != sizeof(listen_addr)) goto abort_tidy_up_and_fail; - tor_close_socket(listener); /* Now check we are talking to ourself by matching port and host on the two sockets. */ if (getsockname(connector, (struct sockaddr *) &connect_addr, &size) == -1) @@ -1292,6 +1381,7 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) || listen_addr.sin_port != connect_addr.sin_port) { goto abort_tidy_up_and_fail; } + tor_close_socket(listener); fd[0] = connector; fd[1] = acceptor; @@ -1306,15 +1396,15 @@ tor_socketpair(int family, int type, int protocol, tor_socket_t fd[2]) tidy_up_and_fail: if (saved_errno < 0) saved_errno = errno; - if (listener != -1) + if (SOCKET_OK(listener)) tor_close_socket(listener); - if (connector != -1) + if (SOCKET_OK(connector)) tor_close_socket(connector); - if (acceptor != -1) + if (SOCKET_OK(acceptor)) tor_close_socket(acceptor); return -saved_errno; -#endif } +#endif /** Number of extra file descriptors to keep in reserve beyond those that we * tell Tor it's allowed to use. */ diff --git a/src/common/compat.h b/src/common/compat.h index 258fc99020..8e700a9a13 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -8,6 +8,7 @@ #include "orconfig.h" #include "torint.h" +#include "testsupport.h" #ifdef _WIN32 #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 @@ -450,10 +451,22 @@ typedef int socklen_t; #define TOR_INVALID_SOCKET (-1) #endif +int tor_close_socket_simple(tor_socket_t s); int tor_close_socket(tor_socket_t s); +tor_socket_t tor_open_socket_with_extensions( + int domain, int type, int protocol, + int cloexec, int nonblock); tor_socket_t tor_open_socket(int domain, int type, int protocol); +tor_socket_t tor_open_socket_nonblocking(int domain, int type, int protocol); tor_socket_t tor_accept_socket(tor_socket_t sockfd, struct sockaddr *addr, socklen_t *len); +tor_socket_t tor_accept_socket_nonblocking(tor_socket_t sockfd, + struct sockaddr *addr, + socklen_t *len); +tor_socket_t tor_accept_socket_with_extensions(tor_socket_t sockfd, + struct sockaddr *addr, + socklen_t *len, + int cloexec, int nonblock); int get_n_open_sockets(void); #define tor_socket_send(s, buf, len, flags) send(s, buf, len, flags) @@ -726,5 +739,13 @@ char *format_win32_error(DWORD err); #endif +#ifdef COMPAT_PRIVATE +#if !defined(HAVE_SOCKETPAIR) || defined(_WIN32) || defined(TOR_UNIT_TESTS) +#define NEED_ERSATZ_SOCKETPAIR +STATIC int tor_ersatz_socketpair(int family, int type, int protocol, + tor_socket_t fd[2]); +#endif +#endif + #endif diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index 200a7c65fb..4d0fff833b 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -415,6 +415,14 @@ tor_check_libevent_version(const char *m, int server, #define HEADER_VERSION _EVENT_VERSION #endif +/** Return a string representation of the version of Libevent that was used +* at compilation time. */ +const char * +tor_libevent_get_header_version_str(void) +{ + return HEADER_VERSION; +} + /** See whether the headers we were built against differ from the library we * linked against so much that we're likely to crash. If so, warn the * user. */ diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h index 2472e2c49e..fda8733592 100644 --- a/src/common/compat_libevent.h +++ b/src/common/compat_libevent.h @@ -78,6 +78,7 @@ void tor_check_libevent_version(const char *m, int server, const char **badness_out); void tor_check_libevent_header_compatibility(void); const char *tor_libevent_get_version_str(void); +const char *tor_libevent_get_header_version_str(void); #ifdef USE_BUFFEREVENTS const struct timeval *tor_libevent_get_one_tick_timeout(void); diff --git a/src/common/crypto.c b/src/common/crypto.c index 730ce08286..c1a2f33935 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -56,6 +56,7 @@ #include "../common/util.h" #include "container.h" #include "compat.h" +#include "sandbox.h" #if OPENSSL_VERSION_NUMBER < OPENSSL_V_SERIES(0,9,8) #error "We require OpenSSL >= 0.9.8" @@ -195,6 +196,27 @@ try_load_engine(const char *path, const char *engine) } #endif +/* Returns a trimmed and human-readable version of an openssl version string +* <b>raw_version</b>. They are usually in the form of 'OpenSSL 1.0.0b 10 +* May 2012' and this will parse them into a form similar to '1.0.0b' */ +static char * +parse_openssl_version_str(const char *raw_version) +{ + const char *end_of_version = NULL; + /* The output should be something like "OpenSSL 1.0.0b 10 May 2012. Let's + trim that down. */ + if (!strcmpstart(raw_version, "OpenSSL ")) { + raw_version += strlen("OpenSSL "); + end_of_version = strchr(raw_version, ' '); + } + + if (end_of_version) + return tor_strndup(raw_version, + end_of_version-raw_version); + else + return tor_strdup(raw_version); +} + static char *crypto_openssl_version_str = NULL; /* Return a human-readable version of the run-time openssl version number. */ const char * @@ -202,23 +224,24 @@ crypto_openssl_get_version_str(void) { if (crypto_openssl_version_str == NULL) { const char *raw_version = SSLeay_version(SSLEAY_VERSION); - const char *end_of_version = NULL; - /* The output should be something like "OpenSSL 1.0.0b 10 May 2012. Let's - trim that down. */ - if (!strcmpstart(raw_version, "OpenSSL ")) { - raw_version += strlen("OpenSSL "); - end_of_version = strchr(raw_version, ' '); - } - - if (end_of_version) - crypto_openssl_version_str = tor_strndup(raw_version, - end_of_version-raw_version); - else - crypto_openssl_version_str = tor_strdup(raw_version); + crypto_openssl_version_str = parse_openssl_version_str(raw_version); } return crypto_openssl_version_str; } +static char *crypto_openssl_header_version_str = NULL; +/* Return a human-readable version of the compile-time openssl version +* number. */ +const char * +crypto_openssl_get_header_version_str(void) +{ + if (crypto_openssl_header_version_str == NULL) { + crypto_openssl_header_version_str = + parse_openssl_version_str(OPENSSL_VERSION_TEXT); + } + return crypto_openssl_header_version_str; +} + /** Initialize the crypto library. Return 0 on success, -1 on failure. */ int @@ -2349,7 +2372,7 @@ crypto_strongest_rand(uint8_t *out, size_t out_len) return 0; #else for (i = 0; filenames[i]; ++i) { - fd = open(filenames[i], O_RDONLY, 0); + fd = open(sandbox_intern_string(filenames[i]), O_RDONLY, 0); if (fd<0) continue; log_info(LD_CRYPTO, "Reading entropy from \"%s\"", filenames[i]); n = read_all(fd, (char*)out, out_len, 0); @@ -2404,8 +2427,8 @@ crypto_seed_rng(int startup) /** Write <b>n</b> bytes of strong random data to <b>to</b>. Return 0 on * success, -1 on failure. */ -int -crypto_rand(char *to, size_t n) +MOCK_IMPL(int, +crypto_rand, (char *to, size_t n)) { int r; tor_assert(n < INT_MAX); @@ -3099,6 +3122,7 @@ crypto_global_cleanup(void) } #endif tor_free(crypto_openssl_version_str); + tor_free(crypto_openssl_header_version_str); return 0; } diff --git a/src/common/crypto.h b/src/common/crypto.h index 651d553a4e..6ce3697c92 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -109,6 +109,7 @@ typedef struct crypto_dh_t crypto_dh_t; /* global state */ const char * crypto_openssl_get_version_str(void); +const char * crypto_openssl_get_header_version_str(void); int crypto_global_init(int hardwareAccel, const char *accelName, const char *accelPath); @@ -248,7 +249,7 @@ int crypto_expand_key_material_rfc5869_sha256( /* random numbers */ int crypto_seed_rng(int startup); -int crypto_rand(char *to, size_t n); +MOCK_DECL(int,crypto_rand,(char *to, size_t n)); int crypto_strongest_rand(uint8_t *out, size_t out_len); int crypto_rand_int(unsigned int max); uint64_t crypto_rand_uint64(uint64_t max); diff --git a/src/common/sandbox.c b/src/common/sandbox.c index a37c74e4a3..7ef577dbec 100644 --- a/src/common/sandbox.c +++ b/src/common/sandbox.c @@ -9,53 +9,79 @@ * \brief Code to enable sandboxing. **/ +#include "orconfig.h" + +#ifndef _LARGEFILE64_SOURCE +/** + * Temporarily required for O_LARGEFILE flag. Needs to be removed + * with the libevent fix. + */ +#define _LARGEFILE64_SOURCE +#endif + +/** Malloc mprotect limit in bytes. */ +#define MALLOC_MP_LIM 1048576 + #include <stdio.h> #include <string.h> #include <stdlib.h> -#include "orconfig.h" #include "sandbox.h" #include "torlog.h" +#include "torint.h" #include "util.h" - -#if defined(HAVE_SECCOMP_H) && defined(__linux__) -#define USE_LIBSECCOMP -#endif +#include "tor_queue.h" #define DEBUGGING_CLOSE #if defined(USE_LIBSECCOMP) +#define _GNU_SOURCE + +#include <sys/mman.h> #include <sys/syscall.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/epoll.h> +#include <sys/prctl.h> +#include <linux/futex.h> +#include <bits/signum.h> +#include <event2/event.h> + +#include <stdarg.h> #include <seccomp.h> #include <signal.h> #include <unistd.h> +#include <fcntl.h> +#include <time.h> +#include <poll.h> + +/**Determines if at least one sandbox is active.*/ +static int sandbox_active = 0; +/** Holds the parameter list configuration for the sandbox.*/ +static sandbox_cfg_t *filter_dynamic = NULL; +/** Holds a list of pre-recorded results from getaddrinfo().*/ +static sb_addr_info_t *sb_addr_info = NULL; + +#undef SCMP_CMP +#define SCMP_CMP(a,b,c) ((struct scmp_arg_cmp){(a),(b),(c),0}) /** Variable used for storing all syscall numbers that will be allowed with the * stage 1 general Tor sandbox. */ -static int general_filter[] = { +static int filter_nopar_gen[] = { SCMP_SYS(access), SCMP_SYS(brk), SCMP_SYS(clock_gettime), SCMP_SYS(close), SCMP_SYS(clone), SCMP_SYS(epoll_create), - SCMP_SYS(epoll_ctl), SCMP_SYS(epoll_wait), - SCMP_SYS(execve), SCMP_SYS(fcntl), -#ifdef __NR_fcntl64 - /* Older libseccomp versions don't define PNR entries for all of these, - * so we need to ifdef them here.*/ - SCMP_SYS(fcntl64), -#endif - SCMP_SYS(flock), SCMP_SYS(fstat), #ifdef __NR_fstat64 SCMP_SYS(fstat64), #endif - SCMP_SYS(futex), SCMP_SYS(getdents64), SCMP_SYS(getegid), #ifdef __NR_getegid32 @@ -82,76 +108,1148 @@ static int general_filter[] = { SCMP_SYS(mkdir), SCMP_SYS(mlockall), SCMP_SYS(mmap), -#ifdef __NR_mmap2 - SCMP_SYS(mmap2), -#endif - SCMP_SYS(mprotect), - SCMP_SYS(mremap), SCMP_SYS(munmap), - SCMP_SYS(open), - SCMP_SYS(openat), - SCMP_SYS(poll), - SCMP_SYS(prctl), SCMP_SYS(read), SCMP_SYS(rename), - SCMP_SYS(rt_sigaction), - SCMP_SYS(rt_sigprocmask), SCMP_SYS(rt_sigreturn), + SCMP_SYS(set_robust_list), #ifdef __NR_sigreturn SCMP_SYS(sigreturn), #endif - SCMP_SYS(set_robust_list), - SCMP_SYS(set_thread_area), - SCMP_SYS(set_tid_address), SCMP_SYS(stat), -#ifdef __NR_stat64 - SCMP_SYS(stat64), -#endif - SCMP_SYS(time), SCMP_SYS(uname), SCMP_SYS(write), SCMP_SYS(exit_group), SCMP_SYS(exit), + SCMP_SYS(madvise), +#ifdef __NR_stat64 + // getaddrinfo uses this.. + SCMP_SYS(stat64), +#endif + + /* + * These socket syscalls are not required on x86_64 and not supported with + * some libseccomp versions (eg: 1.0.1) + */ +#if defined(__i386) + SCMP_SYS(recv), + SCMP_SYS(send), +#endif + // socket syscalls - SCMP_SYS(accept4), SCMP_SYS(bind), SCMP_SYS(connect), SCMP_SYS(getsockname), - SCMP_SYS(getsockopt), - SCMP_SYS(listen), -#if __NR_recv >= 0 - /* This is a kludge; It's necessary on 64-bit with libseccomp 1.0.0; I - * don't know if other 64-bit or other versions require it. */ - SCMP_SYS(recv), -#endif SCMP_SYS(recvmsg), -#if __NR_send >= 0 - SCMP_SYS(send), -#endif + SCMP_SYS(recvfrom), SCMP_SYS(sendto), - SCMP_SYS(setsockopt), - SCMP_SYS(socket), - SCMP_SYS(socketpair), + SCMP_SYS(unlink) +}; - // TODO: remove when accept4 is fixed -#ifdef __NR_socketcall - SCMP_SYS(socketcall), +/** + * Function responsible for setting up the rt_sigaction syscall for + * the seccomp filter sandbox. + */ +static int +sb_rt_sigaction(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + unsigned i; + int rc; + int param[] = { SIGINT, SIGTERM, SIGPIPE, SIGUSR1, SIGUSR2, SIGHUP, SIGCHLD, +#ifdef SIGXFSZ + SIGXFSZ #endif + }; + (void) filter; - SCMP_SYS(recvfrom), - SCMP_SYS(unlink) + for (i = 0; i < ARRAY_LENGTH(param); i++) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigaction), 1, + SCMP_CMP(0, SCMP_CMP_EQ, param[i])); + if (rc) + break; + } + + return rc; +} + +/** + * Function responsible for setting up the execve syscall for + * the seccomp filter sandbox. + */ +static int +sb_execve(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc; + sandbox_cfg_t *elem = NULL; + + // for each dynamic parameter filters + for (elem = filter; elem != NULL; elem = elem->next) { + smp_param_t *param = (smp_param_t*) elem->param; + + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(execve)) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(execve), 1, + SCMP_CMP(0, SCMP_CMP_EQ, param->value)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add execve syscall, received " + "libseccomp error %d", rc); + return rc; + } + } + } + + return 0; +} + +/** + * Function responsible for setting up the time syscall for + * the seccomp filter sandbox. + */ +static int +sb_time(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + (void) filter; + return seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(time), 1, + SCMP_CMP(0, SCMP_CMP_EQ, 0)); +} + +/** + * Function responsible for setting up the accept4 syscall for + * the seccomp filter sandbox. + */ +static int +sb_accept4(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void)filter; + +#ifdef __i386__ + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socketcall), 1, + SCMP_CMP(0, SCMP_CMP_EQ, 18)); + if (rc) { + return rc; + } +#endif + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(accept4), 1, + SCMP_CMP(3, SCMP_CMP_EQ, SOCK_CLOEXEC)); + if (rc) { + return rc; + } + + return 0; +} + +#ifdef __NR_mmap2 +/** + * Function responsible for setting up the mmap2 syscall for + * the seccomp filter sandbox. + */ +static int +sb_mmap2(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_NONE), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE|MAP_ANONYMOUS)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE), + SCMP_CMP(3, SCMP_CMP_EQ,MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS)); + if (rc) { + return rc; + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap2), 2, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_EXEC), + SCMP_CMP(3, SCMP_CMP_EQ, MAP_PRIVATE|MAP_DENYWRITE)); + if (rc) { + return rc; + } + + return 0; +} +#endif + +/** + * Function responsible for setting up the open syscall for + * the seccomp filter sandbox. + */ +static int +sb_open(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc; + sandbox_cfg_t *elem = NULL; + + // for each dynamic parameter filters + for (elem = filter; elem != NULL; elem = elem->next) { + smp_param_t *param = elem->param; + + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(open)) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), 1, + SCMP_CMP(0, SCMP_CMP_EQ, param->value)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add open syscall, received " + "libseccomp error %d", rc); + return rc; + } + } + } + + rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(-1), SCMP_SYS(open), 1, + SCMP_CMP(1, SCMP_CMP_EQ, O_RDONLY|O_CLOEXEC)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add open syscall, received libseccomp " + "error %d", rc); + return rc; + } + + return 0; +} + +/** + * Function responsible for setting up the openat syscall for + * the seccomp filter sandbox. + */ +static int +sb_openat(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc; + sandbox_cfg_t *elem = NULL; + + // for each dynamic parameter filters + for (elem = filter; elem != NULL; elem = elem->next) { + smp_param_t *param = elem->param; + + if (param != NULL && param->prot == 1 && param->syscall + == SCMP_SYS(openat)) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(openat), 1, + SCMP_CMP(0, SCMP_CMP_EQ, AT_FDCWD), + SCMP_CMP(1, SCMP_CMP_EQ, param->value), + SCMP_CMP(2, SCMP_CMP_EQ, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY| + O_CLOEXEC)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add openat syscall, received " + "libseccomp error %d", rc); + return rc; + } + } + } + + return 0; +} + +/** + * Function responsible for setting up the socket syscall for + * the seccomp filter sandbox. + */ +static int +sb_socket(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + +#ifdef __i386__ + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 0); + if (rc) + return rc; +#endif + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 3, + SCMP_CMP(0, SCMP_CMP_EQ, PF_FILE), + SCMP_CMP(1, SCMP_CMP_EQ, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK), + SCMP_CMP(2, SCMP_CMP_EQ, IPPROTO_IP)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 3, + SCMP_CMP(0, SCMP_CMP_EQ, PF_INET), + SCMP_CMP(1, SCMP_CMP_EQ, SOCK_STREAM|SOCK_CLOEXEC), + SCMP_CMP(2, SCMP_CMP_EQ, IPPROTO_TCP)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 3, + SCMP_CMP(0, SCMP_CMP_EQ, PF_INET), + SCMP_CMP(1, SCMP_CMP_EQ, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK), + SCMP_CMP(2, SCMP_CMP_EQ, IPPROTO_IP)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket), 3, + SCMP_CMP(0, SCMP_CMP_EQ, PF_NETLINK), + SCMP_CMP(1, SCMP_CMP_EQ, SOCK_RAW), + SCMP_CMP(2, SCMP_CMP_EQ, 0)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the socketpair syscall for + * the seccomp filter sandbox. + */ +static int +sb_socketpair(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + +#ifdef __i386__ + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socketpair), 0); + if (rc) + return rc; +#endif + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socketpair), 2, + SCMP_CMP(0, SCMP_CMP_EQ, PF_FILE), + SCMP_CMP(1, SCMP_CMP_EQ, SOCK_STREAM|SOCK_CLOEXEC)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the setsockopt syscall for + * the seccomp filter sandbox. + */ +static int +sb_setsockopt(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + +#ifdef __i386__ + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt), 0); + if (rc) + return rc; +#endif + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt), 2, + SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET), + SCMP_CMP(2, SCMP_CMP_EQ, SO_REUSEADDR)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the getsockopt syscall for + * the seccomp filter sandbox. + */ +static int +sb_getsockopt(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + +#ifdef __i386__ + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt), 0); + if (rc) + return rc; +#endif + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt), 2, + SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET), + SCMP_CMP(2, SCMP_CMP_EQ, SO_ERROR)); + if (rc) + return rc; + + return 0; +} + +#ifdef __NR_fcntl64 +/** + * Function responsible for setting up the fcntl64 syscall for + * the seccomp filter sandbox. + */ +static int +sb_fcntl64(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 1, + SCMP_CMP(1, SCMP_CMP_EQ, F_GETFL)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 2, + SCMP_CMP(1, SCMP_CMP_EQ, F_SETFL), + SCMP_CMP(2, SCMP_CMP_EQ, O_RDWR|O_NONBLOCK)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 1, + SCMP_CMP(1, SCMP_CMP_EQ, F_GETFD)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(fcntl64), 2, + SCMP_CMP(1, SCMP_CMP_EQ, F_SETFD), + SCMP_CMP(2, SCMP_CMP_EQ, FD_CLOEXEC)); + if (rc) + return rc; + + return 0; +} +#endif + +/** + * Function responsible for setting up the epoll_ctl syscall for + * the seccomp filter sandbox. + * + * Note: basically allows everything but will keep for now.. + */ +static int +sb_epoll_ctl(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(epoll_ctl), 1, + SCMP_CMP(1, SCMP_CMP_EQ, EPOLL_CTL_ADD)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(epoll_ctl), 1, + SCMP_CMP(1, SCMP_CMP_EQ, EPOLL_CTL_MOD)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(epoll_ctl), 1, + SCMP_CMP(1, SCMP_CMP_EQ, EPOLL_CTL_DEL)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the fcntl64 syscall for + * the seccomp filter sandbox. + * + * NOTE: if multiple filters need to be added, the PR_SECCOMP parameter needs + * to be whitelisted in this function. + */ +static int +sb_prctl(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(prctl), 1, + SCMP_CMP(0, SCMP_CMP_EQ, PR_SET_DUMPABLE)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the fcntl64 syscall for + * the seccomp filter sandbox. + * + * NOTE: does not NEED to be here.. currently only occurs before filter; will + * keep just in case for the future. + */ +static int +sb_mprotect(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mprotect), 1, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mprotect), 1, + SCMP_CMP(2, SCMP_CMP_EQ, PROT_NONE)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the rt_sigprocmask syscall for + * the seccomp filter sandbox. + */ +static int +sb_rt_sigprocmask(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigprocmask), 1, + SCMP_CMP(0, SCMP_CMP_EQ, SIG_UNBLOCK)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigprocmask), 1, + SCMP_CMP(0, SCMP_CMP_EQ, SIG_SETMASK)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the flock syscall for + * the seccomp filter sandbox. + * + * NOTE: does not need to be here, occurs before filter is applied. + */ +static int +sb_flock(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(flock), 1, + SCMP_CMP(1, SCMP_CMP_EQ, LOCK_EX|LOCK_NB)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(flock), 1, + SCMP_CMP(1, SCMP_CMP_EQ, LOCK_UN)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the futex syscall for + * the seccomp filter sandbox. + */ +static int +sb_futex(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + // can remove + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(futex), 1, + SCMP_CMP(1, SCMP_CMP_EQ, + FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(futex), 1, + SCMP_CMP(1, SCMP_CMP_EQ, FUTEX_WAKE_PRIVATE)); + if (rc) + return rc; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(futex), 1, + SCMP_CMP(1, SCMP_CMP_EQ, FUTEX_WAIT_PRIVATE)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the mremap syscall for + * the seccomp filter sandbox. + * + * NOTE: so far only occurs before filter is applied. + */ +static int +sb_mremap(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mremap), 1, + SCMP_CMP(3, SCMP_CMP_EQ, MREMAP_MAYMOVE)); + if (rc) + return rc; + + return 0; +} + +/** + * Function responsible for setting up the poll syscall for + * the seccomp filter sandbox. + */ +static int +sb_poll(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + (void) filter; + + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(poll), 2, + SCMP_CMP(1, SCMP_CMP_EQ, 1), + SCMP_CMP(2, SCMP_CMP_EQ, 10)); + if (rc) + return rc; + + return 0; +} + +#ifdef __NR_stat64 +/** + * Function responsible for setting up the stat64 syscall for + * the seccomp filter sandbox. + */ +static int +sb_stat64(scmp_filter_ctx ctx, sandbox_cfg_t *filter) +{ + int rc = 0; + sandbox_cfg_t *elem = NULL; + + // for each dynamic parameter filters + for (elem = filter; elem != NULL; elem = elem->next) { + smp_param_t *param = elem->param; + + if (param != NULL && param->prot == 1 && (param->syscall == SCMP_SYS(open) + || param->syscall == SCMP_SYS(stat64))) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(stat64), 1, + SCMP_CMP(0, SCMP_CMP_EQ, param->value)); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add open syscall, received " + "libseccomp error %d", rc); + return rc; + } + } + } + + return 0; +} +#endif + +/** + * Array of function pointers responsible for filtering different syscalls at + * a parameter level. + */ +static sandbox_filter_func_t filter_func[] = { + sb_rt_sigaction, + sb_rt_sigprocmask, + sb_execve, + sb_time, + sb_accept4, +#ifdef __NR_mmap2 + sb_mmap2, +#endif + sb_open, + sb_openat, +#ifdef __NR_fcntl64 + sb_fcntl64, +#endif + sb_epoll_ctl, + sb_prctl, + sb_mprotect, + sb_flock, + sb_futex, + sb_mremap, + sb_poll, +#ifdef __NR_stat64 + sb_stat64, +#endif + + sb_socket, + sb_setsockopt, + sb_getsockopt, + sb_socketpair }; +const char* +sandbox_intern_string(const char *str) +{ + sandbox_cfg_t *elem; + + if (str == NULL) + return NULL; + + for (elem = filter_dynamic; elem != NULL; elem = elem->next) { + smp_param_t *param = elem->param; + + if (param->prot && !strcmp(str, (char*)(param->value))) { + return (char*)(param->value); + } + } + + log_info(LD_GENERAL, "(Sandbox) Parameter %s not found", str); + return str; +} + +/** + * Protects all the strings in the sandbox's parameter list configuration. It + * works by calculating the total amount of memory required by the parameter + * list, allocating the memory using mmap, and protecting it from writes with + * mprotect(). + */ +static int +prot_strings(scmp_filter_ctx ctx, sandbox_cfg_t* cfg) +{ + int ret = 0; + size_t pr_mem_size = 0, pr_mem_left = 0; + char *pr_mem_next = NULL, *pr_mem_base; + sandbox_cfg_t *el = NULL; + + // get total number of bytes required to mmap + for (el = cfg; el != NULL; el = el->next) { + pr_mem_size += strlen((char*) ((smp_param_t*)el->param)->value) + 1; + } + + // allocate protected memory with MALLOC_MP_LIM canary + pr_mem_base = (char*) mmap(NULL, MALLOC_MP_LIM + pr_mem_size, + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + if (pr_mem_base == MAP_FAILED) { + log_err(LD_BUG,"(Sandbox) failed allocate protected memory! mmap: %s", + strerror(errno)); + ret = -1; + goto out; + } + + pr_mem_next = pr_mem_base + MALLOC_MP_LIM; + pr_mem_left = pr_mem_size; + + // change el value pointer to protected + for (el = cfg; el != NULL; el = el->next) { + char *param_val = (char*)((smp_param_t *)el->param)->value; + size_t param_size = strlen(param_val) + 1; + + if (pr_mem_left >= param_size) { + // copy to protected + memcpy(pr_mem_next, param_val, param_size); + + // re-point el parameter to protected + { + void *old_val = (void *) ((smp_param_t*)el->param)->value; + tor_free(old_val); + } + ((smp_param_t*)el->param)->value = (intptr_t) pr_mem_next; + ((smp_param_t*)el->param)->prot = 1; + + // move next available protected memory + pr_mem_next += param_size; + pr_mem_left -= param_size; + } else { + log_err(LD_BUG,"(Sandbox) insufficient protected memory!"); + ret = -2; + goto out; + } + } + + // protecting from writes + if (mprotect(pr_mem_base, MALLOC_MP_LIM + pr_mem_size, PROT_READ)) { + log_err(LD_BUG,"(Sandbox) failed to protect memory! mprotect: %s", + strerror(errno)); + ret = -3; + goto out; + } + + /* + * Setting sandbox restrictions so the string memory cannot be tampered with + */ + // no mremap of the protected base address + ret = seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(mremap), 1, + SCMP_CMP(0, SCMP_CMP_EQ, (intptr_t) pr_mem_base)); + if (ret) { + log_err(LD_BUG,"(Sandbox) mremap protected memory filter fail!"); + return ret; + } + + // no munmap of the protected base address + ret = seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(munmap), 1, + SCMP_CMP(0, SCMP_CMP_EQ, (intptr_t) pr_mem_base)); + if (ret) { + log_err(LD_BUG,"(Sandbox) munmap protected memory filter fail!"); + return ret; + } + + /* + * Allow mprotect with PROT_READ|PROT_WRITE because openssl uses it, but + * never over the memory region used by the protected strings. + * + * PROT_READ|PROT_WRITE was originally fully allowed in sb_mprotect(), but + * had to be removed due to limitation of libseccomp regarding intervals. + * + * There is a restriction on how much you can mprotect with R|W up to the + * size of the canary. + */ + ret = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mprotect), 2, + SCMP_CMP(0, SCMP_CMP_LT, (intptr_t) pr_mem_base), + SCMP_CMP(1, SCMP_CMP_LE, MALLOC_MP_LIM), + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE)); + if (ret) { + log_err(LD_BUG,"(Sandbox) mprotect protected memory filter fail (LT)!"); + return ret; + } + + ret = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mprotect), 2, + SCMP_CMP(0, SCMP_CMP_GT, (intptr_t) pr_mem_base + pr_mem_size + + MALLOC_MP_LIM), + SCMP_CMP(1, SCMP_CMP_LE, MALLOC_MP_LIM), + SCMP_CMP(2, SCMP_CMP_EQ, PROT_READ|PROT_WRITE)); + if (ret) { + log_err(LD_BUG,"(Sandbox) mprotect protected memory filter fail (GT)!"); + return ret; + } + + out: + return ret; +} + +/** + * Auxiliary function used in order to allocate a sandbox_cfg_t element and set + * it's values according the the parameter list. All elements are initialised + * with the 'prot' field set to false, as the pointer is not protected at this + * point. + */ +static sandbox_cfg_t* +new_element(int syscall, int index, intptr_t value) +{ + smp_param_t *param = NULL; + + sandbox_cfg_t *elem = tor_malloc(sizeof(sandbox_cfg_t)); + elem->param = tor_malloc(sizeof(smp_param_t)); + + param = elem->param; + param->syscall = syscall; + param->pindex = index; + param->value = value; + param->prot = 0; + + return elem; +} + +#ifdef __NR_stat64 +#define SCMP_stat SCMP_SYS(stat64) +#else +#define SCMP_stat SCMP_SYS(stat) +#endif + +int +sandbox_cfg_allow_stat_filename(sandbox_cfg_t **cfg, char *file, int fr) +{ + sandbox_cfg_t *elem = NULL; + + elem = new_element(SCMP_stat, 0, (intptr_t)(void*) tor_strdup(file)); + if (!elem) { + log_err(LD_BUG,"(Sandbox) failed to register parameter!"); + return -1; + } + + elem->next = *cfg; + *cfg = elem; + + if (fr) tor_free(file); + return 0; +} + +int +sandbox_cfg_allow_stat_filename_array(sandbox_cfg_t **cfg, ...) +{ + int rc = 0; + char *fn = NULL; + + va_list ap; + va_start(ap, cfg); + + while ((fn = va_arg(ap, char*)) != NULL) { + int fr = va_arg(ap, int); + + rc = sandbox_cfg_allow_stat_filename(cfg, fn, fr); + if (rc) { + log_err(LD_BUG,"(Sandbox) sandbox_cfg_allow_stat_filename_array fail"); + goto end; + } + } + + end: + va_end(ap); + return 0; +} + +int +sandbox_cfg_allow_open_filename(sandbox_cfg_t **cfg, char *file, int fr) +{ + sandbox_cfg_t *elem = NULL; + + elem = new_element(SCMP_SYS(open), 0, (intptr_t)(void *)tor_strdup(file)); + if (!elem) { + log_err(LD_BUG,"(Sandbox) failed to register parameter!"); + return -1; + } + + elem->next = *cfg; + *cfg = elem; + + if (fr) tor_free(file); + + return 0; +} + +int +sandbox_cfg_allow_open_filename_array(sandbox_cfg_t **cfg, ...) +{ + int rc = 0; + char *fn = NULL; + + va_list ap; + va_start(ap, cfg); + + while ((fn = va_arg(ap, char*)) != NULL) { + int fr = va_arg(ap, int); + + rc = sandbox_cfg_allow_open_filename(cfg, fn, fr); + if (rc) { + log_err(LD_BUG,"(Sandbox) sandbox_cfg_allow_open_filename_array fail"); + goto end; + } + } + + end: + va_end(ap); + return 0; +} + +int +sandbox_cfg_allow_openat_filename(sandbox_cfg_t **cfg, char *file, int fr) +{ + sandbox_cfg_t *elem = NULL; + + elem = new_element(SCMP_SYS(openat), 1, (intptr_t)(void *)tor_strdup(file)); + if (!elem) { + log_err(LD_BUG,"(Sandbox) failed to register parameter!"); + return -1; + } + + elem->next = *cfg; + *cfg = elem; + + if (fr) tor_free(file); + + return 0; +} + +int +sandbox_cfg_allow_openat_filename_array(sandbox_cfg_t **cfg, ...) +{ + int rc = 0; + char *fn = NULL; + + va_list ap; + va_start(ap, cfg); + + while ((fn = va_arg(ap, char*)) != NULL) { + int fr = va_arg(ap, int); + + rc = sandbox_cfg_allow_openat_filename(cfg, fn, fr); + if (rc) { + log_err(LD_BUG,"(Sandbox) sandbox_cfg_allow_openat_filename_array fail"); + goto end; + } + } + + end: + va_end(ap); + return 0; +} + +int +sandbox_cfg_allow_execve(sandbox_cfg_t **cfg, const char *com) +{ + sandbox_cfg_t *elem = NULL; + + elem = new_element(SCMP_SYS(execve), 1, (intptr_t)(void *)tor_strdup(com)); + if (!elem) { + log_err(LD_BUG,"(Sandbox) failed to register parameter!"); + return -1; + } + + elem->next = *cfg; + *cfg = elem; + + return 0; +} + +int +sandbox_cfg_allow_execve_array(sandbox_cfg_t **cfg, ...) +{ + int rc = 0; + char *fn = NULL; + + va_list ap; + va_start(ap, cfg); + + while ((fn = va_arg(ap, char*)) != NULL) { + + rc = sandbox_cfg_allow_execve(cfg, fn); + if (rc) { + log_err(LD_BUG,"(Sandbox) sandbox_cfg_allow_execve_array failed"); + goto end; + } + } + + end: + va_end(ap); + return 0; +} + +int +sandbox_getaddrinfo(const char *name, const char *servname, + const struct addrinfo *hints, + struct addrinfo **res) +{ + sb_addr_info_t *el; + + if (servname != NULL) + return -1; + + *res = NULL; + + for (el = sb_addr_info; el; el = el->next) { + if (!strcmp(el->name, name)) { + *res = tor_malloc(sizeof(struct addrinfo)); + + memcpy(*res, el->info, sizeof(struct addrinfo)); + /* XXXX What if there are multiple items in the list? */ + return 0; + } + } + + if (!sandbox_active) { + if (getaddrinfo(name, NULL, hints, res)) { + log_err(LD_BUG,"(Sandbox) getaddrinfo failed!"); + return -1; + } + + return 0; + } + + // getting here means something went wrong + log_err(LD_BUG,"(Sandbox) failed to get address %s!", name); + if (*res) { + tor_free(*res); + res = NULL; + } + return -1; +} + +int +sandbox_add_addrinfo(const char* name) +{ + int ret; + struct addrinfo hints; + sb_addr_info_t *el = NULL; + + el = tor_malloc(sizeof(sb_addr_info_t)); + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + + ret = getaddrinfo(name, NULL, &hints, &(el->info)); + if (ret) { + log_err(LD_BUG,"(Sandbox) failed to getaddrinfo"); + ret = -2; + tor_free(el); + goto out; + } + + el->name = tor_strdup(name); + el->next = sb_addr_info; + sb_addr_info = el; + + out: + return ret; +} + +/** + * Function responsible for going through the parameter syscall filters and + * call each function pointer in the list. + */ +static int +add_param_filter(scmp_filter_ctx ctx, sandbox_cfg_t* cfg) +{ + unsigned i; + int rc = 0; + + // function pointer + for (i = 0; i < ARRAY_LENGTH(filter_func); i++) { + if ((filter_func[i])(ctx, cfg)) { + log_err(LD_BUG,"(Sandbox) failed to add syscall %d, received libseccomp " + "error %d", i, rc); + return rc; + } + } + + return 0; +} + +/** + * Function responsible of loading the libseccomp syscall filters which do not + * have parameter filtering. + */ +static int +add_noparam_filter(scmp_filter_ctx ctx) +{ + unsigned i; + int rc = 0; + + // add general filters + for (i = 0; i < ARRAY_LENGTH(filter_nopar_gen); i++) { + rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, filter_nopar_gen[i], 0); + if (rc != 0) { + log_err(LD_BUG,"(Sandbox) failed to add syscall index %d (NR=%d), " + "received libseccomp error %d", i, filter_nopar_gen[i], rc); + return rc; + } + } + + return 0; +} + /** * Function responsible for setting up and enabling a global syscall filter. * The function is a prototype developed for stage 1 of sandboxing Tor. * Returns 0 on success. */ static int -install_glob_syscall_filter(void) +install_syscall_filter(sandbox_cfg_t* cfg) { - int rc = 0, i, filter_size; + int rc = 0; scmp_filter_ctx ctx; ctx = seccomp_init(SCMP_ACT_TRAP); @@ -161,23 +1259,31 @@ install_glob_syscall_filter(void) goto end; } - if (general_filter != NULL) { - filter_size = sizeof(general_filter) / sizeof(general_filter[0]); - } else { - filter_size = 0; + // protectign sandbox parameter strings + if ((rc = prot_strings(ctx, cfg))) { + goto end; } - // add general filters - for (i = 0; i < filter_size; i++) { - rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, general_filter[i], 0); - if (rc != 0) { - log_err(LD_BUG,"(Sandbox) failed to add syscall index %d, " - "received libseccomp error %d", i, rc); - goto end; - } + // add parameter filters + if ((rc = add_param_filter(ctx, cfg))) { + log_err(LD_BUG, "(Sandbox) failed to add param filters!"); + goto end; + } + + // adding filters with no parameters + if ((rc = add_noparam_filter(ctx))) { + log_err(LD_BUG, "(Sandbox) failed to add param filters!"); + goto end; + } + + // loading the seccomp2 filter + if ((rc = seccomp_load(ctx))) { + log_err(LD_BUG, "(Sandbox) failed to load!"); + goto end; } - rc = seccomp_load(ctx); + // marking the sandbox as active + sandbox_active = 1; end: seccomp_release(ctx); @@ -246,6 +1352,29 @@ install_sigsys_debugging(void) return 0; } + +/** + * Function responsible of registering the sandbox_cfg_t list of parameter + * syscall filters to the existing parameter list. This is used for incipient + * multiple-sandbox support. + */ +static int +register_cfg(sandbox_cfg_t* cfg) +{ + sandbox_cfg_t *elem = NULL; + + if (filter_dynamic == NULL) { + filter_dynamic = cfg; + return 0; + } + + for (elem = filter_dynamic; elem->next != NULL; elem = elem->next); + + elem->next = cfg; + + return 0; +} + #endif // USE_LIBSECCOMP #ifdef USE_LIBSECCOMP @@ -254,45 +1383,111 @@ install_sigsys_debugging(void) * into account various available features for different linux flavours. */ static int -initialise_libseccomp_sandbox(void) +initialise_libseccomp_sandbox(sandbox_cfg_t* cfg) { if (install_sigsys_debugging()) return -1; - if (install_glob_syscall_filter()) + if (install_syscall_filter(cfg)) return -2; + if (register_cfg(cfg)) + return -3; + return 0; } #endif // USE_LIBSECCOMP -/** - * Enables the stage 1 general sandbox. It applies a syscall filter which does - * not restrict any Tor features. The filter is representative for the whole - * application. - */ -int -tor_global_sandbox(void) +sandbox_cfg_t* +sandbox_cfg_new(void) { + return NULL; +} +int +sandbox_init(sandbox_cfg_t *cfg) +{ #if defined(USE_LIBSECCOMP) - return initialise_libseccomp_sandbox(); + return initialise_libseccomp_sandbox(cfg); #elif defined(_WIN32) + (void)cfg; log_warn(LD_BUG,"Windows sandboxing is not implemented. The feature is " "currently disabled."); return 0; #elif defined(TARGET_OS_MAC) + (void)cfg; log_warn(LD_BUG,"Mac OSX sandboxing is not implemented. The feature is " "currently disabled"); return 0; #else + (void)cfg; log_warn(LD_BUG,"Sandboxing is not implemented for your platform. The " "feature is currently disabled"); return 0; #endif } +#ifndef USE_LIBSECCOMP +int +sandbox_cfg_allow_open_filename(sandbox_cfg_t **cfg, char *file, + int fr) +{ + (void)cfg; (void)file; (void)fr; + return 0; +} + +int +sandbox_cfg_allow_open_filename_array(sandbox_cfg_t **cfg, ...) +{ + (void)cfg; + return 0; +} + +int +sandbox_cfg_allow_openat_filename(sandbox_cfg_t **cfg, char *file, + int fr) +{ + (void)cfg; (void)file; (void)fr; + return 0; +} + +int +sandbox_cfg_allow_openat_filename_array(sandbox_cfg_t **cfg, ...) +{ + (void)cfg; + return 0; +} + +int +sandbox_cfg_allow_execve(sandbox_cfg_t **cfg, const char *com) +{ + (void)cfg; (void)com; + return 0; +} + +int +sandbox_cfg_allow_execve_array(sandbox_cfg_t **cfg, ...) +{ + (void)cfg; + return 0; +} + +int +sandbox_cfg_allow_stat_filename(sandbox_cfg_t **cfg, char *file, + int fr) +{ + (void)cfg; (void)file; (void)fr; + return 0; +} + +int +sandbox_cfg_allow_stat_filename_array(sandbox_cfg_t **cfg, ...) +{ + (void)cfg; + return 0; +} +#endif diff --git a/src/common/sandbox.h b/src/common/sandbox.h index 54f16ec86e..d64d427d3e 100644 --- a/src/common/sandbox.h +++ b/src/common/sandbox.h @@ -12,6 +12,9 @@ #ifndef SANDBOX_H_ #define SANDBOX_H_ +#include "orconfig.h" +#include "torint.h" + #ifndef SYS_SECCOMP /** @@ -22,13 +25,99 @@ #endif +#if defined(HAVE_SECCOMP_H) && defined(__linux__) +#define USE_LIBSECCOMP +#endif + +struct sandbox_cfg_elem; + +/** Typedef to structure used to manage a sandbox configuration. */ +typedef struct sandbox_cfg_elem sandbox_cfg_t; + /** * Linux definitions */ -#ifdef __linux__ +#ifdef USE_LIBSECCOMP +#ifndef __USE_GNU #define __USE_GNU +#endif #include <sys/ucontext.h> +#include <seccomp.h> +#include <netdb.h> + +#define PARAM_PTR 0 +#define PARAM_NUM 1 + +/** + * Enum used to manage the type of the implementation for general purpose. + */ +typedef enum { + /** Libseccomp implementation based on seccomp2*/ + LIBSECCOMP2 = 0 +} SB_IMPL; + +/** + * Configuration parameter structure associated with the LIBSECCOMP2 + * implementation. + */ +typedef struct smp_param { + /** syscall associated with parameter. */ + int syscall; + + /** parameter index. */ + int pindex; + /** parameter value. */ + intptr_t value; + + /** parameter flag (0 = not protected, 1 = protected). */ + int prot; +} smp_param_t; + +/** + * Structure used to manage a sandbox configuration. + * + * It is implemented as a linked list of parameters. Currently only controls + * parameters for open, openat, execve, stat64. + */ +struct sandbox_cfg_elem { + /** Sandbox implementation which dictates the parameter type. */ + SB_IMPL implem; + + /** Configuration parameter. */ + void *param; + + /** Next element of the configuration*/ + struct sandbox_cfg_elem *next; +}; + +/** + * Structure used for keeping a linked list of getaddrinfo pre-recorded + * results. + */ +struct sb_addr_info_el { + /** Name of the address info result. */ + char *name; + /** Pre-recorded getaddrinfo result. */ + struct addrinfo *info; + /** Next element in the list. */ + struct sb_addr_info_el *next; +}; +/** Typedef to structure used to manage an addrinfo list. */ +typedef struct sb_addr_info_el sb_addr_info_t; + +/** Function pointer defining the prototype of a filter function.*/ +typedef int (*sandbox_filter_func_t)(scmp_filter_ctx ctx, + sandbox_cfg_t *filter); + +/** Type that will be used in step 3 in order to manage multiple sandboxes.*/ +typedef struct { + /** function pointers associated with the filter */ + sandbox_filter_func_t *filter_func; + + /** filter function pointer parameters */ + sandbox_cfg_t *filter_dynamic; +} sandbox_t; /** * Linux 32 bit definitions @@ -46,9 +135,113 @@ #endif -#endif // __linux__ +#endif // USE_LIBSECCOMP + +#ifdef USE_LIBSECCOMP +/** Pre-calls getaddrinfo in order to pre-record result. */ +int sandbox_add_addrinfo(const char *addr); + +struct addrinfo; +/** Replacement for getaddrinfo(), using pre-recorded results. */ +int sandbox_getaddrinfo(const char *name, const char *servname, + const struct addrinfo *hints, + struct addrinfo **res); +#else +#define sandbox_getaddrinfo(name, servname, hints, res) \ + getaddrinfo((name),(servname), (hints),(res)) +#define sandbox_add_addrinfo(name) \ + ((void)(name)) +#endif + +#ifdef USE_LIBSECCOMP +/** Returns a registered protected string used with the sandbox, given that + * it matches the parameter. + */ +const char* sandbox_intern_string(const char *param); +#else +#define sandbox_intern_string(s) (s) +#endif + +/** Creates an empty sandbox configuration file.*/ +sandbox_cfg_t * sandbox_cfg_new(void); + +/** + * Function used to add a open allowed filename to a supplied configuration. + * The (char*) specifies the path to the allowed file, fr = 1 tells the + * function that the char* needs to be free-ed, 0 means the pointer does not + * need to be free-ed. + */ +int sandbox_cfg_allow_open_filename(sandbox_cfg_t **cfg, char *file, + int fr); + +/** Function used to add a series of open allowed filenames to a supplied + * configuration. + * @param cfg sandbox configuration. + * @param ... all future parameters are specified as pairs of <(char*), 1 / 0> + * the char* specifies the path to the allowed file, 1 tells the function + * that the char* needs to be free-ed, 0 means the pointer does not need to + * be free-ed; the final parameter needs to be <NULL, 0>. + */ +int sandbox_cfg_allow_open_filename_array(sandbox_cfg_t **cfg, ...); + +/** + * Function used to add a openat allowed filename to a supplied configuration. + * The (char*) specifies the path to the allowed file, fr = 1 tells the + * function that the char* needs to be free-ed, 0 means the pointer does not + * need to be free-ed. + */ +int sandbox_cfg_allow_openat_filename(sandbox_cfg_t **cfg, char *file, + int fr); + +/** Function used to add a series of openat allowed filenames to a supplied + * configuration. + * @param cfg sandbox configuration. + * @param ... all future parameters are specified as pairs of <(char*), 1 / 0> + * the char* specifies the path to the allowed file, 1 tells the function + * that the char* needs to be free-ed, 0 means the pointer does not need to + * be free-ed; the final parameter needs to be <NULL, 0>. + */ +int sandbox_cfg_allow_openat_filename_array(sandbox_cfg_t **cfg, ...); + +/** + * Function used to add a execve allowed filename to a supplied configuration. + * The (char*) specifies the path to the allowed file, fr = 1 tells the + * function that the char* needs to be free-ed, 0 means the pointer does not + * need to be free-ed. + */ +int sandbox_cfg_allow_execve(sandbox_cfg_t **cfg, const char *com); + +/** Function used to add a series of execve allowed filenames to a supplied + * configuration. + * @param cfg sandbox configuration. + * @param ... all future parameters are specified as pairs of <(char*), 1 / 0> + * the char* specifies the path to the allowed file, 1 tells the function + * that the char* needs to be free-ed, 0 means the pointer does not need to + * be free-ed; the final parameter needs to be <NULL, 0>. + */ +int sandbox_cfg_allow_execve_array(sandbox_cfg_t **cfg, ...); + +/** + * Function used to add a stat/stat64 allowed filename to a configuration. + * The (char*) specifies the path to the allowed file, fr = 1 tells the + * function that the char* needs to be free-ed, 0 means the pointer does not + * need to be free-ed. + */ +int sandbox_cfg_allow_stat_filename(sandbox_cfg_t **cfg, char *file, + int fr); + +/** Function used to add a series of stat64 allowed filenames to a supplied + * configuration. + * @param cfg sandbox configuration. + * @param ... all future parameters are specified as pairs of <(char*), 1 / 0> + * the char* specifies the path to the allowed file, 1 tells the function + * that the char* needs to be free-ed, 0 means the pointer does not need to + * be free-ed; the final parameter needs to be <NULL, 0>. + */ +int sandbox_cfg_allow_stat_filename_array(sandbox_cfg_t **cfg, ...); -int tor_global_sandbox(void); +/** Function used to initialise a sandbox configuration.*/ +int sandbox_init(sandbox_cfg_t* cfg); #endif /* SANDBOX_H_ */ diff --git a/src/common/torgzip.c b/src/common/torgzip.c index 4328c63c8b..15451ee30d 100644 --- a/src/common/torgzip.c +++ b/src/common/torgzip.c @@ -68,6 +68,22 @@ is_gzip_supported(void) return gzip_is_supported; } +/** Return a string representation of the version of the currently running + * version of zlib. */ +const char * +tor_zlib_get_version_str(void) +{ + return zlibVersion(); +} + +/** Return a string representation of the version of the version of zlib +* used at compilation. */ +const char * +tor_zlib_get_header_version_str(void) +{ + return ZLIB_VERSION; +} + /** Return the 'bits' value to tell zlib to use <b>method</b>.*/ static INLINE int method_bits(compress_method_t method) diff --git a/src/common/torgzip.h b/src/common/torgzip.h index be1016445b..5db03fe6e0 100644 --- a/src/common/torgzip.h +++ b/src/common/torgzip.h @@ -32,6 +32,12 @@ tor_gzip_uncompress(char **out, size_t *out_len, int is_gzip_supported(void); +const char * +tor_zlib_get_version_str(void); + +const char * +tor_zlib_get_header_version_str(void); + compress_method_t detect_compression_method(const char *in, size_t in_len); /** Return values from tor_zlib_process; see that function's documentation for diff --git a/src/common/tortls.c b/src/common/tortls.c index df706b0012..5aee664b84 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -1241,12 +1241,15 @@ tor_tls_context_new(crypto_pk_t *identity, unsigned int key_lifetime, * version. Once some version of OpenSSL does TLS1.1 and TLS1.2 * renegotiation properly, we can turn them back on when built with * that version. */ +#if OPENSSL_VERSION_NUMBER < OPENSSL_V(1,0,1,'e') #ifdef SSL_OP_NO_TLSv1_2 SSL_CTX_set_options(result->ctx, SSL_OP_NO_TLSv1_2); #endif #ifdef SSL_OP_NO_TLSv1_1 SSL_CTX_set_options(result->ctx, SSL_OP_NO_TLSv1_1); #endif +#endif + /* Disable TLS tickets if they're supported. We never want to use them; * using them can make our perfect forward secrecy a little worse, *and* * create an opportunity to fingerprint us (since it's unusual to use them @@ -1341,10 +1344,8 @@ tor_tls_context_new(crypto_pk_t *identity, unsigned int key_lifetime, nid = NID_secp224r1; else if (flags & TOR_TLS_CTX_USE_ECDHE_P256) nid = NID_X9_62_prime256v1; - else if (flags & TOR_TLS_CTX_IS_PUBLIC_SERVER) - nid = NID_X9_62_prime256v1; else - nid = NID_secp224r1; + nid = NID_X9_62_prime256v1; /* Use P-256 for ECDHE. */ ec_key = EC_KEY_new_by_curve_name(nid); if (ec_key != NULL) /*XXXX Handle errors? */ diff --git a/src/common/util.c b/src/common/util.c index cb23e7e9ae..17d6c22ab4 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -24,6 +24,7 @@ #include "torint.h" #include "container.h" #include "address.h" +#include "sandbox.h" #include "backtrace.h" #ifdef _WIN32 @@ -1320,6 +1321,18 @@ tv_mdiff(const struct timeval *start, const struct timeval *end) return mdiff; } +/** + * Converts timeval to milliseconds. + */ +int64_t +tv_to_msec(const struct timeval *tv) +{ + int64_t conv = ((int64_t)tv->tv_sec)*1000L; + /* Round ghetto-style */ + conv += ((int64_t)tv->tv_usec+500)/1000L; + return conv; +} + /** Yield true iff <b>y</b> is a leap-year. */ #define IS_LEAPYEAR(y) (!(y % 4) && ((y % 100) || !(y % 400))) /** Helper: Return the number of leap-days between Jan 1, y1 and Jan 1, y2. */ @@ -1817,7 +1830,7 @@ file_status(const char *fname) int r; f = tor_strdup(fname); clean_name_for_stat(f); - r = stat(f, &st); + r = stat(sandbox_intern_string(f), &st); tor_free(f); if (r) { if (errno == ENOENT) { @@ -1867,7 +1880,7 @@ check_private_dir(const char *dirname, cpd_check_t check, tor_assert(dirname); f = tor_strdup(dirname); clean_name_for_stat(f); - r = stat(f, &st); + r = stat(sandbox_intern_string(f), &st); tor_free(f); if (r) { if (errno != ENOENT) { @@ -2208,12 +2221,20 @@ write_chunks_to_file_impl(const char *fname, const smartlist_t *chunks, return -1; } -/** Given a smartlist of sized_chunk_t, write them atomically to a file - * <b>fname</b>, overwriting or creating the file as necessary. */ +/** Given a smartlist of sized_chunk_t, write them to a file + * <b>fname</b>, overwriting or creating the file as necessary. + * If <b>no_tempfile</b> is 0 then the file will be written + * atomically. */ int -write_chunks_to_file(const char *fname, const smartlist_t *chunks, int bin) +write_chunks_to_file(const char *fname, const smartlist_t *chunks, int bin, + int no_tempfile) { int flags = OPEN_FLAGS_REPLACE|(bin?O_BINARY:O_TEXT); + + if (no_tempfile) { + /* O_APPEND stops write_chunks_to_file from using tempfiles */ + flags |= O_APPEND; + } return write_chunks_to_file_impl(fname, chunks, flags); } @@ -2234,9 +2255,9 @@ write_bytes_to_file_impl(const char *fname, const char *str, size_t len, /** As write_str_to_file, but does not assume a NUL-terminated * string. Instead, we write <b>len</b> bytes, starting at <b>str</b>. */ -int -write_bytes_to_file(const char *fname, const char *str, size_t len, - int bin) +MOCK_IMPL(int, +write_bytes_to_file,(const char *fname, const char *str, size_t len, + int bin)) { return write_bytes_to_file_impl(fname, str, len, OPEN_FLAGS_REPLACE|(bin?O_BINARY:O_TEXT)); @@ -3098,9 +3119,10 @@ tor_listdir(const char *dirname) FindClose(handle); tor_free(pattern); #else + const char *prot_dname = sandbox_intern_string(dirname); DIR *d; struct dirent *de; - if (!(d = opendir(dirname))) + if (!(d = opendir(prot_dname))) return NULL; result = smartlist_new(); @@ -3480,10 +3502,10 @@ format_dec_number_sigsafe(unsigned long x, char *buf, int buf_len) * <b>hex_errno</b>. Called between fork and _exit, so must be signal-handler * safe. * - * <b>hex_errno</b> must have at least HEX_ERRNO_SIZE bytes available. + * <b>hex_errno</b> must have at least HEX_ERRNO_SIZE+1 bytes available. * * The format of <b>hex_errno</b> is: "CHILD_STATE/ERRNO\n", left-padded - * with spaces. Note that there is no trailing \0. CHILD_STATE indicates where + * with spaces. CHILD_STATE indicates where * in the processs of starting the child process did the failure occur (see * CHILD_STATE_* macros for definition), and SAVED_ERRNO is the value of * errno when the failure occurred. @@ -3518,7 +3540,7 @@ format_helper_exit_status(unsigned char child_state, int saved_errno, * Count how many chars of space we have left, and keep a pointer into the * current point in the buffer. */ - left = HEX_ERRNO_SIZE; + left = HEX_ERRNO_SIZE+1; cur = hex_errno; /* Emit child_state */ @@ -3561,8 +3583,8 @@ format_helper_exit_status(unsigned char child_state, int saved_errno, left -= written; cur += written; - /* Check that we have enough space left for a newline */ - if (left <= 0) + /* Check that we have enough space left for a newline and a NUL */ + if (left <= 1) goto err; /* Emit the newline and NUL */ @@ -3818,7 +3840,7 @@ tor_spawn_background(const char *const filename, const char **argv, this is used for printing out the error message */ unsigned char child_state = CHILD_STATE_INIT; - char hex_errno[HEX_ERRNO_SIZE]; + char hex_errno[HEX_ERRNO_SIZE + 2]; /* + 1 should be sufficient actually */ static int max_fd = -1; @@ -4000,9 +4022,9 @@ tor_spawn_background(const char *const filename, const char **argv, * <b>process_handle</b>. * If <b>also_terminate_process</b> is true, also terminate the * process of the process handle. */ -void -tor_process_handle_destroy(process_handle_t *process_handle, - int also_terminate_process) +MOCK_IMPL(void, +tor_process_handle_destroy,(process_handle_t *process_handle, + int also_terminate_process)) { if (!process_handle) return; @@ -4511,9 +4533,9 @@ stream_status_to_string(enum stream_status stream_status) /** Return a smartlist containing lines outputted from * <b>handle</b>. Return NULL on error, and set * <b>stream_status_out</b> appropriately. */ -smartlist_t * -tor_get_lines_from_handle(HANDLE *handle, - enum stream_status *stream_status_out) +MOCK_IMPL(smartlist_t *, +tor_get_lines_from_handle, (HANDLE *handle, + enum stream_status *stream_status_out)) { int pos; char stdout_buf[600] = {0}; @@ -4601,8 +4623,9 @@ log_from_handle(HANDLE *pipe, int severity) /** Return a smartlist containing lines outputted from * <b>handle</b>. Return NULL on error, and set * <b>stream_status_out</b> appropriately. */ -smartlist_t * -tor_get_lines_from_handle(FILE *handle, enum stream_status *stream_status_out) +MOCK_IMPL(smartlist_t *, +tor_get_lines_from_handle, (FILE *handle, + enum stream_status *stream_status_out)) { enum stream_status stream_status; char stdout_buf[400]; diff --git a/src/common/util.h b/src/common/util.h index 37effa258b..18dc20639f 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -253,6 +253,7 @@ int base16_decode(char *dest, size_t destlen, const char *src, size_t srclen); /* Time helpers */ long tv_udiff(const struct timeval *start, const struct timeval *end); long tv_mdiff(const struct timeval *start, const struct timeval *end); +int64_t tv_to_msec(const struct timeval *tv); int tor_timegm(const struct tm *tm, time_t *time_out); #define RFC1123_TIME_LEN 29 void format_rfc1123_time(char *buf, time_t t); @@ -355,8 +356,9 @@ FILE *fdopen_file(open_file_t *file_data); int finish_writing_to_file(open_file_t *file_data); int abort_writing_to_file(open_file_t *file_data); int write_str_to_file(const char *fname, const char *str, int bin); -int write_bytes_to_file(const char *fname, const char *str, size_t len, - int bin); +MOCK_DECL(int, +write_bytes_to_file,(const char *fname, const char *str, size_t len, + int bin)); /** An ad-hoc type to hold a string of characters and a count; used by * write_chunks_to_file. */ typedef struct sized_chunk_t { @@ -364,7 +366,7 @@ typedef struct sized_chunk_t { size_t len; } sized_chunk_t; int write_chunks_to_file(const char *fname, const struct smartlist_t *chunks, - int bin); + int bin, int no_tempfile); int append_bytes_to_file(const char *fname, const char *str, size_t len, int bin); int write_bytes_to_new_file(const char *fname, const char *str, size_t len, @@ -492,18 +494,21 @@ FILE *tor_process_get_stdout_pipe(process_handle_t *process_handle); #endif #ifdef _WIN32 -struct smartlist_t * -tor_get_lines_from_handle(HANDLE *handle, - enum stream_status *stream_status); +MOCK_DECL(struct smartlist_t *, +tor_get_lines_from_handle,(HANDLE *handle, + enum stream_status *stream_status)); #else -struct smartlist_t * -tor_get_lines_from_handle(FILE *handle, - enum stream_status *stream_status); +MOCK_DECL(struct smartlist_t *, +tor_get_lines_from_handle,(FILE *handle, + enum stream_status *stream_status)); #endif -int tor_terminate_process(process_handle_t *process_handle); -void tor_process_handle_destroy(process_handle_t *process_handle, - int also_terminate_process); +int +tor_terminate_process(process_handle_t *process_handle); + +MOCK_DECL(void, +tor_process_handle_destroy,(process_handle_t *process_handle, + int also_terminate_process)); /* ===== Insecure rng */ typedef struct tor_weak_rng_t { @@ -539,5 +544,7 @@ STATIC int format_helper_exit_status(unsigned char child_state, const char *libor_get_digests(void); +#define ARRAY_LENGTH(x) (sizeof(x)) / sizeof(x[0]) + #endif diff --git a/src/config/geoip b/src/config/geoip index 2b2fbf1928..01a7711982 100644 --- a/src/config/geoip +++ b/src/config/geoip @@ -1,4 +1,4 @@ -# Last updated based on July 3 2013 Maxmind GeoLite Country +# Last updated based on October 2 2013 Maxmind GeoLite Country # Visit the following URL for details on the conversion: # https://gitweb.torproject.org/tor.git/blob/HEAD:/src/config/README.geoip 16777216,16777471,AU @@ -183,13 +183,7 @@ 49807360,50331647,SE 50331648,57083940,US 57083941,57083941,BE -57083942,68305407,US -68305408,68305919,MX -68305920,68965375,US -68965376,68965631,CA -68965632,69156927,US -69156928,69156935,US -69156936,71020543,US +57083942,71020543,US 71020544,71020799,CA 71020800,71571339,US 71571340,71571340,DE @@ -266,11 +260,28 @@ 84545536,84549631,GB 84549632,84551679,GE 84551680,84557823,DE -84557824,84558079,NL -84558080,84558335,GB -84558336,84561215,NL +84557824,84559211,NL +84559212,84559215,CN +84559216,84561215,NL 84561216,84561247,US -84561248,84574207,NL +84561248,84561639,NL +84561640,84561647,ES +84561648,84561655,AF +84561656,84561727,NL +84561728,84561791,US +84561792,84563135,NL +84563136,84563143,LT +84563144,84563351,NL +84563352,84563359,CN +84563360,84563647,NL +84563648,84563655,US +84563656,84563691,NL +84563692,84563695,GB +84563696,84565247,NL +84565248,84565311,US +84565312,84565655,NL +84565656,84565663,US +84565664,84574207,NL 84574208,84576255,FR 84576256,84582399,GB 84582400,84590591,DE @@ -299,9 +310,10 @@ 85360640,85362687,IL 85362688,85364735,GB 85364736,85366783,DE -85366784,85367295,CZ +85366784,85367039,CZ +85367040,85367295,RU 85367296,85367551,SK -85367552,85367807,CZ +85367552,85367807,RU 85367808,85368831,UA 85368832,85377023,RS 85377024,85385215,IR @@ -371,7 +383,9 @@ 86442701,86442702,CH 86442703,86442723,FR 86442724,86442724,PL -86442725,86444319,FR +86442725,86442751,FR +86442752,86443007,GB +86443008,86444319,FR 86444320,86444323,ES 86444324,86446427,FR 86446428,86446431,DE @@ -410,7 +424,9 @@ 86469692,86469695,DE 86469696,86470731,FR 86470732,86470735,BE -86470736,86474307,FR +86470736,86473087,FR +86473088,86473151,PT +86473152,86474307,FR 86474308,86474311,DE 86474312,86474475,FR 86474476,86474479,DE @@ -432,7 +448,9 @@ 86507520,86573055,ES 86573056,86638591,RO 86638592,86671359,RU -86671360,86672383,JE +86671360,86671615,JE +86671616,86672127,GB +86672128,86672383,JE 86672384,86673407,GB 86673408,86675455,DE 86675456,86677503,IT @@ -479,12 +497,10 @@ 86839296,86843391,GB 86847488,86849535,GB 86849536,86851583,CZ -86851584,86853631,RU -86853632,86854655,NL +86851584,86854655,NL 86854656,86859775,RU 86859776,86863871,DE -86863872,86865919,RU -86865920,86867967,EE +86863872,86867967,EE 86867968,86872063,JO 86872064,86874111,GB 86874112,86876159,NO @@ -535,16 +551,26 @@ 87638016,87640063,UA 87640064,87642111,RS 87642112,87646207,GB -87646208,87647999,FR -87648000,87648511,RE -87648512,87649791,FR -87649792,87650303,RE -87650304,87650559,FR -87650560,87651327,RE -87651328,87651839,FR -87651840,87652095,RE -87652096,87652351,FR -87652352,87654399,RE +87646208,87647231,FR +87647232,87647487,RE +87647488,87647743,FR +87647744,87647999,YT +87648000,87648511,FR +87648512,87648767,RE +87648768,87650303,FR +87650304,87650559,RE +87650560,87651071,FR +87651072,87651327,RE +87651328,87651583,FR +87651584,87651839,RE +87651840,87652095,FR +87652096,87652351,RE +87652352,87652607,FR +87652608,87653119,RE +87653120,87653375,FR +87653376,87653631,RE +87653632,87653887,FR +87653888,87654399,RE 87654400,87670783,PL 87670784,87672831,DE 87672832,87674879,CH @@ -552,9 +578,7 @@ 87676928,87678975,RU 87678976,87679103,NL 87679104,87679231,ES -87679232,87680063,NL -87680064,87680511,ES -87680512,87681023,NL +87679232,87681023,NL 87681024,87683071,RU 87683072,87685119,SE 87685120,87687167,NL @@ -636,8 +660,7 @@ 90456064,90472447,RU 90472448,90476543,DE 90476544,90478591,FR -90478592,90479103,GB -90479104,90480639,VG +90478592,90480639,VG 90480640,90482687,YE 90482688,90484735,SA 90484736,90488831,NO @@ -646,7 +669,11 @@ 90499072,90501119,IT 90501120,90503167,GB 90503168,90505215,IL -90505216,90570751,RU +90505216,90529791,RU +90529792,90533887,NL +90533888,90546175,RU +90546176,90548223,DE +90548224,90570751,RU 90570752,90578943,IT 90578944,90583039,IR 90583040,90587135,CZ @@ -668,7 +695,11 @@ 90705920,90707967,CZ 90707968,90710015,IT 90710016,90718207,UA -90718208,90720255,EU +90718208,90718719,DE +90718720,90719231,FR +90719232,90719487,AT +90719488,90719999,EU +90720000,90720255,GB 90720256,90722303,IQ 90722304,90724351,FI 90724352,90726399,CH @@ -729,15 +760,23 @@ 92725248,92733439,SY 92733440,92734735,FR 92734736,92734739,DE -92734740,92736511,FR -92736512,92737023,GB -92737024,92738719,FR +92734740,92735999,FR +92736000,92736255,GB +92736256,92738719,FR 92738720,92738727,GB 92738728,92747711,FR 92747712,92747775,GB 92747776,92749067,FR 92749068,92749071,GB -92749072,92786827,FR +92749072,92757311,FR +92757312,92757375,ES +92757376,92762127,FR +92762128,92762135,ES +92762136,92765443,FR +92765444,92765447,ES +92765448,92782687,FR +92782688,92782719,ES +92782720,92786827,FR 92786828,92786831,IT 92786832,92798975,FR 92798976,93323263,RU @@ -781,8 +820,7 @@ 93681664,93683711,UA 93683712,93685759,AT 93685760,93687807,BE -93687808,93691391,RU -93691392,93691903,GB +93687808,93691903,RU 93691904,93693951,PL 93693952,93695999,IE 93696000,93700095,FR @@ -791,16 +829,13 @@ 93704192,93708287,UA 93708288,93712383,DE 93712384,93714431,HU -93714432,93714943,NL -93714944,93715455,GB -93715456,93715967,CA -93715968,93716479,NL +93714432,93716479,NL 93716480,93749247,GB 93749248,93753343,IT 93753344,93765631,GB 93765632,93774847,SE -93774848,93776127,NO -93776128,93782015,SE +93774848,93775871,NO +93775872,93782015,SE 93782016,93847551,GB 93847552,93880319,GE 93880320,93888511,IT @@ -813,13 +848,33 @@ 93906944,93908991,BA 93908992,93911039,IT 93911040,93913087,AE -93913088,93916527,NL +93913088,93914357,NL +93914358,93914358,GB +93914359,93914710,NL +93914711,93914711,GB +93914712,93915279,NL +93915280,93915295,US +93915296,93915895,NL +93915896,93915903,AT +93915904,93915991,NL +93915992,93915999,US +93916000,93916527,NL 93916528,93916543,US -93916544,93919263,NL +93916544,93917751,NL +93917752,93917759,US +93917760,93918103,NL +93918104,93918111,US +93918112,93918655,NL +93918656,93918687,US +93918688,93919263,NL 93919264,93919279,US 93919280,93919487,NL 93919488,93919551,US -93919552,93929471,NL +93919552,93921055,NL +93921056,93921059,US +93921060,93921063,NL +93921064,93921071,GB +93921072,93929471,NL 93929472,93939711,GB 93939712,93941759,NO 93941760,93945855,CH @@ -880,7 +935,7 @@ 94339072,94355455,ES 94355456,94357503,NL 94357504,94361599,GB -94361600,94363647,PT +94361600,94363647,LU 94363648,94365695,GB 94365696,94367743,HU 94367744,94369791,ES @@ -910,8 +965,7 @@ 95367168,95369215,IT 95369216,95371263,GB 95371264,95374591,IT -95374592,95374847,EU -95374848,95375359,LY +95374592,95375359,EU 95375360,95377407,NL 95377408,95387647,RU 95387648,95420415,DE @@ -950,11 +1004,11 @@ 96153600,96155647,PL 96155648,96157695,CH 96157696,96165887,RU -96165888,96168191,FR -96168192,96168447,MQ -96168448,96168959,FR -96168960,96169983,MQ -96169984,96174079,FR +96165888,96167935,FR +96167936,96168191,MQ +96168192,96169215,FR +96169216,96169727,MQ +96169728,96174079,FR 96174080,96206847,HU 96206848,96272383,RU 96272384,96280575,PA @@ -971,7 +1025,7 @@ 96897024,96899071,GB 96899072,96903167,AT 96903168,96911359,IR -96911360,96919551,NL +96911360,96919551,FR 96919552,96923647,IT 96923648,96925695,JO 96925696,96960511,GB @@ -996,12 +1050,16 @@ 97435648,97437695,DK 97437696,97439743,AT 97439744,97443839,NL -97443840,97445887,ES +97443840,97445887,PT 97445888,97447935,RS 97447936,97452031,PL 97452032,97517567,UA 97517568,98566143,IR -98566144,98697215,NL +98566144,98620415,NL +98620416,98620671,SS +98620672,98685951,NL +98685952,98686207,SS +98686208,98697215,NL 98697216,98699263,GB 98699264,98701311,FR 98701312,98705407,ES @@ -1044,13 +1102,10 @@ 100329472,100331519,RU 100331520,100335615,TR 100335616,100401151,KZ -100401152,100532223,DE 100532224,100564991,RO -100564992,100568063,SE -100568064,100568319,FR -100568320,100573183,SE +100564992,100573183,SE 100573184,100575231,GB -100575232,100577279,SE +100575232,100577279,DK 100577280,100579327,RU 100579328,100581375,AT 100581376,100589567,SE @@ -1067,78 +1122,74 @@ 134738944,134739199,CA 134739200,134874866,US 134874867,134874867,DO -134874868,135013631,US -135013632,135013887,US -135013888,135192575,US -135192576,135200767,MX -135200768,135430143,US +134874868,135192575,US +135192576,135193343,MX +135193344,135193599,US +135193600,135194367,MX +135194368,135194623,US +135194624,135194879,MX +135194880,135195391,US +135195392,135195647,MX +135195648,135197951,US +135197952,135198207,MX +135198208,135430143,US 135430144,135430399,CA 135430400,135432191,US 135432192,135434239,CA 135434240,135441407,US 135441408,135441663,CA -135441664,135603711,US -135603712,135604223,CA -135604224,135607039,US +135441664,135607039,US 135607040,135607295,CA -135607296,135776255,US -135776256,135776511,GU -135776512,135790591,US -135790592,135794687,CA +135607296,135790591,US +135790592,135791103,CA +135791104,135792639,US +135792640,135794687,CA 135794688,136237055,US 136237056,136239103,CA 136239104,136415487,US -136415488,136415743,CA +136415488,136415665,CA +136415666,136415666,FR +136415667,136415743,CA 136415744,136699903,US -136699904,136703999,A2 +136699904,136700415,A2 +136700416,136700671,IN +136700672,136703999,A2 136704000,152305663,US 152305664,152338431,GB 152338432,167772159,US -184549376,202706431,US -202706432,202706943,PR -202706944,202935551,US -202935552,202935807,PR -202935808,203658751,US -203658752,203658815,VI -203658816,204046335,US -204046336,204046847,PR -204046848,204047391,US -204047392,204047423,VI -204047424,204047487,US -204047488,204047503,VI -204047504,204047871,US +184549376,202826495,US +202826496,202826751,GB +202826752,204047871,US 204047872,204047999,PR -204048000,209867103,US +204048000,204048031,US +204048032,204048047,PR +204048048,209867103,US 209867104,209867111,CA -209867112,209988527,US -209988528,209988535,VI -209988536,211126783,US +209867112,210875647,US +210875648,210875903,MX +210875904,211126783,US 211126784,211126911,PR 211126912,211263999,US 211264000,211264255,SA 211264256,211597311,US -211597312,211597343,VI -211597344,211597375,US -211597376,211597471,VI -211597472,211597519,US -211597520,211597567,VI -211597568,211597719,US +211597312,211597439,VI +211597440,211597719,US 211597720,211597727,VI -211597728,212491249,US -212491250,212491250,US -212491251,212787199,US +211597728,212787199,US 212787200,212788223,PR -212788224,212789087,US +212788224,212788863,US +212788864,212788991,PR +212788992,212789087,US 212789088,212789095,VI -212789096,212791831,US -212791832,212791839,VI -212791840,212791871,US -212791872,212792063,VI -212792064,212793327,US -212793328,212793335,PR -212793336,212794575,US +212789096,212791807,US +212791808,212792063,VI +212792064,212793087,US +212793088,212793343,PR +212793344,212794575,US 212794576,212794583,VI -212794584,214698071,US +212794584,213766399,US +213766400,213766655,CA +213766656,214698071,US 214698072,214698087,VI 214698088,214698111,US 214698112,214698119,VI @@ -1148,17 +1199,18 @@ 214698240,214698255,VI 214698256,214698303,US 214698304,214698311,VI -214698312,214699647,US -214699648,214699775,VI -214699776,214778367,US -214778368,214778879,PR -214778880,216417663,US +214698312,214699519,US +214699520,214699647,PR +214699648,214700031,VI +214700032,214778367,US +214778368,214778623,PR +214778624,216417663,US 216417664,216417727,PR -216417728,219187465,US +216417728,217709055,US +217709056,217709311,PR +217709312,219187465,US 219187466,219187467,EU -219187468,219249919,US -219249920,219250175,NL -219250176,219512063,US +219187468,219512063,US 219512064,219512319,GB 219512320,234881023,US 234881024,234883071,CN @@ -1257,11 +1309,9 @@ 265525504,265525759,AP 265525760,265529599,US 265529600,265529855,AP -265529856,265545983,US -265545984,265546239,CN -265546240,266059775,US -266059776,266067967,IN -266067968,266070271,US +265529856,266062079,US +266062080,266062335,IN +266062336,266070271,US 266070272,266070527,AU 266070528,266578175,US 266578176,266578431,CA @@ -1273,11 +1323,14 @@ 288167424,288167935,CA 288167936,288169471,US 288169472,288169983,CA -288169984,288196607,US +288169984,288176127,US +288176128,288178175,MX +288178176,288196607,US 288196608,288197119,CA 288197120,288197631,US 288197632,288198143,CA -288198144,288212991,US +288198144,288198655,CL +288198656,288212991,US 288212992,288215039,CA 288215040,288223231,US 288223232,288227327,CA @@ -1285,7 +1338,9 @@ 289406976,289603583,IE 289603584,289628415,GB 289628416,289628671,US -289628672,289669119,GB +289628672,289652735,GB +289652736,289653759,NL +289653760,289669119,GB 289669120,289734655,FR 289734656,289746943,GB 289746944,289748991,US @@ -1339,17 +1394,18 @@ 290423808,290424831,SE 290424832,290513663,US 290513664,290513919,MY -290513920,290856959,US -290856960,290865151,AU -290865152,344260607,US -344260608,344261119,GB +290513920,344260607,US +344260608,344260863,GB +344260864,344261119,EU 344261120,344261778,US 344261779,344261779,EU 344261780,344262655,US 344262656,344262911,GB 344262912,344268817,US 344268818,344268818,EU -344268819,344270932,US +344268819,344270860,US +344270861,344270861,GB +344270862,344270932,US 344270933,344270933,DE 344270934,344588543,US 344588544,344589055,GB @@ -1359,13 +1415,12 @@ 344592947,344593151,GB 344593152,344593638,US 344593639,344593639,SE -344593640,344645631,US -344645632,344653823,GB +344593640,344651263,US +344651264,344651519,GB +344651520,344653823,US 344653824,344659519,AU 344659520,344659520,SG -344659521,344662591,AU -344662592,344662592,MY -344662593,344662783,AU +344659521,344662783,AU 344662784,344663039,MY 344663040,344670719,AU 344670720,344671231,IN @@ -1387,7 +1442,23 @@ 387055616,387121151,PR 387121152,387825663,US 387825664,387833855,CA -387833856,394264575,US +387833856,391110655,US +391110656,391110911,IL +391110912,391111167,GB +391111168,391872511,US +391872512,391888895,CA +391888896,391938047,US +391938048,391946239,CA +391946240,391958527,US +391970816,394264575,US +398458880,400760831,US +400760832,400769023,CA +400769024,400883711,US +400883712,400912383,CA +400912384,401145855,US +401145856,401178623,CA +401211392,401244159,US +401604608,402128895,US 402653184,405012479,US 405012480,405143551,CA 405143552,405180415,US @@ -1416,9 +1487,7 @@ 406216704,406241279,US 406241280,406257663,PR 406257664,406274047,US -406274048,406282345,PR -406282346,406282346,US -406282347,406290431,PR +406274048,406290431,PR 406290432,406298623,US 406298624,406306815,PR 406306816,406323199,CA @@ -1446,7 +1515,7 @@ 410124288,410189823,CA 410189824,410648575,US 410648576,410714111,CA -410714112,411164671,US +410714112,411156479,US 411164672,411168767,CA 411168768,411303935,US 411303936,411369471,NL @@ -1604,7 +1673,6 @@ 459540480,459541503,JP 459541504,459542527,IN 459542528,459544575,HK -459544576,459545599,AU 459545600,459547647,JP 459548672,459550719,TH 459550720,459554815,JP @@ -1677,8 +1745,7 @@ 460596224,460597247,AU 460598272,460599295,CN 460599296,460601343,IN -460601344,460601599,US -460601600,460602367,AF +460601344,460602367,AF 460602368,460603391,KH 460603392,460718079,KR 460718080,460722175,JP @@ -1689,7 +1756,10 @@ 460931072,460933119,AU 460933120,460935167,CN 460935168,460937215,ID -460937216,460938239,AU +460937216,460937471,NZ +460937472,460937727,AU +460937728,460937983,NZ +460937984,460938239,AU 460938240,460939263,JP 460939264,460940287,NZ 460940288,460941311,IN @@ -1799,8 +1869,7 @@ 520323072,520325119,CH 520325120,520327167,FR 520327168,520329215,DE -520329216,520330239,SE -520330240,520331263,NL +520329216,520331263,SE 520331264,520339455,IT 520339456,520343551,UA 520343552,520355839,GB @@ -1811,28 +1880,37 @@ 520489984,520490495,RU 520490496,520490751,RO 520490752,520491007,RU -520491008,520491775,GB +520491008,520491263,GB +520491264,520491391,IS +520491392,520491647,IT +520491648,520491775,IS 520491776,520492031,IE -520492032,520493567,GB -520493568,520494079,GB -520494080,520494591,IT +520492032,520492543,GB +520492544,520492799,IT +520492800,520493055,GB +520493056,520494079,IT +520494080,520494335,FR +520494336,520494591,IT 520494592,520494847,CH 520494848,520495103,DK -520495104,520495615,DE -520495616,520495871,IT +520495104,520495871,IT 520495872,520496383,DE -520496384,520497151,IT +520496384,520496895,IT +520496896,520497151,ES 520497152,520497407,FR -520497408,520497663,IT -520497664,520498175,FR +520497408,520497919,IT +520497920,520498175,FR 520498176,520498431,CH 520498432,520498687,SE -520498688,520499711,FR -520499712,520500223,DE +520498688,520498943,IT +520498944,520499199,FR +520499200,520500223,IT 520500224,520500479,LU -520500480,520501247,DE -520501248,520501759,IT -520501760,520503295,GB +520500480,520500735,DE +520500736,520501759,IT +520501760,520502271,GB +520502272,520502783,IT +520502784,520503295,GB 520503296,520505343,PL 520505344,520507391,GB 520507392,520511487,TR @@ -1844,9 +1922,7 @@ 520560640,520562687,TR 520562688,520564735,PL 520564736,520566783,IE -520566784,520567039,CH -520567040,520567295,CH -520567296,520568831,CH +520566784,520568831,CH 520568832,520589311,IR 520589312,520593407,IT 520593408,520595455,AM @@ -1891,7 +1967,8 @@ 520986624,520988671,PS 520988672,520990719,DE 520990720,520992767,RU -520994816,521011199,BG +520994816,521010175,BG +521010176,521011199,DE 521011200,521057279,RO 521057280,521058303,MD 521058304,521076735,RO @@ -1903,7 +1980,8 @@ 521093120,521095167,DE 521095168,521097215,IT 521097216,521101311,RU -521101312,521103359,IT +521101312,521102335,US +521102336,521103359,IT 521103360,521105407,GB 521105408,521107455,IS 521107456,521109503,FI @@ -1921,11 +1999,11 @@ 521555968,521558015,NL 521558016,521560063,CY 521560064,521562111,PL -521562112,521562911,DE -521562912,521564159,GB +521562112,521564159,GB 521564160,521565183,GR 521565184,521565439,GB -521565440,521566207,GR +521565440,521565695,US +521565696,521566207,GR 521566208,521568255,LU 521568256,521601023,PT 521601024,521666559,RU @@ -2078,10 +2156,7 @@ 523010048,523014143,IL 523014144,523018239,ES 523018240,523022335,IT -523022336,523024895,RU -523024896,523025407,BZ -523025408,523025919,RU -523025920,523026431,NL +523022336,523026431,RU 523026432,523030527,TR 523030528,523034623,FR 523034624,523038719,SE @@ -2094,8 +2169,7 @@ 523190272,523192319,FI 523192320,523194367,ES 523194368,523196415,DE -523196416,523198207,AE -523198208,523198463,LB +523196416,523198463,AE 523198464,523202559,CZ 523202560,523223039,RU 523223040,523225087,AM @@ -2202,26 +2276,28 @@ 529596416,529661951,TR 529661952,529727487,GE 529727488,529793023,HR -529793024,529827839,RU +529793024,529817343,CZ +529817344,529817599,RU +529817600,529826815,CZ +529826816,529827839,RU 529827840,529828863,CZ 529828864,529835007,RU 529835008,529836031,KG -529836032,529836543,UA -529836544,529837055,IL +529836032,529837055,CZ 529837056,529839103,RU -529839104,529839615,UA -529839616,529840127,CY +529839104,529840127,CZ 529840128,529841151,RU 529841152,529842175,UA 529842176,529843199,IN -529843200,529844735,RU -529844736,529845247,UA +529843200,529844223,RU +529844224,529845247,CZ 529845248,529846271,UZ -529846272,529848319,RU +529846272,529847295,CZ +529847296,529848319,RU 529848320,529848575,NL 529848576,529849087,CZ -529849088,529849343,NL -529849344,529850111,CZ +529849088,529849599,NL +529849600,529850111,CZ 529850112,529850367,RU 529850368,529853439,CZ 529853440,529856511,RU @@ -2266,31 +2342,24 @@ 531263488,531265535,RU 531265536,531267583,GB 531267584,531275775,UA -531275776,531276799,US -531276800,531277311,GB -531277312,531277823,US +531275776,531277823,US 531277824,531279871,RU 531279872,531281919,CZ 531281920,531283967,RU 531283968,531292159,DE 531292160,531333119,AZ -531333120,531334655,NL -531334656,531335167,NL +531333120,531335167,NL 531335168,531337215,IT 531337216,531339263,CH 531339264,531341311,AL -531341312,531349503,MD +531341312,531349503,KZ 531349504,531351551,RU 531351552,531355647,NL 531355648,531357695,IR 531357696,531361791,HU -531361792,531365887,CH -531365888,531366399,DE -531366400,531367935,CH +531361792,531367935,CH 531367936,531369983,DE -531369984,531371007,CH -531371008,531371519,US -531371520,531372031,JP +531369984,531372031,CH 531372032,531372287,DE 531372288,531372543,CH 531372544,531372799,DE @@ -2304,8 +2373,7 @@ 531408896,531415039,PL 531415040,531423231,RU 531423232,531425279,NO -531425280,531427327,FR -531427328,531428351,GB +531425280,531428351,GB 531428352,531428359,IT 531428360,531428495,GB 531428496,531428503,IT @@ -2319,29 +2387,27 @@ 531429168,531429175,IT 531429176,531429239,GB 531429240,531429247,IT -531429248,531429407,GB +531429248,531429391,GB +531429392,531429399,IT +531429400,531429407,GB 531429408,531429415,IT -531429416,531429447,GB -531429448,531429455,IT -531429456,531429879,GB -531429880,531429887,IT -531429888,531430007,GB +531429416,531430007,GB 531430008,531430015,IT 531430016,531430079,GB 531430080,531430087,IT 531430088,531430319,GB 531430320,531430327,IT -531430328,531430607,GB -531430608,531430615,IT -531430616,531430655,GB -531430656,531430671,IT +531430328,531430663,GB +531430664,531430671,IT 531430672,531430823,GB 531430824,531430831,IT 531430832,531430847,GB 531430848,531430855,IT 531430856,531430927,GB 531430928,531430935,IT -531430936,531431423,GB +531430936,531431407,GB +531431408,531431415,IT +531431416,531431423,GB 531431424,531496959,RO 531496960,531628031,PL 531628032,531660799,TR @@ -2367,15 +2433,13 @@ 532152320,532168703,DE 532168704,532185087,NL 532185088,532201471,IR -532201472,532211711,RU -532211712,532212223,LU -532212224,532214783,RU -532214784,532215295,AE -532215296,532221951,RU +532201472,532221951,RU 532221952,532223999,IT 532224000,532226047,NO 532226048,532234239,GB -532234240,532242431,DK +532234240,532240127,DK +532240128,532240255,DE +532240256,532242431,DK 532242432,532244479,IT 532244480,532246527,DE 532246528,532250623,BA @@ -2389,22 +2453,27 @@ 532305920,532307967,NO 532307968,532310015,RU 532310016,532312063,GR -532312064,532314111,JE +532312064,532312983,JE +532312984,532312991,GB +532312992,532314111,JE 532314112,532316159,DE 532316160,532324351,RU 532324352,532328447,NL 532328448,532330495,PS 532330496,532332543,CZ 532332544,532340735,PL -532340736,532344319,GB +532340736,532341503,GB +532341504,532341759,DE +532341760,532344319,GB 532344320,532344575,FR -532344576,532348671,GB +532344576,532344831,GB +532344832,532346879,US +532346880,532347391,GB +532347392,532347903,DE +532347904,532348671,GB 532348672,532348927,NL 532348928,532365311,PL -532365312,532365823,AU -532365824,532366335,DE -532366336,532367359,GB -532367360,532373503,DE +532365312,532373503,DE 532373504,532375551,RU 532375552,532377599,IT 532377600,532381695,DE @@ -2422,9 +2491,7 @@ 532733952,532734975,US 532734976,532735999,SE 532736000,532738047,RU -532738048,532738081,GB -532738082,532738082,GB -532738083,532740095,GB +532738048,532740095,GB 532740096,532742143,KG 532742144,532746239,GB 532746240,532752383,IT @@ -2446,14 +2513,13 @@ 532791296,532793343,LT 532793344,532795391,SE 532795392,532797439,CH -532797440,532799487,IE +532797440,532799231,IE +532799232,532799487,GB 532799488,532801535,ES 532801536,532803583,DK 532803584,532805631,FR 532805632,532807679,SE -532807680,532984575,IT -532984576,532984831,US -532984832,533200895,IT +532807680,533200895,IT 533200896,533233663,TR 533233664,533250047,IE 533250048,533254143,RU @@ -2461,7 +2527,9 @@ 533256192,533262335,RU 533262336,533264383,ES 533264384,533266431,RU -533266432,533331967,FR +533266432,533320703,FR +533320704,533320959,SS +533320960,533331967,FR 533331968,533397503,UA 533397504,533463039,KW 533463040,533479423,RU @@ -2485,7 +2553,8 @@ 533725184,533807103,SE 533807104,533811199,LT 533811200,533815295,DE -533815296,533816319,CY +533815296,533815296,TR +533815297,533816319,CY 533816320,533816320,TR 533816321,533817343,CY 533817344,533817344,TR @@ -2502,9 +2571,7 @@ 533859232,533859263,TR 533859264,533859647,HU 533859648,533859663,AT -533859664,533859839,HU -533859840,533860095,TR -533860096,533860351,HU +533859664,533860351,HU 533862400,533864447,GB 533864448,533889023,TR 533889024,533891071,GB @@ -2562,14 +2629,18 @@ 534378496,534380543,FR 534380544,534511615,AE 534511616,534512639,BZ -534512640,534513151,DE +534512640,534512895,NL +534512896,534513151,US 534513152,534513215,BS 534513216,534513279,VG -534513280,534513407,NL -534513408,534513663,DE +534513280,534513663,NL 534513664,534514687,US -534514688,534519039,DE -534519040,534519327,NL +534514688,534517759,DE +534517760,534518783,NL +534518784,534519039,DE +534519040,534519263,NL +534519264,534519295,IT +534519296,534519327,NL 534519328,534519359,PK 534519360,534519391,PE 534519392,534519423,PK @@ -2577,9 +2648,10 @@ 534519456,534519487,BR 534519488,534519519,MX 534519520,534519551,CN -534519552,534519807,GB -534519808,534521855,US -534521856,534523903,DE +534519552,534521855,US +534521856,534522367,DE +534522368,534522879,NL +534522880,534523903,DE 534523904,534527999,LT 534528000,534544383,DE 534544384,534546431,RO @@ -2635,9 +2707,7 @@ 539656192,539660287,IN 539660288,539671103,US 539671104,539671135,JP -539671136,540711935,US -540711936,540712447,NL -540712448,540737535,US +539671136,540737535,US 540737536,540737757,BZ 540737758,540737758,BR 540737759,540803071,BZ @@ -2645,7 +2715,9 @@ 540811264,540814335,SG 540814336,540814591,AP 540814592,540815359,SG -540815360,543752191,US +540815360,540826383,US +540826384,540826399,CA +540826400,543752191,US 543752192,543752447,BM 543752448,543755007,BR 543755008,543755263,CW @@ -2740,9 +2812,9 @@ 543878656,543880191,IT 543880192,543881727,NL 543881728,543883263,GB -543883264,548605695,US -548605696,548605951,PR -548605952,586973439,US +543883264,544436771,US +544436772,544436775,CA +544436776,586973439,US 586973440,586973695,CA 586973696,586975999,US 586976000,586976255,AP @@ -2815,9 +2887,7 @@ 620877824,620879871,DE 620879872,620881919,GB 620881920,620888063,FR -620888064,620927231,SE -620927232,620927487,CZ -620927488,621019135,SE +620888064,621019135,SE 621019136,621150207,DE 621150208,621215743,GR 621215744,621281279,PL @@ -2828,14 +2898,15 @@ 621330432,621346815,PL 621346816,621355007,RU 621355008,621357055,UA -621357056,621359615,RU -621359616,621360127,UA -621360128,621381631,RU +621357056,621361151,RU +621361152,621363199,GB +621363200,621381631,RU 621381632,621383679,FR 621383680,621387775,RU 621387776,621389823,NL 621389824,621391871,SK -621391872,621393919,CY +621391872,621392127,IT +621392128,621393919,CY 621393920,621395967,DE 621395968,621398015,CZ 621398016,621400063,TR @@ -2867,11 +2938,16 @@ 621932544,621934591,UA 621934592,621936639,SE 621936640,621939455,RU -621939456,621940479,GE +621939456,621939458,GE +621939459,621939459,RU +621939460,621940479,GE 621940480,621942527,GB 621942528,621969407,RU -621971456,621972479,IM -621972480,621973503,GB +621971456,621971711,GB +621971712,621971967,IM +621971968,621972479,GB +621972480,621972735,IM +621972736,621973503,GB 621973504,621975551,IE 621975552,621977599,RU 621977600,621981695,FR @@ -2879,8 +2955,8 @@ 621983744,621985791,RS 621985792,621987839,US 621987840,621989887,DK -621989888,621993471,SE -621993472,621993983,DK +621989888,621992959,SE +621992960,621993983,DK 621993984,621998079,SI 621998080,622000127,ES 622000128,622004223,RU @@ -2898,7 +2974,8 @@ 622067712,622329855,RU 622329856,622395391,DE 622395392,622405631,UA -622405632,622407679,ES +622405632,622406655,ES +622406656,622407679,GB 622407680,622409727,DE 622409728,622411775,FR 622411776,622413823,DE @@ -2914,7 +2991,7 @@ 622483456,622485503,GB 622485504,622487551,MK 622487552,622489599,GB -622489600,622493695,US +622489600,622493695,IL 622493696,622497791,MD 622497792,622499839,IL 622499840,622501887,SE @@ -2987,9 +3064,7 @@ 623673344,623689727,NO 623689728,623706111,RU 623706112,623771647,BY -623771648,623774207,GB -623774208,623774719,NL -623774720,623775743,GB +623771648,623775743,GB 623775744,623777791,IE 623777792,623779839,GB 623779840,623783935,IL @@ -3000,18 +3075,18 @@ 623794176,623796223,ES 623796224,623798271,GB 623798272,623800319,GE -623800320,623801855,LU -623801856,623802367,NL -623802368,623803391,SE -623803392,623804415,NL +623800320,623800380,SE +623800381,623801087,LU +623801088,623801343,US +623801344,623801855,LU +623801856,623803135,SE +623803136,623804415,NL 623804416,623806463,RU 623806464,623808511,NL 623808512,623810559,RU 623810560,623812607,ES 623812608,623820799,SE -623820800,623821823,NL -623821824,623822335,US -623822336,623822847,NL +623820800,623822847,NL 623822848,623824895,GB 623824896,623826943,CZ 623826944,623837183,UA @@ -3045,16 +3120,28 @@ 624575064,624575071,US 624575072,624575135,NL 624575136,624575143,US -624575144,624579423,NL +624575144,624576887,NL +624576888,624576895,GB +624576896,624577135,NL +624577136,624577139,GB +624577140,624577151,NL +624577152,624577215,GB +624577216,624578719,NL +624578720,624578723,GB +624578724,624579423,NL 624579424,624579455,US -624579456,624581599,NL +624579456,624580132,NL +624580133,624580133,GB +624580134,624580151,NL +624580152,624580159,ES +624580160,624581599,NL 624581600,624581631,US 624581632,624590847,NL -624590848,624640951,FR +624590848,624640183,FR +624640184,624640187,ES +624640188,624640951,FR 624640952,624640959,PT -624640960,624646351,FR -624646352,624646367,GB -624646368,624658323,FR +624640960,624658323,FR 624658324,624658327,IE 624658328,624658479,FR 624658480,624658483,DE @@ -3088,7 +3175,9 @@ 624684840,624684843,ES 624684844,624687343,FR 624687344,624687346,CZ -624687347,624689076,FR +624687347,624688731,FR +624688732,624688735,PL +624688736,624689076,FR 624689077,624689078,BE 624689079,624689151,FR 624689152,624691199,DE @@ -3137,8 +3226,9 @@ 625506304,625508351,PL 625508352,625512447,AZ 625512448,625514495,DE -625514496,625515520,GB -625515521,625516543,GG +625514496,625515263,GB +625515264,625515519,GG +625515520,625516543,GB 625516544,625518591,BE 625518592,625518847,NL 625518848,625519103,US @@ -3188,10 +3278,7 @@ 625842176,625844223,PL 625844224,625846271,IT 625846272,625848319,RS -625848320,625851391,GB -625851392,625851903,NL -625851904,625852415,SE -625852416,625854463,GB +625848320,625854463,GB 625854464,625856511,DE 625856512,625860607,IT 625860608,625868799,CZ @@ -3224,9 +3311,7 @@ 628015104,628017151,GB 628017152,628019199,CH 628019200,628021247,UZ -628021248,628021504,GB -628021505,628022015,IE -628022016,628023295,GB +628021248,628023295,GB 628023296,628029439,RU 628029440,628031487,GB 628031488,628097023,HU @@ -3236,8 +3321,7 @@ 628236288,628244479,DE 628244480,628246527,FR 628246528,628248575,MT -628248576,628249599,NL -628249600,628250623,FI +628248576,628250623,FI 628250624,628252671,NL 628252672,628259071,DE 628259072,628260863,SC @@ -3268,8 +3352,11 @@ 628847360,628847615,FR 628847616,628848639,GB 628848640,628850687,DE -628850688,628852735,NO -628852736,628867071,SE +628850688,628850943,SE +628850944,628851199,NO +628851200,628851967,SE +628851968,628852223,NO +628852224,628867071,SE 628867072,628869119,IR 628869120,628871167,PL 628871168,628873215,US @@ -3303,7 +3390,8 @@ 629327872,629329919,IR 629329920,629331967,ES 629331968,629334015,IT -629334016,629338111,GB +629334016,629334271,NL +629334272,629338111,GB 629338112,629340159,BG 629340160,629342207,GB 629342208,629374975,BH @@ -3318,25 +3406,25 @@ 629669888,629735423,FI 629735424,629800959,IR 629800960,629866495,DE -629866496,629879807,RU +629866496,629874687,NL +629874688,629879807,RU 629879808,629880063,DE 629880064,629880831,RU 629880832,629881855,EE 629881856,629882879,LT -629882880,629882880,EU -629882881,629882889,GB -629882890,629882890,GB -629882891,629883135,GB -629883136,629883903,EU +629882880,629883135,GB +629883136,629883391,AU +629883392,629883903,EU 629883904,629884159,AU -629884160,629884671,EU +629884160,629884415,EU +629884416,629884671,CL 629884672,629884927,AU 629884928,629886975,PL 629886976,629889023,RU 629889024,629891071,IT 629891072,629895167,UA 629895168,629897215,AL -629897216,629901311,ES +629897216,629899263,ES 629901312,629903359,NL 629903360,629905407,PL 629905408,629907455,SE @@ -3346,7 +3434,8 @@ 629985280,629987327,TR 629987328,629989375,SE 629989376,629991423,FR -629991424,629993471,NL +629991424,629992447,NL +629992448,629993471,US 629993472,629997567,JO 629997568,630063103,SA 630063104,630128639,IL @@ -3382,7 +3471,6 @@ 630513664,630515711,IT 630515712,630517759,DE 630517760,630519807,GB -630519808,630521855,IE 630521856,630523135,GR 630523136,630587391,CY 630587392,630718463,KZ @@ -3405,9 +3493,7 @@ 630806528,630808575,ES 630808576,630810175,NL 630810176,630816767,CH -630816768,630828543,RO -630828544,630829055,FR -630829056,630833151,RO +630816768,630833151,RO 630833152,630849535,NL 630849536,630980607,TR 630980608,631001087,RO @@ -3438,7 +3524,8 @@ 631242752,632291327,FR 632291328,632815615,IT 632815616,632946687,BE -632946688,633012223,AT +632946688,632995839,AT +632995840,633012223,IT 633012224,633077759,FR 633077760,633094143,RU 633094144,633098239,NL @@ -3483,9 +3570,9 @@ 634075136,634077183,NL 634077184,634093567,BA 634093568,634109951,GB -634109952,634110207,IE -634110208,634110463,GB -634110464,634111999,IE +634109952,634111231,IE +634111232,634111487,GB +634111488,634111999,IE 634112000,634114047,RU 634114048,634116095,SE 634116096,634118143,NL @@ -3542,15 +3629,15 @@ 635106304,635107327,NL 635107328,635109375,DE 635109376,635174911,FI -635174912,635179713,GB -635179714,635179714,GB -635179715,635183103,GB +635174912,635183103,GB 635183104,635185151,NL 635185152,635187199,IT 635187200,635191295,FR 635191296,635195391,RS 635195392,635197439,RU -635197440,635199583,GB +635197440,635199495,GB +635199496,635199503,IT +635199504,635199583,GB 635199584,635199607,IT 635199608,635199647,GB 635199648,635199655,IT @@ -3564,9 +3651,7 @@ 635200048,635200055,IT 635200056,635200071,GB 635200072,635200079,IT -635200080,635200087,GB -635200088,635200095,IT -635200096,635200143,GB +635200080,635200143,GB 635200144,635200151,IT 635200152,635200167,GB 635200168,635200175,IT @@ -3584,7 +3669,9 @@ 635200432,635200439,IT 635200440,635200631,GB 635200632,635200639,IT -635200640,635200959,GB +635200640,635200799,GB +635200800,635200807,IT +635200808,635200959,GB 635200960,635200967,IT 635200968,635200991,GB 635200992,635200999,IT @@ -3592,8 +3679,8 @@ 635201088,635201095,IT 635201096,635201159,GB 635201160,635201167,IT -635201168,635201255,GB -635201256,635201263,IT +635201168,635201247,GB +635201248,635201263,IT 635201264,635201383,GB 635201384,635201391,IT 635201392,635203583,GB @@ -3612,15 +3699,17 @@ 635285504,635287551,ME 635287552,635289599,RU 635289600,635291647,DE -635291648,635292159,RU -635292160,635292415,KZ -635292416,635293695,RU +635291648,635293695,RU 635293696,635295743,HU 635295744,635297791,GB 635297792,635299839,SE 635299840,635301887,ES 635301888,635305983,CZ -635305984,635437055,NL +635305984,635360255,NL +635360256,635360511,SS +635360512,635425791,NL +635425792,635426047,SS +635426048,635437055,NL 635437056,635502591,RO 635502592,635568127,PL 635568128,635699199,IT @@ -3631,9 +3720,7 @@ 635723776,635725823,ES 635725824,635727871,US 635727872,635729919,RU -635729920,635732479,DE -635732480,635732991,US -635732992,635748351,DE +635729920,635748351,DE 635748352,635764735,IE 635764736,635830271,UA 635830272,635842559,DE @@ -3641,8 +3728,7 @@ 635846656,635854847,ES 635854848,635856895,NL 635856896,635858943,TR -635858944,635860479,RU -635860480,635860991,NL +635858944,635860991,RU 635860992,635863039,BE 635863040,635895807,RU 635895808,635961343,KW @@ -3678,11 +3764,7 @@ 636186624,636188671,NL 636188672,636190719,GB 636190720,636223487,RU -636223488,636253439,IQ -636253440,636253695,US -636253696,636273407,IQ -636273408,636273663,US -636273664,636485631,IQ +636223488,636485631,IQ 636485632,636747775,SA 636747776,636780543,DE 636780544,636813311,HR @@ -3695,18 +3777,17 @@ 636960768,636967167,DE 636967168,636967935,FR 636967936,636968191,IT -636968192,636968447,ES -636968448,636968959,DE +636968192,636968319,DE +636968320,636968447,ES +636968448,636968703,BE +636968704,636968959,DE 636968960,636975103,TR 636975104,636977151,ES 636977152,637140991,PL -637140992,637185535,SE -637185536,637186047,DK -637186048,637206527,SE +637140992,637206527,SE 637206528,637239295,NL 637239296,637272063,RO -637272064,637272575,RU -637272576,637276159,DE +637272064,637276159,DE 637276160,637278207,RU 637278208,637288447,GB 637288448,637296639,AM @@ -3715,213 +3796,202 @@ 637300736,637302783,NO 637302784,637304831,NL 637304832,637313023,CH -637313024,637313535,EU -637313536,637314047,NL -637314048,637315071,EU -637315072,637317119,NL +637313024,637317119,EU 637317120,637319167,ES 637319168,637321215,AT 637321216,637323263,GB 637323264,637325311,FR 637325312,637327359,NO 637327360,637329407,IR -637329408,637332991,AT -637332992,637333247,BR -637333248,637337599,AT +637329408,637329663,SI +637329664,637329919,FR +637329920,637330175,AT +637330176,637330431,DE +637330432,637330943,JP +637330944,637331199,GB +637331200,637331455,IE +637331456,637331711,GB +637331712,637331967,AT +637331968,637332223,DE +637332224,637332991,AT +637332992,637333503,BR +637333504,637333759,AU +637333760,637334271,AT +637334272,637334527,TW +637334528,637334783,KR +637334784,637335039,AE +637335040,637335295,SK +637335296,637335551,BG +637335552,637335807,DE +637335808,637336063,HK +637336064,637336319,AT +637336320,637336575,CL +637336576,637336831,AR +637336832,637337087,IT +637337088,637337599,RU 637337600,637403135,NO 637403136,637534207,IR -637534208,641736703,US -641736704,641737727,CA -641737728,641763071,US +637534208,641736959,US +641736960,641737215,CA +641737216,641737471,US +641737472,641737727,CA +641737728,641761535,US +641761536,641761791,CA +641761792,641763071,US 641763072,641763327,CA 641763328,641765375,US 641765376,641765887,CA -641765888,641766399,US -641766400,641767423,CA -641767424,641768447,US -641768448,641768959,CA -641768960,641826815,US -641826816,641827327,MX -641827328,642088959,US -642088960,642097151,CA -642097152,642695167,US -642695168,642696191,US -642696192,642793471,US -642793472,642793727,CA -642793728,642793983,US -642793984,642795519,CA -642795520,642796031,CA -642796032,642796543,CA -642796544,642797055,CA -642797056,642797567,CA -642797568,642924543,US -642924544,642928639,MX -642928640,643235839,US -643235840,643244031,CA -643244032,643295231,US -643295232,643295743,PR -643295744,643302911,US +641765888,641766655,US +641766656,641767167,CA +641767168,641768703,US +641768704,641768959,CA +641768960,641771519,US +641771520,641771775,CA +641771776,641827071,US +641827072,641827327,MX +641827328,641828863,US +641828864,641829119,MX +641829120,642093055,US +642093056,642093695,CA +642093696,642793471,US +642793472,642793983,CA +642793984,643240447,US +643240448,643240703,CA +643240704,643242495,US +643242496,643242751,CA +643242752,643295743,US +643295744,643296255,PR +643296256,643302911,US 643302912,643303167,CA -643303168,643875071,US -643875072,643875327,US -643875328,644048127,US -644048128,644048383,US -644048384,644049151,US -644049152,644049407,US -644049408,644055551,US -644055552,644055807,CA -644055808,644055935,US -644055936,644055967,CA -644055968,644056063,US +643303168,643351551,US +643351552,643351807,GB +643351808,644055551,US +644055552,644056047,CA +644056048,644056063,US 644056064,644056319,CA 644056320,644056575,US 644056576,644056831,CA 644056832,644057087,US 644057088,644057599,CA -644057600,644058111,US -644058112,644058207,CA -644058208,644058215,US -644058216,644059135,CA -644059136,644059391,US -644059392,644060671,US +644057600,644058175,US +644058176,644058239,CA +644058240,644058367,US +644058368,644058879,CA +644058880,644060671,US 644060672,644061183,CA 644061184,644063231,US 644063232,644063743,CA 644063744,644063999,US -644064000,644064767,CA -644064768,644065535,US -644065536,644065791,CA -644065792,644069663,US -644069664,644069887,CA -644069888,644070143,US +644064000,644064255,CA +644064256,644064511,US +644064512,644064767,CA +644064768,644065055,US +644065056,644065279,CA +644065280,644070143,US 644070144,644070399,CA -644070400,644084479,US -644084480,644084607,GU -644084608,644093439,US -644093440,644093695,US -644093696,644121855,US -644121856,644122111,US -644122112,644239359,US -644239360,644240383,CA -644240384,644247551,US -644247552,644248575,CA -644248576,644323391,US +644070400,644323391,US 644323392,644323407,CA 644323408,644389375,US 644389376,644390143,CA -644390144,644390655,US -644390656,644390911,CA -644390912,644403199,US -644403200,644403631,CA -644403632,644403639,US -644403640,644403711,CA -644403712,644414207,US +644390144,644403199,US +644403200,644403455,CA +644403456,644414207,US 644414208,644414463,CA 644414464,644422911,US 644422912,644423423,JP -644423424,644569087,US -644569088,644571135,PR -644571136,644582143,US -644582144,644582399,CA -644582400,644628735,US +644423424,644569343,US +644569344,644569599,PR +644569600,644570111,US +644570112,644570367,PR +644570368,644628735,US 644628736,644628991,CA -644628992,644629247,US -644629248,644629503,CA -644629504,644632319,US +644628992,644632319,US 644632320,644632831,CA 644632832,644634367,US 644634368,644634623,CA 644634624,644718847,US 644718848,644718911,CA -644718912,644719615,US -644719616,644720639,CA -644720640,644759551,US -644759552,644759807,CA -644759808,644761343,US +644718912,644760575,US +644760576,644760831,CA +644760832,644761343,US 644761344,644761599,CA -644761600,644763903,US -644763904,644764159,CA -644764160,644833279,US -644833280,644834303,CA -644834304,644834815,US -644834816,644835327,CA -644835328,644836351,US -644836352,644837375,CA -644837376,644838911,US -644838912,644841471,CA -644841472,644896511,US -644896512,644896767,CA -644896768,644897919,US -644897920,644897983,CA -644897984,644899839,US +644761600,644833791,US +644833792,644834047,CA +644834048,644834815,US +644834816,644835071,CA +644835072,644836351,US +644836352,644836607,CA +644836608,644836863,US +644836864,644837119,CA +644837120,644838911,US +644838912,644840447,CA +644840448,644875519,US +644875520,644875567,CA +644875568,644875583,US +644875584,644875775,CA +644875776,644877311,US +644877312,644877567,CA +644877568,644894975,US +644894976,644895231,CA +644895232,644897791,US +644897792,644898047,CA +644898048,644899839,US 644899840,644900095,CA 644900096,644901631,US 644901632,644901887,CA -644901888,644902911,US -644902912,644903423,CA -644903424,644904959,US -644904960,644905215,CA -644905216,644981759,US -644981760,644982015,CA -644982016,644982271,US +644901888,644982271,US 644982272,644982527,CA -644982528,644985855,US -644985856,644986879,CA -644986880,644987135,US +644982528,644986111,US +644986112,644986367,CA +644986368,644987135,US 644987136,644987391,CA -644987392,645001215,US -645001216,645003263,US -645003264,645185535,US -645185536,645186047,CA -645186048,645187327,US +644987392,645185535,US +645185536,645185791,CA +645185792,645187327,US 645187328,645187583,CA 645187584,645188095,US -645188096,645188607,CA -645188608,645219327,US -645219328,645220351,CA -645220352,645221375,US +645188096,645188351,CA +645188352,645221375,US 645221376,645222399,CA 645222400,645223423,US 645223424,645223679,CA 645223680,645225471,US 645225472,645225727,CA -645225728,645227519,US -645227520,645228287,CA -645228288,645358271,US -645358272,645358335,US -645358336,645361663,US -645361664,645361919,US -645361920,645362175,US -645362176,645362431,US -645362432,645482495,US -645482496,645484543,CA -645484544,645525503,US -645525504,645529599,CA -645529600,645540351,US +645225728,645227263,US +645227264,645228287,CA +645228288,645482495,US +645482496,645482751,CA +645482752,645525759,US +645525760,645526271,CA +645526272,645526783,US +645526784,645527039,CA +645527040,645528063,US +645528064,645528319,CA +645528320,645528831,US +645528832,645529343,CA +645529344,645540351,US 645540352,645540607,CA -645540608,645546239,US -645546240,645548031,CA -645548032,645576703,US +645540608,645547007,US +645547008,645547263,CA +645547264,645576703,US 645576704,645576997,CA 645576998,645576998,US 645576999,645577215,CA -645577216,645577471,US -645577472,645577727,CA -645577728,645644351,US +645577216,645644351,US 645644352,645644415,MX 645644416,645644927,US 645644928,645645055,MX -645645056,645703679,US -645703680,645705727,MX -645705728,645731071,US -645731072,645731199,US -645731200,645736447,US -645736448,645736703,PR -645736704,645810943,US -645810944,645811199,US -645811200,645873663,US -645873664,645877759,CA -645877760,654311423,US +645645056,645646591,US +645646592,645646847,MX +645646848,645704447,US +645704448,645704703,MX +645704704,645705215,US +645705216,645705471,MX +645705472,645873663,US +645873664,645874175,CA +645874176,645875711,US +645875712,645876735,CA +645876736,654311423,US 654311424,654311679,CN 654311680,654311935,AU 654311936,654376959,CN @@ -3946,7 +4016,9 @@ 691011584,691617791,ZA 691617792,691621887,ZW 691621888,691625983,LR -691625984,691630079,KE +691625984,691626751,KE +691626752,691627007,US +691627008,691630079,KE 691630080,691631103,ZA 691631104,691632127,GH 691632128,691633151,NG @@ -3986,9 +4058,7 @@ 692658176,692666367,ZA 692666368,692674559,TZ 692674560,692682751,ML -692682752,692690431,NG -692690432,692690687,GH -692690688,692690943,NG +692682752,692690943,NG 692690944,692707327,TZ 692707328,692715519,NG 692715520,692719615,BJ @@ -4244,18 +4314,19 @@ 696942592,696950783,MR 696950784,696958975,NG 696958976,696963071,TZ -696963072,696966143,UG +696963072,696965887,UG +696965888,696966143,NG 696966144,696967167,TZ 696967168,696971263,MZ 696971264,696975359,KE 696975360,696991743,GH 696991744,697008127,NG -697008128,697040895,KE +697008128,697015295,KE +697015296,697015551,US +697015552,697040895,KE 697040896,697303039,MA 697303040,697827327,ZA -697827328,697937919,EG -697937920,697939967,RU -697939968,697958399,EG +697827328,697958399,EG 697958400,698023935,ZA 698023936,698056703,NG 698056704,698089471,EG @@ -4272,7 +4343,9 @@ 699990016,700055551,ZA 700055552,700121087,RW 700121088,700186623,EG -700186624,700203007,MG +700186624,700196159,MG +700196160,700196223,FR +700196224,700203007,MG 700203008,700219391,MR 700219392,700235775,TZ 700235776,700252159,ZA @@ -4319,7 +4392,6 @@ 700408832,700409855,CM 700409856,700410879,LR 700410880,700411903,NG -700411904,700412927,ZA 700412928,700413951,ZM 700413952,700414975,SC 700414976,700432383,ZA @@ -4327,6 +4399,8 @@ 700434432,700436479,LS 700436480,700437503,NG 700437504,700438527,MU +700438528,700439551,BW +700439552,700440575,GN 700440576,700442623,KE 700442624,700444671,ZW 700444672,700446719,GH @@ -4335,37 +4409,30 @@ 700448768,700579839,ZA 700579840,700587007,A2 700587008,700587263,ZM -700587264,700588031,A2 -700588032,700588286,KM -700588287,700588287,A2 +700587264,700588287,A2 700588288,700588543,KM -700588544,700588798,IO -700588799,700590847,A2 -700590848,700591103,CM -700591104,700592383,A2 -700592384,700592639,KE -700592640,700593151,A2 +700588544,700593151,A2 700593152,700594175,NG 700594176,700595967,A2 700595968,700596223,CD -700596224,700604927,A2 -700604928,700605183,NG -700605184,700632831,A2 -700632832,700633087,SA -700633088,700645375,A2 +700596224,700645375,A2 700645376,700710911,ZA 700710912,700776447,EG 700776448,700841983,RW 700841984,700846079,MU -700846080,700855295,NA +700846080,700850175,NA +700850176,700850431,MU +700850432,700850687,NA +700850688,700854271,MU +700854272,700855295,NA 700855296,700858367,MU 700858368,700858623,ZA 700858624,700866559,MU 700866560,700866815,NG 700866816,700867327,MU 700867328,700867583,NG -700867584,700893183,MU -700893184,700893695,NG +700867584,700893439,MU +700893440,700893695,NG 700893696,700895231,MU 700895232,700897023,NG 700897024,700897279,AO @@ -4415,18 +4482,15 @@ 701423616,701431807,NG 701431808,701439999,CI 701440000,701448191,MG -701448192,701461247,KE -701461248,701461503,CD -701461504,701462783,KE -701462784,701463295,CG -701463296,701463394,KE +701448192,701462783,KE +701462784,701463039,CG +701463040,701463394,KE 701463395,701463395,NG 701463396,701463528,KE 701463529,701463529,NG 701463530,701463807,KE 701463808,701464063,CG -701464064,701464319,KE -701464320,701464575,CG +701464064,701464575,KE 701464576,701472767,MU 701472768,701480959,TG 701480960,701489151,CI @@ -4628,7 +4692,9 @@ 702524416,702525439,ZA 702525440,702526463,DZ 702526464,702527487,TZ -702527488,702528511,CF +702527488,702527999,CF +702528000,702528255,FR +702528256,702528511,CF 702528512,702529535,CG 702529536,702530559,BW 702530560,702531583,EG @@ -4646,11 +4712,15 @@ 702542848,702543871,ZA 702543872,702544895,BJ 702544896,702545919,ZA -702545920,702941695,TN -702941696,702941951,LY -702941952,703070207,TN +702545920,702683135,TN +702683136,702683391,DE +702683392,703070207,TN 703070208,703594495,EG -703594496,704118783,ZA +703594496,703737855,ZA +703737856,703741951,NG +703741952,703747071,ZA +703747072,703748095,CD +703748096,704118783,ZA 704118784,704380927,MA 704380928,704643071,LY 704643072,704644095,CN @@ -4667,7 +4737,9 @@ 704905216,705167359,CN 705167360,707788799,KR 707788800,708575231,CN -708575232,708706303,SG +708575232,708642805,SG +708642806,708642806,AP +708642807,708706303,SG 708706304,708751359,CN 708751360,708752383,ID 708752384,708755455,CN @@ -4725,7 +4797,8 @@ 772276224,772284415,NL 772284416,772284927,RU 772284928,772285183,UA -772285184,772296703,RU +772285184,772285439,UZ +772285440,772296703,RU 772296704,772300799,UA 772300800,772341759,RU 772341760,772407295,NO @@ -4793,15 +4866,14 @@ 772917248,772919295,RU 772919296,772923391,GB 772923392,772925439,AT -772925440,772927487,GB +772925440,772927231,GB +772927232,772927487,ZW 772927488,772929535,UA 772929536,772931583,RU 772931584,772933631,UA -772933632,772933887,GB -772933888,772933904,IE -772933905,772933920,GB -772933921,772933928,IE -772933929,772935679,GB +772933632,772933919,GB +772933920,772933935,IE +772933936,772935679,GB 772935680,772937727,PS 772937728,772939775,IT 772939776,772941823,BE @@ -4858,10 +4930,11 @@ 773048320,773050367,LV 773050368,773052415,IE 773052416,773054463,NL -773054464,773054719,RS -773054720,773055487,AL -773055488,773056255,RS -773056256,773056511,AL +773054464,773055231,AL +773055232,773055743,RS +773055744,773055871,AL +773055872,773055999,RS +773056000,773056511,AL 773056512,773058559,IT 773058560,773060607,BE 773060608,773062655,DK @@ -4882,9 +4955,7 @@ 773120000,773124095,GB 773124096,773128191,CH 773128192,773132287,DE -773132288,773134335,IT -773134336,773134847,CH -773134848,773136383,IT +773132288,773136383,IT 773136384,773140479,DK 773140480,773144575,CY 773144576,773148671,RU @@ -4899,12 +4970,14 @@ 773167200,773167207,NL 773167208,773167359,US 773167360,773167615,NL -773167616,773168391,US +773167616,773168127,US +773168128,773168383,NL +773168384,773168391,US 773168392,773168415,NL -773168416,773168511,US -773168512,773168895,NL -773168896,773169023,US -773169024,773173247,NL +773168416,773168639,US +773168640,773168895,NL +773168896,773169151,US +773169152,773173247,NL 773173248,773177343,IT 773177344,773181439,FR 773181440,773185535,PL @@ -4913,7 +4986,15 @@ 773197824,773201919,CH 773201920,773206015,DE 773206016,773210111,RU -773210112,773214207,US +773210112,773210623,US +773210624,773211135,ES +773211136,773211391,FR +773211392,773211647,US +773211648,773211903,NL +773211904,773212159,US +773212160,773212671,NL +773212672,773213183,GB +773213184,773214207,US 773214208,773218303,FR 773218304,773222399,IS 773222400,773226495,SE @@ -5062,13 +5143,19 @@ 773830656,773832703,NO 773832704,773834751,FR 773834752,773835007,GB -773835008,773836543,IM +773835008,773835263,IM +773835264,773835519,GB +773835520,773835775,IM +773835776,773836031,GB +773836032,773836543,IM 773836544,773836799,GB 773836800,773838847,FR 773838848,773840895,DE 773840896,773842943,GB 773842944,773844991,EU -773844992,773846015,GB +773844992,773845247,GB +773845248,773845503,GG +773845504,773846015,GB 773846016,773846527,GG 773846528,773847039,GB 773847040,773849087,IT @@ -5089,11 +5176,7 @@ 773963776,773971967,ME 773971968,773980159,UA 773980160,773988351,GB -773988352,773999615,ES -773999616,774000127,NL -774000128,774000771,ES -774000772,774000772,NL -774000773,774001663,ES +773988352,774001663,ES 774001664,774002687,NL 774002688,774002842,ES 774002843,774002843,EU @@ -5319,19 +5402,25 @@ 774162337,774162346,AZ 774162347,774162366,US 774162367,774162375,VA -774162376,774162386,MX -774162387,774162396,ZW -774162397,774162406,SZ +774162376,774162376,MX +774162377,774162386,GB +774162387,774162391,DE +774162392,774162396,ZW +774162397,774162399,SZ +774162400,774162402,DE +774162403,774162406,SZ 774162407,774162416,SD 774162417,774162426,BF 774162427,774162432,VA 774162433,774162442,GB 774162443,774162452,BA -774162453,774162462,WS +774162453,774162460,BO +774162461,774162462,WS 774162463,774162472,SR 774162473,774162482,PT 774162483,774162492,CK -774162493,774162502,KI +774162493,774162500,IT +774162501,774162502,KI 774162503,774162512,NU 774162513,774162522,TO 774162523,774162532,CL @@ -5391,11 +5480,16 @@ 774162967,774162967,LI 774162968,774162969,MX 774162970,774162970,BY -774162971,774162974,VA +774162971,774162974,MX 774162975,774162975,MY 774162976,774162979,VA 774162980,774162980,IN -774162981,774162999,VA +774162981,774162983,BO +774162984,774162984,VA +774162985,774162988,SX +774162989,774162989,VA +774162990,774162993,MX +774162994,774162999,VA 774163000,774163000,PK 774163001,774163009,BO 774163010,774163010,VE @@ -5489,7 +5583,7 @@ 774438912,774455295,DE 774455296,774471679,RU 774471680,774488063,PL -774488064,774504447,RO +774488064,774504447,IR 774504448,774520831,RU 774520832,774537215,BH 774537216,774553599,RU @@ -5543,7 +5637,7 @@ 775710720,775716863,PS 775716864,775749631,GB 775749632,775847935,RU -775847936,775880703,RO +775847936,775880703,IR 775880704,775913471,UA 775913472,775946239,RU 775946240,776077311,GB @@ -5557,29 +5651,35 @@ 778043392,778108927,UA 778108928,778174463,RO 778174464,778239999,UA -778240000,778241791,AL -778241792,778242047,RS -778242048,778244095,AL -778244096,778244351,RS -778244352,778248447,AL -778248448,778248703,RS -778248704,778255871,AL -778255872,778256127,RS -778256128,778304255,AL +778240000,778247679,AL +778247680,778248191,RS +778248192,778251263,AL +778251264,778251519,RS +778251520,778304255,AL 778304256,778304511,SI 778304512,778305535,AL 778305536,778371071,IR 778371072,778436607,RU -778436608,778498047,RO +778436608,778476031,RO +778476032,778476287,MD +778476288,778498047,RO 778498048,778500095,NL 778500096,778502143,RO 778502144,778567679,GR 778567680,778633215,TR -778633216,778666879,FR +778633216,778666479,FR +778666480,778666495,DE +778666496,778666879,FR 778666880,778666943,GB -778666944,778670975,FR +778666944,778668863,FR +778668864,778668895,DE +778668896,778670975,FR 778670976,778670976,DE -778670977,778679212,FR +778670977,778677471,FR +778677472,778677475,DE +778677476,778677503,FR +778677504,778677507,GB +778677508,778679212,FR 778679213,778679214,FI 778679215,778680227,FR 778680228,778680231,IE @@ -5587,11 +5687,13 @@ 778681504,778681507,DE 778681508,778691711,FR 778691712,778691727,GB -778691728,778698751,FR +778691728,778695471,FR +778695472,778695475,ES +778695476,778695487,FR +778695488,778695503,BE +778695504,778698751,FR 778698752,778764287,TR -778764288,778767871,HU -778767872,778768383,RO -778768384,778829823,HU +778764288,778829823,HU 778829824,778895359,RO 778895360,778960895,LV 778960896,779026431,DE @@ -5628,7 +5730,7 @@ 781189120,781320191,NL 781320192,781451263,RU 781451264,781455359,PL -781455360,781459455,UA +781455360,781459455,LT 781459456,781463551,IR 781463552,781467647,RU 781467648,781475839,PL @@ -5693,15 +5795,16 @@ 782270464,782306303,RU 782306304,782307327,NL 782307328,782319615,RU -782319616,782335999,ME +782319616,782332927,ME +782332928,782333183,RU +782333184,782335999,ME 782336000,782352383,RU 782352384,782368767,SY 782368768,782385151,UA 782385152,782401535,SE 782401536,782417919,FR 782417920,782434303,AM -782434304,782450175,SI -782450176,782450687,BA +782434304,782450687,SI 782450688,782467071,DE 782467072,782483455,RU 782483456,782499839,FI @@ -5714,19 +5817,21 @@ 782630912,782647295,MD 782647296,782663679,RU 782663680,782663935,GB -782663936,782665471,SC -782665472,782666751,GB -782666752,782667519,SC +782663936,782664447,SC +782664448,782666495,LT +782666496,782667519,SC 782667520,782667775,LU -782667776,782671103,SC -782671104,782671359,SC -782671360,782672639,SC +782667776,782671871,SC +782671872,782672383,CA +782672384,782672639,BG 782672640,782672895,RO -782672896,782675455,SC +782672896,782673663,SC +782673664,782675455,NL 782675456,782676991,DE -782676992,782678015,SC +782676992,782678015,US 782678016,782678527,RU -782678528,782680063,SC +782678528,782678783,UA +782678784,782680063,SC 782680064,782696447,RU 782696448,782712831,DE 782712832,782729215,RU @@ -5849,8 +5954,7 @@ 783775744,783777791,AL 783777792,783779839,RU 783779840,783781887,DK -783781888,783782399,US -783782400,783783935,NL +783781888,783783935,NL 783783936,783785983,DE 783785984,783788031,RU 783788032,783790079,NO @@ -5880,7 +5984,9 @@ 784334848,784465919,FR 784465920,784596991,SE 784596992,784728063,TR -784728064,784793599,GR +784728064,784732927,GR +784732928,784733183,CY +784733184,784793599,GR 784793600,784859135,CY 784859136,785121279,UA 785121280,785252351,PL @@ -5923,9 +6029,7 @@ 786595840,786597887,FR 786597888,786599935,EE 786599936,786601983,ES -786601984,786603007,SE -786603008,786603519,NL -786603520,786604031,SE +786601984,786604031,SE 786604032,786606079,RU 786606080,786608127,GB 786608128,786610175,IT @@ -5995,9 +6099,7 @@ 786804736,786808831,RU 786808832,786812927,BG 786812928,786817023,RU -786817024,786817151,SK -786817152,786817215,SK -786817216,786821119,SK +786817024,786821119,SK 786821120,786825215,HR 786825216,786857983,SA 786857984,786868223,NO @@ -6015,31 +6117,19 @@ 786915328,786917375,SK 786917376,786919423,RO 786919424,786919431,IT -786919432,786919759,GB -786919760,786919767,IT -786919768,786919879,GB +786919432,786919879,GB 786919880,786919887,IT 786919888,786920191,GB 786920192,786920199,IT 786920200,786920343,GB 786920344,786920351,IT -786920352,786920495,GB -786920496,786920503,IT -786920504,786920559,GB -786920560,786920567,IT -786920568,786920639,GB -786920640,786920647,IT -786920648,786920703,GB -786920704,786920711,IT -786920712,786920831,GB -786920832,786920847,IT +786920352,786920839,GB +786920840,786920847,IT 786920848,786920855,GB 786920856,786920863,IT 786920864,786921015,GB 786921016,786921023,IT -786921024,786921319,GB -786921320,786921327,IT -786921328,786921471,GB +786921024,786921471,GB 786921472,786923519,ES 786923520,786925567,FR 786925568,786927615,DE @@ -6049,9 +6139,7 @@ 786933760,786935807,RU 786935808,786937855,DE 786937856,786939903,GB -786939904,786940415,FI -786940416,786941439,SE -786941440,786941951,FI +786939904,786941951,FI 786941952,786943999,CH 786944000,786946047,RU 786946048,786948095,FR @@ -6085,8 +6173,8 @@ 787070976,787087359,RU 787087360,787095551,TR 787095552,787096575,EU -787096576,787097599,CH -787097600,787099391,EU +787096576,787097855,CH +787097856,787099391,EU 787099392,787099647,CH 787099648,787100671,EU 787100672,787103743,CH @@ -6117,7 +6205,9 @@ 787192064,787192319,FR 787192320,787192575,DE 787192576,787192831,SE -787192832,787193855,EU +787192832,787193087,EU +787193088,787193343,FI +787193344,787193855,EU 787193856,787195903,RU 787195904,787197951,GB 787197952,787199999,FR @@ -6139,31 +6229,41 @@ 787333120,787349503,DE 787349504,787365887,BG 787365888,787382271,PL -787382272,787383295,FR -787383296,787384319,GP -787384320,787384831,FR -787384832,787386367,GP +787382272,787383551,FR +787383552,787383807,GP +787383808,787384319,FR +787384320,787384575,GP +787384576,787384831,FR +787384832,787385087,GP +787385088,787385343,FR +787385344,787385599,GP +787385600,787386367,FR 787386368,787386623,MQ -787386624,787386879,FR -787386880,787387135,MQ -787387136,787387391,FR +787386624,787387391,FR 787387392,787387647,MQ -787387648,787388159,FR -787388160,787388415,MQ -787388416,787389183,FR -787389184,787390719,MQ -787390720,787391487,FR -787391488,787391999,MQ -787392000,787392255,FR -787392256,787392511,MQ -787392512,787394559,FR -787394560,787395583,GF -787395584,787395839,FR -787395840,787396607,GF -787396608,787397631,FR +787387648,787387903,FR +787387904,787388415,MQ +787388416,787389439,FR +787389440,787389695,MQ +787389696,787391487,FR +787391488,787391743,MQ +787391744,787391999,FR +787392000,787392255,MQ +787392256,787392511,FR +787392512,787392767,GP +787392768,787393279,FR +787393280,787393535,GP +787393536,787394559,FR +787394560,787394815,GF +787394816,787395327,FR +787395328,787396095,GF +787396096,787396351,FR +787396352,787396607,GF +787396608,787397119,FR +787397120,787397375,MQ +787397376,787397631,FR 787397632,787397887,MQ -787397888,787398143,GF -787398144,787398655,FR +787397888,787398655,FR 787398656,787415039,PL 787415040,787431423,BA 787431424,787447807,SE @@ -6193,11 +6293,7 @@ 787709952,787724287,RU 787724288,787726335,UA 787726336,787742719,RU -787742720,787750911,NL -787750912,787759103,US -787759104,787767295,NL -787767296,787771391,US -787771392,787775487,NL +787742720,787775487,NL 787775488,787808255,DE 787808256,787841023,IR 787841024,787843071,RU @@ -6218,21 +6314,7 @@ 787906560,787939327,GR 787939328,787972095,GB 787972096,788004863,UA -788004864,788005375,GB -788005376,788006399,BE -788006400,788006911,IT -788006912,788007423,FR -788007424,788007935,DE -788007936,788008447,US -788008448,788008959,SG -788008960,788009471,IN -788009472,788009983,ES -788009984,788010495,HK -788010496,788011007,AU -788011008,788011519,CN -788011520,788012031,AR -788012032,788012543,CA -788012544,788013055,RU +788004864,788013055,GB 788013056,788021247,IR 788021248,788029439,SI 788029440,788045823,GB @@ -6261,10 +6343,7 @@ 788234240,788242431,SA 788242432,788250623,IR 788250624,788258815,KG -788258816,788260351,DE -788260352,788260863,NL -788260864,788266495,DE -788266496,788267007,IN +788258816,788267007,DE 788267008,788271103,SE 788271104,788275199,DE 788275200,788279295,AL @@ -6275,8 +6354,7 @@ 788299776,788303871,DE 788303872,788307967,IT 788307968,788312063,RU -788312064,788315135,FR -788315136,788316159,LU +788312064,788316159,FR 788316160,788320255,NL 788320256,788324351,UA 788324352,788328447,CZ @@ -6322,8 +6400,8 @@ 788455424,788457471,FR 788457472,788459519,IT 788459520,788461567,RU -788461568,788463103,JE -788463104,788465663,GB +788461568,788462079,JE +788462080,788465663,GB 788465664,788467711,CZ 788467712,788469759,NO 788469760,788471807,NL @@ -6350,11 +6428,10 @@ 788502528,788504575,IE 788504576,788506623,FR 788506624,788508671,CH -788508672,788509183,FR -788509184,788509695,AT -788509696,788510207,FR -788510208,788510463,AT -788510464,788510719,FR +788508672,788508927,FR +788508928,788509695,AT +788509696,788509951,FR +788509952,788510719,AT 788510720,788512767,ES 788512768,788514815,FI 788514816,788516863,FR @@ -6420,7 +6497,7 @@ 830341120,830406655,NP 830406656,830472191,AU 830472192,830472447,CN -830472448,830472703,TH +830472448,830472703,AU 830472704,830473215,CN 830474240,830475263,SG 830475264,830476287,AU @@ -6470,7 +6547,7 @@ 835715072,835977215,CN 835977216,836042751,JP 836042752,836046847,HK -836046848,836050943,AU +836046848,836050943,SG 836050944,836059135,IN 836059136,836075519,VN 836075520,836501503,TW @@ -6505,30 +6582,33 @@ 838467584,838729727,JP 838729728,838795263,KR 838795264,838860799,AU -838860800,839062271,US +838860800,838995711,US +838995712,838995967,CA +838995968,838996991,US +838996992,838997247,CA +838997248,839027967,US +839027968,839030015,IN +839030016,839062271,US 839062272,839064063,CA 839064064,839069183,US 839069184,839071231,CA -839071232,839072255,US -839072256,839074303,CA -839074304,839101695,US -839101696,839102207,CA -839102208,839352319,US +839071232,839352319,US 839352320,839353343,NL 839353344,839360511,US -839360512,839366911,NL +839360512,839364607,NL +839364608,839366911,US 839366912,839367167,CZ -839367168,839368703,NL +839367168,839368703,US 839368704,839385087,CZ -839385088,840161595,US -840161596,840161596,US -840161597,840269823,US +839385088,840269823,US 840269824,840273919,CA 840273920,840278015,US 840278016,840282111,CA 840282112,840294399,US 840294400,840298495,CA -840298496,840956927,US +840298496,840953855,US +840953856,840954367,JP +840954368,840956927,US 840956928,840957951,JP 840957952,843055103,US 843055104,843644927,CA @@ -6548,9 +6628,7 @@ 846544128,846544383,US 846544384,846546943,US 846546944,846547199,US -846547200,846548991,US -846548992,846549247,US -846549248,846561279,US +846547200,846561279,US 846561280,846594047,CA 846594048,855638015,US 855638016,872415231,GB @@ -6568,7 +6646,9 @@ 897238056,905969663,DE 905969664,920125439,US 920125440,920256511,IE -920256512,920911871,US +920256512,920518655,US +920518656,920649727,CN +920649728,920911871,US 920911872,921042943,IE 921042944,921174015,US 921174016,921255935,BR @@ -6587,15 +6667,17 @@ 960629508,960629508,GB 960629509,960640769,EU 960640770,960640770,GB -960640771,960643365,EU +960640771,960643327,EU +960643328,960643330,FR +960643331,960643331,EU +960643332,960643365,FR 960643366,960643367,GB -960643368,960647167,EU -960647168,960649215,GB -960649216,960651263,EU -960651264,960653311,GB -960653312,960671743,EU -960671744,960673791,DE -960673792,960676607,EU +960643368,960643583,FR +960643584,960652799,EU +960652800,960653055,GB +960653056,960671743,EU +960671744,960671999,DE +960672000,960676607,EU 960676608,960676863,PL 960676864,960692223,EU 960692224,960724991,FR @@ -6727,9 +6809,9 @@ 962469888,962527231,TR 962527232,972743935,EU 972743936,972744191,FR -972744192,972746495,EU -972746496,972746751,GB -972746752,973078527,EU +972744192,972747263,EU +972747264,972747519,US +972747520,973078527,EU 973078528,973209599,JP 973209600,973275135,IN 973275136,973471743,JP @@ -6911,9 +6993,7 @@ 1023315712,1023315967,AU 1023315968,1023316991,US 1023316992,1023317247,AU -1023317248,1023323903,US -1023323904,1023324159,AU -1023324160,1023328255,US +1023317248,1023328255,US 1023328256,1023344639,JP 1023344640,1023410175,CN 1023410176,1023672319,IN @@ -6943,7 +7023,8 @@ 1023967232,1023975423,IN 1023975424,1023979519,CN 1023979520,1023983615,AU -1023983616,1023991551,SG +1023983616,1023991295,SG +1023991296,1023991551,AU 1023991552,1023991807,AP 1023991808,1023999999,SG 1024000000,1024032767,PH @@ -6959,17 +7040,19 @@ 1024327680,1024344063,US 1024344064,1024352255,SG 1024352256,1024360447,AU -1024360448,1024363775,JP +1024360448,1024363263,JP +1024363264,1024363519,SG +1024363520,1024363775,JP 1024363776,1024364031,AU 1024364032,1024365055,JP 1024365056,1024365311,AP 1024365312,1024365727,JP 1024365728,1024365759,SG -1024365760,1024370687,JP -1024370688,1024371199,PH -1024371200,1024375551,JP -1024375552,1024375807,AU -1024375808,1024376831,JP +1024365760,1024372543,JP +1024372544,1024372607,HK +1024372608,1024375295,JP +1024375296,1024375551,AU +1024375552,1024376831,JP 1024376832,1024393215,PH 1024393216,1024458751,HK 1024458752,1024491519,SG @@ -7035,15 +7118,11 @@ 1030676224,1030750207,KR 1030750208,1030946303,JP 1030946304,1030946559,AP -1030946560,1031415039,JP -1031415040,1031415295,US -1031415296,1031798783,JP +1030946560,1031798783,JP 1031798784,1035993087,CN 1035993088,1037415679,JP 1037415680,1037415935,AP -1037415936,1037416447,JP -1037416448,1037416959,US -1037416960,1037565951,JP +1037415936,1037565951,JP 1037565952,1038614527,TW 1038614528,1039007743,CN 1039007744,1039138815,HK @@ -7065,9 +7144,7 @@ 1039663104,1040187391,KR 1040187392,1040252927,IL 1040252928,1040318463,GR -1040318464,1040344063,CH -1040344064,1040344319,AT -1040344320,1040383999,CH +1040318464,1040383999,CH 1040384000,1040390853,SA 1040390854,1040390854,ZA 1040390855,1040400383,SA @@ -7098,9 +7175,7 @@ 1040982784,1040983551,DK 1040983552,1040983807,EU 1040983808,1040990207,DK -1040990208,1040994303,CY -1040994304,1040994559,RU -1040994560,1040998399,CY +1040990208,1040998399,CY 1040998400,1041006591,EG 1041006592,1041039359,CH 1041039360,1041072127,SE @@ -7112,7 +7187,7 @@ 1041244160,1041268735,RU 1041268736,1041301503,NO 1041301504,1041310975,IE -1041310976,1041311231,EU +1041310976,1041311231,GB 1041311232,1041336319,IE 1041336320,1041336575,EU 1041336576,1041367039,IE @@ -7125,113 +7200,111 @@ 1041638912,1041642751,ES 1041642752,1041643007,EU 1041643008,1041694719,ES -1041694720,1041696255,GB -1041696256,1041696511,FR -1041696512,1041697279,GB -1041697280,1041697535,FR -1041697536,1041700351,GB -1041700352,1041700607,FR -1041700608,1041700863,GB -1041700864,1041701119,FR -1041701120,1041701631,GB -1041701632,1041701887,FR -1041701888,1041702143,GB -1041702144,1041702911,FR -1041702912,1041703423,GB -1041703424,1041703679,FR -1041703680,1041703935,GB -1041703936,1041704191,FR -1041704192,1041704447,GB -1041704448,1041704959,FR -1041704960,1041706239,GB -1041706240,1041707007,FR -1041707008,1041707263,GB -1041707264,1041707775,FR -1041707776,1041708287,GB -1041708288,1041708543,FR -1041708544,1041708799,GB -1041708800,1041709055,FR -1041709056,1041710671,GB +1041694720,1041700959,GB +1041700960,1041700975,FR +1041700976,1041701783,GB +1041701784,1041701791,FR +1041701792,1041701823,GB +1041701824,1041701831,FR +1041701832,1041702655,GB +1041702656,1041702911,FR +1041702912,1041703479,GB +1041703480,1041703487,FR +1041703488,1041703543,GB +1041703544,1041703551,FR +1041703552,1041703631,GB +1041703632,1041703639,FR +1041703640,1041704415,GB +1041704416,1041704423,FR +1041704424,1041706551,GB +1041706552,1041706559,FR +1041706560,1041706871,GB +1041706872,1041706879,FR +1041706880,1041709951,GB +1041709952,1041709959,FR +1041709960,1041710423,GB +1041710424,1041710431,FR +1041710432,1041710671,GB 1041710672,1041710687,FR -1041710688,1041711871,GB -1041711872,1041712127,FR -1041712128,1041712383,GB -1041712384,1041712639,FR -1041712640,1041713663,GB -1041713664,1041713919,FR -1041713920,1041714943,GB -1041714944,1041715199,FR -1041715200,1041715567,GB +1041710688,1041711551,GB +1041711552,1041711559,FR +1041711560,1041712575,GB +1041712576,1041712591,FR +1041712592,1041712631,GB +1041712632,1041712639,FR +1041712640,1041715071,GB +1041715072,1041715079,FR +1041715080,1041715567,GB 1041715568,1041715583,FR -1041715584,1041716223,GB +1041715584,1041716039,GB +1041716040,1041716047,FR +1041716048,1041716223,GB 1041716224,1041716479,FR -1041716480,1041718527,GB -1041718528,1041718783,FR -1041718784,1041719407,GB +1041716480,1041718055,GB +1041718056,1041718063,FR +1041718064,1041719223,GB +1041719224,1041719224,FR +1041719225,1041719227,GB +1041719228,1041719228,FR +1041719229,1041719407,GB 1041719408,1041719423,FR -1041719424,1041719551,GB -1041719552,1041720063,FR -1041720064,1041720319,GB -1041720320,1041720487,FR -1041720488,1041720495,GB -1041720496,1041720831,FR -1041720832,1041721759,GB +1041719424,1041719807,GB +1041719808,1041720063,FR +1041720064,1041721599,GB +1041721600,1041721727,FR +1041721728,1041721759,GB 1041721760,1041721775,FR -1041721776,1041722623,GB -1041722624,1041722879,FR -1041722880,1041723775,GB -1041723776,1041723839,FR -1041723840,1041724415,GB -1041724416,1041724671,FR -1041724672,1041724927,GB -1041724928,1041725439,FR -1041725440,1041725695,GB -1041725696,1041725951,FR -1041725952,1041727487,GB -1041727488,1041727999,FR -1041728000,1041728767,GB -1041728768,1041729023,FR -1041729024,1041729559,GB -1041729560,1041729560,FR -1041729561,1041729935,GB +1041721776,1041722911,GB +1041722912,1041722919,FR +1041722920,1041722951,GB +1041722952,1041722959,FR +1041722960,1041723263,GB +1041723264,1041723279,FR +1041723280,1041729559,GB +1041729560,1041729561,FR +1041729562,1041729564,GB +1041729565,1041729566,FR +1041729567,1041729935,GB 1041729936,1041729951,FR 1041729952,1041731071,GB 1041731072,1041731327,FR -1041731328,1041731839,GB -1041731840,1041732095,FR -1041732096,1041733375,GB -1041733376,1041733887,FR -1041733888,1041734399,GB -1041734400,1041734655,FR -1041734656,1041734911,GB -1041734912,1041735167,FR -1041735168,1041739031,GB +1041731328,1041737583,GB +1041737584,1041737591,FR +1041737592,1041739031,GB 1041739032,1041739039,FR -1041739040,1041741055,GB -1041741056,1041741311,FR -1041741312,1041744127,GB -1041744128,1041744383,FR -1041744384,1041745151,GB -1041745152,1041745407,FR -1041745408,1041745663,GB -1041745664,1041745919,FR -1041745920,1041748991,GB +1041739040,1041740279,GB +1041740280,1041740287,FR +1041740288,1041742415,GB +1041742416,1041742423,FR +1041742424,1041743103,GB +1041743104,1041743111,FR +1041743112,1041743247,GB +1041743248,1041743255,FR +1041743256,1041745783,GB +1041745784,1041745791,FR +1041745792,1041746903,GB +1041746904,1041746919,FR +1041746920,1041748991,GB 1041748992,1041749247,EU -1041749248,1041749659,GB +1041749248,1041749639,GB +1041749640,1041749643,FR +1041749644,1041749659,GB 1041749660,1041749663,FR -1041749664,1041749759,GB -1041749760,1041750015,FR -1041750016,1041750527,GB -1041750528,1041751039,FR -1041751040,1041753599,GB -1041753600,1041754367,FR -1041754368,1041755391,GB -1041755392,1041755647,FR -1041755648,1041756671,GB -1041756672,1041756927,FR -1041756928,1041757951,GB -1041757952,1041758207,FR -1041758208,1041760255,GB +1041749664,1041751679,GB +1041751680,1041751687,FR +1041751688,1041753231,GB +1041753232,1041753239,FR +1041753240,1041753855,GB +1041753856,1041754111,FR +1041754112,1041756743,GB +1041756744,1041756751,FR +1041756752,1041756839,GB +1041756840,1041756855,FR +1041756856,1041757615,GB +1041757616,1041757623,FR +1041757624,1041758175,GB +1041758176,1041758183,FR +1041758184,1041760255,GB 1041760256,1041768447,DE 1041768448,1041776639,NO 1041776640,1041784831,CZ @@ -7245,11 +7318,11 @@ 1042120704,1042153471,PL 1042153472,1042284543,GB 1042284544,1042292735,CH -1042292736,1042294783,NL -1042294784,1042295295,GE -1042295296,1042295551,NL +1042292736,1042295551,NL 1042295552,1042296575,GE -1042296576,1042300927,NL +1042296576,1042300903,NL +1042300904,1042300911,UA +1042300912,1042300927,NL 1042300928,1042309119,RU 1042309120,1042317311,GB 1042317312,1042350079,ES @@ -7261,11 +7334,13 @@ 1042808832,1042817023,DE 1042817024,1042825215,IE 1042825216,1042833407,CZ -1042833408,1042841599,GB +1042833408,1042834025,GB +1042834026,1042834026,PT +1042834027,1042840673,GB +1042840674,1042840674,PT +1042840675,1042841599,GB 1042841600,1042874367,AT -1042874368,1042877183,NL -1042877184,1042877951,DE -1042877952,1042879487,NL +1042874368,1042879487,NL 1042879488,1042879743,US 1042879744,1042879999,NL 1042880000,1042880255,GB @@ -7273,7 +7348,11 @@ 1042889984,1042890239,GB 1042890240,1042892799,NL 1042892800,1042893055,EU -1042893056,1042939903,NL +1042893056,1042907391,NL +1042907392,1042907493,BE +1042907494,1042907495,NL +1042907496,1042907647,BE +1042907648,1042939903,NL 1042939904,1043070975,ES 1043070976,1043079167,CZ 1043079168,1043087359,DE @@ -7290,9 +7369,7 @@ 1043365888,1043398655,PT 1043398656,1043470127,GB 1043470128,1043470223,NL -1043470224,1043475455,GB -1043475456,1043475711,DE -1043475712,1043475871,GB +1043470224,1043475871,GB 1043475872,1043475887,DE 1043475888,1043476111,GB 1043476112,1043476127,DE @@ -7300,9 +7377,7 @@ 1043476384,1043476399,DE 1043476400,1043476431,GB 1043476432,1043476447,DE -1043476448,1043476991,GB -1043476992,1043477503,DE -1043477504,1043483406,GB +1043476448,1043483406,GB 1043483407,1043483407,CH 1043483408,1043488767,GB 1043488768,1043496959,DE @@ -7320,20 +7395,20 @@ 1043892736,1043892991,CD 1043892992,1043897343,A2 1043897344,1043897855,KE -1043897856,1043912703,A2 -1043912704,1043913215,ZM -1043913216,1043919359,A2 -1043919360,1043919871,SD +1043897856,1043913215,A2 +1043913216,1043913471,SS +1043913472,1043919359,A2 +1043919360,1043919871,SS 1043919872,1043921919,A2 1043921920,1043922943,IL 1043922944,1043988479,ES -1043988480,1044019967,NL -1044019968,1044020479,BE -1044020480,1044046255,NL -1044046256,1044046263,BE -1044046264,1044118015,NL -1044118016,1044118271,BE -1044118272,1044119551,NL +1043988480,1044118295,NL +1044118296,1044118303,BE +1044118304,1044118423,NL +1044118424,1044118431,BE +1044118432,1044118439,NL +1044118440,1044118447,BE +1044118448,1044119551,NL 1044119552,1044152319,GB 1044152320,1044185087,IR 1044185088,1044193279,RU @@ -7341,26 +7416,11 @@ 1044201472,1044217855,FI 1044217856,1044226047,DK 1044226048,1044234239,OM -1044250624,1044251135,BE -1044251136,1044251647,EU -1044251648,1044252159,BE -1044252160,1044253695,EU -1044253696,1044254207,BE -1044254208,1044256767,EU -1044256768,1044257279,BE -1044257280,1044257791,EU -1044257792,1044258303,BE -1044258304,1044260351,EU +1044250624,1044260351,EU 1044260352,1044261119,BE -1044261120,1044265983,EU -1044265984,1044266495,BE -1044266496,1044267519,EU -1044267520,1044268031,BE -1044268032,1044269055,EU -1044269056,1044269567,BE -1044269568,1044270079,EU -1044270080,1044271615,BE -1044271616,1044283391,EU +1044261120,1044270079,EU +1044270080,1044271103,BE +1044271104,1044283391,EU 1044283392,1044316159,FR 1044316160,1044332543,NO 1044332544,1044348927,RU @@ -7372,47 +7432,36 @@ 1044414464,1044447231,GB 1044447232,1044453233,SE 1044453234,1044453234,NO -1044453235,1044454911,SE -1044454912,1044455423,NO +1044453235,1044455167,SE +1044455168,1044455423,NO 1044455424,1044463615,EE 1044463616,1044479999,SE 1044480000,1044488191,CH 1044488192,1044496383,SK 1044496384,1044512767,EE 1044512768,1044578303,DK -1044578304,1044586495,GB -1044586496,1044587007,DE -1044587008,1044589055,GB -1044589056,1044589567,DE -1044589568,1044632575,GB -1044632576,1044633087,DE -1044633088,1044635647,GB -1044635648,1044636159,US -1044636160,1044636671,GB +1044578304,1044636671,GB 1044636672,1044637695,DE -1044637696,1044638273,GB -1044638274,1044638274,GB -1044638275,1044638463,GB +1044637696,1044638463,GB 1044638464,1044638719,DE -1044638720,1044639743,GB -1044639744,1044640255,DE -1044640256,1044640767,GB -1044640768,1044641791,DE -1044641792,1044642815,US +1044638720,1044640767,GB +1044640768,1044642815,DE 1044642816,1044643839,GB 1044643840,1044652031,DE 1044652032,1044660223,LY 1044660224,1044660479,GR 1044660480,1044660735,US -1044660736,1044663359,GR -1044663360,1044663551,US -1044663552,1044665855,GR -1044665856,1044666367,US -1044666368,1044668415,GR +1044660736,1044663295,GR +1044663296,1044663551,US +1044663552,1044666227,GR +1044666228,1044666228,US +1044666229,1044668415,GR 1044668416,1044676607,BA 1044676608,1044684799,RU 1044684800,1044692991,HU -1044692992,1044698623,AT +1044692992,1044698111,AT +1044698112,1044698367,DE +1044698368,1044698623,AT 1044698624,1044699135,DE 1044699136,1044701183,AT 1044701184,1044709375,EG @@ -7431,35 +7480,31 @@ 1044905984,1044908031,GB 1044908032,1044909055,US 1044909056,1044916735,GB -1044916736,1044919295,DE -1044919296,1044919807,GB -1044919808,1044920319,DE +1044916736,1044917263,DE +1044917264,1044917279,GB +1044917280,1044920319,DE 1044920320,1044921343,GB 1044921344,1044922367,US 1044922368,1044930559,DE 1044930560,1044930815,GB -1044930816,1044930911,BE -1044930912,1044930927,DE -1044930928,1044931327,BE -1044931328,1044932095,GB +1044930816,1044931071,BE +1044931072,1044931231,GB +1044931232,1044931239,BE +1044931240,1044932095,GB 1044932096,1044932351,BE -1044932352,1044933293,GB -1044933294,1044933294,BE -1044933295,1044933887,GB -1044933888,1044934143,BE -1044934144,1044934911,GB -1044934912,1044935167,BE -1044935168,1044935423,GB -1044935424,1044935935,BE -1044935936,1044936547,GB -1044936548,1044936548,BE -1044936549,1044936703,GB -1044936704,1044936959,BE -1044936960,1044937031,GB -1044937032,1044937039,BE -1044937040,1044937727,GB -1044937728,1044937983,BE -1044937984,1044946943,GB +1044932352,1044933499,GB +1044933500,1044933503,BE +1044933504,1044935439,GB +1044935440,1044935455,BE +1044935456,1044935759,GB +1044935760,1044935775,BE +1044935776,1044936115,GB +1044936116,1044936119,BE +1044936120,1044936487,GB +1044936488,1044936495,BE +1044936496,1044937247,GB +1044937248,1044937255,BE +1044937256,1044946943,GB 1044946944,1044955135,UA 1044955136,1044963327,NL 1044963328,1044971519,FI @@ -7470,8 +7515,7 @@ 1045020672,1045037055,NO 1045037056,1045118975,GR 1045118976,1045119231,US -1045119232,1045119743,AL -1045119744,1045135359,GR +1045119232,1045135359,GR 1045135360,1045168127,DE 1045168128,1045233663,RU 1045233664,1045241855,GB @@ -7480,19 +7524,14 @@ 1045266432,1045274623,HU 1045274624,1045282815,IE 1045282816,1045299199,HU -1045299200,1045302271,GB -1045302272,1045303295,EU -1045303296,1045305855,DE -1045305856,1045307391,EU +1045299200,1045307391,US 1045307392,1045315583,RU 1045315584,1045319679,DE 1045319680,1045323775,RU 1045323776,1045364735,FI 1045364736,1045430271,DK 1045430272,1045446655,DE -1045446656,1045447423,SK -1045447424,1045447679,HU -1045447680,1045454847,SK +1045446656,1045454847,SK 1045454848,1045460991,DE 1045460992,1045461503,FR 1045461504,1045461631,DE @@ -7507,14 +7546,10 @@ 1045700608,1045708799,KZ 1045708800,1045716991,LB 1045716992,1045725183,RU -1045725184,1045733375,CZ -1045733376,1045742335,GB -1045742336,1045742591,SE -1045742592,1045743871,GB -1045743872,1045744127,SE -1045744128,1045745407,GB -1045745408,1045745663,SE -1045745664,1045749759,GB +1045725184,1045731327,CZ +1045731328,1045731583,GB +1045731584,1045733375,CZ +1045733376,1045749759,GB 1045749760,1045753855,SI 1045753856,1045755903,NL 1045755904,1045757951,UA @@ -7535,82 +7570,104 @@ 1046150354,1046150609,LR 1046150610,1046151167,IL 1046151168,1046216703,DE -1046216704,1046282239,NO -1046282240,1046288895,DE -1046288896,1046290431,AG +1046216704,1046225647,NO +1046225648,1046225655,SE +1046225656,1046282239,NO +1046282240,1046289407,DE +1046289408,1046290431,AG 1046290432,1046298623,PL 1046298624,1046315007,AT -1046315008,1046315519,FR -1046315520,1046316031,IT -1046316032,1046316543,FR -1046316544,1046317055,DK -1046317056,1046317567,ES -1046317568,1046318591,GB -1046318592,1046323199,NL +1046315008,1046316031,FR +1046316032,1046319103,GB +1046319104,1046320127,NL +1046320128,1046321151,GB +1046321152,1046323199,NL 1046323200,1046331391,ES -1046331392,1046336511,EU -1046336512,1046337023,DE -1046337024,1046337535,EU -1046337536,1046338047,DE -1046338048,1046347775,EU -1046347776,1046391295,IT -1046391296,1046391807,US -1046391808,1046413311,IT +1046331392,1046347775,EU +1046347776,1046413311,IT 1046413312,1046446079,SE 1046446080,1046478847,DE -1046478848,1046481151,GB -1046481152,1046481407,DE -1046481408,1046482943,GB -1046482944,1046483199,DE -1046483200,1046485503,GB -1046485504,1046486271,DE -1046486272,1046486527,GB -1046486528,1046487551,DE +1046478848,1046479839,GB +1046479840,1046479871,DE +1046479872,1046480511,GB +1046480512,1046480543,DE +1046480544,1046481919,GB +1046481920,1046481927,DE +1046481928,1046483199,GB +1046483200,1046483231,DE +1046483232,1046484479,GB +1046484480,1046484511,DE +1046484512,1046485303,GB +1046485304,1046485311,DE +1046485312,1046485903,GB +1046485904,1046485911,DE +1046485912,1046487551,GB 1046487552,1046487807,US -1046487808,1046491135,DE -1046491136,1046492159,GB -1046492160,1046492415,DE -1046492416,1046492671,GB -1046492672,1046492927,DE -1046492928,1046494719,GB -1046494720,1046495231,DE -1046495232,1046497807,GB +1046487808,1046492471,GB +1046492472,1046492479,DE +1046492480,1046492719,GB +1046492720,1046492727,DE +1046492728,1046493015,GB +1046493016,1046493023,DE +1046493024,1046493039,GB +1046493040,1046493047,DE +1046493048,1046493063,GB +1046493064,1046493071,DE +1046493072,1046493983,GB +1046493984,1046493999,DE +1046494000,1046494191,GB +1046494192,1046494199,DE +1046494200,1046495127,GB +1046495128,1046495135,DE +1046495136,1046495415,GB +1046495416,1046495423,DE +1046495424,1046495607,GB +1046495608,1046495615,DE +1046495616,1046495719,GB +1046495720,1046495727,DE +1046495728,1046495767,GB +1046495768,1046495775,DE +1046495776,1046495911,GB +1046495912,1046495919,DE +1046495920,1046495983,GB +1046495984,1046495991,DE +1046495992,1046497807,GB 1046497808,1046497815,DE -1046497816,1046499327,GB -1046499328,1046502399,DE -1046502400,1046502911,GB -1046502912,1046503423,DE -1046503424,1046504447,GB +1046497816,1046498135,GB +1046498136,1046498143,DE +1046498144,1046498215,GB +1046498216,1046498223,DE +1046498224,1046498303,GB +1046498304,1046498319,DE +1046498320,1046498687,GB +1046498688,1046498695,DE +1046498696,1046498799,GB +1046498800,1046498807,DE +1046498808,1046503095,GB +1046503096,1046503103,DE +1046503104,1046504447,GB 1046504448,1046508543,DE 1046508544,1046511615,GB 1046511616,1046515711,DE -1046515712,1046517759,GB -1046517760,1046518271,DE -1046518272,1046518783,GB -1046518784,1046519039,DE -1046519040,1046519247,GB +1046515712,1046519247,GB 1046519248,1046519255,DE -1046519256,1046524159,GB -1046524160,1046524415,DE -1046524416,1046525351,GB +1046519256,1046525351,GB 1046525352,1046525359,DE -1046525360,1046526719,GB -1046526720,1046526975,DE -1046526976,1046530047,GB -1046530048,1046531327,DE -1046531328,1046538751,GB -1046538752,1046539263,DE -1046539264,1046540031,GB -1046540032,1046540287,DE -1046540288,1046540543,GB -1046540544,1046540799,DE -1046540800,1046541311,GB -1046541312,1046541567,DE -1046541568,1046541823,GB -1046541824,1046542079,DE -1046542080,1046542335,GB -1046542336,1046542847,DE -1046542848,1046544383,GB +1046525360,1046525439,GB +1046525440,1046525695,DE +1046525696,1046533375,GB +1046533376,1046533383,DE +1046533384,1046535295,GB +1046535296,1046535311,DE +1046535312,1046535439,GB +1046535440,1046535447,DE +1046535448,1046537023,GB +1046537024,1046537039,DE +1046537040,1046538751,GB +1046538752,1046539007,DE +1046539008,1046543343,GB +1046543344,1046543359,DE +1046543360,1046544383,GB 1046544384,1046560767,IT 1046560768,1046585343,ES 1046585344,1046609919,NO @@ -7629,22 +7686,9 @@ 1046839296,1046847487,BA 1046847488,1046855679,ES 1046855680,1046872063,NO -1046872064,1046872575,BE -1046872576,1046874111,EU -1046874112,1046878207,BE -1046878208,1046881279,EU -1046881280,1046881791,BE -1046881792,1046882303,EU -1046882304,1046884351,BE -1046884352,1046885375,EU -1046885376,1046887423,BE -1046887424,1046888447,EU -1046888448,1046894591,GB -1046894592,1046896639,EU -1046896640,1046897663,GB -1046897664,1046898175,BE -1046898176,1046899199,EU -1046899200,1046904831,BE +1046872064,1046874111,EU +1046874112,1046877183,BE +1046877184,1046904831,EU 1046904832,1046906879,SK 1046906880,1046908927,IR 1046908928,1046910975,SE @@ -7668,16 +7712,12 @@ 1047273472,1047281663,DE 1047281664,1047289855,TR 1047289856,1047298047,RS -1047298048,1047300351,CH -1047300352,1047300607,GB -1047300608,1047306239,CH +1047298048,1047306239,CH 1047306240,1047314431,PL 1047314432,1047322623,SE 1047322624,1047330815,IT 1047330816,1047339007,RU -1047339008,1047343871,SE -1047343872,1047344127,NO -1047344128,1047347199,SE +1047339008,1047347199,SE 1047347200,1047363583,DE 1047363584,1047371775,CZ 1047371776,1047373559,RU @@ -7724,7 +7764,6 @@ 1048182784,1048184831,UA 1048184832,1048186879,FR 1048186880,1048188927,LV -1048190976,1048193023,UA 1048193024,1048195071,RO 1048195072,1048197119,RU 1048197120,1048201215,UA @@ -7747,13 +7786,13 @@ 1048246272,1048248319,NO 1048248320,1048313855,IT 1048313856,1048510463,GB -1048510464,1048575999,SE +1048510464,1048536319,SE +1048536320,1048536575,NO +1048536576,1048575999,SE 1048576000,1048584191,DE 1048584192,1048592383,IL 1048592384,1048600575,IT -1048600576,1048601599,UA -1048601600,1048602111,RU -1048602112,1048608767,UA +1048600576,1048608767,UA 1048608768,1048616959,GB 1048616960,1048617215,A2 1048617216,1048618751,KE @@ -7769,99 +7808,28 @@ 1048682496,1048690687,FR 1048690688,1048707071,PL 1048707072,1048772607,GB -1048772608,1048838143,NL -1048838144,1048847871,DE -1048847872,1048848127,NL -1048848128,1048850687,DE -1048850688,1048850943,NL -1048850944,1048853503,DE -1048853504,1048853759,NL -1048853760,1048859767,DE -1048859768,1048859775,NL -1048859776,1048859863,DE -1048859864,1048859871,NL -1048859872,1048859938,DE -1048859939,1048859939,NL -1048859940,1048861503,DE -1048861504,1048861511,NL -1048861512,1048861903,DE -1048861904,1048861911,NL -1048861912,1048861951,DE -1048861952,1048862207,NL -1048862208,1048868863,DE -1048868864,1048869119,NL -1048869120,1048870183,DE -1048870184,1048870191,NL -1048870192,1048879175,DE -1048879176,1048879183,NL -1048879184,1048888319,DE -1048888320,1048888575,NL -1048888576,1048889855,DE -1048889856,1048890111,NL -1048890112,1048890367,DE -1048890368,1048890623,NL -1048890624,1048890879,DE -1048890880,1048891135,NL -1048891136,1048891759,DE -1048891760,1048891767,NL -1048891768,1048891895,DE -1048891896,1048891903,NL -1048891904,1048893183,DE -1048893184,1048893439,NL -1048893440,1048894519,DE -1048894520,1048894527,NL -1048894528,1048896015,DE -1048896016,1048896023,NL -1048896024,1048898303,DE -1048898304,1048898559,NL -1048898560,1048898815,DE -1048898816,1048899071,NL -1048899072,1048901631,DE -1048901632,1048901887,NL -1048901888,1048902967,DE -1048902968,1048902975,NL -1048902976,1048903167,DE -1048903168,1048903679,NL +1048772608,1048903679,NL 1048903680,1048911871,GB 1048911872,1048920063,IT 1048920064,1048936447,NL 1048936448,1048944639,PL 1048944640,1048952831,RU 1048952832,1048969215,NL -1048969216,1048974335,EU -1048974336,1048974847,DE -1048974848,1048979455,EU -1048979456,1048980479,DE -1048980480,1048982015,EU -1048982016,1048982527,DE -1048982528,1048982783,EU -1048982784,1048982887,FR -1048982888,1048982943,DE -1048982944,1048983039,FR -1048983040,1048985087,EU -1048985088,1048985343,DE -1048985344,1049003519,EU -1049003520,1049004031,DE -1049004032,1049004543,EU -1049004544,1049006079,DE -1049006080,1049007615,EU -1049007616,1049009151,DE -1049009152,1049009663,EU -1049009664,1049011711,DE -1049011712,1049012991,EU -1049012992,1049014015,DE -1049014016,1049014783,EU -1049014784,1049018367,DE +1048969216,1049006079,EU +1049006080,1049006335,DE +1049006336,1049008127,EU +1049008128,1049009151,DE +1049009152,1049016319,EU +1049016320,1049018367,DE 1049018368,1049018623,EU -1049018624,1049022975,DE -1049022976,1049023487,EU -1049023488,1049024511,DE -1049024512,1049026815,EU -1049026816,1049029887,DE -1049029888,1049030143,EU -1049030144,1049031679,DE -1049031680,1049032191,EU -1049032192,1049034751,DE +1049018624,1049022463,DE +1049022464,1049026815,EU +1049026816,1049029375,DE +1049029376,1049030655,EU +1049030656,1049031679,DE +1049031680,1049031743,EU +1049031744,1049031871,DE +1049031872,1049034751,EU 1049034752,1049067519,EG 1049067520,1049100287,DK 1049100288,1049231359,GB @@ -7888,19 +7856,15 @@ 1049699328,1049699583,NL 1049699584,1049699839,BW 1049699840,1049706495,NL -1049706496,1049707007,GB -1049707008,1049708031,NL -1049708032,1049709055,GB -1049709056,1049709823,NL +1049706496,1049709823,GB 1049709824,1049710079,A2 -1049710080,1049710335,NL +1049710080,1049710335,GB 1049710336,1049710591,A2 -1049710592,1049712639,GB -1049712640,1049714687,NL +1049710592,1049714687,GB 1049714688,1049715711,IR -1049715712,1049716735,NL +1049715712,1049716735,GB 1049716736,1049717759,IQ -1049717760,1049722879,NL +1049717760,1049722879,GB 1049722880,1049731071,IS 1049731072,1049739263,FI 1049739264,1049755647,NL @@ -7924,9 +7888,7 @@ 1050041088,1050041599,US 1050041600,1050047994,KW 1050047995,1050047995,US -1050047996,1050048767,KW -1050048768,1050049023,US -1050049024,1050083327,KW +1050047996,1050083327,KW 1050083328,1050148863,ES 1050148864,1050157055,CY 1050157056,1050173439,RU @@ -7956,8 +7918,12 @@ 1051033600,1051049983,FI 1051049984,1051066367,HU 1051066368,1051115519,NL -1051115520,1051123711,BE -1051123712,1051131903,NL +1051115520,1051117055,BE +1051117056,1051117567,NL +1051117568,1051123711,BE +1051123712,1051125471,NL +1051125472,1051125479,BE +1051125480,1051131903,NL 1051131904,1051197439,CH 1051197440,1051213823,CZ 1051213824,1051230207,SK @@ -7971,9 +7937,7 @@ 1051295744,1051303935,GB 1051303936,1051312127,SK 1051312128,1051328511,GR -1051328512,1051503871,GB -1051503872,1051504127,FR -1051504128,1051525119,GB +1051328512,1051525119,GB 1051525120,1051533311,MT 1051533312,1051541503,NG 1051541504,1051549345,GB @@ -7981,9 +7945,7 @@ 1051549347,1051557887,GB 1051557888,1051566079,RU 1051566080,1051574271,IT -1051574272,1051584207,GB -1051584208,1051584223,BE -1051584224,1051590655,GB +1051574272,1051590655,GB 1051590656,1051721727,ES 1051721728,1051729919,RU 1051729920,1051738111,FI @@ -7996,38 +7958,16 @@ 1051795456,1051803647,RU 1051803648,1051820031,CZ 1051820032,1051852799,NL -1051852800,1051918335,AT -1051918336,1051919359,PL -1051919360,1051920383,AT -1051920384,1051920895,PL -1051920896,1051983871,AT +1051852800,1051983871,AT 1051983872,1051990015,EU 1051990016,1051991039,DE -1051991040,1052000767,EU -1052000768,1052002559,DE -1052002560,1052003327,EU -1052003328,1052003583,DE -1052003584,1052011263,EU -1052011264,1052012287,DE -1052012288,1052012543,EU -1052012544,1052013055,DE -1052013056,1052014205,EU -1052014206,1052014206,DE -1052014207,1052017535,EU -1052017536,1052017663,DE -1052017664,1052041215,EU -1052041216,1052041471,DE -1052041472,1052042719,EU -1052042720,1052042751,DE -1052042752,1052043071,EU -1052043072,1052043087,DE -1052043088,1052043167,EU -1052043168,1052043183,DE -1052043184,1052043219,EU -1052043220,1052043220,DE -1052043221,1052043583,EU -1052043584,1052043615,DE -1052043616,1052045311,EU +1051991040,1052001279,EU +1052001280,1052002303,DE +1052002304,1052003583,EU +1052003584,1052003839,DE +1052003840,1052011263,EU +1052011264,1052012031,DE +1052012032,1052045311,EU 1052045312,1052046079,DE 1052046080,1052049407,EU 1052049408,1052057599,PL @@ -8046,7 +7986,7 @@ 1052133376,1052135423,RU 1052135424,1052137471,UA 1052137472,1052139519,RU -1052139520,1052141567,DE +1052141056,1052141567,DE 1052141568,1052143615,PL 1052143616,1052145663,BG 1052145664,1052147711,UA @@ -8065,180 +8005,86 @@ 1052178432,1052180479,DK 1052180480,1052213247,RU 1052213248,1052246015,FI -1052246016,1052246527,DE -1052246528,1052247551,EU -1052247552,1052248063,DE -1052248064,1052248575,EU -1052248576,1052249087,DE -1052249088,1052251647,EU -1052251648,1052252159,DE -1052252160,1052253183,EU -1052253184,1052253695,DE -1052253696,1052254207,EU -1052254208,1052254719,NL -1052254720,1052256255,EU -1052256256,1052257279,NL -1052257280,1052258815,EU -1052258816,1052260351,FR -1052260352,1052262911,EU -1052262912,1052263423,DK -1052263424,1052263935,DE -1052263936,1052266495,EU -1052266496,1052267007,BE -1052267008,1052267519,EU -1052267520,1052268031,BE -1052268032,1052269055,EU -1052269056,1052269567,ZA -1052269568,1052270079,EU -1052270080,1052270591,ZA -1052270592,1052273151,EU -1052273152,1052274175,FR -1052274176,1052274687,ZA -1052274688,1052275199,EU -1052275200,1052275711,AT -1052275712,1052277247,EU -1052277248,1052277759,IT -1052277760,1052279295,EU -1052279296,1052283391,GB -1052283392,1052284927,EU +1052246016,1052259327,EU +1052259328,1052260351,FR +1052260352,1052279807,EU +1052279808,1052282879,GB +1052282880,1052284927,EU 1052284928,1052286975,GB -1052286976,1052287487,CH -1052287488,1052287999,SE -1052288000,1052289535,EU -1052289536,1052290047,GB -1052290048,1052292607,EU -1052292608,1052298751,GB -1052298752,1052300287,EU -1052300288,1052300799,GB -1052300800,1052301823,EU -1052301824,1052302335,GB -1052302336,1052303359,EU +1052286976,1052293119,EU +1052293120,1052298239,GB +1052298240,1052303359,EU 1052303360,1052305407,DE -1052305408,1052305919,EU -1052305920,1052307455,DE -1052307456,1052307967,EU -1052307968,1052308991,CH -1052308992,1052309503,EU +1052305408,1052306431,EU +1052306432,1052307455,DE +1052307456,1052309503,EU 1052309504,1052310527,CH -1052310528,1052311039,EU -1052311040,1052311551,GB -1052311552,1052313087,EU -1052313088,1052314623,DE -1052314624,1052318207,EU -1052318208,1052318719,DE -1052318720,1052319231,EU -1052319232,1052319743,DE -1052319744,1052320255,EU -1052320256,1052321791,GB -1052321792,1052324351,EU -1052324352,1052324863,GB -1052324864,1052325887,EU +1052310528,1052313599,EU +1052313600,1052314623,DE +1052314624,1052317311,EU +1052317312,1052317343,DE +1052317344,1052325887,EU 1052325888,1052327935,GB 1052327936,1052328959,EU 1052328960,1052329983,CH -1052329984,1052330495,EU -1052330496,1052331007,CH -1052331008,1052338175,EU -1052338176,1052339711,FR -1052339712,1052342527,EU -1052342528,1052343039,CH -1052343040,1052343807,EU -1052343808,1052344319,CH -1052344320,1052345855,EU -1052345856,1052346879,NL -1052346880,1052347391,EU +1052329984,1052338175,EU +1052338176,1052339199,FR +1052339200,1052340607,EU +1052340608,1052340671,HU +1052340672,1052347391,EU 1052347392,1052348415,CH -1052348416,1052349439,EU -1052349440,1052352511,GB +1052348416,1052350463,EU +1052350464,1052352511,GB 1052352512,1052354559,EU 1052354560,1052356607,GB -1052356608,1052364799,EU -1052364800,1052365311,BE -1052365312,1052366847,EU +1052356608,1052358431,EU +1052358432,1052358463,ZA +1052358464,1052366847,EU 1052366848,1052367871,BE -1052367872,1052368383,DK -1052368384,1052370943,EU -1052370944,1052371455,GB -1052371456,1052374015,EU +1052367872,1052369887,EU +1052369888,1052369919,CZ +1052369920,1052374015,EU 1052374016,1052375039,CH -1052375040,1052378111,EU -1052378112,1052378623,DE -1052378624,1052383231,EU -1052383232,1052383743,GB -1052383744,1052384767,EU -1052384768,1052385279,GB -1052385280,1052385791,EU -1052385792,1052386303,GB -1052386304,1052387327,EU +1052375040,1052378943,EU +1052378944,1052378959,DE +1052378960,1052387327,EU 1052387328,1052388351,GB -1052388352,1052390911,EU -1052390912,1052391423,GB -1052391424,1052391935,EU -1052391936,1052392447,GB -1052392448,1052392959,EU -1052392960,1052393471,GB -1052393472,1052394495,EU -1052394496,1052395007,CH -1052395008,1052397567,EU -1052397568,1052398079,IT -1052398080,1052399359,EU -1052399360,1052399871,IT -1052399872,1052405759,EU -1052405760,1052407295,AT -1052407296,1052408831,EU -1052408832,1052409855,GB -1052409856,1052411391,EU -1052411392,1052411903,NL -1052411904,1052412927,EU -1052412928,1052413439,NL -1052413440,1052415487,EU -1052415488,1052415999,BE -1052416000,1052418047,EU -1052418048,1052418559,BE -1052418560,1052419071,EU -1052419072,1052419583,BE -1052419584,1052420095,EU -1052420096,1052420607,GB -1052420608,1052421119,EU +1052388352,1052397311,EU +1052397312,1052397439,HU +1052397440,1052405247,EU +1052405248,1052405503,FR +1052405504,1052405759,EU +1052405760,1052406783,AT +1052406784,1052407855,EU +1052407856,1052407871,ZA +1052407872,1052421119,EU 1052421120,1052422143,GB 1052422144,1052425215,EU 1052425216,1052426239,ZA -1052426240,1052426751,EU -1052426752,1052427263,NL -1052427264,1052427775,CH -1052427776,1052430591,EU -1052430592,1052432639,BE -1052432640,1052441599,EU -1052441600,1052442111,GB -1052442112,1052455935,EU -1052455936,1052456447,NL -1052456448,1052456959,CH -1052456960,1052462079,EU -1052462080,1052462591,FR -1052462592,1052463615,EU -1052463616,1052464127,GB -1052464128,1052477951,EU -1052477952,1052478463,FR -1052478464,1052481535,EU -1052481536,1052483583,NL -1052483584,1052487679,EU +1052426240,1052431103,EU +1052431104,1052432127,BE +1052432128,1052433711,EU +1052433712,1052433719,DK +1052433720,1052449359,EU +1052449360,1052449375,ZA +1052449376,1052450767,EU +1052450768,1052450783,ZA +1052450784,1052481535,EU +1052481536,1052482559,NL +1052482560,1052485375,EU +1052485376,1052485631,IT +1052485632,1052487679,EU 1052487680,1052488703,CH 1052488704,1052489727,GB -1052489728,1052490239,EU -1052490240,1052490751,SE -1052490752,1052502015,EU -1052502016,1052502527,IE -1052502528,1052505087,EU -1052505088,1052505599,GB -1052505600,1052508159,EU -1052508160,1052653823,GB -1052653824,1052654079,EU -1052654080,1052661759,GB -1052661760,1052662271,SE -1052662272,1052667903,GB -1052667904,1052668063,US -1052668064,1052668079,GB -1052668080,1052668159,US +1052489728,1052494335,EU +1052494336,1052494591,NL +1052494592,1052498431,EU +1052498432,1052498463,RO +1052498464,1052508159,EU +1052508160,1052641930,GB +1052641931,1052641931,EU +1052641932,1052667903,GB +1052667904,1052668159,US 1052668160,1052706815,GB 1052706816,1052712959,NL 1052712960,1052770303,GB @@ -8260,9 +8106,7 @@ 1052852224,1052868607,EG 1052868608,1052876799,RS 1052876800,1052884991,NG -1052884992,1052896351,FR -1052896352,1052896352,FR -1052896353,1052901375,FR +1052884992,1052901375,FR 1052901376,1053032447,NL 1053032448,1053097983,IT 1053097984,1053106175,DE @@ -8271,50 +8115,40 @@ 1053130752,1053138943,NL 1053138944,1053147135,FI 1053147136,1053163519,SK -1053163520,1053294591,DK +1053163520,1053189503,DK +1053189504,1053189631,SE +1053189632,1053294591,DK 1053294592,1053295615,EU 1053295616,1053296639,AT -1053296640,1053298175,EU -1053298176,1053298687,CH -1053298688,1053299711,EU +1053296640,1053299711,EU 1053299712,1053299967,GB -1053299968,1053300223,EU -1053300224,1053300735,GB -1053300736,1053305343,EU -1053305344,1053305855,GR -1053305856,1053307903,EU -1053307904,1053308415,GB -1053308416,1053308671,EU -1053308672,1053308927,GB -1053308928,1053309439,EU -1053309440,1053309951,ZA -1053309952,1053313279,EU +1053299968,1053302271,EU +1053302272,1053302527,FR +1053302528,1053307903,EU +1053307904,1053308159,GB +1053308160,1053313279,EU 1053313280,1053313535,GB 1053313536,1053316607,EU 1053316608,1053316863,GB -1053316864,1053318143,EU -1053318144,1053318655,GB -1053318656,1053319679,EU -1053319680,1053320191,DE -1053320192,1053321215,EU -1053321216,1053321727,DE -1053321728,1053327615,EU -1053327616,1053327871,ZA -1053327872,1053329407,EU -1053329408,1053329663,ES -1053329664,1053332479,EU -1053332480,1053334015,BE +1053316864,1053320223,EU +1053320224,1053320239,DE +1053320240,1053329439,EU +1053329440,1053329471,ES +1053329472,1053332991,EU +1053332992,1053334015,BE 1053334016,1053335551,EU 1053335552,1053336575,ZA -1053336576,1053338111,EU -1053338112,1053338623,FI -1053338624,1053340927,EU +1053336576,1053339903,EU +1053339904,1053340159,AT +1053340160,1053340927,EU 1053340928,1053341183,GB -1053341184,1053347839,EU -1053347840,1053348351,NL -1053348352,1053349375,EU +1053341184,1053345279,EU +1053345280,1053345375,PK +1053345376,1053349375,EU 1053349376,1053349631,NL -1053349632,1053353983,EU +1053349632,1053353407,EU +1053353408,1053353423,GB +1053353424,1053353983,EU 1053353984,1053354239,IL 1053354240,1053354911,EU 1053354912,1053355007,IL @@ -8344,42 +8178,141 @@ 1053687808,1053753343,DE 1053753344,1053818879,NL 1053818880,1053819391,DE -1053819392,1053820415,EU -1053820416,1053820927,DE +1053819392,1053819423,EU +1053819424,1053819439,DE +1053819440,1053819519,EU +1053819520,1053819563,DE +1053819564,1053819583,EU +1053819584,1053819647,DE +1053819648,1053820159,EU +1053820160,1053820927,DE 1053820928,1053821439,EU 1053821440,1053821447,GB 1053821448,1053821567,EU 1053821568,1053821695,GB -1053821696,1053825023,EU -1053825024,1053826047,ES -1053826048,1053829887,EU +1053821696,1053823999,EU +1053824000,1053824007,DE +1053824008,1053824015,EU +1053824016,1053824023,DE +1053824024,1053824063,EU +1053824064,1053824095,DE +1053824096,1053824127,EU +1053824128,1053824255,NL +1053824256,1053825023,EU +1053825024,1053825791,ES +1053825792,1053825919,GB +1053825920,1053826047,ES +1053826048,1053826815,EU +1053826816,1053827327,DE +1053827328,1053827583,BE +1053827584,1053829887,EU 1053829888,1053830143,DE -1053830144,1053835263,EU +1053830144,1053831167,EU +1053831168,1053831423,DE +1053831424,1053834943,EU +1053834944,1053834975,DE +1053834976,1053835263,EU 1053835264,1053835775,DE -1053835776,1053837823,EU +1053835776,1053837311,EU +1053837312,1053837439,FK +1053837440,1053837455,GB +1053837456,1053837567,EU +1053837568,1053837823,GB 1053837824,1053838335,FK -1053838336,1053844991,EU +1053838336,1053838591,DE +1053838592,1053840399,EU +1053840400,1053840415,DE +1053840416,1053840447,EU +1053840448,1053840511,DE +1053840512,1053843199,EU +1053843200,1053843231,DK +1053843232,1053843455,GB +1053843456,1053843711,EU +1053843712,1053843967,DE +1053843968,1053844223,GB +1053844224,1053844479,DE +1053844480,1053844991,EU 1053844992,1053845503,DE -1053845504,1053846015,EU +1053845504,1053845727,EU +1053845728,1053845735,DE +1053845736,1053846015,EU 1053846016,1053846527,DE -1053846528,1053847039,EU -1053847040,1053847551,DE +1053846528,1053846783,EU +1053846784,1053847551,DE 1053847552,1053849599,GB -1053849600,1053855743,EU +1053849600,1053850367,DE +1053850368,1053851135,EU +1053851136,1053851647,DE +1053851648,1053851903,EU +1053851904,1053851919,FR +1053851920,1053852031,EU +1053852032,1053852047,IT +1053852048,1053852111,EU +1053852112,1053852127,GB +1053852128,1053852159,DE +1053852160,1053855743,EU 1053855744,1053859839,GB -1053859840,1053863935,EU -1053863936,1053864447,DE -1053864448,1053876223,EU +1053859840,1053860863,DE +1053860864,1053862655,EU +1053862656,1053862783,DE +1053862784,1053862847,EU +1053862848,1053862879,DE +1053862880,1053863423,EU +1053863424,1053864959,DE +1053864960,1053865215,EU +1053865216,1053865727,DE +1053865728,1053865759,US +1053865760,1053865983,EU +1053865984,1053866239,DE +1053866240,1053866495,ES +1053866496,1053866823,DE +1053866824,1053866831,EU +1053866832,1053866847,DE +1053866848,1053867519,EU +1053867520,1053867775,DE +1053867776,1053867975,EU +1053867976,1053867983,DE +1053867984,1053867991,EU +1053867992,1053867999,DE +1053868000,1053868007,EU +1053868008,1053868015,DE +1053868016,1053868031,EU +1053868032,1053868447,ES +1053868448,1053868455,GB +1053868456,1053868479,EU +1053868480,1053868543,FR +1053868544,1053868799,EU +1053868800,1053869567,DE +1053869568,1053870079,EU +1053870080,1053870335,DE +1053870336,1053870591,GB +1053870592,1053870847,EU +1053870848,1053871359,DE +1053871360,1053871615,EU +1053871616,1053871871,DE +1053871872,1053872383,EU +1053872384,1053872447,DE +1053872448,1053872511,EU +1053872512,1053872639,FR +1053872640,1053872895,EU +1053872896,1053873663,DE +1053873664,1053876223,EU 1053876224,1053876479,DE 1053876480,1053876735,GB -1053876736,1053877759,EU -1053877760,1053878271,DE +1053876736,1053876991,DE +1053876992,1053877247,EU +1053877248,1053878271,DE 1053878272,1053878783,GB -1053878784,1053879295,EU -1053879296,1053881855,DE -1053881856,1053882367,EU +1053878784,1053879047,DE +1053879048,1053879055,EU +1053879056,1053879071,DE +1053879072,1053879167,GB +1053879168,1053879295,EU +1053879296,1053882111,DE +1053882112,1053882367,EU 1053882368,1053882879,DE -1053882880,1053884415,EU +1053882880,1053883391,GB +1053883392,1053884415,DE 1053884416,1053892607,BH 1053892608,1053900799,DE 1053900800,1053917183,NO @@ -8403,15 +8336,13 @@ 1054181121,1054181375,GB 1054181376,1054182399,DE 1054182400,1054183423,GB -1054183424,1054186240,DE +1054183424,1054185216,DE +1054185217,1054185471,GB +1054185472,1054186240,DE 1054186241,1054186495,GB 1054186496,1054187264,DE 1054187265,1054187519,GB -1054187520,1054192895,BG -1054192896,1054193151,RO -1054193152,1054194687,BG -1054194688,1054195455,RO -1054195456,1054195711,BG +1054187520,1054195711,BG 1054195712,1054212095,BE 1054212096,1054277631,DE 1054277632,1054343167,KW @@ -8421,9 +8352,7 @@ 1054367744,1054375935,FI 1054375936,1054381567,GB 1054381568,1054381823,US -1054381824,1054382079,GB -1054382080,1054382335,SG -1054382336,1054384127,GB +1054381824,1054384127,GB 1054384128,1054400511,DE 1054400512,1054408703,GB 1054408704,1054416895,FR @@ -8442,9 +8371,48 @@ 1054646272,1054654463,SE 1054654464,1054662655,MK 1054662656,1054670847,FI -1054670848,1054672127,EU -1054672128,1054672383,DE -1054672384,1054679039,EU +1054670848,1054671103,GB +1054671104,1054671167,EU +1054671168,1054671231,IE +1054671232,1054671371,EU +1054671372,1054671375,IE +1054671376,1054671415,EU +1054671416,1054671423,IE +1054671424,1054671431,EU +1054671432,1054671439,IE +1054671440,1054672127,EU +1054672128,1054672447,IE +1054672448,1054672719,EU +1054672720,1054672727,IE +1054672728,1054672743,EU +1054672744,1054672767,IE +1054672768,1054672775,EU +1054672776,1054672783,IE +1054672784,1054672791,EU +1054672792,1054672807,IE +1054672808,1054673663,EU +1054673664,1054673727,IE +1054673728,1054673855,EU +1054673856,1054673919,IE +1054673920,1054673951,EU +1054673952,1054674047,IE +1054674048,1054674079,EU +1054674080,1054674111,IE +1054674112,1054674455,EU +1054674456,1054674471,IE +1054674472,1054674479,EU +1054674480,1054674495,IE +1054674496,1054674503,EU +1054674504,1054674511,IE +1054674512,1054674519,EU +1054674520,1054674527,GB +1054674528,1054674687,EU +1054674688,1054675199,IE +1054675200,1054675455,EU +1054675456,1054675711,IE +1054675712,1054675967,EU +1054675968,1054676223,US +1054676224,1054679039,EU 1054679040,1054687231,UA 1054687232,1054703615,MD 1054703616,1054711807,BG @@ -8455,11 +8423,10 @@ 1054948255,1054973951,DE 1054973952,1054974207,EU 1054974208,1055129599,DE -1055129600,1055186943,CY -1055186944,1055195135,GR -1055195136,1055232511,EU -1055232512,1055233023,NL -1055233024,1055326207,EU +1055129600,1055195135,CY +1055195136,1055196159,EU +1055196160,1055196415,CH +1055196416,1055326207,EU 1055326208,1055334399,RU 1055334400,1055342591,IE 1055342592,1055358975,RO @@ -8479,7 +8446,9 @@ 1055916032,1055924223,RS 1055924224,1055932415,LY 1055932416,1055940607,FI -1055940608,1055948799,EG +1055940608,1055941119,EG +1055941120,1055941375,US +1055941376,1055948799,EG 1055948800,1055956991,DE 1055956992,1055965183,CZ 1055965184,1055973375,CH @@ -8513,28 +8482,18 @@ 1056669696,1056702463,MA 1056702464,1056874751,GB 1056874752,1056875007,IE -1056875008,1056964607,GB +1056875008,1056875663,GB +1056875664,1056875671,IE +1056875672,1056964607,GB 1056964608,1061558271,US 1061558272,1061559295,PK -1061559296,1061853695,US -1061853696,1061854207,GB -1061854208,1061939711,US -1061939712,1061940223,JM -1061940224,1062069247,US +1061559296,1062069247,US 1062069248,1062070271,PR -1062070272,1062429695,US -1062429696,1062430207,PR -1062430208,1062473727,US -1062473728,1062473759,IN -1062473760,1062530047,US +1062070272,1062473731,US +1062473732,1062473732,IN +1062473733,1062530047,US 1062530048,1062531071,EC -1062531072,1062545919,US -1062545920,1062546431,BM -1062546432,1062871551,US -1062871552,1062872063,PR -1062872064,1063390207,US -1063390208,1063390463,PR -1063390464,1063567359,US +1062531072,1063567359,US 1063567360,1063575551,A2 1063575552,1063727615,US 1063727616,1063728127,GU @@ -8544,11 +8503,7 @@ 1063749376,1063751679,A2 1063751680,1063895039,US 1063895040,1063899135,KR -1063899136,1064124927,US -1064124928,1064125439,EC -1064125440,1064127487,US -1064127488,1064127999,EC -1064128000,1064170751,US +1063899136,1064170751,US 1064170752,1064172031,A2 1064172032,1065530879,US 1065530880,1065533439,TC @@ -8575,48 +8530,26 @@ 1066352640,1066354943,JM 1066354944,1066355199,BB 1066355200,1066369023,JM -1066369024,1067238143,US -1067238144,1067238399,JP -1067238400,1067532287,US -1067532288,1067532799,HN -1067532800,1067575295,US +1066369024,1067575295,US 1067575296,1067577343,HN -1067577344,1067693055,US -1067693056,1067693567,CO -1067693568,1067700735,US -1067700736,1067701247,CW -1067701248,1067726847,US -1067726848,1067727359,EC -1067727360,1067740159,US +1067577344,1067736831,US +1067736832,1067737087,PR +1067737088,1067740159,US 1067740160,1067741183,HN -1067741184,1068017663,US -1068017664,1068018175,YE -1068018176,1068123135,US -1068123136,1068123647,BB -1068123648,1068175871,US -1068175872,1068176383,YE -1068176384,1068199935,US +1067741184,1068199935,US 1068199936,1068204031,CA -1068204032,1068346367,US -1068346368,1068346879,YE -1068346880,1068419071,US +1068204032,1068419071,US 1068419072,1068421119,CO 1068421120,1068422143,US 1068422144,1068422399,CA 1068422400,1068473343,US 1068473344,1068474367,BB -1068474368,1068481023,US -1068481024,1068481535,PR -1068481536,1069622866,US +1068474368,1069622866,US 1069622867,1069622867,MX -1069622868,1070652215,US -1070652216,1070652216,US -1070652217,1070701055,US +1069622868,1070701055,US 1070701056,1070701311,DO 1070701312,1070701567,HT -1070701568,1070849407,US -1070849408,1070849423,US -1070849424,1071100927,US +1070701568,1071100927,US 1071100928,1071101951,PR 1071101952,1071134719,US 1071134720,1071136767,HK @@ -8625,8 +8558,10 @@ 1071142912,1071144959,US 1071144960,1071153151,LB 1071153152,1071157247,US -1071157248,1071161343,SG -1071161344,1071162367,US +1071157248,1071158271,SG +1071158272,1071159295,US +1071159296,1071160319,SG +1071160320,1071162367,US 1071162368,1071163391,KR 1071163392,1071165439,HK 1071165440,1071166463,US @@ -8652,7 +8587,7 @@ 1071252480,1071254783,US 1071254784,1071255039,GB 1071255040,1071255295,US -1071255296,1071255551,DE +1071255296,1071255551,LB 1071255552,1071256319,US 1071256320,1071256575,HK 1071256576,1071258879,US @@ -8747,7 +8682,9 @@ 1071315200,1071315455,SG 1071315456,1071315711,US 1071315712,1071315967,JP -1071315968,1071321087,US +1071315968,1071318783,US +1071318784,1071319039,IN +1071319040,1071321087,US 1071321088,1071322111,HK 1071322112,1071415295,US 1071415296,1071417343,TW @@ -8770,14 +8707,12 @@ 1071517696,1071519743,HK 1071519744,1071579391,US 1071579392,1071579647,CA -1071579648,1072922623,US +1071579648,1071954303,US +1071954304,1071954319,GB +1071954320,1072922623,US 1072922624,1072923391,CA 1072923392,1072923647,US -1072923648,1072924159,CA -1072924160,1072924671,HT -1072924672,1072926719,CA -1072926720,1072926975,PH -1072926976,1072932863,CA +1072923648,1072932863,CA 1072932864,1072933119,US 1072933120,1072933247,CA 1072933248,1072933375,US @@ -8787,29 +8722,29 @@ 1072936448,1072936703,PH 1072936704,1072939263,CA 1072939264,1072939311,US -1072939312,1072939519,CA -1072939520,1072940031,US -1072940032,1072942079,CA +1072939312,1072942079,CA 1072942080,1072942111,US 1072942112,1072942591,CA 1072942592,1072943103,US 1072943104,1072955391,CA 1072955392,1073022975,US -1073022976,1073025535,HN -1073025536,1073027071,US +1073022976,1073025023,HN +1073025024,1073026559,US +1073026560,1073026815,PR +1073026816,1073027071,US 1073027072,1073028095,NI -1073028096,1073028607,US -1073028608,1073029119,GD +1073028096,1073029119,US 1073029120,1073031167,PR 1073031168,1073033215,US 1073033216,1073035263,CW 1073035264,1073036032,GD -1073036033,1073037823,US -1073037824,1073038335,GD -1073038336,1073039359,US +1073036033,1073039359,US 1073039360,1073041407,GT -1073041408,1073043455,CO -1073043456,1073045503,US +1073041408,1073042431,CO +1073042432,1073044735,US +1073044736,1073044991,PR +1073044992,1073045247,US +1073045248,1073045503,PR 1073045504,1073047551,CO 1073047552,1073049599,US 1073049600,1073053695,BS @@ -8819,31 +8754,31 @@ 1073373184,1073381375,CA 1073381376,1073381631,US 1073381632,1073381887,EU -1073381888,1074020351,US +1073381888,1073454591,US +1073454592,1073454847,KY +1073454848,1074020351,US 1074020352,1074028543,CA 1074028544,1074118655,US -1074118656,1074126847,CA -1074126848,1074127359,US -1074127360,1074135039,CA +1074118656,1074135039,CA 1074135040,1074184191,US 1074184192,1074188287,CA 1074188288,1074229247,US 1074229248,1074241535,CA 1074241536,1074398463,US 1074398464,1074398719,CA -1074398720,1074401791,US -1074401792,1074402047,CA -1074402048,1074405375,US -1074405376,1074413567,CA -1074413568,1074469375,US +1074398720,1074412543,US +1074412544,1074412799,CA +1074412800,1074469375,US 1074469376,1074469631,CA 1074469632,1074733055,US 1074733056,1074737151,AU 1074737152,1074745343,CA 1074745344,1074757631,US 1074757632,1074765823,CA -1074765824,1074870271,US -1074870272,1074872319,CA +1074765824,1074871591,US +1074871592,1074871599,CA +1074871600,1074871807,US +1074871808,1074872319,CA 1074872320,1074937855,US 1074937856,1074946047,CA 1074946048,1074962431,US @@ -8861,73 +8796,70 @@ 1075494912,1075558143,US 1075558144,1075558911,VI 1075558912,1075576831,US -1075576832,1075577087,NO -1075577088,1075579647,GB -1075579648,1075579903,NO -1075579904,1075579909,GB +1075576832,1075579909,GB 1075579910,1075579910,NO 1075579911,1075580415,GB 1075580416,1075580671,NO 1075580672,1075580927,GB -1075580928,1075581279,NL -1075581280,1075581295,NO -1075581296,1075581439,NL +1075580928,1075581439,NL 1075581440,1075581951,NO -1075581952,1075582463,NL -1075582464,1075582719,NO -1075582720,1075584511,NL +1075581952,1075583159,NL +1075583160,1075583167,NO +1075583168,1075584511,NL 1075584512,1075584767,NO 1075584768,1075585023,NL 1075585024,1075609599,US 1075609600,1075613695,TT 1075613696,1075744767,US 1075744768,1075748863,A2 -1075748864,1075782143,US -1075782144,1075782399,US -1075782400,1075855359,US +1075748864,1075855359,US 1075855360,1075871743,DO 1075871744,1075970047,US 1075970048,1075972095,CA -1075972096,1075976959,US +1075972096,1075976127,US +1075976128,1075976159,CA +1075976160,1075976959,US 1075976960,1075977215,CA -1075977216,1075985919,US -1075985920,1075986431,CA -1075986432,1075987711,US -1075987712,1075988223,CA +1075977216,1075987967,US +1075987968,1075988223,CA 1075988224,1075988319,US 1075988320,1075988351,CA 1075988352,1075988479,US 1075988480,1075988735,CA -1075988736,1075994623,US +1075988736,1075989231,US +1075989232,1075989239,CA +1075989240,1075994623,US 1075994624,1075995007,CA 1075995008,1075995103,US 1075995104,1075995135,CA -1075995136,1075998207,US -1075998208,1075999231,CA -1075999232,1076000767,US +1075995136,1075996159,US +1075996160,1075996415,CA +1075996416,1075998207,US +1075998208,1075998271,CA +1075998272,1075998463,US +1075998464,1075998719,CA +1075998720,1076000767,US 1076000768,1076002047,CA -1076002048,1076007423,US -1076007424,1076007935,CA -1076007936,1076008447,US +1076002048,1076005311,US +1076005312,1076005319,CA +1076005320,1076007423,US +1076007424,1076007679,CA +1076007680,1076008447,US 1076008448,1076008703,CA -1076008704,1076029951,US +1076008704,1076009727,US +1076009728,1076009983,CA +1076009984,1076029951,US 1076029952,1076030207,CA 1076030208,1076035519,US 1076035520,1076035583,IN 1076035584,1076174847,US 1076174848,1076178943,BM -1076178944,1076184255,US -1076184256,1076184287,BE -1076184288,1076196641,US -1076196642,1076196671,BE -1076196672,1076233177,US +1076178944,1076233177,US 1076233178,1076233178,TC 1076233179,1076338687,US 1076338688,1076346879,CA 1076346880,1076387839,US -1076387840,1076393727,CA -1076393728,1076394239,US -1076394240,1076396031,CA +1076387840,1076396031,CA 1076396032,1076404223,US 1076404224,1076408319,A2 1076408320,1076412415,CA @@ -8946,7 +8878,9 @@ 1077002240,1077055487,US 1077055488,1077059583,CA 1077059584,1077383167,US -1077383168,1077384191,US +1077383168,1077383368,US +1077383369,1077383880,US +1077383881,1077384191,US 1077384192,1077444607,US 1077444608,1077452799,CA 1077452800,1077460991,JP @@ -8959,8 +8893,10 @@ 1077571584,1077641215,US 1077641216,1077657599,CA 1077657600,1077840383,US -1077840384,1077840639,US -1077840640,1077977087,US +1077840384,1077840511,US +1077840512,1077844383,US +1077844384,1077844391,US +1077844392,1077977087,US 1077977088,1077985279,CA 1077985280,1077993471,US 1077993472,1078001663,CA @@ -8975,52 +8911,63 @@ 1078280192,1078280447,CA 1078280448,1078280575,US 1078280576,1078280583,CA -1078280584,1078281511,US +1078280584,1078281300,US +1078281301,1078281301,CA +1078281302,1078281511,US 1078281512,1078281519,CA 1078281520,1078281599,US 1078281600,1078281663,CA 1078281664,1078281727,US -1078281728,1078281983,CA -1078281984,1078283007,US +1078281728,1078281735,CA +1078281736,1078283007,US 1078283008,1078283015,CA 1078283016,1078284031,US 1078284032,1078284159,CA 1078284160,1078284479,US 1078284480,1078284543,CA -1078284544,1078284863,US +1078284544,1078284703,US +1078284704,1078284719,CA +1078284720,1078284735,US +1078284736,1078284751,CA +1078284752,1078284863,US 1078284864,1078284991,CA -1078284992,1078285567,US -1078285568,1078285823,CA -1078285824,1078286079,US -1078286080,1078286335,CA -1078286336,1078287231,US +1078284992,1078285151,US +1078285152,1078285167,CA +1078285168,1078286351,US +1078286352,1078286367,CA +1078286368,1078287231,US 1078287232,1078287239,CA -1078287240,1078306559,US +1078287240,1078287807,US +1078287808,1078287839,CA +1078287840,1078306559,US 1078306560,1078306815,GB 1078306816,1078312260,US 1078312261,1078312261,GB -1078312262,1078349311,US -1078349312,1078349823,PH -1078349824,1078433316,US -1078433317,1078433317,US -1078433318,1078455551,US +1078312262,1078435871,US +1078435872,1078435879,US +1078435880,1078443799,US +1078443800,1078443807,US +1078443808,1078455551,US 1078455552,1078455807,NL 1078455808,1078456319,US 1078456320,1078460415,CA -1078460416,1078504959,US -1078504960,1078505471,CA -1078505472,1078517759,US +1078460416,1078517759,US 1078517760,1078525951,CA 1078525952,1078722559,US 1078722560,1078734847,AR 1078734848,1078736895,CO 1078736896,1078737407,US -1078737408,1078737919,CO +1078737408,1078737663,CO +1078737664,1078737919,US 1078737920,1078738943,EC -1078738944,1078739455,VE +1078738944,1078738967,US +1078738968,1078738975,VE +1078738976,1078739199,US +1078739200,1078739455,VE 1078739456,1078739967,US 1078739968,1078743039,PE -1078743040,1078746111,CO +1078743040,1078744063,US +1078744064,1078746111,CO 1078746112,1078747135,PE 1078747136,1078749183,CL 1078749184,1078751231,PE @@ -9035,24 +8982,16 @@ 1078773760,1078775807,PE 1078775808,1078777855,CO 1078777856,1078780927,EC -1078780928,1078945023,US -1078945024,1078945279,GB -1078945280,1079320575,US -1079320576,1079327616,CA +1078780928,1079320575,US +1079320576,1079322831,CA +1079322832,1079322839,US +1079322840,1079327616,CA 1079327617,1079327617,US 1079327618,1079328767,CA 1079328768,1079377919,US 1079377920,1079380927,CA 1079380928,1079380991,US -1079380992,1079384575,CA -1079384576,1079385087,ZW -1079385088,1079391231,CA -1079391232,1079391487,US -1079391488,1079391743,CA -1079391744,1079392255,HT -1079392256,1079394175,CA -1079394176,1079394191,US -1079394192,1079394303,CA +1079380992,1079394303,CA 1079394304,1079395327,EC 1079395328,1079396351,CA 1079396352,1079397375,MP @@ -9064,26 +9003,23 @@ 1079403904,1079403935,US 1079403936,1079403999,CA 1079404000,1079404031,US -1079404032,1079404799,CA -1079404800,1079405055,US +1079404032,1079404959,CA +1079404960,1079404991,US +1079404992,1079405023,CA +1079405024,1079405055,US 1079405056,1079405439,CA 1079405440,1079405567,US 1079405568,1079407103,CA 1079407104,1079407359,US -1079407360,1079407615,CA -1079407616,1079408127,US -1079408128,1079413311,CA +1079407360,1079413311,CA 1079413312,1079413343,US 1079413344,1079415295,CA 1079415296,1079415807,US -1079415808,1079427583,CA -1079427584,1079428095,PW -1079428096,1079431679,CA -1079431680,1079432191,ZM -1079432192,1079433215,CA +1079415808,1079429263,CA +1079429264,1079429267,US +1079429268,1079433215,CA 1079433216,1079435263,CR -1079435264,1079435775,CO -1079435776,1079437311,CA +1079435264,1079437311,CA 1079437312,1079439359,US 1079439360,1079443455,CA 1079443456,1079459839,US @@ -9098,33 +9034,37 @@ 1079861248,1079865343,CA 1079865344,1080033279,US 1080033280,1080295423,CA -1080295424,1080492031,US -1080492032,1080496127,BE -1080496128,1080498431,US +1080295424,1080492287,US +1080492288,1080492543,BE +1080492544,1080498431,US 1080498432,1080498664,GB 1080498665,1080498665,EU 1080498666,1080498687,GB 1080498688,1080501503,US 1080501504,1080501759,EU -1080501760,1080512511,US -1080512512,1080516607,GB -1080516608,1080518655,US -1080518656,1080519679,GB -1080519680,1080524799,US -1080524800,1080537087,IN -1080537088,1080549375,US -1080549376,1080557567,IN -1080557568,1080569343,US +1080501760,1080513535,US +1080513536,1080513791,GB +1080513792,1080514559,US +1080514560,1080514815,GB +1080514816,1080535039,US +1080535040,1080535295,IN +1080535296,1080550399,US +1080550400,1080550655,IN +1080550656,1080569343,US 1080569344,1080569599,JP 1080569600,1080569730,US 1080569731,1080569731,JP 1080569732,1080581887,US 1080581888,1080582143,AP -1080582144,1080590335,US -1080590336,1080598527,IN -1080598528,1080606719,US -1080606720,1080623103,AU -1080623104,1080954879,US +1080582144,1080610559,US +1080610560,1080610815,AU +1080610816,1080613631,US +1080613632,1080613887,AU +1080613888,1080621311,US +1080621312,1080621567,AU +1080621568,1080622079,US +1080622080,1080622335,AU +1080622336,1080954879,US 1080956774,1080956774,GB 1080957952,1080963839,A2 1080963840,1080967167,US @@ -9133,37 +9073,29 @@ 1080975104,1080983551,A2 1080986624,1080987647,US 1080987648,1080988671,A2 -1080988672,1080999935,US +1080988672,1080989951,US +1080989952,1080990207,DE +1080990208,1080999935,US 1080999936,1081016319,CA -1081016320,1081036799,US -1081036800,1081040895,CA -1081040896,1081047580,US -1081047581,1081047581,US -1081047582,1081212927,US +1081016320,1081038335,US +1081038336,1081040895,CA +1081040896,1081212927,US 1081212928,1081278463,CA -1081278464,1081369599,US -1081369600,1081370111,CO -1081370112,1081378495,US +1081278464,1081377663,US +1081377664,1081377791,VE +1081377792,1081378495,US 1081378496,1081378559,VE 1081378560,1081391103,US 1081391104,1081393151,PA -1081393152,1081394175,US -1081394176,1081394687,CL -1081394688,1081395199,US +1081393152,1081395199,US 1081395200,1081397247,CL -1081397248,1081397759,US -1081397760,1081398783,CL -1081398784,1081399295,US +1081397248,1081399295,US 1081399296,1081401343,CL -1081401344,1081401855,US -1081401856,1081402367,AR -1081402368,1081410559,US +1081401344,1081410559,US 1081410560,1081411583,PR -1081411584,1081413629,US -1081413630,1081413630,PR -1081413631,1081419775,US -1081419776,1081420287,PR -1081420288,1081421311,US +1081411584,1081413375,US +1081413376,1081413631,PR +1081413632,1081421311,US 1081421312,1081421567,MF 1081421568,1081443327,US 1081443328,1081444351,CL @@ -9176,25 +9108,23 @@ 1081483264,1081487359,US 1081487360,1081488383,A2 1081488384,1081488639,US -1081488640,1081488895,A2 -1081488896,1081489407,US -1081489408,1081491455,A2 +1081488640,1081491455,A2 1081491456,1081565183,US 1081565184,1081573375,CA 1081573376,1081589759,US 1081589760,1081593855,BB 1081593856,1081597951,CA -1081597952,1082138623,US +1081597952,1081914879,US +1081914880,1081915135,GB +1081915136,1082138623,US 1082138624,1082139409,A2 1082139410,1082139410,ZA 1082139411,1082140671,A2 1082140672,1082314751,US 1082314752,1082318847,CA -1082318848,1082351359,US -1082351360,1082351361,AE +1082318848,1082351361,US 1082351362,1082351362,SA -1082351363,1082351615,AE -1082351616,1082679807,US +1082351363,1082679807,US 1082683392,1082687487,CA 1082687488,1082786591,US 1082786592,1082786623,HK @@ -9206,13 +9136,7 @@ 1082945536,1082949631,CA 1082949632,1082982399,US 1082982400,1083015167,CA -1083015168,1083261311,US -1083261312,1083261439,US -1083261440,1083264383,US -1083264384,1083264447,US -1083264448,1083264463,US -1083264464,1083264511,US -1083264512,1083396095,US +1083015168,1083396095,US 1083396096,1083400191,BM 1083400192,1083437055,US 1083437056,1083441151,CA @@ -9238,110 +9162,99 @@ 1085997056,1086013439,CA 1086013440,1086042111,US 1086042112,1086046207,CA -1086046208,1086421503,US -1086421504,1086422015,MP -1086422016,1086922751,US +1086046208,1086922751,US 1086922752,1086930943,CA 1086930944,1086955519,US 1086955520,1086971903,CA 1086971904,1087016959,US 1087016960,1087021055,CA -1087021056,1087375103,US -1087375104,1087375359,BR -1087375360,1087385855,US +1087021056,1087385855,US 1087385856,1087386111,EU -1087386112,1087393791,US -1087393792,1087395503,GB +1087386112,1087395327,US +1087395328,1087395503,GB 1087395504,1087395511,US -1087395512,1087395839,GB -1087395840,1087399167,US -1087399168,1087399423,GB -1087399424,1087401727,US -1087401728,1087401791,MX -1087401792,1087401855,US -1087401856,1087401887,MX -1087401888,1087401919,US -1087401920,1087401983,MX -1087401984,1087405407,US +1087395512,1087395583,GB +1087395584,1087405407,US 1087405408,1087405423,MX -1087405424,1087432599,US -1087432600,1087432607,FR -1087432608,1087436159,US +1087405424,1087419135,US +1087419136,1087419391,GB +1087419392,1087432447,US +1087432448,1087432607,FR +1087432608,1087432639,US +1087432640,1087432703,FR +1087432704,1087436159,US 1087436160,1087436167,CH 1087436168,1087440895,US 1087440896,1087442943,PR 1087442944,1087443551,US 1087443552,1087443583,DE -1087443584,1087461734,US -1087461735,1087461735,IN -1087461736,1087464945,US +1087443584,1087464945,US 1087464946,1087464949,GB 1087464950,1087466489,US 1087466490,1087466493,GB 1087466494,1087467291,US 1087467292,1087467295,BR -1087467296,1087515391,US -1087515392,1087516159,BB -1087516160,1087596031,US -1087596032,1087596287,DE -1087596288,1087608319,US +1087467296,1087515647,US +1087515648,1087515903,BB +1087515904,1087586303,US +1087586304,1087586559,GB +1087586560,1087608319,US 1087608320,1087608575,GB 1087608576,1087643723,US 1087643724,1087643727,FR -1087643728,1087654271,US -1087654272,1087654399,VE +1087643728,1087654143,US +1087654144,1087654399,VE 1087654400,1087678623,US 1087678624,1087678655,GB 1087678656,1087695319,US 1087695320,1087695323,GB -1087695324,1087708671,US -1087708672,1087708927,AU -1087708928,1087714335,US +1087695324,1087708685,US +1087708686,1087708686,AU +1087708687,1087714335,US 1087714336,1087714367,NL 1087714368,1087715327,US 1087715328,1087717375,PA -1087717376,1087717858,GB +1087717376,1087717631,US +1087717632,1087717858,GB 1087717859,1087717859,US -1087717860,1087719423,GB -1087719424,1087726015,US +1087717860,1087717887,GB +1087717888,1087726015,US 1087726016,1087726047,FR 1087726048,1087726096,US 1087726097,1087726097,GB -1087726098,1087729663,US -1087729664,1087733759,PR -1087733760,1087735639,US +1087726098,1087735639,US 1087735640,1087735647,GB -1087735648,1087738879,US -1087738880,1087739135,AR -1087739136,1087746079,US +1087735648,1087746079,US 1087746080,1087746083,HK 1087746084,1087758335,US 1087758336,1087766527,PR -1087766528,1087788543,US -1087788544,1087788799,CA -1087788800,1087799787,US +1087766528,1087798943,US +1087798944,1087798975,CA +1087798976,1087799295,US +1087799296,1087799551,DE +1087799552,1087799787,US 1087799788,1087799791,CH 1087799792,1087825663,US 1087825664,1087825919,SA -1087825920,1087836415,US -1087836416,1087836671,FR -1087836672,1087837359,US +1087825920,1087837359,US 1087837360,1087837367,BR 1087837368,1087839231,US -1087839232,1087840255,GB -1087840256,1087854079,US -1087854080,1087854335,GB -1087854336,1087862783,US +1087839232,1087839487,GB +1087839488,1087862783,US 1087862784,1087864831,PA 1087864832,1087873023,US -1087873024,1087874559,CA -1087874560,1087874815,US -1087874816,1087876607,CA -1087876608,1087876863,US -1087876864,1087877119,CA -1087877120,1087884001,US -1087884002,1087884002,GB -1087884003,1088684031,US +1087873024,1087873279,CA +1087873280,1087883263,US +1087883264,1087883519,AR +1087883520,1087883775,US +1087883776,1087884031,GB +1087884032,1087918511,US +1087918512,1087918519,PR +1087918520,1087950111,US +1087950112,1087950119,PR +1087950120,1088012767,US +1088012768,1088012775,PR +1088012776,1088684031,US 1088684032,1088946175,CA 1088946176,1089053183,US 1089053184,1089053439,BR @@ -9349,13 +9262,19 @@ 1089054344,1089054344,GB 1089054345,1089057279,US 1089057280,1089057535,EU -1089057536,1089153535,US -1089153536,1089153791,US -1089153792,1089167359,US +1089057536,1089147391,US +1089147392,1089147647,GB +1089147648,1089167359,US 1089167360,1089171455,CA -1089171456,1089172479,A2 -1089172480,1089172735,US -1089172736,1089175551,A2 +1089171456,1089172839,A2 +1089172840,1089172847,US +1089172848,1089172855,A2 +1089172856,1089172863,US +1089172864,1089172903,A2 +1089172904,1089172927,US +1089172928,1089174015,A2 +1089174016,1089174271,US +1089174272,1089175551,A2 1089175552,1089191935,US 1089191936,1089200127,CA 1089200128,1089209471,US @@ -9392,24 +9311,16 @@ 1089266432,1089266943,GB 1089266944,1089306623,US 1089306624,1089339391,PR -1089339392,1089469807,US -1089469808,1089469823,CA -1089469824,1089881599,US -1089881600,1089882111,GB -1089882112,1089882623,US -1089882624,1089883135,GB -1089883136,1089887231,US -1089887232,1089887743,GB -1089887744,1089961983,US +1089339392,1089393223,US +1089393224,1089393231,CA +1089393232,1089393343,US +1089393344,1089393359,CA +1089393360,1089961983,US 1089961984,1089970175,CA 1089970176,1089974271,PR 1089974272,1090146303,US 1090146304,1090150399,CA -1090150400,1090195086,US -1090195087,1090195087,US -1090195088,1090197111,US -1090197112,1090197112,US -1090197113,1090207743,US +1090150400,1090207743,US 1090207744,1090215935,CA 1090215936,1090355199,US 1090355200,1090363391,CA @@ -9419,9 +9330,7 @@ 1090424832,1090428927,CA 1090428928,1090445311,US 1090445312,1090453503,CA -1090453504,1091797975,US -1091797976,1091797983,US -1091797984,1091960831,US +1090453504,1091960831,US 1091960832,1092026367,CA 1092026368,1092075519,US 1092075520,1092091903,PR @@ -9430,36 +9339,32 @@ 1093021696,1093025791,US 1093025792,1093033983,CA 1093033984,1093058559,US -1093058560,1093063167,PR -1093063168,1093063679,DO -1093063680,1093066751,PR +1093058560,1093066751,PR 1093066752,1093074943,US 1093074944,1093091327,CA -1093091328,1093108223,US -1093108224,1093108479,CA -1093108480,1093109871,US +1093091328,1093109871,US 1093109872,1093109879,CA 1093109880,1093110927,US 1093110928,1093110935,CA -1093110936,1093111903,US +1093110936,1093111727,US +1093111728,1093111743,CA +1093111744,1093111903,US 1093111904,1093111935,CA -1093111936,1093114623,US -1093114624,1093114879,CA -1093114880,1093115135,US -1093115136,1093115391,CA -1093115392,1093115903,US -1093115904,1093116159,CA -1093116160,1093120511,US +1093111936,1093114843,US +1093114844,1093114847,CA +1093114848,1093120511,US 1093120512,1093120767,CA -1093120768,1093121023,US -1093121024,1093121791,CA +1093120768,1093121535,US +1093121536,1093121791,CA 1093121792,1093122175,US 1093122176,1093122303,CA -1093122304,1093125119,US -1093125120,1093125631,CA -1093125632,1093126655,US -1093126656,1093126911,CA -1093126912,1093128703,US +1093122304,1093122751,US +1093122752,1093122767,CA +1093122768,1093123583,US +1093123584,1093123839,CA +1093123840,1093123951,US +1093123952,1093123967,CA +1093123968,1093128703,US 1093128704,1093128959,CA 1093128960,1093131007,US 1093131008,1093131263,CA @@ -9470,36 +9375,24 @@ 1093136640,1093136895,US 1093136896,1093137151,CA 1093137152,1093137663,US -1093137664,1093137919,CA -1093137920,1093138175,US -1093138176,1093138431,CA -1093138432,1093320191,US -1093320192,1093320447,PR -1093320448,1093697535,US +1093137664,1093138431,CA +1093138432,1093697535,US 1093697536,1093699071,BB -1093699072,1093699583,GD -1093699584,1093699839,BB -1093699840,1093700095,GD -1093700096,1093700351,BB -1093700352,1093700607,GD -1093700608,1093701631,VC -1093701632,1093708287,BB -1093708288,1093709311,LC -1093709312,1093716479,BB -1093716480,1093716735,GD -1093716736,1093719807,BB -1093719808,1093720319,LC -1093720320,1093721343,VG -1093721344,1093724415,BB -1093724416,1093725183,VC -1093725184,1093730303,BB -1093730304,1093747839,US -1093747840,1093747903,US -1093747904,1093966216,US +1093699072,1093700607,GD +1093700608,1093716479,BB +1093716480,1093717504,GD +1093717505,1093724933,BB +1093724934,1093724934,VC +1093724935,1093724941,BB +1093724942,1093724942,VC +1093724943,1093730303,BB +1093730304,1093733887,US +1093733888,1093734143,US +1093734144,1093965960,US +1093965961,1093965961,NL +1093965962,1093966216,US 1093966217,1093966217,NL -1093966218,1094441727,US -1094441728,1094441983,US -1094441984,1094565887,US +1093966218,1094565887,US 1094565888,1094582271,CA 1094582272,1094662271,US 1094662272,1094662303,CN @@ -9507,32 +9400,22 @@ 1094669636,1094669639,HK 1094669640,1094670795,US 1094670796,1094670799,CN -1094670800,1095314943,US -1095314944,1095314944,US -1095314945,1095450623,US +1094670800,1095450623,US 1095450624,1095467007,BS -1095467008,1095627775,US -1095627776,1095628287,CA -1095628288,1096278015,US +1095467008,1096278015,US 1096278016,1096286207,CA -1096286208,1096351231,US -1096351232,1096351743,A2 -1096351744,1096518655,US +1096286208,1096518655,US 1096518656,1096518911,A2 1096518912,1096519167,US 1096519168,1096519423,CD 1096519424,1096519679,SL -1096519680,1096540927,US -1096540928,1096541183,US -1096541184,1096548351,US +1096519680,1096548351,US 1096548352,1096810495,CA 1096810496,1096884223,US 1096884224,1096888319,CA 1096888320,1096925183,US 1096925184,1096941567,CA -1096941568,1097067519,US -1097067520,1097068031,GB -1097068032,1097727999,US +1096941568,1097727999,US 1097728000,1097736191,CA 1097736192,1097768959,US 1097768960,1097785343,CA @@ -9543,18 +9426,32 @@ 1097837199,1097896191,US 1097896192,1097896447,VI 1097896448,1097947135,US -1097947136,1097949183,VI +1097947136,1097947151,VI +1097947152,1097947167,US +1097947168,1097947207,VI +1097947208,1097947215,US +1097947216,1097947327,VI +1097947328,1097947391,US +1097947392,1097947735,VI +1097947736,1097947743,US +1097947744,1097947991,VI +1097947992,1097947999,US +1097948000,1097948015,VI +1097948016,1097948031,US +1097948032,1097949183,VI 1097949184,1097951231,US -1097951232,1097953279,VI -1097953280,1101182975,US -1101182976,1101183487,YE -1101183488,1101190655,US -1101190656,1101191167,EC -1101191168,1101304831,US +1097951232,1097951247,VI +1097951248,1097951263,US +1097951264,1097953279,VI +1097953280,1101304831,US 1101304832,1101305855,HN -1101305856,1101352959,US +1101305856,1101306047,US +1101306048,1101306079,PR +1101306080,1101352959,US 1101352960,1101355007,HN -1101355008,1101459455,US +1101355008,1101402031,US +1101402032,1101402047,PR +1101402048,1101459455,US 1101459456,1101461503,BB 1101461504,1101469695,US 1101469696,1101471743,HN @@ -9564,33 +9461,17 @@ 1101484032,1101488127,CO 1101488128,1101521407,US 1101521408,1101521919,AS -1101521920,1101542399,US -1101542400,1101542911,CO -1101542912,1101574655,US -1101574656,1101575167,EC -1101575168,1101650431,US -1101650432,1101650943,HN -1101650944,1101676543,US +1101521920,1101676543,US 1101676544,1101678591,EC -1101678592,1101750783,US -1101750784,1101751295,BM -1101751296,1101792255,US -1101792256,1101792767,A2 -1101792768,1101797375,US +1101678592,1101797375,US 1101797376,1101798399,BB 1101798400,1101803519,US 1101803520,1101804543,HN -1101804544,1101869055,US -1101869056,1101869567,GH -1101869568,1101871103,US +1101804544,1101871103,US 1101871104,1101873151,BO -1101873152,1101983231,US -1101983232,1101983743,CW -1101983744,1102008735,US -1102008736,1102008767,BE -1102008768,1102008831,US -1102008832,1102008863,BE -1102008864,1102389247,US +1101873152,1101991935,US +1101991936,1101992191,NL +1101992192,1102389247,US 1102389248,1102393343,CA 1102393344,1102446591,US 1102446592,1102448383,HN @@ -9602,30 +9483,17 @@ 1103548416,1103550463,BS 1103550464,1103603711,US 1103603712,1103605759,EC -1103605760,1103623167,US -1103623168,1103623679,CO -1103623680,1103996927,US -1103996928,1103997439,EC -1103997440,1104166911,US +1103605760,1104166911,US 1104166912,1104168959,CO -1104168960,1104265215,US -1104265216,1104265727,PH -1104265728,1104629247,US +1104168960,1104629247,US 1104629248,1104629759,GH 1104629760,1104753151,US 1104753152,1104753407,SX 1104753408,1104842751,US 1104842752,1104844799,PR -1104844800,1104916991,US -1104916992,1104917247,AS -1104917248,1106469887,US +1104844800,1106469887,US 1106469888,1106470911,BS -1106470912,1106475007,US -1106475008,1106475519,CO -1106475520,1106758655,US -1106758656,1106759167,EC -1106759168,1106759679,CO -1106759680,1106767871,US +1106470912,1106767871,US 1106767872,1106769919,CO 1106769920,1107239935,US 1107239936,1107240191,CN @@ -9639,25 +9507,23 @@ 1107288064,1107292159,CA 1107292160,1107701759,US 1107701760,1107705855,CA -1107705856,1107820543,US +1107705856,1107812031,US +1107812032,1107812095,CA +1107812096,1107820543,US 1107820544,1107853311,ZA 1107853312,1107895039,US 1107895040,1107895807,GB -1107895808,1107898367,US -1107898368,1107899903,GB -1107899904,1107906559,US -1107906560,1107907071,GB -1107907072,1107907839,US +1107895808,1107899391,US +1107899392,1107899647,GB +1107899648,1107907839,US 1107907840,1107908095,GB 1107908096,1107909375,US 1107909376,1107909631,GB 1107909632,1107927039,US 1107927040,1107927551,GB -1107927552,1107935743,US -1107935744,1107936767,GB -1107936768,1107946495,US -1107946496,1107947007,GB -1107947008,1107948543,US +1107927552,1107935999,US +1107936000,1107936255,GB +1107936256,1107948543,US 1107948544,1107948799,GB 1107948800,1108025343,US 1108025344,1108029439,CA @@ -9682,34 +9548,44 @@ 1109772240,1109776575,US 1109776576,1109776607,CN 1109776608,1109819391,US -1109819392,1109852159,CA +1109819392,1109848831,CA +1109848832,1109849087,CA +1109849088,1109852159,CA 1109852160,1110126591,US 1110126592,1110130687,CA 1110130688,1110310911,US 1110310912,1110376447,CA -1110376448,1110415929,US -1110415930,1110415930,US -1110415931,1110445311,US +1110376448,1110443535,US +1110443536,1110443543,CA +1110443544,1110445311,US 1110445312,1110446591,CA -1110446592,1110451967,US -1110451968,1110453247,CA +1110446592,1110452223,US +1110452224,1110453247,CA 1110453248,1110454271,US 1110454272,1110455295,CA 1110455296,1110540287,US 1110540288,1110573055,CA -1110573056,1110578431,PR -1110578432,1110578687,US -1110578688,1110579711,PR -1110579712,1110580223,US -1110580224,1110587391,PR +1110573056,1110587391,PR 1110587392,1110587647,US -1110587648,1110589439,PR -1110589440,1110589951,US +1110587648,1110588159,PR +1110588160,1110588671,US +1110588672,1110588799,PR +1110588800,1110588927,US +1110588928,1110589183,PR +1110589184,1110589951,US 1110589952,1110590207,PR 1110590208,1110590463,US 1110590464,1110591231,PR 1110591232,1110591487,US -1110591488,1110638591,PR +1110591488,1110593535,PR +1110593536,1110593791,US +1110593792,1110594047,PR +1110594048,1110594303,US +1110594304,1110595327,PR +1110595328,1110595583,US +1110595584,1110595711,PR +1110595712,1110595776,US +1110595777,1110638591,PR 1110638592,1110654463,US 1110654464,1110654719,HT 1110654720,1110663167,US @@ -9725,9 +9601,11 @@ 1110856704,1110857727,IN 1110857728,1110858751,SG 1110858752,1110863871,US -1110863872,1110865919,JM -1110865920,1110867199,KY -1110867200,1110867967,JM +1110863872,1110866431,JM +1110866432,1110866687,KY +1110866688,1110867199,JM +1110867200,1110867455,KY +1110867456,1110867967,JM 1110867968,1110929407,US 1110929408,1110933503,BM 1110933504,1110940751,US @@ -9740,45 +9618,23 @@ 1112432640,1112440831,CA 1112440832,1112530943,US 1112530944,1112539135,CA -1112539136,1112899769,US -1112899770,1112899770,US -1112899771,1112900863,US -1112900864,1112902143,US -1112902144,1112902655,US -1112902656,1112902911,US -1112902912,1113591807,US +1112539136,1112907775,US +1112907776,1112907783,CA +1112907784,1113591807,US 1113591808,1113595903,CA 1113595904,1113596159,US 1113596160,1113596415,CL -1113596416,1113596927,GT -1113596928,1113597951,US -1113597952,1113598463,PA -1113598464,1113599487,US -1113599488,1113599999,VE -1113600000,1113600511,US -1113600512,1113603071,VE -1113603072,1113603327,CL -1113603328,1113657343,US +1113596416,1113597695,US +1113597696,1113598463,PA +1113598464,1113601023,US +1113601024,1113603071,VE +1113603072,1113657343,US 1113657344,1113661439,CA 1113661440,1113718783,US 1113718784,1113743359,DO -1113743360,1113752183,US -1113752184,1113752184,US -1113752185,1113752306,US -1113752307,1113752307,US -1113752308,1113752332,US +1113743360,1113752332,US 1113752333,1113752333,AE -1113752334,1113752434,US -1113752435,1113752435,US -1113752436,1113752469,US -1113752470,1113752470,US -1113752471,1113764497,US -1113764498,1113764498,US -1113764499,1113769531,US -1113769532,1113769787,US -1113769788,1113854975,US -1113854976,1113855487,CA -1113855488,1113983999,US +1113752334,1113983999,US 1113984000,1113984255,NL 1113984256,1113997311,US 1113997312,1114005503,CA @@ -9787,26 +9643,25 @@ 1114062848,1114095615,US 1114095616,1114103807,CA 1114103808,1114505215,US -1114505216,1114513407,CA +1114505216,1114507455,CA +1114507456,1114507459,US +1114507460,1114513407,CA 1114513408,1114515455,SA 1114515456,1114517503,US -1114517504,1114524159,CA -1114524160,1114524671,ZA -1114524672,1114533375,CA -1114533376,1114533887,ZA +1114517504,1114523647,CA +1114523648,1114523903,US +1114523904,1114533887,CA 1114533888,1114537983,AO 1114537984,1114550271,CA -1114550272,1114579831,US -1114579832,1114579832,US -1114579833,1114612991,US +1114550272,1114612991,US 1114612992,1114613247,AU -1114613248,1114628995,US -1114628996,1114628996,US -1114628997,1114681343,US +1114613248,1114681343,US 1114681344,1114685439,CA 1114685440,1114730495,US 1114730496,1114734591,CA -1114734592,1115113471,US +1114734592,1115112575,US +1115112576,1115112607,IN +1115112608,1115113471,US 1115113472,1115114495,HN 1115114496,1115115519,US 1115115520,1115116543,HN @@ -9825,7 +9680,13 @@ 1115795456,1115799551,CA 1115799552,1115815935,US 1115815936,1115947007,CA -1115947008,1116021247,US +1115947008,1116014079,US +1116014080,1116014335,DE +1116014336,1116014591,US +1116014592,1116014847,DE +1116014848,1116015871,US +1116015872,1116016127,DE +1116016128,1116021247,US 1116021248,1116021503,CI 1116021504,1116024063,US 1116024064,1116024127,PG @@ -9833,9 +9694,7 @@ 1116027136,1116027903,A2 1116027904,1116168191,US 1116168192,1116176383,CA -1116176384,1116425393,US -1116425394,1116425394,US -1116425395,1116897279,US +1116176384,1116897279,US 1116897280,1116905471,CA 1116905472,1117274111,US 1117274112,1117282303,CA @@ -9852,9 +9711,7 @@ 1117728768,1117745151,US 1117745152,1117749247,CA 1117749248,1117978623,US -1117978624,1117986591,CA -1117986592,1117986607,US -1117986608,1117986815,CA +1117978624,1117986815,CA 1117986816,1117995007,US 1117995008,1117999103,CA 1117999104,1118027775,US @@ -9871,30 +9728,41 @@ 1118535680,1118539775,CA 1118539776,1118543871,US 1118543872,1118547967,CA -1118547968,1118572303,US -1118572304,1118572319,US -1118572320,1118572351,US -1118572352,1118572543,US -1118572544,1118790655,US -1118790656,1118790911,IL -1118790912,1118961663,US +1118547968,1118961663,US 1118961664,1118962943,A2 1118962944,1118963199,AS -1118963200,1118964991,A2 -1118964992,1118965247,CW +1118963200,1118965247,A2 1118965248,1118965503,AS 1118965504,1118966015,A2 1118966016,1118966271,BR -1118966272,1118970879,A2 -1118970880,1118971391,SR -1118971392,1118989311,A2 -1118989312,1118989823,KE -1118989824,1118993151,A2 +1118966272,1118993151,A2 1118993152,1118993407,GY 1118993408,1118994431,A2 1118994432,1119109119,US 1119109120,1119111167,CA -1119113216,1119211519,US +1119113216,1119173135,US +1119173136,1119173143,MX +1119173144,1119173167,US +1119173168,1119173175,MX +1119173176,1119173183,US +1119173184,1119173199,MX +1119173200,1119173247,US +1119173248,1119173255,MX +1119173256,1119173279,US +1119173280,1119173295,MX +1119173296,1119173599,US +1119173600,1119173607,MX +1119173608,1119174063,US +1119174064,1119174071,MX +1119174072,1119174135,US +1119174136,1119174143,MX +1119174144,1119174183,US +1119174184,1119174191,MX +1119174192,1119174223,US +1119174224,1119174231,GT +1119174232,1119174407,US +1119174408,1119174415,MX +1119174416,1119211519,US 1119211520,1119215615,CA 1119215616,1119289343,US 1119289344,1119354879,CA @@ -9907,9 +9775,7 @@ 1119469568,1119477759,CA 1119477760,1119502335,US 1119502336,1119510527,CA -1119510528,1119558143,US -1119558144,1119558655,PR -1119558656,1119571967,US +1119510528,1119571967,US 1119571968,1119576063,CA 1119576064,1119580159,US 1119580160,1119584255,CA @@ -9920,30 +9786,38 @@ 1120153600,1120272383,US 1120272384,1120277247,CA 1120277248,1120277503,US -1120277504,1120281599,CA -1120281600,1120282111,US -1120282112,1120283647,CA +1120277504,1120283647,CA 1120283648,1120284671,EC 1120284672,1120286719,CA 1120286720,1120288767,US 1120288768,1120307199,CA 1120307200,1120307967,EC -1120307968,1120310271,CA -1120310272,1120310783,PH -1120310784,1120321535,CA +1120307968,1120310015,CA +1120310016,1120310271,PH +1120310272,1120312063,CA +1120312064,1120312319,PH +1120312320,1120321535,CA 1120321536,1120346111,US 1120346112,1120350207,CA 1120350208,1120372991,US 1120372992,1120373247,CA 1120373248,1120373759,US 1120373760,1120374015,CA -1120374016,1120376559,US +1120374016,1120376303,US +1120376304,1120376319,CA +1120376320,1120376479,US +1120376480,1120376494,CA +1120376495,1120376559,US 1120376560,1120376575,CA 1120376576,1120376695,US 1120376696,1120376703,CA 1120376704,1120379199,US 1120379200,1120379263,CA -1120379264,1120380453,US +1120379264,1120379295,US +1120379296,1120379311,CA +1120379312,1120379391,US +1120379392,1120379903,CA +1120379904,1120380453,US 1120380454,1120380454,CA 1120380455,1120380671,US 1120380672,1120380991,CA @@ -9951,13 +9825,13 @@ 1120381088,1120381095,CA 1120381096,1120382439,US 1120382440,1120382447,CA -1120382448,1120385279,US +1120382448,1120382463,US +1120382464,1120382719,CA +1120382720,1120385279,US 1120385280,1120385535,CA 1120385536,1120386559,US 1120386560,1120386815,CA -1120386816,1120497983,US -1120497984,1120498013,BE -1120498014,1120509951,US +1120386816,1120509951,US 1120509952,1120515583,SV 1120515584,1120515839,GT 1120515840,1120516095,SV @@ -9973,7 +9847,8 @@ 1120745472,1120745727,A2 1120745728,1120854015,US 1120854016,1120862207,CA -1120862208,1120875007,US +1120862208,1120874751,US +1120874752,1120875007,A2 1120875008,1120875263,AS 1120875264,1120876031,US 1120876032,1120877055,A2 @@ -9992,12 +9867,12 @@ 1121042432,1121230847,US 1121230848,1121239039,CA 1121239040,1121247231,US -1121247232,1121250303,CA -1121250304,1121250815,BZ -1121250816,1121255423,CA +1121247232,1121255423,CA 1121255424,1121714998,US 1121714999,1121714999,KW -1121715000,1121878015,US +1121715000,1121715935,US +1121715936,1121715943,US +1121715944,1121878015,US 1121878016,1121910783,CA 1121910784,1122074623,US 1122074624,1122087935,CA @@ -10005,17 +9880,15 @@ 1122088192,1122091007,CA 1122091008,1122140159,US 1122140160,1122148351,CA -1122148352,1122269217,US -1122269218,1122269218,US -1122269219,1122412497,US +1122148352,1122412497,US 1122412498,1122412498,LB 1122412499,1122451455,US 1122451456,1122455551,CO 1122455552,1122476031,US 1122476032,1122480127,PR -1122480128,1122498815,US -1122498816,1122499071,PR -1122499072,1122533375,US +1122480128,1122497791,US +1122497792,1122498047,PR +1122498048,1122533375,US 1122533376,1122535423,GB 1122535424,1122538495,KR 1122538496,1122635775,US @@ -10032,114 +9905,73 @@ 1123590144,1123598335,VI 1123598336,1123606527,CA 1123606528,1123651583,US -1123651584,1123652095,JM -1123652096,1123652351,AI -1123652352,1123652863,JM +1123651584,1123652863,JM 1123652864,1123653119,HT 1123653120,1123653631,JM 1123653632,1123654655,KY 1123654656,1123655679,JM 1123655680,1123663871,US -1123663872,1123665407,SV -1123665408,1123665919,US -1123665920,1123667967,SV +1123663872,1123664895,SV +1123664896,1123666943,US +1123666944,1123667967,SV 1123667968,1123670015,PR 1123670016,1123671039,US 1123671040,1123672063,PY 1123672064,1123694591,US -1123694592,1123696639,CA -1123696640,1123848191,US +1123694592,1123694847,CA +1123694848,1123848191,US 1123848192,1123852287,CA 1123852288,1123950591,US 1123950592,1123958783,CA -1123958784,1125064703,US -1125064704,1125065215,GB -1125065216,1125076115,US -1125076116,1125076116,US -1125076117,1125076167,US -1125076168,1125076168,US -1125076169,1125076339,US -1125076340,1125076340,US -1125076341,1125076348,US -1125076349,1125076349,US -1125076350,1125087999,US +1123958784,1125087999,US 1125088000,1125088255,CA -1125088256,1125238553,US +1125088256,1125103359,US +1125103360,1125103487,US +1125103488,1125238553,US 1125238554,1125238554,ES 1125238555,1125290241,US 1125290242,1125290242,AE -1125290243,1125350145,US -1125350146,1125350146,US -1125350147,1125454591,US +1125290243,1125454591,US 1125454592,1125454847,A2 1125454848,1125474303,US 1125474304,1125478399,CA 1125478400,1125498879,US 1125498880,1125515263,CA 1125515264,1125531647,US -1125531648,1125543935,CA +1125531648,1125543887,CA +1125543888,1125543903,US +1125543904,1125543935,CA 1125543936,1125545983,US 1125548032,1125552127,CA 1125552128,1125572607,US 1125572608,1125576703,CA 1125576704,1125613567,US 1125613568,1125617663,CA -1125617664,1125623807,US -1125623808,1125624063,US -1125624064,1125626111,US -1125626112,1125626367,US -1125626368,1126924287,US +1125617664,1126924287,US 1126924288,1126928383,CA -1126928384,1126928639,US -1126928640,1126931455,US +1126928384,1126931455,US 1126931456,1126931711,US 1126931712,1126948863,US 1126948864,1126952959,CA 1126952960,1127677951,US 1127677952,1127694335,CA -1127694336,1127707467,US -1127707468,1127707468,US -1127707469,1127923711,US +1127694336,1127923711,US 1127923712,1127931903,CA 1127931904,1128529919,US -1128529920,1128633999,CA -1128634000,1128634015,US -1128634016,1128641023,CA +1128529920,1128641023,CA 1128641024,1128641535,US 1128641536,1128792063,CA -1128792064,1130536959,US -1130536960,1130539007,GU +1128792064,1130537727,US +1130537728,1130537983,GU +1130537984,1130538751,US +1130538752,1130539007,GU 1130539008,1133461247,US 1133461248,1133461503,CA 1133461504,1134444543,US 1134444544,1134448639,CA -1134448640,1134494361,US -1134494362,1134494362,US -1134494363,1134494689,US -1134494690,1134494690,US -1134494691,1134496041,US -1134496042,1134496042,US -1134496043,1134499659,US -1134499660,1134499660,US -1134499661,1134502354,US -1134502355,1134502355,US -1134502356,1134505665,US -1134505666,1134505666,US -1134505667,1134505867,US -1134505868,1134505868,US -1134505869,1134505931,US -1134505932,1134505934,US -1134505935,1134506628,US -1134506629,1134506629,US -1134506630,1134506907,US -1134506908,1134506910,US -1134506911,1134508267,US -1134508268,1134508268,US -1134508269,1134546943,US +1134448640,1134546943,US 1134546944,1134551039,CA -1134551040,1134759726,US -1134759727,1134759727,US -1134759728,1136721919,US +1134551040,1136721919,US 1136721920,1136787455,CA 1136787456,1137272831,US 1137272832,1137273087,CA @@ -10147,17 +9979,25 @@ 1137278976,1137283071,CA 1137283072,1137287167,US 1137287168,1137295359,CA -1137295360,1137369343,US -1137369344,1137369359,CA -1137369360,1137369375,US -1137369376,1137369599,CA -1137369600,1137376351,US +1137295360,1137369727,US +1137369728,1137369759,CA +1137369760,1137376271,US +1137376272,1137376287,CA +1137376288,1137376351,US 1137376352,1137376367,CA 1137376368,1137376415,US 1137376416,1137376447,CA 1137376448,1137376463,US -1137376464,1137376479,CA -1137376480,1137426431,US +1137376464,1137376543,CA +1137376544,1137376575,US +1137376576,1137376591,CA +1137376592,1137376623,US +1137376624,1137376671,CA +1137376672,1137376719,US +1137376720,1137376743,CA +1137376744,1137376751,US +1137376752,1137376767,CA +1137376768,1137426431,US 1137426432,1137442815,PR 1137442816,1137459199,CA 1137459200,1137491967,US @@ -10167,11 +10007,9 @@ 1137541120,1137623039,US 1137623040,1137639423,PR 1137639424,1137704959,US -1137704960,1137706239,CA -1137706240,1137706311,US -1137706312,1137706319,CA -1137706320,1137706495,US -1137706496,1137713151,CA +1137704960,1137706401,CA +1137706402,1137706402,US +1137706403,1137713151,CA 1137713152,1137795071,US 1137795072,1137799167,A2 1137799168,1137868799,US @@ -10190,11 +10028,7 @@ 1137963008,1137967103,VI 1137967104,1137975295,CA 1137975296,1137983487,US -1137983488,1137984329,CA -1137984330,1137984330,CA -1137984331,1137988095,CA -1137988096,1137988607,CA -1137988608,1137991679,CA +1137983488,1137991679,CA 1137991680,1138049023,US 1138049024,1138061311,CA 1138061312,1138069503,US @@ -10212,14 +10046,16 @@ 1138204672,1138212863,US 1138212864,1138216959,CA 1138216960,1138372607,US -1138372608,1138373631,AS -1138373632,1138373887,US -1138373888,1138374399,AS -1138374400,1138374655,US -1138374656,1138376703,AS -1138376704,1138499583,US +1138372608,1138373119,AS +1138373120,1138373887,US +1138373888,1138374655,AS +1138374656,1138374911,US +1138374912,1138375679,AS +1138375680,1138499583,US 1138499584,1138503679,CA -1138503680,1138509823,US +1138503680,1138508575,US +1138508576,1138508591,IT +1138508592,1138509823,US 1138509824,1138510847,IN 1138510848,1138593791,US 1138593792,1138597887,CA @@ -10229,9 +10065,7 @@ 1138720768,1138728959,CA 1138728960,1138774015,US 1138774016,1138778111,CA -1138778112,1138780159,US -1138780160,1138780415,CA -1138780416,1138786303,US +1138778112,1138786303,US 1138786304,1138819071,PR 1138819072,1138851839,CA 1138851840,1138917375,US @@ -10241,12 +10075,14 @@ 1138950144,1139146751,US 1139146752,1139154943,GT 1139154944,1139167231,JM -1139167232,1139168255,US -1139168256,1139168767,PR -1139168768,1139169279,US -1139169280,1139170303,PR -1139170304,1139171071,US -1139171072,1139171327,PR +1139167232,1139168511,US +1139168512,1139168767,PR +1139168768,1139169023,US +1139169024,1139169791,PR +1139169792,1139170047,US +1139170048,1139170303,PR +1139170304,1139170815,US +1139170816,1139171327,PR 1139171328,1139175423,GT 1139175424,1139175679,US 1139175680,1139175935,PR @@ -10256,9 +10092,7 @@ 1139216384,1139220479,CA 1139220480,1139265535,US 1139265536,1139269631,CA -1139269632,1139274495,US -1139274496,1139274751,US -1139274752,1145188351,US +1139269632,1145188351,US 1145188352,1145192447,CA 1145192448,1145242111,US 1145242112,1145242367,NO @@ -10271,11 +10105,15 @@ 1145249792,1145257983,CA 1145257984,1145259247,US 1145259248,1145259251,AE -1145259252,1145307135,US +1145259252,1145286655,US +1145286656,1145287167,SG +1145287168,1145287679,US +1145287680,1145287935,SG +1145287936,1145288191,US +1145288192,1145288447,SG +1145288448,1145307135,US 1145307136,1145311231,CA -1145311232,1145333879,US -1145333880,1145333887,CN -1145333888,1145376767,US +1145311232,1145376767,US 1145376768,1145380863,CA 1145380864,1145405439,US 1145405440,1145413631,CA @@ -10287,9 +10125,9 @@ 1145503744,1145520127,CA 1145520128,1145552895,US 1145552896,1145556991,CA -1145556992,1150046207,US -1150046208,1150050303,JP -1150050304,1150287871,US +1145556992,1150043135,US +1150043136,1150044159,VA +1150044160,1150287871,US 1150287872,1150812159,CA 1150812160,1151889407,US 1151889408,1151897599,CA @@ -10323,13 +10161,13 @@ 1152116480,1152116735,CA 1152116736,1152116991,US 1152116992,1152117247,CA -1152117248,1152581631,US +1152117248,1152117759,US +1152117760,1152118015,ID +1152118016,1152581631,US 1152581632,1152614399,CA 1152614400,1152778239,US 1152778240,1152843775,CA -1152843776,1154488319,US -1154488320,1154488831,A2 -1154488832,1156071423,US +1152843776,1156071423,US 1156071424,1156079615,CA 1156079616,1156263935,US 1156263936,1156265983,CA @@ -10355,98 +10193,7 @@ 1158340608,1158344703,CA 1158344704,1158348799,US 1158348800,1158381567,CA -1158381568,1158481417,US -1158481418,1158481426,CA -1158481427,1158481427,US -1158481428,1158481436,CA -1158481437,1158481597,US -1158481598,1158481606,CA -1158481607,1158481737,US -1158481738,1158481745,CA -1158481746,1158488529,US -1158488530,1158488542,IL -1158488543,1158488833,US -1158488834,1158488846,IL -1158488847,1158493441,US -1158493442,1158493566,CA -1158493567,1158496497,US -1158496498,1158496506,TC -1158496507,1158496530,US -1158496531,1158496539,WS -1158496540,1158496779,US -1158496780,1158496788,FJ -1158496789,1158496797,BE -1158496798,1158496806,US -1158496807,1158496815,PE -1158496816,1158497616,US -1158497617,1158497625,CH -1158497626,1158497652,US -1158497653,1158497661,CA -1158497662,1158497670,GE -1158497671,1158497770,US -1158497771,1158497779,CA -1158497780,1158497825,US -1158497826,1158497834,GE -1158497835,1158497865,WS -1158497866,1158498032,US -1158498033,1158498041,HK -1158498042,1158498282,US -1158498283,1158498291,MX -1158498292,1158498457,US -1158498458,1158498466,GR -1158498467,1158498778,US -1158498779,1158498787,IT -1158498788,1158499171,US -1158499172,1158499179,VI -1158499180,1158499315,US -1158499316,1158499326,CA -1158499327,1158499382,US -1158499383,1158499391,AS -1158499392,1158499400,NL -1158499401,1158499409,FR -1158499410,1158499584,US -1158499585,1158499838,CA -1158499839,1158501120,US -1158501121,1158501374,PR -1158501375,1158504775,US -1158504776,1158504784,CA -1158504785,1158504836,US -1158504837,1158504845,JM -1158504846,1158504863,US -1158504864,1158504872,GR -1158504873,1158504941,US -1158504942,1158504950,CA -1158504951,1158504951,US -1158504952,1158504959,KE -1158504960,1158505653,US -1158505654,1158505727,AU -1158505728,1158506793,US -1158506794,1158506809,IN -1158506810,1158525184,US -1158525185,1158525320,BE -1158525321,1158525741,US -1158525742,1158525750,BZ -1158525751,1158525776,US -1158525777,1158525785,FR -1158525786,1158525821,US -1158525822,1158525830,IT -1158525831,1158526297,US -1158526298,1158526306,IT -1158526307,1158526335,US -1158526336,1158526344,FR -1158526345,1158526346,US -1158526347,1158526355,PE -1158526356,1158526357,US -1158526358,1158526366,CA -1158526367,1158526368,US -1158526369,1158526377,CH -1158526378,1158526930,US -1158526931,1158526963,AS -1158526964,1158538864,US -1158538865,1158538872,WS -1158538873,1158714111,US -1158714112,1158714367,US -1158714368,1158724607,US +1158381568,1158724607,US 1158724608,1158724863,NL 1158724864,1158774783,US 1158774784,1158791167,CA @@ -10474,58 +10221,53 @@ 1159249920,1159254015,PR 1159254016,1159343615,US 1159343616,1159343871,GB -1159343872,1159348223,US +1159343872,1159347199,US +1159347200,1159347455,AU +1159347456,1159348223,US 1159348224,1159356415,CA 1159356416,1159421951,US 1159421952,1159430143,CA -1159430144,1159517695,US -1159517696,1159517951,CA -1159517952,1159518191,US +1159430144,1159515135,US +1159515136,1159515391,CA +1159515392,1159518015,US +1159518016,1159518047,CA +1159518048,1159518191,US 1159518192,1159518199,CA -1159518200,1159520255,US -1159520256,1159520767,CA -1159520768,1159525375,US +1159518200,1159525375,US 1159525376,1159525759,CA -1159525760,1159672319,US +1159525760,1159560207,US +1159560208,1159560215,MO +1159560216,1159672319,US 1159672320,1159672831,US -1159672832,1159676927,US -1159676928,1159677183,US -1159677184,1159700479,US +1159672832,1159700479,US 1159700480,1159725055,CA 1159725056,1160011775,US 1160011776,1160019967,CA -1160019968,1160357942,US -1160357943,1160357943,US -1160357944,1160364031,US +1160019968,1160364031,US 1160364032,1160368127,CA 1160368128,1160392703,US 1160392704,1160396799,CA -1160396800,1160409599,US -1160409600,1160410111,CO -1160410112,1160410287,US -1160410288,1160410303,DO -1160410304,1160425471,US +1160396800,1160410511,US +1160410512,1160410519,EC +1160410520,1160410551,US +1160410552,1160410559,EC +1160410560,1160425471,US 1160425472,1160429567,CA 1160429568,1160503295,US 1160503296,1160504063,A2 1160504064,1160504319,US 1160504320,1160507391,A2 -1160507392,1160563199,US -1160563200,1160563455,GU -1160563456,1160563711,MP -1160563712,1160609791,US +1160507392,1160609791,US 1160609792,1160610815,MX -1160610816,1160660417,US -1160660418,1160660418,US -1160660419,1160667135,US +1160610816,1160667135,US 1160667136,1160675327,CA 1160675328,1160683519,US 1160683520,1160691711,CA 1160691712,1160847359,US -1160847360,1160855551,CA -1160855552,1160905215,US -1160905216,1160905471,US -1160905472,1160921087,US +1160847360,1160854527,CA +1160854528,1160854655,US +1160854656,1160855551,CA +1160855552,1160921087,US 1160921088,1160925183,AG 1160925184,1160945663,US 1160945664,1160953855,CA @@ -10539,26 +10281,11 @@ 1161363456,1161367551,CA 1161367552,1161416703,US 1161416704,1161420799,CA -1161420800,1161421311,AG -1161421312,1161421567,AI -1161421568,1161422335,AG -1161422336,1161422591,LC -1161422592,1161422847,AG -1161422848,1161423103,LC -1161423104,1161423359,VG -1161423360,1161423615,AI -1161423616,1161424127,AG -1161424128,1161424383,AI -1161424384,1161424639,KN -1161424640,1161424895,LC -1161424896,1161425151,VG +1161420800,1161425151,AG 1161425152,1161425407,DM -1161425408,1161426943,AG -1161426944,1161427199,AI -1161427200,1161428223,AG -1161428224,1161428479,KN -1161428480,1161428735,AG -1161428736,1161428991,KN +1161425408,1161428543,AG +1161428544,1161428607,KN +1161428608,1161428991,AG 1161428992,1161431039,CA 1161431040,1161433087,A2 1161433088,1161437183,CA @@ -10566,13 +10293,13 @@ 1161453568,1161457663,CA 1161457664,1161576447,US 1161576448,1161580543,CA -1161580544,1161586559,US -1161586560,1161586623,US -1161586624,1161586687,US +1161580544,1161586687,US 1161586688,1161586943,PA 1161586944,1161617407,US 1161617408,1161625599,CA -1161625600,1161627819,US +1161625600,1161627703,US +1161627704,1161627711,DE +1161627712,1161627819,US 1161627820,1161627823,CA 1161627824,1161634079,US 1161634080,1161634087,AF @@ -10587,7 +10314,9 @@ 1161831385,1161831385,UA 1161831386,1161832483,US 1161832484,1161832484,UA -1161832485,1161886719,US +1161832485,1161835230,US +1161835231,1161835231,PH +1161835232,1161886719,US 1161886720,1161887231,DE 1161887232,1161900863,US 1161900864,1161900895,US @@ -10599,9 +10328,7 @@ 1162032288,1162032303,BE 1162032304,1162059775,US 1162059776,1162067967,CA -1162067968,1162204970,US -1162204971,1162204972,US -1162204973,1162215423,US +1162067968,1162215423,US 1162215424,1162280959,CA 1162280960,1162297343,US 1162297344,1162305535,CA @@ -10609,24 +10336,56 @@ 1162313728,1162320127,A2 1162320128,1162320383,US 1162320384,1162321919,A2 -1162321920,1162408617,US -1162408618,1162408618,US -1162408619,1162409727,US -1162409728,1162409983,US -1162409984,1162461183,US +1162321920,1162461183,US 1162461184,1162461695,BB 1162461696,1162462207,GD -1162462208,1162462975,BB -1162462976,1162463999,VC -1162464000,1162465279,BB +1162462208,1162463008,BB +1162463009,1162463009,VC +1162463010,1162463011,BB +1162463012,1162463012,VC +1162463013,1162463018,BB +1162463019,1162463019,VC +1162463020,1162463052,BB +1162463053,1162463053,VC +1162463054,1162463057,BB +1162463058,1162463058,VC +1162463059,1162463061,BB +1162463062,1162463062,VC +1162463063,1162463087,BB +1162463088,1162463088,VC +1162463089,1162463117,BB +1162463118,1162463119,VC +1162463120,1162463123,BB +1162463124,1162463124,VC +1162463125,1162463131,BB +1162463132,1162463132,VC +1162463133,1162463135,BB +1162463136,1162463136,VC +1162463137,1162463143,BB +1162463144,1162463144,VC +1162463145,1162463153,BB +1162463154,1162463154,VC +1162463155,1162463155,BB +1162463156,1162463156,VC +1162463157,1162463161,BB +1162463162,1162463163,VC +1162463164,1162463170,BB +1162463171,1162463171,VC +1162463172,1162463179,BB +1162463180,1162463181,VC +1162463182,1162463183,BB +1162463184,1162463184,VC +1162463185,1162463187,BB +1162463188,1162463188,VC +1162463189,1162463216,BB +1162463217,1162463217,VC +1162463218,1162465279,BB 1162465280,1162465535,GD 1162465536,1162470911,BB -1162470912,1162471167,GD -1162471168,1162472703,BB -1162472704,1162472959,VC -1162472960,1162473471,BB -1162473472,1162474495,GD -1162474496,1162477567,BB +1162470912,1162471423,GD +1162471424,1162473727,BB +1162473728,1162474751,GD +1162474752,1162477567,BB 1162477568,1162715135,US 1162715136,1162723327,CA 1162723328,1162807295,US @@ -10641,26 +10400,18 @@ 1162831872,1162833919,PR 1162833920,1162835967,GT 1162835968,1162836223,BS -1162836224,1162836735,CW -1162836736,1162836991,US +1162836224,1162836991,US 1162836992,1162838015,BS -1162838016,1162840063,PR -1162840064,1162853375,US -1162853376,1162854399,PR +1162838016,1162854399,US 1162854400,1162858495,JM 1162858496,1162862591,HN -1162862592,1162870783,US -1162870784,1162871295,BB -1162871296,1162875391,LC -1162875392,1162875903,BB -1162875904,1162876927,LC -1162876928,1162877183,BB -1162877184,1162877951,LC -1162877952,1162879999,BB -1162880000,1162882559,DM -1162882560,1162885375,BB -1162885376,1162885631,VC -1162885632,1162887167,BB +1162862592,1162862847,PR +1162862848,1162870783,US +1162870784,1162881023,BB +1162881024,1162881279,DM +1162881280,1162882559,BB +1162882560,1162883583,GD +1162883584,1162887167,BB 1162887168,1163395071,US 1163395072,1163400959,A2 1163400960,1163401215,BD @@ -10671,88 +10422,104 @@ 1163407360,1163411455,CA 1163411456,1163468799,US 1163468800,1163472895,PR -1163472896,1163526399,US -1163526400,1163526911,CA -1163526912,1163531263,US +1163472896,1163530655,US +1163530656,1163530663,CA +1163530664,1163530991,US +1163530992,1163531007,CA +1163531008,1163531263,US 1163531264,1163532287,CA 1163532288,1163533807,US 1163533808,1163533823,CA -1163533824,1163538431,US -1163538432,1163539455,CA +1163533824,1163534255,US +1163534256,1163534271,CA +1163534272,1163538175,US +1163538176,1163539455,CA 1163539456,1163540351,US 1163540352,1163540479,CA 1163540480,1163542015,US 1163542016,1163542527,CA -1163542528,1163545343,US -1163545344,1163545471,CA -1163545472,1163545591,US -1163545592,1163545599,CA -1163545600,1163546879,US -1163546880,1163547135,CA -1163547136,1163548671,US +1163542528,1163546015,US +1163546016,1163546031,CA +1163546032,1163548671,US 1163548672,1163548927,CA -1163548928,1163549183,US -1163549184,1163549695,CA -1163549696,1163550815,US +1163548928,1163550815,US 1163550816,1163550831,CA 1163550832,1163550847,US 1163550848,1163550975,CA -1163550976,1163554047,US +1163550976,1163551295,US +1163551296,1163551311,CA +1163551312,1163551455,US +1163551456,1163551487,CA +1163551488,1163551631,US +1163551632,1163551647,CA +1163551648,1163552519,US +1163552520,1163552527,CA +1163552528,1163552543,US +1163552544,1163552559,CA +1163552560,1163552607,US +1163552608,1163552623,CA +1163552624,1163554047,US 1163554048,1163554303,CA -1163554304,1163556095,US +1163554304,1163554815,US +1163554816,1163555839,CA +1163555840,1163556095,US 1163556096,1163556351,CA 1163556352,1163562239,US 1163562240,1163562495,CA 1163562496,1163564031,US 1163564032,1163564543,CA 1163564544,1163564799,US -1163564800,1163565055,CA -1163565056,1163567103,US +1163564800,1163565311,CA +1163565312,1163567103,US 1163567104,1163568127,CA 1163568128,1163571199,US -1163571200,1163571967,CA -1163571968,1163572223,US -1163572224,1163572479,CA -1163572480,1163572991,US -1163572992,1163573247,CA -1163573248,1163573439,US -1163573440,1163573503,IN -1163573504,1163575039,US +1163571200,1163571711,CA +1163571712,1163575039,US 1163575040,1163575295,IN -1163575296,1163578623,US -1163578624,1163578879,CA -1163578880,1163582975,US +1163575296,1163576063,US +1163576064,1163576319,CA +1163576320,1163582031,US +1163582032,1163582039,CA +1163582040,1163582079,US +1163582080,1163582111,CA +1163582112,1163582975,US 1163582976,1163583487,CA 1163583488,1163588351,US 1163588352,1163588607,CA -1163588608,1163589119,US -1163589120,1163589631,CA -1163589632,1167851519,US +1163588608,1167851519,US 1167851520,1168113663,CA 1168113664,1168138239,US 1168138240,1168146431,JM -1168146432,1168178687,US -1168178688,1168178943,US -1168178944,1168211967,US +1168146432,1168211967,US 1168211968,1168220159,CA -1168220160,1168393471,US -1168393472,1168393479,CA -1168393480,1168394239,US +1168220160,1168393503,US +1168393504,1168393519,CA +1168393520,1168393543,US +1168393544,1168393567,CA +1168393568,1168393663,US +1168393664,1168393791,CA +1168393792,1168393935,US +1168393936,1168393943,CA +1168393944,1168393951,US +1168393952,1168393983,CA +1168393984,1168394143,US +1168394144,1168394151,CA +1168394152,1168394239,US 1168394240,1168394495,CA -1168394496,1168420863,US +1168394496,1168394687,US +1168394688,1168394751,CA +1168394752,1168420863,US 1168420864,1168424959,CA -1168424960,1168454655,US -1168454656,1168455167,US -1168455168,1168474111,US +1168424960,1168461823,US +1168461824,1168465919,CA +1168465920,1168474111,US 1168474112,1168506879,CA 1168508928,1168510975,US 1168510976,1168515071,CA 1168515072,1168535551,US 1168535552,1168539647,CA 1168539648,1168670719,US -1168670720,1168674815,CA -1168674816,1168675071,US -1168675072,1168687103,CA +1168670720,1168687103,CA 1168687104,1168859135,US 1168859136,1168863231,CA 1168863232,1168867327,US @@ -10763,35 +10530,31 @@ 1168916480,1168932863,CA 1168932864,1168936959,US 1168936960,1168949247,CA -1168949248,1168950271,US -1168950272,1168951295,CA +1168949248,1168950783,US +1168950784,1168951295,CA 1168951296,1168952575,US 1168952576,1168952831,CA -1168952832,1168955903,US +1168952832,1168952887,US +1168952888,1168952895,CA +1168952896,1168955903,US 1168955904,1168956159,CA 1168956160,1168957183,US 1168957184,1168957311,IN -1168957312,1168957951,US -1168957952,1168958207,CA -1168958208,1168958527,US +1168957312,1168958271,US +1168958272,1168958303,CA +1168958304,1168958527,US 1168958528,1168958559,IN -1168958560,1168961023,US -1168961024,1168961535,CA -1168961536,1168961887,US +1168958560,1168961887,US 1168961888,1168961919,CA 1168961920,1168963583,US -1168963584,1168965119,CA -1168965120,1168973823,US +1168963584,1168964607,CA +1168964608,1168973823,US 1168973824,1168982015,CA 1168982016,1169203199,US 1169203200,1169211391,CA 1169211392,1170190335,US 1170190336,1170190847,GB -1170190848,1170375167,US -1170375168,1170375679,US -1170375680,1170467839,US -1170467840,1170468351,DO -1170468352,1170472959,US +1170190848,1170472959,US 1170472960,1170481151,CA 1170481152,1170489343,US 1170489344,1170497535,CA @@ -10801,13 +10564,15 @@ 1175977984,1176502271,CA 1176502272,1176616959,US 1176616960,1176620031,CA -1176620032,1176622591,US +1176620032,1176620447,US +1176620448,1176620479,CA +1176620480,1176621567,US +1176621568,1176621575,CA +1176621576,1176622591,US 1176622592,1176623103,CA 1176623104,1176626119,US 1176626120,1176626135,CA -1176626136,1176630271,US -1176630272,1176630783,CA -1176630784,1176631039,US +1176626136,1176631039,US 1176631040,1176631295,CA 1176631296,1176702975,US 1176702976,1176707071,CA @@ -10822,13 +10587,19 @@ 1176768512,1176776703,US 1176776704,1176780799,CA 1176780800,1176895487,US -1176895488,1176904767,CA +1176895488,1176897047,CA +1176897048,1176897055,US +1176897056,1176900735,CA +1176900736,1176900743,US +1176900744,1176904767,CA 1176904768,1176904775,US 1176904776,1176904871,CA 1176904872,1176904879,US -1176904880,1176908223,CA -1176908224,1176908231,MX -1176908232,1176928255,CA +1176904880,1176917831,CA +1176917832,1176917839,AU +1176917840,1176925007,CA +1176925008,1176925015,NG +1176925016,1176928255,CA 1176928256,1177008127,US 1177008128,1177010175,A2 1177010176,1177030655,US @@ -10836,8 +10607,8 @@ 1177033728,1177059327,US 1177059328,1177061375,CA 1177061376,1177062143,US -1177062144,1177075711,CA -1177075712,1177164863,US +1177062144,1177075455,CA +1177075456,1177164863,US 1177164864,1177164895,CA 1177164896,1177165055,US 1177165056,1177165311,CA @@ -10849,15 +10620,9 @@ 1177550848,1178075135,CA 1178075136,1178599423,US 1178599424,1179910143,CA -1179910144,1179924649,US -1179924650,1179924650,US -1179924651,1179924659,US -1179924660,1179924660,US -1179924661,1180124865,US +1179910144,1180124865,US 1180124866,1180124866,AE -1180124867,1184830769,US -1184830770,1184830770,US -1184830771,1189672191,US +1180124867,1189672191,US 1189672192,1189672249,US 1189672250,1189672251,A2 1189672252,1189672447,US @@ -10871,21 +10636,13 @@ 1192468480,1192476671,CA 1192476672,1192488959,US 1192488960,1192493055,CA -1192493056,1193940223,US -1193940224,1193940479,US -1193940480,1207975935,US +1192493056,1207975935,US 1207975936,1207980031,CA 1207980032,1208008703,US 1208008704,1208016895,CA 1208016896,1208020991,US 1208020992,1208025087,CA -1208025088,1208044799,US -1208044800,1208044831,CA -1208044832,1208044951,US -1208044952,1208044959,CA -1208044960,1208045007,US -1208045008,1208045055,CA -1208045056,1208074239,US +1208025088,1208074239,US 1208074240,1208082431,CA 1208082432,1208090623,US 1208090624,1208107007,CA @@ -10928,28 +10685,20 @@ 1208936240,1208936247,JP 1208936248,1208936255,IN 1208936256,1208936263,MY -1208936264,1208936447,IN -1208936448,1208954879,US +1208936264,1208954879,US 1208954880,1208957695,CA -1208957696,1208957823,US -1208957824,1208957855,CA -1208957856,1208957951,US +1208957696,1208957951,US 1208957952,1208958975,CA 1208958976,1208975359,US 1208975360,1208983551,CA 1208983552,1209003007,US -1209003008,1209003519,A2 -1209003520,1209271097,US -1209271098,1209271098,US -1209271099,1209338513,US -1209338514,1209338514,US -1209338515,1209358591,US +1209003008,1209004031,A2 +1209004032,1209358591,US 1209358592,1209358847,DE -1209358848,1209434111,US -1209434112,1209436671,BB -1209436672,1209437183,VC -1209437184,1209441023,BB -1209441024,1209441279,GD +1209358848,1209359103,GB +1209359104,1209434111,US +1209434112,1209440767,BB +1209440768,1209441279,GD 1209441280,1209442303,BB 1209442304,1209647103,US 1209647104,1209663487,CA @@ -10972,67 +10721,74 @@ 1210449920,1210580991,CA 1210580992,1210925055,US 1210925056,1210941439,CA -1210941440,1211032223,US -1211032224,1211032255,VE -1211032256,1211033087,US -1211033088,1211033599,CO -1211033600,1211236351,US +1210941440,1211035711,US +1211035712,1211035775,CA +1211035776,1211038007,US +1211038008,1211038011,TT +1211038012,1211038063,US +1211038064,1211038079,TT +1211038080,1211236351,US 1211236352,1211269119,PR 1211269120,1211303679,US 1211303680,1211303935,CA -1211303936,1211304447,US +1211303936,1211304223,US +1211304224,1211304239,CA +1211304240,1211304447,US 1211304448,1211304703,CA -1211304704,1211308287,US +1211304704,1211306783,US +1211306784,1211306879,CA +1211306880,1211308031,US +1211308032,1211308159,CA +1211308160,1211308167,US +1211308168,1211308175,CA +1211308176,1211308287,US 1211308288,1211308543,CA 1211308544,1211316479,US 1211316480,1211316735,CA 1211316736,1211318271,US 1211318272,1211321343,BB -1211321344,1211322367,VC -1211322368,1211323135,BB -1211323136,1211323391,GD -1211323392,1211323647,BB -1211323648,1211323903,GD -1211323904,1211324159,BB -1211324160,1211324927,VC -1211324928,1211333375,BB -1211333376,1211333631,VC +1211321344,1211322111,VC +1211322112,1211322623,BB +1211322624,1211322879,GD +1211322880,1211323135,BB +1211323136,1211324159,GD +1211324160,1211333631,BB 1211333632,1211333887,GD -1211333888,1211334655,VG -1211334656,1211432959,US +1211333888,1211334655,BB +1211334656,1211384327,US +1211384328,1211384335,US +1211384336,1211388159,US +1211388160,1211388287,US +1211388288,1211432959,US 1211432960,1211473919,CA 1211473920,1211596799,US -1211596800,1211613183,CA -1211613184,1212191304,US -1212191305,1212191305,US -1212191306,1212191367,US -1212191368,1212191368,US -1212191369,1216872447,US +1211596800,1211605999,CA +1211606000,1211606003,US +1211606004,1211613183,CA +1211613184,1216872447,US 1216872448,1217396735,CA -1217396736,1218682879,US -1218682880,1218699263,IN -1218699264,1218706431,US -1218706432,1218706687,CN -1218706688,1218987263,US +1217396736,1218697215,US +1218697216,1218697727,IN +1218697728,1218987263,US 1218987264,1218987519,CA 1218987520,1219256319,US 1219256320,1219264511,CA 1219264512,1219272703,US 1219272704,1219276799,CA -1219276800,1220701665,US -1220701666,1220701666,US -1220701667,1224296447,US -1224296448,1224296959,CA -1224296960,1224311807,US -1224311808,1224312319,CA -1224312320,1224470527,US +1219276800,1224470527,US 1224470528,1224471567,NL 1224471568,1224471568,RU 1224471569,1224473599,NL 1224473600,1224474623,US 1224474624,1224475647,GT -1224475648,1224477695,US -1224477696,1224478719,CW +1224475648,1224476671,US +1224476672,1224476927,CW +1224476928,1224477183,US +1224477184,1224477439,CW +1224477440,1224477695,US +1224477696,1224478207,CW +1224478208,1224478463,US +1224478464,1224478719,CW 1224478720,1224480767,US 1224480768,1224484863,JM 1224484864,1224493055,GT @@ -11061,21 +10817,7 @@ 1245052290,1245052545,SA 1245052546,1245183999,US 1245184000,1245446143,CA -1245446144,1245662179,US -1245662180,1245662182,US -1245662183,1245663891,US -1245663892,1245663892,US -1245663893,1245663899,US -1245663900,1245663900,US -1245663901,1245664931,US -1245664932,1245664932,US -1245664933,1245664939,US -1245664940,1245664940,US -1245664941,1245665737,US -1245665738,1245665739,US -1245665740,1245665745,US -1245665746,1245665747,US -1245665748,1246890432,US +1245446144,1246890432,US 1246890433,1246890463,CA 1246890464,1246890464,CA 1246890465,1246890496,CA @@ -11085,9 +10827,7 @@ 1247027200,1247034367,A2 1247034368,1247034623,US 1247034624,1247035391,A2 -1247035392,1247073791,US -1247073792,1247074303,A2 -1247074304,1247123455,US +1247035392,1247123455,US 1247123456,1247123711,GB 1247123712,1247123967,US 1247123968,1247124223,LU @@ -11135,9 +10875,7 @@ 1249051904,1249052671,US 1249052672,1249059327,US 1249059328,1249059839,CA -1249059840,1249082367,US -1249082368,1249083391,CA -1249083392,1249091583,US +1249059840,1249091583,US 1249091584,1249092607,US 1249092608,1249099775,US 1249099776,1249101823,CA @@ -11151,11 +10889,11 @@ 1249130496,1249131519,JM 1249131520,1249139711,US 1249139712,1249140735,MF -1249140736,1249163263,US +1249140736,1249160503,US +1249160504,1249160511,AU +1249160512,1249163263,US 1249163264,1249165311,CA -1249165312,1249165823,US -1249165824,1249166335,CA -1249166336,1249171455,US +1249165312,1249171455,US 1249171456,1249173503,CA 1249173504,1249191935,US 1249191936,1249193983,CA @@ -11187,9 +10925,7 @@ 1249335296,1249337343,CA 1249337344,1249359871,US 1249359872,1249361919,CA -1249361920,1249381763,US -1249381764,1249381764,US -1249381765,1249384447,US +1249361920,1249384447,US 1249384448,1249386495,PR 1249386496,1249391615,US 1249391616,1249392639,CA @@ -11235,14 +10971,16 @@ 1249715968,1249716735,US 1249716736,1249716991,DE 1249716992,1249720319,US -1249720320,1249720371,AU -1249720372,1249720372,SG -1249720373,1249720575,AU +1249720320,1249720575,AU 1249720576,1249720599,GB 1249720600,1249720607,IT 1249720608,1249720623,CH -1249720624,1249720831,GB -1249720832,1249721343,US +1249720624,1249720703,GB +1249720704,1249720751,NL +1249720752,1249720831,GB +1249720832,1249721120,US +1249721121,1249721121,CA +1249721122,1249721343,US 1249721344,1249721351,AT 1249721352,1249721359,BE 1249721360,1249721367,CH @@ -11264,7 +11002,7 @@ 1249721512,1249721519,TR 1249721520,1249721527,ZA 1249721528,1249721535,DK -1249721536,1249721599,GB +1249721536,1249721599,US 1249721600,1249721607,AT 1249721608,1249721615,BE 1249721616,1249721623,CH @@ -11314,15 +11052,15 @@ 1254490112,1254555647,CA 1254555648,1254621183,US 1254621184,1254629375,CA -1254629376,1254989823,US +1254629376,1254978751,US +1254978752,1254978767,LB +1254978768,1254989823,US 1254989824,1254998015,CA 1254998016,1255002111,US 1255002112,1255006207,CA 1255006208,1255047167,US 1255047168,1255055359,CA -1255055360,1255210495,US -1255210496,1255211007,DE -1255211008,1255245311,US +1255055360,1255245311,US 1255245312,1255245567,BR 1255245568,1255276543,US 1255276544,1255342079,CA @@ -11334,9 +11072,7 @@ 1255571456,1255579647,CA 1255579648,1255669759,US 1255669760,1255735295,CA -1255735296,1255768063,US -1255768064,1255768575,CA -1255768576,1255907071,US +1255735296,1255907071,US 1255907072,1255907327,PR 1255907328,1255972863,US 1255972864,1255981055,CA @@ -11348,17 +11084,13 @@ 1256054528,1256054783,CZ 1256054784,1256079359,US 1256079360,1256087551,KY -1256087552,1258767359,US -1258767360,1258767615,US -1258767616,1264718591,US +1256087552,1264718591,US 1264718592,1264718847,CA 1264718848,1264719103,US 1264719104,1264719871,CA 1264719872,1264762879,US 1264762880,1264766975,CA -1264766976,1264968406,US -1264968407,1264968407,US -1264968408,1264990975,US +1264766976,1264990975,US 1264990976,1264991231,NL 1264991232,1266147327,US 1266147328,1266155519,CA @@ -11378,9 +11110,9 @@ 1275756544,1275772927,CA 1275772928,1275789311,US 1275789312,1275822079,CA -1275822080,1276821225,US -1276821226,1276821226,US -1276821227,1279262719,US +1275822080,1275912759,US +1275912760,1275912783,CA +1275912784,1279262719,US 1279262720,1279787007,CA 1279787008,1279848447,US 1279848448,1279852543,PR @@ -11404,18 +11136,16 @@ 1279970048,1279970303,CA 1279970304,1279970943,US 1279970944,1279971071,CA -1279971072,1279971839,US -1279971840,1279972095,CA -1279972096,1279973983,US +1279971072,1279973983,US 1279973984,1279974015,IN 1279974016,1279976191,US 1279976192,1279976959,CA -1279976960,1279978623,US -1279978624,1279978687,AE -1279978688,1279979775,US +1279976960,1279977215,US +1279977216,1279977471,CA +1279977472,1279979775,US 1279979776,1279980031,CA -1279980032,1279981055,US -1279981056,1279981567,CA +1279980032,1279980799,US +1279980800,1279981567,CA 1279981568,1279999999,US 1280000000,1280032767,CA 1280032768,1280040959,US @@ -11428,20 +11158,11 @@ 1280092160,1280093183,KN 1280093184,1280094207,VG 1280094208,1280095231,AI -1280095232,1280095487,KN -1280095488,1280097279,AG -1280097280,1280097791,LC -1280097792,1280098303,AG +1280095232,1280098303,AG 1280098304,1280102399,PR 1280102400,1280131071,US 1280131072,1280139263,CA -1280139264,1286382079,US -1286382080,1286385407,US -1286385408,1286389759,US -1286389760,1286406143,US -1286406144,1287611402,US -1287611403,1287611403,US -1287611404,1291845631,US +1280139264,1291845631,US 1291845632,1292894207,DE 1292894208,1293156351,NO 1293156352,1293549567,DE @@ -11473,17 +11194,13 @@ 1294893056,1294925823,RS 1294925824,1294958591,DE 1294958592,1294991359,UA -1294991360,1295009023,CZ -1295009024,1295009407,SK -1295009408,1295047679,CZ -1295047680,1295048191,SK -1295048192,1295056895,CZ +1294991360,1295047679,CZ +1295047680,1295047935,SK +1295047936,1295056895,CZ 1295056896,1295122431,GR 1295122432,1295253503,RU 1295253504,1295319039,UA -1295319040,1295349119,SE -1295349120,1295349247,NO -1295349248,1295384575,SE +1295319040,1295384575,SE 1295384576,1295450111,PT 1295450112,1295515647,PL 1295515648,1295777791,CH @@ -11497,15 +11214,12 @@ 1296236672,1296236799,US 1296236800,1296237439,FR 1296237440,1296237567,IT -1296237568,1296238079,FR -1296238080,1296238591,DE +1296237568,1296238591,FR 1296238592,1296239103,NL 1296239104,1296239231,FR 1296239232,1296239359,NL 1296239360,1296239615,DE -1296239616,1296240639,FR -1296240640,1296241151,BE -1296241152,1296241407,FR +1296239616,1296241407,FR 1296241408,1296242175,NL 1296242176,1296242303,FR 1296242304,1296242431,NL @@ -11527,12 +11241,9 @@ 1296251776,1296251903,DE 1296251904,1296252871,FR 1296252872,1296252879,DE -1296252880,1296256511,FR -1296256512,1296256840,DE +1296252880,1296256840,FR 1296256841,1296256848,US -1296256849,1296257023,DE -1296257024,1296257535,US -1296257536,1296258303,FR +1296256849,1296258303,FR 1296258304,1296259071,NL 1296259072,1296259839,FR 1296259840,1296260351,NL @@ -11540,13 +11251,15 @@ 1296261120,1296262143,DE 1296262144,1296262399,FR 1296262400,1296262655,US -1296262656,1296263943,FR +1296262656,1296263679,FR +1296263680,1296263935,US +1296263936,1296263943,FR 1296263944,1296263959,US -1296263960,1296266239,FR +1296263960,1296264287,FR +1296264288,1296264303,US +1296264304,1296266239,FR 1296266240,1296266751,US -1296266752,1296268287,FR -1296268288,1296268799,US -1296268800,1296269055,FR +1296266752,1296269055,FR 1296269056,1296269311,US 1296269312,1296302079,BY 1296302080,1296334847,GB @@ -11556,12 +11269,14 @@ 1296433152,1296465919,BG 1296465920,1296470015,LT 1296470016,1296473087,NO -1296473088,1296474623,LT -1296474624,1296476159,US +1296473088,1296475135,LT +1296475136,1296476159,US 1296476160,1296479743,LT 1296479744,1296482303,NO 1296482304,1296498687,LT -1296498688,1296531455,BG +1296498688,1296510975,BG +1296510976,1296513023,US +1296513024,1296531455,BG 1296531456,1296564223,MT 1296564224,1296566271,GB 1296566272,1296568319,DE @@ -11582,9 +11297,7 @@ 1296599040,1296601087,RU 1296601088,1296605183,NL 1296605184,1296607231,AT -1296607232,1296608511,NL -1296608512,1296608767,CH -1296608768,1296609279,NL +1296607232,1296609279,NL 1296609280,1296611327,CH 1296611328,1296613375,TR 1296613376,1296615423,IT @@ -11613,7 +11326,14 @@ 1296670720,1296672767,ES 1296672768,1296674815,GB 1296674816,1296676863,BE -1296676864,1296678911,A2 +1296676864,1296677295,A2 +1296677296,1296677303,NG +1296677304,1296677639,A2 +1296677640,1296677647,NG +1296677648,1296677727,A2 +1296677728,1296677735,NG +1296677736,1296678903,A2 +1296678904,1296678911,NG 1296678912,1296680959,SA 1296680960,1296683007,ES 1296683008,1296685055,IE @@ -11641,13 +11361,9 @@ 1296728064,1296730111,SE 1296730112,1296732159,DE 1296732160,1296734207,IT -1296734208,1296735487,FR -1296735488,1296735743,DE -1296735744,1296736255,FR +1296734208,1296736255,FR 1296736256,1296738303,NO -1296738304,1296738815,CH -1296738816,1296739327,FI -1296739328,1296740351,CH +1296738304,1296740351,CH 1296740352,1296744447,RU 1296744448,1296746495,GB 1296746496,1296748543,SI @@ -11695,7 +11411,9 @@ 1296924672,1296941055,BG 1296941056,1296957439,BA 1296957440,1296973823,BG -1296973824,1296990207,CZ +1296973824,1296983935,CZ +1296983936,1296984063,AE +1296984064,1296990207,CZ 1296990208,1296995327,BG 1296995328,1296996351,GR 1296996352,1297006591,BG @@ -11710,7 +11428,6 @@ 1297215488,1297217535,NL 1297217536,1297219583,RO 1297219584,1297285119,RU -1297285120,1297350655,GR 1297350656,1297416191,FR 1297416192,1297481727,BG 1297481728,1297514495,GB @@ -11735,9 +11452,7 @@ 1297584128,1297588223,UA 1297588224,1297590271,NL 1297590272,1297592319,RU -1297592320,1297592831,IM -1297592832,1297593087,GB -1297593088,1297594367,IM +1297592320,1297594367,GB 1297594368,1297596415,DE 1297596416,1297598463,UA 1297598464,1297602559,RU @@ -11755,9 +11470,7 @@ 1297727488,1297743871,MD 1297743872,1297760255,DE 1297760256,1297776639,LT -1297776640,1297784831,DE -1297784832,1297786879,CZ -1297786880,1297793023,DE +1297776640,1297793023,DE 1297793024,1297809407,UA 1297809408,1297825791,PL 1297825792,1297842175,RU @@ -11786,13 +11499,9 @@ 1297981440,1297989631,RO 1297989632,1297997823,CZ 1297997824,1298006015,IT -1298006016,1298014207,RU -1298014208,1298014719,LT -1298014720,1298017279,RU +1298006016,1298017279,RU 1298017280,1298018303,BY -1298018304,1298019327,RU -1298019328,1298019839,LT -1298019840,1298020351,RU +1298018304,1298020351,RU 1298020352,1298022399,BY 1298022400,1298030591,IT 1298030592,1298038783,RU @@ -11805,7 +11514,7 @@ 1298073600,1298075647,RU 1298075648,1298076671,CY 1298076672,1298077695,US -1298077696,1298079743,DE +1298077696,1298079743,NL 1298079744,1298081791,GB 1298081792,1298083839,CZ 1298083840,1298085887,PL @@ -11854,23 +11563,16 @@ 1298956288,1298972671,GB 1298972672,1298989055,RU 1298989056,1299005439,UA -1299005440,1299009279,NL -1299009280,1299009535,BE -1299009536,1299010047,NL +1299005440,1299010047,NL 1299010048,1299010815,BE 1299010816,1299011071,RU -1299011072,1299011327,BE -1299011328,1299012095,NL -1299012096,1299012607,BE -1299012608,1299013631,NL +1299011072,1299013631,NL 1299013632,1299015679,BE -1299015680,1299016703,NL -1299016704,1299016959,BE -1299016960,1299017215,NL -1299017216,1299017727,RU +1299015680,1299017727,NL 1299017728,1299019775,BE 1299019776,1299020031,NL -1299020032,1299021823,BE +1299020032,1299021055,BE +1299021056,1299021823,NL 1299021824,1299026111,CH 1299026112,1299026127,ES 1299026128,1299038207,CH @@ -11911,9 +11613,7 @@ 1306267523,1306267527,NG 1306267528,1306271743,KE 1306271744,1306279935,RU -1306279936,1306286079,IT -1306286080,1306286591,CH -1306286592,1306288127,IT +1306279936,1306288127,IT 1306288128,1306296319,AT 1306296320,1306312703,RU 1306312704,1306320895,UZ @@ -11923,7 +11623,9 @@ 1306345472,1306353663,LT 1306353664,1306361855,SA 1306361856,1306370047,RU -1306370048,1306378239,GB +1306370048,1306374655,GB +1306374656,1306374911,US +1306374912,1306378239,GB 1306378240,1306386431,RU 1306386432,1306394623,DK 1306394624,1306402815,ME @@ -11960,10 +11662,12 @@ 1307172864,1307181055,DK 1307181056,1307189247,RU 1307189248,1307191295,DE -1307191296,1307191807,CZ -1307191808,1307192063,US +1307191296,1307191551,CZ +1307191552,1307192063,US 1307192064,1307192319,GB -1307192320,1307193343,CZ +1307192320,1307192575,US +1307192576,1307192831,DE +1307192832,1307193343,CZ 1307193344,1307195391,NO 1307195392,1307197439,CH 1307197440,1307205631,HU @@ -11988,28 +11692,20 @@ 1307361280,1307369471,CZ 1307369472,1307377663,RU 1307377664,1307385855,PL -1307385856,1307389951,AT -1307389952,1307392511,EU -1307392512,1307394047,AT +1307385856,1307394047,AT 1307394048,1307402239,IR 1307402240,1307410431,HR 1307410432,1307418623,CZ 1307418624,1307426815,IR 1307426816,1307435007,CH -1307435008,1307435519,DE -1307435520,1307436001,US -1307436002,1307436031,DE -1307436032,1307436513,US -1307436514,1307437055,DE -1307437056,1307441151,CZ +1307435008,1307437055,DE +1307437056,1307441151,ES 1307441152,1307443199,DE 1307443200,1307451391,IT 1307451392,1307459583,SE 1307459584,1307467775,BG 1307467776,1307484159,RU -1307484160,1307491327,GB -1307491328,1307491839,IE -1307491840,1307492351,GB +1307484160,1307492351,GB 1307492352,1307500543,BA 1307500544,1307508735,RU 1307508736,1307516927,BA @@ -12036,11 +11732,8 @@ 1307627520,1307631615,SE 1307631616,1307635711,IT 1307635712,1307637247,EE -1307637248,1307637759,LV -1307637760,1307638271,EE -1307638272,1307639295,LT -1307639296,1307639551,EE -1307639552,1307639807,LT +1307637248,1307637503,LV +1307637504,1307639807,EE 1307639808,1307643903,IT 1307643904,1307652095,RU 1307652096,1307656191,ES @@ -12072,9 +11765,8 @@ 1307742208,1307746303,HU 1307746304,1307750399,UA 1307750400,1307754495,IT -1307754496,1307755519,US -1307755520,1307756543,GB -1307756544,1307757311,FR +1307754496,1307756799,GB +1307756800,1307757311,FR 1307757312,1307758591,GB 1307758592,1307762687,SM 1307762688,1307766783,PL @@ -12088,12 +11780,14 @@ 1307803648,1307807743,DK 1307807744,1307811839,SE 1307811840,1307815935,NL -1307815936,1307817983,EU +1307815936,1307816191,EU +1307816192,1307816447,GB +1307816448,1307817983,EU 1307817984,1307818048,GB 1307818049,1307818049,BE 1307818050,1307818239,GB -1307818240,1307818751,EU -1307818752,1307819263,GB +1307818240,1307819007,EU +1307819008,1307819263,GB 1307819264,1307820031,EU 1307820032,1307824127,ES 1307824128,1307828223,HU @@ -12121,7 +11815,9 @@ 1307914240,1307918335,NL 1307918336,1307922431,GB 1307922432,1307926527,NL -1307926528,1307930623,KZ +1307926528,1307926655,KZ +1307926656,1307926783,CA +1307926784,1307930623,KZ 1307930624,1307934719,RU 1307934720,1307938815,FR 1307938816,1307941119,US @@ -12134,8 +11830,7 @@ 1307967488,1307971583,IT 1307971584,1307979775,GB 1307979776,1307981823,ZW -1307981824,1307982335,ZA -1307982336,1307983871,GB +1307981824,1307983871,GB 1307983872,1307984383,NG 1307984384,1307987967,LB 1307987968,1307992063,FR @@ -12158,13 +11853,11 @@ 1308049408,1308053503,DK 1308053504,1308055551,DE 1308055552,1308057599,AL -1308057600,1308061695,GR -1308061696,1308069887,RU +1308062464,1308062719,RU +1308065792,1308069887,RU 1308069888,1308073983,NO 1308073984,1308078079,RU -1308078080,1308079521,NL -1308079522,1308079525,NL -1308079526,1308080127,NL +1308078080,1308080127,NL 1308080128,1308082175,RU 1308082176,1308084223,GB 1308084224,1308086271,RS @@ -12204,11 +11897,8 @@ 1310240768,1310242815,RU 1310242816,1310244863,HU 1310244864,1310246911,EE -1310246912,1310247935,FR -1310247936,1310248447,CH -1310248448,1310248959,FR -1310248960,1310250495,IM -1310250496,1310251007,MT +1310246912,1310248959,ZA +1310248960,1310251007,IM 1310251008,1310255103,RU 1310255104,1310257151,CZ 1310257152,1310259199,FR @@ -12283,9 +11973,7 @@ 1311250432,1311252479,RU 1311252480,1311253247,GB 1311253248,1311253255,IT -1311253256,1311253351,GB -1311253352,1311253359,IT -1311253360,1311253415,GB +1311253256,1311253415,GB 1311253416,1311253423,IT 1311253424,1311254527,GB 1311254528,1311256575,SE @@ -12295,7 +11983,8 @@ 1311264768,1311266815,RU 1311266816,1311268863,FR 1311268864,1311270911,BE -1311270912,1311272959,RU +1311270912,1311272191,RU +1311272192,1311272959,US 1311272960,1311275007,GB 1311275008,1311277055,FR 1311277056,1311279103,IT @@ -12308,14 +11997,13 @@ 1311291392,1311293439,RU 1311293440,1311295487,NL 1311295488,1311297535,IT -1311297536,1311299071,EU -1311299072,1311299583,AT +1311297536,1311299583,EU 1311299584,1311301631,RU 1311301632,1311303679,TR 1311303680,1311307775,GB 1311307776,1311309823,IS -1311309824,1311310335,GB -1311310336,1311310847,GG +1311309824,1311310591,GB +1311310592,1311310847,GG 1311310848,1311310857,GB 1311310858,1311310858,GG 1311310859,1311311103,GB @@ -12353,15 +12041,11 @@ 1311506432,1311637503,CZ 1311637504,1312292863,DE 1312292864,1312817151,LT -1312817152,1313386495,SE -1313386496,1313386623,DK -1313386624,1313865727,SE +1312817152,1313865727,SE 1313865728,1313931263,CZ 1313931264,1313996799,RU 1313996800,1314062335,SE -1314062336,1314088763,BG -1314088764,1314088764,BG -1314088765,1314127871,BG +1314062336,1314127871,BG 1314127872,1314193407,LV 1314193408,1314258943,RU 1314258944,1314324479,GB @@ -12388,20 +12072,19 @@ 1315713024,1315717119,SE 1315717120,1315725311,RU 1315725312,1315729407,CZ -1315729408,1315733503,EU +1315729408,1315733503,DE 1315733504,1315737599,NL 1315737600,1315741695,CZ 1315741696,1315745791,LB 1315745792,1315749887,CZ 1315749888,1315753983,RU -1315753984,1315758079,KZ -1315758080,1315759103,RE -1315759104,1315759359,FR -1315759360,1315759615,RE -1315759616,1315759871,FR -1315759872,1315760383,RE -1315760384,1315761151,FR -1315761152,1315762175,RE +1315758080,1315758335,RE +1315758336,1315759103,FR +1315759104,1315759359,RE +1315759360,1315759615,FR +1315759616,1315760383,RE +1315760384,1315761663,FR +1315761664,1315762175,RE 1315762176,1315766271,BG 1315766272,1315769087,NL 1315769088,1315769343,EU @@ -12440,7 +12123,7 @@ 1315893248,1315897343,RU 1315897344,1315901439,IR 1315901440,1315905535,UA -1315905536,1315909631,BA +1315905536,1315909631,SI 1315909632,1315913727,AZ 1315913728,1315917823,DE 1315917824,1315921919,RU @@ -12450,7 +12133,8 @@ 1315934208,1315938303,RU 1315938304,1315942399,DK 1315942400,1315946495,UA -1315946496,1315950591,GG +1315946496,1315946751,GB +1315946752,1315950591,GG 1315950592,1315954687,UA 1315954688,1315958783,DE 1315958784,1315962879,RU @@ -12481,25 +12165,27 @@ 1317617664,1317625855,YE 1317625856,1317627903,DE 1317627904,1317629951,RU -1317629952,1317634047,GB -1317634048,1317638399,IE -1317638400,1317638655,GB -1317638656,1317640447,IE -1317640448,1317643263,GB -1317643264,1317643775,IE -1317643776,1317644799,GB -1317644800,1317645311,IE -1317645312,1317645823,GB -1317645824,1317646335,IE -1317646336,1317647103,GB -1317647104,1317647359,IE -1317647360,1317647615,GB -1317647616,1317648383,IE -1317648384,1317650431,GB +1317629952,1317634815,GB +1317634816,1317635071,IE +1317635072,1317636095,GB +1317636096,1317637119,IE +1317637120,1317637887,GB +1317637888,1317638143,IE +1317638144,1317642239,GB +1317642240,1317642495,IE +1317642496,1317645823,GB +1317645824,1317646079,IE +1317646080,1317646551,GB +1317646552,1317646559,IE +1317646560,1317647015,GB +1317647016,1317647023,IE +1317647024,1317647615,GB +1317647616,1317647871,IE +1317647872,1317650431,GB 1317650432,1317666815,PT -1317666816,1317671935,GB -1317671936,1317672447,GA -1317672448,1317683199,GB +1317666816,1317679783,A2 +1317679784,1317679791,SS +1317679792,1317683199,A2 1317683200,1317699583,DE 1317699584,1317715967,RU 1317715968,1317732351,SA @@ -12508,7 +12194,9 @@ 1317765120,1317781503,GE 1317781504,1317814271,RU 1317814272,1317830655,DE -1317830656,1317847039,NL +1317830656,1317833471,NL +1317833472,1317833727,CY +1317833728,1317847039,NL 1317847040,1317863423,RU 1317863424,1317879807,GB 1317879808,1317896191,SK @@ -12517,11 +12205,7 @@ 1317928960,1317945343,BG 1317945344,1317978111,AT 1317978112,1317994495,RU -1317994496,1317995007,NL -1317995008,1317996031,DE -1317996032,1317997055,NL -1317997056,1317998079,DE -1317998080,1318010879,NL +1317994496,1318010879,NL 1318010880,1318027263,DK 1318027264,1318043647,IE 1318043648,1318584319,GB @@ -12539,14 +12223,9 @@ 1318682624,1318690815,RU 1318690816,1318699007,DK 1318699008,1318707199,IE -1318707200,1318707455,FR -1318707456,1318708479,GB -1318708480,1318708735,FR -1318708736,1318709247,GB +1318707200,1318709247,GB 1318709248,1318711295,FR -1318711296,1318711807,GB -1318711808,1318712319,FR -1318712320,1318713023,GB +1318711296,1318713023,GB 1318713024,1318713119,FR 1318713120,1318714367,GB 1318714368,1318715390,FR @@ -12564,23 +12243,16 @@ 1318805504,1318813695,PL 1318813696,1318821887,FR 1318821888,1318838271,RU -1318838272,1318839039,GB -1318839040,1318839807,IE -1318839808,1318840319,GB -1318840320,1318841078,IE +1318838272,1318841078,IE 1318841079,1318841079,GB -1318841080,1318841471,IE -1318841472,1318841855,GB -1318841856,1318842111,IE -1318842112,1318846463,GB +1318841080,1318846463,IE 1318846464,1318854655,NO 1318854656,1318862847,CZ 1318862848,1318871039,GB 1318871040,1318879231,DK 1318879232,1318887423,CZ 1318887424,1318895615,PL -1318895616,1318896639,DK -1318896640,1318897663,SE +1318895616,1318897663,SE 1318897664,1318903807,DK 1318903808,1318911999,RU 1318912000,1318920191,MK @@ -12588,8 +12260,8 @@ 1318928384,1318936575,LT 1318936576,1318944767,DK 1318944768,1318958079,CZ -1318958080,1318960639,PL -1318960640,1318961151,CZ +1318958080,1318960127,PL +1318960128,1318961151,CZ 1318961152,1318969343,GB 1318969344,1318977535,RU 1318977536,1318985727,LT @@ -12636,8 +12308,7 @@ 1331836928,1331838975,FR 1331838976,1331841023,ES 1331841024,1331843071,CZ -1331843072,1331844863,GB -1331844864,1331845119,FR +1331843072,1331845119,GB 1331845120,1331847167,RU 1331847168,1331849215,FR 1331849216,1331851263,BG @@ -12667,7 +12338,8 @@ 1331904512,1331908607,GB 1331908608,1331910655,DE 1331910656,1331912703,BH -1331912704,1331914751,DE +1331912704,1331912959,NL +1331912960,1331914751,DE 1331914752,1331916799,RU 1331916800,1331918847,IT 1331918848,1331920895,BE @@ -12705,7 +12377,6 @@ 1332637696,1332641791,BG 1332641792,1332645887,UA 1332645888,1332649983,RS -1332649984,1332654079,UA 1332654080,1332658175,RU 1332658176,1332662271,PL 1332662272,1332670463,UA @@ -12737,9 +12408,7 @@ 1334084632,1334091775,DE 1334091776,1334099967,LT 1334099968,1334108159,IR -1334108160,1334115327,BE -1334115328,1334115839,RU -1334115840,1334116351,BE +1334108160,1334116351,BE 1334116352,1334124543,AX 1334124544,1334125567,DE 1334125568,1334126591,ES @@ -12759,7 +12428,7 @@ 1334206464,1334214655,FI 1334214656,1334222847,JO 1334222848,1334231039,BG -1334231040,1334239231,EE +1334231040,1334239231,RU 1334239232,1334247423,IS 1334247424,1334255615,NO 1334255616,1334263807,IT @@ -12775,17 +12444,11 @@ 1334345728,1334378495,RU 1334378496,1334411263,IT 1334411264,1334444031,RU -1334444032,1334477055,SE -1334477056,1334477311,DK -1334477312,1334478079,SE +1334444032,1334478079,SE 1334478080,1334478335,DK 1334478336,1334478847,SE 1334478848,1334480895,DK -1334480896,1334482943,SE -1334482944,1334483071,DK -1334483072,1334483199,SE -1334483200,1334483327,DK -1334483328,1334484991,SE +1334480896,1334484991,SE 1334484992,1334489087,DK 1334489088,1334501375,SE 1334501376,1334509567,DK @@ -12795,9 +12458,7 @@ 1334579200,1334583295,RU 1334583296,1334591487,DE 1334591488,1334595583,RU -1334595584,1334596351,IT -1334596352,1334596607,GR -1334596608,1334599679,IT +1334595584,1334599679,IT 1334599680,1334603775,RU 1334603776,1334607871,DE 1334607872,1334611967,IE @@ -12808,7 +12469,10 @@ 1334625536,1334625791,AP 1334625792,1334626047,GB 1334626048,1334626303,AU -1334626304,1334628351,GB +1334626304,1334626559,BR +1334626560,1334626815,GB +1334626816,1334627071,US +1334627072,1334628351,GB 1334628352,1334632447,IE 1334632448,1334636543,KZ 1334636544,1334640639,RU @@ -12819,11 +12483,7 @@ 1334645223,1334645223,US 1334645224,1334645226,DE 1334645227,1334645227,US -1334645228,1334645247,DE -1334645248,1334645759,IQ -1334645760,1334646271,DE -1334646272,1334646783,IQ -1334646784,1334647039,DE +1334645228,1334647039,DE 1334647040,1334647807,IQ 1334647808,1334648831,DE 1334648832,1334652927,GB @@ -12836,8 +12496,7 @@ 1334681600,1334681855,PL 1334681856,1334682111,GB 1334682112,1334682367,IE -1334682368,1334682623,FR -1334682624,1334683391,GB +1334682368,1334683391,GB 1334683392,1334683647,CH 1334683648,1334683903,GB 1334683904,1334684031,DE @@ -12859,14 +12518,8 @@ 1334710272,1334714367,RU 1334714368,1334718463,DE 1334718464,1334722559,KZ -1334722560,1334725631,NL -1334725632,1334726143,SE -1334726144,1334726655,LU -1334726656,1334729983,RU -1334729984,1334730111,KZ -1334730112,1334730495,RU -1334730496,1334730751,KZ -1334730752,1334734847,RU +1334722560,1334726655,NL +1334726656,1334734847,RU 1334734848,1334738943,LT 1334738944,1334743039,CH 1334743040,1334747135,CZ @@ -12908,9 +12561,7 @@ 1336551424,1336553471,GB 1336553472,1336555519,SA 1336555520,1336557567,BE -1336557568,1336558591,ES -1336558592,1336559103,US -1336559104,1336559615,ES +1336557568,1336559615,ES 1336559616,1336561663,GB 1336561664,1336563711,NO 1336563712,1336567807,NL @@ -12940,15 +12591,13 @@ 1336619008,1336621055,AL 1336621056,1336623103,DE 1336623104,1336625151,BE -1336625152,1336625407,GB -1336625408,1336626259,IE -1336626260,1336626263,GB -1336626264,1336626687,IE -1336626688,1336627199,GB +1336625152,1336625407,IE +1336625408,1336627199,GB 1336627200,1336629247,NO 1336629248,1336631295,DE 1336631296,1336633343,IS -1336633344,1336635391,ES +1336633344,1336634879,ES +1336634880,1336635391,PT 1336635392,1336637439,RU 1336637440,1336639487,UA 1336639488,1336643583,HU @@ -12991,81 +12640,145 @@ 1337241564,1337458687,IL 1337458688,1337982975,PL 1337982976,1342177279,DE -1342177280,1342701567,GB -1342701568,1342701823,FR -1342701824,1342708735,MQ +1342177280,1342628207,GB +1342628208,1342628223,IE +1342628224,1342701567,GB +1342701568,1342702847,MQ +1342702848,1342703103,FR +1342703104,1342706687,MQ +1342706688,1342706943,FR +1342706944,1342708223,MQ +1342708224,1342708479,FR +1342708480,1342708735,MQ 1342708736,1342708991,FR -1342708992,1342711295,MQ -1342711296,1342711551,FR -1342711552,1342717951,MQ -1342717952,1342718975,GP -1342718976,1342719231,FR -1342719232,1342722815,GP -1342722816,1342723071,FR -1342723072,1342732287,GP -1342732288,1342732799,FR -1342732800,1342733311,GP -1342733312,1342733567,FR -1342733568,1342734335,GP -1342734336,1342737407,RE +1342708992,1342710015,MQ +1342710016,1342710271,FR +1342710272,1342711807,MQ +1342711808,1342712063,FR +1342712064,1342714111,MQ +1342714112,1342714367,FR +1342714368,1342716671,MQ +1342716672,1342716927,FR +1342716928,1342717951,MQ +1342717952,1342718207,GP +1342718208,1342718463,FR +1342718464,1342719231,GP +1342719232,1342719487,FR +1342719488,1342720767,GP +1342720768,1342721023,FR +1342721024,1342722047,GP +1342722048,1342722303,FR +1342722304,1342723327,GP +1342723328,1342723583,FR +1342723584,1342724351,GP +1342724352,1342724607,FR +1342724608,1342725375,GP +1342725376,1342725631,FR +1342725632,1342729727,GP +1342729728,1342729983,FR +1342729984,1342730239,GP +1342730240,1342730495,FR +1342730496,1342731007,GP +1342731008,1342731263,FR +1342731264,1342732543,GP +1342732544,1342733055,FR +1342733056,1342734335,GP +1342734336,1342734847,RE +1342734848,1342735103,FR +1342735104,1342736383,RE +1342736384,1342736639,FR +1342736640,1342736895,RE +1342736896,1342737151,FR +1342737152,1342737407,RE 1342737408,1342737663,FR -1342737664,1342741759,RE +1342737664,1342738175,RE +1342738176,1342738431,FR +1342738432,1342741759,RE 1342741760,1342742015,FR -1342742016,1342745855,RE -1342745856,1342746367,FR -1342746368,1342746623,RE -1342746624,1342746879,FR -1342746880,1342747647,RE -1342747648,1342748159,FR -1342748160,1342748671,RE -1342748672,1342748927,FR -1342748928,1342749695,RE -1342749696,1342749951,FR -1342749952,1342750463,RE +1342742016,1342742527,RE +1342742528,1342742783,FR +1342742784,1342744063,RE +1342744064,1342744319,FR +1342744320,1342744831,RE +1342744832,1342745087,FR +1342745088,1342745343,RE +1342745344,1342745599,FR +1342745600,1342746111,RE +1342746112,1342746623,FR +1342746624,1342747135,RE +1342747136,1342747391,FR +1342747392,1342748159,RE +1342748160,1342748671,FR +1342748672,1342749183,RE +1342749184,1342750207,FR +1342750208,1342750463,RE 1342750464,1342750719,FR -1342750720,1342752511,RE -1342752512,1342752767,FR -1342752768,1342759423,RE -1342759424,1342759679,FR -1342759680,1342759935,RE -1342759936,1342761471,FR -1342761472,1342761983,RE -1342761984,1342762239,GF -1342762240,1342763007,FR -1342763008,1342763775,GF -1342763776,1342764799,FR -1342764800,1342766079,RE -1342766080,1342766847,FR -1342766848,1342767103,GF -1342767104,1342988287,FR +1342750720,1342751231,RE +1342751232,1342751487,FR +1342751488,1342751999,RE +1342752000,1342752255,FR +1342752256,1342753023,RE +1342753024,1342753535,FR +1342753536,1342754047,RE +1342754048,1342754559,FR +1342754560,1342755071,RE +1342755072,1342755327,FR +1342755328,1342756863,RE +1342756864,1342757119,FR +1342757120,1342758399,RE +1342758400,1342758911,FR +1342758912,1342759167,RE +1342759168,1342759679,FR +1342759680,1342760191,RE +1342760192,1342760959,FR +1342760960,1342761471,RE +1342761472,1342762751,FR +1342762752,1342763007,RE +1342763008,1342764543,FR +1342764544,1342765311,RE +1342765312,1342765567,FR +1342765568,1342765823,RE +1342765824,1342988287,FR 1342988288,1342989055,US 1342989056,1342996479,FR -1342996480,1342997759,GF -1342997760,1342998783,FR -1342998784,1343000319,GF -1343000320,1343000575,FR -1343000576,1343004671,GF -1343004672,1343004927,FR -1343004928,1343007487,GF -1343007488,1343007743,FR -1343007744,1343008255,GF -1343008256,1343008511,FR +1342996480,1342997247,GF +1342997248,1342997503,FR +1342997504,1342997759,GF +1342997760,1342998015,FR +1342998016,1342998271,GF +1342998272,1342998527,FR +1342998528,1343000575,GF +1343000576,1343001087,FR +1343001088,1343001855,GF +1343001856,1343002111,FR +1343002112,1343002623,GF +1343002624,1343003135,FR +1343003136,1343005695,GF +1343005696,1343005951,FR +1343005952,1343006719,GF +1343006720,1343006975,FR +1343006976,1343007743,GF +1343007744,1343008511,FR 1343008512,1343008767,GF 1343008768,1343009023,FR -1343009024,1343012351,GF +1343009024,1343009279,GF +1343009280,1343009535,FR +1343009536,1343012351,GF 1343012352,1343012607,FR 1343012608,1343012863,GF 1343012864,1343017983,FR 1343017984,1343018495,RE 1343018496,1343025151,FR 1343025152,1343025663,RE -1343025664,1343217663,FR -1343217664,1343218687,MU -1343218688,1343220479,FR +1343025664,1343220479,FR 1343220480,1343220671,DE 1343220672,1343220735,FR 1343220736,1343220863,GB -1343220864,1343225855,FR +1343220864,1343223679,FR +1343223680,1343223687,LB +1343223688,1343224063,FR +1343224064,1343224303,US +1343224304,1343225855,FR 1343225856,1343475711,IT 1343475712,1343475967,US 1343475968,1343605503,IT @@ -13086,7 +12799,8 @@ 1346392064,1346396159,UA 1346396160,1346400255,RU 1346400256,1346404351,IT -1346404352,1346408447,AT +1346404352,1346407423,AT +1346407424,1346408447,DE 1346408448,1346412543,LU 1346412544,1346416639,RU 1346416640,1346420735,DE @@ -13121,14 +12835,11 @@ 1346555904,1346559999,IT 1346560000,1346564095,LI 1346564096,1346568191,EE -1346568192,1346571775,SE -1346571776,1346572287,SE +1346568192,1346572287,SE 1346572288,1346576383,DE -1346576384,1346580479,DK 1346580480,1346584575,RU 1346584576,1346588159,US -1346588160,1346588671,KR -1346588672,1346588927,EU +1346588160,1346588927,EU 1346588928,1346589439,US 1346589440,1346589695,DE 1346589696,1346592767,US @@ -13136,9 +12847,7 @@ 1346596864,1346600959,IT 1346605056,1346609151,CH 1346609152,1346617343,FR -1346617344,1346620415,SE -1346620416,1346620927,DK -1346620928,1346621439,SE +1346617344,1346621439,SE 1346621440,1346625535,RU 1346625536,1346629631,DE 1346629632,1346637823,RU @@ -13163,10 +12872,13 @@ 1346740224,1346744319,FI 1346744320,1346748415,RU 1346748416,1346752511,DE -1346752512,1346753535,FR +1346752512,1346752767,RE +1346752768,1346753535,FR 1346753536,1346754047,RE 1346754048,1346754559,FR -1346754560,1346756095,RE +1346754560,1346755071,RE +1346755072,1346755327,FR +1346755328,1346756095,RE 1346756096,1346756607,FR 1346756608,1346760703,SE 1346760704,1346764799,IR @@ -13246,15 +12958,9 @@ 1347129344,1347133439,FR 1347133440,1347141631,EG 1347141632,1347145727,CH -1347145728,1347146239,IN -1347146240,1347147263,CA -1347147264,1347147775,GB -1347147776,1347148287,DE -1347148288,1347149823,CA +1347145728,1347149823,CA 1347149824,1347151423,HU -1347151424,1347151615,AT -1347151616,1347153151,HU -1347153152,1347158015,AT +1347151424,1347158015,AT 1347158016,1347162111,CH 1347162112,1347166207,IT 1347166208,1347174399,GR @@ -13270,7 +12976,9 @@ 1347223552,1347225599,GB 1347225600,1347226623,PK 1347226624,1347227647,GB -1347227648,1347231743,DE +1347227648,1347229895,DE +1347229896,1347229903,GR +1347229904,1347231743,DE 1347231744,1347235839,UA 1347235840,1347239935,GE 1347239936,1347244031,DK @@ -13318,7 +13026,8 @@ 1347293529,1347293536,NG 1347293537,1347293544,GH 1347293545,1347293552,NG -1347293553,1347293560,A2 +1347293553,1347293559,ZM +1347293560,1347293560,A2 1347293561,1347293568,GN 1347293569,1347293576,NG 1347293577,1347293584,GN @@ -13505,7 +13214,11 @@ 1347296233,1347296240,JO 1347296241,1347296264,A2 1347296265,1347296272,US -1347296273,1347297279,A2 +1347296273,1347297071,A2 +1347297072,1347297079,US +1347297080,1347297151,A2 +1347297152,1347297159,SL +1347297160,1347297279,A2 1347297280,1347305471,UA 1347305472,1347309567,AL 1347309568,1347313663,DE @@ -13535,9 +13248,7 @@ 1347375616,1347375871,EU 1347375872,1347379199,GB 1347379200,1347383295,NL -1347383296,1347385599,EE -1347385600,1347385855,FR -1347385856,1347387011,EE +1347383296,1347387011,EE 1347387012,1347387015,DE 1347387016,1347387391,EE 1347387392,1347391487,GB @@ -13556,9 +13267,7 @@ 1347436544,1347440639,SE 1347440640,1347444735,ES 1347444736,1347452927,RU -1347452928,1347455930,BG -1347455931,1347455931,BG -1347455932,1347461119,BG +1347452928,1347461119,BG 1347461120,1347465215,AL 1347465216,1347469311,GB 1347469312,1347473407,RU @@ -13584,8 +13293,8 @@ 1347579904,1347588095,GB 1347588096,1347592191,CZ 1347592192,1347600383,RU -1347600384,1347601919,CZ -1347601920,1347602431,UA +1347600384,1347601407,CZ +1347601408,1347602431,UA 1347602432,1347608575,DE 1347608576,1347612671,FR 1347612672,1347616767,GB @@ -13598,18 +13307,14 @@ 1347649536,1347653631,GE 1347653632,1347657727,GB 1347657728,1347661823,IT -1347661824,1347664895,DE -1347664896,1347665407,NL -1347665408,1347665919,DE +1347661824,1347665919,DE 1347665920,1347670015,RU 1347670016,1347674111,SE 1347674112,1347682303,RU 1347682304,1347682559,DE 1347682560,1347682815,A2 1347682816,1347686399,DE -1347686400,1347688959,EU -1347688960,1347689343,BE -1347689344,1347690495,EU +1347686400,1347690495,EU 1347690496,1347694591,SE 1347694592,1347706879,GB 1347706880,1347710975,IT @@ -13620,9 +13325,15 @@ 1347731456,1347739647,DE 1347739648,1347747839,NL 1347747840,1347751935,DE -1347751936,1347755015,CY +1347751936,1347754903,CY +1347754904,1347754911,GR +1347754912,1347755015,CY 1347755016,1347755023,GR -1347755024,1347756031,CY +1347755024,1347755135,CY +1347755136,1347755151,GR +1347755152,1347755159,CY +1347755160,1347755175,GR +1347755176,1347756031,CY 1347756032,1347760127,NL 1347760128,1347764223,HU 1347764224,1347772415,GB @@ -13645,23 +13356,15 @@ 1347837952,1347846143,RO 1347846144,1347850239,NO 1347850240,1347854335,IT -1347854336,1347854599,EU +1347854336,1347854591,DE +1347854592,1347854599,EU 1347854600,1347854607,DE -1347854608,1347854655,EU -1347854656,1347854719,DE -1347854720,1347855615,EU -1347855616,1347856127,DE -1347856128,1347856895,EU -1347856896,1347858431,DE -1347858432,1347858687,EU -1347858688,1347858943,DE -1347858944,1347859967,EU -1347859968,1347860479,DE -1347860480,1347862089,EU +1347854608,1347857407,EU +1347857408,1347858431,DE +1347858432,1347862089,EU 1347862090,1347862090,DE -1347862091,1347862335,EU -1347862336,1347862399,DE -1347862400,1347862527,EU +1347862091,1347862271,EU +1347862272,1347862527,DE 1347862528,1347866623,CH 1347866624,1347870719,NO 1347870720,1347874815,AM @@ -13681,6 +13384,7 @@ 1347932160,1347936255,SK 1347936256,1347940351,FR 1347940352,1347944447,BA +1347945472,1347946495,NG 1347947520,1347948543,DZ 1347948544,1347952639,DE 1347952640,1347956735,BE @@ -13688,16 +13392,15 @@ 1347960832,1347964927,DE 1347964928,1347969023,IT 1347969024,1347977215,SE -1347977216,1347983399,A2 -1347983400,1347983407,A2 -1347983408,1347985407,A2 +1347977216,1347985407,A2 1347985408,1347989503,IT 1347989504,1347993599,FI 1347993600,1348001791,GB 1348001792,1348005887,ES -1348005888,1348009215,BH -1348009216,1348009471,US -1348009472,1348009983,BH +1348005888,1348008959,BH +1348008960,1348009471,US +1348009472,1348009727,BH +1348009728,1348009983,US 1348009984,1348014079,RU 1348014080,1348018175,DK 1348018176,1348026367,NO @@ -13724,8 +13427,8 @@ 1348116480,1348120575,JO 1348120576,1348124671,RU 1348124672,1348128767,GB -1348128768,1348129279,BE -1348129280,1348132351,SI +1348128768,1348129791,BE +1348129792,1348132351,SI 1348132352,1348132863,BE 1348132864,1348136959,UA 1348136960,1348141055,RU @@ -13736,7 +13439,8 @@ 1348157440,1348165631,ES 1348165632,1348169727,DE 1348169728,1348173823,AL -1348173824,1348177919,DK +1348173824,1348174591,FI +1348174592,1348177919,DK 1348177920,1348182015,BE 1348182016,1348190207,UA 1348190208,1348194303,RU @@ -13763,9 +13467,7 @@ 1348255744,1348263935,RU 1348263936,1348268031,UA 1348268032,1348272127,CZ -1348272128,1348275199,IE -1348275200,1348275711,GB -1348275712,1348280319,IE +1348272128,1348280319,IE 1348280320,1348284415,AT 1348284416,1348288511,RU 1348288512,1348292607,IT @@ -13792,9 +13494,7 @@ 1348362240,1348366335,MC 1348366336,1348368227,IT 1348368228,1348368228,A2 -1348368229,1348368895,IT -1348368896,1348369151,A2 -1348369152,1348370431,IT +1348368229,1348370431,IT 1348370432,1348374527,CZ 1348374528,1348378623,CH 1348378624,1348382719,BY @@ -13809,11 +13509,7 @@ 1348419584,1348427775,HU 1348427776,1348435967,CZ 1348435968,1348440063,FI -1348440064,1348442111,NL -1348442112,1348442623,DE -1348442624,1348443135,NL -1348443136,1348443647,DE -1348443648,1348448255,NL +1348440064,1348448255,NL 1348448256,1348456447,GB 1348456448,1348460543,BH 1348460544,1348464639,SI @@ -13833,75 +13529,42 @@ 1349771264,1349779455,NL 1349779456,1349910527,IT 1349910528,1350041599,FR -1350041600,1350056191,AT -1350056192,1350056287,DE -1350056288,1350056303,AT -1350056304,1350056447,DE -1350056448,1350215679,AT +1350041600,1350215679,AT 1350215680,1350215935,IQ 1350215936,1350216959,AT 1350216960,1350217215,IQ 1350217216,1350217471,AT 1350217472,1350217727,IQ -1350217728,1350235947,AT -1350235948,1350235951,AU -1350235952,1350303743,AT +1350217728,1350303743,AT 1350303744,1350434815,FR 1350434816,1350565887,NL -1350565888,1351950079,DE -1351950080,1351950143,GB -1351950144,1351950207,DE -1351950208,1351950335,GB -1351950336,1351989247,DE -1351989248,1351989455,AE -1351989456,1351989471,DE -1351989472,1351989503,AE -1351989504,1352031618,DE +1350565888,1352031618,DE 1352031619,1352031619,EU -1352031620,1352069631,DE -1352069632,1352069759,US -1352069760,1352069799,DE -1352069800,1352069887,US -1352069888,1352293375,DE -1352293376,1352293463,GB -1352293464,1352293471,DE -1352293472,1352293511,GB -1352293512,1352293519,DE -1352293520,1352293623,GB -1352293624,1352294911,DE +1352031620,1352294911,DE 1352294912,1352295167,EU 1352295168,1352299775,DE 1352299776,1352300031,US -1352300032,1352405503,DE -1352405504,1352405759,US -1352405760,1352412159,DE +1352300032,1352412159,DE 1352412160,1352412415,FR -1352412416,1352412799,DE -1352412800,1352412927,GB -1352412928,1352417279,DE +1352412416,1352412671,DE +1352412672,1352412863,GB +1352412864,1352417279,DE 1352417280,1352418303,SK 1352418304,1352663039,DE 1352663040,1353187327,DK -1353187328,1353258239,GB -1353258240,1353258263,SE -1353258264,1353258271,NO -1353258272,1353258495,SE -1353258496,1353262295,GB +1353187328,1353262295,GB 1353262296,1353262303,US -1353262304,1353266959,GB -1353266960,1353266975,IE -1353266976,1353267711,GB -1353267712,1353267967,IE -1353267968,1353272287,GB +1353262304,1353272079,GB +1353272080,1353272095,ES +1353272096,1353272287,GB 1353272288,1353272303,ES -1353272304,1353272319,GB -1353272320,1353273087,ES -1353273088,1353274623,GB -1353274624,1353274879,ES -1353274880,1353277439,GB +1353272304,1353275167,GB +1353275168,1353275199,ES +1353275200,1353275247,GB +1353275248,1353275255,ES +1353275256,1353277439,GB 1353277440,1353279487,CH -1353279488,1353279999,IT -1353280000,1353286143,GB +1353279488,1353286143,GB 1353286144,1353286255,EU 1353286256,1353286271,GB 1353286272,1353286303,EU @@ -13911,26 +13574,22 @@ 1353286368,1353286397,EU 1353286398,1353286398,GB 1353286399,1353286399,EU -1353286400,1353288191,GB -1353288192,1353288703,IE -1353288704,1353288959,GB -1353288960,1353289471,IE -1353289472,1353298687,GB +1353286400,1353287959,GB +1353287960,1353287967,IE +1353287968,1353298687,GB 1353298688,1353299455,SE 1353299456,1353300079,GB 1353300080,1353300095,SE -1353300096,1353306111,GB -1353306112,1353306623,ES -1353306624,1353308159,GB +1353300096,1353306695,GB +1353306696,1353306703,BE +1353306704,1353308159,GB 1353308160,1353309183,FR -1353309184,1353312255,GB -1353312256,1353312767,CH -1353312768,1353313023,IT -1353313024,1353313535,GB +1353309184,1353312447,GB +1353312448,1353312479,CH +1353312480,1353313535,GB 1353313536,1353313791,IE -1353313792,1353314303,GB -1353314304,1353314815,CH -1353314816,1353316351,ES +1353313792,1353315327,GB +1353315328,1353316351,ES 1353316352,1353318399,GB 1353318400,1353383935,SE 1353383936,1353449471,DE @@ -13975,9 +13634,7 @@ 1356201984,1356333055,FR 1356333056,1356464127,SE 1356464128,1356595199,CH -1356595200,1356714751,FI -1356714752,1356715007,AX -1356715008,1356857343,FI +1356595200,1356857343,FI 1356857344,1356922879,ES 1356922880,1356988415,GB 1356988416,1357053951,DE @@ -13985,73 +13642,46 @@ 1357119488,1357185023,DE 1357185024,1357250559,GB 1357250560,1357316095,IL -1357316096,1357316607,EU -1357316608,1357317119,LU +1357316096,1357317119,EU 1357317120,1357317375,GB 1357317376,1357317631,A2 -1357317632,1357318143,LY +1357317632,1357318143,EU 1357318144,1357320191,QA -1357320192,1357320703,FR -1357320704,1357321983,EU +1357320192,1357321023,EU +1357321024,1357321087,KE +1357321088,1357321983,EU 1357321984,1357322239,GB 1357322240,1357322495,EU 1357322496,1357322751,DE -1357322752,1357323263,BH -1357323264,1357323519,EU +1357322752,1357323519,EU 1357323520,1357323775,GB 1357323776,1357324287,EU 1357324288,1357325311,GB 1357325312,1357327359,EU 1357327360,1357328383,DE -1357328384,1357330943,EU -1357330944,1357331455,ES -1357331456,1357338111,EU -1357338112,1357338623,FR -1357338624,1357340671,EU +1357328384,1357340671,EU 1357340672,1357341695,GB 1357341696,1357342975,EU 1357342976,1357343231,GB 1357343232,1357343487,EU 1357343488,1357343503,GB -1357343504,1357349887,EU -1357349888,1357350399,ES -1357350400,1357350911,QA -1357350912,1357351167,EU +1357343504,1357347615,EU +1357347616,1357347647,FR +1357347648,1357351167,EU 1357351168,1357351423,PL -1357351424,1357351935,EU -1357351936,1357352447,GB -1357352448,1357357055,EU -1357357056,1357357567,ES -1357357568,1357358079,DE -1357358080,1357359871,EU -1357359872,1357360015,GB -1357360016,1357360031,IT -1357360032,1357360271,GB -1357360272,1357360279,FR -1357360280,1357360383,GB -1357360384,1357361151,EU +1357351424,1357359871,EU +1357359872,1357360127,GB +1357360128,1357361151,EU 1357361152,1357363199,GB 1357363200,1357364223,QA 1357364224,1357365247,ES -1357365248,1357365759,DZ -1357365760,1357366015,EU -1357366016,1357366271,KM -1357366272,1357366783,EU -1357366784,1357366959,GB -1357366960,1357366967,BE -1357366968,1357367039,GB -1357367040,1357368319,EU -1357368320,1357368831,GN -1357368832,1357369343,ES -1357369344,1357370367,EU -1357370368,1357370879,GB -1357370880,1357371391,EU +1357365248,1357366783,EU +1357366784,1357367039,GB +1357367040,1357371391,EU 1357371392,1357371647,GB 1357371648,1357372159,EU -1357372160,1357372927,GB -1357372928,1357378047,EU -1357378048,1357378559,FR -1357378560,1357381631,EU +1357372160,1357372415,GB +1357372416,1357381631,EU 1357381632,1357414399,NO 1357414400,1357447167,LV 1357447168,1357479935,IE @@ -14063,46 +13693,47 @@ 1357643776,1357676543,FR 1357676544,1357709311,BE 1357709312,1357742079,RU -1357742080,1357767056,DE -1357767057,1357767057,DE -1357767058,1357767239,DE -1357767240,1357769287,DE -1357769288,1357774847,DE +1357742080,1357774847,DE 1357774848,1357791231,GB 1357791232,1357807615,PL 1357807616,1357840383,CH 1357840384,1357873151,NO 1357873152,1357875295,EU 1357875296,1357875327,IE -1357875328,1357877375,EU +1357875328,1357877247,EU +1357877248,1357877311,DE +1357877312,1357877375,EU 1357877376,1357877439,DE 1357877440,1357879935,EU 1357879936,1357880063,GB -1357880064,1357883391,EU -1357883392,1357883647,FR +1357880064,1357883647,EU 1357883648,1357883903,SE 1357883904,1357886105,EU 1357886106,1357886361,SE -1357886362,1357887487,EU -1357887488,1357887999,FR -1357888000,1357889023,EU +1357886362,1357889023,EU 1357889024,1357889279,GB 1357889280,1357891071,EU 1357891072,1357891327,NL 1357891328,1357891679,EU 1357891680,1357891711,GB -1357891712,1357892607,EU +1357891712,1357891839,EU +1357891840,1357892095,GB +1357892096,1357892607,EU 1357892608,1357892735,NL 1357892736,1357892863,EU 1357892864,1357893119,NL -1357893120,1357898751,EU +1357893120,1357893375,SE +1357893376,1357898751,EU 1357898752,1357898879,DE 1357898880,1357899647,EU 1357899648,1357899775,GB -1357899776,1357900287,DE -1357900288,1357902365,EU +1357899776,1357900415,EU +1357900416,1357900543,SE +1357900544,1357902365,EU 1357902366,1357902366,NO -1357902367,1357902847,EU +1357902367,1357902463,EU +1357902464,1357902591,GB +1357902592,1357902847,EU 1357902848,1357903359,GB 1357903360,1357904895,EU 1357904896,1357905407,GB @@ -14114,7 +13745,9 @@ 1357926400,1357930495,GB 1357930496,1357942783,RU 1357942784,1357946879,RS -1357946880,1357955071,PL +1357946880,1357953023,PL +1357953024,1357954047,US +1357954048,1357955071,PL 1357955072,1357959167,KE 1357959168,1357963263,RU 1357963264,1357967359,AT @@ -14128,20 +13761,20 @@ 1357984080,1357984087,IT 1357984088,1357984103,GB 1357984104,1357984119,IT -1357984120,1357984319,GB +1357984120,1357984303,GB +1357984304,1357984311,IT +1357984312,1357984319,GB 1357984320,1357984327,IT 1357984328,1357984335,GB 1357984336,1357984343,IT 1357984344,1357984367,GB 1357984368,1357984375,IT -1357984376,1357984439,GB -1357984440,1357984447,IT -1357984448,1357984487,GB +1357984376,1357984487,GB 1357984488,1357984495,IT 1357984496,1357984527,GB 1357984528,1357984551,IT -1357984552,1357984583,GB -1357984584,1357984599,IT +1357984552,1357984591,GB +1357984592,1357984599,IT 1357984600,1357984671,GB 1357984672,1357984679,IT 1357984680,1357984703,GB @@ -14160,7 +13793,9 @@ 1357985512,1357985519,IT 1357985520,1357985791,GB 1357985792,1357987839,DE -1357987840,1357991935,GB +1357987840,1357989631,GB +1357989632,1357989887,FR +1357989888,1357991935,GB 1357991936,1357996031,NO 1357996032,1358000127,CH 1358000128,1358004223,LI @@ -14195,12 +13830,14 @@ 1358151680,1358155775,DE 1358155776,1358159871,CH 1358159872,1358163967,ES -1358163968,1358164479,FR -1358164480,1358164735,MQ +1358163968,1358164223,FR +1358164224,1358164735,MQ 1358164736,1358164991,FR 1358164992,1358165503,MQ 1358165504,1358166015,FR -1358166016,1358167551,MQ +1358166016,1358166271,MQ +1358166272,1358166527,FR +1358166528,1358167551,MQ 1358167552,1358167807,FR 1358167808,1358168063,MQ 1358168064,1358172159,GB @@ -14214,11 +13851,7 @@ 1358209024,1358213119,IL 1358213120,1358217215,GB 1358217216,1358221311,SE -1358221312,1358223615,DE -1358223616,1358223871,GB -1358223872,1358225027,DE -1358225028,1358225028,IT -1358225029,1358225407,DE +1358221312,1358225407,DE 1358225408,1358229503,RU 1358229504,1358233599,DE 1358233600,1358237695,ES @@ -14252,8 +13885,7 @@ 1358381056,1358385151,IT 1358385152,1358389247,GB 1358389248,1358397439,RU -1358397440,1358397951,A2 -1358397952,1358398463,TZ +1358397440,1358398463,A2 1358398464,1358399487,GB 1358399488,1358401279,A2 1358401280,1358401535,KE @@ -14293,15 +13925,11 @@ 1358548992,1358551039,NL 1358551040,1358553087,GB 1358553088,1358557183,UA -1358557184,1358557695,IE -1358557696,1358558207,GB -1358558208,1358558463,IE -1358558464,1358559231,GB -1358559232,1358559487,IE -1358559488,1358559743,GB -1358559744,1358560255,IE -1358560256,1358560511,GB -1358560512,1358561279,IE +1358557184,1358557439,IE +1358557440,1358557695,GB +1358557696,1358557951,IE +1358557952,1358561023,GB +1358561024,1358561279,IE 1358561280,1358569471,CZ 1358569472,1358573567,NG 1358573568,1358577663,LV @@ -14314,11 +13942,9 @@ 1358610432,1358614527,IR 1358614528,1358622719,RU 1358622720,1358626815,SK -1358626816,1358627839,A2 -1358627840,1358627925,US -1358627926,1358627926,A2 -1358627927,1358628863,US -1358628864,1358630911,A2 +1358626816,1358628863,A2 +1358628864,1358629119,IT +1358629120,1358630911,A2 1358630912,1358635007,GB 1358635008,1358639103,TR 1358639104,1358643199,RU @@ -14328,19 +13954,17 @@ 1358655488,1358667775,RU 1358667776,1358668159,GB 1358668160,1358668167,PT -1358668168,1358668287,GB -1358668288,1358668799,PT -1358668800,1358669823,GB -1358669824,1358670079,PT -1358670080,1358671359,GB -1358671360,1358671615,PT -1358671616,1358672895,GB -1358672896,1358673407,PT -1358673408,1358675967,GB -1358675968,1358677247,SE -1358677248,1358677759,DK -1358677760,1358679039,SE -1358679040,1358680063,DK +1358668168,1358668447,GB +1358668448,1358668455,PT +1358668456,1358670943,GB +1358670944,1358670951,FR +1358670952,1358670975,GB +1358670976,1358670991,PT +1358670992,1358675967,GB +1358675968,1358676991,SE +1358676992,1358677759,DK +1358677760,1358679295,SE +1358679296,1358680063,DK 1358680064,1358688255,RU 1358688256,1358692351,CZ 1358692352,1358696447,PL @@ -14362,14 +13986,13 @@ 1358770176,1358774271,BG 1358774272,1358778367,ES 1358778368,1358782463,CH -1358782464,1358786559,GB -1358786560,1358787071,NL -1358787072,1358787327,GB +1358782464,1358784039,GB +1358784040,1358784047,DE +1358784048,1358787327,GB 1358787328,1358787583,IE 1358787584,1358790655,GB 1358790656,1358798847,IR -1358798848,1358799359,DE -1358799360,1358802943,HR +1358798848,1358802943,HR 1358802944,1358807039,HU 1358807040,1358811135,ES 1358811136,1358815231,DE @@ -14379,8 +14002,8 @@ 1358827520,1358831615,RU 1358831616,1358835711,NO 1358835712,1358839807,RU -1358839808,1358842111,CH -1358842112,1358842879,CH +1358839808,1358842367,CH +1358842368,1358842879,CH 1358842880,1358843903,CH 1358843904,1358847999,MT 1358848000,1358856191,RU @@ -14388,7 +14011,9 @@ 1358860288,1358860835,GB 1358860836,1358860836,EU 1358860837,1358861311,GB -1358861312,1358861449,EU +1358861312,1358861361,EU +1358861362,1358861363,DE +1358861364,1358861449,EU 1358861450,1358861450,DE 1358861451,1358861473,EU 1358861474,1358861474,DE @@ -14399,7 +14024,7 @@ 1358862848,1358862898,DK 1358862899,1358862899,NO 1358862900,1358863103,DK -1358863104,1358863359,CH +1358863104,1358863359,EU 1358863360,1358863615,US 1358863616,1358864383,GB 1358864384,1358872575,CH @@ -14415,7 +14040,9 @@ 1358904704,1358904719,MU 1358904720,1358904735,A2 1358904736,1358904767,ZA -1358904768,1358905343,A2 +1358904768,1358905167,A2 +1358905168,1358905183,CD +1358905184,1358905343,A2 1358905344,1358909439,UA 1358909440,1358913535,RU 1358913536,1358917631,CH @@ -14464,9 +14091,9 @@ 1359413248,1359429631,DE 1359429632,1359446015,LT 1359446016,1359462399,DK -1359462400,1359468543,DE -1359468544,1359468799,SG -1359468800,1359470591,DE +1359462400,1359467007,DE +1359467008,1359467263,US +1359467264,1359470591,DE 1359470592,1359478783,CH 1359478784,1359511551,TR 1359511552,1359544319,SE @@ -14491,7 +14118,7 @@ 1360019456,1360023551,FI 1360023552,1360027647,RU 1360027648,1360031743,AT -1360031744,1360039935,RU +1360031744,1360035839,RU 1360039936,1360044031,AT 1360044032,1360048127,SE 1360048128,1360052223,DE @@ -14511,12 +14138,7 @@ 1360113664,1360117759,HU 1360117760,1360121855,FI 1360121856,1360125951,DE -1360125952,1360126975,SI -1360126976,1360127487,HR -1360127488,1360127999,RS -1360128000,1360128511,MK -1360128512,1360129023,SI -1360129024,1360130047,BA +1360125952,1360130047,SI 1360130048,1360134143,IE 1360134144,1360138239,NL 1360138240,1360142335,CH @@ -14531,8 +14153,7 @@ 1360191488,1360195583,FO 1360195584,1360199679,NL 1360199680,1360203775,CZ -1360203776,1360207359,FR -1360207360,1360207871,US +1360203776,1360207871,FR 1360207872,1360210943,CZ 1360210944,1360211199,EU 1360211200,1360211967,CZ @@ -14542,13 +14163,19 @@ 1360228352,1360232447,FI 1360232448,1360236543,RU 1360236544,1360240639,AT -1360240640,1360244735,ES +1360240640,1360242431,ES +1360242432,1360244479,US +1360244480,1360244735,ES 1360244736,1360257023,GB 1360257024,1360265215,DK 1360265216,1360269311,GB 1360269312,1360273407,KG 1360273408,1360281599,GB -1360281600,1360285695,NL +1360281600,1360281727,NL +1360281728,1360281855,ES +1360281856,1360282495,NL +1360282496,1360282623,DE +1360282624,1360285695,NL 1360285696,1360289791,DE 1360289792,1360293887,RU 1360293888,1360302079,DE @@ -14600,7 +14227,9 @@ 1360494592,1360498687,DK 1360498688,1360515071,RU 1360515072,1360519167,GB -1360519168,1360531455,NL +1360519168,1360524031,NL +1360524032,1360524287,US +1360524288,1360531455,NL 1360531456,1360535551,RO 1360535552,1360539647,DE 1360539648,1360543743,NL @@ -14619,7 +14248,7 @@ 1360592896,1360596991,RU 1360596992,1360601087,CZ 1360601088,1360605183,BY -1360605184,1360613375,RU +1360605184,1360609279,RU 1360613376,1360617471,SE 1360617472,1360621567,IT 1360621568,1360625663,ES @@ -14628,7 +14257,9 @@ 1360629760,1360633855,SE 1360633856,1360637951,RU 1360637952,1360642047,FO -1360642048,1360646143,FR +1360642048,1360644735,FR +1360644736,1360644863,IT +1360644864,1360646143,FR 1360646144,1360650239,AT 1360650240,1360654335,UA 1360654336,1360658431,EE @@ -14670,8 +14301,7 @@ 1360822272,1360826367,AT 1360826368,1360830463,GB 1360830464,1360838655,RU -1360838656,1360839167,CH -1360839168,1360842751,FR +1360838656,1360842751,FR 1360842752,1360846847,RU 1360846848,1360850943,DE 1360855040,1360859135,NL @@ -14714,30 +14344,31 @@ 1361042432,1361043455,PL 1361043456,1361051647,IR 1361051648,1362100223,ES -1362100224,1362396415,FR -1362396416,1362396735,US -1362396736,1362398463,FR +1362100224,1362395647,FR +1362395648,1362396159,US +1362396160,1362396415,FR +1362396416,1362396927,US +1362396928,1362397439,FR +1362397440,1362397503,US +1362397504,1362398463,FR 1362398464,1362398719,DE -1362398720,1362403583,FR -1362403584,1362404095,DZ -1362404096,1362404607,FR +1362398720,1362404607,FR 1362404608,1362405887,DZ 1362405888,1362406143,FR 1362406144,1362407167,SV 1362407168,1362411519,FR 1362411520,1362413273,MQ -1362413274,1362414335,FR -1362414336,1362414847,US +1362413274,1362414079,FR +1362414080,1362414847,US 1362414848,1362415103,GB 1362415104,1362415359,FR 1362415360,1362415615,DE 1362415616,1362417663,GP 1362417664,1362419711,SG -1362419712,1362423295,FR -1362423296,1362423807,VE +1362419712,1362423807,FR 1362423808,1362425855,SG -1362425856,1362426495,US -1362426496,1362426879,FR +1362425856,1362426623,US +1362426624,1362426879,FR 1362426880,1362427815,MQ 1362427816,1362755583,FR 1362755584,1362886655,NL @@ -14748,11 +14379,7 @@ 1363673088,1363935231,IT 1363935232,1364197375,GB 1364197376,1364212991,FR -1364212992,1364213119,GF -1364213120,1364213127,FR -1364213128,1364213175,GF -1364213176,1364213183,FR -1364213184,1364213247,GF +1364212992,1364213247,GF 1364213248,1364262911,FR 1364262912,1364328447,IT 1364328448,1364459519,BE @@ -14761,23 +14388,18 @@ 1364525312,1364525567,A2 1364525568,1364526591,NL 1364526592,1364528639,GB -1364528640,1364528895,NL -1364528896,1364529407,GB -1364529408,1364529663,NL -1364529664,1364530175,GB -1364530176,1364577791,NL -1364577792,1364578303,GB -1364578304,1364579839,NL +1364528640,1364575999,NL +1364576000,1364576255,US +1364576256,1364579839,NL 1364579840,1364580095,US 1364580096,1364581375,NL 1364581376,1364582399,LY -1364582400,1364583423,US +1364582400,1364583167,NL +1364583168,1364583423,US 1364583424,1364585727,NL 1364585728,1364585983,CA -1364585984,1364586240,LB -1364586241,1364586495,NL -1364586496,1364586752,LB -1364586753,1364588977,NL +1364585984,1364586239,LB +1364586240,1364588977,NL 1364588978,1364588978,US 1364588979,1364589567,NL 1364589568,1364589823,A2 @@ -14843,7 +14465,9 @@ 1364979712,1364983039,GB 1364983040,1364983295,CH 1364983296,1364983807,GB -1364983808,1364991999,DE +1364983808,1364989439,DE +1364989440,1364989695,US +1364989696,1364991999,DE 1364992000,1364996095,IT 1364996096,1365000191,GR 1365000192,1365004287,SE @@ -14860,11 +14484,10 @@ 1365041152,1365042047,FR 1365042048,1365042055,GB 1365042056,1365044735,FR -1365044736,1365044895,LU -1365044896,1365044903,FR -1365044904,1365044927,LU +1365044736,1365044927,LU 1365044928,1365044935,GR -1365044936,1365045247,LU +1365044936,1365044991,LU +1365044992,1365045247,FR 1365045248,1365047295,AT 1365047296,1365049343,SK 1365049344,1365057535,FR @@ -14888,9 +14511,7 @@ 1365147648,1365155839,RU 1365155840,1365159935,SE 1365159936,1365164031,HU -1365164032,1365166497,GB -1365166498,1365166498,GB -1365166499,1365172223,GB +1365164032,1365172223,GB 1365172224,1365176319,LV 1365176320,1365180415,HU 1365180416,1365184511,DE @@ -14948,8 +14569,8 @@ 1369657344,1369659391,RU 1369659392,1369661439,UA 1369661440,1369665535,RU -1369665536,1369677823,UA -1369677824,1369686015,RU +1369665536,1369677824,UA +1369677825,1369686015,RU 1369686016,1369690111,PL 1369690112,1369694207,UA 1369694208,1369702399,RU @@ -14962,20 +14583,17 @@ 1370095616,1370128383,GB 1370128384,1370161151,SE 1370161152,1370174463,NL -1370174464,1370174591,US -1370174592,1370174719,US -1370174720,1370175487,US +1370174464,1370175487,US 1370175488,1370181887,NL -1370181888,1370182015,NL -1370182016,1370182143,US +1370181888,1370182143,US 1370182144,1370182911,NL -1370182912,1370183167,NL +1370182912,1370183167,US 1370183168,1370185983,NL -1370185984,1370186495,NL +1370185984,1370186495,US 1370186496,1370188799,NL 1370188800,1370189055,US 1370189056,1370189311,NL -1370189312,1370189567,NL +1370189312,1370189567,US 1370189568,1370190847,NL 1370190848,1370191871,DE 1370191872,1370193919,NL @@ -14995,9 +14613,7 @@ 1370619904,1370750975,GB 1370750976,1370767359,RO 1370767360,1370771455,MD -1370771456,1370772479,RO -1370772480,1370772991,MD -1370772992,1370882047,RO +1370771456,1370882047,RO 1370882048,1371013119,HU 1371013120,1371078655,ES 1371078656,1371144191,FR @@ -15020,11 +14636,7 @@ 1371996672,1371996927,GA 1371996928,1371997183,A2 1371997184,1371997439,KE -1371997440,1371997695,A2 -1371997696,1371998207,NG -1371998208,1371998463,A2 -1371998464,1371998719,NG -1371998720,1372000255,A2 +1371997440,1372000255,A2 1372000256,1372004351,UG 1372004352,1372006426,A2 1372006427,1372006427,TZ @@ -15032,16 +14644,13 @@ 1372012544,1372013567,ZM 1372013568,1372020735,A2 1372020736,1372022783,ZM -1372022784,1372025855,A2 -1372025856,1372026367,IL +1372022784,1372026367,A2 1372026368,1372026879,KE 1372026880,1372027903,IL 1372027904,1372043519,A2 1372043520,1372043775,NG -1372043776,1372045567,A2 -1372045568,1372045823,ZM -1372045824,1372060159,A2 -1372060160,1372061695,IL +1372043776,1372060671,A2 +1372060672,1372061695,IL 1372061696,1372069887,RU 1372069888,1372073983,FR 1372073984,1372078079,CZ @@ -15077,30 +14686,20 @@ 1372585984,1372618751,IT 1372618752,1372651519,GB 1372651520,1372684287,FI -1372684288,1372684799,EU -1372684800,1372685311,DE -1372685312,1372688383,EU +1372684288,1372688383,EU 1372688384,1372689407,DE -1372689408,1372689663,EU -1372689664,1372689919,DE -1372689920,1372690431,EU +1372689408,1372690431,EU 1372690432,1372691455,DE -1372691456,1372692223,EU -1372692224,1372692991,DE -1372692992,1372693503,EU -1372693504,1372694015,DE -1372694016,1372695999,EU +1372691456,1372695999,EU 1372696000,1372696007,DK -1372696008,1372696831,EU -1372696832,1372697215,DE -1372697216,1372699135,EU +1372696008,1372699135,EU 1372699136,1372699391,DE -1372699392,1372701183,EU -1372701184,1372701695,DE -1372701696,1372704767,EU +1372699392,1372699903,EU +1372699904,1372700159,DE +1372700160,1372704767,EU 1372704768,1372713983,DE -1372713984,1372714495,EU -1372714496,1372717055,DE +1372713984,1372715007,EU +1372715008,1372717055,DE 1372717056,1372749823,PL 1372749824,1372782591,DE 1372782592,1372815359,RU @@ -15108,9 +14707,7 @@ 1372848128,1373110271,TR 1373110272,1373175807,SE 1373175808,1373241343,AT -1373241344,1373271295,IL -1373271296,1373271551,PS -1373271552,1373306879,IL +1373241344,1373306879,IL 1373306880,1373372415,PL 1373372416,1373437951,FR 1373437952,1373503487,CH @@ -15124,82 +14721,113 @@ 1374683136,1375080959,BE 1375080960,1375081215,EU 1375081216,1375207423,BE -1375207424,1375208447,MQ +1375207424,1375208191,MQ +1375208192,1375208447,FR 1375208448,1375208703,GP -1375208704,1375210239,MQ -1375210240,1375210495,FR -1375210496,1375211263,MQ -1375211264,1375211519,FR -1375211520,1375212799,GP -1375212800,1375213055,FR -1375213056,1375214847,GP -1375214848,1375215103,FR -1375215104,1375215359,GP -1375215360,1375215615,FR -1375215616,1375217919,GF -1375217920,1375218175,FR -1375218176,1375222783,GF -1375222784,1375223039,FR +1375208704,1375208959,MQ +1375208960,1375209215,FR +1375209216,1375210239,MQ +1375210240,1375210495,GP +1375210496,1375210751,FR +1375210752,1375211519,MQ +1375211520,1375212287,GP +1375212288,1375212543,FR +1375212544,1375215615,GP +1375215616,1375216127,GF +1375216128,1375216383,FR +1375216384,1375216639,GF +1375216640,1375216895,FR +1375216896,1375217663,GF +1375217664,1375217919,FR +1375217920,1375218175,GF +1375218176,1375218687,FR +1375218688,1375219455,GF +1375219456,1375219711,FR +1375219712,1375221759,GF +1375221760,1375223039,FR 1375223040,1375223807,GF -1375223808,1375226111,MQ -1375226112,1375227391,FR -1375227392,1375229183,MQ -1375229184,1375229439,FR -1375229440,1375231487,MQ -1375231488,1375231743,FR -1375231744,1375233535,MQ -1375233536,1375234047,FR -1375234048,1375237375,MQ -1375237376,1375237631,FR -1375237632,1375239935,MQ -1375239936,1375240191,FR -1375240192,1375241215,GP -1375241216,1375241471,FR -1375241472,1375241727,GP -1375241728,1375241983,FR -1375241984,1375243263,GP +1375223808,1375224319,MQ +1375224320,1375224575,FR +1375224576,1375225343,MQ +1375225344,1375225599,FR +1375225600,1375225855,MQ +1375225856,1375226111,FR +1375226112,1375226367,MQ +1375226368,1375226879,FR +1375226880,1375227903,MQ +1375227904,1375228159,FR +1375228160,1375230463,MQ +1375230464,1375230719,FR +1375230720,1375230975,MQ +1375230976,1375231231,FR +1375231232,1375231743,MQ +1375231744,1375232255,FR +1375232256,1375232767,MQ +1375232768,1375233023,FR +1375233024,1375234047,MQ +1375234048,1375235071,FR +1375235072,1375235327,MQ +1375235328,1375236607,FR +1375236608,1375237887,MQ +1375237888,1375238399,FR +1375238400,1375240191,MQ +1375240192,1375240703,GP +1375240704,1375241215,FR +1375241216,1375242239,GP +1375242240,1375243007,FR +1375243008,1375243263,GP 1375243264,1375243519,FR 1375243520,1375244543,GP -1375244544,1375244799,FR -1375244800,1375245823,GP -1375245824,1375246079,FR -1375246080,1375247359,GP -1375247360,1375247615,FR -1375247616,1375250431,GP -1375250432,1375250687,FR -1375250688,1375251455,GP -1375251456,1375251967,FR -1375251968,1375252223,GP -1375252224,1375252479,FR -1375252480,1375253503,GP -1375253504,1375253759,FR -1375253760,1375256319,GP +1375244544,1375245055,FR +1375245056,1375245567,GP +1375245568,1375246335,FR +1375246336,1375247103,GP +1375247104,1375247615,FR +1375247616,1375248383,GP +1375248384,1375249151,FR +1375249152,1375250431,GP +1375250432,1375251711,FR +1375251712,1375252223,GP +1375252224,1375252991,FR +1375252992,1375253247,GP +1375253248,1375254271,FR +1375254272,1375254527,GP +1375254528,1375255039,FR +1375255040,1375255551,GP +1375255552,1375255807,FR +1375255808,1375256319,GP 1375256320,1375256575,FR -1375256576,1375260415,RE -1375260416,1375260671,FR -1375260672,1375262207,RE -1375262208,1375262463,FR -1375262464,1375263743,RE -1375263744,1375263999,FR -1375264000,1375266303,RE -1375266304,1375266559,FR -1375266560,1375271423,RE -1375271424,1375271679,FR -1375271680,1375272959,RE -1375272960,1375552511,FR +1375256576,1375256831,RE +1375256832,1375257087,FR +1375257088,1375258623,RE +1375258624,1375258879,FR +1375258880,1375259647,RE +1375259648,1375260927,FR +1375260928,1375261439,RE +1375261440,1375262207,FR +1375262208,1375263743,RE +1375263744,1375264255,FR +1375264256,1375266303,RE +1375266304,1375268095,FR +1375268096,1375268351,RE +1375268352,1375269119,FR +1375269120,1375269631,RE +1375269632,1375269887,FR +1375269888,1375271423,RE +1375271424,1375271935,FR +1375271936,1375272703,RE +1375272704,1375552511,FR 1375552512,1375553535,EU 1375553536,1375705984,FR 1375705985,1375705985,EU 1375705986,1375731711,FR -1375731712,1375844671,GB -1375844672,1375844735,US +1375731712,1375844607,GB +1375844608,1375844735,US 1375844736,1375844767,GB -1375844768,1375844799,US -1375844800,1378718975,GB -1378718976,1378719197,NL +1375844768,1375844863,US +1375844864,1378719197,GB 1378719198,1378719198,EU -1378719199,1378719231,NL -1378719232,1378877439,GB +1378719199,1378877439,GB 1378877440,1379926015,IT 1379926016,1380188159,FR 1380188160,1380450303,GB @@ -15215,23 +14843,15 @@ 1382039552,1382055935,DE 1382055936,1382072319,FR 1382072320,1382088703,RU -1382088704,1382097919,FR -1382097920,1382098431,IT -1382098432,1382105087,FR +1382088704,1382105087,FR 1382105088,1382137855,DE 1382137856,1382154239,RU 1382154240,1382170623,FR -1382170624,1382183423,DE -1382183424,1382183935,LI -1382183936,1382187007,DE +1382170624,1382187007,DE 1382187008,1382203391,ES 1382203392,1382205439,GB -1382205440,1382211583,EU -1382211584,1382211839,FR -1382211840,1382213631,EU -1382213632,1382215679,GB -1382215680,1382216191,NL -1382216192,1382219775,GB +1382205440,1382213631,EU +1382213632,1382219775,GB 1382219776,1382222847,SE 1382222848,1382223103,FI 1382223104,1382252543,SE @@ -15253,16 +14873,10 @@ 1382514688,1382531071,DK 1382531072,1382547455,FI 1382547456,1382809599,IT -1382809600,1382967551,GB -1382967552,1382967807,GB -1382967808,1383071743,GB +1382809600,1383071743,GB 1383071744,1383088127,RU 1383088128,1383096319,IS -1383096320,1383099135,GB -1383099136,1383099175,DE -1383099176,1383099179,GB -1383099180,1383099391,DE -1383099392,1383100159,GB +1383096320,1383100159,GB 1383100160,1383100415,FR 1383100416,1383104511,GB 1383104512,1383112703,JE @@ -15288,18 +14902,17 @@ 1383211008,1383219199,CY 1383219200,1383222271,AL 1383222272,1383222527,RS -1383222528,1383223125,AL -1383223126,1383223126,RS -1383223127,1383223295,AL -1383223296,1383223807,RS -1383223808,1383224063,AL -1383224064,1383224319,RS -1383224320,1383224831,AL -1383224832,1383225599,RS -1383225600,1383225855,AL -1383225856,1383226367,RS -1383226368,1383226879,AL -1383226880,1383227391,RS +1383222528,1383223295,AL +1383223296,1383223551,RS +1383223552,1383224831,AL +1383224832,1383225087,RS +1383225088,1383225855,AL +1383225856,1383226111,RS +1383226112,1383226207,AL +1383226208,1383226239,RS +1383226240,1383226879,AL +1383226880,1383227135,RS +1383227136,1383227391,AL 1383227392,1383243775,RU 1383243776,1383251967,YE 1383251968,1383260159,CZ @@ -15312,12 +14925,10 @@ 1383301120,1383309311,SE 1383309312,1383317503,IT 1383317504,1383321599,SE -1383321600,1383325695,RU 1383325696,1383333887,GB 1383333888,1383350271,RU 1383350272,1383358463,NO -1383358464,1383367167,DE -1383367168,1383367679,KW +1383358464,1383367679,DE 1383367680,1383368703,GB 1383368704,1383368957,DE 1383368958,1383368958,US @@ -15347,7 +14958,13 @@ 1383469056,1383471103,UA 1383471104,1383473151,SE 1383473152,1383481343,DE -1383481344,1383497727,GB +1383481344,1383481599,GB +1383481600,1383481615,US +1383481616,1383481663,GB +1383481664,1383481695,US +1383481696,1383482623,GB +1383482624,1383482879,NL +1383482880,1383497727,GB 1383497728,1383505919,RU 1383505920,1383514111,SA 1383514112,1383522303,FI @@ -15364,7 +14981,9 @@ 1383596032,1384120319,FR 1384120320,1384153087,NG 1384153088,1384185855,FI -1384185856,1384196095,DE +1384185856,1384190975,DE +1384190976,1384191231,DK +1384191232,1384196095,DE 1384196096,1384197119,CZ 1384197120,1384202239,DE 1384202240,1384218623,GB @@ -15391,29 +15010,7 @@ 1384759296,1384775679,SY 1384775680,1384792063,RU 1384792064,1384808447,FR -1384808448,1384809471,EU -1384809472,1384809983,US -1384809984,1384810495,EU -1384810496,1384811007,US -1384811008,1384811519,GB -1384811520,1384813567,EU -1384813568,1384814079,ES -1384814080,1384814591,GB -1384814592,1384815103,BE -1384815104,1384815615,FR -1384815616,1384816127,BE -1384816128,1384816639,EU -1384816640,1384817151,DK -1384817152,1384819199,EU -1384819200,1384819711,GB -1384819712,1384820223,CH -1384820224,1384820735,BE -1384820736,1384821759,EU -1384821760,1384822271,DK -1384822272,1384822783,ES -1384822784,1384823295,BE -1384823296,1384823807,CH -1384823808,1384824831,EU +1384808448,1384824831,EU 1384824832,1384841215,GB 1384841216,1384857599,PL 1384857600,1384873983,NL @@ -15448,8 +15045,8 @@ 1385259008,1385267199,IT 1385267200,1385275391,SE 1385275392,1385283583,IT -1385283584,1385285631,DE -1385285632,1385287679,GB +1385283584,1385286143,DE +1385286144,1385287679,GB 1385287680,1385291775,EU 1385291776,1385299967,TR 1385299968,1385308159,BG @@ -15490,21 +15087,17 @@ 1385545728,1385553919,RU 1385553920,1385562111,DE 1385562112,1385562367,ES -1385562368,1385566719,EU -1385566720,1385566975,FR -1385566976,1385567202,EU -1385567203,1385567203,FR -1385567204,1385567231,EU +1385562368,1385566975,EU +1385566976,1385567231,FR 1385567232,1385568255,IE -1385568256,1385569791,EU -1385569792,1385570303,FR +1385568256,1385570303,EU 1385570304,1385578495,HU 1385578496,1385580543,TR 1385580544,1385580799,DK 1385580800,1385586687,TR -1385586688,1385588223,GB -1385588224,1385588479,US -1385588480,1385594879,GB +1385586688,1385587967,GB +1385587968,1385588223,US +1385588224,1385594879,GB 1385594880,1385603071,NL 1385603072,1385611263,CZ 1385611264,1385619455,AT @@ -15519,31 +15112,18 @@ 1385684992,1385824255,GB 1385824256,1385955327,PT 1385955328,1386086399,NL -1386086400,1386217279,ES -1386217280,1386217343,NO -1386217344,1386217471,ES +1386086400,1386217471,ES 1386217472,1386283007,PL 1386283008,1386348543,NL 1386348544,1386414079,RU 1386414080,1386479615,GB 1386479616,1386545151,NO -1386545152,1386549759,DE -1386549760,1386550271,ES -1386550272,1386586111,DE -1386586112,1386586623,GB -1386586624,1386587135,FR -1386587136,1386587647,IT -1386587648,1386590207,DE -1386590208,1386590719,GB -1386590720,1386602495,DE -1386602496,1386610687,US +1386545152,1386610687,DE 1386610688,1386676223,IL 1386676224,1386741759,SA 1386741760,1387249663,NL 1387249664,1387250687,BE -1387250688,1387251455,NL -1387251456,1387251711,BE -1387251712,1387331583,NL +1387250688,1387331583,NL 1387331584,1387397119,PL 1387397120,1387462655,OM 1387462656,1387528191,RU @@ -15564,8 +15144,8 @@ 1388389168,1388390143,NG 1388390144,1388390167,IT 1388390168,1388394495,NG -1388394496,1388396031,IT -1388396032,1388396543,NG +1388394496,1388395519,IT +1388395520,1388396543,NG 1388396544,1388404735,LV 1388404736,1388412927,UA 1388412928,1388421119,RU @@ -15586,15 +15166,12 @@ 1388544000,1388552191,IE 1388552192,1388560383,GB 1388560384,1388568575,FI -1388568576,1388570841,CH -1388570842,1388570842,CH -1388570843,1388576767,CH +1388568576,1388576767,CH 1388576768,1388580863,NL 1388580864,1388584959,FR -1388584960,1388585983,GB -1388585984,1388587519,EU -1388587520,1388588031,GB -1388588032,1388588287,EU +1388584960,1388587519,EU +1388587520,1388587775,GB +1388587776,1388588287,EU 1388588288,1388588543,GB 1388588544,1388588799,EU 1388588800,1388589823,GB @@ -15612,50 +15189,53 @@ 1388642304,1388650495,FI 1388650496,1388658687,PL 1388658688,1388666879,GB -1388666880,1388667391,RE -1388667392,1388675071,FR -1388675072,1388675583,EU -1388675584,1388676607,DE -1388676608,1388678143,EU +1388666880,1388668159,FR +1388668160,1388668671,RE +1388668672,1388675071,FR +1388675072,1388678143,EU 1388678144,1388679167,DE -1388679168,1388679679,EU -1388679680,1388680703,DE -1388680704,1388682751,EU -1388682752,1388683263,DE -1388683264,1388691455,CH +1388679168,1388683263,EU +1388683264,1388685599,CH +1388685600,1388685631,GB +1388685632,1388688127,CH +1388688128,1388688159,NL +1388688160,1388691455,CH 1388691456,1388699647,NL 1388699648,1388707839,SE -1388707840,1388708607,LB -1388708608,1388711679,RU +1388707840,1388708095,LB +1388708096,1388711679,RU 1388711680,1388711935,LB 1388711936,1388714239,RU 1388714240,1388714495,LB 1388714496,1388715007,RU 1388715008,1388715263,LB -1388715264,1388715775,RU -1388715776,1388716031,LB +1388715264,1388716031,RU 1388716032,1388724223,ES 1388724224,1388732415,DE 1388732416,1388740607,ES -1388740608,1388741375,GB -1388741376,1388741631,IE -1388741632,1388741887,GB -1388741888,1388742143,IE -1388742144,1388743167,GB -1388743168,1388743423,IE -1388743424,1388743679,GB -1388743680,1388744191,IE -1388744192,1388744959,GB -1388744960,1388745215,IE -1388745216,1388745471,GB -1388745472,1388745727,IE -1388745728,1388746623,GB -1388746624,1388746655,IE -1388746656,1388746911,GB +1388740608,1388741791,GB +1388741792,1388741795,IE +1388741796,1388743015,GB +1388743016,1388743023,IE +1388743024,1388743047,GB +1388743048,1388743055,IE +1388743056,1388743423,GB +1388743424,1388743435,IE +1388743436,1388743679,GB +1388743680,1388743935,IE +1388743936,1388744391,GB +1388744392,1388744395,IE +1388744396,1388744759,GB +1388744760,1388744767,IE +1388744768,1388744831,GB +1388744832,1388744847,IE +1388744848,1388745971,GB +1388745972,1388745975,IE +1388745976,1388746495,GB +1388746496,1388746559,IE +1388746560,1388746911,GB 1388746912,1388746927,IE -1388746928,1388747007,GB -1388747008,1388747263,IE -1388747264,1388748799,GB +1388746928,1388748799,GB 1388748800,1388756991,RU 1388756992,1388765183,DE 1388765184,1388773375,GB @@ -15668,8 +15248,8 @@ 1388796683,1388797951,NL 1388797952,1388806143,RU 1388806144,1388814335,DE -1388814336,1388821503,AX -1388821504,1388822527,SE +1388814336,1388822015,AX +1388822016,1388822527,SE 1388822528,1388830719,AM 1388830720,1388838911,FI 1388838912,1388871679,RU @@ -15687,37 +15267,29 @@ 1389199872,1389200159,US 1389200160,1389210627,A2 1389210628,1389210631,US -1389210632,1389214719,A2 -1389214720,1389215743,LY -1389215744,1389218303,A2 -1389218304,1389219839,AF +1389210632,1389217023,A2 +1389217024,1389217535,US +1389217536,1389218815,A2 +1389218816,1389219839,AF 1389219840,1389223935,A2 1389223936,1389224191,US -1389224192,1389231359,A2 +1389224192,1389228415,A2 +1389228416,1389228479,LB +1389228480,1389231359,A2 1389231360,1389231615,EU 1389231616,1389232127,A2 -1389232128,1389264127,DE -1389264128,1389264639,ES -1389264640,1389264895,DE +1389232128,1389264895,DE 1389264896,1389265151,TZ 1389265152,1389266957,A2 1389266958,1389266958,NG -1389266959,1389268481,A2 -1389268482,1389268482,US -1389268483,1389268863,A2 +1389266959,1389268863,A2 1389268864,1389268871,KE 1389268872,1389275647,A2 1389275648,1389275903,ZA -1389275904,1389281791,A2 -1389281792,1389282047,ZA -1389282048,1389288447,A2 +1389275904,1389288447,A2 1389288448,1389289471,GN 1389289472,1389290495,NO -1389290496,1389295103,A2 -1389295104,1389295359,US -1389295360,1389295573,A2 -1389295574,1389295574,US -1389295575,1389297663,A2 +1389290496,1389297663,A2 1389297664,1389330431,UA 1389330432,1389363199,DE 1389363200,1389379583,CZ @@ -15728,9 +15300,7 @@ 1389445120,1389461503,RU 1389461504,1389477887,SE 1389477888,1389494271,BY -1389494272,1389504511,DE -1389504512,1389505023,FR -1389505024,1389510655,DE +1389494272,1389510655,DE 1389510656,1389527039,NL 1389527040,1389543423,PL 1389543424,1389557247,DE @@ -15755,11 +15325,9 @@ 1389707264,1389723647,IT 1389723648,1389756415,ES 1389756416,1389772799,SE -1389772800,1389778431,SI -1389778432,1389780479,RS -1389780480,1389780991,SI -1389780992,1389782527,HR -1389782528,1389783039,SI +1389772800,1389780991,SI +1389780992,1389782015,HR +1389782016,1389783039,SI 1389783040,1389785087,BA 1389785088,1389787135,MK 1389787136,1389789183,SI @@ -15787,18 +15355,11 @@ 1390149632,1390215167,CH 1390215168,1390280703,IS 1390280704,1390346239,TR -1390346240,1390394367,ES -1390394368,1390394879,PT -1390394880,1390395391,ES -1390395392,1390396415,FR -1390396416,1390396927,PT -1390396928,1390411775,ES +1390346240,1390411775,ES 1390411776,1392508927,FR 1392508928,1394606079,PL 1394606080,1396703231,ES -1396703232,1396776476,AT -1396776477,1396776477,AT -1396776478,1396834303,AT +1396703232,1396834303,AT 1396834304,1396899839,TR 1396899840,1396965375,GB 1396965376,1396973567,NL @@ -15820,9 +15381,7 @@ 1397751808,1398276095,NL 1398276096,1398800383,DK 1398800384,1398817279,KW -1398817280,1398817343,US -1398817344,1398817407,KW -1398817408,1398817535,US +1398817280,1398817535,US 1398817536,1398833151,KW 1398833152,1398865919,NL 1398865920,1398867967,RU @@ -15837,13 +15396,10 @@ 1398888448,1398890495,GB 1398890496,1398892543,DK 1398892544,1398894591,RU -1398894592,1398896639,DE 1398896640,1398898687,CH 1398898688,1398931455,ES 1398931456,1398964223,GB -1398964224,1398983679,NL -1398983680,1398984191,US -1398984192,1398996991,NL +1398964224,1398996991,NL 1398996992,1399029759,LU 1399029760,1399062527,LV 1399062528,1399095295,FI @@ -15859,25 +15415,23 @@ 1399717888,1399848959,AE 1399848960,1400111103,FR 1400111104,1400373247,NL -1400373248,1400701951,DE -1400701952,1400702207,EU -1400702208,1400705023,DE -1400705024,1400705791,EU -1400705792,1400707071,DE -1400707072,1400708095,EU -1400708096,1400708607,DE -1400708608,1400709120,EU +1400373248,1400702463,DE +1400702464,1400702975,EU +1400702976,1400705023,DE +1400705024,1400706047,EU +1400706048,1400707071,DE +1400707072,1400709120,EU 1400709121,1400710142,DE 1400710143,1400711167,EU 1400711168,1400712191,DE 1400712192,1400713215,EU 1400713216,1400718335,DE 1400718336,1400719359,EU -1400719360,1400722431,DE -1400722432,1400729599,EU +1400719360,1400721407,DE +1400721408,1400729599,EU 1400729600,1400730623,DE -1400730624,1400731135,EU -1400731136,1400733695,DE +1400730624,1400731647,EU +1400731648,1400733695,DE 1400733696,1400897535,EU 1400897536,1400963071,NL 1400963072,1401028607,DE @@ -15885,16 +15439,10 @@ 1401094144,1401159679,HR 1401159680,1401225215,PT 1401225216,1401241599,DE -1401241600,1401243135,EU -1401243136,1401244159,DE -1401244160,1401246719,EU +1401241600,1401246719,EU 1401246720,1401257983,DE -1401257984,1401264127,EU -1401264128,1401264639,DE -1401264640,1401265151,EU -1401265152,1401265663,DE -1401265664,1401270271,EU -1401270272,1401273343,DE +1401257984,1401271295,EU +1401271296,1401273343,DE 1401273344,1401273855,EU 1401273856,1401274111,DE 1401274112,1401278463,EU @@ -15963,10 +15511,9 @@ 1401544704,1401546751,GB 1401546752,1401548799,IT 1401548800,1401550847,FR -1401550848,1401551015,JE -1401551016,1401551023,GB -1401551024,1401551103,JE -1401551104,1401551871,GB +1401550848,1401551359,GB +1401551360,1401551615,JE +1401551616,1401551871,GB 1401551872,1401552383,JE 1401552384,1401552895,GB 1401552896,1401554943,NL @@ -16063,7 +15610,9 @@ 1402224640,1402241023,BG 1402241024,1402257407,GB 1402257408,1402273791,FI -1402273792,1402290175,RU +1402273792,1402277631,RU +1402277632,1402277887,TJ +1402277888,1402290175,RU 1402290176,1402306559,NL 1402306560,1402322943,IT 1402322944,1402339327,RU @@ -16075,17 +15624,10 @@ 1402408960,1402413055,DE 1402413056,1402417151,PL 1402417152,1402421247,DE -1402421248,1402422783,FR -1402422784,1402423295,GB -1402423296,1402423807,BE -1402423808,1402424319,FR -1402424320,1402425855,GB -1402425856,1402426367,FR -1402426368,1402429439,GB -1402429440,1402431487,US -1402431488,1402433535,GB -1402433536,1402434047,FR -1402434048,1402437631,GB +1402421248,1402422271,FR +1402422272,1402429439,GB +1402429440,1402430463,US +1402430464,1402437631,GB 1402437632,1402454015,DK 1402454016,1402470399,GB 1402470400,1402994687,FR @@ -16145,74 +15687,106 @@ 1404043264,1404051455,EE 1404051456,1404059647,HR 1404059648,1404076031,NO -1404076032,1404076543,EE -1404076544,1404081663,LV -1404081664,1404083711,DE -1404083712,1404084223,EE +1404076032,1404077055,EE +1404077056,1404081151,LV +1404081152,1404082175,EE +1404082176,1404083199,DE +1404083200,1404084223,EE 1404084224,1404092415,NO -1404092416,1404099327,SE -1404099328,1404099583,EE -1404099584,1404104191,SE -1404104192,1404104447,EE -1404104448,1404108799,SE +1404092416,1404094463,SE +1404094464,1404094975,EE +1404094976,1404095999,SE +1404096000,1404096511,EE +1404096512,1404098815,SE +1404098816,1404099839,EE +1404099840,1404100095,SE +1404100096,1404100351,EE +1404100352,1404102655,SE +1404102656,1404102911,EE +1404102912,1404103167,SE +1404103168,1404104703,EE +1404104704,1404107775,SE +1404107776,1404108287,EE +1404108288,1404108799,SE 1404108800,1404112895,NL 1404112896,1404114943,HR -1404114944,1404116991,SE +1404114944,1404115199,EE +1404115200,1404116735,SE +1404116736,1404116991,EE 1404116992,1404125183,NO -1404125184,1404135423,SE -1404135424,1404137471,EE +1404125184,1404127743,SE +1404127744,1404127999,EE +1404128000,1404135423,SE +1404135424,1404137471,NL 1404137472,1404139519,SE -1404139520,1404141567,EE -1404141568,1404142079,SE -1404142080,1404142335,EE -1404142336,1404151807,SE -1404151808,1404152063,EE -1404152064,1404163071,SE -1404163072,1404163327,EE -1404163328,1404163839,SE -1404163840,1404164095,EE -1404164096,1404164351,SE -1404164352,1404164607,EE -1404164608,1404166143,SE +1404139520,1404141567,NL +1404141568,1404142335,EE +1404142336,1404145663,SE +1404145664,1404146943,EE +1404146944,1404147455,SE +1404147456,1404147967,EE +1404147968,1404148479,SE +1404148480,1404148735,EE +1404148736,1404148991,SE +1404148992,1404149759,EE +1404149760,1404151807,SE +1404151808,1404152319,EE +1404152320,1404153343,SE +1404153344,1404153599,EE +1404153600,1404159999,SE +1404160000,1404160255,EE +1404160256,1404160511,SE +1404160512,1404160767,EE +1404160768,1404162303,SE +1404162304,1404165119,EE +1404165120,1404166143,SE 1404166144,1404174335,LV 1404174336,1404184063,SE 1404184064,1404184575,EE 1404184576,1404186623,SE 1404186624,1404187647,EE 1404187648,1404188671,SE -1404188672,1404189183,LT -1404189184,1404190719,EE +1404188672,1404190719,EE 1404190720,1404192767,SE 1404192768,1404194815,LV -1404194816,1404195839,LT -1404195840,1404196095,NO -1404196096,1404196351,EE -1404196352,1404197375,LT -1404197376,1404197887,EE -1404197888,1404198911,LT +1404194816,1404198911,LT 1404198912,1404200959,SE 1404200960,1404203007,NL 1404203008,1404207103,HR -1404207104,1404210175,NO +1404207104,1404209151,LV +1404209152,1404210175,NO 1404210176,1404212223,LV 1404212224,1404215295,SE 1404215296,1404219391,LV 1404219392,1404220415,SE 1404220416,1404221439,EE 1404221440,1404222463,RU -1404222464,1404222975,LV +1404222464,1404222975,EE 1404222976,1404225535,SE 1404225536,1404227071,RU -1404227072,1404231679,LV +1404227072,1404227583,EE +1404227584,1404231679,LV 1404231680,1404232191,EE 1404232192,1404232703,NO -1404232704,1404233215,LV +1404232704,1404233215,EE 1404233216,1404234239,SE 1404234240,1404234751,EE 1404234752,1404235775,HR -1404235776,1404242687,SE +1404235776,1404240895,SE +1404240896,1404241919,EE +1404241920,1404242175,SE +1404242176,1404242394,EE +1404242395,1404242395,SE +1404242396,1404242431,EE +1404242432,1404242687,SE 1404242688,1404242943,EE -1404242944,1404256255,SE +1404242944,1404248063,SE +1404248064,1404248319,EE +1404248320,1404248575,SE +1404248576,1404248831,EE +1404248832,1404249855,SE +1404249856,1404250111,EE +1404250112,1404256255,SE 1404256256,1404305407,RU 1404305408,1404313599,EE 1404313600,1404321791,HR @@ -16221,20 +15795,38 @@ 1404340224,1404342271,HR 1404342272,1404370943,SE 1404370944,1404371199,EE -1404371200,1404379135,SE +1404371200,1404374271,SE +1404374272,1404374527,EE +1404374528,1404375807,SE +1404375808,1404376831,EE +1404376832,1404377599,SE +1404377600,1404378111,EE +1404378112,1404379135,SE 1404379136,1404383231,AT 1404383232,1404385279,HR 1404385280,1404386047,LT 1404386048,1404387327,SE -1404387328,1404395519,DE -1404395520,1404415999,LT -1404416000,1404420095,EE +1404387328,1404420095,LT 1404420096,1404436479,RU -1404436480,1404524543,SE -1404524544,1404526591,LV +1404436480,1404522495,SE +1404522496,1404526591,LV 1404526592,1404538879,SE 1404538880,1404542975,LV -1404542976,1404559359,SE +1404542976,1404551167,SE +1404551168,1404551423,EE +1404551424,1404552703,SE +1404552704,1404552959,EE +1404552960,1404553215,SE +1404553216,1404553471,EE +1404553472,1404554239,SE +1404554240,1404555007,EE +1404555008,1404555519,SE +1404555520,1404556543,EE +1404556544,1404557055,SE +1404557056,1404557311,EE +1404557312,1404557567,SE +1404557568,1404558847,EE +1404558848,1404559359,SE 1404559360,1404563455,LV 1404563456,1404567551,SE 1404567552,1404583935,HR @@ -16244,16 +15836,15 @@ 1404645888,1404677888,SE 1404677889,1404678143,EE 1404678144,1404764159,SE -1404764160,1404768255,NL -1404768256,1404768511,EE -1404768512,1404780543,NL +1404764160,1404780543,NL 1404780544,1404796927,SE 1404796928,1404801023,EE 1404801024,1404802047,SE -1404802048,1404803071,EE -1404803072,1404804095,LV +1404802048,1404803327,EE +1404803328,1404804095,LV 1404804096,1404804351,EE -1404804352,1404805119,SE +1404804352,1404804607,SE +1404804608,1404805119,EE 1404805120,1404813311,AT 1404813312,1404815871,EE 1404815872,1404816383,LT @@ -16263,36 +15854,56 @@ 1404870656,1404872703,LT 1404872704,1404874751,SE 1404874752,1404875775,LV -1404875776,1404876799,LT +1404875776,1404876799,EE 1404876800,1404895231,SE -1404895232,1404927999,DE +1404895232,1404904959,NL +1404904960,1404905215,DE +1404905216,1404911359,NL +1404911360,1404911615,DE +1404911616,1404919807,NL +1404919808,1404927999,EE 1404928000,1404944383,SE 1404944384,1404960767,LT 1404960768,1405026303,SE 1405026304,1405042687,NO -1405042688,1405044223,SE -1405044224,1405044735,EE -1405044736,1405048831,SE +1405042688,1405043711,SE +1405043712,1405043967,EE +1405043968,1405044223,SE +1405044224,1405044479,EE +1405044480,1405046783,SE +1405046784,1405047807,EE +1405047808,1405048831,SE 1405048832,1405050879,HR 1405050880,1405059071,AT -1405059072,1405060607,SE -1405060608,1405060863,EE -1405060864,1405062655,SE +1405059072,1405059583,SE +1405059584,1405061119,EE +1405061120,1405062143,SE +1405062144,1405062399,EE +1405062400,1405062655,SE 1405062656,1405062911,EE 1405062912,1405063167,SE 1405063168,1405067263,NO -1405067264,1405075455,DE -1405075456,1405083647,EE -1405083648,1405086719,SE +1405067264,1405084159,EE +1405084160,1405084415,SE +1405084416,1405085951,EE +1405085952,1405086207,SE +1405086208,1405086463,EE +1405086464,1405086719,SE 1405086720,1405086975,EE -1405086976,1405091839,SE +1405086976,1405087743,SE +1405087744,1405087999,EE +1405088000,1405088255,SE +1405088256,1405089023,EE +1405089024,1405089791,SE +1405089792,1405090047,EE +1405090048,1405090303,SE +1405090304,1405090559,EE +1405090560,1405091839,SE 1405091840,1406140415,FR 1406140416,1406205951,CZ 1406205952,1406271487,SE 1406271488,1406337023,IE -1406337024,1406376703,IT -1406376704,1406376959,US -1406376960,1406402559,IT +1406337024,1406402559,IT 1406402560,1406468095,GR 1406468096,1406533631,ES 1406533632,1406599167,FR @@ -16303,17 +15914,9 @@ 1406689280,1406697471,SE 1406697472,1406705663,GB 1406705664,1406708735,IT -1406708736,1406709247,A2 -1406709248,1406710271,IT -1406710272,1406710783,A2 -1406710784,1406710927,IT -1406710928,1406711295,A2 -1406711296,1406712831,IT -1406712832,1406713343,A2 -1406713344,1406713855,IT -1406713856,1406716927,NL -1406716928,1406717439,AT -1406717440,1406717951,NL +1406708736,1406709759,A2 +1406709760,1406713855,IT +1406713856,1406717951,AT 1406717952,1406719487,GB 1406719488,1406719743,AT 1406719744,1406719999,GB @@ -16323,28 +15926,38 @@ 1406730240,1406746623,RU 1406746624,1406754815,BE 1406754816,1406763007,GB -1406763008,1406769151,LU -1406769152,1406769407,BE -1406769408,1406769663,LU -1406769664,1406769919,BE -1406769920,1406771199,LU +1406763008,1406763263,BE +1406763264,1406764031,LU +1406764032,1406764287,BE +1406764288,1406765567,LU +1406765568,1406765823,BE +1406765824,1406766079,LU +1406766080,1406766335,BE +1406766336,1406766847,LU +1406766848,1406767103,BE +1406767104,1406767359,LU +1406767360,1406767615,BE +1406767616,1406767871,LU +1406767872,1406768127,BE +1406768128,1406768639,LU +1406768640,1406768895,BE +1406768896,1406769151,LU +1406769152,1406769919,BE +1406769920,1406770943,LU +1406770944,1406771199,BE 1406771200,1406779391,GB 1406779392,1406787583,RU -1406787584,1406789631,ES -1406789632,1406789887,FR -1406789888,1406792703,ES -1406792704,1406792959,FR -1406792960,1406793843,ES +1406787584,1406791167,ES +1406791168,1406791295,GB +1406791296,1406792719,ES +1406792720,1406792735,GB +1406792736,1406793843,ES 1406793844,1406793847,GB 1406793848,1406794751,ES 1406794752,1406795775,NL -1406795776,1406797823,IM -1406797824,1406798591,GB -1406798592,1406798847,IM -1406798848,1406802175,GB -1406802176,1406802431,IM -1406802432,1406802943,GB -1406802944,1406803967,IM +1406795776,1406797055,GB +1406797056,1406797311,IM +1406797312,1406803967,GB 1406803968,1406812159,DE 1406812160,1406820351,SE 1406820352,1406828543,PL @@ -16360,8 +15973,7 @@ 1406894080,1406902271,RU 1406902272,1406910463,AT 1406910464,1406918655,SE -1406918656,1406926335,RU -1406926336,1406926847,DE +1406918656,1406926847,RU 1406926848,1406935039,IT 1406935040,1406951423,RU 1406951424,1406959615,PL @@ -16400,21 +16012,29 @@ 1407320064,1407451135,SE 1407451136,1407483903,BG 1407483904,1407516671,CH -1407516672,1407522303,GB -1407522304,1407522559,A2 -1407522560,1407529178,GB +1407516672,1407523871,A2 +1407523872,1407523879,SS +1407523880,1407525895,A2 +1407525896,1407525903,SS +1407525904,1407526231,A2 +1407526232,1407526239,CD +1407526240,1407526823,A2 +1407526824,1407526831,SS +1407526832,1407528959,A2 +1407528960,1407529178,US 1407529179,1407529180,NG -1407529181,1407532799,GB -1407532800,1407533055,US -1407533056,1407534365,GB +1407529181,1407529215,US +1407529216,1407531111,A2 +1407531112,1407531119,SS +1407531120,1407531551,A2 +1407531552,1407531559,SS +1407531560,1407534365,A2 1407534366,1407534366,NG -1407534367,1407535103,GB -1407535104,1407535615,GA -1407535616,1407536127,GB -1407536128,1407536639,GA -1407536640,1407547391,GB -1407547392,1407547903,NG -1407547904,1407549439,GB +1407534367,1407534831,A2 +1407534832,1407534839,SS +1407534840,1407537087,A2 +1407537088,1407537095,GH +1407537096,1407549439,A2 1407549440,1407582207,RU 1407582208,1407614975,PL 1407614976,1407680511,ES @@ -16453,14 +16073,13 @@ 1408458752,1408460799,GB 1408460800,1408462847,PL 1408462848,1408464895,DE -1408464896,1408466943,RO 1408466944,1408499711,NO 1408499712,1408532479,PS -1408532480,1408579583,GB +1408532480,1408567919,GB +1408567920,1408567927,IE +1408567928,1408579583,GB 1408579584,1408579839,IE -1408579840,1408584191,GB -1408584192,1408584703,IE -1408584704,1408597503,GB +1408579840,1408597503,GB 1408597504,1408598015,IE 1408598016,1408630783,FI 1408630784,1408634879,RO @@ -16469,31 +16088,24 @@ 1408696320,1408729087,NL 1408729088,1408761855,ES 1408761856,1409286143,SE -1409286144,1409362431,HU -1409362432,1409362943,BG -1409362944,1409363455,HU -1409363456,1409363967,BG +1409286144,1409363199,HU +1409363200,1409363967,BG 1409363968,1409378679,HU 1409378680,1409378687,RO 1409378688,1409413119,HU -1409413120,1409413375,BG -1409413376,1409413631,HU -1409413632,1409415167,BG -1409415168,1409430271,HU +1409413120,1409414655,BG +1409414656,1409430271,HU 1409430272,1409430783,RO 1409430784,1409548287,HU 1409548288,1409810431,FR 1409810432,1409941503,GB 1409941504,1410007039,PL -1410007040,1410008831,A2 -1410008832,1410009087,US -1410009088,1410009599,A2 -1410009600,1410010111,US -1410010112,1410011135,A2 -1410011136,1410011647,DE -1410011648,1410017535,A2 +1410007040,1410011135,A2 +1410011136,1410011391,DE +1410011392,1410017535,A2 1410017536,1410017791,US -1410017792,1410042367,A2 +1410017792,1410017792,DE +1410017793,1410042367,A2 1410042368,1410042623,US 1410042624,1410043169,A2 1410043170,1410043171,US @@ -16564,9 +16176,8 @@ 1410727936,1410736127,BG 1410736128,1410744319,RS 1410744320,1410748415,A2 -1410748416,1410758655,DE -1410758656,1410759167,AQ -1410759168,1410760703,DE +1410748416,1410752511,DE +1410752512,1410760703,NL 1410760704,1410768895,RU 1410768896,1410777087,GB 1410777088,1410785279,RU @@ -16583,7 +16194,9 @@ 1411383296,1411448831,LT 1411448832,1411449727,IT 1411449728,1411449791,DE -1411449792,1411481855,IT +1411449792,1411450303,IT +1411450304,1411450367,DE +1411450368,1411481855,IT 1411481856,1411483903,DE 1411483904,1411514367,IT 1411514368,1411579903,FI @@ -16619,7 +16232,6 @@ 1411883008,1411887103,PL 1411887104,1411889151,IR 1411889152,1411891199,IT -1411891200,1411892223,IQ 1411895296,1411899391,SI 1411899392,1411901439,ES 1411901440,1411903487,IE @@ -16630,15 +16242,9 @@ 1411919872,1411923967,DE 1411923968,1411940351,BG 1411940352,1411973119,PL -1411973120,1411999999,SI -1412000000,1412000511,BA -1412000512,1412001791,SI -1412001792,1412002303,RO -1412002304,1412002815,SI +1411973120,1412002815,SI 1412002816,1412003839,BA -1412003840,1412004351,BG -1412004352,1412004863,BA -1412004864,1412005887,SI +1412003840,1412005887,SI 1412005888,1412038655,NL 1412038656,1412071423,RU 1412071424,1412104191,CZ @@ -16652,14 +16258,12 @@ 1412366336,1412399103,SK 1412399104,1412415487,RU 1412415488,1412416511,AE -1412416512,1412420095,IR -1412420096,1412420607,AE -1412420608,1412423679,IR -1412423680,1412427775,AE -1412427776,1412431871,IR +1412416512,1412431871,IR 1412431872,1412562943,NO 1412562944,1412628479,EE -1412628480,1412644863,TR +1412628480,1412641791,TR +1412641792,1412642815,DE +1412642816,1412644863,TR 1412644864,1412661247,RU 1412661248,1412677631,GB 1412677632,1412685823,RU @@ -16689,9 +16293,7 @@ 1412923392,1412939775,FR 1412939776,1412956159,CH 1412956160,1413480447,DE -1413480448,1413578751,GB -1413578752,1413586943,IN -1413586944,1414004735,GB +1413480448,1414004735,GB 1414004736,1414069218,CH 1414069219,1414069219,AT 1414069220,1414266879,CH @@ -16733,10 +16335,8 @@ 1422786560,1422852095,HU 1422852096,1422857087,EU 1422857088,1422857151,FR -1422857152,1422911231,EU -1422911232,1422911487,NL -1422911488,1422917119,EU -1422917120,1422917375,GB +1422857152,1422916863,EU +1422916864,1422917375,GB 1422917376,1422917631,EU 1422917632,1423441919,NO 1423441920,1423704063,SE @@ -16752,38 +16352,23 @@ 1424503716,1424523263,ES 1424523264,1424556031,RO 1424556032,1424588799,EG -1424588800,1424589055,DE -1424589056,1424592639,GB -1424592640,1424592895,FR -1424592896,1424594431,GB -1424594432,1424594687,IE -1424594688,1424595711,GB -1424595712,1424595967,IT -1424595968,1424597069,GB +1424588800,1424595743,GB +1424595744,1424595775,IT +1424595776,1424597069,GB 1424597070,1424597070,CZ 1424597071,1424600575,GB 1424600576,1424600831,FR 1424600832,1424602879,GB 1424602880,1424603135,US -1424603136,1424604415,GB -1424604416,1424604463,NL -1424604464,1424604671,GB +1424603136,1424604671,GB 1424604672,1424604927,EU -1424604928,1424606463,GB -1424606464,1424606719,IT -1424606720,1424609063,GB -1424609064,1424609064,DE -1424609065,1424610815,GB -1424610816,1424611071,FR -1424611072,1424613887,GB -1424613888,1424614143,IT -1424614144,1424614513,GB -1424614514,1424614514,IT -1424614515,1424615679,GB +1424604928,1424607743,GB +1424607744,1424607775,DE +1424607776,1424615679,GB 1424615680,1424615935,IT -1424615936,1424617343,GB -1424617344,1424617351,IT -1424617352,1424621567,GB +1424615936,1424617215,GB +1424617216,1424617231,IT +1424617232,1424621567,GB 1424621568,1424625663,PL 1424625664,1424629759,GB 1424629760,1424633855,PL @@ -16800,23 +16385,17 @@ 1424722432,1424723199,CZ 1424723200,1424724991,DE 1424724992,1424727039,GB -1424727040,1424727551,DE -1424727552,1424728063,PL -1424728064,1424728319,DE +1424727040,1424728319,DE 1424728320,1424729855,FR 1424729856,1424730879,DE 1424730880,1424733183,IE 1424733184,1424733951,NL 1424733952,1424735103,SE -1424735104,1424736383,DE -1424736384,1424736895,FR -1424736896,1424738815,DE +1424735104,1424738815,DE 1424738816,1424739583,SE 1424739584,1424746495,DE 1424746496,1424749055,IE -1424749056,1424751615,DE -1424751616,1424752127,IE -1424752128,1424752639,DE +1424749056,1424752639,DE 1424752640,1424785407,HU 1424785408,1424818175,ES 1424818176,1424850943,RU @@ -16876,11 +16455,9 @@ 1425489664,1425506303,RO 1425506304,1425522687,NO 1425522688,1425539071,IT -1425539072,1425712895,FI -1425712896,1425713151,AX -1425713152,1425801215,FI +1425539072,1425801215,FI 1425801216,1425817599,BG -1425829888,1425833983,DE +1425817600,1425833983,DE 1425833984,1425850367,RU 1425850368,1425866751,GB 1425866752,1425883135,CH @@ -16889,17 +16466,11 @@ 1425915904,1425932287,FI 1425932288,1425948671,GR 1425948672,1425965055,DE -1425965056,1425967871,EU -1425967872,1425968383,DZ -1425968384,1425970175,EU +1425965056,1425970175,EU 1425970176,1425970431,FR 1425970432,1425971967,EU 1425971968,1425972223,A2 -1425972224,1425976831,EU -1425976832,1425977342,GB -1425977343,1425977343,EU -1425977344,1425977855,IT -1425977856,1425980415,EU +1425972224,1425980415,EU 1425980416,1425980671,IQ 1425980672,1425981439,A2 1425981440,1425997823,RU @@ -16931,7 +16502,9 @@ 1426915328,1426931711,AT 1426931712,1426948095,CZ 1426948096,1426964479,DE -1426964480,1426980863,GB +1426964480,1426967287,GB +1426967288,1426967295,ES +1426967296,1426980863,GB 1426980864,1426997247,BG 1426997248,1427013631,PL 1427013632,1427030015,FR @@ -16950,9 +16523,7 @@ 1427111936,1427177471,DE 1427177472,1427220556,NL 1427220557,1427220557,KG -1427220558,1427227135,NL -1427227136,1427227647,US -1427227648,1427236631,NL +1427220558,1427236631,NL 1427236632,1427236633,US 1427236634,1427243007,NL 1427243008,1427308543,IT @@ -16999,18 +16570,11 @@ 1428140032,1428142079,RU 1428142080,1428144127,DE 1428144128,1428146175,FR -1428146176,1428146431,GB -1428146432,1428146687,FR -1428146688,1428147519,GB +1428146176,1428147519,GB 1428147520,1428147615,FR 1428147616,1428147711,GB -1428147712,1428148223,FR -1428148224,1428148991,GB -1428148992,1428149247,FR -1428149248,1428150271,GB -1428150272,1428151295,FR -1428151296,1428152063,GB -1428152064,1428152319,FR +1428147712,1428147967,FR +1428147968,1428152319,GB 1428152320,1428160511,PL 1428160512,1428260863,IT 1428260864,1428261119,GB @@ -17057,7 +16621,9 @@ 1432027136,1432035327,IE 1432035328,1432043519,GB 1432043520,1432051711,ES -1432051712,1432059903,RU +1432051712,1432058623,RU +1432058624,1432058879,UA +1432058880,1432059903,RU 1432059904,1432068095,BG 1432068096,1432076287,BE 1432076288,1432084479,RU @@ -17065,7 +16631,6 @@ 1432092672,1432100863,RU 1432100864,1432109055,CZ 1432109056,1432117247,GB -1432117248,1432119295,CY 1432125440,1432131583,NL 1432131584,1432133631,US 1432133632,1432150015,GB @@ -17092,9 +16657,7 @@ 1432322048,1432338431,RU 1432338432,1432346623,FR 1432346624,1433403391,TR -1433403392,1433410047,ES -1433410048,1433410559,US -1433410560,1433411583,ES +1433403392,1433411583,ES 1433411584,1433419775,RU 1433419776,1433427967,LB 1433427968,1433436159,RU @@ -17120,14 +16683,15 @@ 1433591808,1433599999,GE 1433600000,1433608191,DE 1433608192,1433608447,TR -1433608448,1433610239,GB +1433608448,1433608703,NL +1433608704,1433610239,GB 1433610240,1433612287,US 1433612288,1433614335,GB 1433614336,1433615027,DE 1433615028,1433615028,EU 1433615029,1433615359,DE -1433615360,1433615871,FR -1433615872,1433616383,CH +1433615360,1433615615,FR +1433615616,1433616383,GB 1433616384,1433624575,AE 1433624576,1433632767,LV 1433632768,1433640959,GI @@ -17212,21 +16776,11 @@ 1434613760,1434615807,BG 1434615808,1434648575,IL 1434648576,1434681343,FI -1434681344,1434683391,NL -1434683392,1434684415,DE -1434684416,1434684927,NL -1434684928,1434685439,DE -1434685440,1434695679,NL -1434695680,1434696191,DE -1434696192,1434696703,NL +1434681344,1434696703,NL 1434696704,1434697727,DE -1434697728,1434700031,NL -1434700032,1434700543,DE -1434700544,1434705919,NL +1434697728,1434705919,NL 1434705920,1434707967,DE -1434707968,1434711039,NL -1434711040,1434711551,DE -1434711552,1434714111,NL +1434707968,1434714111,NL 1434714112,1434746879,AZ 1434746880,1434779647,CZ 1434779648,1434812415,GB @@ -17250,8 +16804,7 @@ 1436424192,1436426239,CH 1436426240,1436428287,BA 1436428288,1436430335,GB -1436430336,1436430847,US -1436430848,1436432383,RU +1436430336,1436432383,RU 1436432384,1436436479,GB 1436436480,1436438527,LV 1436438528,1436440575,IT @@ -17263,7 +16816,7 @@ 1436452864,1436453314,GB 1436453315,1436453315,EU 1436453316,1436453631,GB -1436453632,1436453887,NL +1436453632,1436453887,EU 1436453888,1436454911,GB 1436454912,1436456959,AZ 1436456960,1436459007,GB @@ -17308,22 +16861,8 @@ 1436542976,1436545023,NL 1436545024,1436547071,DE 1436547072,1436549119,GB -1436549120,1436688383,CZ -1436688384,1436692479,SK -1436692480,1436694527,CZ -1436694528,1436696575,SK -1436696576,1436700671,CZ -1436700672,1436703743,SK -1436703744,1436715007,CZ -1436715008,1436717567,SK -1436717568,1436718079,CZ -1436718080,1436725759,SK -1436725760,1436726271,CZ -1436726272,1436729343,SK -1436729344,1436743679,CZ -1436743680,1436744959,SK -1436744960,1436745215,CZ -1436745216,1436811263,SK +1436549120,1436680191,CZ +1436680192,1436811263,SK 1436811264,1437073407,NO 1437073408,1437335551,FR 1437335552,1437597695,RU @@ -17337,9 +16876,7 @@ 1438384128,1438400511,FI 1438400512,1438433279,SE 1438433280,1438515199,GB -1438515200,1438523391,DE -1438523392,1438523903,NL -1438523904,1438580735,DE +1438515200,1438580735,DE 1438580736,1438646271,NL 1438646272,1438662655,RU 1438662656,1438679039,ES @@ -17356,9 +16893,9 @@ 1438810112,1438826495,SE 1438826496,1438842879,FI 1438842880,1438859263,SE -1438859264,1438861567,DE -1438861568,1438861599,US -1438861600,1438875647,DE +1438859264,1438869655,DE +1438869656,1438869663,UA +1438869664,1438875647,DE 1438875648,1438876927,RU 1438876928,1438877183,IQ 1438877184,1438877439,A2 @@ -17394,7 +16931,6 @@ 1439305728,1439309823,DK 1439309824,1439318015,PL 1439318016,1439322111,DK -1439322112,1439326207,RO 1439326208,1439330303,PL 1439330304,1439334399,RS 1439334400,1439338495,RU @@ -17444,9 +16980,7 @@ 1439629312,1439694847,CZ 1439694848,1439825919,SA 1439825920,1439956991,GB -1439956992,1440103181,DE -1440103182,1440103182,DE -1440103183,1440204799,DE +1439956992,1440204799,DE 1440204800,1440215039,EU 1440215040,1440251903,DE 1440251904,1440284671,SK @@ -17486,9 +17020,11 @@ 1441439744,1441447935,LV 1441447936,1441456127,BE 1441456128,1441464319,NL -1441464320,1441468671,SE -1441468672,1441470719,DK -1441470720,1441472511,SE +1441464320,1441469183,SE +1441469184,1441469439,DK +1441469440,1441469695,SE +1441469696,1441470463,DK +1441470464,1441472511,SE 1441472512,1441480703,RU 1441480704,1441488895,TR 1441488896,1441497087,GB @@ -17514,13 +17050,11 @@ 1441636352,1441644543,PL 1441644544,1441645823,GB 1441645824,1441646079,GB -1441646080,1441647871,GB -1441647872,1441648383,CH -1441648384,1441649407,GB -1441649408,1441649919,GB -1441649920,1441652223,GB +1441646080,1441651455,GB +1441651456,1441651711,CA +1441651712,1441652223,GB 1441652224,1441652479,GB -1441652480,1441652735,DE +1441652480,1441652735,GB 1441652736,1441660927,SK 1441660928,1441669119,ES 1441669120,1441677311,GE @@ -17536,9 +17070,7 @@ 1441701888,1441710079,AT 1441710080,1441718271,SE 1441718272,1441726463,DE -1441726464,1441729023,KW -1441729024,1441729535,SG -1441729536,1441734655,KW +1441726464,1441734655,KW 1441734656,1441742847,RU 1441742848,1441751039,CZ 1441751040,1441759231,DE @@ -17574,15 +17106,17 @@ 1442836480,1442840575,PL 1442840576,1444937727,GB 1444937728,1445068799,AT -1445068800,1445199871,RO +1445068800,1445076479,RO +1445076480,1445076735,DE +1445076736,1445199871,RO 1445199872,1445330943,QA 1445330944,1445396479,LT 1445396480,1445429247,BE -1445429248,1445433855,NL -1445433856,1445434111,BE -1445434112,1445435391,NL +1445429248,1445435391,NL 1445435392,1445435647,BE -1445435648,1445462015,NL +1445435648,1445448127,NL +1445448128,1445448191,BE +1445448192,1445462015,NL 1445462016,1445986303,IE 1445986304,1446051839,DK 1446051840,1446117375,CZ @@ -17596,22 +17130,18 @@ 1446576128,1446608895,IR 1446608896,1446641663,BY 1446641664,1446674431,SI -1446674432,1446707175,DK -1446707176,1446707183,NO -1446707184,1446707199,DK +1446674432,1446706943,DK +1446706944,1446707199,NO 1446707200,1446739967,AT 1446739968,1446772735,HU 1446772736,1446805503,SA 1446805504,1446838271,FI -1446838272,1446862079,SI -1446862080,1446862591,HR -1446862592,1446871039,SI +1446838272,1446871039,SI 1446871040,1446903807,CZ -1446903808,1446906879,A2 +1446905088,1446905343,A2 1446906880,1446907135,IQ -1446907136,1446910719,A2 1446910720,1446911231,IQ -1446911232,1446920191,A2 +1446911488,1446911743,A2 1446920192,1446936575,RU 1446936576,1446952959,NO 1446952960,1446969343,QA @@ -17619,9 +17149,7 @@ 1446985728,1447010303,PL 1447010304,1447018495,LV 1447018496,1447026687,CZ -1447026688,1447076354,FR -1447076355,1447076357,FR -1447076358,1448083455,FR +1447026688,1448083455,FR 1448083456,1449132031,NL 1449132032,1449394175,AE 1449394176,1449459711,LT @@ -17659,7 +17187,6 @@ 1450156032,1450164223,GB 1450164224,1450166271,SA 1450166272,1450168319,PL -1450168320,1450170367,EU 1450170368,1450172415,GB 1450172416,1450174463,UA 1450174464,1450176511,DE @@ -17699,14 +17226,15 @@ 1466097664,1466099711,ES 1466099712,1466101759,PL 1466101760,1466103807,DE -1466103808,1466104319,GB -1466104320,1466104442,FR +1466103808,1466104116,FR +1466104117,1466104117,GB +1466104118,1466104442,FR 1466104443,1466104443,GB 1466104444,1466104467,FR 1466104468,1466104468,GB -1466104469,1466104831,FR -1466104832,1466105343,BE -1466105344,1466105855,FR +1466104469,1466105343,FR +1466105344,1466105599,GB +1466105600,1466105855,FR 1466105856,1466122239,PL 1466122240,1466130431,LV 1466130432,1466138623,PL @@ -17734,9 +17262,7 @@ 1466592000,1466613759,DE 1466613760,1466615807,ES 1466615808,1466616575,GB -1466616576,1466616831,DE -1466616832,1466617343,ES -1466617344,1466630143,DE +1466616576,1466630143,DE 1466630144,1466695679,IR 1466695680,1466761215,FI 1466761216,1466826751,SA @@ -17761,14 +17287,29 @@ 1467432960,1467449343,BG 1467449344,1467457535,SI 1467457536,1467465727,EE -1467465728,1467465791,DE +1467465728,1467465759,NL +1467465760,1467465791,DE 1467465792,1467465799,NL -1467465800,1467466495,DE +1467465800,1467465983,DE +1467465984,1467466015,NL +1467466016,1467466495,DE 1467466496,1467466751,NL 1467466752,1467472895,DE 1467472896,1467473919,NL 1467473920,1467482111,RU -1467482112,1467613183,BG +1467482112,1467490303,BG +1467490304,1467491327,US +1467491328,1467500543,BG +1467500544,1467501567,US +1467501568,1467541503,BG +1467541504,1467542527,US +1467542528,1467563007,BG +1467563008,1467564031,US +1467564032,1467572223,BG +1467572224,1467573247,US +1467573248,1467574271,BG +1467574272,1467575295,US +1467575296,1467613183,BG 1467613184,1467744255,DE 1467744256,1467875327,GB 1467875328,1467940863,BG @@ -17814,9 +17355,7 @@ 1475092480,1475094527,CY 1475094528,1475096575,RU 1475096576,1475098623,BH -1475098624,1475101695,GB -1475101696,1475102207,ZA -1475102208,1475102719,GB +1475098624,1475102719,GB 1475102720,1475104767,FR 1475104768,1475106815,RU 1475106816,1475108863,SE @@ -17846,8 +17385,7 @@ 1475151872,1475153919,BE 1475153920,1475155967,GB 1475155968,1475158015,NL -1475158016,1475159551,IS -1475159552,1475160063,GB +1475158016,1475160063,IS 1475160064,1475162111,RU 1475162112,1475170303,GB 1475170304,1475172351,ES @@ -17953,27 +17491,35 @@ 1475575808,1475592191,AT 1475592192,1475608575,GB 1475608576,1475624959,RU -1475624960,1475627775,JE -1475627776,1475628287,GB -1475628288,1475639039,JE -1475639040,1475639295,GB -1475639296,1475639391,JE +1475624960,1475634431,JE +1475634432,1475634495,GB +1475634496,1475637303,JE +1475637304,1475637311,GB +1475637312,1475637471,JE +1475637472,1475637479,GB +1475637480,1475639391,JE 1475639392,1475639399,GB 1475639400,1475639479,JE 1475639480,1475639487,GB -1475639488,1475641343,JE +1475639488,1475639559,JE +1475639560,1475639567,GB +1475639568,1475639583,JE +1475639584,1475639591,GB +1475639592,1475639695,JE +1475639696,1475639703,GB +1475639704,1475641343,JE 1475641344,1475657727,UA -1475657728,1475674111,SK +1475657728,1475659263,SK +1475659264,1475659519,HU +1475659520,1475674111,SK 1475674112,1475690495,DE -1475690496,1475706879,CH +1475690496,1475693055,CH +1475693056,1475693311,DE +1475693312,1475706879,CH 1475706880,1475723263,RU -1475723264,1475725311,GB -1475725312,1475725823,RU -1475725824,1475726079,GB +1475723264,1475726079,GB 1475726080,1475726335,RU -1475726336,1475726847,GB -1475726848,1475727103,RU -1475727104,1475727807,GB +1475726336,1475727807,GB 1475727808,1475727871,FI 1475727872,1475729151,GB 1475729152,1475729215,AT @@ -17981,13 +17527,9 @@ 1475729664,1475729671,UA 1475729672,1475729919,GB 1475729920,1475731455,UA -1475731456,1475732479,GB -1475732480,1475732991,RU -1475732992,1475735807,GB -1475735808,1475736063,RU -1475736064,1475738111,GB -1475738112,1475739351,RU -1475739352,1475739647,GB +1475731456,1475738111,GB +1475738112,1475738879,RU +1475738880,1475739647,GB 1475739648,1475756031,BG 1475756032,1475772415,GB 1475772416,1475788799,LV @@ -18004,12 +17546,7 @@ 1475870720,1475878911,NO 1475878912,1475887103,IT 1475887104,1475895295,PL -1475895296,1475899903,GB -1475899904,1475900415,IE -1475900416,1475900927,GB -1475900928,1475901439,IE -1475901440,1475902463,CH -1475902464,1475903487,GB +1475895296,1475903487,GB 1475903488,1475911679,IR 1475911680,1475919871,MD 1475919872,1475921983,IT @@ -18024,7 +17561,9 @@ 1475928064,1475952639,RU 1475952640,1475954175,A2 1475954176,1475954687,NO -1475954688,1475958527,A2 +1475954688,1475955247,A2 +1475955248,1475955255,NG +1475955256,1475958527,A2 1475958528,1475958783,NO 1475958784,1475960831,A2 1475960832,1475969023,NL @@ -18050,7 +17589,11 @@ 1476164608,1476165631,BH 1476165632,1476173823,HR 1476173824,1476182015,BG -1476182016,1476190207,IE +1476182016,1476183807,GB +1476183808,1476183839,IE +1476183840,1476186367,GB +1476186368,1476186383,IE +1476186384,1476190207,GB 1476190208,1476198399,BY 1476198400,1476206591,RU 1476206592,1476214783,GE @@ -18068,12 +17611,10 @@ 1476288512,1476296703,LU 1476296704,1476304895,RU 1476304896,1476313087,BG -1476313088,1476315135,FI +1476313088,1476315135,DE 1476315136,1476316159,US -1476316160,1476316671,SG -1476316672,1476317183,CN -1476317184,1476317695,FI -1476317696,1476319231,DE +1476316160,1476317183,FI +1476317184,1476319231,DE 1476319232,1476321279,FI 1476321280,1476329471,MC 1476329472,1476337663,RU @@ -18085,28 +17626,31 @@ 1476378624,1476386815,KZ 1476386816,1476395007,RU 1476395008,1478492159,ES -1478492160,1479400447,IT -1479400448,1479401471,US -1479401472,1479898367,IT +1478492160,1479400703,IT +1479400704,1479400959,US +1479400960,1479898367,IT 1479898368,1479898623,US 1479898624,1480589311,IT 1480589312,1481629951,DE -1481629952,1481630143,US -1481630144,1481633041,DE -1481633042,1481633042,DE -1481633043,1481637887,DE +1481629952,1481630207,US +1481630208,1481637887,DE 1481637888,1481646079,SE 1481646080,1481654271,RU 1481654272,1481662463,IT 1481662464,1481678847,BG -1481678848,1481687039,SE +1481678848,1481684991,SE +1481684992,1481687039,GB 1481687040,1481695231,DE 1481695232,1481703423,SK 1481703424,1481711615,SA 1481711616,1481719807,RU 1481719808,1481727999,CZ 1481728000,1481736191,IE -1481736192,1481744383,GG +1481736192,1481741311,GG +1481741312,1481741567,GB +1481741568,1481741568,GG +1481741569,1481744255,GB +1481744256,1481744383,JE 1481744384,1481752575,IT 1481752576,1481760767,RU 1481760768,1481768959,UA @@ -18125,8 +17669,12 @@ 1481867264,1481875455,SE 1481875456,1481883647,CZ 1481883648,1481891839,RU -1481891840,1481900031,CZ -1481900032,1481908223,CH +1481891840,1481893631,CZ +1481893632,1481893887,SK +1481893888,1481900031,CZ +1481900032,1481900287,CH +1481900288,1481900543,LI +1481900544,1481908223,CH 1481908224,1481916415,NO 1481916416,1481924607,ES 1481924608,1481932799,SA @@ -18167,9 +17715,7 @@ 1483997184,1484128255,AT 1484128256,1484259327,LT 1484259328,1484783615,FR -1484783616,1484804095,DE -1484804096,1484804223,NL -1484804224,1484849151,DE +1484783616,1484849151,DE 1484849152,1484914687,SE 1484914688,1484980223,DE 1484980224,1485045759,SE @@ -18245,42 +17791,27 @@ 1489567744,1489600511,BH 1489600512,1489633279,RU 1489633280,1489635327,IT -1489635328,1489635838,GB -1489635839,1489635839,EU -1489635840,1489636863,IT -1489636864,1489637887,EU -1489637888,1489638399,A2 -1489638400,1489638911,EU -1489638912,1489640447,IT -1489640448,1489640959,EU -1489640960,1489641471,IT -1489641472,1489641983,EU -1489641984,1489642495,IT -1489642496,1489642751,EU -1489642752,1489644543,IT +1489635328,1489639423,EU +1489639424,1489640447,IT +1489640448,1489642751,EU +1489642752,1489643519,IT +1489643520,1489644543,EU 1489644544,1489644799,IQ -1489644800,1489645055,A2 -1489645056,1489645567,IT -1489645568,1489646079,A2 -1489646080,1489646335,EU -1489646336,1489646591,US -1489646592,1489647615,EU +1489644800,1489646335,EU +1489646336,1489646847,US +1489646848,1489647615,EU 1489647616,1489648639,IT 1489648640,1489648895,EU -1489648896,1489649407,US -1489649408,1489649663,EU +1489648896,1489649151,US +1489649152,1489649158,EU +1489649159,1489649159,US +1489649160,1489649663,EU 1489649664,1489650687,FR 1489650688,1489651199,EU 1489651200,1489653759,IT 1489653760,1489657855,EU 1489657856,1489659903,IT -1489659904,1489661951,EU -1489661952,1489662463,GB -1489662464,1489662975,EU -1489662976,1489663999,IT -1489664000,1489664511,LY -1489664512,1489665535,EU -1489665536,1489666047,IT +1489659904,1489666047,EU 1489666048,1489698815,GB 1489698816,1489731583,MT 1489731584,1489764351,BG @@ -18306,9 +17837,7 @@ 1490173952,1490190335,PT 1490190336,1490196991,GB 1490196992,1490197247,IE -1490197248,1490201215,GB -1490201216,1490201343,DE -1490201344,1490205183,GB +1490197248,1490205183,GB 1490205184,1490205439,LY 1490205440,1490206719,GB 1490206720,1490223103,GE @@ -18325,9 +17854,7 @@ 1490419712,1490436095,A2 1490436096,1490452479,UA 1490452480,1490468863,PT -1490468864,1490478591,GB -1490478592,1490478847,RU -1490478848,1490480127,GB +1490468864,1490480127,GB 1490480128,1490480639,RU 1490480640,1490501631,GB 1490501632,1490518015,DE @@ -18363,28 +17890,36 @@ 1490944000,1491075071,LT 1491075072,1493172223,TR 1493172224,1493303295,DE -1493303296,1493430271,FR -1493430272,1493432319,GP -1493432320,1493433087,FR -1493433088,1493434111,MQ +1493303296,1493431295,FR +1493431296,1493431551,GP +1493431552,1493431807,FR +1493431808,1493432319,GP +1493432320,1493433343,MQ +1493433344,1493433855,FR +1493433856,1493434111,MQ 1493434112,1493434367,FR 1493434368,1493565439,SA 1493565440,1493696511,ES 1493696512,1493958655,NO 1493958656,1494220799,DE -1494220800,1494221823,FR +1494220800,1494221311,FR +1494221312,1494221567,RE +1494221568,1494221823,FR 1494221824,1494222079,RE -1494222080,1494222335,FR -1494222336,1494223359,RE +1494222080,1494223103,FR +1494223104,1494223359,RE 1494223360,1494223615,FR 1494223616,1494223871,RE -1494223872,1494224895,FR -1494224896,1494226687,GP -1494226688,1494226815,FR -1494226816,1494227455,GP -1494227456,1494227967,FR -1494227968,1494228735,GP -1494228736,1494228991,FR +1494223872,1494225663,FR +1494225664,1494225919,GP +1494225920,1494226175,FR +1494226176,1494226431,GP +1494226432,1494226687,FR +1494226688,1494227199,GP +1494227200,1494227455,FR +1494227456,1494227967,GP +1494227968,1494228479,FR +1494228480,1494228991,GP 1494228992,1494237183,RU 1494237184,1494245375,IE 1494245376,1494253567,RU @@ -18405,9 +17940,7 @@ 1494368256,1494376447,IE 1494376448,1494384639,SE 1494384640,1494392831,RU -1494392832,1494398975,NL -1494398976,1494399487,US -1494399488,1494401023,NL +1494392832,1494401023,NL 1494401024,1494409215,LV 1494409216,1494417407,FI 1494417408,1494425599,TR @@ -18427,11 +17960,7 @@ 1494564864,1494573055,UA 1494573056,1494581247,RO 1494581248,1494589439,RU -1494589440,1494592511,NL -1494592512,1494593535,US -1494593536,1494594559,NL -1494594560,1494595071,US -1494595072,1494597631,NL +1494589440,1494597631,US 1494597632,1494605823,IT 1494605824,1494614015,GB 1494614016,1494616063,RU @@ -18477,8 +18006,8 @@ 1495060480,1495062527,GB 1495062528,1495064575,JO 1495064576,1495066623,PL -1495066624,1495066879,GB -1495066880,1495067135,IE +1495066624,1495067007,GB +1495067008,1495067135,IE 1495067136,1495068671,GB 1495068672,1495070719,DE 1495070720,1495072767,RU @@ -18491,11 +18020,7 @@ 1495146496,1495150591,FR 1495150592,1495151615,EU 1495151616,1495153663,FR -1495153664,1495154175,EU -1495154176,1495154687,FR -1495154688,1495167743,EU -1495167744,1495167999,FR -1495168000,1495168767,EU +1495153664,1495168767,EU 1495168768,1495169023,GB 1495169024,1495170759,EU 1495170760,1495170763,DE @@ -18530,8 +18055,7 @@ 1495261184,1495261439,EU 1495261440,1495263231,PT 1495263232,1495265279,GB -1495265280,1495265791,DE -1495265792,1495267327,US +1495265280,1495267327,US 1495267328,1495269375,SE 1495269376,1495306239,RO 1495306240,1495306573,GB @@ -18541,24 +18065,21 @@ 1495326720,1495330815,MD 1495330816,1495334911,RO 1495334912,1495335935,MD -1495335936,1495622143,RO -1495622144,1495622655,A2 -1495622656,1495875583,RO +1495335936,1495875583,RO 1495875584,1495891967,MD -1495891968,1495937023,RO -1495937024,1495937535,SE -1495937536,1496078335,RO +1495891968,1496078335,RO 1496078336,1496079359,MD -1496079360,1496121343,RO +1496079360,1496084991,RO +1496084992,1496085247,MD +1496085248,1496121343,RO 1496121344,1496122367,MD -1496122368,1496178943,RO -1496178944,1496179199,AE -1496179200,1496197119,RO +1496122368,1496197119,RO 1496197120,1496197631,MD -1496197632,1496262655,RO -1496262656,1496262911,AE +1496197632,1496262911,RO 1496262912,1496263167,US -1496263168,1496295423,RO +1496263168,1496276735,RO +1496276736,1496276991,MD +1496276992,1496295423,RO 1496295424,1496297471,GB 1496297472,1496299519,MD 1496299520,1496317951,RO @@ -18581,9 +18102,7 @@ 1500078080,1500086271,GB 1500086272,1500094463,RU 1500094464,1500102655,AT -1500102656,1500108799,NL -1500108800,1500109311,DE -1500109312,1500110847,NL +1500102656,1500110847,NL 1500110848,1500119039,UA 1500119040,1500127231,TR 1500127232,1500135423,FI @@ -18619,9 +18138,7 @@ 1500209152,1500211199,KZ 1500211200,1500213247,IT 1500213248,1500217343,RU -1500217344,1500217855,CZ -1500217856,1500218879,DE -1500218880,1500219391,EE +1500217344,1500219391,DE 1500219392,1500221439,RU 1500221440,1500223487,SK 1500223488,1500225535,PL @@ -18652,12 +18169,8 @@ 1500643328,1500774399,RO 1500774400,1500905471,LT 1500905472,1501036543,IT -1501036544,1501154047,RO -1501154048,1501154303,US -1501154304,1501298687,RO -1501298688,1501552639,IE -1501552640,1501552895,GB -1501552896,1501560831,IE +1501036544,1501298687,RO +1501298688,1501560831,IE 1501560832,1501822975,ES 1501822976,1502085119,HU 1502085120,1502216191,RO @@ -18671,13 +18184,12 @@ 1502642176,1502658559,IR 1502658560,1502674943,AT 1502674944,1502691327,DE -1502691328,1502703103,GB -1502703104,1502703615,SE -1502703616,1502707711,GB +1502691328,1502707711,GB 1502707712,1502715903,RU 1502715904,1502717951,IT 1502717952,1502719999,GB -1502720000,1502722047,CH +1502720000,1502721023,FR +1502721024,1502722047,CH 1502722048,1502724095,TR 1502724096,1502740479,GB 1502740480,1502756863,NL @@ -18695,12 +18207,12 @@ 1502937088,1502953471,RO 1502953472,1502969855,MD 1502969856,1502975231,FR -1502975232,1502975455,GB -1502975456,1502975487,IE +1502975232,1502975359,GB +1502975360,1502975487,IE 1502975488,1502975743,FR 1502975744,1502975999,DE -1502976000,1502977535,FR -1502977536,1502979071,US +1502976000,1502978047,FR +1502978048,1502979071,US 1502979072,1502979135,FR 1502979136,1502979199,GB 1502979200,1502979215,FR @@ -18709,13 +18221,8 @@ 1502980352,1502980607,US 1502980608,1502981887,FR 1502981888,1502982143,NL -1502982144,1502982655,DE -1502982656,1502984703,FR -1502984704,1502989055,DE -1502989056,1502989567,TR -1502989568,1502996735,DE -1502996736,1502997247,PL -1502997248,1502999734,DE +1502982144,1502986239,FR +1502986240,1502999734,DE 1502999735,1502999735,SA 1502999736,1502999737,DE 1502999738,1502999738,SA @@ -18751,9 +18258,7 @@ 1503895680,1503895687,IT 1503895688,1503895695,DE 1503895696,1503895703,GB -1503895704,1503895751,DE -1503895752,1503895759,IT -1503895760,1503896175,DE +1503895704,1503896175,DE 1503896176,1503896183,NL 1503896184,1503896359,DE 1503896360,1503896367,CH @@ -18765,7 +18270,9 @@ 1503896440,1503896447,NO 1503896448,1503896543,DE 1503896544,1503896551,FR -1503896552,1503897335,DE +1503896552,1503897303,DE +1503897304,1503897311,AT +1503897312,1503897335,DE 1503897336,1503897343,PT 1503897344,1503897351,RO 1503897352,1503897367,DE @@ -18787,12 +18294,9 @@ 1503898168,1503898175,RO 1503898176,1503898183,IT 1503898184,1503898191,AT -1503898192,1503898199,DE -1503898200,1503898207,RO +1503898192,1503898207,DE 1503898208,1503898215,IT -1503898216,1503898239,DE -1503898240,1503898303,IT -1503898304,1503898335,DE +1503898216,1503898335,DE 1503898336,1503898343,IT 1503898344,1503898351,DE 1503898352,1503898359,CH @@ -18849,16 +18353,20 @@ 1503899408,1503899423,DE 1503899424,1503899431,IT 1503899432,1503899439,GR -1503899440,1503899495,DE -1503899496,1503899503,GR -1503899504,1503899575,DE +1503899440,1503899463,DE +1503899464,1503899471,IT +1503899472,1503899543,DE +1503899544,1503899551,SK +1503899552,1503899575,DE 1503899576,1503899583,BE 1503899584,1503899687,DE 1503899688,1503899695,IT 1503899696,1503899703,BE 1503899704,1503899919,DE 1503899920,1503899927,BE -1503899928,1503899951,DE +1503899928,1503899935,IT +1503899936,1503899943,BE +1503899944,1503899951,DE 1503899952,1503899959,IT 1503899960,1503900143,DE 1503900144,1503900151,RU @@ -18882,11 +18390,7 @@ 1503920128,1503985663,HR 1503985664,1504018431,IR 1504018432,1504051199,RO -1504051200,1504063487,FI -1504063488,1504063615,DE -1504063616,1504063679,FI -1504063680,1504063743,DE -1504063744,1504083967,FI +1504051200,1504083967,FI 1504083968,1504116735,DE 1504116736,1504149503,PL 1504149504,1504152575,GB @@ -18916,11 +18420,14 @@ 1505296384,1505304575,UA 1505304576,1505312767,FR 1505312768,1505320959,RU -1505320960,1505328639,DE -1505328640,1505329151,AT -1505329152,1505335935,IE -1505335936,1505336063,GB -1505336064,1505337343,IE +1505320960,1505323007,DE +1505323008,1505324031,AT +1505324032,1505325055,DE +1505325056,1505326079,AT +1505326080,1505328639,DE +1505328640,1505328895,AT +1505328896,1505329151,DE +1505329152,1505337343,IE 1505337344,1505345535,FR 1505345536,1505353727,MK 1505353728,1505361919,CZ @@ -18961,15 +18468,12 @@ 1505646848,1505647103,PL 1505647104,1505648639,CZ 1505648640,1505656831,LT -1505656832,1505665023,BH 1505665024,1505673215,IT 1505673216,1505681407,BG 1505681408,1505689599,RU 1505689600,1505697791,NO 1505697792,1505705983,IE -1505705984,1505708543,DE -1505708544,1505709055,AT -1505709056,1505714175,DE +1505705984,1505714175,DE 1505714176,1505722367,LV 1505722368,1505738751,PL 1505738752,1505746943,GB @@ -18993,86 +18497,61 @@ 1506377728,1506410495,HR 1506410496,1506422063,DE 1506422064,1506422079,GB -1506422080,1506441727,DE -1506441728,1506442239,MU -1506442240,1506443263,DE +1506422080,1506438783,DE +1506438784,1506438799,KR +1506438800,1506443263,DE 1506443264,1506445087,GB 1506445088,1506445119,DE 1506445120,1506445135,GB 1506445136,1506445151,DE 1506445152,1506445167,GB 1506445168,1506445183,DE -1506445184,1506445311,GB -1506445312,1506445823,FR -1506445824,1506446079,GB -1506446080,1506446335,FR -1506446336,1506448191,GB -1506448192,1506448255,IT -1506448256,1506449151,GB -1506449152,1506449407,BE -1506449408,1506449919,GB -1506449920,1506450431,CH -1506450432,1506450863,GB +1506445184,1506450047,GB +1506450048,1506450111,CH +1506450112,1506450863,GB 1506450864,1506450879,CZ -1506450880,1506450943,GB -1506450944,1506451199,DK -1506451200,1506451711,GB -1506451712,1506451791,ES -1506451792,1506451799,GB -1506451800,1506451967,ES -1506451968,1506452223,GB +1506450880,1506452223,GB 1506452224,1506452479,DE -1506452480,1506455295,GB -1506455296,1506455551,IT -1506455552,1506456319,GB +1506452480,1506456319,GB 1506456320,1506456575,IT -1506456576,1506456831,GB -1506456832,1506457087,IT -1506457088,1506458244,GB +1506456576,1506458244,GB 1506458245,1506458245,CH 1506458246,1506459135,GB -1506459136,1506459167,BE -1506459168,1506459199,EU -1506459200,1506459647,BE -1506459648,1506460151,GB +1506459136,1506459177,BE +1506459178,1506459178,EU +1506459179,1506459391,BE +1506459392,1506460151,GB 1506460152,1506460159,FR 1506460160,1506460927,GB -1506460928,1506461695,IT -1506461696,1506462463,GB -1506462464,1506462719,FR -1506462720,1506462975,IT -1506462976,1506463231,GB +1506460928,1506461183,IT +1506461184,1506463231,GB 1506463232,1506463487,SE -1506463488,1506463743,GB -1506463744,1506463999,DE -1506464000,1506464895,GB +1506463488,1506463679,GB +1506463680,1506463695,DE +1506463696,1506464895,GB 1506464896,1506464911,NL 1506464912,1506465023,GB 1506465024,1506465187,EU 1506465188,1506465188,NL 1506465189,1506465279,EU -1506465280,1506466399,GB +1506465280,1506466383,GB +1506466384,1506466391,DE +1506466392,1506466399,GB 1506466400,1506466431,DE -1506466432,1506467839,GB -1506467840,1506468351,IT -1506468352,1506468863,GB -1506468864,1506469119,IT -1506469120,1506469663,GB +1506466432,1506469663,GB 1506469664,1506469695,IT -1506469696,1506470655,GB -1506470656,1506471167,IT -1506471168,1506471935,GB -1506471936,1506472191,NL -1506472192,1506473471,GB +1506469696,1506469759,GB +1506469760,1506469775,IT +1506469776,1506471983,GB +1506471984,1506471999,NL +1506472000,1506472031,GB +1506472032,1506472047,NL +1506472048,1506473471,GB 1506473472,1506473727,IT -1506473728,1506473983,GB -1506473984,1506474495,IT -1506474496,1506474751,GB -1506474752,1506475007,IT -1506475008,1506476031,GB -1506476032,1506506751,KW -1506506752,1506507007,EG -1506507008,1506508799,KW +1506473728,1506474239,GB +1506474240,1506474495,IT +1506474496,1506476031,GB +1506476032,1506508799,KW 1506508800,1506541567,CZ 1506541568,1506574335,RU 1506574336,1506582527,DE @@ -19106,7 +18585,9 @@ 1506795520,1506797567,IE 1506797568,1506799615,ES 1506799616,1506801663,LV -1506801664,1506803711,DE +1506801664,1506803135,DE +1506803136,1506803151,CH +1506803152,1506803711,DE 1506803712,1506869247,RU 1506869248,1506934783,UA 1506934784,1507000319,GR @@ -19161,20 +18642,18 @@ 1508589568,1508605951,IR 1508605952,1508622335,RU 1508622336,1508638719,EE -1508638720,1508639231,SE -1508639232,1508641535,DK -1508641536,1508642047,SE -1508642048,1508642815,DK -1508642816,1508646911,SE -1508646912,1508647423,DK -1508647424,1508647679,SE -1508647680,1508647935,DK -1508647936,1508648447,SE -1508648448,1508648703,DK -1508648704,1508650751,SE -1508650752,1508651263,DK -1508651264,1508652543,SE -1508652544,1508654079,DK +1508638720,1508639487,SE +1508639488,1508639743,DK +1508639744,1508639999,SE +1508640000,1508640767,DK +1508640768,1508641279,SE +1508641280,1508641535,DK +1508641536,1508650751,SE +1508650752,1508651007,DK +1508651008,1508653311,SE +1508653312,1508653567,DK +1508653568,1508653823,SE +1508653824,1508654079,DK 1508654080,1508655103,SE 1508655104,1508671487,FI 1508671488,1508687871,CH @@ -19188,9 +18667,7 @@ 1508802560,1508818943,GB 1508818944,1508830719,RO 1508830720,1508831487,SK -1508831488,1508831743,RO -1508831744,1508832255,SK -1508832256,1508835327,RO +1508831488,1508835327,RO 1508835328,1508851711,CZ 1508851712,1508868095,PL 1508868096,1508884479,RU @@ -19207,7 +18684,8 @@ 1509453824,1509457919,RU 1509457920,1509462015,NL 1509462016,1509465599,LI -1509465600,1509466111,CH +1509465600,1509465855,CH +1509465856,1509466111,LI 1509466112,1509470207,NL 1509470208,1509478399,RU 1509478400,1509482495,FR @@ -19215,8 +18693,7 @@ 1509486592,1509490687,CZ 1509490688,1509494783,DK 1509494784,1509498879,RU -1509498880,1509501439,DE -1509501440,1509502975,CH +1509498880,1509502975,DE 1509502976,1509507071,RU 1509507072,1509511167,GB 1509511168,1509515263,LT @@ -19257,14 +18734,24 @@ 1509683200,1509687295,CH 1509687296,1509703679,UA 1509703680,1509720063,RU -1509720064,1509724927,US +1509720064,1509721087,TR +1509721088,1509723135,US +1509723136,1509724159,TR +1509724160,1509724927,US 1509724928,1509736447,TR 1509736448,1509752831,BG 1509752832,1509769215,RU 1509769216,1509785599,SE 1509785600,1509801983,BG 1509801984,1509818367,RU -1509818368,1509851135,NO +1509818368,1509834751,NO +1509834752,1509835519,SE +1509835520,1509835775,NO +1509835776,1509838847,SE +1509838848,1509840895,NO +1509840896,1509850623,SE +1509850624,1509850879,NO +1509850880,1509851135,SE 1509851136,1509867519,LV 1509867520,1509883903,RU 1509883904,1509900287,NL @@ -19272,116 +18759,226 @@ 1509916672,1509933055,GB 1509933056,1509949439,US 1509949440,1511981311,FR -1511981312,1511984639,RE -1511984640,1511984895,FR -1511984896,1511989247,RE +1511981312,1511983871,RE +1511983872,1511984127,FR +1511984128,1511984639,RE +1511984640,1511985151,FR +1511985152,1511985663,RE +1511985664,1511985919,FR +1511985920,1511986175,RE +1511986176,1511986431,FR +1511986432,1511986687,RE +1511986688,1511987199,FR +1511987200,1511988479,RE +1511988480,1511988735,FR +1511988736,1511989247,RE 1511989248,1511989503,FR -1511989504,1511992831,RE +1511989504,1511990015,RE +1511990016,1511990527,FR +1511990528,1511991295,RE +1511991296,1511991807,FR +1511991808,1511992319,RE +1511992320,1511992575,FR +1511992576,1511992831,RE 1511992832,1511993087,FR -1511993088,1511994367,RE -1511994368,1511994623,FR -1511994624,1511996159,RE -1511996160,1511996415,FR +1511993088,1511993599,RE +1511993600,1511994111,FR +1511994112,1511994367,RE +1511994368,1511995135,FR +1511995136,1511995903,RE +1511995904,1511996415,FR 1511996416,1511997183,RE 1511997184,1511997439,FR -1511997440,1512005631,MQ -1512005632,1512006143,FR -1512006144,1512006911,GP -1512006912,1512007423,FR -1512007424,1512007935,GP -1512007936,1512008191,FR -1512008192,1512008959,GP -1512008960,1512009215,FR -1512009216,1512009727,GP -1512009728,1512009983,FR -1512009984,1512010751,GP -1512010752,1512011007,FR -1512011008,1512011263,GP -1512011264,1512011519,FR -1512011520,1512013311,GP -1512013312,1512013567,FR -1512013568,1512013823,GP -1512013824,1512014847,GF -1512014848,1512015103,FR -1512015104,1512016383,GF -1512016384,1512016639,FR -1512016640,1512020223,GF -1512020224,1512022271,FR -1512022272,1512028415,GF +1511997440,1511999231,MQ +1511999232,1511999743,FR +1511999744,1512000767,MQ +1512000768,1512001279,FR +1512001280,1512002303,MQ +1512002304,1512002559,FR +1512002560,1512003839,MQ +1512003840,1512004351,FR +1512004352,1512004863,MQ +1512004864,1512005119,FR +1512005120,1512005631,MQ +1512005632,1512005887,GP +1512005888,1512007935,FR +1512007936,1512008191,GP +1512008192,1512008959,FR +1512008960,1512009215,GP +1512009216,1512009471,FR +1512009472,1512009727,GP +1512009728,1512010751,FR +1512010752,1512011007,GP +1512011008,1512013823,FR +1512013824,1512014335,GF +1512014336,1512014591,FR +1512014592,1512016127,GF +1512016128,1512016383,FR +1512016384,1512016639,GF +1512016640,1512016895,FR +1512016896,1512017151,GF +1512017152,1512017407,FR +1512017408,1512020223,GF +1512020224,1512022527,FR +1512022528,1512022783,GF +1512022784,1512023039,FR +1512023040,1512023295,GF +1512023296,1512023551,FR +1512023552,1512023807,GF +1512023808,1512024063,FR +1512024064,1512028415,GF 1512028416,1512030207,FR 1512030208,1512046591,YT 1512046592,1512767487,FR 1512767488,1512767743,RE 1512767744,1512767999,FR -1512768000,1512769023,RE -1512769024,1512769279,FR -1512769280,1512771071,RE +1512768000,1512771071,RE 1512771072,1512771327,FR 1512771328,1512772351,RE 1512772352,1512772863,FR -1512772864,1512773119,RE -1512773120,1512773375,FR -1512773376,1512775423,RE +1512772864,1512773631,RE +1512773632,1512774143,FR +1512774144,1512774911,RE +1512774912,1512775167,FR +1512775168,1512775423,RE 1512775424,1512775679,FR -1512775680,1512781823,RE -1512781824,1512782847,FR -1512782848,1512785151,RE +1512775680,1512777215,RE +1512777216,1512777471,FR +1512777472,1512778239,RE +1512778240,1512778495,FR +1512778496,1512778751,RE +1512778752,1512779263,FR +1512779264,1512781567,RE +1512781568,1512782847,FR +1512782848,1512783615,RE +1512783616,1512783871,FR +1512783872,1512785151,RE 1512785152,1512785407,FR -1512785408,1512788991,RE -1512788992,1512789247,FR -1512789248,1512790015,RE -1512790016,1512790271,FR -1512790272,1512796927,RE -1512796928,1512797183,FR -1512797184,1512798207,RE +1512785408,1512785919,RE +1512785920,1512786943,FR +1512786944,1512787455,RE +1512787456,1512787711,FR +1512787712,1512787967,RE +1512787968,1512788223,FR +1512788224,1512788735,RE +1512788736,1512789247,FR +1512789248,1512791039,RE +1512791040,1512791295,FR +1512791296,1512791807,RE +1512791808,1512792831,FR +1512792832,1512794111,RE +1512794112,1512794367,FR +1512794368,1512795391,RE +1512795392,1512795647,FR +1512795648,1512796159,RE +1512796160,1512796415,FR +1512796416,1512796671,RE +1512796672,1512796927,FR +1512796928,1512798207,RE 1512798208,1512799231,FR 1512799232,1512799487,RE 1512799488,1512800255,FR -1512800256,1512804351,MQ +1512800256,1512801023,MQ +1512801024,1512801279,FR +1512801280,1512802047,MQ +1512802048,1512802815,FR +1512802816,1512803327,MQ +1512803328,1512803583,FR +1512803584,1512803839,MQ +1512803840,1512804095,FR +1512804096,1512804351,MQ 1512804352,1512804863,FR -1512804864,1512805887,MQ -1512805888,1512806399,FR -1512806400,1512811263,MQ -1512811264,1512811519,FR -1512811520,1512811775,MQ -1512811776,1512812031,FR -1512812032,1512814079,MQ -1512814080,1512814591,FR -1512814592,1512816383,MQ +1512804864,1512805375,MQ +1512805376,1512805631,FR +1512805632,1512805887,MQ +1512805888,1512806143,FR +1512806144,1512806655,MQ +1512806656,1512807423,FR +1512807424,1512807679,MQ +1512807680,1512808191,FR +1512808192,1512809215,MQ +1512809216,1512809983,FR +1512809984,1512810495,MQ +1512810496,1512810751,FR +1512810752,1512811775,MQ +1512811776,1512812287,FR +1512812288,1512812543,MQ +1512812544,1512812799,FR +1512812800,1512814079,MQ +1512814080,1512814335,FR +1512814336,1512814847,MQ +1512814848,1512815103,FR +1512815104,1512816383,MQ 1512816384,1512816639,FR -1512816640,1512818943,GP -1512818944,1512819199,FR -1512819200,1512822271,GP -1512822272,1512822527,FR -1512822528,1512827647,GP -1512827648,1512827903,FR -1512827904,1512832767,GP -1512832768,1514110975,FR -1514110976,1514115071,GP -1514115072,1514115327,FR -1514115328,1514118143,GP -1514118144,1514118655,FR -1514118656,1514122495,GP -1514122496,1514122751,FR -1514122752,1514127359,GP -1514127360,1514128127,RE -1514128128,1514128383,FR -1514128384,1514131967,RE -1514131968,1514132223,FR -1514132224,1514132735,RE -1514132736,1514132991,FR -1514132992,1514135807,RE -1514135808,1514136063,FR -1514136064,1514137087,RE -1514137088,1514137599,FR -1514137600,1514139391,RE +1512816640,1512817663,GP +1512817664,1512817919,FR +1512817920,1512818175,GP +1512818176,1512818431,FR +1512818432,1512819455,GP +1512819456,1512819711,FR +1512819712,1512821759,GP +1512821760,1512822015,FR +1512822016,1512823295,GP +1512823296,1512823551,FR +1512823552,1512826367,GP +1512826368,1512827391,FR +1512827392,1512827647,GP +1512827648,1512828415,FR +1512828416,1512830463,GP +1512830464,1512830719,FR +1512830720,1512831231,GP +1512831232,1512831487,FR +1512831488,1512831999,GP +1512832000,1512832255,FR +1512832256,1512832767,GP +1512832768,1514112255,FR +1514112256,1514112767,GP +1514112768,1514113023,FR +1514113024,1514115583,GP +1514115584,1514118399,FR +1514118400,1514119167,GP +1514119168,1514119423,FR +1514119424,1514120191,GP +1514120192,1514120447,FR +1514120448,1514120959,GP +1514120960,1514121471,FR +1514121472,1514124287,GP +1514124288,1514127359,FR +1514127360,1514127615,RE +1514127616,1514128383,FR +1514128384,1514128639,RE +1514128640,1514128895,FR +1514128896,1514130687,RE +1514130688,1514130943,FR +1514130944,1514131199,RE +1514131200,1514131455,FR +1514131456,1514134015,RE +1514134016,1514134783,FR +1514134784,1514135295,RE +1514135296,1514135551,FR +1514135552,1514135807,RE +1514135808,1514136319,FR +1514136320,1514136831,RE +1514136832,1514137599,FR +1514137600,1514137855,RE +1514137856,1514138111,FR +1514138112,1514139391,RE 1514139392,1514139647,FR -1514139648,1514143231,RE +1514139648,1514140927,RE +1514140928,1514141183,FR +1514141184,1514142463,RE +1514142464,1514142719,FR +1514142720,1514143231,RE 1514143232,1514143487,FR 1514143488,1514143743,RE 1514143744,1515192639,FR 1515192640,1515192655,EU -1515192656,1515468543,FR +1515192656,1515467007,FR +1515467008,1515467263,ES +1515467264,1515467519,FR +1515467520,1515468031,US +1515468032,1515468287,ES +1515468288,1515468543,NL 1515468544,1515468799,DE 1515468800,1515469823,FR 1515469824,1515470079,DE @@ -19393,16 +18990,16 @@ 1518460928,1518470143,NL 1518470144,1518472191,SE 1518472192,1518475263,LT -1518475264,1518477311,SE +1518475264,1518476287,SE +1518476288,1518476799,EE +1518476800,1518477311,SE 1518477312,1518481407,EE 1518481408,1518489599,SE 1518489600,1518490623,NL 1518490624,1518493695,SE 1518493696,1518501887,NL 1518501888,1518503935,EE -1518503936,1518508543,LT -1518508544,1518508799,SE -1518508800,1518510079,LT +1518503936,1518510079,LT 1518510080,1518516223,LV 1518516224,1518517247,SE 1518517248,1518518271,LV @@ -19418,14 +19015,16 @@ 1518649344,1518665727,SE 1518665728,1518727167,RU 1518727168,1518731263,SE -1518731264,1518764031,DE -1518764032,1518772223,LT -1518772224,1518927871,DE +1518731264,1518747647,DE +1518747648,1518772223,LT +1518772224,1518780415,NL +1518780416,1518796799,HR +1518796800,1518927871,DE 1518927872,1518944255,RU 1518944256,1518960639,SE 1518960640,1518961663,LT 1518961664,1518962175,EE -1518962176,1518962687,LV +1518962176,1518962687,SE 1518962688,1518964735,NO 1518964736,1518966783,HR 1518966784,1518967807,SE @@ -19437,8 +19036,8 @@ 1519190016,1519259647,SE 1519259648,1519260671,NL 1519260672,1519263743,SE -1519263744,1519288319,NL -1519288320,1519292415,SE +1519263744,1519289343,NL +1519289344,1519292415,SE 1519292416,1519293951,LT 1519293952,1519300607,SE 1519300608,1519304703,LT @@ -19451,21 +19050,15 @@ 1519648768,1519714303,SA 1519714304,1519779839,NO 1519779840,1519910911,RU -1519910912,1519927615,GB -1519927616,1519927679,NL -1519927680,1519931135,GB -1519931136,1519934463,NL -1519934464,1519934975,GB -1519934976,1519935487,NL -1519935488,1519938559,GB +1519910912,1519931391,GB +1519931392,1519934463,NL +1519934464,1519936191,GB +1519936192,1519936255,DK +1519936256,1519938559,GB 1519938560,1519939583,NL 1519939584,1519943679,GB 1519943680,1519976447,AT -1519976448,1519980159,DE -1519980160,1519980191,GB -1519980192,1519980199,DE -1519980200,1519980287,GB -1519980288,1520009215,DE +1519976448,1520009215,DE 1520009216,1520041983,SY 1520041984,1520074751,RU 1520074752,1520107519,BG @@ -19486,9 +19079,9 @@ 1522532352,1524629503,GB 1524629504,1524660607,SE 1524660608,1524660735,DK -1524660736,1524886271,SE -1524886272,1524886527,DK -1524886528,1525678079,SE +1524660736,1524853503,SE +1524853504,1524853631,DK +1524853632,1525678079,SE 1525678080,1526726655,GB 1526726656,1531183103,DE 1531183104,1531445247,FR @@ -19511,7 +19104,6 @@ 1532639232,1532641279,PL 1532641280,1532643327,NO 1532643328,1532645375,PL -1532645376,1532647423,RU 1532647424,1532649471,PL 1532649472,1532651519,FR 1532651520,1532653567,NO @@ -19562,15 +19154,11 @@ 1533474816,1533476863,FR 1533476864,1533478911,IE 1533478912,1533480959,RS -1533480960,1533481983,NL -1533481984,1533482495,GB -1533482496,1533483007,NL +1533480960,1533483007,NL 1533483008,1533485055,AM -1533485056,1533485951,GB -1533485952,1533486079,SE -1533486080,1533486591,GB -1533486592,1533486719,DK -1533486720,1533487103,GB +1533485056,1533486079,GB +1533486080,1533486335,SE +1533486336,1533487103,GB 1533487104,1533489151,FR 1533489152,1533491199,ES 1533491200,1533493247,AM @@ -19594,7 +19182,9 @@ 1533540352,1533542399,AT 1533542400,1533607935,HU 1533607936,1533640703,LV -1533640704,1533669375,RU +1533640704,1533663231,RU +1533663232,1533665279,NL +1533665280,1533669375,RU 1533669376,1533671423,DE 1533671424,1533673471,FI 1533673472,1533677567,DE @@ -19619,11 +19209,7 @@ 1533847552,1533849599,RU 1533849600,1533851647,SE 1533851648,1533853695,CH -1533853696,1533868287,GB -1533868288,1533868543,TR -1533868544,1533870079,GB -1533870080,1533870591,ES -1533870592,1533874175,GB +1533853696,1533874175,GB 1533874176,1533878271,DE 1533878272,1533880319,CZ 1533880320,1533882367,GB @@ -19635,7 +19221,7 @@ 1533902848,1533911039,RU 1533911040,1533913087,ES 1533913088,1533915135,IT -1533915136,1533919231,GB +1533915136,1533919231,NL 1533919232,1533921279,IT 1533921280,1533923327,RU 1533923328,1533925375,TR @@ -19650,11 +19236,15 @@ 1534590976,1534656511,HU 1534656512,1534711807,FR 1534711808,1534712831,BE -1534712832,1534717663,FR +1534712832,1534714751,FR +1534714752,1534714767,DE +1534714768,1534717663,FR 1534717664,1534717679,GB 1534717680,1534720003,FR 1534720004,1534720007,ES -1534720008,1534720471,FR +1534720008,1534720023,FR +1534720024,1534720027,PL +1534720028,1534720471,FR 1534720472,1534720479,DE 1534720480,1534721619,FR 1534721620,1534721623,ES @@ -19716,14 +19306,15 @@ 1535717376,1535721471,CH 1535721472,1535721727,DE 1535721728,1535737855,CH -1535737856,1535770111,HU -1535770112,1535770623,SR +1535737856,1535770623,HU 1535770624,1535803391,CH 1535803392,1535836159,GR 1535836160,1535868927,HU 1535868928,1535901695,BG 1535901696,1535934463,GR -1535934464,1535963391,KW +1535934464,1535959551,KW +1535959552,1535959807,US +1535959808,1535963391,KW 1535963392,1535963647,US 1535963648,1535967231,KW 1535967232,1535999999,AT @@ -19733,9 +19324,7 @@ 1536040960,1536045055,GB 1536045056,1536045311,IQ 1536045312,1536045567,LB -1536045568,1536047103,DE -1536047104,1536047615,LB -1536047616,1536049151,DE +1536045568,1536049151,DE 1536049152,1536051199,IT 1536051200,1536057343,RU 1536057344,1536061439,IE @@ -19812,7 +19401,9 @@ 1536647168,1536651263,ES 1536651264,1536655359,FR 1536655360,1536659455,GE -1536659456,1536659841,DE +1536659456,1536659807,DE +1536659808,1536659815,SS +1536659816,1536659841,DE 1536659842,1536659843,US 1536659844,1536662271,DE 1536662272,1536662527,IQ @@ -19826,8 +19417,8 @@ 1537212416,1538260991,FR 1538260992,1538785279,BE 1538785280,1538793471,NL -1538793472,1538797055,DE -1538797056,1538801663,NL +1538793472,1538797567,DE +1538797568,1538801663,NL 1538801664,1538809855,IR 1538809856,1538818047,GE 1538818048,1538826239,NO @@ -19838,9 +19429,7 @@ 1538859008,1538875391,RU 1538875392,1538883583,RS 1538883584,1538891775,BE -1538891776,1538894079,DE -1538894080,1538894591,FR -1538894592,1538894847,DE +1538891776,1538894847,DE 1538894848,1538895871,FR 1538895872,1538896895,DE 1538896896,1538897919,FR @@ -19859,7 +19448,9 @@ 1538973696,1538981887,JO 1538981888,1538990079,BY 1538990080,1538998271,CZ -1538998272,1539006463,AD +1538998272,1539005439,AD +1539005440,1539005695,ES +1539005696,1539006463,AD 1539006464,1539014655,AL 1539014656,1539022847,RS 1539022848,1539031039,LT @@ -19871,7 +19462,7 @@ 1539072000,1539080191,PL 1539080192,1539088383,UZ 1539088384,1539096575,RU -1539096576,1539112959,TR +1539105024,1539105279,TR 1539112960,1539115007,PL 1539115008,1539117055,AE 1539117056,1539123199,PL @@ -19894,7 +19485,6 @@ 1539151872,1539153919,UA 1539153920,1539155967,RU 1539155968,1539160063,NO -1539160064,1539162111,RU 1539162112,1539164159,DE 1539164160,1539166207,DK 1539166208,1539168255,FI @@ -19910,7 +19500,11 @@ 1539211264,1539213311,CZ 1539213312,1539215359,SE 1539215360,1539219455,DE -1539219456,1539221503,GG +1539219456,1539219711,GB +1539219712,1539219967,GG +1539219968,1539220479,GB +1539220480,1539221247,GG +1539221248,1539221503,GB 1539221504,1539223551,FR 1539223552,1539225599,RU 1539225600,1539227647,HU @@ -19918,9 +19512,7 @@ 1539229696,1539231743,DE 1539231744,1539233791,BE 1539233792,1539235839,LU -1539235840,1539236287,DE -1539236288,1539236295,NL -1539236296,1539237887,DE +1539235840,1539237887,DE 1539237888,1539239935,RU 1539239936,1539244031,DE 1539244032,1539260415,BA @@ -19934,7 +19526,6 @@ 1539297280,1539301375,BG 1539301376,1539309567,RU 1539309568,1539310591,PL -1539310592,1539311615,UA 1539311616,1539312639,NL 1539312640,1539313663,DE 1539313664,1539314687,GB @@ -19957,7 +19548,6 @@ 1539333120,1539335167,RU 1539335168,1539336191,CH 1539336192,1539336703,UA -1539336704,1539337215,EE 1539337216,1539338239,ES 1539338240,1539339263,SE 1539339264,1539340287,NL @@ -20004,7 +19594,6 @@ 1539388416,1539389439,PL 1539389440,1539389951,FR 1539389952,1539390463,RU -1539390464,1539391487,RO 1539391488,1539392511,LV 1539392512,1539393535,UA 1539393536,1539393791,DE @@ -20016,12 +19605,11 @@ 1539397632,1539398143,RU 1539398144,1539398655,PL 1539398656,1539399679,ES -1539399680,1539401727,PL +1539399680,1539400703,PL 1539401728,1539402239,GB 1539402240,1539402751,FR 1539402752,1539403263,GB 1539403264,1539403775,RU -1539404800,1539405823,EE 1539405824,1539406847,PL 1539406848,1539408895,UA 1539408896,1539409919,CZ @@ -20029,7 +19617,6 @@ 1539410944,1539411967,RU 1539411968,1539412991,PL 1539412992,1539414015,RU -1539414016,1539415039,UA 1539415040,1539416063,BG 1539416064,1539417087,PL 1539417088,1539418111,UA @@ -20049,12 +19636,11 @@ 1539435520,1539437567,RU 1539437568,1539438591,GB 1539439616,1539440639,UA -1539440640,1539441663,RU +1539441152,1539441663,RU 1539441664,1539442175,IL 1539442176,1539442687,DE 1539442688,1539443199,NL 1539443200,1539444223,RU -1539444224,1539444735,FR 1539444736,1539445247,RU 1539445248,1539445759,PL 1539445760,1539446271,FI @@ -20092,16 +19678,13 @@ 1539464704,1539465215,DK 1539465216,1539466751,FR 1539466752,1539467263,KW -1539467264,1539467775,RU 1539467776,1539468287,PL 1539468288,1539468799,DE 1539468800,1539469823,RU 1539469824,1539470335,IL 1539470336,1539470847,GB -1539470848,1539471359,SE 1539471360,1539471871,RU 1539471872,1539472383,PL -1539472384,1539472895,UA 1539472896,1539473407,GB 1539473408,1539473919,FR 1539473920,1539474431,KW @@ -20114,24 +19697,22 @@ 1539477504,1539478015,PL 1539478016,1539478527,CH 1539478528,1539479039,RO -1539479040,1539479551,DK -1539479552,1539480063,GB +1539479040,1539480063,GB 1539480064,1539480575,DK 1539480576,1539481087,PL 1539481088,1539481599,GB 1539481600,1539482111,RU 1539482112,1539482623,UA 1539482624,1539483135,RU -1539483136,1539483647,ES 1539483648,1539484159,UA 1539484672,1539485695,RU 1539485696,1539486207,RO 1539486208,1539486719,FR 1539486720,1539487231,DE -1539487232,1539488255,RU +1539487744,1539488255,RU 1539488256,1539488767,SE 1539488768,1539489279,PL -1539489280,1539490815,RU +1539489280,1539490303,RU 1539490816,1539491327,CH 1539491328,1539491839,PL 1539491840,1539492351,RU @@ -20152,13 +19733,11 @@ 1539500544,1539501055,RO 1539501056,1539501567,BE 1539501568,1539502079,UA -1539502080,1539502591,PL 1539502592,1539503103,HR 1539503104,1539504127,RU 1539504128,1539504639,AT 1539504640,1539505151,UA -1539505152,1539505663,RU -1539505664,1539506175,AT +1539505152,1539506175,RU 1539506176,1539506687,NL 1539506688,1539507199,UA 1539507200,1539508223,RO @@ -20188,7 +19767,6 @@ 1539521024,1539521535,DK 1539521536,1539522047,RU 1539522048,1539522559,RO -1539523072,1539523583,RO 1539523584,1539524095,UA 1539524096,1539524607,GR 1539524608,1539525119,FR @@ -20254,7 +19832,6 @@ 1539558400,1539558911,RU 1539558912,1539559423,FR 1539559424,1539560447,RU -1539560448,1539560959,GB 1539560960,1539561471,UA 1539561472,1539561983,RO 1539561984,1539563007,DE @@ -20264,7 +19841,9 @@ 1539564544,1539565055,GB 1539565056,1539565567,UA 1539565568,1539566079,PL -1539566080,1539567103,NL +1539566080,1539566591,NL +1539566592,1539566847,DE +1539566848,1539567103,NL 1539567104,1539567615,CH 1539567616,1539568127,DE 1539568128,1539568639,NL @@ -20276,19 +19855,16 @@ 1539571712,1539572735,UA 1539572736,1539573759,RU 1539573760,1539575807,PL -1539575808,1539576831,LV 1539576832,1539577855,GB 1539577856,1539578879,RU 1539578880,1539579903,PL 1539579904,1539580927,RU 1539580928,1539581951,AM -1539581952,1539582975,RU 1539582976,1539583999,RO 1539584000,1539585023,PL 1539585024,1539586047,UA 1539586048,1539587071,PL 1539587072,1539588095,UA -1539588096,1539589119,BG 1539590144,1539591167,RU 1539591168,1539592191,UZ 1539592192,1539593215,UA @@ -20317,13 +19893,11 @@ 1539624960,1539625983,RU 1539625984,1539627007,PL 1539627008,1539628031,RU -1539628032,1539629055,UA 1539629056,1539630079,BG 1539630080,1539631103,UA -1539631104,1539632127,CN 1539632128,1539633151,RU 1539633152,1539634175,SE -1539634176,1539638271,RU +1539634176,1539637247,RU 1539638272,1539639295,UA 1539639296,1539640319,RU 1539640320,1539641343,PL @@ -20332,7 +19906,6 @@ 1539643392,1539644415,UA 1539644416,1539645439,DE 1539645440,1539646463,GB -1539647488,1539648511,RU 1539648512,1539649023,CY 1539649024,1539649535,LB 1539649536,1539650559,UA @@ -20364,9 +19937,7 @@ 1539680256,1539681279,UA 1539681280,1539684351,RU 1539684352,1539685375,UA -1539685376,1539688447,RU -1539688448,1539689471,SA -1539689472,1539690495,RU +1539685376,1539690495,RU 1539690496,1539691519,FI 1539691520,1539692543,RU 1539692544,1539694591,UA @@ -20374,7 +19945,6 @@ 1539695616,1539696639,GB 1539696640,1539697663,RU 1539697664,1539698687,UA -1539698688,1539699711,GE 1539699712,1539700735,RO 1539700736,1539701759,DK 1539701760,1539702783,UA @@ -20404,7 +19974,6 @@ 1539709184,1539709439,AT 1539709440,1539709695,BE 1539709696,1539709951,NL -1539709952,1539710207,TR 1539710208,1539710463,GB 1539710464,1539710719,FR 1539710720,1539710975,UA @@ -20476,12 +20045,9 @@ 1539729664,1539729919,FR 1539729920,1539730175,NL 1539730176,1539730431,GB -1539730432,1539730687,GR -1539730688,1539730943,KZ 1539730944,1539731455,PL 1539731456,1539731711,SI 1539731712,1539732223,DE -1539732224,1539732479,FR 1539732480,1539732735,UA 1539732736,1539732991,DK 1539732992,1539733247,PL @@ -20512,7 +20078,6 @@ 1539739392,1539739647,UA 1539739648,1539739903,DK 1539739904,1539740415,PL -1539740416,1539740671,RO 1539740672,1539740927,AT 1539740928,1539741183,RU 1539741184,1539741439,PL @@ -20532,7 +20097,6 @@ 1539744768,1539745023,SE 1539745024,1539745279,GB 1539745280,1539745535,GI -1539745536,1539745791,CH 1539745792,1539746303,DK 1539746560,1539746815,RU 1539746816,1539747071,DK @@ -20548,7 +20112,6 @@ 1539749376,1539749631,PT 1539749632,1539749887,GR 1539749888,1539750143,RU -1539750144,1539750399,TR 1539750400,1539750655,PL 1539750656,1539750911,DE 1539750912,1539751167,UA @@ -20559,7 +20122,6 @@ 1539752192,1539752447,SE 1539752448,1539752703,PL 1539752704,1539752959,AT -1539752960,1539753215,RO 1539753216,1539753471,DE 1539753472,1539753727,HU 1539753728,1539754239,FR @@ -20579,7 +20141,6 @@ 1539758336,1539758591,PL 1539758592,1539758847,NL 1539758848,1539759103,BA -1539759104,1539759359,DK 1539759360,1539759615,RU 1539759616,1539759871,PL 1539759872,1539760127,SE @@ -20622,7 +20183,6 @@ 1539769856,1539770111,FR 1539770112,1539770367,GR 1539770368,1539770623,DE -1539770624,1539770879,FR 1539770880,1539771135,RU 1539771136,1539771391,FR 1539771392,1539771647,PL @@ -20643,7 +20203,6 @@ 1539775488,1539775743,UA 1539775744,1539775999,IL 1539776256,1539776511,SK -1539776512,1539776767,HU 1539776768,1539777023,UA 1539777024,1539777279,RU 1539777280,1539777535,UA @@ -20653,12 +20212,9 @@ 1539778304,1539778559,LB 1539778560,1539778815,RU 1539778816,1539779071,RO -1539779072,1539779327,GB 1539779328,1539779583,CH -1539779584,1539779839,PL 1539779840,1539780095,NL 1539780096,1539780351,RU -1539780352,1539780607,AT 1539780608,1539780863,PL 1539780864,1539781119,RO 1539781120,1539781375,NL @@ -20690,14 +20246,13 @@ 1539788032,1539788287,HR 1539788288,1539788543,GB 1539788544,1539788799,HR -1539788800,1539789311,RU +1539788800,1539789055,RU 1539789568,1539789823,DE 1539789824,1539790079,NL 1539790080,1539790335,CH 1539790336,1539790591,LV 1539790848,1539791103,DE 1539791104,1539791359,PL -1539791360,1539791615,RU 1539791616,1539792383,UA 1539792384,1539792639,IL 1539792640,1539792895,PL @@ -20762,14 +20317,13 @@ 1539809280,1539809535,EU 1539809536,1539809791,SI 1539809792,1539810047,DE -1539810304,1539810559,SK +1539810304,1539810559,CZ 1539810560,1539810815,DE 1539810816,1539811071,TR 1539811072,1539811327,NL 1539811584,1539811839,DE 1539811840,1539812095,IT 1539812096,1539812351,RU -1539812352,1539812607,CH 1539812608,1539812863,IT 1539812864,1539813119,RU 1539813120,1539813375,AT @@ -20794,7 +20348,7 @@ 1539819264,1539819519,RO 1539819520,1539819775,AT 1539819776,1539820031,SI -1539820032,1539820287,VG +1539820032,1539820287,IL 1539820288,1539820543,PL 1539820544,1539820799,ES 1539820800,1539821055,RU @@ -20876,16 +20430,13 @@ 1539868672,1539869695,UA 1539869696,1539870719,ES 1539870720,1539871743,IL -1539871744,1539872767,ES 1539872768,1539873791,SE 1539873792,1539875839,UA -1539875840,1539876863,MD +1539875840,1539876863,RU 1539876864,1539877887,ES 1539877888,1539878911,PL -1539878912,1539879935,EU 1539879936,1539880959,UA 1539880960,1539881983,PL -1539881984,1539883007,UA 1539883008,1539884031,RS 1539884032,1539885055,MT 1539885056,1539886079,UA @@ -20894,7 +20445,8 @@ 1539888128,1539889151,UA 1539889152,1539889407,RU 1539889408,1539889663,TJ -1539889664,1539890175,RU +1539889664,1539889919,AU +1539889920,1539890175,RU 1539890176,1539891199,UA 1539891200,1539893247,RU 1539893248,1539894271,UA @@ -20902,13 +20454,11 @@ 1539896320,1539898367,UA 1539898368,1539899391,CZ 1539899392,1539900415,RU -1539900416,1539901439,EU 1539901440,1539902463,RU 1539902464,1539903487,LV 1539903488,1539904511,PL 1539904512,1539905535,CZ -1539905536,1539907583,UA -1539907584,1539908607,EU +1539905536,1539906559,UA 1539908608,1539910655,UA 1539910656,1539911679,PL 1539911680,1539913727,RU @@ -20947,8 +20497,8 @@ 1539950848,1539951103,RU 1539951104,1539951615,UA 1539951616,1539953663,RU -1539953664,1539954175,CH -1539954176,1539954687,KZ +1539953664,1539954175,AT +1539954176,1539954687,RU 1539954688,1539956735,RO 1539956736,1539957759,UA 1539957760,1539958783,RU @@ -21001,7 +20551,7 @@ 1540023296,1540024319,PL 1540024320,1540025343,RU 1540025344,1540026367,GB -1540026368,1540028415,UA +1540026368,1540027391,UA 1540029440,1540031487,RU 1540031488,1540032511,UA 1540032512,1540033535,RU @@ -21023,7 +20573,7 @@ 1540048896,1540049919,GB 1540050688,1540050943,UA 1540050944,1540052991,RU -1540052992,1540055039,UA +1540052992,1540054015,UA 1540055040,1540055295,EU 1540055296,1540055551,NO 1540055552,1540056063,EU @@ -21063,7 +20613,7 @@ 1540099072,1540100095,UA 1540100096,1540103167,RU 1540103168,1540105215,DE -1540105216,1540110335,UA +1540105216,1540106239,UA 1540110336,1540111359,RU 1540111360,1540112383,UA 1540112384,1540113407,LV @@ -21135,7 +20685,6 @@ 1540186112,1540187135,NL 1540187136,1540188159,US 1540188160,1540189183,KZ -1540189184,1540190207,GB 1540190208,1540191231,PT 1540191232,1540192255,FR 1540192256,1540195327,RU @@ -21160,9 +20709,7 @@ 1540217856,1540218879,GB 1540218880,1540219903,RU 1540219904,1540220927,PL -1540220928,1540221441,NL -1540221442,1540221569,US -1540221570,1540221951,NL +1540220928,1540221951,US 1540221952,1540223999,RU 1540224000,1540225023,PL 1540225024,1540226047,GB @@ -21279,11 +20826,10 @@ 1540291072,1540291583,BE 1540291584,1540292095,UA 1540292096,1540292607,RU -1540292608,1540293119,FR +1540292864,1540293119,IT 1540293120,1540293631,DK 1540293632,1540295167,UA 1540295168,1540295679,PL -1540295680,1540296191,SA 1540296192,1540296703,PL 1540296704,1540297215,DE 1540297216,1540298239,FR @@ -21318,12 +20864,10 @@ 1540316160,1540316415,EU 1540316416,1540316671,DE 1540316672,1540317183,RO -1540317184,1540317695,KG 1540317696,1540318207,UA 1540318208,1540318719,RU 1540318720,1540319231,RO 1540319232,1540320255,UA -1540320256,1540320767,RU 1540320768,1540321279,GB 1540321280,1540321791,SE 1540321792,1540322303,RU @@ -21344,7 +20888,6 @@ 1540330496,1540331007,PL 1540331008,1540331519,IT 1540331520,1540332031,GB -1540332032,1540332543,RU 1540332544,1540333055,PL 1540333056,1540333567,NO 1540333568,1540334079,RO @@ -21354,16 +20897,15 @@ 1540336128,1540336639,RU 1540336640,1540337663,MC 1540337664,1540338175,FR -1540338176,1540339199,RU +1540338688,1540339199,RU 1540339200,1540339711,UA 1540339712,1540340735,PL 1540340736,1540341247,CZ 1540341248,1540341759,BG 1540341760,1540342271,GB 1540342272,1540342783,UA -1540342784,1540343295,ES 1540343296,1540343807,GB -1540344320,1540344831,PL +1540343808,1540344831,PL 1540344832,1540345343,UA 1540345344,1540345855,IL 1540345856,1540346367,FR @@ -21404,9 +20946,7 @@ 1540361984,1540362239,EE 1540362240,1540362495,RU 1540362496,1540363007,DE -1540363008,1540363263,FR 1540363264,1540363519,RU -1540363520,1540363775,GB 1540363776,1540364031,IS 1540364032,1540364287,RU 1540364288,1540364543,NO @@ -21416,7 +20956,6 @@ 1540365312,1540365567,GB 1540365568,1540365823,RU 1540365824,1540366079,CH -1540366080,1540366335,IE 1540366336,1540366591,PL 1540366592,1540366847,RU 1540366848,1540367103,AT @@ -21486,7 +21025,6 @@ 1540384000,1540384255,SI 1540384256,1540384511,FR 1540384512,1540384767,SE -1540384768,1540385023,HR 1540385024,1540385279,GB 1540385280,1540385535,PL 1540385536,1540385791,DE @@ -21494,7 +21032,6 @@ 1540386304,1540386559,NL 1540386560,1540386815,GB 1540386816,1540387071,NL -1540387072,1540387327,RU 1540387328,1540387583,GB 1540387584,1540388095,UA 1540388096,1540388351,GB @@ -21576,8 +21113,7 @@ 1540410112,1540410367,KW 1540410368,1540410623,CH 1540410624,1540410879,RU -1540410880,1540411135,TR -1540411136,1540411391,SG +1540411136,1540411391,NL 1540411648,1540411903,FR 1540411904,1540412159,RU 1540412160,1540412415,BE @@ -21597,9 +21133,7 @@ 1540415744,1540415999,SI 1540416000,1540416255,FR 1540416256,1540416511,CH -1540416512,1540416767,RU 1540416768,1540417023,NL -1540417024,1540417279,RU 1540417280,1540417535,UA 1540417536,1540417791,RU 1540417792,1540418047,HR @@ -21632,7 +21166,6 @@ 1540426240,1540426495,IE 1540426496,1540426751,UA 1540426752,1540427263,NL -1540427264,1540427519,RU 1540427520,1540427775,FR 1540427776,1540428287,RU 1540428288,1540428543,SI @@ -21673,7 +21206,7 @@ 1540438528,1540439039,RU 1540439040,1540439295,GB 1540439296,1540439551,RO -1540439552,1540440063,PL +1540439552,1540439807,PL 1540440064,1540440319,UA 1540440320,1540440575,RU 1540440576,1540440831,MD @@ -21700,12 +21233,12 @@ 1540446720,1540446975,UA 1540446976,1540447231,RU 1540447232,1540447487,DE +1540447488,1540447743,PL 1540447744,1540447999,RU 1540448000,1540448255,PL 1540448256,1540448511,UA 1540448512,1540448767,IT 1540448768,1540449023,CH -1540449280,1540449535,UA 1540449536,1540449791,CZ 1540449792,1540450047,RO 1540450048,1540450303,DE @@ -21773,9 +21306,7 @@ 1540469760,1540470015,PL 1540470016,1540470271,SI 1540470272,1540470527,IL -1540470528,1540471039,RU 1540471040,1540471295,DE -1540471296,1540471551,RU 1540471552,1540471807,GB 1540471808,1540472063,SI 1540472064,1540472319,RO @@ -21808,7 +21339,6 @@ 1540480000,1540480255,GB 1540480256,1540480767,PL 1540480768,1540481023,GB -1540481024,1540481279,LT 1540481280,1540481535,GB 1540481536,1540481791,UA 1540482048,1540482303,DK @@ -21849,7 +21379,6 @@ 1540500480,1540501503,RU 1540501504,1540502527,PL 1540502528,1540503551,RU -1540503552,1540504575,NL 1540504576,1540505599,SE 1540505600,1540506623,RO 1540506624,1540507647,GB @@ -21899,12 +21428,11 @@ 1540564992,1540566015,DE 1540566016,1540567039,RU 1540567040,1540568063,MD -1540568064,1540572159,RU +1540568064,1540571135,RU 1540572160,1540573183,UA 1540573184,1540574207,NL 1540574208,1540576255,RU 1540576256,1540577279,PL -1540577280,1540578303,RO 1540578304,1540579327,RU 1540579328,1540580351,IE 1540580352,1540581375,PL @@ -21964,7 +21492,6 @@ 1540626432,1540626687,SI 1540626688,1540626943,PL 1540626944,1540627199,FR -1540627200,1540627455,PL 1540627456,1540627711,DK 1540627712,1540627967,CH 1540627968,1540628223,PL @@ -21975,10 +21502,8 @@ 1540629248,1540629503,RO 1540629504,1540629759,DK 1540629760,1540630015,BG -1540630016,1540630271,DE 1540630272,1540630527,RO 1540630528,1540630783,CH -1540630784,1540631039,RU 1540631040,1540631295,NL 1540631296,1540631551,CH 1540631552,1540631807,HR @@ -21986,12 +21511,9 @@ 1540632064,1540632319,AT 1540632320,1540632575,RU 1540632576,1540632831,DK -1540632832,1540633087,GB 1540633088,1540633343,RU -1540633344,1540633599,CH 1540633600,1540633855,RO 1540633856,1540634111,AE -1540634368,1540634623,FR 1540634624,1540634879,UA 1540634880,1540635135,RU 1540635136,1540635391,FR @@ -22000,14 +21522,12 @@ 1540636160,1540636415,RO 1540636416,1540636671,LV 1540636672,1540636927,RU -1540636928,1540637183,UA 1540637184,1540637439,RO 1540637440,1540637695,SA 1540637696,1540637951,RU 1540637952,1540638207,RS 1540638208,1540638463,RO 1540638464,1540638719,AM -1540638720,1540638975,UA 1540639232,1540639487,RO 1540639488,1540639491,CH 1540639492,1540639492,EU @@ -22234,7 +21754,7 @@ 1540702464,1540702719,PT 1540702720,1540702975,DK 1540702976,1540703231,RU -1540703232,1540703487,DE +1540703232,1540703487,GB 1540703488,1540703743,NL 1540703744,1540703999,DK 1540704000,1540704255,PL @@ -22640,8 +22160,7 @@ 1540920576,1540920831,PL 1540920832,1540921087,HU 1540921088,1540921599,RO -1540921600,1540921855,MT -1540921856,1540922111,EU +1540921600,1540922111,MT 1540922112,1540922367,ES 1540922368,1540922879,RO 1540922880,1540923135,DE @@ -22770,7 +22289,7 @@ 1540966912,1540967935,RU 1540967936,1540968447,UA 1540968960,1540969471,RO -1540969472,1540969983,NL +1540969472,1540969983,GB 1540969984,1540970495,DE 1540970496,1540971007,IE 1540971008,1540971519,UA @@ -22836,7 +22355,7 @@ 1540992256,1540992511,AT 1540992512,1540993279,DE 1540993280,1540993535,LB -1540993536,1540993791,SC +1540993536,1540993791,RU 1540993792,1540994047,UA 1540994048,1540994303,RU 1540994304,1540994559,SE @@ -22856,7 +22375,6 @@ 1540998400,1540998655,UA 1540998656,1540998911,PL 1540998912,1540999167,DE -1540999168,1540999423,RU 1540999424,1540999679,DK 1540999680,1540999935,RU 1540999936,1541000191,RO @@ -22928,9 +22446,7 @@ 1541038080,1541039103,UA 1541039104,1541040127,RU 1541040128,1541041151,UA -1541041152,1541042175,RU -1541042176,1541043199,DE -1541043200,1541044223,RU +1541041152,1541044223,RU 1541044224,1541045247,US 1541045248,1541046271,NL 1541046272,1541051391,RU @@ -23351,7 +22867,7 @@ 1541265408,1541265919,RS 1541265920,1541266431,UA 1541266432,1541266943,KW -1541266944,1541267455,US +1541266944,1541267455,CY 1541267456,1541267967,FR 1541267968,1541268479,DE 1541268480,1541268991,AM @@ -23490,7 +23006,6 @@ 1541359616,1541359871,PL 1541359872,1541360127,FR 1541360128,1541360383,CZ -1541360384,1541360639,RU 1541360640,1541360895,FR 1541360896,1541361151,UA 1541361152,1541361407,PL @@ -23513,7 +23028,6 @@ 1541365760,1541366015,DE 1541366016,1541366271,UA 1541366272,1541366527,RU -1541366528,1541366783,RO 1541366784,1541367039,NO 1541367040,1541367295,AT 1541367296,1541367807,UA @@ -23686,7 +23200,7 @@ 1541420032,1541420543,RU 1541420544,1541421055,NL 1541421056,1541421567,PL -1541421568,1541422079,CZ +1541421568,1541422079,GB 1541422080,1541422591,PL 1541422592,1541423103,RU 1541423616,1541424127,AT @@ -23697,14 +23211,14 @@ 1541426176,1541426687,RU 1541426688,1541427199,UA 1541427200,1541428223,RU -1541428224,1541429247,UA +1541428224,1541428991,UA +1541428992,1541429247,RU 1541429248,1541429759,FI 1541429760,1541430271,CZ 1541430272,1541430783,LT 1541430784,1541431295,CH 1541431296,1541431807,UA 1541431808,1541432319,RU -1541432320,1541432831,RO 1541432832,1541433343,RU 1541433344,1541433855,PL 1541433856,1541434367,RU @@ -23756,7 +23270,6 @@ 1541463552,1541464063,UA 1541464064,1541464575,PL 1541464576,1541465087,DE -1541465088,1541465599,RU 1541465600,1541466111,FR 1541466112,1541467135,RU 1541467136,1541467647,PL @@ -23867,7 +23380,7 @@ 1541572608,1541573119,RU 1541573120,1541573631,UA 1541573632,1541574655,RU -1541574656,1541575167,DK +1541574656,1541575167,SE 1541575168,1541575423,PL 1541575424,1541575679,IT 1541575680,1541577727,RU @@ -23903,7 +23416,7 @@ 1541592576,1541593087,FR 1541593088,1541594111,CZ 1541594112,1541594367,AL -1541594368,1541595135,RU +1541594624,1541595135,RU 1541595136,1541595647,IR 1541595648,1541596159,BG 1541596160,1541597695,PL @@ -24194,7 +23707,6 @@ 1541766144,1541767167,GB 1541767168,1541767679,UA 1541767680,1541768191,FR -1541768192,1541769215,RO 1541769216,1541769471,FR 1541769472,1541770239,FI 1541770240,1541770495,CH @@ -24254,8 +23766,7 @@ 1541795584,1541795839,ES 1541795840,1541796863,UA 1541796864,1541797375,RU -1541797376,1541797887,NL -1541797888,1541798143,GB +1541797376,1541798143,GB 1541798144,1541798911,PL 1541798912,1541799935,CZ 1541799936,1541800447,FR @@ -24472,7 +23983,6 @@ 1541913088,1541914623,RU 1541914624,1541915647,IL 1541915648,1541916671,RU -1541916672,1541917695,RO 1541917696,1541917951,CH 1541917952,1541918207,PL 1541918208,1541918463,UA @@ -24543,12 +24053,10 @@ 1541958144,1541958655,RS 1541958656,1541959679,RU 1541959680,1541959935,PL -1541959936,1541960191,RU -1541960192,1541960703,NL +1541959936,1541960703,RU 1541960704,1541961727,UA 1541961728,1541962751,RU -1541962752,1541963007,GB -1541963008,1541963263,GB +1541962752,1541963263,GB 1541963264,1541963519,RU 1541963520,1541964031,UA 1541964288,1541964543,NL @@ -24568,7 +24076,8 @@ 1541974016,1541975551,RU 1541975552,1541975807,TR 1541975808,1541976319,PL -1541976320,1541977087,UA +1541976320,1541976575,UA +1541976576,1541977087,RU 1541977088,1541977343,IT 1541977344,1541977599,GB 1541977600,1541977855,RO @@ -24587,7 +24096,8 @@ 1541984768,1541985279,RO 1541985280,1541986303,CZ 1541986304,1541986815,RU -1541986816,1541988351,SK +1541986816,1541987327,CZ +1541987328,1541988351,SK 1541988352,1541988607,FR 1541988608,1541988863,RU 1541988864,1541989631,RO @@ -24619,7 +24129,6 @@ 1542000640,1542000895,GB 1542000896,1542001151,UA 1542001152,1542001663,PL -1542001664,1542001919,SC 1542001920,1542002175,HU 1542002176,1542002687,NL 1542002688,1542002943,RS @@ -24669,7 +24178,7 @@ 1542028800,1542029055,CH 1542029056,1542029311,UA 1542029312,1542029823,GB -1542029824,1542031359,RU +1542030336,1542031359,RU 1542031360,1542032383,PL 1542032384,1542032639,UA 1542032640,1542032895,SA @@ -24707,7 +24216,7 @@ 1542055936,1542057471,PL 1542057472,1542060031,RU 1542060032,1542060287,SK -1542060288,1542060543,DE +1542060288,1542060543,RO 1542060544,1542061055,PL 1542061056,1542062079,IT 1542062080,1542064127,UA @@ -24827,7 +24336,7 @@ 1542131712,1542134271,PL 1542134272,1542136319,RU 1542136320,1542136831,DE -1542136832,1542137855,TJ +1542136832,1542137855,RU 1542137856,1542138367,ES 1542138368,1542138623,RU 1542138624,1542138879,RO @@ -24977,7 +24486,6 @@ 1542223104,1542223359,GB 1542223360,1542223871,UA 1542223872,1542224127,RU -1542224128,1542224383,UA 1542224384,1542224639,DE 1542224640,1542224895,DK 1542224896,1542225151,RU @@ -25187,7 +24695,8 @@ 1542346240,1542348287,RU 1542348288,1542348799,MD 1542348800,1542349823,RU -1542349824,1542351359,UA +1542349824,1542350847,UA +1542350848,1542351359,CZ 1542351360,1542351615,BG 1542351616,1542351871,PL 1542351872,1542353151,RU @@ -25279,7 +24788,6 @@ 1542397952,1542398463,NL 1542398464,1542398975,DE 1542398976,1542399231,PL -1542399232,1542399487,RU 1542399488,1542399999,DK 1542400000,1542401535,RU 1542401536,1542401791,GB @@ -25325,7 +24833,6 @@ 1542422016,1542422527,RU 1542422528,1542422783,RO 1542422784,1542423039,PL -1542423040,1542423295,RO 1542423296,1542424575,RU 1542424576,1542425599,UA 1542425600,1542426623,RU @@ -25553,7 +25060,7 @@ 1542540800,1542541311,GB 1542541312,1542542335,UA 1542542336,1542542847,RU -1542542848,1542543359,IT +1542542848,1542543359,GB 1542543360,1542544383,RU 1542544384,1542544639,IR 1542544640,1542544895,UA @@ -25728,7 +25235,9 @@ 1542979584,1543110655,DE 1543110656,1543127039,UA 1543127040,1543143423,DE -1543143424,1543241727,RO +1543143424,1543167999,RO +1543168000,1543172095,MD +1543172096,1543241727,RO 1543241728,1543503871,IT 1543503872,1545601023,GB 1545601024,1545674495,SE @@ -25750,7 +25259,7 @@ 1546080256,1546084351,AZ 1546084352,1546088447,RU 1546088448,1546092159,A2 -1546092160,1546092287,SD +1546092160,1546092287,SS 1546092288,1546092543,A2 1546092544,1546096639,RU 1546096640,1546100735,IT @@ -25759,8 +25268,7 @@ 1546108928,1546113023,IM 1546113024,1546121215,RU 1546121216,1546123263,FR -1546123264,1546124799,ES -1546124800,1546125311,FR +1546123264,1546125311,ES 1546125312,1546256383,GB 1546256384,1546264575,RU 1546264576,1546266623,TR @@ -25796,8 +25304,7 @@ 1546328064,1546330111,CZ 1546330112,1546332159,SE 1546332160,1546334207,GB -1546334208,1546335743,DE -1546335744,1546336255,GB +1546334208,1546336255,DE 1546336256,1546338303,CZ 1546338304,1546340351,GB 1546340352,1546342399,DK @@ -25831,27 +25338,27 @@ 1546682368,1546698751,BE 1546698752,1546715135,NL 1546715136,1546731519,LV -1546731520,1546733567,RE -1546733568,1546733823,FR -1546733824,1546734335,RE -1546734336,1546734591,FR -1546734592,1546735615,RE -1546735616,1546739711,FR -1546739712,1546741759,GP -1546741760,1546742015,FR +1546731520,1546731775,RE +1546731776,1546733823,FR +1546733824,1546734079,RE +1546734080,1546734847,FR +1546734848,1546735103,RE +1546735104,1546739711,FR +1546739712,1546739967,GP +1546739968,1546740223,FR +1546740224,1546740479,GP +1546740480,1546740991,FR +1546740992,1546741503,GP +1546741504,1546741759,FR +1546741760,1546742015,GP 1546742016,1546742527,MQ -1546742528,1546743039,GF -1546743040,1546743551,FR +1546742528,1546743295,GF +1546743296,1546743551,FR 1546743552,1546743807,GF 1546743808,1546744063,MQ 1546744064,1546744319,FR 1546744320,1546744831,MQ -1546744832,1546745855,FR -1546745856,1546746111,MQ -1546746112,1546746367,FR -1546746368,1546746879,MQ -1546746880,1546747647,FR -1546747648,1546747903,MQ +1546744832,1546747903,FR 1546747904,1546764287,RU 1546764288,1546780671,UA 1546780672,1546797055,IR @@ -25928,9 +25435,39 @@ 1547608064,1547612159,LB 1547612160,1547616255,IR 1547616256,1547620351,DK -1547620352,1547623167,A2 +1547620352,1547620375,A2 +1547620376,1547620383,NG +1547620384,1547620399,A2 +1547620400,1547620407,NG +1547620408,1547620599,A2 +1547620600,1547620607,NG +1547620608,1547620919,A2 +1547620920,1547620927,NG +1547620928,1547621015,A2 +1547621016,1547621023,NG +1547621024,1547621047,A2 +1547621048,1547621055,NG +1547621056,1547621183,A2 +1547621184,1547621191,NG +1547621192,1547621215,A2 +1547621216,1547621223,NG +1547621224,1547621231,A2 +1547621232,1547621239,NG +1547621240,1547621255,A2 +1547621256,1547621263,NG +1547621264,1547621271,A2 +1547621272,1547621279,NG +1547621280,1547621447,A2 +1547621448,1547621455,NG +1547621456,1547621463,A2 +1547621464,1547621471,NG +1547621472,1547622919,A2 +1547622920,1547622935,NG +1547622936,1547623167,A2 1547623168,1547623423,NG -1547623424,1547624447,A2 +1547623424,1547623479,A2 +1547623480,1547623487,NG +1547623488,1547624447,A2 1547624448,1547628543,CZ 1547628544,1547632639,BG 1547632640,1547636735,TR @@ -25998,57 +25535,100 @@ 1551604736,1551630335,EU 1551630336,1551892479,RU 1551892480,1553989631,FR -1553989632,1553992447,MQ -1553992448,1553992703,FR -1553992704,1553992959,MQ +1553989632,1553991935,MQ +1553991936,1553992447,FR +1553992448,1553992959,MQ 1553992960,1553993215,FR -1553993216,1553996031,MQ -1553996032,1553996287,FR -1553996288,1553997055,MQ +1553993216,1553993727,MQ +1553993728,1553993983,FR +1553993984,1553997055,MQ 1553997056,1553997311,FR -1553997312,1553998335,MQ -1553998336,1553998591,FR -1553998592,1554000895,MQ -1554000896,1554001151,FR -1554001152,1554001663,MQ +1553997312,1553999615,MQ +1553999616,1553999871,FR +1553999872,1554001151,MQ +1554001152,1554001407,FR +1554001408,1554001663,MQ 1554001664,1554001919,FR -1554001920,1554006015,MQ -1554006016,1554010111,GP -1554010112,1554010623,FR -1554010624,1554012159,GP -1554012160,1554012415,FR -1554012416,1554012671,GP -1554012672,1554012927,FR -1554012928,1554017023,GP -1554017024,1554017279,FR -1554017280,1554022143,GP +1554001920,1554002175,MQ +1554002176,1554002687,FR +1554002688,1554004223,MQ +1554004224,1554004479,FR +1554004480,1554005247,MQ +1554005248,1554005759,FR +1554005760,1554006015,MQ +1554006016,1554007039,GP +1554007040,1554007295,FR +1554007296,1554009599,GP +1554009600,1554010111,FR +1554010112,1554010367,GP +1554010368,1554010623,FR +1554010624,1554010879,GP +1554010880,1554011135,FR +1554011136,1554013951,GP +1554013952,1554014207,FR +1554014208,1554015231,GP +1554015232,1554015743,FR +1554015744,1554015999,GP +1554016000,1554016255,FR +1554016256,1554017279,GP +1554017280,1554017535,FR +1554017536,1554018047,GP +1554018048,1554018303,FR +1554018304,1554018559,GP +1554018560,1554018815,FR +1554018816,1554022143,GP 1554022144,1554022399,FR -1554022400,1554024191,GP -1554024192,1554024447,FR -1554024448,1554025471,GP -1554025472,1554025983,FR -1554025984,1554030591,GP -1554030592,1554032383,MQ +1554022400,1554023423,GP +1554023424,1554023679,FR +1554023680,1554023935,GP +1554023936,1554024191,FR +1554024192,1554024703,GP +1554024704,1554024959,FR +1554024960,1554025471,GP +1554025472,1554025727,FR +1554025728,1554026751,GP +1554026752,1554027007,FR +1554027008,1554027519,GP +1554027520,1554027775,FR +1554027776,1554028031,GP +1554028032,1554028543,FR +1554028544,1554029311,GP +1554029312,1554029567,FR +1554029568,1554030591,GP +1554030592,1554030847,FR +1554030848,1554031359,MQ +1554031360,1554031615,FR +1554031616,1554032383,MQ 1554032384,1554032639,FR -1554032640,1554033151,MQ -1554033152,1554033407,FR -1554033408,1554037503,MQ -1554037504,1554037759,FR -1554037760,1554038271,MQ -1554038272,1554038527,FR -1554038528,1554038783,MQ +1554032640,1554032895,MQ +1554032896,1554033151,FR +1554033152,1554034687,MQ +1554034688,1554034943,FR +1554034944,1554035455,MQ +1554035456,1554035711,FR +1554035712,1554038783,MQ 1554038784,1554039295,RE 1554039296,1554039807,FR -1554039808,1554043135,RE +1554039808,1554041343,RE +1554041344,1554041599,FR +1554041600,1554041855,RE +1554041856,1554042623,FR +1554042624,1554043135,RE 1554043136,1554043391,FR -1554043392,1554044927,RE -1554044928,1554045183,FR -1554045184,1554046719,RE -1554046720,1554046975,FR -1554046976,1554047231,RE -1554047232,1554047999,FR -1554048000,1554054911,RE -1554054912,1556086783,FR +1554043392,1554043903,RE +1554043904,1554044159,FR +1554044160,1554044415,RE +1554044416,1554045183,FR +1554045184,1554046463,RE +1554046464,1554047999,FR +1554048000,1554049791,RE +1554049792,1554050047,FR +1554050048,1554051071,RE +1554051072,1554051327,FR +1554051328,1554052095,RE +1554052096,1554052607,FR +1554052608,1554054655,RE +1554054656,1556086783,FR 1556086784,1556491204,DE 1556491205,1556491205,EU 1556491206,1557921791,DE @@ -26075,7 +25655,6 @@ 1559355392,1559388159,RU 1559388160,1559396351,UA 1559396352,1559404543,GB -1559404544,1559412735,FI 1559412736,1559420927,IR 1559420928,1559429119,HR 1559429120,1559437311,FR @@ -26160,14 +25739,13 @@ 1566158848,1566162943,RU 1566162944,1566167039,PL 1566167040,1566171135,UA -1566171136,1566175230,CY -1566175231,1566175231,TR +1566171136,1566174463,CY +1566174464,1566175231,TR 1566175232,1566179327,IE 1566179328,1566183423,DK 1566183424,1566187519,ES 1566187520,1566191615,RU 1566191616,1566195711,FI -1566195712,1566199807,AL 1566199808,1566207999,RU 1566208000,1566212095,DK 1566212096,1566216191,DE @@ -26182,10 +25760,7 @@ 1566265344,1566266367,US 1566266368,1566269407,A2 1566269408,1566269439,DE -1566269440,1566271487,NO -1566271488,1566271999,FI -1566272000,1566272511,SE -1566272512,1566273535,NO +1566269440,1566273535,NO 1566273536,1566277631,RU 1566277632,1566281727,IT 1566281728,1566285823,CZ @@ -26233,17 +25808,15 @@ 1566388224,1566390271,HU 1566390272,1566392319,LT 1566392320,1566394367,ES -1566394368,1566394527,NO -1566394528,1566394528,DK +1566394368,1566394528,NO 1566394529,1566394529,FR -1566394530,1566394530,DK +1566394530,1566394530,NO 1566394531,1566394531,DE 1566394532,1566394532,PL 1566394533,1566394533,NL 1566394534,1566394534,SE 1566394535,1566394535,PT -1566394536,1566394623,DK -1566394624,1566396415,NO +1566394536,1566396415,NO 1566396416,1566398463,GB 1566398464,1566400511,RU 1566400512,1566402559,NO @@ -26266,9 +25839,7 @@ 1566443520,1566445567,NO 1566445568,1566447615,PL 1566447616,1566451711,IT -1566451712,1566452223,IL -1566452224,1566452479,TR -1566452480,1566453759,IL +1566451712,1566453759,IL 1566453760,1566455807,IQ 1566455808,1566457855,PT 1566457856,1566459903,CH @@ -26277,7 +25848,11 @@ 1566464000,1566466047,IT 1566466048,1566468095,ES 1566468096,1566470143,BE -1566470144,1566471167,GB +1566470144,1566471007,GB +1566471008,1566471011,IE +1566471012,1566471143,GB +1566471144,1566471147,IE +1566471148,1566471167,GB 1566471168,1566471423,IE 1566471424,1566474239,GB 1566474240,1566476287,DE @@ -26319,7 +25894,8 @@ 1566554112,1566556159,UA 1566556160,1566558207,RU 1566558208,1566560255,JO -1566560256,1566561279,SM +1566560256,1566560767,IT +1566560768,1566561279,SM 1566561280,1566564351,IT 1566564352,1566566399,IS 1566566400,1566568447,FR @@ -26344,15 +25920,9 @@ 1567696384,1567696895,MD 1567696896,1567705087,RO 1567705088,1567707135,MD -1567707136,1567712767,RO -1567712768,1567713279,DE -1567713280,1567715327,RO +1567707136,1567715327,RO 1567715328,1567717375,MD -1567717376,1567742975,RO -1567742976,1567743487,MD -1567743488,1567750655,RO -1567750656,1567751167,SE -1567751168,1567752191,RO +1567717376,1567752191,RO 1567752192,1567756287,MD 1567756288,1567763521,RO 1567763522,1567763522,EU @@ -26364,7 +25934,9 @@ 1567830016,1567831039,MD 1567831040,1567840255,RO 1567840256,1567841279,DE -1567841280,1567880191,RO +1567841280,1567875071,RO +1567875072,1567879167,MD +1567879168,1567880191,RO 1567880192,1567881215,SE 1567881216,1567883263,RO 1567883264,1567948799,MD @@ -26375,57 +25947,83 @@ 1568086016,1568178175,RO 1568178176,1568210943,RU 1568210944,1568243711,GB -1568243712,1568245759,GP -1568245760,1568246271,FR -1568246272,1568246527,GF -1568246528,1568246911,GP -1568246912,1568247295,FR -1568247296,1568247551,GF +1568243712,1568244735,GP +1568244736,1568244991,FR +1568244992,1568245759,GP +1568245760,1568246527,FR +1568246528,1568247039,GP +1568247040,1568247551,FR 1568247552,1568248831,GP 1568248832,1568249087,MQ 1568249088,1568249599,GP 1568249600,1568249855,MQ -1568249856,1568249983,FR -1568249984,1568250879,GP -1568250880,1568251135,MQ +1568249856,1568250879,GP +1568250880,1568251135,FR 1568251136,1568251903,GP 1568251904,1568252159,MQ 1568252160,1568252415,GP 1568252416,1568252671,MQ 1568252672,1568252927,GP 1568252928,1568253183,GF -1568253184,1568253439,GP -1568253440,1568253951,MQ -1568253952,1568254463,GP -1568254464,1568254975,FR -1568254976,1568255743,GP -1568255744,1568255999,FR -1568256000,1568257023,GP -1568257024,1568257279,FR -1568257280,1568257791,GP +1568253184,1568254463,GP +1568254464,1568254719,FR +1568254720,1568254975,GF +1568254976,1568255231,GP +1568255232,1568255743,FR +1568255744,1568255999,GF +1568256000,1568257023,FR +1568257024,1568257279,GP +1568257280,1568257791,FR 1568257792,1568258047,MQ 1568258048,1568258559,FR -1568258560,1568259071,GF -1568259072,1568260095,MQ -1568260096,1568261119,GP -1568261120,1568263167,MQ -1568263168,1568264191,FR -1568264192,1568268287,GP -1568268288,1568268543,FR -1568268544,1568269055,GP -1568269056,1568269311,GF +1568258560,1568258815,GF +1568258816,1568259071,FR +1568259072,1568259839,MQ +1568259840,1568260095,GP +1568260096,1568260351,FR +1568260352,1568261119,GP +1568261120,1568261375,FR +1568261376,1568262143,GP +1568262144,1568262655,MQ +1568262656,1568263167,GP +1568263168,1568263423,FR +1568263424,1568263935,MQ +1568263936,1568264191,FR +1568264192,1568266239,GP +1568266240,1568266495,FR +1568266496,1568267263,GP +1568267264,1568268543,FR +1568268544,1568269311,GP 1568269312,1568269567,MQ -1568269568,1568272639,GP -1568272640,1568273151,GF -1568273152,1568273407,FR -1568273408,1568274687,MQ -1568274688,1568274943,GP -1568274944,1568275967,MQ -1568275968,1568276223,FR -1568276224,1568276479,MQ -1568276480,1568309247,DE +1568269568,1568269823,GP +1568269824,1568270079,MQ +1568270080,1568270335,GP +1568270336,1568270591,FR +1568270592,1568271359,GP +1568271360,1568271615,FR +1568271616,1568272383,GP +1568272384,1568272895,FR +1568272896,1568273407,GF +1568273408,1568274175,FR +1568274176,1568274431,MQ +1568274432,1568274687,FR +1568274688,1568274943,MQ +1568274944,1568275199,GP +1568275200,1568275455,MQ +1568275456,1568275711,FR +1568275712,1568275967,MQ +1568275968,1568276479,FR +1568276480,1568292943,DE +1568292944,1568292959,NL +1568292960,1568309247,DE 1568309248,1568342015,RO -1568342016,1568374783,BG +1568342016,1568349183,BG +1568349184,1568350207,US +1568350208,1568362495,BG +1568362496,1568363264,RO +1568363265,1568370687,BG +1568370688,1568372735,US +1568372736,1568374783,BG 1568374784,1568440319,RU 1568440320,1568473087,NO 1568473088,1568505855,BY @@ -26469,14 +26067,14 @@ 1570621440,1570625535,RU 1570625536,1570627583,GB 1570627584,1570635775,RU -1570635776,1570644991,FR +1570635776,1570644767,FR +1570644768,1570644775,GB +1570644776,1570644991,FR 1570644992,1570645247,GB 1570645248,1570652159,FR 1570652160,1570655999,SE 1570656000,1570656255,GB -1570656256,1570660863,SE -1570660864,1570661375,NO -1570661376,1570668543,SE +1570656256,1570668543,SE 1570668544,1570701311,RU 1570701312,1570717695,PL 1570717696,1570725887,HR @@ -26489,56 +26087,46 @@ 1570764800,1570766847,DE 1570766848,1571291135,DK 1571291136,1571422207,RO -1571422208,1571422975,CZ -1571422976,1571423231,RU -1571423232,1571423743,CZ -1571423744,1571423999,RU -1571424000,1571424255,CZ -1571424256,1571424511,KG -1571424512,1571425279,CZ +1571422208,1571422719,CZ +1571422720,1571423231,RU +1571423232,1571423487,CZ +1571423488,1571423999,RU +1571424000,1571424255,KZ +1571424256,1571424511,CZ +1571424512,1571424767,AM +1571424768,1571425279,CZ 1571425280,1571425535,RU -1571425536,1571428351,CZ -1571428352,1571428863,RU -1571428864,1571429375,CZ +1571425536,1571425791,NL +1571425792,1571429375,CZ 1571429376,1571435519,UA 1571435520,1571436543,CZ 1571436544,1571438591,RU 1571438592,1571441663,UA 1571441664,1571441791,RU 1571441792,1571441919,DE -1571441920,1571442175,CZ -1571442176,1571442687,NL +1571441920,1571442687,CZ 1571442688,1571443199,UA 1571443200,1571443455,CZ 1571443456,1571443711,UA 1571443712,1571444735,CZ 1571444736,1571446783,NL -1571446784,1571447807,KZ -1571447808,1571448831,CZ +1571446784,1571448831,CZ 1571448832,1571450879,US 1571450880,1571451903,UA -1571451904,1571452927,RU -1571452928,1571453951,CZ +1571451904,1571453951,CZ 1571453952,1571454975,GB 1571454976,1571455999,RU -1571456000,1571456511,CY -1571456512,1571457023,CZ +1571456000,1571457023,CZ 1571457024,1571458047,UA 1571458048,1571459071,CZ 1571459072,1571463167,UA -1571463168,1571465215,RU -1571465216,1571469311,CZ +1571463168,1571469311,CZ 1571469312,1571470335,RU 1571470336,1571473407,CZ 1571473408,1571475455,RU -1571475456,1571477503,CZ -1571477504,1571478527,RU -1571478528,1571485695,CZ -1571485696,1571487743,RU +1571475456,1571487743,CZ 1571487744,1571495935,SK -1571495936,1571500031,CZ -1571500032,1571502079,RU -1571502080,1571504127,CZ +1571495936,1571504127,CZ 1571504128,1571508223,UA 1571508224,1571514367,CZ 1571514368,1571520511,BY @@ -26546,26 +26134,24 @@ 1571522560,1571522815,RU 1571522816,1571524607,CZ 1571524608,1571526655,RU -1571526656,1571528703,CZ -1571528704,1571529727,MD -1571529728,1571530239,RU -1571530240,1571531263,CZ +1571526656,1571531263,CZ 1571531264,1571531775,UA 1571531776,1571532799,RU 1571532800,1571534079,CZ 1571534080,1571534847,RU 1571534848,1571535103,LV 1571535104,1571535871,CZ -1571535872,1571539967,RU -1571539968,1571541503,CZ -1571541504,1571542015,CY -1571542016,1571544063,CZ -1571544064,1571545087,RU -1571545088,1571545343,CZ +1571535872,1571538943,RU +1571538944,1571541248,CZ +1571541249,1571541504,UA +1571541505,1571543551,CZ +1571543552,1571543807,UA +1571543808,1571544063,CZ +1571544064,1571545343,RU 1571545344,1571545599,UA -1571545600,1571546111,CZ -1571546112,1571546623,KZ -1571546624,1571549183,CZ +1571545600,1571545855,CZ +1571545856,1571546111,RU +1571546112,1571549183,CZ 1571549184,1571552255,UA 1571552256,1571553279,CZ 1571553280,1571684351,IL @@ -26594,8 +26180,7 @@ 1571731456,1571733503,CH 1571733504,1571735551,FI 1571735552,1571737599,NL -1571737600,1571737855,GB -1571737856,1571739647,EU +1571737600,1571739647,EU 1571739648,1571741695,GB 1571741696,1571743743,RU 1571743744,1571745791,GB @@ -26614,30 +26199,24 @@ 1571790848,1571794943,PL 1571794944,1571799039,NL 1571799040,1571815423,UA -1571815424,1571816959,FR -1571816960,1571817983,RE -1571817984,1571818239,FR -1571818240,1571819007,RE -1571819008,1571820031,FR -1571820032,1571820287,RE -1571820288,1571820543,FR -1571820544,1571821055,RE +1571815424,1571816703,FR +1571816704,1571817471,RE +1571817472,1571818751,FR +1571818752,1571819007,RE +1571819008,1571820799,FR +1571820800,1571821055,RE 1571821056,1571821311,FR 1571821312,1571821567,RE -1571821568,1571822591,FR -1571822592,1571823103,RE -1571823104,1571824383,FR +1571821568,1571824383,FR 1571824384,1571824639,RE 1571824640,1571825407,FR 1571825408,1571825663,RE -1571825664,1571826175,FR -1571826176,1571826431,RE -1571826432,1571827711,FR +1571825664,1571827711,FR 1571827712,1571827967,RE -1571827968,1571828479,FR -1571828480,1571828991,RE -1571828992,1571829759,FR -1571829760,1571831807,RE +1571827968,1571829503,FR +1571829504,1571829759,RE +1571829760,1571831551,FR +1571831552,1571831807,RE 1571831808,1571848191,DK 1571848192,1571864575,RU 1571864576,1571880959,PL @@ -26650,11 +26229,9 @@ 1571995648,1572012031,UA 1572012032,1572020223,NO 1572020224,1572028415,SE -1572028416,1572028927,RU +1572028416,1572028927,GB 1572028928,1572029183,UA -1572029184,1572029439,GB -1572029440,1572029951,RU -1572029952,1572030463,GB +1572029184,1572030463,GB 1572030464,1572042751,RU 1572042752,1572043263,GB 1572043264,1572044799,RU @@ -26681,8 +26258,7 @@ 1572257792,1572274175,FR 1572274176,1572276223,FI 1572276224,1572277247,US -1572277248,1572277759,DE -1572277760,1572290559,SG +1572277248,1572290559,SG 1572290560,1572306943,RU 1572306944,1572323327,BG 1572323328,1572339711,UA @@ -26702,7 +26278,10 @@ 1572392960,1572393471,NL 1572393472,1572393983,GB 1572393984,1572394495,DE -1572394496,1572397055,US +1572394496,1572394751,FR +1572394752,1572395263,US +1572395264,1572395519,NL +1572395520,1572397055,US 1572397056,1572401151,AZ 1572401152,1572405247,GB 1572405248,1572409343,CZ @@ -26728,9 +26307,7 @@ 1572491264,1572495359,IT 1572495360,1572499455,RU 1572499456,1572503551,TR -1572503552,1572506111,IT -1572506112,1572506623,GR -1572506624,1572507647,IT +1572503552,1572507647,IT 1572507648,1572511743,GB 1572511744,1572515839,DE 1572515840,1572519935,NL @@ -26742,9 +26319,7 @@ 1572538368,1572540415,NL 1572540416,1572542463,GB 1572542464,1572544511,IT -1572544512,1572544639,IQ -1572544640,1572544767,US -1572544768,1572546559,IQ +1572544512,1572546559,IQ 1572546560,1572548607,FR 1572548608,1572550655,NL 1572550656,1572552703,DE @@ -26756,9 +26331,12 @@ 1572562944,1572564991,CZ 1572564992,1572567039,DE 1572567040,1572569087,RU -1572569088,1572571135,NL 1572571136,1572573183,RO -1572573184,1572575231,GG +1572573184,1572573439,GB +1572573440,1572574463,GG +1572574464,1572574719,GB +1572574720,1572574975,GG +1572574976,1572575231,GB 1572575232,1572577279,RU 1572577280,1572579327,AM 1572579328,1572581375,GB @@ -26819,15 +26397,13 @@ 1572691968,1572694015,SA 1572694016,1572696063,GB 1572696064,1572698111,HU -1572698112,1572700159,RU 1572700160,1572702207,NL 1572702208,1572704255,IT 1572704256,1572706303,RU 1572706304,1572708351,DE -1572708352,1572708863,GB -1572708864,1572709375,GG -1572709376,1572709887,GB -1572709888,1572710399,GG +1572708352,1572708735,GB +1572708736,1572708863,GG +1572708864,1572710399,GB 1572710400,1572712447,DE 1572712448,1572714495,ES 1572714496,1572716543,IT @@ -26840,7 +26416,6 @@ 1572728832,1572730879,SE 1572730880,1572732927,RU 1572732928,1572734975,HU -1572734976,1572737023,KZ 1572737024,1572739071,RU 1572739072,1572741119,IR 1572741120,1572743167,FI @@ -26911,8 +26486,9 @@ 1578434560,1578500095,HU 1578500096,1578565631,FI 1578565632,1578582015,FR -1578582016,1578584575,IT -1578584576,1578586111,PT +1578582016,1578584063,IT +1578584064,1578585087,FR +1578585088,1578586111,PT 1578586112,1578588159,ES 1578588160,1578590207,PL 1578590208,1578592175,FR @@ -26926,9 +26502,7 @@ 1578593472,1578593479,GB 1578593480,1578595419,FR 1578595420,1578595423,GB -1578595424,1578596351,FR -1578596352,1578596863,GB -1578596864,1578602495,FR +1578595424,1578602495,FR 1578602496,1578604543,NL 1578604544,1578606591,GB 1578606592,1578607725,DE @@ -26954,7 +26528,9 @@ 1579106304,1579122687,DE 1579122688,1579155455,RU 1579155456,1579679743,IT -1579679744,1579745279,PL +1579679744,1579686143,PL +1579686144,1579686271,DE +1579686272,1579745279,PL 1579745280,1579810815,RU 1579810816,1579876351,PL 1579876352,1579941887,GE @@ -26963,9 +26539,7 @@ 1580015616,1580048383,UA 1580048384,1580064767,RU 1580064768,1580072959,DE -1580072960,1580075183,PT -1580075184,1580075184,GB -1580075185,1580134399,PT +1580072960,1580134399,PT 1580134400,1580136447,ES 1580136448,1580138495,PT 1580138496,1580204031,IT @@ -26982,9 +26556,7 @@ 1581826048,1581842431,GB 1581842432,1581858815,BG 1581858816,1581875199,IT -1581875200,1581890559,TR -1581890560,1581891071,GB -1581891072,1581891583,TR +1581875200,1581891583,TR 1581891584,1581907967,RU 1581907968,1581924351,IT 1581924352,1581940735,UA @@ -27011,14 +26583,12 @@ 1582252032,1582268415,TR 1582268416,1582284799,DE 1582284800,1582301183,BH -1582301184,1583176703,IT -1583176704,1583177727,US -1583177728,1583349759,IT +1582301184,1583176707,IT +1583176708,1583176709,US +1583176710,1583349759,IT 1583349760,1583611903,SA 1583611904,1583615999,LV -1583616000,1583617844,NL -1583617845,1583617845,NL -1583617846,1583620095,NL +1583616000,1583620095,NL 1583620096,1583624191,IT 1583624192,1583628287,RS 1583628288,1583632383,DE @@ -27039,7 +26609,9 @@ 1583693824,1583697919,RU 1583697920,1583702015,TR 1583702016,1583706111,RU -1583706112,1583710207,GI +1583706368,1583706623,GB +1583707648,1583707903,GI +1583708160,1583708287,GI 1583710208,1583712255,IR 1583712256,1583714303,AE 1583714304,1583722495,GB @@ -27057,7 +26629,9 @@ 1583767552,1583771647,AT 1583771648,1583775743,RU 1583775744,1583779839,IT -1583779840,1583780335,GB +1583779840,1583780263,GB +1583780264,1583780271,IT +1583780272,1583780335,GB 1583780336,1583780343,IT 1583780344,1583780423,GB 1583780424,1583780431,IT @@ -27073,7 +26647,9 @@ 1583781360,1583781367,IT 1583781368,1583781863,GB 1583781864,1583781871,IT -1583781872,1583782415,GB +1583781872,1583782215,GB +1583782216,1583782223,IT +1583782224,1583782415,GB 1583782416,1583782423,IT 1583782424,1583782431,GB 1583782432,1583782439,IT @@ -27083,9 +26659,7 @@ 1583783480,1583783487,IT 1583783488,1583783535,GB 1583783536,1583783543,IT -1583783544,1583783687,GB -1583783688,1583783695,IT -1583783696,1583783935,GB +1583783544,1583783935,GB 1583783936,1583788031,EU 1583788032,1583792127,TM 1583792128,1583796223,IE @@ -27093,8 +26667,8 @@ 1583800320,1583804415,ME 1583804416,1583808511,GB 1583808512,1583812607,MD -1583812608,1583816367,NL -1583816368,1583816383,GB +1583812608,1583816351,NL +1583816352,1583816383,GB 1583816384,1583816703,NL 1583816704,1583820799,TR 1583820800,1583824895,LV @@ -27124,7 +26698,7 @@ 1585199104,1585201151,NL 1585201152,1585205247,IT 1585205248,1585207295,FR -1585207296,1585211391,NL +1585207296,1585209343,NL 1585211392,1585213439,CZ 1585213440,1585214463,GB 1585214464,1585217535,NL @@ -27133,30 +26707,30 @@ 1585221632,1585223679,SK 1585223680,1585224959,FR 1585224960,1585225215,RE -1585225216,1585225471,FR -1585225472,1585225727,YT +1585225216,1585225727,FR 1585225728,1585227775,UA 1585227776,1585231871,RU 1585231872,1585233919,CZ 1585233920,1585238015,RU 1585238016,1585240063,DE -1585240064,1585240831,FR -1585240832,1585241343,MQ -1585241344,1585242111,GP +1585240064,1585240575,FR +1585240576,1585240831,MQ +1585240832,1585241087,FR +1585241088,1585241343,GP +1585241344,1585241599,MQ +1585241600,1585241855,GP +1585241856,1585242111,MQ 1585242112,1585244159,RU 1585244160,1585246207,FR 1585246208,1585248255,RU -1585248256,1585249279,CZ -1585249280,1585249791,DE -1585249792,1585250303,CZ +1585248256,1585250303,CZ 1585250304,1585254399,RU 1585254400,1585256447,GB 1585256448,1585258495,DE 1585258496,1585260543,GB 1585260544,1585264639,RU 1585264640,1585265663,MT -1585265664,1585266175,IM -1585266176,1585266687,MT +1585265664,1585266687,IM 1585266688,1585270783,DE 1585270784,1585272831,IT 1585272832,1585274879,RU @@ -27304,20 +26878,18 @@ 1586403328,1586405375,IS 1586405376,1586407423,AT 1586407424,1586409471,GB -1586409472,1586411519,IT 1586411520,1586412031,GB 1586412032,1586412287,US 1586412288,1586413567,GB 1586413568,1586415615,IT -1586415616,1586416383,ES -1586416384,1586417663,AD +1586415616,1586416255,ES +1586416256,1586417663,AD 1586417664,1586419711,NL 1586419712,1586421759,DE 1586421760,1586423807,SE 1586423808,1586425855,CZ 1586425856,1586427903,NL -1586427904,1586429951,FR -1586429952,1586431999,CH +1586427904,1586431999,CH 1586432000,1586434047,DK 1586434048,1586436095,BE 1586436096,1586438143,ES @@ -27334,7 +26906,6 @@ 1586464768,1586466815,ES 1586466816,1586468863,RU 1586468864,1586470911,IT -1586470912,1586472959,GB 1586472960,1586475007,CZ 1586475008,1586477055,GR 1586477056,1586479103,BE @@ -27360,7 +26931,14 @@ 1587179520,1587183615,UA 1587183616,1587199999,RU 1587200000,1587216383,UA -1587216384,1587347455,BG +1587216384,1587316735,BG +1587316736,1587318783,US +1587318784,1587325951,BG +1587325952,1587326975,GR +1587326976,1587341311,BG +1587341312,1587342335,US +1587342336,1587343359,DE +1587343360,1587347455,BG 1587347456,1587412991,NL 1587412992,1587417087,RU 1587417088,1587425279,UA @@ -27378,17 +26956,18 @@ 1588068352,1588592639,GB 1588592640,1588621311,RO 1588621312,1588625407,MD -1588625408,1588689407,RO -1588689408,1588689919,DE -1588689920,1588723711,RO +1588625408,1588641791,RO +1588641792,1588643839,ES +1588643840,1588673535,RO +1588673536,1588674559,MD +1588674560,1588723711,RO 1588723712,1588854783,UA 1588854784,1588985855,RU 1588985856,1589182463,IR 1589182464,1589198847,OM 1589198848,1589200895,FR 1589200896,1589202943,IT -1589202944,1589203455,SE -1589203456,1589204991,NL +1589202944,1589204991,NL 1589204992,1589207039,DE 1589207040,1589215231,IT 1589215232,1589247999,GB @@ -27403,9 +26982,7 @@ 1589510144,1589542911,RU 1589542912,1589575679,BG 1589575680,1589608447,RU -1589608448,1589611007,DK -1589611008,1589611263,SE -1589611264,1589612543,DK +1589608448,1589612543,DK 1589612544,1589620735,SE 1589620736,1589641215,DK 1589641216,1590034431,GB @@ -27429,7 +27006,7 @@ 1590073344,1590075391,NL 1590075392,1590077439,BE 1590077440,1590079487,GB -1590079488,1590079743,GP +1590079488,1590079743,MQ 1590079744,1590081535,FR 1590081536,1590083583,GB 1590083584,1590085631,RU @@ -27451,12 +27028,10 @@ 1590116352,1590120447,RU 1590120448,1590122495,IT 1590122496,1590124543,DE -1590124544,1590126591,CH 1590126592,1590128639,RU 1590128640,1590130687,FI 1590130688,1590132735,FR 1590132736,1590134783,GB -1590134784,1590136831,ES 1590136832,1590138879,GB 1590138880,1590140927,FR 1590140928,1590142975,UA @@ -27466,9 +27041,7 @@ 1590149120,1590151167,CZ 1590151168,1590153215,TR 1590153216,1590157311,RU -1590157312,1590157823,GB -1590157824,1590158335,IE -1590158336,1590161407,GB +1590157312,1590161407,GB 1590161408,1590163455,DE 1590163456,1590165503,NL 1590165504,1590176643,AE @@ -27497,17 +27070,14 @@ 1592053760,1592057855,NL 1592057856,1592061951,RS 1592061952,1592066047,RU -1592066048,1592067583,US -1592067584,1592068095,CY -1592068096,1592068607,US -1592068608,1592070143,CY +1592066048,1592066559,CY +1592066560,1592067583,US +1592067584,1592070143,CY 1592070144,1592074239,RU 1592074240,1592078335,SK 1592078336,1592082431,NL 1592082432,1592086527,GB -1592086528,1592087551,CZ -1592087552,1592088063,PL -1592088064,1592090623,CZ +1592086528,1592090623,CZ 1592090624,1592094719,RU 1592094720,1592098815,RS 1592098816,1592102911,GB @@ -27565,14 +27135,11 @@ 1592317952,1592319999,PL 1592320000,1592322047,LT 1592322048,1592324095,RU -1592326144,1592328191,UA 1592328192,1592393727,RU 1592393728,1592459263,SE 1592459264,1592524799,TR 1592524800,1592557567,GB -1592557568,1592576511,BG -1592576512,1592577023,FR -1592577024,1592590335,BG +1592557568,1592590335,BG 1592590336,1592623103,FI 1592623104,1592655871,RU 1592655872,1592786943,FR @@ -27596,14 +27163,14 @@ 1593098240,1593114623,CH 1593114624,1593122815,DK 1593122816,1593131007,SE -1593131008,1593147135,GB +1593131008,1593136895,GB +1593136896,1593137023,FR +1593137024,1593147135,GB 1593147136,1593147391,EU 1593147392,1593163775,RU 1593163776,1593180159,AT 1593180160,1593196543,NO -1593196544,1593210879,SE -1593210880,1593211391,NO -1593211392,1593212927,SE +1593196544,1593212927,SE 1593212928,1593229311,PL 1593229312,1593245695,EE 1593245696,1593247743,NL @@ -27660,9 +27227,7 @@ 1595408384,1595998207,RU 1595998208,1596063743,DE 1596063744,1596129279,NO -1596129280,1596141055,IL -1596141056,1596141311,FR -1596141312,1596194815,IL +1596129280,1596194815,IL 1596194816,1596260351,NL 1596260352,1596325887,RU 1596325888,1596391423,IR @@ -27685,7 +27250,28 @@ 1596950528,1596950783,UA 1596950784,1596951551,CZ 1596951552,1596952063,NL -1596952064,1596981247,CZ +1596952064,1596952575,UA +1596952576,1596952831,RU +1596952832,1596953599,CZ +1596953600,1596954623,UA +1596954624,1596956415,CZ +1596956416,1596956671,RU +1596956672,1596956960,CZ +1596956961,1596956992,DE +1596956993,1596957183,CZ +1596957184,1596957439,UA +1596957440,1596958719,CZ +1596958720,1596960767,RU +1596960768,1596961791,CZ +1596961792,1596962815,RU +1596962816,1596963327,AM +1596963328,1596964607,CZ +1596964608,1596965887,RU +1596965888,1596966911,KG +1596966912,1596968959,CZ +1596968960,1596973055,BA +1596973056,1596975103,BY +1596975104,1596981247,CZ 1596981248,1597243391,PL 1597243392,1597505535,RU 1597505536,1597767679,KZ @@ -27714,9 +27300,7 @@ 1599127552,1599143935,CZ 1599143936,1599160319,UA 1599160320,1599176703,IR -1599176704,1599188991,FR -1599188992,1599189503,DE -1599189504,1599190015,FR +1599176704,1599190015,FR 1599190016,1599190271,EU 1599190272,1599193087,FR 1599193088,1599209471,RU @@ -27804,9 +27388,7 @@ 1602291712,1602293759,SA 1602293760,1602295807,GB 1602295808,1602297855,NL -1602297856,1602298879,IL -1602298880,1602299391,MT -1602299392,1602299903,GB +1602297856,1602299903,IL 1602299904,1602301951,GR 1602301952,1602303999,DE 1602304000,1602306047,RU @@ -27843,8 +27425,9 @@ 1602375680,1602377727,BY 1602377728,1602379775,PS 1602379776,1602383871,GB -1602383872,1602384127,DE -1602384128,1602385919,EU +1602383872,1602383951,EU +1602383952,1602383952,DE +1602383953,1602385919,EU 1602385920,1602387967,AT 1602387968,1602390015,RU 1602390016,1602392063,IT @@ -27854,7 +27437,9 @@ 1602398208,1602400255,TR 1602400256,1602402303,RU 1602402304,1602404351,LU -1602404352,1602406399,GB +1602404352,1602405631,GB +1602405632,1602405759,CN +1602405760,1602406399,GB 1602406400,1602408447,DE 1602408448,1602410495,DK 1602410496,1602412543,NO @@ -27873,10 +27458,7 @@ 1602441216,1602443263,GB 1602443264,1602445311,RU 1602445312,1602447359,DE -1602447360,1602447871,GB -1602447872,1602448383,DE -1602448384,1602448895,NL -1602448896,1602449407,GB +1602447360,1602449407,GB 1602449408,1602451455,LV 1602451456,1602453503,DE 1602453504,1602455551,SK @@ -27899,48 +27481,32 @@ 1602781184,1602813951,FR 1602813952,1602846719,RU 1602846720,1602879487,GE -1602879488,1602879743,RE -1602879744,1602880511,FR -1602880512,1602881791,RE -1602881792,1602882047,FR -1602882048,1602882815,RE -1602882816,1602883327,FR -1602883328,1602884863,RE -1602884864,1602885887,FR -1602885888,1602886143,RE -1602886144,1602886911,FR -1602886912,1602887423,RE -1602887424,1602888703,FR -1602888704,1602888959,RE -1602888960,1602889983,FR -1602889984,1602892799,RE -1602892800,1602893823,FR -1602893824,1602894335,RE -1602894336,1602894847,FR -1602894848,1602895103,RE -1602895104,1602895871,FR -1602895872,1602896127,RE +1602879488,1602896127,RE 1602896128,1602896924,FR 1602896925,1602896925,RE -1602896926,1602897919,FR -1602897920,1602899199,MQ -1602899200,1602899455,FR +1602896926,1602897407,FR +1602897408,1602897663,RE +1602897664,1602899455,FR 1602899456,1602899711,MQ 1602899712,1602900223,FR -1602900224,1602900991,MQ -1602900992,1602901247,FR -1602901248,1602902527,MQ -1602902528,1602903039,FR -1602903040,1602903807,MQ +1602900224,1602900383,MQ +1602900384,1602900415,FR +1602900416,1602900479,MQ +1602900480,1602900991,FR +1602900992,1602901503,MQ +1602901504,1602901759,FR +1602901760,1602902527,MQ +1602902528,1602903551,FR +1602903552,1602903807,MQ 1602903808,1602904063,FR 1602904064,1602904575,RE -1602904576,1602906111,FR -1602906112,1602908671,RE +1602904576,1602908415,FR +1602908416,1602908671,RE 1602908672,1602909183,FR -1602909184,1602910975,RE -1602910976,1602911231,FR -1602911232,1602911743,RE -1602911744,1602912255,FR +1602909184,1602909439,RE +1602909440,1602910463,FR +1602910464,1602910719,RE +1602910720,1602912255,FR 1602912256,1602928639,GB 1602928640,1602930687,HU 1602930688,1602932735,GB @@ -27953,9 +27519,7 @@ 1603026944,1603031039,SE 1603031040,1603035135,RU 1603035136,1603039231,SY -1603039232,1603042559,RS -1603042560,1603042687,RS -1603042688,1603043327,RS +1603039232,1603043327,RS 1603043328,1603047423,IT 1603047424,1603051519,RU 1603051520,1603055615,JO @@ -27966,8 +27530,7 @@ 1603067928,1603071999,GB 1603072000,1603076095,CZ 1603076096,1603080191,RU -1603080192,1603080447,GB -1603080448,1603080703,SE +1603080192,1603080703,GB 1603080704,1603080831,US 1603080832,1603080959,SE 1603080960,1603081087,DE @@ -27983,8 +27546,7 @@ 1603082496,1603082751,GT 1603082752,1603083007,ES 1603083008,1603083263,UA -1603083264,1603083535,DE -1603083536,1603083551,GB +1603083264,1603083551,DE 1603083552,1603083567,NL 1603083568,1603083583,LU 1603083584,1603083615,DE @@ -28003,9 +27565,7 @@ 1603133440,1603137535,RU 1603137536,1603141631,KW 1603141632,1603145727,ES -1603145728,1603146239,IL -1603146240,1603146751,US -1603146752,1603149823,IL +1603145728,1603149823,IL 1603149824,1603153919,RU 1603153920,1603158015,NL 1603158016,1603162111,DE @@ -28027,10 +27587,7 @@ 1603219456,1603223551,CH 1603223552,1603225087,GB 1603225088,1603225343,FR -1603225344,1603225855,GB -1603225856,1603226111,FR -1603226112,1603226623,GB -1603226624,1603227647,FR +1603225344,1603227647,GB 1603227648,1603231743,AT 1603231744,1603235839,IT 1603235840,1603239935,RU @@ -28092,10 +27649,7 @@ 1604919296,1604927487,NO 1604927488,1604935679,IT 1604935680,1604952063,RU -1604952064,1604958719,DE -1604958720,1604959231,RU -1604959232,1604959743,DE -1604959744,1604960255,RU +1604952064,1604960255,DE 1604960256,1604968447,BG 1604968448,1604976639,ES 1604976640,1604993023,FR @@ -28111,23 +27665,27 @@ 1605083136,1605091327,BE 1605091328,1605099519,PL 1605099520,1605107711,RU -1605107712,1605108255,GB -1605108256,1605108263,IT +1605107712,1605108247,GB +1605108248,1605108263,IT 1605108264,1605108407,GB 1605108408,1605108415,IT 1605108416,1605108567,GB 1605108568,1605108575,IT -1605108576,1605108623,GB -1605108624,1605108631,IT -1605108632,1605110263,GB +1605108576,1605109223,GB +1605109224,1605109231,IT +1605109232,1605109431,GB +1605109432,1605109439,IT +1605109440,1605109495,GB +1605109496,1605109503,IT +1605109504,1605110111,GB +1605110112,1605110119,IT +1605110120,1605110263,GB 1605110264,1605110271,IT 1605110272,1605110279,GB 1605110280,1605110287,IT -1605110288,1605111111,GB -1605111112,1605111119,IT -1605111120,1605111639,GB -1605111640,1605111647,IT -1605111648,1605111847,GB +1605110288,1605111023,GB +1605111024,1605111031,IT +1605111032,1605111847,GB 1605111848,1605111855,IT 1605111856,1605111919,GB 1605111920,1605111927,IT @@ -28137,29 +27695,31 @@ 1605112368,1605112375,IT 1605112376,1605112847,GB 1605112848,1605112855,IT -1605112856,1605112879,GB -1605112880,1605112887,IT -1605112888,1605113087,GB +1605112856,1605113087,GB 1605113088,1605113095,IT 1605113096,1605113223,GB 1605113224,1605113231,IT 1605113232,1605113383,GB 1605113384,1605113391,IT -1605113392,1605113503,GB +1605113392,1605113423,GB +1605113424,1605113431,IT +1605113432,1605113503,GB 1605113504,1605113511,IT 1605113512,1605114199,GB 1605114200,1605114207,IT 1605114208,1605114263,GB 1605114264,1605114271,IT -1605114272,1605114871,GB +1605114272,1605114279,GB +1605114280,1605114287,IT +1605114288,1605114295,GB +1605114296,1605114303,IT +1605114304,1605114871,GB 1605114872,1605114879,IT 1605114880,1605114959,GB 1605114960,1605114967,IT 1605114968,1605115007,GB 1605115008,1605115015,IT -1605115016,1605115231,GB -1605115232,1605115239,IT -1605115240,1605115903,GB +1605115016,1605115903,GB 1605115904,1605124095,RU 1605124096,1605125119,GB 1605125120,1605125267,DE @@ -28169,18 +27729,13 @@ 1605125905,1605125920,DE 1605125921,1605126911,GB 1605126912,1605127167,EU -1605127168,1605127679,US -1605127680,1605128191,GB -1605128192,1605128703,US -1605128704,1605129215,GB -1605129216,1605129727,US -1605129728,1605130244,GB +1605127168,1605130239,GB +1605130240,1605130244,DE 1605130245,1605130245,EU -1605130246,1605130247,GB +1605130246,1605130247,DE 1605130248,1605130248,EU -1605130249,1605131263,GB -1605131264,1605131775,US -1605131776,1605132287,GB +1605130249,1605130367,DE +1605130368,1605132287,GB 1605132288,1605148671,RU 1605148672,1605156863,PT 1605156864,1605165055,JO @@ -28227,12 +27782,10 @@ 1605697536,1605734399,RU 1605734400,1605736447,GB 1605736448,1605742591,RU -1605742592,1605743103,GB -1605743104,1605744127,RU -1605744128,1605744639,GB +1605742592,1605744639,GB 1605744640,1605756927,RU -1605756928,1605763071,GB -1605763072,1605795839,RU +1605756928,1605758975,GB +1605758976,1605795839,RU 1605795840,1605828607,BE 1605828608,1605861375,RU 1605861376,1605894143,TR @@ -28245,9 +27798,7 @@ 1607532544,1607562495,SE 1607562496,1607562751,DK 1607562752,1607569407,SE -1607569408,1607571455,DK -1607571456,1607571967,SE -1607571968,1607572479,DK +1607569408,1607572479,DK 1607572480,1607575551,SE 1607575552,1607577599,DK 1607577600,1607581695,SE @@ -28256,8 +27807,8 @@ 1607585792,1607598079,DK 1607598080,1607598335,IT 1607598336,1607598591,EU -1607598592,1607602175,IT -1607602176,1607606271,FR +1607598592,1607606015,IT +1607606016,1607606271,FR 1607606272,1607609343,IT 1607609344,1607609599,EU 1607609600,1607610367,IT @@ -28268,48 +27819,41 @@ 1607617536,1607618559,EU 1607618560,1607620607,ES 1607620608,1607621375,IT -1607621376,1607622655,EU +1607621376,1607621631,EU +1607621632,1607622655,IT 1607622656,1607624703,ES -1607624704,1607625983,IT +1607624704,1607625727,EU +1607625728,1607625983,ES 1607625984,1607626239,EU -1607626240,1607626751,IT +1607626240,1607626751,ES 1607626752,1607627519,EU 1607627520,1607628543,IT 1607628544,1607628799,EU -1607628800,1607630847,FR -1607630848,1607634431,EU +1607628800,1607629055,FR +1607629056,1607629567,IT +1607629568,1607634431,EU 1607634432,1607636479,IT 1607636480,1607647231,EU 1607647232,1607651327,DE 1607651328,1607655423,FR -1607655424,1607659519,IT -1607659520,1607660031,GB -1607660032,1607663615,IT -1607663616,1607695559,NL -1607695560,1607695560,NL -1607695561,1607729151,NL +1607655424,1607663615,IT +1607663616,1607729151,NL 1607729152,1607761919,EG 1607761920,1607766015,SY 1607766016,1607794687,EG -1607794688,1607802879,RU -1607802880,1607811583,GB -1607811584,1607813631,RU -1607813632,1607815167,GB -1607815168,1607819263,RU -1607819264,1607820287,GB -1607820288,1607821055,RU -1607821056,1607821823,GB -1607821824,1607822335,RU -1607822336,1607822847,GB -1607822848,1607826687,RU -1607826688,1607827455,GB -1607827456,1607860223,RU +1607794688,1607860223,RU 1607860224,1607892991,ES 1607892992,1607893055,GB 1607893056,1607893119,DE -1607893120,1607893247,ES +1607893120,1607893183,DK +1607893184,1607893247,IT 1607893248,1607893311,AT -1607893312,1607925759,ES +1607893312,1607893375,FR +1607893376,1607893439,SE +1607893440,1607893503,NL +1607893504,1607893567,BE +1607893568,1607893631,IE +1607893632,1607925759,ES 1607925760,1607926783,RU 1607926784,1607927807,UA 1607927808,1607929855,RU @@ -28374,10 +27918,8 @@ 1611227136,1611235327,CA 1611235328,1611923455,US 1611923456,1612185599,CA -1612185600,1612611329,US -1612611330,1612611330,CA -1612611331,1612611583,US -1612611584,1612636159,CA +1612185600,1612611327,US +1612611328,1612636159,CA 1612636160,1613471743,US 1613471744,1613479935,JM 1613479936,1613488127,US @@ -28386,12 +27928,17 @@ 1613504512,1613529087,CA 1613529088,1613545471,US 1613545472,1613565951,CA -1613565952,1613606911,US +1613565952,1613574143,US +1613578240,1613606911,US 1613606912,1613615103,CA 1613615104,1613635583,US 1613635584,1613640191,CA 1613640192,1613640319,US -1613640320,1613643775,CA +1613640320,1613640447,CA +1613640448,1613640575,US +1613640576,1613643263,CA +1613643264,1613643391,US +1613643392,1613643775,CA 1613643776,1613676543,US 1613676544,1613680639,CA 1613680640,1613737983,US @@ -28407,9 +27954,7 @@ 1614786560,1618837503,US 1618837504,1618841599,CA 1618841600,1618849791,US -1618849792,1618852863,CA -1618852864,1618853375,US -1618853376,1618862079,CA +1618849792,1618862079,CA 1618862080,1618866175,US 1618866176,1618870271,CA 1618870272,1618984959,US @@ -28418,11 +27963,7 @@ 1632305152,1632321535,CA 1632321536,1632354303,US 1632354304,1632362495,CA -1632362496,1632583679,US -1632583680,1632584191,US -1632584192,1632587007,US -1632587008,1632587263,US -1632587264,1634414591,US +1632362496,1634414591,US 1634414592,1634418687,CA 1634418688,1634447359,US 1634447360,1634451455,CA @@ -28430,13 +27971,7 @@ 1634455552,1634459647,CA 1634459648,1634467839,US 1634467840,1634729983,CA -1634729984,1645740031,US -1645740032,1645741055,US -1645741056,1645772799,US -1645772800,1645773823,US -1645773824,1650919315,US -1650919316,1650919316,US -1650919317,1652293631,US +1634729984,1652293631,US 1652293632,1652310015,CA 1652310016,1653500927,US 1653500928,1653501183,FR @@ -28448,9 +27983,7 @@ 1653555200,1653567487,CA 1653567488,1653571583,US 1653571584,1653575679,CA -1653575680,1653575797,US -1653575798,1653575798,US -1653575799,1653592063,US +1653575680,1653592063,US 1653592064,1653596159,CA 1653596160,1653600255,US 1653600256,1653604351,CA @@ -28467,9 +28000,7 @@ 1673986048,1674051583,CA 1674051584,1674575871,US 1674575872,1677721599,CA -1677721600,1680534015,US -1680534016,1680534527,CN -1680534528,1680535551,US +1677721600,1680535551,US 1680535552,1680539647,CA 1680539648,1680564223,US 1680564224,1680572415,CA @@ -28541,7 +28072,9 @@ 1700986880,1701003263,VN 1701003264,1701011455,MY 1701011456,1701019647,CN -1701019648,1701052415,GU +1701019648,1701035519,GU +1701035520,1701035775,US +1701035776,1701052415,GU 1701052416,1701117951,NZ 1701117952,1701134335,NC 1701134336,1701142527,CN @@ -28717,7 +28250,6 @@ 1728316416,1728317439,MY 1728317440,1728319487,JP 1728319488,1728320511,AU -1728320512,1728321535,PH 1728321536,1728322559,JP 1728322560,1728323583,MY 1728323584,1728324607,JP @@ -28747,9 +28279,11 @@ 1728346624,1728347135,AU 1728347136,1728347147,SG 1728347148,1728347148,AP -1728347149,1728347421,SG +1728347149,1728347391,SG +1728347392,1728347421,AU 1728347422,1728347422,AP -1728347423,1728348159,SG +1728347423,1728347647,AU +1728347648,1728348159,SG 1728348160,1728349183,VN 1728349184,1728349951,AU 1728349952,1728350207,NP @@ -29016,7 +28550,7 @@ 1728593152,1728593407,AU 1728593408,1728593663,IN 1728593664,1728593919,ID -1728593920,1728595967,JP +1728593920,1728594943,JP 1728595968,1728596479,NZ 1728596480,1728598015,ID 1728598016,1728599039,NZ @@ -29028,7 +28562,6 @@ 1728606208,1728607231,PK 1728607232,1728608255,IN 1728608256,1728608511,SG -1728608512,1728608767,IN 1728608768,1728609023,ID 1728609024,1728610303,IN 1728610304,1728611327,TH @@ -29087,7 +28620,6 @@ 1728668672,1728669695,SG 1728669696,1728670207,BD 1728670208,1728670463,NZ -1728670464,1728670719,FJ 1728670720,1728671743,JP 1728671744,1728672767,BD 1728672768,1728673791,TW @@ -29113,7 +28645,6 @@ 1728692224,1728693247,JP 1728693248,1728698367,VN 1728698368,1728699391,NZ -1728699392,1728699903,BD 1728699904,1728700415,IN 1728700416,1728700671,BD 1728700672,1728700927,IN @@ -29137,7 +28668,6 @@ 1728716800,1728717823,AU 1728717824,1728718847,JP 1728718848,1728719871,MY -1728719872,1728720895,NZ 1728720896,1728721919,AU 1728721920,1728722943,BD 1728722944,1728723199,ID @@ -29269,7 +28799,6 @@ 1728836608,1728837631,HK 1728837632,1728838655,KR 1728838656,1728839679,ID -1728839680,1728839935,FJ 1728839936,1728840191,IN 1728840192,1728840447,SG 1728840448,1728842751,AU @@ -29297,7 +28826,6 @@ 1728861184,1728861439,ID 1728861440,1728862207,AU 1728862208,1728863231,PH -1728863232,1728864255,HK 1728864256,1728865279,AF 1728865280,1728866303,AU 1728866304,1728867327,VN @@ -29348,11 +28876,10 @@ 1728902656,1728902911,MY 1728902912,1728903167,BD 1728903168,1728905215,KR -1728905216,1728905471,FJ 1728905472,1728905727,PK -1728905728,1728907263,IN +1728905728,1728906239,IN 1728907264,1728908287,NZ -1728908288,1728912383,JP +1728909312,1728912383,JP 1728912384,1728913407,TH 1728913408,1728914431,PH 1728914432,1728915199,ID @@ -29363,7 +28890,7 @@ 1728919552,1728920575,AU 1728920576,1728921599,JP 1728921600,1728922623,AF -1728922624,1728924415,AU +1728922624,1728923647,AU 1728924416,1728924671,MY 1728924672,1728925695,VN 1728925696,1728927743,AU @@ -29373,7 +28900,6 @@ 1728930816,1728931839,AU 1728931840,1728932863,JP 1728932864,1728933887,IN -1728933888,1728934911,JP 1728934912,1728935935,NZ 1728935936,1728936959,MY 1728936960,1728937983,CN @@ -29411,7 +28937,6 @@ 1728966656,1728967679,IN 1728967680,1728968703,CN 1728968704,1728970751,JP -1728970752,1728971007,FJ 1728971008,1728971263,AU 1728971264,1728971519,IN 1728971520,1728971775,NZ @@ -29430,8 +28955,7 @@ 1728982016,1728982527,ID 1728982528,1728982783,IN 1728982784,1728985087,AU -1728985088,1728986111,TW -1728986112,1728987135,PH +1728985088,1728987135,PH 1728987136,1728988159,AU 1728988160,1728988191,NZ 1728988192,1728988199,US @@ -29447,7 +28971,6 @@ 1728995328,1728996095,IN 1728996096,1728996351,SG 1728996352,1728997375,HK -1728997376,1728998399,PH 1728998400,1728998655,ID 1728998656,1728998911,BD 1728998912,1728999423,ID @@ -29633,7 +29156,8 @@ 1729162240,1729163263,JP 1729163264,1729165311,TW 1729165312,1729166335,JP -1729166336,1729167359,HK +1729166336,1729166847,SG +1729166848,1729167359,HK 1729167360,1729168383,IN 1729168384,1729169407,JP 1729169408,1729170431,TW @@ -29973,7 +29497,6 @@ 1729520640,1729527807,CN 1729527808,1729528831,SG 1729528832,1729530879,ID -1729530880,1729531903,MY 1729531904,1729532927,AU 1729532928,1729533951,MY 1729533952,1729534975,JP @@ -30000,7 +29523,6 @@ 1729554944,1729555455,NZ 1729555456,1729556479,IN 1729556480,1729557503,ID -1729557504,1729558527,HK 1729558528,1729559551,ID 1729559552,1729560575,CN 1729560576,1729561599,AU @@ -30150,7 +29672,8 @@ 1729703936,1729704959,CN 1729705216,1729705471,AU 1729705472,1729705983,ID -1729705984,1729707007,AU +1729705984,1729706751,AU +1729706752,1729707007,NZ 1729707008,1729708031,HK 1729708032,1729710079,CN 1729710080,1729711103,HK @@ -30272,6 +29795,7 @@ 1729829888,1729831935,AU 1729831936,1729832191,ID 1729832192,1729832447,NZ +1729832448,1729832959,AU 1729832960,1729833983,JP 1729833984,1729835007,SG 1729835008,1729836031,IN @@ -30283,6 +29807,62 @@ 1729842176,1729843199,HK 1729843200,1729844223,JP 1729844224,1729845247,IN +1729845248,1729846271,NZ +1729846272,1729847295,AU +1729847296,1729848319,CN +1729848320,1729849343,TH +1729849344,1729850367,MY +1729850368,1729851391,HK +1729851392,1729852415,MY +1729852416,1729853439,MM +1729853440,1729853695,IN +1729853696,1729853951,NZ +1729853952,1729854463,PH +1729854464,1729855487,HK +1729855488,1729856511,KR +1729856512,1729857535,AU +1729857536,1729858559,JP +1729858560,1729859583,IN +1729859584,1729860607,HK +1729860608,1729861631,KR +1729861632,1729862655,AU +1729862656,1729863679,JP +1729863680,1729864703,AU +1729864704,1729866751,IN +1729866752,1729867775,AU +1729867776,1729868799,CN +1729868800,1729869823,HK +1729869824,1729870847,JP +1729870848,1729871871,AU +1729871872,1729872895,JP +1729872896,1729873919,AU +1729873920,1729874943,TH +1729874944,1729875455,MY +1729875456,1729875967,ID +1729875968,1729876991,CN +1729876992,1729878015,JP +1729878016,1729879039,NZ +1729879040,1729879167,AU +1729879168,1729879679,JP +1729879680,1729879807,AU +1729879808,1729880063,JP +1729880064,1729880831,AU +1729880832,1729881087,NZ +1729881088,1729881215,PH +1729881216,1729881343,TH +1729881344,1729881471,ID +1729881472,1729881599,VN +1729881600,1729881727,TH +1729881728,1729881855,PH +1729881856,1729881983,VN +1729881984,1729882111,ID +1729882112,1729883135,IN +1729883136,1729884159,VN +1729884160,1729885183,CN +1729885184,1729886207,JP +1729886208,1729887743,ID +1729887744,1729887999,VU +1729888000,1729888255,IN 1729888256,1729889279,KH 1729889280,1729891327,CN 1729891328,1729892351,ID @@ -30316,7 +29896,8 @@ 1729918976,1729919999,BD 1729920000,1729921023,TH 1729921024,1729922047,AU -1729922048,1729923071,AF +1729922048,1729922559,US +1729922560,1729923071,AF 1729923072,1729924095,VN 1729924096,1729925119,IN 1729925120,1729926143,HK @@ -30407,7 +29988,7 @@ 1730010112,1730011135,IN 1730011136,1730012159,BT 1730012160,1730013183,ID -1730013184,1730014207,IN +1730013184,1730015231,IN 1730015232,1730016255,MY 1730016256,1730017279,PH 1730017280,1730017791,IN @@ -30531,6 +30112,181 @@ 1730147328,1730148351,JP 1730148352,1730149375,ID 1730149376,1730150399,JP +1743781888,1743783935,JP +1743783936,1743784959,IN +1743784960,1743785983,JP +1743785984,1743787007,CN +1743787008,1743789055,JP +1743789056,1743790079,KR +1743790080,1743791103,IN +1743791104,1743792127,CN +1743792128,1743793151,HK +1743793152,1743794175,BD +1743794176,1743795199,KR +1743795200,1743796223,NZ +1743796224,1743797247,JP +1743797248,1743798271,TH +1743798272,1743800319,HK +1743800320,1743801343,CN +1743801344,1743802367,IN +1743802368,1743803391,HK +1743803392,1743804415,CN +1743804416,1743804671,AU +1743804672,1743805439,IN +1743805440,1743806463,HK +1743806464,1743809535,IN +1743809536,1743810559,ID +1743810560,1743811583,KH +1743811584,1743813631,JP +1743813632,1743814655,CN +1743814656,1743815679,SG +1743815680,1743815935,AU +1743815936,1743816191,NZ +1743816192,1743816703,AU +1743816704,1743817727,IN +1743817728,1743818751,HK +1743818752,1743819775,IN +1743819776,1743820799,HK +1743820800,1743821823,NZ +1743821824,1743822847,CN +1743822848,1743825919,IN +1743825920,1743826943,CN +1743826944,1743827967,MY +1743827968,1743828991,HK +1743828992,1743830015,NZ +1743830016,1743832063,IN +1743832064,1743834111,HK +1743834112,1743838207,IN +1743838208,1743838463,PK +1743838464,1743838719,HK +1743838720,1743841279,AU +1743841280,1743843327,IN +1743843328,1743844351,LA +1743844352,1743845375,CN +1743845376,1743846399,BD +1743846400,1743847423,JP +1743847424,1743848447,AU +1743848448,1743848959,ID +1743848960,1743849471,AU +1743849472,1743850495,IN +1743850496,1743851519,CN +1743851520,1743852543,HK +1743852544,1743853567,IN +1743853568,1743853823,ID +1743853824,1743854079,IN +1743854080,1743854335,AU +1743854336,1743854591,LK +1743854592,1743856639,TH +1743856640,1743857663,NZ +1743857664,1743859711,IN +1743859712,1743860735,HK +1743860736,1743861759,IN +1743861760,1743862783,NZ +1743862784,1743863807,SG +1743863808,1743864831,JP +1743864832,1743865855,TW +1743865856,1743866879,CN +1743866880,1743867903,KR +1743867904,1743868927,JP +1743868928,1743870975,NZ +1743870976,1743873023,CN +1743873024,1743874047,AU +1743874048,1743874303,JP +1743874304,1743875071,SG +1743875072,1743876095,HK +1743876096,1743877119,IN +1743877120,1743878143,KR +1743878144,1743879167,NZ +1743879168,1743881215,JP +1743881216,1743885311,IN +1743885312,1743885823,AU +1743885824,1743886335,MY +1743886336,1743887359,JP +1743887360,1743888383,AF +1743888384,1743889407,CN +1743889408,1743890431,HK +1743890432,1743891455,IN +1743891456,1743892479,JP +1743892480,1743892991,AU +1743892992,1743893503,ID +1743893504,1743894527,IN +1743894528,1743896575,CN +1743896576,1743897599,JP +1743897600,1743899647,AU +1743899648,1743900671,ID +1743900672,1743901695,JP +1743901696,1743902719,IN +1743902720,1743903743,AU +1743903744,1743904767,CN +1743904768,1743908863,IN +1743908864,1743909375,AU +1743909376,1743910911,IN +1743910912,1743911935,VN +1743911936,1743912959,AU +1743912960,1743913983,HK +1743913984,1743915007,JP +1743915008,1743916031,CN +1743916032,1743917055,KH +1743917056,1743918079,MY +1743918080,1743919103,BD +1743919104,1743920127,AU +1743920128,1743921151,JP +1743921152,1743922175,AU +1743922176,1743923199,NZ +1743923200,1743924223,KH +1743924224,1743925247,MN +1743925248,1743925503,NZ +1743925504,1743925759,AU +1743925760,1743926271,AF +1743926272,1743927295,VN +1743927296,1743928319,KH +1743928320,1743929343,IN +1743929344,1743930367,CN +1743930368,1743931391,NZ +1743931392,1743932415,HK +1743932416,1743933439,IN +1743933440,1743934463,AU +1743934464,1743936511,SG +1743936512,1743937535,AU +1743937536,1743938559,MM +1743938560,1743939583,HK +1743939584,1743940607,ID +1743940608,1743941631,HK +1743941632,1743942655,JP +1743942656,1743944703,IN +1743944704,1743945215,ID +1743945216,1743945727,TO +1743945728,1743947775,CN +1743947776,1743948799,JP +1743948800,1743949823,HK +1743949824,1743950847,TH +1743950848,1743951359,HK +1743951360,1743951871,SG +1743951872,1743953919,IN +1743953920,1743954943,CN +1743954944,1743955967,PG +1743955968,1743959039,CN +1743959040,1743959551,ID +1743959552,1743960063,AU +1743960064,1743964159,IN +1743964160,1743965183,CN +1743965184,1743966719,ID +1743966720,1743967231,AU +1743967232,1743968255,CN +1743968256,1743969279,BD +1743969280,1743970303,CN +1743970304,1743971327,IN +1743971328,1743972351,NZ +1743972352,1743972607,IN +1743972608,1743972863,ID +1743973376,1743974399,IN +1743974400,1743975423,CN +1743975424,1743976447,NZ +1743976448,1743977471,AU +1743977472,1743978495,JP +1743978496,1743979519,HK +1743979520,1743980543,JP +1743980544,1743981567,IN 1744044032,1744045055,HK 1744045056,1744047103,SG 1744047104,1744048127,BD @@ -30662,7 +30418,6 @@ 1744184576,1744184831,SG 1744184832,1744185087,HK 1744185088,1744185343,JP -1744185344,1744186367,HK 1744186368,1744187903,IN 1744187904,1744188159,TH 1744188160,1744188415,AU @@ -30719,7 +30474,6 @@ 1744229376,1744230399,IN 1744230400,1744230655,HK 1744230656,1744230911,MY -1744230912,1744231423,IN 1744231424,1744232447,VN 1744232448,1744233471,IN 1744233472,1744234495,KH @@ -30899,8 +30653,8 @@ 1744411648,1744412671,JP 1744412672,1744413695,SG 1744413696,1744417791,CN -1744417792,1744418303,IN -1744418304,1744418815,AU +1744417792,1744418559,IN +1744418560,1744418815,AU 1744418816,1744419839,JP 1744419840,1744421887,CN 1744421888,1744422911,HK @@ -30919,9 +30673,131 @@ 1744434176,1744435199,CN 1744435200,1744436223,IN 1744436224,1744437247,CN +1744437248,1744439295,JP +1744439296,1744439807,AU +1744439808,1744440319,IN +1744440320,1744441343,HK +1744441344,1744442367,IN +1744442368,1744443391,AU +1744443392,1744444415,VN +1744444416,1744445439,IN +1744445440,1744446463,CN +1744446464,1744447487,JP +1744447488,1744447743,IN +1744447744,1744447999,HK +1744448000,1744448511,BD +1744448512,1744449535,IN +1744449536,1744450559,NZ +1744450560,1744451583,HK +1744451584,1744452607,SG +1744452608,1744453119,AU +1744453120,1744453375,IN +1744453376,1744453631,AU +1744453632,1744454655,SG +1744454656,1744455679,BD +1744455680,1744456703,JP +1744456704,1744459775,IN +1744459776,1744460799,NZ +1744460800,1744462847,JP +1744462848,1744463871,NZ +1744463872,1744464895,CN +1744464896,1744465919,JP +1744465920,1744466943,IN +1744466944,1744467967,NZ +1744467968,1744468991,JP +1744468992,1744470015,CN +1744470016,1744471039,TH +1744471040,1744472063,NP +1744472064,1744473087,IN +1744473088,1744474111,SG +1744474112,1744481279,IN +1744481280,1744482303,JP +1744482304,1744483327,IN +1744483328,1744484351,CN +1744484352,1744485119,IN +1744485120,1744485375,MY +1744485376,1744486399,IN +1744486400,1744487423,CN +1744487424,1744487935,TH +1744487936,1744488191,NZ +1744488192,1744488447,ID +1744488448,1744489471,JP +1744489472,1744490495,NZ +1744490496,1744491519,IN +1744491520,1744492543,AU +1744492544,1744493567,CN +1744493568,1744494079,AU +1744494080,1744494591,PK +1744494592,1744495615,CN +1744495616,1744497663,NZ +1744497664,1744498687,CN +1744498688,1744500735,AU +1744500736,1744502783,CN +1744502784,1744503807,MY +1744503808,1744504831,AU +1744504832,1744505855,MY +1744505856,1744506367,AU +1744506368,1744506623,ID +1744506624,1744506879,AU +1744506880,1744510975,IN +1744510976,1744511999,CN +1744512000,1744513023,HK +1744513024,1744513535,ID +1744513536,1744513791,AU +1744513792,1744514047,IN +1744514048,1744514559,ID +1744514560,1744514815,IN +1744514816,1744515071,AU +1744515072,1744516095,IN +1744516096,1744517119,HK +1744517120,1744519167,IN +1744519168,1744520191,AU +1744520192,1744521215,TH +1744521216,1744523263,JP +1744523264,1744524287,IN +1744524288,1744525311,CN +1744525312,1744526335,HK +1744526336,1744527359,IN +1744527360,1744528383,CN +1744528384,1744529407,IN +1744529408,1744530431,KR +1744530432,1744530943,SG +1744530944,1744531455,AU +1744531456,1744532479,HK +1744532480,1744533503,JP +1744533504,1744534527,BD +1744534528,1744536575,CN +1744536576,1744537087,PW +1744537088,1744538623,AU +1744538624,1744539647,HK +1744539648,1744540671,AU +1744540672,1744541695,IN +1744541696,1744542719,ID +1744542720,1744543743,JP +1744543744,1744544767,CN +1744544768,1744545791,HK +1744545792,1744546047,NZ +1744546048,1744547839,AU +1744547840,1744548863,AF +1744548864,1744549887,ID +1744549888,1744551935,IN +1744551936,1744552959,JP +1744552960,1744553471,SG +1744553472,1744553983,HK +1744553984,1744555007,MY +1744555008,1744556031,CN +1744556032,1744562175,IN +1744562176,1744563199,BD +1744563200,1744565247,CN +1744565248,1744566271,HK +1744566272,1744567295,IN +1744567296,1744568319,JP +1768947712,1769996287,NG 1769996288,1772093439,MA 1772093440,1772617727,KE 1772617728,1773142015,AO +1773142016,1773273087,ZA +1773404160,1773666303,EG 1774190592,1774452735,EG 1774452736,1774714879,NG 1774714880,1775239167,EG @@ -30936,9 +30812,7 @@ 1777049600,1777053695,ZA 1777053696,1777057791,BF 1777057792,1777061887,NG -1777061888,1777062399,SD -1777062400,1777062655,SS -1777062656,1777063935,SD +1777061888,1777063935,SD 1777063936,1777065983,MZ 1777065984,1777070079,GQ 1777070080,1777074175,BW @@ -30967,39 +30841,33 @@ 1784676352,1785200639,KR 1785200640,1785462783,TW 1785462784,1786773503,CN -1786773504,1790595071,JP -1790595072,1790597119,US -1790597120,1790648319,JP -1790648320,1790649007,CN -1790649008,1790649008,JP -1790649009,1790650367,CN -1790650368,1790652415,JP -1790652416,1790654463,CN -1790654464,1790664703,JP -1790664704,1790666751,CN -1790666752,1790967807,JP +1786773504,1790596607,JP +1790596608,1790597119,US +1790597120,1790672387,JP +1790672388,1790672388,AP +1790672389,1790967807,JP 1790967808,1793064959,IN 1793064960,1794113535,CN 1794113536,1795162111,KR -1795162112,1795556351,US +1795162112,1795555839,US +1795555840,1795555855,CA +1795555856,1795556351,US 1795556352,1795556607,CA 1795556608,1795557375,US 1795557376,1795557631,IN 1795557632,1795560447,US 1795560448,1795560959,CA -1795560960,1795561471,US -1795561472,1795562239,CA -1795562240,1795562495,US -1795562496,1795563519,CA +1795560960,1795561983,US +1795561984,1795562239,CA +1795562240,1795563263,US +1795563264,1795563519,CA 1795563520,1795565823,US 1795565824,1795566079,CA -1795566080,1795568127,US -1795568128,1795568639,CA -1795568640,1795569663,US -1795569664,1795570175,CA -1795570176,1795583999,US +1795566080,1795583999,US 1795584000,1795588095,SG -1795588096,1796253695,US +1795588096,1796231935,US +1796231936,1796232191,CA +1796232192,1796253695,US 1796253696,1796253951,CA 1796253952,1796257919,US 1796257920,1796258047,PR @@ -31007,22 +30875,12 @@ 1796262912,1796263167,PR 1796263168,1796325375,US 1796325376,1796325631,PR -1796325632,1796514244,US -1796514245,1796514245,US -1796514246,1803550719,US -1807745024,1812559355,US -1812559356,1812559356,PR -1812559357,1815806207,US -1815806208,1815806463,US -1815806464,1815808656,US -1815808657,1815808657,US -1815808658,1815822335,US +1796325632,1803550719,US +1807745024,1815822335,US 1815822336,1815826431,CA 1815826432,1815871487,US 1815871488,1815879679,CA -1815879680,1815905034,US -1815905035,1815905038,US -1815905039,1815912447,US +1815879680,1815912447,US 1815912448,1815920639,CA 1815920640,1815928831,US 1815928832,1815937023,BS @@ -31042,9 +30900,17 @@ 1822519296,1822523391,CA 1822523392,1822531583,US 1822531584,1822535679,CA -1822535680,1822572543,US +1822535680,1822552575,US +1822552576,1822553087,AT +1822553088,1822553343,US +1822553344,1822553599,BR +1822553600,1822553855,US +1822553856,1822554111,HK +1822554112,1822572543,US 1822572544,1822605311,CA -1822605312,1822654463,US +1822605312,1822620159,US +1822620160,1822620415,AU +1822620416,1822654463,US 1822654464,1822662143,CA 1822662144,1822662399,US 1822662400,1822670847,CA @@ -31067,10 +30933,16 @@ 1823375360,1823379455,CA 1823379456,1823383551,US 1823383552,1823387647,CA -1823387648,1823428607,US +1823387648,1823420799,US +1823420800,1823420815,MX +1823420816,1823421455,US +1823421456,1823421463,IL +1823421464,1823428607,US 1823428608,1823432703,CA 1823432704,1823440895,US -1823440896,1823444991,CA +1823440896,1823441407,CA +1823441408,1823441663,US +1823441664,1823444991,CA 1823444992,1823465471,US 1823465472,1823469567,CA 1823469568,1823735807,US @@ -31091,34 +30963,45 @@ 1832714240,1832747007,HU 1832747008,1832779775,RU 1832779776,1832780031,MQ -1832780032,1832780287,FR -1832780288,1832780799,MQ -1832780800,1832782335,FR +1832780032,1832780543,FR +1832780544,1832780799,MQ +1832780800,1832781567,FR +1832781568,1832781823,MQ +1832781824,1832782335,FR 1832782336,1832783615,MQ -1832783616,1832784127,FR -1832784128,1832784383,GP -1832784384,1832784639,FR -1832784640,1832786943,GP -1832786944,1832787967,GF -1832787968,1832788991,RE -1832788992,1832791551,FR -1832791552,1832792063,YT -1832792064,1832792319,FR +1832783616,1832784895,FR +1832784896,1832785407,GP +1832785408,1832785919,FR +1832785920,1832786175,GP +1832786176,1832787199,FR +1832787200,1832787455,GF +1832787456,1832789503,FR +1832789504,1832789759,RE +1832789760,1832791551,FR +1832791552,1832791807,YT +1832791808,1832792319,FR 1832792320,1832792575,RE -1832792576,1832794111,FR -1832794112,1832794623,GP +1832792576,1832793343,FR +1832793344,1832793599,YT +1832793600,1832794367,FR +1832794368,1832794623,GP 1832794624,1832796415,FR 1832796416,1832796671,RE 1832796672,1832796927,FR -1832796928,1832797055,GP -1832797056,1832797183,GF -1832797184,1832798463,FR -1832798464,1832798719,GP -1832798720,1832799487,FR +1832796928,1832797183,MQ +1832797184,1832798207,FR +1832798208,1832798719,GP +1832798720,1832798975,FR +1832798976,1832799231,GP +1832799232,1832799487,FR 1832799488,1832799743,GP -1832799744,1832800255,FR -1832800256,1832804351,MQ -1832804352,1832812543,FR +1832799744,1832801279,FR +1832801280,1832802047,MQ +1832802048,1832802815,FR +1832802816,1832803071,MQ +1832803072,1832803839,FR +1832803840,1832804095,MQ +1832804096,1832812543,FR 1832812544,1832845311,RU 1832845312,1832878079,BH 1832878080,1832878412,RU @@ -31195,9 +31078,7 @@ 1833321216,1833321282,US 1833321283,1833321283,AE 1833321284,1833321471,US -1833321472,1833321727,AE -1833321728,1833321983,US -1833321984,1833322495,AE +1833321472,1833322495,AE 1833322496,1833324543,IT 1833324544,1833326591,NO 1833326592,1833328639,US @@ -31214,7 +31095,11 @@ 1833351168,1833353215,RU 1833353216,1833355263,DE 1833355264,1833357311,IT -1833357312,1833359359,GB +1833357312,1833357587,GB +1833357588,1833357631,IE +1833357632,1833357823,GB +1833357824,1833357903,IE +1833357904,1833359359,GB 1833359360,1833361407,DE 1833361408,1833363455,GB 1833363456,1833365503,RU @@ -31236,7 +31121,7 @@ 1833400320,1833402367,GB 1833402368,1833406463,FR 1833406464,1833408511,GB -1833410560,1833412607,PT +1833410560,1833412607,LU 1833412608,1833414655,GB 1833414656,1833416703,RU 1833416704,1833418751,NL @@ -31275,9 +31160,14 @@ 1833529344,1833533439,GB 1833533440,1833537535,RU 1833537536,1833541631,AT -1833541632,1833542655,GB +1833541632,1833541887,GB +1833541888,1833542143,IN +1833542144,1833542655,GB 1833542656,1833542911,IN -1833542912,1833545215,GB +1833542912,1833543167,GB +1833543168,1833543423,IN +1833543424,1833544959,GB +1833544960,1833545215,IN 1833545216,1833545471,NL 1833545472,1833545727,GB 1833545728,1833549823,IT @@ -31286,8 +31176,7 @@ 1833558016,1833562111,RO 1833562112,1833566207,PS 1833566208,1833570303,SE -1833570304,1833571327,GB -1833571328,1833571583,NL +1833570304,1833571583,NL 1833571584,1833573631,GB 1833573632,1833574399,NL 1833574400,1833578495,YE @@ -31346,7 +31235,7 @@ 1834964992,1834967039,PL 1834967040,1834971135,RU 1834971136,1834973183,PL -1834973184,1834975231,RU +1834973184,1834974207,UA 1834975232,1834977279,IL 1834977280,1834983423,PL 1834983424,1834985471,RU @@ -31361,9 +31250,7 @@ 1835008000,1835532287,RO 1835532288,1835540479,SE 1835540480,1835548671,DE -1835548672,1835549695,GB -1835549696,1835550207,ES -1835550208,1835565055,GB +1835548672,1835565055,GB 1835565056,1835573247,AL 1835573248,1835581439,UA 1835581440,1835589631,BG @@ -31371,9 +31258,7 @@ 1835597824,1835606015,HU 1835606016,1835614207,CZ 1835614208,1835622399,RU -1835622400,1835624959,SE -1835624960,1835625215,DK -1835625216,1835630591,SE +1835622400,1835630591,SE 1835630592,1835636735,RU 1835636736,1835638527,LU 1835638528,1835646975,RU @@ -31414,9 +31299,7 @@ 1835913216,1835917311,RU 1835917312,1835917919,GB 1835917920,1835917935,IT -1835917936,1835918159,GB -1835918160,1835918167,IT -1835918168,1835918351,GB +1835917936,1835918351,GB 1835918352,1835918359,IT 1835918360,1835918439,GB 1835918440,1835918447,IT @@ -31430,27 +31313,19 @@ 1835918736,1835918743,IT 1835918744,1835918847,GB 1835918848,1835918855,IT -1835918856,1835919151,GB +1835918856,1835919095,GB +1835919096,1835919103,IT +1835919104,1835919151,GB 1835919152,1835919159,IT -1835919160,1835919215,GB -1835919216,1835919223,IT -1835919224,1835919631,GB -1835919632,1835919639,IT -1835919640,1835919711,GB -1835919712,1835919719,IT -1835919720,1835919751,GB +1835919160,1835919751,GB 1835919752,1835919759,IT -1835919760,1835920023,GB -1835920024,1835920031,IT -1835920032,1835920119,GB -1835920120,1835920127,IT -1835920128,1835920479,GB +1835919760,1835920479,GB 1835920480,1835920487,IT -1835920488,1835920519,GB -1835920520,1835920527,IT -1835920528,1835920631,GB +1835920488,1835920631,GB 1835920632,1835920639,IT -1835920640,1835920863,GB +1835920640,1835920727,GB +1835920728,1835920735,IT +1835920736,1835920863,GB 1835920864,1835920871,IT 1835920872,1835921047,GB 1835921048,1835921055,IT @@ -31458,29 +31333,35 @@ 1835921120,1835921127,IT 1835921128,1835921343,GB 1835921344,1835921351,IT -1835921352,1835921407,GB -1835921408,1835921415,IT -1835921416,1835921439,GB +1835921352,1835921439,GB 1835921440,1835921447,IT -1835921448,1835921807,GB -1835921808,1835921815,IT -1835921816,1835921855,GB -1835921856,1835921863,IT -1835921864,1835922415,GB +1835921448,1835921463,GB +1835921464,1835921471,IT +1835921472,1835922415,GB 1835922416,1835922423,IT 1835922424,1835922559,GB 1835922560,1835922567,IT -1835922568,1835922815,GB +1835922568,1835922583,GB +1835922584,1835922591,IT +1835922592,1835922815,GB 1835922816,1835922831,IT -1835922832,1835923519,GB +1835922832,1835923351,GB +1835923352,1835923359,IT +1835923360,1835923519,GB 1835923520,1835923527,IT 1835923528,1835923863,GB 1835923864,1835923871,IT -1835923872,1835924151,GB -1835924152,1835924167,IT -1835924168,1835924375,GB +1835923872,1835924007,GB +1835924008,1835924015,IT +1835924016,1835924103,GB +1835924104,1835924111,IT +1835924112,1835924151,GB +1835924152,1835924159,IT +1835924160,1835924375,GB 1835924376,1835924383,IT -1835924384,1835925503,GB +1835924384,1835925223,GB +1835925224,1835925231,IT +1835925232,1835925503,GB 1835925504,1835933695,LV 1835933696,1835941887,RU 1835941888,1835950079,UA @@ -31502,40 +31383,45 @@ 1836597760,1836601599,DE 1836601600,1836603391,LU 1836603392,1836605439,FR -1836605440,1836605695,DE -1836605696,1836612607,LU +1836605440,1836612607,LU 1836612608,1836613631,DE 1836613632,1836630015,RU 1836630016,1836646399,BG 1836646400,1836679167,RS 1836679168,1836683263,BG 1836683264,1836685311,RO -1836685312,1836685823,BG -1836685824,1836687359,GR +1836685312,1836686335,BG +1836686336,1836687359,GR 1836687360,1836711935,BG 1836711936,1836728319,UA 1836728320,1836744703,RS 1836744704,1836745983,FR -1836745984,1836746751,RE +1836745984,1836746239,RE +1836746240,1836746495,FR +1836746496,1836746751,RE 1836746752,1836747263,FR 1836747264,1836748287,RE 1836748288,1836748543,FR 1836748544,1836748799,RE -1836748800,1836749055,FR -1836749056,1836750079,RE +1836748800,1836749823,FR +1836749824,1836750079,RE 1836750080,1836750335,FR -1836750336,1836751103,RE +1836750336,1836750591,RE +1836750592,1836750847,FR +1836750848,1836751103,RE 1836751104,1836751359,FR -1836751360,1836752127,RE -1836752128,1836752895,FR -1836752896,1836755199,RE -1836755200,1836755455,FR -1836755456,1836756991,RE -1836756992,1836758015,FR -1836758016,1836759295,RE -1836759296,1836759551,FR -1836759552,1836760319,RE -1836760320,1836760575,FR +1836751360,1836752383,RE +1836752384,1836753151,FR +1836753152,1836754175,RE +1836754176,1836754687,FR +1836754688,1836754943,RE +1836754944,1836755455,FR +1836755456,1836755967,RE +1836755968,1836756223,FR +1836756224,1836756735,RE +1836756736,1836758271,FR +1836758272,1836759295,RE +1836759296,1836760575,FR 1836760576,1836761087,RE 1836761088,1836777471,IR 1836777472,1836793855,SI @@ -31571,11 +31457,7 @@ 1839450112,1839452159,NO 1839452160,1839454207,FI 1839454208,1839456255,RU -1839456256,1839458759,RO -1839458760,1839458760,RO -1839458761,1839459327,RO -1839459328,1839459839,DE -1839459840,1839460351,RO +1839456256,1839460351,RO 1839460352,1839462399,RU 1839462400,1839464447,FI 1839464448,1839497215,CZ @@ -31589,11 +31471,7 @@ 1839759360,1839792127,RU 1839792128,1839794847,GB 1839794848,1839794879,CH -1839794880,1839806463,GB -1839806464,1839811071,US -1839811072,1839812607,GB -1839812608,1839814143,US -1839814144,1839816703,GB +1839794880,1839816703,GB 1839816704,1839824895,NO 1839824896,1839890431,RU 1839890432,1839923199,GB @@ -31621,15 +31499,7 @@ 1841168384,1841233919,FR 1841233920,1841299455,RU 1841299456,1841430527,DE -1841430528,1841516543,RU -1841516544,1841516884,US -1841516885,1841516885,RU -1841516886,1841517055,US -1841517056,1841517567,RU -1841517568,1841517823,US -1841517824,1841518079,RU -1841518080,1841518335,US -1841518336,1841561599,RU +1841430528,1841561599,RU 1841561600,1841565695,PL 1841565696,1841569791,RU 1841569792,1841577983,PL @@ -31699,15 +31569,20 @@ 1841905664,1841922047,RU 1841922048,1841925887,NL 1841925888,1841926015,DE -1841926016,1841930239,NL +1841926016,1841926079,NL +1841926080,1841926111,DE +1841926112,1841927167,NL +1841927168,1841927423,DE +1841927424,1841928703,NL +1841928704,1841928959,NO +1841928960,1841930239,NL 1841930240,1841938431,KG 1841938432,1841946623,RU 1841946624,1841954815,UA 1841954816,1841971199,RU 1841971200,1841979391,CZ 1841979392,1841983487,NL -1841983488,1841983999,GI -1841984000,1841985535,IM +1841983488,1841985535,IM 1841985536,1841987583,SI 1841987584,1841995775,DK 1841995776,1842003967,RU @@ -31721,19 +31596,19 @@ 1842053120,1842061311,ES 1842061312,1842069503,IR 1842069504,1842077695,RU -1842077696,1842078719,MQ -1842078720,1842079487,FR +1842077696,1842078463,MQ +1842078464,1842078719,FR +1842078720,1842078975,MQ +1842078976,1842079487,FR 1842079488,1842079743,MQ 1842079744,1842080255,GP -1842080256,1842080511,MQ -1842080512,1842081279,GP -1842081280,1842081535,MQ -1842081536,1842082047,GP -1842082048,1842082815,MQ -1842082816,1842083071,GP -1842083072,1842084351,MQ -1842084352,1842084607,GP -1842084608,1842085887,MQ +1842080256,1842080767,MQ +1842080768,1842081023,GP +1842081024,1842081279,MQ +1842081280,1842081535,GP +1842081536,1842084351,MQ +1842084352,1842084863,GP +1842084864,1842085887,MQ 1842085888,1842118655,GB 1842118656,1842151423,FI 1842151424,1842153471,FR @@ -31750,9 +31625,7 @@ 1842173952,1842175999,RO 1842176000,1842178047,FI 1842178048,1842180095,IT -1842180096,1842180767,IQ -1842180768,1842180783,US -1842180784,1842182143,IQ +1842180096,1842182143,IQ 1842182144,1842184191,LV 1842184192,1842186239,DE 1842186240,1842188287,ES @@ -31794,16 +31667,16 @@ 1842339840,1842343935,RU 1842343936,1842348031,UZ 1842348032,1843396607,FR -1843396608,1843411455,IQ -1843411456,1843411711,US -1843411712,1843412991,IQ +1843396608,1843412991,IQ 1843412992,1843429375,CZ 1843429376,1843462143,GB 1843462144,1843478527,RU 1843478528,1843494911,SE 1843494912,1843511295,IR 1843511296,1843527679,RU -1843527680,1843544063,IL +1843527680,1843539199,IL +1843539200,1843539455,FR +1843539456,1843544063,IL 1843544064,1843560447,RU 1843560448,1843576831,DE 1843576832,1843593215,RU @@ -31825,9 +31698,7 @@ 1843822592,1843838975,RU 1843838976,1843849215,DE 1843849216,1843850239,GB -1843850240,1843852799,DE -1843852800,1843853055,DE -1843853056,1843855359,DE +1843850240,1843855359,DE 1843855360,1843871743,PL 1843871744,1843888127,GB 1843888128,1843904511,CZ @@ -31899,17 +31770,10 @@ 1844068352,1844070399,ES 1844070400,1844072447,LU 1844072448,1844076543,ES -1844076544,1844076575,GB -1844076576,1844076607,IE -1844076608,1844076655,GB -1844076656,1844076671,IE -1844076672,1844076703,GB -1844076704,1844076735,IE -1844076736,1844076799,GB -1844076800,1844077567,IE +1844076544,1844077311,GB +1844077312,1844077567,IE 1844077568,1844078591,GB -1844078592,1844080127,DE -1844080128,1844080639,PL +1844078592,1844080639,DE 1844080640,1844082687,GE 1844082688,1844084735,DE 1844084736,1844086783,RU @@ -31957,7 +31821,8 @@ 1844169568,1844169583,US 1844169584,1844169599,GI 1844169600,1844169647,US -1844169648,1844170751,GI +1844169648,1844169727,GI +1844169728,1844170751,DE 1844170752,1844174847,RU 1844174848,1844178943,DE 1844178944,1844180991,EE @@ -31969,12 +31834,10 @@ 1844207616,1844211711,RU 1844211712,1844215807,SK 1844215808,1844219903,BE -1844219904,1844220415,US -1844220416,1844220927,DE +1844219904,1844220159,US +1844220160,1844220927,DE 1844220928,1844222975,A2 -1844222976,1844223103,DE -1844223104,1844223487,A2 -1844223488,1844223999,DE +1844222976,1844223999,DE 1844224000,1844228095,GB 1844228096,1844232191,DK 1844232192,1844236287,ES @@ -32000,11 +31863,7 @@ 1844330496,1844334591,GB 1844334592,1844342783,RU 1844342784,1844346879,IT -1844346880,1844349439,GB -1844349440,1844349951,US -1844349952,1844350207,GB -1844350208,1844350719,CA -1844350720,1844350975,GB +1844346880,1844350975,GB 1844350976,1844355071,SY 1844355072,1844359167,KZ 1844359168,1844363263,IR @@ -32070,7 +31929,9 @@ 1847735296,1847736319,AU 1847736320,1847738367,HK 1847738368,1847754751,KR -1847754752,1847783423,TH +1847754752,1847780351,TH +1847780352,1847780607,CN +1847780608,1847783423,TH 1847783424,1847787519,US 1847787520,1847803903,KR 1847803904,1847807999,VN @@ -32290,7 +32151,9 @@ 1870118912,1870135295,IN 1870135296,1870462975,CN 1870462976,1870479359,JP -1870479360,1870495743,PH +1870479360,1870480895,PH +1870480896,1870481151,US +1870481152,1870495743,PH 1870495744,1870497791,TW 1870497792,1870499839,IN 1870499840,1870501887,JP @@ -32448,9 +32311,7 @@ 1896603648,1896605695,IN 1896605696,1896606719,AU 1896606720,1896607743,MY -1896607744,1896609279,VU -1896609280,1896609535,AU -1896609536,1896609791,VU +1896607744,1896609791,VU 1896609792,1896611839,SG 1896611840,1897070591,CN 1897070592,1897136127,IN @@ -32487,9 +32348,7 @@ 1897267200,1897365503,VN 1897365504,1897398271,MY 1897398272,1897660415,CN -1897660416,1897687039,HK -1897687040,1897687295,GB -1897687296,1897725951,HK +1897660416,1897725951,HK 1897725952,1897730047,JP 1897730048,1897734143,AU 1897734144,1897738239,HK @@ -32570,9 +32429,7 @@ 1908756480,1908760575,KR 1908760576,1908761599,NZ 1908761600,1908762623,CN -1908762624,1908763135,IN -1908763136,1908763391,AU -1908763392,1908763647,IN +1908762624,1908763647,IN 1908763648,1908764671,ID 1908764672,1908768767,AU 1908768768,1908801535,JP @@ -32616,7 +32473,6 @@ 1914437632,1914503167,CN 1914503168,1914552319,KR 1914552320,1914560511,SG -1914560512,1914568703,KH 1914568704,1914576895,KR 1914576896,1914580991,TW 1914580992,1914585087,KR @@ -32727,7 +32583,9 @@ 1921945600,1921949695,HK 1921949696,1921953791,AU 1921953792,1921957887,JP -1921957888,1921974271,GU +1921957888,1921965055,GU +1921965056,1921965567,US +1921965568,1921974271,GU 1921974272,1922039807,IN 1922039808,1925447679,JP 1925447680,1925578751,CN @@ -32775,9 +32633,7 @@ 1933705216,1933770751,SG 1933770752,1933836287,TH 1933836288,1933901823,KR -1933901824,1933909759,AU -1933909760,1933910015,AU -1933910016,1933918207,AU +1933901824,1933918207,AU 1933918208,1933922303,CN 1933922304,1933926399,IN 1933926400,1933934591,KR @@ -32864,9 +32720,7 @@ 1940357120,1940389887,JP 1940389888,1940914175,CN 1940914176,1941045247,JP -1941045248,1941046783,HK -1941046784,1941047295,AU -1941047296,1941049343,HK +1941045248,1941049343,HK 1941049344,1941051391,AU 1941051392,1941052415,KH 1941052416,1941053439,AU @@ -32901,7 +32755,11 @@ 1946163200,1946165247,CN 1946165248,1946173439,PK 1946173440,1946173695,PG -1946173696,1946181631,SG +1946173696,1946176511,SG +1946176512,1946176767,PH +1946176768,1946178047,SG +1946178048,1946178303,HK +1946178304,1946181631,SG 1946181632,1946189823,MY 1946189824,1946222591,JP 1946222592,1946943487,CN @@ -32928,7 +32786,8 @@ 1949448704,1949448959,AU 1949448960,1949449215,IN 1949449216,1949449471,SG -1949449472,1949450239,HK +1949449472,1949449727,JP +1949449728,1949450239,HK 1949450240,1949466623,IN 1949466624,1949499391,PH 1949499392,1949564927,SG @@ -32944,9 +32803,7 @@ 1950089216,1950351359,CN 1950351360,1950482431,JP 1950482432,1950515199,CN -1950515200,1950516479,IN -1950516480,1950516735,US -1950516736,1950523391,IN +1950515200,1950523391,IN 1950523392,1950527487,AU 1950527488,1950531583,JP 1950531584,1950533631,NP @@ -32958,8 +32815,7 @@ 1950545920,1950547967,PH 1950547968,1950580735,KR 1950580736,1950613503,JP -1950613504,1950617599,GU -1950617600,1950621695,US +1950613504,1950621695,GU 1950621696,1950629887,KR 1950629888,1950646271,IN 1950646272,1950648319,VN @@ -33004,9 +32860,7 @@ 1952112640,1952116735,NP 1952116736,1952120831,IN 1952120832,1952186367,JP -1952186368,1952188671,HK -1952188672,1952188927,AE -1952188928,1952251903,HK +1952186368,1952251903,HK 1952251904,1952284671,PH 1952284672,1952288767,NZ 1952288768,1952292863,JP @@ -33037,7 +32891,8 @@ 1958850560,1958852607,CN 1958852608,1958853631,AU 1958853632,1958854655,ID -1958854656,1958862847,AU +1958854656,1958860799,AU +1958860800,1958862847,BD 1958862848,1958871039,JP 1958871040,1959067647,CN 1959067648,1959100415,MY @@ -33048,9 +32903,7 @@ 1959110656,1959112703,JP 1959112704,1959113215,HK 1959113216,1959113471,IN -1959113472,1959114239,HK -1959114240,1959114495,AU -1959114496,1959116799,HK +1959113472,1959116799,HK 1959116800,1959133183,SG 1959133184,1959239679,CN 1959239680,1959241727,KR @@ -33126,9 +32979,13 @@ 1964173728,1964173743,JP 1964173744,1964173776,AP 1964173777,1964173777,JP -1964173778,1964174495,AP +1964173778,1964173823,AP +1964173824,1964174079,HK +1964174080,1964174335,AU +1964174336,1964174495,SG 1964174496,1964174511,SN -1964174512,1964175359,AP +1964174512,1964174591,SG +1964174592,1964175359,AP 1964175360,1964179455,GB 1964179456,1964244991,TW 1964244992,1964249087,AU @@ -33161,7 +33018,11 @@ 1966473216,1966538751,ID 1966538752,1966571519,JP 1966571520,1966587903,KR -1966587904,1966591999,AF +1966587904,1966588415,AF +1966588416,1966588671,US +1966588672,1966590975,AF +1966590976,1966591231,US +1966591232,1966591999,AF 1966592000,1966596095,JP 1966596096,1966600191,AU 1966600192,1966602239,IN @@ -33205,9 +33066,7 @@ 1969727488,1969729535,ID 1969729536,1969733631,JP 1969733632,1969750015,VN -1969750016,1969782783,JP -1969782784,1969783807,US -1969783808,1969790975,JP +1969750016,1969790975,JP 1969790976,1969793023,AU 1969793024,1969795071,CN 1969795072,1969797119,NZ @@ -33273,9 +33132,7 @@ 1985347584,1985478655,JP 1985478656,1985480703,IN 1985480704,1985482751,PH -1985482752,1985484799,AU -1985484800,1985485055,AU -1985485056,1985486847,AU +1985482752,1985486847,AU 1985486848,1985609727,CN 1985609728,1985675263,NZ 1985675264,1985708031,KR @@ -33351,7 +33208,7 @@ 1991852032,1991868415,CN 1991868416,1991901183,SG 1991901184,1992097791,CN -1992097792,1992163327,HK +1992097792,1992163327,SG 1992163328,1992818687,CN 1992818688,1992949759,SG 1992949760,1993342975,CN @@ -33456,9 +33313,7 @@ 1999249408,1999257599,PH 1999257600,1999273983,TH 1999273984,1999278079,CN -1999278080,1999278097,HK -1999278098,1999278098,HK -1999278099,1999280127,HK +1999278080,1999280127,HK 1999280128,1999282175,IN 1999282176,1999290367,KR 1999290368,1999298559,SG @@ -33481,9 +33336,7 @@ 2000373760,2000375807,HK 2000375808,2000376319,AF 2000376320,2000376575,US -2000376576,2000377087,AF -2000377088,2000377343,US -2000377344,2000377855,AF +2000376576,2000377855,AF 2000377856,2000379903,JP 2000379904,2000388095,TH 2000388096,2000617471,CN @@ -33605,8 +33458,8 @@ 2015166464,2015182847,AU 2015182848,2015199231,PH 2015199232,2015203327,KR -2015203328,2015203839,JP -2015203840,2015205375,US +2015203328,2015204095,JP +2015204096,2015205375,US 2015205376,2015207423,ID 2015207424,2015215615,JP 2015215616,2015219711,IN @@ -33645,7 +33498,9 @@ 2019035136,2019037183,CN 2019037184,2019041279,JP 2019041280,2019045375,IN -2019045376,2019046655,US +2019045376,2019045631,US +2019045632,2019046399,JP +2019046400,2019046655,US 2019046656,2019049471,JP 2019049472,2019078143,AU 2019078144,2019082239,IN @@ -33665,9 +33520,7 @@ 2022178816,2022180863,NZ 2022180864,2022182911,JP 2022184960,2022187007,KH -2022187008,2022189651,HK -2022189652,2022189652,HK -2022189653,2022191103,HK +2022187008,2022191103,HK 2022191104,2022195199,NZ 2022195200,2022211583,KR 2022211584,2022227967,CN @@ -33742,11 +33595,7 @@ 2033631232,2033647615,KR 2033647616,2033663999,CN 2033664000,2033696767,KR -2033696768,2033707519,GU -2033707520,2033708031,US -2033708032,2033708799,GU -2033708800,2033709055,US -2033709056,2033713151,GU +2033696768,2033713151,GU 2033713152,2033876991,CN 2033876992,2033879039,JP 2033879040,2033887231,CN @@ -33884,7 +33733,9 @@ 2053515264,2053519359,ID 2053519360,2053521407,JP 2053521408,2053529599,CN -2053529600,2053533695,AU +2053529600,2053532671,AU +2053532672,2053533183,NZ +2053533184,2053533695,AU 2053533696,2053534719,VN 2053534720,2053537791,IN 2053537792,2053636095,JP @@ -33971,7 +33822,8 @@ 2060001280,2060002559,HK 2060002560,2060002815,ID 2060002816,2060004351,HK -2060004352,2060005375,US +2060004352,2060004607,US +2060004608,2060005375,HK 2060005376,2060009471,CN 2060009472,2060025855,AU 2060025856,2060058623,TW @@ -33985,9 +33837,10 @@ 2060451840,2061500415,JP 2061500416,2063073279,CN 2063073280,2063077375,BD -2063077376,2063077377,HK +2063077376,2063077377,PH 2063077378,2063077378,AP -2063077379,2063079423,HK +2063077379,2063077631,PH +2063077632,2063079423,HK 2063079424,2063081471,CN 2063081472,2063085567,ID 2063085568,2063089663,CN @@ -33999,18 +33852,23 @@ 2063107072,2063107327,AP 2063107328,2063107623,JP 2063107624,2063107631,AU -2063107632,2063111679,JP +2063107632,2063111167,JP +2063111168,2063111423,AU +2063111424,2063111679,JP 2063111680,2063112191,AU -2063112192,2063113727,JP -2063113728,2063113983,AU -2063113984,2063114239,JP -2063114240,2063115263,IN -2063115264,2063118335,JP +2063112192,2063114495,JP +2063114496,2063114751,IN +2063114752,2063115007,JP +2063115008,2063115263,IN +2063115264,2063117311,JP +2063117312,2063117567,NZ +2063117568,2063118335,JP 2063118336,2063118591,IN 2063118592,2063119871,JP 2063119872,2063120383,IN -2063120384,2063121407,AU -2063121408,2063122431,JP +2063120384,2063120895,JP +2063120896,2063121151,AU +2063121152,2063122431,JP 2063122432,2063138815,SG 2063138816,2063335423,JP 2063335424,2063341567,AU @@ -34212,10 +34070,8 @@ 2082340864,2082406399,IN 2082406400,2082471935,CN 2082471936,2083007231,JP -2083007232,2083007743,US -2083007744,2083008511,JP -2083008512,2083012607,US -2083012608,2083024895,JP +2083007232,2083007487,US +2083007488,2083024895,JP 2083024896,2083053567,CN 2083053568,2083057663,TH 2083058688,2083059711,IN @@ -34399,7 +34255,8 @@ 2101149696,2101182463,KR 2101182464,2101231615,CN 2101231616,2101239807,AU -2101239808,2101272575,IN +2101239808,2101270527,IN +2101270528,2101272575,KR 2101272576,2101276671,TW 2101276672,2101280767,JP 2101280768,2101288959,AU @@ -34433,9 +34290,7 @@ 2111111168,2111143935,CN 2111143936,2111152127,ID 2111152128,2111160319,AU -2111160320,2111161599,AF -2111161600,2111161855,US -2111161856,2111168511,AF +2111160320,2111168511,AF 2111168512,2111176703,TH 2111176704,2111193087,VN 2111193088,2111201279,AU @@ -34451,9 +34306,9 @@ 2112487424,2112618495,VN 2112618496,2112880639,NZ 2112880640,2113683455,KR -2113683456,2113693695,JP -2113693696,2113693951,HK -2113693952,2113716223,JP +2113683456,2113688319,JP +2113688320,2113688575,SG +2113688576,2113716223,JP 2113716224,2113732607,SG 2113732608,2113761279,AU 2113761280,2113765375,VN @@ -34472,7 +34327,8 @@ 2147491840,2147498239,DE 2147498240,2147498495,RO 2147498496,2147500031,DE -2147500032,2147502079,NL +2147500032,2147501055,FR +2147501056,2147502079,NL 2147502080,2147504127,DK 2147504128,2147508223,RU 2147508224,2147510271,DE @@ -34514,13 +34370,10 @@ 2151794688,2151796735,IT 2151796736,2151798783,NL 2151798784,2151799807,DE -2151799808,2151800319,NL -2151800320,2151800831,DE +2151799808,2151800831,NL 2151800832,2151809023,PT 2151809024,2151940095,IT -2151940096,2152100863,RU -2152100864,2152101375,UA -2152101376,2152464383,RU +2151940096,2152464383,RU 2152464384,2152595455,DK 2152595456,2152726527,FR 2152726528,2153119743,US @@ -34548,10 +34401,7 @@ 2155825152,2155827199,AE 2155827200,2155831295,PL 2155831296,2155833343,RU -2155833344,2155833855,SE -2155833856,2155834367,NL -2155834368,2155834879,SE -2155834880,2155835391,NL +2155833344,2155835391,SE 2155835392,2155839487,RO 2155839488,2155843583,FR 2155843584,2155845631,RU @@ -34617,11 +34467,11 @@ 2163306496,2163408895,US 2163408896,2163474431,GB 2163474432,2163605503,US -2163605504,2163623935,CH +2163605504,2163623935,DE 2163623936,2163624191,AP -2163624192,2163638271,CH +2163624192,2163638271,DE 2163638272,2163638527,US -2163638528,2163671039,CH +2163638528,2163671039,DE 2163671040,2163867647,US 2163867648,2163933183,AU 2163933184,2164981759,US @@ -34643,11 +34493,9 @@ 2166571008,2166575103,GB 2166575104,2166575359,US 2166575360,2166575615,GB -2166575616,2166598655,US -2166598656,2166598911,FR -2166598912,2166607009,US -2166607010,2166607011,DE -2166607012,2166613759,US +2166575616,2166607009,US +2166607010,2166607010,DE +2166607011,2166613759,US 2166613760,2166614015,DE 2166614016,2168193023,US 2168193024,2168258559,JP @@ -34719,10 +34567,10 @@ 2178416640,2178482175,US 2178482176,2178547711,DE 2178547712,2179379199,US -2179379200,2179395583,GB -2179395584,2179397632,US -2179397633,2179397633,GB -2179397634,2179465215,US +2179379200,2179396607,GB +2179396608,2179396863,US +2179396864,2179399679,GB +2179399680,2179465215,US 2179530752,2179596287,DE 2179596288,2179661823,GB 2179661824,2179989503,US @@ -34876,8 +34724,12 @@ 2188708864,2188711800,EU 2188711801,2188711801,DE 2188711802,2188716031,EU -2188716032,2188718079,FR -2188718080,2188718581,EU +2188716032,2188716287,FR +2188716288,2188717055,EU +2188717056,2188717311,FR +2188717312,2188717567,EU +2188717568,2188717823,FR +2188717824,2188718581,EU 2188718582,2188718582,DE 2188718583,2188724463,EU 2188724464,2188724464,NL @@ -34891,13 +34743,11 @@ 2188728480,2188728575,GB 2188728576,2188734463,EU 2188734464,2188734719,FR -2188734720,2188737791,EU -2188737792,2188738047,GB -2188738048,2188768767,EU -2188768768,2188769023,YT -2188769024,2188769279,EU -2188769280,2188769407,NL -2188769408,2188771327,EU +2188734720,2188750335,EU +2188750336,2188750591,US +2188750592,2188768767,EU +2188768768,2188769279,YT +2188769280,2188771327,EU 2188771328,2188900351,US 2188900352,2188900607,EU 2188900608,2188902399,US @@ -34943,9 +34793,7 @@ 2193096704,2193162239,US 2193162240,2193178623,UA 2193178624,2193180671,GB -2193180672,2193181695,IR -2193181696,2193182207,DE -2193182208,2193182719,IR +2193180672,2193182719,IR 2193182720,2193184767,PT 2193184768,2193186815,ES 2193186816,2193188863,PL @@ -35051,8 +34899,7 @@ 2205351936,2205483007,SE 2205483008,2205515775,CH 2205515776,2205519871,AZ -2205519872,2205520383,US -2205520384,2205523967,DE +2205519872,2205523967,DE 2205523968,2205526015,YE 2205526016,2205528063,GB 2205528064,2205530111,SE @@ -35140,11 +34987,7 @@ 2212761600,2212762623,GB 2212762624,2212766719,FI 2212766720,2212767743,GB -2212767744,2212805631,FI -2212805632,2212806143,CN -2212806144,2212810751,FI -2212810752,2212811263,US -2212811264,2212823039,FI +2212767744,2212823039,FI 2212823040,2212954111,US 2212954112,2213019647,GB 2213019648,2213085183,CA @@ -35162,18 +35005,15 @@ 2214068224,2214133759,JP 2214133760,2214264831,US 2214264832,2214330367,GB -2214330368,2214398975,US -2214398976,2214400767,CA -2214400768,2214401279,US -2214401280,2214408191,CA -2214408192,2214411519,US -2214411520,2214461439,CA +2214330368,2214461439,US 2214461440,2214526975,FR 2214592512,2218786815,US 2218786816,2219769855,IL 2219769856,2222521855,US 2222521856,2222522111,PR -2222522112,2224160767,US +2222522112,2223111679,US +2223111680,2223111935,VI +2223111936,2224160767,US 2224160768,2224226303,GB 2224226304,2224242687,US 2224242688,2224259071,SG @@ -35273,9 +35113,7 @@ 2249457664,2249523199,US 2249523200,2249588735,CH 2249588736,2249654271,CA -2249654272,2249724671,US -2249724672,2249724927,CA -2249724928,2249785343,US +2249654272,2249785343,US 2249785344,2249850879,SE 2249850880,2249916415,US 2249916416,2249981951,NL @@ -35283,14 +35121,11 @@ 2250047488,2250113023,US 2250113024,2250178559,DE 2250178560,2250244095,CA -2250244096,2250268671,US -2250268672,2250276863,GB -2250276864,2250375167,US +2250244096,2250375167,US 2250375168,2250440703,DE 2250440704,2250506239,US 2250506240,2250571775,GB -2250571776,2250572031,SE -2250572032,2250637055,FI +2250571776,2250637055,FI 2250637056,2250637311,EU 2250637312,2250702847,CH 2250702848,2251227135,US @@ -35302,7 +35137,9 @@ 2251948032,2252013567,BE 2252013568,2252079103,FR 2252079104,2252210175,DE -2252210176,2252931071,US +2252210176,2252417023,US +2252417024,2252417279,GB +2252417280,2252931071,US 2252996608,2253062143,US 2253062144,2253127679,KR 2253127680,2253193215,DE @@ -35318,9 +35155,7 @@ 2254080000,2254082047,FR 2254082048,2254084095,NO 2254084096,2254094335,RU -2254094336,2254096383,RO -2254096384,2254096895,GB -2254096896,2254098431,RO +2254094336,2254098431,GB 2254098432,2254100479,RU 2254100480,2254102527,CH 2254102528,2254110719,IT @@ -35376,7 +35211,9 @@ 2258597120,2258597375,PG 2258597376,2258600959,AU 2258600960,2258601087,SG -2258601088,2258603089,AU +2258601088,2258603007,AU +2258603008,2258603071,HK +2258603072,2258603089,AU 2258603090,2258603090,PG 2258603091,2258604799,AU 2258604800,2258605055,AP @@ -35385,11 +35222,11 @@ 2258608640,2258609151,AU 2258609152,2258609407,HK 2258609408,2258609663,AU -2258609664,2258610175,HK -2258610176,2258610431,IN -2258610432,2258611455,HK +2258609664,2258611455,HK 2258611456,2258611711,AU -2258611712,2258632703,HK +2258611712,2258615295,HK +2258615296,2258615551,AU +2258615552,2258632703,HK 2258632704,2258698239,JP 2258698240,2259222527,US 2259222528,2259288063,DE @@ -35408,7 +35245,9 @@ 2260467712,2260533247,NL 2260533248,2260598783,US 2260598784,2260664319,CA -2260664320,2260723711,GB +2260664320,2260720895,GB +2260720896,2260721151,DE +2260721152,2260723711,GB 2260723712,2260723967,IL 2260723968,2260729343,GB 2260729344,2260729599,IL @@ -35454,11 +35293,13 @@ 2264899584,2264905727,IT 2264905728,2264907775,ES 2264907776,2264924159,DE -2264924160,2264989695,CA +2264924160,2264971775,CA +2264971776,2264972031,US +2264972032,2264989695,CA 2264989696,2265605887,US 2265605888,2265606143,GB -2265606144,2265711615,US -2265711616,2265776127,CA +2265606144,2265710847,US +2265710848,2265776127,CA 2265776128,2266169343,US 2266169344,2266234879,CA 2266234880,2266431487,US @@ -35475,7 +35316,9 @@ 2281007104,2281007359,IN 2281007360,2281023487,US 2281023488,2281023743,IN -2281023744,2282226019,US +2281023744,2281705471,US +2281705472,2281705727,CN +2281705728,2282226019,US 2282226020,2282226020,AP 2282226021,2282226175,US 2282226176,2282226243,AU @@ -35511,10 +35354,13 @@ 2292973568,2293039103,DE 2293039104,2293054975,EU 2293054976,2293055231,LU -2293055232,2293080063,EU -2293080064,2293088255,BE -2293088256,2293104639,EU -2293104640,2293891071,US +2293055232,2293080575,EU +2293080576,2293080831,BE +2293080832,2293085183,EU +2293085184,2293085439,BE +2293085440,2293104639,EU +2293104640,2293825535,US +2293825536,2293891071,IN 2293891072,2293956607,AU 2293956608,2294022143,JP 2294022144,2294677503,US @@ -35550,9 +35396,7 @@ 2301624320,2301755391,US 2301755392,2301820927,GB 2301820928,2302083071,US -2302083072,2302190381,NL -2302190382,2302190382,NL -2302190383,2302214143,NL +2302083072,2302214143,NL 2302214144,2302279679,US 2302279680,2302345215,SE 2302410752,2302541823,SE @@ -35678,11 +35522,10 @@ 2317398016,2317398271,GB 2317398272,2317401087,US 2317401088,2317401343,GB -2317401344,2317412351,US -2317412352,2317413375,CA +2317401344,2317413119,US +2317413120,2317413375,CA 2317413376,2317413631,ID -2317413632,2317414399,CA -2317414400,2317414655,US +2317413632,2317414655,US 2317414656,2317414911,AU 2317414912,2317417983,US 2317417984,2317418239,AP @@ -35733,9 +35576,7 @@ 2322333696,2322923519,US 2323054592,2323185663,CA 2323316736,2323382271,US -2323382272,2323395583,NO -2323395584,2323395839,SE -2323395840,2323447807,NO +2323382272,2323447807,NO 2323447808,2323775487,US 2323775488,2323841023,AU 2323841024,2323906559,CH @@ -35783,9 +35624,7 @@ 2330525696,2330591231,SE 2330591232,2330656767,US 2330656768,2330722303,NZ -2330722304,2331049983,US -2331049984,2331115519,GB -2331115520,2331181055,US +2330722304,2331181055,US 2331181056,2331246591,JP 2331246592,2331443199,DE 2331443200,2331508735,US @@ -35947,7 +35786,9 @@ 2355036160,2355101695,US 2355101696,2355167231,TW 2355167232,2355232767,GB -2355232768,2355691519,US +2355232768,2355433471,US +2355433472,2355433727,GB +2355433728,2355691519,US 2355691520,2355757055,IT 2355757056,2355953663,US 2355953664,2357919743,TW @@ -35968,9 +35809,7 @@ 2359689216,2359754751,SE 2359754752,2359820287,CA 2359820288,2359885823,AU -2359885824,2360215807,US -2360215808,2360216063,US -2360216064,2360672255,US +2359885824,2360672255,US 2360672256,2360737791,DE 2360737792,2360868863,US 2360868864,2360934399,CA @@ -36048,9 +35887,7 @@ 2366373632,2366373887,GB 2366373888,2367487999,DE 2367488000,2367553535,SI -2367553536,2370579746,DE -2370579747,2370579747,DE -2370579748,2370895871,DE +2367553536,2370895871,DE 2370895872,2370961407,SE 2370961408,2371158015,DE 2371158016,2371223551,RO @@ -36066,7 +35903,9 @@ 2372206592,2372214783,UA 2372214784,2372218879,DE 2372218880,2372222975,FR -2372222976,2372231679,EU +2372222976,2372227071,EU +2372227072,2372227327,DK +2372227328,2372231679,EU 2372231680,2372232191,GB 2372232192,2372239359,EU 2372239360,2372264447,RU @@ -36088,11 +35927,7 @@ 2372501504,2372505599,UA 2372505600,2372507647,NL 2372507648,2372509695,IT -2372509696,2372510207,AE -2372510208,2372510719,ES -2372510720,2372510975,A2 -2372510976,2372511231,GR -2372511232,2372511743,A2 +2372509696,2372511743,A2 2372511744,2372513791,SI 2372513792,2372534271,GB 2372534272,2372665343,US @@ -36111,10 +35946,8 @@ 2373582848,2373623807,CH 2373623808,2373627102,AU 2373627103,2373627103,CH -2373627104,2373631231,AU -2373631232,2373631487,CH -2373631488,2373631999,AU -2373632000,2373648383,CH +2373627104,2373627903,AU +2373627904,2373648383,CH 2373648384,2373910527,US 2373910528,2373911041,FI 2373911042,2373911042,EU @@ -36134,7 +35967,9 @@ 2374516736,2374524927,AM 2374524928,2374525717,FR 2374525718,2374525718,BE -2374525719,2374529023,FR +2374525719,2374528261,FR +2374528262,2374528262,PL +2374528263,2374529023,FR 2374529024,2374531071,RU 2374531072,2374533119,NL 2374533120,2374565887,HR @@ -36160,11 +35995,7 @@ 2375090176,2375155711,NO 2375155712,2375221247,US 2375221248,2375352319,SE -2375352320,2376079615,US -2376079616,2376079871,GB -2376079872,2376233215,US -2376233216,2376233471,AU -2376233472,2376269823,US +2375352320,2376269823,US 2376269824,2376335359,GB 2376335360,2376597503,US 2376597504,2376663039,AU @@ -36172,8 +36003,8 @@ 2376728576,2376761343,GB 2376761344,2376777727,CZ 2376777728,2376781823,BA -2376781824,2376783871,ES -2376783872,2376785919,FR +2376781824,2376782847,DZ +2376782848,2376785919,FR 2376785920,2376794111,UA 2376794112,2376859647,CH 2376859648,2376925183,FI @@ -36207,15 +36038,17 @@ 2378760192,2378825727,AT 2378825728,2378891263,US 2378891264,2378956799,AT -2378956800,2379218943,US +2378956800,2379131391,US +2379131392,2379131647,IN +2379131648,2379218943,US 2379218944,2379284479,FI 2379284480,2380201983,US 2380201984,2380267519,KR 2380267520,2380398591,US 2380398592,2380464127,IL -2380464128,2380464896,FR -2380464897,2380464897,US -2380464898,2380465407,FR +2380464128,2380464895,FR +2380464896,2380465151,US +2380465152,2380465407,FR 2380465408,2380465663,AP 2380465664,2380529663,FR 2380529664,2380558847,GB @@ -36258,10 +36091,8 @@ 2382422016,2382426111,JM 2382426112,2382430207,US 2382430208,2382626815,CA -2382626816,2382653183,US -2382653184,2382653439,CN -2382653440,2382678527,US -2382678528,2382684159,CA +2382626816,2382675967,US +2382675968,2382684159,CA 2382684160,2382692351,US 2382692352,2383085567,CA 2383085568,2383151103,US @@ -36273,9 +36104,7 @@ 2386067456,2386083839,US 2386083840,2386624511,CA 2386624512,2386690047,US -2386690048,2386988287,CA -2386988288,2386988543,CH -2386988544,2387344127,CA +2386690048,2387344127,CA 2387344128,2387344895,US 2387344896,2387345151,CA 2387345152,2387345407,US @@ -36300,8 +36129,8 @@ 2395013120,2395209727,CA 2395209728,2395340799,US 2395340800,2395814911,CA -2395814912,2395815423,US -2395815424,2395841279,CA +2395814912,2395815167,US +2395815168,2395841279,CA 2395841280,2395841535,GB 2395841536,2395854079,CA 2395854080,2395854335,US @@ -36324,8 +36153,8 @@ 2402549760,2402680831,GB 2402680832,2402746367,BR 2402746368,2402945023,US -2402945024,2402946047,GB -2402946048,2403401727,US +2402945024,2402945279,GB +2402945280,2403401727,US 2403401728,2403467263,GB 2403467264,2404974591,US 2404974592,2405040127,HK @@ -36436,13 +36265,15 @@ 2418337280,2418338303,US 2418338304,2418338815,IN 2418338816,2418341887,US -2418341888,2418342911,IN -2418342912,2418606079,US +2418341888,2418342143,IN +2418342144,2418606079,US 2418606080,2418671615,DE 2418671616,2418737151,US 2418737152,2418802687,NL 2418802688,2418868223,EU -2418868224,2419326975,US +2418868224,2418998271,US +2418998272,2418998527,GB +2418998528,2419326975,US 2419326976,2419392511,CN 2419392512,2419458047,AU 2419458048,2419523583,NL @@ -36510,7 +36341,9 @@ 2428174336,2428178431,GB 2428178432,2428183562,US 2428183563,2428183563,EU -2428183564,2428567551,US +2428183564,2428185087,US +2428185088,2428185343,GB +2428185344,2428567551,US 2428567552,2428633087,NO 2428633088,2428696831,CA 2428696832,2428697087,EU @@ -36531,17 +36364,11 @@ 2429943808,2430009343,HK 2430009344,2432172031,US 2432172032,2432237567,BE -2432237568,2432573439,US -2432573440,2432575487,GB -2432575488,2432575743,DE -2432575744,2432581631,GB -2432581632,2432602111,US -2432602112,2432602879,IE -2432602880,2432603135,PL -2432603136,2432604159,IE -2432604160,2432615935,US -2432615936,2432616447,NL -2432616448,2432616448,US +2432237568,2432577535,US +2432577536,2432577791,GB +2432577792,2432615935,US +2432615936,2432616191,NL +2432616192,2432616448,US 2432616449,2432617472,NL 2432617473,2432630783,US 2432630784,2432696319,CN @@ -36549,9 +36376,9 @@ 2433247232,2433247487,GB 2433247488,2433810431,NL 2433810432,2433875967,GB -2433875968,2435115775,NL -2435115776,2435116031,GB -2435116032,2436300799,NL +2433875968,2435055615,NL +2435055616,2435121151,GB +2435121152,2436300799,NL 2436300800,2436366335,GB 2436366336,2436759551,NL 2436759552,2436767743,GB @@ -36578,9 +36405,7 @@ 2447966208,2448031743,GB 2448031744,2448097279,CH 2448097280,2448162815,SE -2448162816,2448173055,HU -2448173056,2448175103,RO -2448175104,2448228351,HU +2448162816,2448228351,HU 2448228352,2448293887,PL 2448293888,2448359423,FR 2448359424,2448424959,GB @@ -36618,7 +36443,9 @@ 2449477632,2449479679,AL 2449479680,2449481727,FR 2449481728,2449489919,RO -2449489920,2449491967,FR +2449489920,2449490943,FR +2449490944,2449491199,DE +2449491200,2449491967,FR 2449491968,2449494015,NL 2449494016,2449496063,UA 2449496064,2449498111,FR @@ -36638,11 +36465,11 @@ 2451026432,2451026687,AU 2451026688,2451031039,US 2451031040,2451031295,AP -2451031296,2451035135,US +2451031296,2451031807,US +2451031808,2451032063,AU +2451032064,2451035135,US 2451035136,2451035391,EU -2451035392,2451042815,US -2451042816,2451043071,ZA -2451043072,2451986959,US +2451035392,2451986959,US 2451986960,2451986960,GB 2451986961,2452619263,US 2452619264,2452684799,IT @@ -36665,15 +36492,10 @@ 2453805056,2453807103,FI 2453807104,2453815295,GB 2453815296,2453831679,RO -2453831680,2453832191,IQ -2453832192,2453832703,IR -2453832704,2453833727,IQ +2453831680,2453833727,IQ 2453833728,2453835775,ES 2453835776,2453837823,FR -2453837824,2453838335,LU -2453838336,2453838847,EU -2453838848,2453839359,SE -2453839360,2453839871,LU +2453837824,2453839871,EU 2453839872,2453852159,RU 2453852160,2453856255,RO 2453856256,2453858303,DE @@ -36691,15 +36513,13 @@ 2454585344,2454716415,US 2454716416,2454781951,GB 2454781952,2454847487,FI -2454847488,2454852095,US -2454852096,2454852351,US -2454852352,2454870015,US -2454870016,2454870527,CL -2454870528,2454885503,US +2454847488,2454885503,US 2454885504,2454885631,GB 2454885632,2454904999,US 2454905000,2454905007,BR -2454905008,2454906943,US +2454905008,2454905919,US +2454905920,2454905951,AR +2454905952,2454906943,US 2454906944,2454906951,CL 2454906952,2454913023,US 2454913024,2454978559,CL @@ -36729,7 +36549,8 @@ 2457075712,2457141247,AU 2457206784,2457272319,AU 2457272320,2457337855,FI -2457337856,2457360383,RU +2457337856,2457346047,CZ +2457346048,2457360383,RU 2457360384,2457361407,CZ 2457361408,2457366527,RU 2457366528,2457367551,GB @@ -36762,8 +36583,8 @@ 2459959296,2460024831,US 2460024832,2460090367,FI 2460090368,2460152319,GB -2460152320,2460152831,FR -2460152832,2460155903,GB +2460152320,2460152575,FR +2460152576,2460155903,GB 2460155904,2460221439,US 2460221440,2460286975,BR 2460286976,2460549119,US @@ -36782,22 +36603,16 @@ 2461466624,2461597695,US 2461597696,2461599743,CH 2461599744,2461601791,SE -2461601792,2461603762,GB -2461603763,2461603763,GB -2461603764,2461605887,GB +2461601792,2461605887,GB 2461605888,2461607935,LB 2461607936,2461609983,FR -2461609984,2461610111,NL -2461610112,2461610463,BE -2461610464,2461611519,NL -2461611520,2461611575,BE -2461611576,2461611583,NL -2461611584,2461612031,BE +2461609984,2461612031,NL 2461612032,2461613567,IL 2461613568,2461613823,PS 2461613824,2461614079,IL 2461614080,2461630463,TR -2461630464,2461663231,RU +2461630464,2461646847,NL +2461646848,2461663231,RU 2461663232,2461794303,US 2461794304,2461859839,GB 2461859840,2461990911,US @@ -36806,7 +36621,9 @@ 2462121984,2462187519,PT 2462187520,2462253055,GB 2462253056,2462326783,AU -2462384128,2463236095,US +2462384128,2462580735,US +2462580736,2462646271,GB +2462646272,2463236095,US 2463236096,2463301631,AT 2463301632,2463367167,FI 2463367168,2463432703,SI @@ -36873,13 +36690,15 @@ 2466242560,2466250751,GE 2466250752,2466318335,US 2466318336,2466318591,SG -2466318592,2466323475,US -2466323476,2466323477,IN -2466323478,2466326015,US +2466318592,2466323455,US +2466323456,2466323711,SG +2466323712,2466326015,US 2466326016,2466326271,SG 2466326272,2466336767,US 2466336768,2466337023,SG -2466337024,2466643967,US +2466337024,2466374039,US +2466374040,2466374040,GB +2466374041,2466643967,US 2466643968,2466709503,KR 2466709504,2466775039,HU 2466775040,2466840575,HK @@ -36938,9 +36757,7 @@ 2472673280,2472869887,FR 2472869888,2472935423,US 2472935424,2473000959,GR -2473000960,2473344255,US -2473344256,2473344511,GB -2473344512,2473394175,US +2473000960,2473394175,US 2473394176,2473459711,AU 2473459712,2473525247,ZA 2473525248,2473656319,NO @@ -37001,11 +36818,7 @@ 2479226880,2479357951,US 2479357952,2479423487,AU 2479423488,2479489023,GB -2479489024,2479584767,US -2479584768,2479585023,US -2479585024,2479586815,US -2479586816,2479587071,US -2479587072,2479620095,US +2479489024,2479620095,US 2479620096,2479685631,DE 2479685632,2479947775,US 2479947776,2480013311,AU @@ -37083,15 +36896,18 @@ 2494103552,2494169087,FR 2494169088,2494562303,US 2494562304,2494627839,GB -2494627840,2494650367,US -2494650368,2494652415,BR -2494652416,2494655487,US +2494627840,2494650623,US +2494650624,2494650879,BR +2494650880,2494655487,US 2494655488,2494655743,MX 2494655744,2494660607,US 2494660608,2494661119,EU -2494661120,2494676991,US -2494676992,2494678015,AU -2494678016,2494683391,US +2494661120,2494677247,US +2494677248,2494677503,AU +2494677504,2494677759,US +2494677760,2494678015,AU +2494678016,2494683135,US +2494683136,2494683391,SG 2494683392,2494683647,AP 2494683648,2494689791,US 2494689792,2494690047,IN @@ -37108,9 +36924,7 @@ 2495351040,2495351295,EU 2495351296,2495353143,US 2495353144,2495353144,EU -2495353145,2495410943,US -2495410944,2495411199,AU -2495411200,2495412223,US +2495353145,2495412223,US 2495412224,2495412479,AP 2495412480,2495807487,US 2495807488,2495873023,AU @@ -37121,7 +36935,9 @@ 2496135168,2496200703,NL 2496200704,2498475007,MX 2498475008,2498476031,EC -2498476032,2499128575,MX +2498476032,2499110519,MX +2499110520,2499110527,NI +2499110528,2499128575,MX 2499128576,2499128831,US 2499128832,2499477503,MX 2499477504,2499543039,DE @@ -37152,22 +36968,26 @@ 2500150720,2500158463,US 2500158464,2500158975,GB 2500158976,2500161023,US -2500161024,2500163583,GB -2500163584,2500175871,US +2500161024,2500161791,GB +2500161792,2500162175,US +2500162176,2500162559,GB +2500162560,2500175871,US 2500175872,2500175879,RO 2500175880,2500188159,US 2500188160,2500188415,CH 2500188416,2500198911,US -2500198912,2500199423,GB +2500198912,2500199167,GB +2500199168,2500199423,US 2500199424,2500199935,IE 2500199936,2500219135,US 2500219136,2500219391,DE 2500219392,2500225553,US 2500225554,2500225561,ES -2500225562,2500227071,US -2500227072,2500229119,FR -2500229120,2500229375,GB -2500229376,2500230143,US +2500225562,2500227583,US +2500227584,2500227839,FR +2500227840,2500228607,US +2500228608,2500228863,FR +2500228864,2500230143,US 2500230144,2500230399,GB 2500230400,2500235775,US 2500235776,2500236287,GB @@ -37181,30 +37001,49 @@ 2500238384,2500238399,DE 2500238400,2500238463,US 2500238464,2500238527,DE -2500238528,2500239359,US -2500239360,2500240383,GB -2500240384,2500241151,FR -2500241152,2500247551,GB -2500247552,2500272127,US -2500272128,2500276735,GB +2500238528,2500240383,US +2500240384,2500240639,FR +2500240640,2500240895,US +2500240896,2500241151,FR +2500241152,2500245503,US +2500245504,2500245759,GB +2500245760,2500246015,US +2500246016,2500246527,GB +2500246528,2500272127,US +2500272128,2500272639,GB +2500272640,2500274431,US +2500274432,2500274687,GB +2500274688,2500275199,US +2500275200,2500275455,GB +2500275456,2500276223,US +2500276224,2500276735,GB 2500276736,2500276991,US 2500276992,2500277247,GB -2500277248,2500288511,US -2500288512,2500288767,FR -2500288768,2500296703,DE -2500296704,2500317183,US -2500317184,2500321279,ES -2500321280,2500392959,US +2500277248,2500289023,US +2500289024,2500289279,FR +2500289280,2500292607,US +2500292608,2500292863,DE +2500292864,2500293375,US +2500293376,2500293631,DE +2500293632,2500319231,US +2500319232,2500319487,ES +2500319488,2500392959,US 2500392960,2500393215,IN 2500393216,2500393983,US 2500393984,2500394239,GB -2500394240,2500535295,US +2500394240,2500532749,US +2500532750,2500532750,GR +2500532751,2500535295,US 2500535296,2500535551,IE 2500535552,2500537343,US 2500537344,2500537599,GB -2500537600,2500550655,US -2500550656,2500558847,FR -2500558848,2500616191,US +2500537600,2500551679,US +2500551680,2500551935,FR +2500551936,2500553759,US +2500553760,2500553767,GB +2500553768,2500555263,US +2500555264,2500555519,FR +2500555520,2500616191,US 2500616192,2500616703,IT 2500616704,2500636735,US 2500636736,2500636799,GB @@ -37264,9 +37103,7 @@ 2508128256,2508455935,US 2508455936,2508521471,IT 2508521472,2508587007,CH -2508587008,2508631295,BE -2508631296,2508631551,US -2508631552,2508652543,BE +2508587008,2508652543,BE 2508652544,2508718079,AU 2508718080,2508914687,US 2508914688,2508980223,IT @@ -37289,8 +37126,9 @@ 2509928448,2509930495,FI 2509930496,2509934591,RU 2509934592,2509936639,DE -2509936640,2509937665,AT -2509937666,2509937919,RU +2509936640,2509937683,AT +2509937684,2509937684,SS +2509937685,2509937919,AT 2509937920,2509938175,IT 2509938176,2509938431,US 2509938432,2509938687,DE @@ -37338,15 +37176,19 @@ 2516523008,2516525055,RU 2516525056,2516525183,US 2516525184,2516525246,NL -2516525247,2516525423,US +2516525247,2516525391,US +2516525392,2516525407,NL +2516525408,2516525423,US 2516525424,2516525431,NL 2516525432,2516525439,US 2516525440,2516525447,NL -2516525448,2516525727,US +2516525448,2516525519,US +2516525520,2516525551,NL +2516525552,2516525727,US 2516525728,2516525823,NL 2516525824,2516526079,US -2516526080,2516526175,NL -2516526176,2516526335,US +2516526080,2516526143,NL +2516526144,2516526335,US 2516526336,2516527103,NL 2516527104,2516529151,GB 2516529152,2516529279,CH @@ -37494,19 +37336,12 @@ 2546039040,2547187711,US 2547187712,2547318783,GB 2547318784,2547515391,US -2547517440,2547517951,FR -2547518464,2547521535,DE -2547523584,2547527679,FR -2547548160,2547646463,RU +2547548160,2547580927,RU 2548039680,2548563967,GB 2548563968,2548826111,IR -2548826112,2548827391,AT -2548827392,2548827647,RU -2548827648,2548828671,AT -2548828672,2548829439,RU -2548829440,2548829695,AT +2548826112,2548829695,AT 2548829696,2548829951,NL -2548829952,2548830207,AE +2548829952,2548830207,DE 2548830208,2548830463,US 2548830464,2548830719,DE 2548830720,2548830975,IT @@ -37516,9 +37351,10 @@ 2548831744,2548831999,US 2548832000,2548832255,ES 2548832256,2548832511,IS -2548832512,2548833791,RU -2548833792,2548834047,RO -2548834048,2548834303,RU +2548832512,2548832767,PL +2548832768,2548833279,CH +2548833280,2548833791,NL +2548833792,2548834303,AT 2548834304,2548842495,GB 2548842496,2548858879,RU 2548858880,2548867071,NL @@ -37532,7 +37368,8 @@ 2548928512,2548932607,KZ 2548932608,2548934655,NL 2548934656,2548936703,RU -2548936704,2548940799,SE +2548936704,2548936959,US +2548936960,2548940799,SE 2548940800,2548948991,ES 2548948992,2548951039,CZ 2548951040,2548953087,GB @@ -37558,8 +37395,9 @@ 2549700608,2549701375,DE 2549701376,2549701631,SE 2549701632,2549701887,PL -2549701888,2549702143,IT -2549702144,2549702655,EU +2549701888,2549702143,FR +2549702144,2549702399,GB +2549702400,2549702655,EU 2549702656,2549704703,UA 2549704704,2549706751,CZ 2549706752,2549710847,NO @@ -37686,7 +37524,9 @@ 2570190848,2572681215,US 2572681216,2572746751,SE 2572746752,2572943359,US -2572943360,2573402111,DE +2572943360,2573336575,DE +2573336576,2573369343,EU +2573369344,2573402111,DE 2573402112,2573467647,CN 2573467648,2573533183,DE 2573533184,2573598719,CN @@ -37699,7 +37539,18 @@ 2574319616,2574647295,US 2574647296,2574778367,CN 2574778368,2583691263,JP -2583691264,2584018943,US +2583691264,2583695359,ZA +2583695360,2583697407,BW +2583697408,2583699455,CI +2583699456,2583707647,GA +2583707648,2583724031,AO +2583724032,2583728127,UG +2583728128,2583730175,NG +2583730176,2583732223,TZ +2583732224,2583736319,ZA +2583736320,2583740415,GA +2583740416,2583756799,NA +2583756800,2584018943,US 2584018944,2584084479,CA 2584084480,2584215551,US 2584215552,2584281087,GB @@ -37715,37 +37566,54 @@ 2585853952,2585985023,JP 2585985024,2586480639,US 2586480640,2586484735,IL -2586484736,2586610687,US -2586610688,2586611199,ES +2586484736,2586610175,US +2586610176,2586610431,GB +2586610432,2586610943,US +2586610944,2586611199,ES 2586611200,2586611711,US 2586611712,2586611967,GB 2586611968,2586619903,US 2586619904,2586620415,FR 2586620416,2586622463,US 2586622464,2586622975,ES -2586622976,2586716159,US -2586716160,2586717183,ES -2586717184,2586804991,US +2586622976,2586804991,US 2586804992,2586805247,ES 2586805248,2586828799,US 2586828800,2586829055,CH -2586829056,2587017727,US -2587017728,2587017983,IE -2587017984,2587018239,US +2586829056,2587017215,US +2587017216,2587017471,IE +2587017472,2587018239,US 2587018240,2587018495,IE -2587018496,2587066879,US -2587066880,2587067135,GB -2587067136,2587067647,US +2587018496,2587067647,US 2587067648,2587067903,GB 2587067904,2587068415,US 2587068416,2587068479,GB -2587068480,2587377663,US -2587377664,2587381759,IT -2587381760,2587443199,US +2587068480,2587240389,US +2587240390,2587240390,FR +2587240391,2587249417,US +2587249418,2587249418,FR +2587249419,2587380479,US +2587380480,2587380735,IT +2587380736,2587394047,US +2587394048,2587394559,ES +2587394560,2587443199,US 2587443200,2587447295,CH -2587447296,2587926527,US +2587447296,2587492351,US +2587492352,2587493375,ES +2587493376,2587926527,US 2587926528,2587930623,BG 2587930624,2587951103,US +2587951104,2587952127,ZA +2587952128,2587953151,NG +2587953152,2587954175,MU +2587954176,2587955199,ZA +2587955200,2587959295,KE +2587959296,2587961343,SN +2587963392,2587964415,SD +2587964416,2587965439,ZA +2587967488,2587975679,ZA +2588082176,2588114943,RE +2588934144,2589982719,SC 2600534016,2600665087,US 2600665088,2600730623,CA 2600730624,2600796159,NO @@ -37797,7 +37665,7 @@ 2608728320,2609053695,US 2609053696,2609119231,GB 2609119232,2609184767,FR -2609184768,2609250303,DE +2609184768,2609250303,PL 2609250304,2609381375,US 2609381376,2609446911,GB 2609446912,2609512447,DK @@ -37841,17 +37709,7 @@ 2614165504,2614231039,NO 2614231040,2614296575,ES 2614296576,2614362111,BR -2614362112,2614386431,US -2614386432,2614386495,PR -2614386496,2614386503,US -2614386504,2614386535,PR -2614386536,2614386543,US -2614386544,2614386575,PR -2614386576,2614386591,US -2614386592,2614386623,PR -2614386624,2614386679,US -2614386680,2614386687,PR -2614386688,2615083007,US +2614362112,2615083007,US 2615083008,2615148543,TR 2615148544,2615345151,US 2615345152,2615410687,NO @@ -37867,10 +37725,10 @@ 2616770560,2616786943,US 2616786944,2616852479,GB 2616852480,2616885247,DE -2616885248,2616885527,FR +2616885248,2616885503,FR +2616885504,2616885527,DE 2616885528,2616885529,EU -2616885530,2616885759,FR -2616885760,2616918015,DE +2616885530,2616918015,DE 2616983552,2617049087,US 2617049088,2617114623,IT 2617114624,2617180159,US @@ -38067,8 +37925,8 @@ 2650275840,2650341375,US 2650341376,2650406911,NO 2650406912,2650423295,US -2650423296,2650439679,JP -2650439680,2650603519,US +2650423296,2650472447,JP +2650472448,2650603519,US 2650603520,2650669055,CO 2650669056,2650734591,US 2650734592,2650800127,CN @@ -38178,9 +38036,7 @@ 2662670336,2662674431,AZ 2662674432,2662686719,DE 2662686720,2662694911,CH -2662694912,2662699007,KG -2662699008,2662700031,US -2662700032,2662727679,KG +2662694912,2662727679,KG 2662727680,2662793215,HK 2662793216,2663251967,US 2663251968,2663448575,FR @@ -38217,9 +38073,7 @@ 2667513856,2667515903,GB 2667515904,2667517951,CZ 2667517952,2667518975,SK -2667518976,2667519231,CZ -2667519232,2667519743,SK -2667519744,2667522047,CZ +2667518976,2667522047,CZ 2667522048,2667524095,GB 2667524096,2667526143,RU 2667526144,2667528191,LV @@ -38233,8 +38087,7 @@ 2667544576,2667560959,RU 2667560960,2667565055,IT 2667565056,2667565311,HK -2667565312,2667565313,AT -2667565314,2667565421,RU +2667565312,2667565421,AT 2667565422,2667565422,PT 2667565423,2667565423,ES 2667565424,2667565424,US @@ -38244,8 +38097,7 @@ 2667565428,2667565428,FI 2667565429,2667565429,CH 2667565430,2667565430,GB -2667565431,2667565823,RU -2667565824,2667566335,AT +2667565431,2667566335,AT 2667566336,2667566591,US 2667566592,2667566847,DE 2667566848,2667567103,FR @@ -38307,11 +38159,9 @@ 2671378432,2671443967,NO 2671443968,2671509503,US 2671509504,2671575039,NL -2671575040,2671719167,US -2671719168,2671719324,GB -2671719325,2671719328,US -2671719329,2671719423,GB -2671719424,2671749119,US +2671575040,2671720433,US +2671720434,2671720434,VE +2671720435,2671749119,US 2671749120,2671750143,CA 2671750144,2672295935,US 2672295936,2672361471,SE @@ -38367,9 +38217,9 @@ 2677407744,2677473279,US 2677473280,2677538815,FR 2677538816,2677604351,FI -2677604352,2677639167,US -2677639168,2677640191,CA -2677640192,2677644287,US +2677604352,2677639679,US +2677639680,2677639935,CA +2677639936,2677644287,US 2677644288,2677644347,GB 2677644348,2677644348,EU 2677644349,2677644543,GB @@ -38377,9 +38227,7 @@ 2677669888,2677735423,DE 2677735424,2677800959,US 2677800960,2677866495,CH -2677866496,2677924863,US -2677924864,2677925119,GB -2677925120,2677997567,US +2677866496,2677997567,US 2677997568,2678063103,CA 2678063104,2678128639,UA 2678128640,2678194175,US @@ -38418,8 +38266,12 @@ 2679177216,2679242751,CA 2679242752,2679308287,US 2679308288,2679373823,CH -2679373824,2679439359,GB -2679439360,2680029183,US +2679373824,2679422975,GB +2679422976,2679431167,US +2679431168,2679439359,FR +2679439360,2679525631,US +2679525632,2679525887,BR +2679525888,2680029183,US 2680029184,2680094719,SE 2680094720,2680225791,US 2680225792,2680356863,SE @@ -38443,7 +38295,9 @@ 2681798656,2681864191,FR 2681864192,2681929727,US 2681929728,2681995263,GB -2681995264,2682257407,US +2681995264,2682015231,US +2682015232,2682015487,IN +2682015488,2682257407,US 2682257408,2682322943,UA 2682322944,2682388479,US 2682388480,2682454015,CN @@ -38489,23 +38343,37 @@ 2684191552,2684191615,US 2684191616,2684192775,NL 2684192776,2684192783,US -2684192784,2684193847,NL +2684192784,2684193735,NL +2684193736,2684193743,US +2684193744,2684193847,NL 2684193848,2684193855,US -2684193856,2684193879,NL -2684193880,2684193911,US +2684193856,2684193887,NL +2684193888,2684193911,US 2684193912,2684194071,NL 2684194072,2684194079,US 2684194080,2684194111,NL 2684194112,2684194119,US -2684194120,2684194559,NL +2684194120,2684194143,NL +2684194144,2684194151,US +2684194152,2684194471,NL +2684194472,2684194479,TR +2684194480,2684194487,NL +2684194488,2684194495,GB +2684194496,2684194511,NL +2684194512,2684194519,GB +2684194520,2684194559,NL 2684194560,2684194623,US -2684194624,2684195199,NL -2684195200,2684195263,US -2684195264,2684196095,NL +2684194624,2684195071,NL +2684195072,2684195327,US +2684195328,2684195339,NL +2684195340,2684195343,US +2684195344,2684196095,NL 2684196096,2684196159,US 2684196160,2684196391,NL 2684196392,2684196399,US -2684196400,2684198911,NL +2684196400,2684197143,NL +2684197144,2684197151,GB +2684197152,2684198911,NL 2684198912,2684199423,GB 2684199424,2684199679,EU 2684199680,2684200959,GB @@ -38548,9 +38416,7 @@ 2687041536,2687238143,US 2687238144,2687297231,DE 2687297232,2687297247,GB -2687297248,2687297791,DE -2687297792,2687298047,FR -2687298048,2687301375,DE +2687297248,2687301375,DE 2687301376,2687301631,NL 2687301632,2687560191,DE 2687560192,2687560447,ZA @@ -38562,11 +38428,9 @@ 2688286720,2688352255,DE 2688352256,2688418825,CH 2688418826,2688418826,EU -2688418827,2688420863,CH -2688420864,2688421119,SG +2688418827,2688421119,CH 2688421120,2688421375,AP -2688421376,2688421887,US -2688421888,2688548863,CH +2688421376,2688548863,CH 2688548864,2688614399,AU 2688614400,2688679935,US 2688679936,2688745471,IT @@ -38580,21 +38444,15 @@ 2689269760,2689335295,TR 2689335296,2689400831,US 2689466368,2689531903,IT -2689531904,2689535999,US -2689536000,2689536511,GB -2689536512,2689545727,US -2689545728,2689546239,GB -2689546240,2689566207,US -2689566208,2689566719,GB -2689566720,2689568255,US -2689568256,2689568767,GB -2689568768,2689586687,US -2689586688,2689587199,GB -2689587200,2689593343,US -2689593344,2689593855,GB -2689593856,2689594367,US -2689594368,2689594879,GB -2689594880,2689597439,US +2689531904,2689536255,US +2689536256,2689536511,GB +2689536512,2689566207,US +2689566208,2689566463,GB +2689566464,2689586687,US +2689586688,2689586943,GB +2689586944,2689593343,US +2689593344,2689593599,GB +2689593600,2689597439,US 2689597440,2689662975,IT 2689662976,2689794047,US 2689794048,2689802239,DE @@ -38676,9 +38534,7 @@ 2703818752,2703884287,FI 2703884288,2703949823,DE 2703949824,2704015359,AU -2704015360,2704064511,US -2704064512,2704072703,CA -2704072704,2704277503,US +2704015360,2704277503,US 2704277504,2704343039,FR 2704343040,2704408575,US 2704408576,2704474111,AU @@ -38699,7 +38555,9 @@ 2705522688,2705588223,ES 2705588224,2705596159,US 2705596160,2705596415,CA -2705596416,2705691647,US +2705596416,2705621247,US +2705621248,2705621503,CH +2705621504,2705691647,US 2705691648,2705692671,GB 2705692672,2705710079,US 2705710080,2705711103,IN @@ -38762,9 +38620,9 @@ 2713387008,2713452543,CA 2713452544,2713583615,US 2713583616,2713649151,AR -2713649152,2713947391,US -2713947392,2713947647,DE -2713947648,2713976831,US +2713649152,2713946367,US +2713946368,2713946623,CA +2713946624,2713976831,US 2713976832,2714042367,VE 2714042368,2714238975,US 2714238976,2714304511,TH @@ -38801,16 +38659,18 @@ 2720399360,2720464895,FR 2720464896,2721382399,US 2721382400,2721447935,CA -2721447936,2722693119,US -2722693120,2722758655,CA +2721447936,2721579007,US +2721579008,2721644543,IN +2721644544,2722693119,US +2722693120,2722754559,CA +2722754560,2722754815,GB +2722754816,2722758655,CA 2722758656,2723479551,US 2723479552,2723545087,CA 2723545088,2723610623,CH 2723610624,2723832575,US 2723832576,2723832831,GB -2723832832,2723852287,US -2723852288,2723852543,GB -2723852544,2724268287,US +2723832832,2724268287,US 2724268288,2724268415,MX 2724268416,2724790271,US 2724790272,2724855807,CN @@ -38903,10 +38763,66 @@ 2731908096,2731909119,CA 2731909120,2731911167,US 2731911168,2731912191,DM -2731912192,2732086271,US +2731912192,2731921663,US +2731921664,2731921727,BE +2731921728,2732086271,US 2732086272,2732087295,CA -2732087296,2732099583,US -2732589056,2733637631,US +2732087296,2732105727,US +2732105728,2732107775,JM +2732107776,2732111871,US +2732111872,2732113919,CA +2732113920,2732189695,US +2732189696,2732192767,CA +2732192768,2732201983,US +2732201984,2732203007,VG +2732203008,2732204031,US +2732204032,2732206079,CA +2732206080,2732220159,US +2732220160,2732220415,CA +2732220416,2732227583,US +2732227584,2732228607,CA +2732228608,2732261375,US +2732261376,2732262399,CA +2732262400,2732263423,US +2732263424,2732265471,CA +2732265472,2732273663,US +2732273664,2732275711,CA +2732275712,2732278783,US +2732278784,2732279807,CA +2732279808,2732302335,US +2732302336,2732303359,CA +2732303360,2732306431,US +2732306432,2732307455,CA +2732307456,2732308479,US +2732308480,2732310527,CA +2732310528,2732320767,US +2732320768,2732322815,CA +2732322816,2732336127,US +2732336128,2732337151,CA +2732337152,2732351487,US +2732351488,2732353535,PR +2732353536,2732361727,US +2732361728,2732363775,BB +2732363776,2732375039,US +2732375040,2732376063,CA +2732376064,2732379135,US +2732379136,2732380159,CA +2732380160,2732390399,US +2732390400,2732391423,CA +2732391424,2732395519,US +2732395520,2732396543,CA +2732396544,2732423167,US +2732423168,2732425215,CA +2732425216,2732443647,US +2732443648,2732445695,CA +2732445696,2732446719,US +2732446720,2732447743,BM +2732447744,2732455935,US +2732455936,2732457983,CA +2732457984,2732472319,US +2732472320,2732474367,CA +2732474368,2732478463,US +2732589056,2734686207,US 2734686208,2734751743,CN 2734751744,2734817279,GB 2734817280,2734882815,US @@ -38967,7 +38883,9 @@ 2746351616,2746417151,CR 2746417152,2746482687,CN 2746482688,2746548223,KR -2746548224,2747072511,US +2746548224,2746786303,US +2746786304,2746786559,MY +2746786560,2747072511,US 2747072512,2747138047,AU 2747138048,2747465727,US 2747465728,2748055551,ZA @@ -38986,11 +38904,15 @@ 2750349312,2750414847,KR 2750414848,2750692863,US 2750692864,2750693375,EU -2750693376,2750873599,US +2750693376,2750724351,US +2750724352,2750724607,TW +2750724608,2750873599,US 2750873600,2750939135,CL 2750939136,2751070207,US 2751070208,2751135743,CL -2751135744,2751397887,US +2751135744,2751176703,US +2751176704,2751176959,GU +2751176960,2751397887,US 2751397888,2751463423,KR 2751463424,2751528959,KZ 2751528960,2751660031,FR @@ -39019,7 +38941,6 @@ 2754125824,2754127871,DE 2754127872,2754129919,SK 2754129920,2754131967,SE -2754131968,2754134015,PL 2754134016,2754138111,DE 2754138112,2754142207,GB 2754142208,2754144255,BA @@ -39041,9 +38962,7 @@ 2755461120,2755514879,DE 2755514880,2755515135,EU 2755515136,2755526655,DE -2755526656,2755592191,US -2755592192,2755657727,GB -2755657728,2755985407,US +2755526656,2755985407,US 2755985408,2756182015,JP 2756182016,2756247551,US 2756247552,2756313087,UY @@ -39145,7 +39064,9 @@ 2765578240,2765580287,AZ 2765580288,2765581311,GB 2765581312,2765581567,US -2765581568,2765582335,GB +2765581568,2765581823,GB +2765581824,2765582079,US +2765582080,2765582335,GB 2765582336,2765586431,CZ 2765586432,2765619199,IR 2765619200,2768240639,US @@ -39164,7 +39085,10 @@ 2769879040,2769944575,ZA 2769944576,2770272255,US 2770272256,2770337791,AU -2770337792,2772631551,US +2770337792,2770993151,US +2770993152,2771124223,IN +2771124224,2771451903,US +2772434944,2772631551,US 2772631552,2772697087,AU 2772697088,2772762623,US 2772762624,2772828159,AU @@ -39188,9 +39112,7 @@ 2775318528,2775384063,JP 2775384064,2775711743,US 2775711744,2775777279,NL -2775777280,2775806207,CA -2775806208,2775806463,US -2775806464,2775842815,CA +2775777280,2775842815,CA 2775842816,2775973887,US 2775973888,2776039423,AU 2776039424,2776104959,US @@ -39210,8 +39132,7 @@ 2778071040,2778333183,US 2778333184,2778398719,CA 2778398720,2779054079,US -2779054080,2779070463,SZ -2779070464,2779119615,ZA +2779054080,2779119615,ZA 2779119616,2779906047,US 2779906048,2779971583,CA 2779971584,2780037119,US @@ -39224,18 +39145,14 @@ 2780495872,2780561407,AU 2780561408,2780758015,US 2780758016,2780823551,AU -2780823552,2780930047,US -2780930048,2780930559,GB -2780930560,2780931071,US +2780823552,2780931071,US 2780931072,2780932351,GB -2780932352,2780932607,US -2780932608,2780933119,GB -2780933120,2780954623,US +2780932352,2780954623,US 2780954624,2781020159,KR 2781020160,2781478911,US 2781478912,2781544447,HK -2781544448,2781623807,US -2781623808,2781624319,CA +2781544448,2781624063,US +2781624064,2781624319,CA 2781624320,2781629951,US 2781629952,2781630207,EU 2781630208,2781675519,US @@ -39254,69 +39171,7 @@ 2783182848,2783248383,AU 2783248384,2783313919,KR 2783313920,2783379455,US -2783379456,2783383039,ZA -2783383040,2783383295,US -2783383296,2783384575,ZA -2783384576,2783384831,US -2783384832,2783386623,ZA -2783386624,2783386879,US -2783386880,2783388159,ZA -2783388160,2783388415,US -2783388416,2783388927,ZA -2783388928,2783389183,US -2783389184,2783390719,ZA -2783390720,2783390975,US -2783390976,2783394815,ZA -2783394816,2783395071,US -2783395072,2783396351,ZA -2783396352,2783396863,US -2783396864,2783399167,ZA -2783399168,2783399679,US -2783399680,2783405311,ZA -2783405312,2783405567,US -2783405568,2783408127,ZA -2783408128,2783408383,US -2783408384,2783408895,ZA -2783408896,2783409151,US -2783409152,2783409407,ZA -2783409408,2783409663,US -2783409664,2783410431,ZA -2783410432,2783410687,US -2783410688,2783411711,ZA -2783411712,2783411967,US -2783411968,2783412223,ZA -2783412224,2783412735,US -2783412736,2783415551,ZA -2783415552,2783416063,US -2783416064,2783417087,ZA -2783417088,2783417343,US -2783417344,2783417599,ZA -2783417600,2783417855,US -2783417856,2783419647,ZA -2783419648,2783419903,US -2783419904,2783420415,ZA -2783420416,2783420671,US -2783420672,2783425023,ZA -2783425024,2783425279,US -2783425280,2783426815,ZA -2783426816,2783427071,US -2783427072,2783428607,ZA -2783428608,2783428863,US -2783428864,2783429119,ZA -2783429120,2783429375,US -2783429376,2783430399,ZA -2783430400,2783430655,US -2783430656,2783431679,ZA -2783431680,2783431935,US -2783431936,2783432447,ZA -2783432448,2783432703,US -2783432704,2783437055,ZA -2783437056,2783437311,US -2783437312,2783440127,ZA -2783440128,2783440383,US -2783440384,2783442943,ZA -2783442944,2783443199,US -2783443200,2783444991,ZA +2783379456,2783444991,ZA 2783444992,2783510527,US 2783510528,2783576063,ZA 2783576064,2783969279,US @@ -39365,19 +39220,15 @@ 2793209856,2793275391,KR 2793275392,2796748799,US 2796748800,2796814335,NZ -2796814336,2798412543,US -2798412544,2798412799,PR -2798412800,2798429183,US -2798429184,2798430207,PR -2798430208,2798434303,US -2798434304,2798434815,PR -2798434816,2798452223,US -2798452224,2798452479,PR -2798452480,2798838015,US +2796814336,2798434559,US +2798434560,2798434815,PR +2798434816,2798838015,US 2798838016,2798838271,CO 2798838272,2799086335,US 2799086336,2799086591,PR -2799086592,2802386186,US +2799086592,2799106303,US +2799106304,2799106559,PR +2799106560,2802386186,US 2802386187,2802386187,EU 2802386188,2802515967,US 2802515968,2802581503,CA @@ -39389,7 +39240,9 @@ 2803761152,2803826687,AU 2803826688,2803892223,US 2803892224,2805989375,CA -2805989376,2806644735,US +2805989376,2806012927,US +2806012928,2806013183,HK +2806013184,2806644735,US 2806644736,2806710271,CA 2806710272,2807103487,US 2807103488,2807169023,NL @@ -39448,7 +39301,9 @@ 2813263872,2813329407,JP 2813329408,2813526015,US 2813526016,2813591551,NZ -2813591552,2814181375,US +2813591552,2813908479,US +2813908480,2813908735,SG +2813908736,2814181375,US 2814181376,2814246911,AU 2814246912,2814377215,US 2814377216,2814377471,EU @@ -39511,11 +39366,11 @@ 2823815168,2823946239,ZA 2823946240,2824011775,US 2824011776,2824077311,AR -2824077312,2824274687,US -2824274688,2824274720,CH +2824077312,2824274720,US 2824274721,2824274721,EU -2824274722,2824274943,CH -2824274944,2824404991,US +2824274722,2824357375,US +2824357376,2824357631,GB +2824357632,2824404991,US 2824404992,2824470527,ZA 2824536064,2824798207,US 2824798208,2824863743,TW @@ -39545,9 +39400,9 @@ 2827747328,2827812863,AU 2827812864,2827878399,US 2827878400,2827943935,ZA -2827943936,2827972607,US -2827972608,2827973631,US -2827973632,2827974015,US +2827943936,2827973119,US +2827973120,2827973375,US +2827973376,2827974015,US 2827974016,2827974143,US 2827974144,2827974655,US 2827974656,2827974783,US @@ -39563,9 +39418,7 @@ 2828533760,2828664831,AU 2828664832,2828730367,KR 2828730368,2828795903,ZA -2828795904,2829033471,US -2829033472,2829033727,IN -2829033728,2829041663,US +2828795904,2829041663,US 2829041664,2829041919,AU 2829041920,2829058047,US 2829058048,2829123583,CN @@ -39591,17 +39444,17 @@ 2829385728,2829451263,MX 2829451264,2829516799,US 2829516800,2829582335,BW -2829582336,2829591033,US +2829582336,2829590783,US +2829590784,2829591033,GB 2829591034,2829591034,EU -2829591035,2829593343,US +2829591035,2829591039,GB +2829591040,2829593343,US 2829593344,2829593599,EU 2829593600,2829844479,US 2829844480,2829910015,ZA 2829910016,2830066431,US 2830066432,2830066687,HK -2830066688,2830085887,US -2830085888,2830086143,GB -2830086144,2830106623,US +2830066688,2830106623,US 2830106624,2830172159,CO 2830172160,2830434303,US 2830499840,2830586879,US @@ -39610,11 +39463,7 @@ 2830761984,2830827519,AU 2830827520,2830830335,KW 2830830336,2830830591,US -2830830592,2830852863,KW -2830852864,2830853119,US -2830853120,2830853375,KW -2830853376,2830853631,US -2830853632,2830853887,KW +2830830592,2830853887,KW 2830853888,2830854143,US 2830854144,2830855935,KW 2830855936,2830856191,US @@ -39685,7 +39534,9 @@ 2853306368,2853371903,CL 2853371904,2853765119,US 2853765120,2853830655,MX -2853830656,2854617087,US +2853830656,2854603775,US +2854603776,2854604031,NL +2854604032,2854617087,US 2854617088,2854682623,MY 2854748160,2855469055,US 2855469056,2855484415,PY @@ -39736,8 +39587,8 @@ 2863661056,2863857663,US 2863857664,2863923199,SG 2863923200,2864844799,US -2864844800,2864846847,NL -2864846848,2864848895,US +2864844800,2864845055,NL +2864845056,2864848895,US 2864848896,2864849151,GB 2864849152,2865417215,US 2865417216,2865417471,GB @@ -39751,20 +39602,22 @@ 2868379648,2868605376,US 2868605377,2868605377,NO 2868605378,2868658175,US -2868658176,2868660223,GB +2868658176,2868658431,GB +2868658432,2868660223,US 2868660224,2868660479,EU 2868660480,2868662271,US 2868662272,2868662527,EU 2868662528,2868673023,US 2868673024,2868673279,FR -2868673280,2868673535,ZA -2868673536,2868674336,US +2868673280,2868674336,US 2868674337,2868674337,EU -2868674338,2868674559,US -2868674560,2868682751,AU -2868682752,2868682752,US +2868674338,2868676607,US +2868676608,2868676863,AU +2868676864,2868682752,US 2868682753,2868682753,AP -2868682754,2868689919,US +2868682754,2868689407,US +2868689408,2868689663,AU +2868689664,2868689919,US 2868689920,2868690175,SG 2868690176,2868772863,US 2868838400,2868903935,BE @@ -39777,14 +39630,16 @@ 2870083584,2870089727,FR 2870089728,2870091775,DE 2870091776,2870095871,FR -2870095872,2870096383,SG -2870096384,2870149119,FR +2870095872,2870096127,SG +2870096128,2870149119,FR 2870149120,2870214655,HU 2870214656,2870280191,DK 2870280192,2870345727,NL 2870345728,2870411263,GB 2870411264,2870476799,NO -2870476800,2870542335,DE +2870476800,2870536447,DE +2870536448,2870536703,ES +2870536704,2870542335,DE 2870542336,2870575103,CH 2870575104,2870583295,SE 2870583296,2870584319,NO @@ -39843,9 +39698,7 @@ 2871130112,2871132159,RU 2871132160,2872049663,CN 2872049664,2873098239,IN -2873098240,2873372159,US -2873372160,2873372927,IN -2873372928,2873884671,US +2873098240,2873884671,US 2873884672,2874146815,IN 2874146816,2875195391,CN 2875195392,2875719679,TH @@ -39856,11 +39709,15 @@ 2879467520,2879468031,AP 2879468032,2879469567,US 2879469568,2879470079,AP -2879470080,2882469887,US +2879470080,2881486847,US +2881486848,2881487103,GB +2881487104,2882469887,US 2882469888,2882535423,SG 2882535424,2883583999,CN 2883584000,2885681151,VN -2885681152,2886729727,US +2885681152,2886667022,US +2886667023,2886667278,DE +2886667279,2886729727,US 2887778304,2889875455,US 2894069760,2894921727,US 2894921728,2895118335,GB @@ -39899,27 +39756,19 @@ 2902564688,2902564703,AU 2902564704,2904555519,US 2904555520,2904817663,CA -2904817664,2905020415,US -2905020416,2905022463,IN -2905022464,2905030655,US -2905030656,2905034751,IN -2905034752,2905045247,US +2904817664,2905002152,US +2905002153,2905002153,EU +2905002154,2905045247,US 2905045248,2905045503,SG -2905045504,2905350729,US -2905350730,2905350730,US -2905350731,2905473023,US +2905045504,2905473023,US 2905473024,2905481215,CA 2905481216,2913992703,US 2913992704,2914516991,CA 2914516992,2915092135,US 2915092136,2915092143,SA -2915092144,2915096014,US -2915096015,2915096015,US -2915096016,2915250175,US +2915092144,2915250175,US 2915250176,2915254271,CA -2915254272,2915497759,US -2915497760,2915497761,US -2915497762,2915516415,US +2915254272,2915516415,US 2915516416,2915516671,NL 2915516672,2915516927,CA 2915516928,2915517183,US @@ -39941,9 +39790,7 @@ 2915795014,2915795014,MX 2915795015,2915958783,US 2915958784,2916024319,CA -2916024320,2916140287,US -2916140288,2916140543,US -2916140544,2916163583,US +2916024320,2916163583,US 2916163584,2916171775,CA 2916171776,2916184063,US 2916184064,2916196351,CA @@ -39953,42 +39800,32 @@ 2916319232,2916335615,PR 2916335616,2916368383,US 2916368384,2916401151,CA -2916401152,2916481023,US -2916481024,2916481535,US -2916481536,2916515839,US +2916401152,2916515839,US 2916515840,2916519935,CA 2916519936,2916581375,US 2916581376,2916614143,PR 2916614144,2917195775,US -2917195776,2917196031,A2 -2917196032,2917196287,CA -2917196288,2917199871,A2 +2917195776,2917199871,A2 2917199872,2917203967,CA 2917203968,2917257215,US 2917257216,2917261311,KY 2917261312,2917265407,US 2917265408,2917267711,JM -2917267712,2917267775,AG -2917267776,2917267839,VG -2917267840,2917267967,AG -2917267968,2917268223,JM -2917268224,2917268479,BB -2917268480,2917269503,JM +2917267712,2917267967,AG +2917267968,2917269503,JM 2917269504,2917449727,US 2917449728,2917466111,PR 2917466112,2917572607,US 2917572608,2917580799,CA 2917580800,2917621759,US 2917621760,2917629951,CA -2917629952,2917647871,US -2917647872,2917648383,CN -2917648384,2917653503,US +2917629952,2917653503,US 2917653504,2917654015,GB -2917654016,2917660671,US -2917660672,2917661183,GB -2917661184,2917706239,US -2917706240,2917707007,CA -2917707008,2918014975,US +2917654016,2917704191,US +2917704192,2917704447,CA +2917704448,2917842175,US +2917842176,2917842431,CA +2917842432,2918014975,US 2918014976,2918023167,CA 2918023168,2918043647,US 2918043648,2918047743,CA @@ -40008,9 +39845,7 @@ 2918287360,2918289407,GB 2918289408,2918314216,US 2918314217,2918314217,GB -2918314218,2918348114,US -2918348115,2918348115,US -2918348116,2918371327,US +2918314218,2918371327,US 2918371328,2918375423,CA 2918375424,2918391807,US 2918391808,2918395903,CA @@ -40019,14 +39854,12 @@ 2918408192,2918432767,US 2918432768,2918436863,CA 2918436864,2918469631,US -2918469632,2918472703,CA -2918472704,2918473215,US -2918473216,2918473727,CA +2918469632,2918473727,CA 2918473728,2918477823,US 2918477824,2918481919,CA -2918481920,2918502078,US -2918502079,2918502079,US -2918502080,2918570239,US +2918481920,2918536719,US +2918536720,2918536727,CA +2918536728,2918570239,US 2918570240,2918570495,JP 2918570496,2918580223,US 2918580224,2918588415,CA @@ -40038,10 +39871,7 @@ 2918699008,2918703103,CA 2918703104,2918760447,US 2918760448,2918776831,CA -2918776832,2918828031,US -2918828032,2918828543,UA -2918828544,2918829055,ES -2918829056,2918830079,US +2918776832,2918830079,US 2918830080,2918834175,CA 2918834176,2918842367,US 2918842368,2918875135,CA @@ -40049,29 +39879,35 @@ 2918973440,2918989823,CA 2918989824,2919010559,US 2919010560,2919010815,CA -2919010816,2919020551,US -2919020552,2919020559,CA -2919020560,2919055359,US +2919010816,2919020543,US +2919020544,2919020559,CA +2919020560,2919020607,US +2919020608,2919020623,CA +2919020624,2919021359,US +2919021360,2919021375,CA +2919021376,2919021487,US +2919021488,2919021503,CA +2919021504,2919022207,US +2919022208,2919022239,CA +2919022240,2919022455,US +2919022456,2919022463,CA +2919022464,2919055359,US 2919055360,2919057407,CN 2919057408,2919059455,IN 2919059456,2919063551,CN -2919063552,2919064063,MX -2919064064,2919067647,CN -2919067648,2919070983,US +2919063552,2919064575,US +2919064576,2919067647,CN +2919067648,2919068247,US +2919068248,2919068255,AU +2919068256,2919070983,US 2919070984,2919070991,GB -2919070992,2919159873,US -2919159874,2919159877,US -2919159878,2919174143,US +2919070992,2919174143,US 2919174144,2919178239,CA 2919178240,2919186431,US 2919186432,2919190527,CA 2919190528,2919206911,US 2919206912,2919211007,CA -2919211008,2919211263,US -2919211264,2919211519,US -2919211520,2919218687,US -2919218688,2919218943,US -2919218944,2919235583,US +2919211008,2919235583,US 2919235584,2919759871,CA 2919759872,2921530367,US 2921530368,2921531391,DE @@ -40096,44 +39932,28 @@ 2921553408,2921553663,CO 2921553664,2921562111,US 2921562112,2921594879,CA -2921594880,2921658191,US -2921658192,2921658199,US -2921658200,2925002751,US +2921594880,2925002751,US 2925002752,2925527039,CA 2925527040,2926575615,US 2926575616,2927099903,CA -2927099904,2927939071,US -2927939072,2927939327,US -2927939328,2928175551,US +2927099904,2928175551,US 2928175552,2928175559,VN 2928175560,2928177151,US 2928177152,2928181247,CA 2928181248,2928226303,US 2928226304,2928230399,CA -2928230400,2928252387,US -2928252388,2928252388,US -2928252389,2928252611,US -2928252612,2928252612,US -2928252613,2928252987,US -2928252988,2928252988,US -2928252989,2928261375,US -2928261376,2928261887,CA -2928261888,2928263167,US +2928230400,2928263167,US 2928263168,2928279551,CA 2928279552,2928312319,US 2928312320,2928316415,CA -2928316416,2928328703,US +2928320512,2928328703,US 2928328704,2928336895,CA -2928336896,2928452223,US -2928452224,2928452351,US -2928452352,2928455679,US +2928345088,2928455679,US 2928455680,2928459775,CA 2928459776,2928541695,US -2928541696,2928558943,CA -2928558944,2928558951,PE -2928558952,2928595959,CA -2928595960,2928595967,US -2928595968,2928607231,CA +2928541696,2928570671,CA +2928570672,2928570687,FR +2928570688,2928607231,CA 2928607232,2936012799,US 2936012800,2937847807,CN 2937847808,2937848831,KH @@ -40245,17 +40065,10 @@ 2947598336,2947602431,AU 2947602432,2947603455,NZ 2947603456,2947604479,TH -2947604480,2947605759,HK -2947605760,2947606015,GB -2947606016,2947608575,HK -2947608576,2947608831,US -2947608832,2947609599,HK -2947609600,2947609727,GB -2947609728,2947609855,HK +2947604480,2947609599,HK +2947609600,2947609855,GB 2947609856,2947610111,US -2947610112,2947610367,HK -2947610368,2947610623,US -2947610624,2947611135,HK +2947610112,2947611135,HK 2947611136,2947611391,AU 2947611392,2947612671,HK 2947612672,2947678207,JP @@ -40280,7 +40093,11 @@ 2953457664,2953459711,DE 2953459712,2953461759,IT 2953461760,2953465855,ES -2953465856,2953467391,EU +2953465856,2953466111,EU +2953466112,2953466127,GB +2953466128,2953466367,EU +2953466368,2953466879,GB +2953466880,2953467391,EU 2953467392,2953467903,GB 2953467904,2953469951,BE 2953469952,2953478143,CH @@ -40307,7 +40124,9 @@ 2954647552,2954657791,ES 2954657792,2954756095,JO 2954756096,2954821631,TR -2954821632,2954824455,FR +2954821632,2954823395,FR +2954823396,2954823399,GB +2954823400,2954824455,FR 2954824456,2954824463,NL 2954824464,2954827799,FR 2954827800,2954827807,DE @@ -40315,7 +40134,9 @@ 2954828800,2954828815,NL 2954828816,2954829751,FR 2954829752,2954829752,ES -2954829753,2954829843,FR +2954829753,2954829759,FR +2954829760,2954829823,ES +2954829824,2954829843,FR 2954829844,2954829847,DE 2954829848,2954832343,FR 2954832344,2954832347,CH @@ -40335,13 +40156,21 @@ 2954839472,2954839479,BE 2954839480,2954840255,FR 2954840256,2954840447,GB -2954840448,2954844147,FR +2954840448,2954840515,FR +2954840516,2954840519,NL +2954840520,2954840927,FR +2954840928,2954840931,DE +2954840932,2954841567,FR +2954841568,2954841583,ES +2954841584,2954844147,FR 2954844148,2954844151,DE 2954844152,2954855507,FR 2954855508,2954855511,DE 2954855512,2954861875,FR 2954861876,2954861879,CH -2954861880,2954863615,FR +2954861880,2954862211,FR +2954862212,2954862215,PT +2954862216,2954863615,FR 2954863616,2954864639,DE 2954864640,2954865663,IT 2954865664,2954866687,ES @@ -40355,8 +40184,8 @@ 2954899456,2954901503,ES 2954901504,2954903551,IT 2954903552,2954911743,JP -2954911744,2954919423,NL -2954919424,2954919935,IE +2954911744,2954918911,NL +2954918912,2954919935,IE 2954919936,2954928127,RU 2954928128,2954932223,PL 2954932224,2954936319,RU @@ -40412,11 +40241,9 @@ 2956504576,2956504831,NL 2956504832,2956505087,RU 2956505088,2956506111,NL -2956506112,2956506623,GB -2956506624,2956507135,RU +2956506112,2956507135,RU 2956507136,2956508159,NL -2956508160,2956508671,RU -2956508672,2956509183,NL +2956508160,2956509183,RU 2956509184,2956517375,GB 2956517376,2956521471,NL 2956521472,2956525567,SE @@ -40456,10 +40283,10 @@ 2956722176,2956787711,BY 2956787712,2956820479,IE 2956820480,2956822527,NL -2956822528,2956823551,SE -2956823552,2956823676,US -2956823677,2956823677,US -2956823678,2956824575,US +2956822528,2956823039,SE +2956823040,2956823167,GB +2956823168,2956823551,SE +2956823552,2956824575,US 2956824576,2956826623,PT 2956826624,2956828671,HR 2956828672,2956832767,BA @@ -40500,19 +40327,13 @@ 2957193216,2957195263,RU 2957195264,2957197311,PS 2957197312,2957201407,IR -2957201408,2957202431,US -2957202432,2957202679,US +2957201408,2957202679,US 2957202680,2957202680,PT -2957202681,2957202943,US -2957202944,2957203455,US +2957202681,2957203455,US 2957203456,2957205503,FR 2957205504,2957213695,PS 2957213696,2957221887,FR -2957221888,2957223365,GB -2957223366,2957223366,GB -2957223367,2957223641,GB -2957223642,2957223642,GB -2957223643,2957223935,GB +2957221888,2957223935,GB 2957223936,2957223999,FR 2957224000,2957224063,GB 2957224064,2957224191,FR @@ -40578,7 +40399,7 @@ 2959155200,2959159295,RU 2959159296,2959161343,PL 2959161344,2959163391,UA -2959163392,2959167487,EU +2959163392,2959167487,GB 2959167488,2959171583,PL 2959171584,2959175679,RU 2959175680,2959179775,UA @@ -40760,7 +40581,7 @@ 2960093153,2960093153,ES 2960093154,2960093183,PT 2960093184,2960105471,PL -2960105472,2960109567,RO +2960105472,2960107519,RO 2960109568,2960113663,UA 2960113664,2960117759,NO 2960117760,2960119807,RU @@ -40829,7 +40650,6 @@ 2960486400,2960498687,RU 2960498688,2960506879,UA 2960506880,2960531455,RU -2960531456,2960533503,RO 2960533504,2960537599,UA 2960537600,2960539647,RO 2960539648,2960543743,RU @@ -40900,7 +40720,7 @@ 2960863744,2960863999,GB 2960864000,2960864255,DE 2960864256,2960864767,GB -2960864768,2960865279,AT +2960864768,2960865279,DE 2960865280,2960865535,RU 2960865536,2960865791,HR 2960865792,2960866303,GB @@ -40992,11 +40812,7 @@ 2967339008,2967343103,BG 2967343104,2967345151,RU 2967345152,2967347199,ES -2967347200,2967347455,HR -2967347456,2967347460,GB -2967347461,2967347588,HR -2967347589,2967347711,GB -2967347712,2967351295,HR +2967347200,2967351295,HR 2967351296,2967355391,FR 2967355392,2967371775,RO 2967371776,2967388159,KZ @@ -41023,11 +40839,8 @@ 2967707648,2967709695,PL 2967709696,2967711743,IT 2967711744,2967715839,RU -2967715840,2967718721,GB -2967718722,2967718722,GB -2967718723,2967724031,GB +2967715840,2967724031,GB 2967724032,2967728127,CY -2967728128,2967730175,GB 2967730176,2967732223,CZ 2967732224,2967994367,IL 2967994368,2968584191,TR @@ -41037,9 +40850,8 @@ 2968604672,2968608767,IQ 2968608768,2968610815,RU 2968610816,2968612863,UA -2968612864,2968613631,IL -2968613632,2968614910,US -2968614911,2968614911,IL +2968612864,2968614143,IL +2968614144,2968614911,US 2968614912,2968616959,FR 2968616960,2968625151,UA 2968625152,2968629247,DE @@ -41048,12 +40860,13 @@ 2968633344,2968643583,RU 2968643584,2968645631,NO 2968645632,2968647679,PL -2968647680,2968648191,GB -2968648192,2968648703,FR -2968648704,2968649727,GB +2968647680,2968647935,FR +2968647936,2968649727,GB 2968649728,2969042943,IT 2969042944,2969567231,GB -2969567232,2984247295,BR +2969567232,2972174079,BR +2972174080,2972174335,AU +2972174336,2984247295,BR 2984247296,2985295871,MX 2986344448,2987393023,DE 2987393024,2987397119,IM @@ -41088,7 +40901,7 @@ 2987500208,2987503615,MD 2987503616,2987511807,RU 2987511808,2987515903,JO -2987515904,2987516159,DE +2987515904,2987516159,US 2987516160,2987517951,A2 2987517952,2987518207,DE 2987518208,2987519487,US @@ -41111,14 +40924,12 @@ 2987569152,2987573247,FR 2987573248,2987577343,TR 2987577344,2987585535,RU -2987585536,2987589119,DE -2987589120,2987589631,US +2987585536,2987589631,DE 2987589632,2987593727,FR 2987593728,2987597823,LT 2987597824,2987601919,ES 2987601920,2987606015,IS -2987606016,2987606527,US -2987606528,2987610111,DE +2987606016,2987610111,DE 2987610112,2987614207,RU 2987614208,2987618303,PL 2987618304,2987622399,NL @@ -41129,7 +40940,7 @@ 2987642880,2987651071,DE 2987651072,2987655167,RU 2987655168,2987659263,DE -2987659264,2987661311,BA +2987659264,2987661311,SI 2987661312,2987663359,GB 2987663360,2987665407,IT 2987665408,2987667455,RU @@ -41269,9 +41080,9 @@ 2988459128,2988459135,PL 2988459136,2988459679,FR 2988459680,2988459683,ES -2988459684,2988459689,FR -2988459690,2988459690,PL -2988459691,2988459863,FR +2988459684,2988459687,FR +2988459688,2988459691,PL +2988459692,2988459863,FR 2988459864,2988459867,ES 2988459868,2988460575,FR 2988460576,2988460591,PT @@ -41300,9 +41111,13 @@ 2988482576,2988482579,CZ 2988482580,2988484831,FR 2988484832,2988484847,GB -2988484848,2988487071,FR +2988484848,2988485683,FR +2988485684,2988485687,PL +2988485688,2988487071,FR 2988487072,2988487075,ES -2988487076,2988490686,FR +2988487076,2988489479,FR +2988489480,2988489483,DE +2988489484,2988490686,FR 2988490687,2988490687,BE 2988490688,2988492799,FR 2988492800,2988494847,PL @@ -41314,7 +41129,9 @@ 2988500416,2988500447,CZ 2988500448,2988502051,FR 2988502052,2988502055,PL -2988502056,2988502881,FR +2988502056,2988502655,FR +2988502656,2988502719,DE +2988502720,2988502881,FR 2988502882,2988502882,IT 2988502883,2988504371,FR 2988504372,2988504375,PL @@ -41330,27 +41147,28 @@ 2988519424,2988521471,PL 2988521472,2988524271,FR 2988524272,2988524287,DE -2988524288,2988525055,FR -2988525056,2988525567,PL -2988525568,2988525887,FR +2988524288,2988525887,FR 2988525888,2988525951,GB 2988525952,2988526415,FR 2988526416,2988526423,ES 2988526424,2988527831,FR 2988527832,2988527839,ES -2988527840,2988535807,FR +2988527840,2988529247,FR +2988529248,2988529251,GB +2988529252,2988535807,FR 2988535808,2988537855,ES 2988537856,2988544671,FR 2988544672,2988544687,GB -2988544688,2988547655,FR +2988544688,2988544691,NL +2988544692,2988546451,FR +2988546452,2988546455,ES +2988546456,2988547655,FR 2988547656,2988547663,PL 2988547664,2988547871,FR 2988547872,2988547903,GB 2988547904,2988548095,FR 2988548096,2988550143,ES -2988550144,2988550434,FR -2988550435,2988550435,FR -2988550436,2988550438,FR +2988550144,2988550438,FR 2988550439,2988550439,GB 2988550440,2988550463,FR 2988550464,2988550527,DE @@ -41364,7 +41182,9 @@ 2988561764,2988561767,IT 2988561768,2988562847,FR 2988562848,2988562863,GB -2988562864,2988572671,FR +2988562864,2988564143,FR +2988564144,2988564159,ES +2988564160,2988572671,FR 2988572672,2988703743,RU 2988703744,2988834815,PL 2988834816,2988965887,CH @@ -41375,12 +41195,11 @@ 2989555712,2989621247,RU 2989621248,2989752319,BE 2989752320,2989817855,SY -2989817856,2989882367,KW -2989882368,2989883391,US +2989817856,2989883391,KW 2989883392,2989948927,UA 2989948928,2990014463,FI 2990014464,2990079999,PL -2990080000,2990145535,GB +2990080000,2990145535,RU 2990145536,2990211071,SI 2990211072,2990276607,GR 2990276608,2990342143,ES @@ -41395,7 +41214,8 @@ 2990500116,2990538751,DE 2990538752,2991063039,RU 2991063040,2991067135,SE -2991067136,2991071231,DK +2991067136,2991070975,DK +2991070976,2991071231,SE 2991071232,2991079423,NO 2991079424,2991095807,RU 2991095808,2991112191,AM @@ -41403,9 +41223,7 @@ 2991128576,2991144959,PL 2991144960,2991161343,SA 2991161344,2991177727,FR -2991177728,2991183071,SE -2991183072,2991183103,SE -2991183104,2991194111,SE +2991177728,2991194111,SE 2991194112,2991210495,NO 2991210496,2991243263,RU 2991243264,2991259647,UA @@ -41414,7 +41232,13 @@ 2991308800,2991325183,BG 2991325184,2991341567,AZ 2991341568,2991357951,MD -2991357952,2991374335,US +2991357952,2991358207,DE +2991358208,2991358463,US +2991358464,2991361279,DE +2991361280,2991361535,US +2991361536,2991366143,DE +2991366144,2991366399,US +2991366400,2991374335,DE 2991374336,2991390719,RU 2991390720,2991407103,BA 2991407104,2991423487,DE @@ -41427,17 +41251,7 @@ 2991521792,2991538175,RS 2991538176,2991554559,SI 2991554560,2991570943,GB -2991570944,2991571455,IT -2991571456,2991571967,GB -2991571968,2991572479,IT -2991572480,2991572991,IL -2991572992,2991573503,GB -2991573504,2991574015,ES -2991574016,2991574527,DE -2991574528,2991575039,GB -2991575040,2991575551,NL -2991575552,2991576063,GB -2991576064,2991587327,IT +2991570944,2991587327,IT 2991587328,2991718399,SA 2991718400,2991849471,CH 2991849472,2991980543,NL @@ -41467,11 +41281,9 @@ 2995044352,2995046399,ES 2995046400,2995048447,RU 2995048448,2995050495,NL -2995050496,2995050559,AL -2995050560,2995050561,AT +2995050496,2995050561,AL 2995050562,2995050562,RS -2995050563,2995050623,AT -2995050624,2995052543,AL +2995050563,2995052543,AL 2995052544,2995056639,DK 2995056640,2995058687,DE 2995058688,2995060735,SE @@ -41518,9 +41330,7 @@ 2996862976,2996895743,AM 2996895744,2996928511,KW 2996928512,2996994047,RU -2996994048,2996996073,DE -2996996074,2996996074,DE -2996996075,2996999679,DE +2996994048,2996999679,DE 2996999680,2996999935,GB 2996999936,2997004607,DE 2997004608,2997004671,RU @@ -41535,9 +41345,7 @@ 2997190656,2997223423,AT 2997223424,2997256191,PT 2997256192,2997321727,RU -2997321728,2997324031,IE -2997324032,2997324287,GB -2997324288,2997354495,IE +2997321728,2997354495,IE 2997354496,2997387263,MD 2997387264,2997420031,BY 2997420032,2997452799,RU @@ -41562,7 +41370,9 @@ 2997513352,2997513352,AT 2997513353,2997513353,NL 2997513354,2997513354,IE -2997513355,2997518335,FR +2997513355,2997515683,FR +2997515684,2997515684,GB +2997515685,2997518335,FR 2997518336,2997583871,RU 2997583872,2997616639,SY 2997616640,2997649407,SI @@ -41582,9 +41392,7 @@ 2998140928,2998403071,PL 2998403072,2998665215,RU 2998665216,2998927359,AT -2998927360,2999389951,CH -2999389952,2999390079,IT -2999390080,2999451647,CH +2998927360,2999451647,CH 2999451648,2999713791,DE 2999713792,2999975935,RU 2999975936,2999984127,FR @@ -41771,8 +41579,10 @@ 3001831424,3001835519,BA 3001835520,3001839615,RU 3001839616,3001843711,ES -3001843712,3001846271,RU -3001846272,3001846783,GB +3001843712,3001845759,RU +3001845760,3001846238,GB +3001846239,3001846239,RU +3001846240,3001846783,GB 3001846784,3001847807,RU 3001847808,3001851903,GB 3001851904,3001855999,IT @@ -41799,7 +41609,6 @@ 3001929728,3001933823,RS 3001933824,3001937919,ES 3001937920,3001942015,RU -3001942016,3001944063,BY 3001946112,3001950207,RU 3001950208,3001954303,CZ 3001954304,3001958399,IT @@ -41877,9 +41686,7 @@ 3002691584,3002693631,MK 3002693632,3002695679,NO 3002695680,3002697727,RU -3002697728,3002698239,DE -3002698240,3002698751,NL -3002698752,3002699775,DE +3002697728,3002699775,DE 3002699776,3002701823,SE 3002701824,3002703871,NL 3002703872,3002705919,DE @@ -41899,7 +41706,9 @@ 3002736640,3002738687,LT 3002738688,3002740735,PL 3002740736,3002742783,GB -3002742784,3002744831,LI +3002742784,3002743039,LI +3002743040,3002743047,GR +3002743048,3002744831,LI 3002744832,3002746879,IT 3002746880,3002748927,GB 3002748928,3002750975,DE @@ -41977,21 +41786,26 @@ 3003074560,3003076607,IT 3003076608,3003078143,GB 3003078144,3003078151,US -3003078152,3003080703,GB +3003078152,3003078155,IN +3003078156,3003080703,GB 3003080704,3003082751,FR 3003082752,3003084799,ES 3003086848,3003088895,RU 3003088896,3003090943,FR 3003090944,3003092991,DE 3003092992,3003095039,NO -3003095040,3003097087,AT +3003095040,3003095295,AT +3003095296,3003095551,CH +3003095552,3003095559,AT +3003095560,3003095807,CZ +3003095808,3003095815,AT +3003095816,3003096063,IT +3003096064,3003097087,AT 3003097088,3003099135,FR 3003099136,3003101183,CZ 3003101184,3003103231,UA 3003103232,3003105279,IT -3003105280,3003107327,NL -3003107328,3003107583,RU -3003107584,3003109375,NL +3003105280,3003109375,NL 3003109376,3003111423,FR 3003111424,3003113471,IT 3003113472,3003115519,ES @@ -42005,19 +41819,32 @@ 3003123968,3003124479,CO 3003124480,3003124735,AR 3003124736,3003125247,SV +3003125248,3003125503,AR +3003125504,3003125759,CO 3003125760,3003126783,CL 3003126784,3003127807,CR -3003129856,3003138047,CR +3003127808,3003128063,CO +3003128064,3003128319,AR +3003128320,3003128575,PY +3003128576,3003128831,CO +3003128832,3003129087,TT +3003129856,3003154431,CR 3003154432,3003154687,CL 3003154688,3003154943,EC -3003155456,3003158527,AR +3003154944,3003158527,AR 3003187200,3003252735,CO 3003252736,3003449343,CL -3003580416,3003645951,PE +3003449344,3003514879,SV +3003514880,3003645951,PE 3003645952,3003777023,CL 3003908096,3004170239,CO 3004694528,3005218815,UY +3005218816,3005349887,CO 3005480960,3005874175,AR +3005874176,3005915135,PA +3005919232,3005923327,AR +3005923328,3005939711,BZ +3005988864,3006005247,DO 3006005248,3006267391,VE 3006267392,3006267647,PA 3006267648,3006267903,NI @@ -42047,18 +41874,39 @@ 3006464000,3006480383,SV 3006496768,3006529535,CR 3006529536,3006660607,DO +3006791680,3006922751,CL 3006922752,3006988287,BO +3007053824,3007062015,AR +3007070208,3007078399,CL +3007078400,3007082495,AR +3007082496,3007086591,BO +3007086592,3007090687,PA +3007090688,3007092735,BZ +3007092736,3007094783,AR +3007094784,3007096831,CR +3007096832,3007098879,AR +3007098880,3007100927,HN +3007100928,3007102975,AR +3007102976,3007103999,US +3007104000,3007106047,AR +3007107072,3007108095,AR +3007108096,3007109119,TT +3007109120,3007111167,AR 3007184896,3007250431,AR -3007250432,3007299583,CR +3007250432,3007272191,CR +3007272192,3007272447,PA +3007272448,3007299583,CR 3007299584,3007301631,PA -3007303680,3007305727,AR -3007307776,3007311871,CL -3007311872,3007312895,AR +3007301632,3007305727,AR +3007307776,3007310847,CL +3007310848,3007312895,AR 3007312896,3007313919,CL 3007313920,3007314943,AR 3007314944,3007315967,HN -3009413120,3019898879,BR -3019898880,3024093183,JP +3007315968,3019898879,BR +3019898880,3022660863,JP +3022660864,3022661119,US +3022661120,3024093183,JP 3024093184,3024617471,KR 3024617472,3024879615,MY 3024879616,3025141759,CN @@ -42066,22 +41914,34 @@ 3025403904,3025600511,CN 3025600512,3025603839,IN 3025603840,3025604095,HK -3025604096,3025604351,IN -3025604352,3025604637,SG +3025604096,3025604381,IN +3025604382,3025604637,SG 3025604638,3025607167,IN 3025607168,3025607423,SG -3025607424,3025633535,IN +3025607424,3025607679,HK +3025607680,3025620991,IN +3025620992,3025621247,PH +3025621248,3025625391,IN +3025625392,3025625395,SG +3025625396,3025631239,IN +3025631240,3025631247,AU +3025631248,3025633535,IN 3025633536,3025633791,HK 3025633792,3025637375,IN 3025637376,3025637631,HK 3025637632,3025637887,MY -3025637888,3025638399,IN +3025637888,3025638279,IN +3025638280,3025638287,SG +3025638288,3025638399,IN 3025638400,3025638655,SG 3025638656,3025639167,IN 3025639168,3025639175,SG -3025639176,3025639679,IN -3025639680,3025639807,HK -3025639808,3025647103,IN +3025639176,3025639423,IN +3025639424,3025639679,SG +3025639680,3025639935,HK +3025639936,3025640447,IN +3025640448,3025640703,MY +3025640704,3025647103,IN 3025647104,3025647359,SG 3025647360,3025647615,AU 3025647616,3025649151,IN @@ -42116,15 +41976,15 @@ 3026075648,3026077183,AF 3026077184,3026077695,US 3026077696,3026077951,AF -3026077952,3026079743,US +3026077952,3026078207,US +3026078208,3026079487,AF +3026079488,3026079743,US 3026079744,3026079999,AF -3026080000,3026080767,US -3026080768,3026080769,AF +3026080000,3026080255,US +3026080256,3026080769,AF 3026080770,3026080770,US -3026080771,3026081023,AF -3026081024,3026081279,US -3026081280,3026081535,AF -3026081536,3026082047,US +3026080771,3026081791,AF +3026081792,3026082047,US 3026082048,3026082303,AF 3026082304,3026082559,US 3026082560,3026083839,AF @@ -42187,9 +42047,7 @@ 3029727232,3029728255,AU 3029728256,3029729279,HK 3029729280,3029762047,AU -3029762048,3029765631,HK -3029765632,3029765887,ID -3029765888,3029770239,HK +3029762048,3029770239,HK 3029770240,3029778431,CN 3029778432,3029788671,KR 3029788672,3029790719,ID @@ -42283,9 +42141,13 @@ 3034472448,3034478591,IN 3034478592,3034480639,JP 3034480640,3034482687,SG -3034482688,3034483711,AF -3034483712,3034483967,US -3034483968,3034484735,AF +3034482688,3034483455,AF +3034483456,3034483711,US +3034483712,3034484223,AF +3034484224,3034484351,US +3034484352,3034484383,AF +3034484384,3034484479,US +3034484480,3034484735,AF 3034484736,3034488831,TH 3034488832,3034492927,NZ 3034492928,3034497023,JP @@ -42335,10 +42197,13 @@ 3037790208,3037986815,VE 3037986816,3038773247,AR 3038773248,3038904319,CO +3038904320,3039035391,VE 3039035392,3039166463,DO 3039166464,3039231999,PA 3039297536,3039363071,PY -3039363072,3039428607,BZ +3039363072,3039412223,BZ +3039412224,3039420415,CL +3039420416,3039428607,AR 3039428608,3039559679,CL 3039690752,3039821823,AR 3039821824,3040870399,CO @@ -42348,6 +42213,9 @@ 3041918976,3044016127,AR 3044016128,3044147199,EC 3044147200,3044155391,GT +3044155392,3044161535,AR +3044161536,3044162559,HN +3044162560,3044163583,AR 3044163584,3044179967,BO 3044179968,3044188159,AR 3044188160,3044196351,BO @@ -42359,15 +42227,18 @@ 3044278272,3044417535,AR 3044417536,3044425727,PA 3044425728,3044442111,AR -3044458496,3044503551,AR +3044450304,3044454399,CL +3044454400,3044503551,AR 3044503552,3044507647,US 3044507648,3044540415,AR -3044802560,3045064703,PY +3044540416,3045064703,PY 3045064704,3047161855,CO 3047161856,3047423999,CL 3047424000,3047948287,AR 3047948288,3048079359,CL 3048079360,3048095743,CO +3048112128,3048120319,AR +3048128512,3048144895,CR 3048144896,3048210431,EC 3048210432,3048275967,PE 3048275968,3048292351,AR @@ -42392,15 +42263,22 @@ 3049193472,3049255935,PA 3049255936,3049256959,US 3049256960,3049259007,PA -3049259008,3049267199,AR -3049275392,3049283583,AR +3049259008,3049283583,AR 3049283584,3049291775,BZ 3049291776,3049324543,CO 3049324544,3049521151,CR -3049652224,3049783295,EC +3049521152,3049586687,EC +3049652224,3049750527,EC +3049750528,3049754623,PE +3049754624,3049762815,AR +3049762816,3049766911,HN +3049766912,3049775103,CO +3049775104,3049783295,PA 3049783296,3050045439,CL +3050045440,3050307583,CO 3050307584,3050373119,VE 3050373120,3050405887,AR +3050405888,3050438655,GT 3050438656,3050504191,HN 3051356160,3051376895,CR 3051376896,3051377151,PA @@ -42414,7 +42292,7 @@ 3051398144,3051399167,AR 3051399168,3051400191,DO 3051400192,3051401215,EC -3051401216,3051403263,AR +3051401216,3051405311,AR 3051405312,3051407359,CR 3051407360,3051408383,PE 3051408384,3051409407,DO @@ -42425,7 +42303,12 @@ 3051429888,3051438079,VE 3051438080,3051450367,CO 3051450368,3051454463,CL +3051454464,3051456511,SV +3051456512,3051457535,AR +3051457536,3051460607,CL +3051460608,3051462655,AR 3051462656,3051470847,PE +3051470848,3051479039,AR 3051479040,3051487231,CU 3051487232,3051552767,CL 3051552768,3051618303,BO @@ -42439,7 +42322,7 @@ 3051971840,3051972351,PA 3051972352,3051973887,CR 3051973888,3051974143,PA -3051974144,3051986943,CR +3051974144,3051995135,CR 3051995136,3052011519,PE 3052011520,3052273663,CO 3052273664,3052404735,AR @@ -42558,9 +42441,7 @@ 3064811520,3064823807,KR 3064823808,3064831999,JP 3064832000,3064840191,KR -3064840192,3064846335,GU -3064846336,3064848383,US -3064848384,3064856575,GU +3064840192,3064856575,GU 3064856576,3064987647,CN 3064987648,3066036223,PK 3066036224,3066560511,KR @@ -42681,9 +42562,7 @@ 3091976192,3091980287,CA 3091980288,3092569343,US 3092569344,3092569599,AU -3092569600,3092700671,US -3092700672,3092700927,AU -3092700928,3093168127,US +3092569600,3093168127,US 3093168128,3093200895,CA 3093200896,3093213183,US 3093213184,3093217279,CA @@ -42697,17 +42576,15 @@ 3093839872,3093843455,NL 3093843456,3093850111,US 3093850112,3093855487,DE -3093855488,3093909119,US -3093909120,3093909247,PR +3093855488,3093908991,US +3093908992,3093909247,PR 3093909248,3094020095,US 3094020096,3094032759,CA 3094032760,3094032767,GI 3094032768,3094085631,CA 3094085632,3096444927,US 3096444928,3096969215,CA -3096969216,3097130139,US -3097130140,3097130140,US -3097130141,3097493503,US +3096969216,3097493503,US 3097493504,3097755647,CA 3097755648,3098095615,US 3098095616,3098099711,CA @@ -42747,7 +42624,9 @@ 3098181632,3098185727,CA 3098185728,3098263551,US 3098263552,3098271743,CA -3098271744,3098476543,US +3098271744,3098278847,US +3098278848,3098278911,CA +3098278912,3098476543,US 3098476544,3098492927,CA 3098492928,3103784959,US 3103850496,3103850751,RU @@ -42757,15 +42636,20 @@ 3103852800,3103853567,PL 3103853568,3103853823,NO 3103853824,3103854079,RU +3103854080,3103854335,FR +3103854336,3103854591,AE +3103854592,3103854847,UA +3103854848,3103855103,PL +3103855104,3103855359,DE 3103916032,3103917055,CH 3103917056,3103918079,IT 3103918080,3103919103,DE -3103919104,3103920127,US +3103919104,3103920127,IR 3103920128,3103921151,DE 3103921152,3103922175,CH 3103922176,3103923199,NL -3103923200,3103923455,SE -3103923456,3103923967,NL +3103923200,3103923711,SE +3103923712,3103923967,NL 3103923968,3103924223,SE 3103924224,3103925247,RU 3103925248,3103926271,PL @@ -42809,12 +42693,9 @@ 3103968256,3103969279,GB 3103969280,3103970303,BG 3103970304,3103971327,UA -3103971328,3103972351,GB -3103972352,3103972863,IE -3103972864,3103973375,GB +3103971328,3103973375,GB 3103973376,3103974399,KZ -3103974400,3103974911,LT -3103974912,3103975423,SE +3103974400,3103975423,SE 3103975424,3103976447,SA 3103976448,3103977471,GB 3103977472,3103978495,NL @@ -42844,7 +42725,7 @@ 3104004864,3104005119,EU 3104005120,3104006143,GB 3104006144,3104007167,DE -3104007168,3104008191,GG +3104007168,3104008191,GB 3104008192,3104009215,NL 3104009216,3104010239,IT 3104010240,3104011263,PL @@ -42865,7 +42746,7 @@ 3104025600,3104026623,RU 3104026624,3104027647,NL 3104027648,3104028671,RU -3104028672,3104030719,DE +3104028672,3104029695,DE 3104030720,3104031743,HR 3104031744,3104032767,FR 3104032768,3104033791,IR @@ -42986,11 +42867,10 @@ 3104153600,3104154623,RU 3104154624,3104155647,DK 3104155648,3104156671,DE -3104156672,3104157695,RO -3104157696,3104158719,TR +3104156672,3104157697,RO +3104157698,3104158719,TR 3104158720,3104159743,IT -3104159744,3104160255,DE -3104160256,3104160767,CH +3104159744,3104160767,CH 3104160768,3104161791,GB 3104161792,3104162815,RU 3104162816,3104164863,IT @@ -43027,8 +42907,7 @@ 3104195584,3104196607,DE 3104196608,3104197631,IT 3104197632,3104198655,GR -3104198656,3104199167,GB -3104199168,3104199679,RU +3104198656,3104199679,GB 3104199680,3104200703,NL 3104200704,3104201727,IT 3104201728,3104202751,FR @@ -43172,8 +43051,7 @@ 3104349184,3104350207,RU 3104350208,3104352255,CZ 3104352256,3104353279,DE -3104353280,3104353792,IR -3104353793,3104354303,DE +3104353280,3104354303,IR 3104354304,3104355327,NL 3104355328,3104356351,RU 3104356352,3104357375,AT @@ -43318,10 +43196,7 @@ 3104514048,3104515071,RU 3104515072,3104516095,GB 3104516096,3104517119,CY -3104517120,3104517630,US -3104517631,3104517631,IL -3104517632,3104518142,US -3104518143,3104518143,IL +3104517120,3104518143,IL 3104518144,3104519167,RU 3104519168,3104520191,IT 3104520192,3104521215,CH @@ -43417,7 +43292,7 @@ 3104613376,3104614399,SA 3104614400,3104615423,BA 3104615424,3104616447,SA -3104616448,3104617471,FR +3104616448,3104617471,DE 3104617472,3104618495,AT 3104618496,3104619519,PS 3104619520,3104621567,GB @@ -43660,8 +43535,7 @@ 3104879616,3104880639,CZ 3104880640,3104881663,DE 3104881664,3104882687,AT -3104882688,3104883199,MT -3104883200,3104883711,DK +3104882688,3104883711,MT 3104883712,3104884735,DE 3104884736,3104885759,SE 3104885760,3104886783,GB @@ -43750,8 +43624,7 @@ 3104974848,3104975871,AL 3104975872,3104976895,RU 3104976896,3104977919,GB -3104977920,3104978431,NL -3104978432,3104978943,DE +3104977920,3104978943,DE 3104978944,3104979967,BG 3104979968,3104980991,HR 3104980992,3104982015,SK @@ -43863,7 +43736,7 @@ 3105097728,3105098751,FR 3105098752,3105099775,SE 3105099776,3105100799,FR -3105100800,3105101823,BY +3105100800,3105101823,PL 3105101824,3105102847,IQ 3105102848,3105103871,HR 3105103872,3105104895,GB @@ -43900,7 +43773,7 @@ 3105138688,3105139711,NO 3105139712,3105140735,PL 3105140736,3105142783,RU -3105142784,3105143807,NL +3105142784,3105143807,UA 3105143808,3105144831,DE 3105144832,3105145855,ES 3105145856,3105146879,CZ @@ -44153,8 +44026,7 @@ 3105418240,3105419263,CZ 3105419264,3105420287,NL 3105420288,3105421311,RU -3105421312,3105421823,US -3105421824,3105422335,NL +3105421312,3105422335,NL 3105422336,3105423359,IR 3105423360,3105424383,LT 3105424384,3105426431,RU @@ -44200,8 +44072,7 @@ 3105466368,3105467391,BE 3105467392,3105468415,GB 3105468416,3105469439,RU -3105469440,3105469951,SE -3105469952,3105470463,EU +3105469440,3105470463,EU 3105470464,3105471487,CZ 3105471488,3105472511,GB 3105472512,3105473535,CH @@ -44239,7 +44110,7 @@ 3105510400,3105511423,SA 3105511424,3105512447,FR 3105512448,3105513471,GB -3105513472,3105514495,ES +3105513472,3105514495,DE 3105514496,3105515519,RU 3105515520,3105516543,FR 3105516544,3105517567,NL @@ -44274,7 +44145,7 @@ 3105546240,3105547263,ES 3105547264,3105548287,GB 3105548288,3105549311,IR -3105549312,3105550335,RU +3105549312,3105550335,AT 3105550336,3105551359,SK 3105551360,3105552383,US 3105552384,3105553407,FR @@ -44298,7 +44169,7 @@ 3105572864,3105573887,IT 3105573888,3105574911,FR 3105574912,3105575935,RU -3105575936,3105576959,BE +3105575936,3105576959,DE 3105576960,3105577983,OM 3105577984,3105579007,LV 3105579008,3105580031,SE @@ -44337,7 +44208,9 @@ 3105614848,3105615871,NL 3105615872,3105616895,SE 3105616896,3105617919,GB -3105617920,3105618943,NL +3105617920,3105618431,NL +3105618432,3105618687,US +3105618688,3105618943,NL 3105618944,3105619967,DE 3105619968,3105620991,TR 3105620992,3105622015,DE @@ -44345,9 +44218,7 @@ 3105623040,3105624063,GB 3105624064,3105625087,PL 3105625088,3105626111,US -3105626112,3105627135,GB -3105627136,3105628159,FR -3105628160,3105629183,GB +3105626112,3105629183,GB 3105629184,3105630207,BE 3105630208,3105631231,FR 3105631232,3105632255,GB @@ -44355,8 +44226,10 @@ 3105633280,3105634303,IT 3105634304,3105635327,NL 3105635328,3105636351,GB -3105636352,3105637375,IT -3105637376,3105638399,NL +3105636352,3105637375,EU +3105637376,3105637631,NL +3105637632,3105637887,DE +3105637888,3105638399,US 3105638400,3105639423,IM 3105639424,3105640447,DE 3105640448,3105641471,IT @@ -44401,7 +44274,7 @@ 3105683456,3105684479,PL 3105684480,3105686527,GB 3105686528,3105687551,BE -3105687552,3105688575,EU +3105687552,3105688575,LV 3105688576,3105689599,PL 3105689600,3105690623,SI 3105690624,3105691647,SE @@ -44420,6 +44293,7 @@ 3105707008,3105708031,PL 3105708032,3105709055,AT 3105709056,3105710079,SA +3105710080,3105711103,IT 3105711104,3105712127,RS 3105712128,3105713151,IT 3105713152,3105714175,NL @@ -44427,14 +44301,22 @@ 3105715200,3105716223,DE 3105716224,3105717247,TR 3105717248,3105719295,RU -3105720320,3105721343,GB +3105719296,3105721343,GB 3105721344,3105722367,SI 3105722368,3105723391,IT 3105723392,3105724415,FR 3105724416,3105725439,CH 3105725440,3105726463,SK 3105726464,3105727487,IT -3105727488,3105728511,NL +3105727488,3105727743,NO +3105727744,3105727999,BE +3105728000,3105728127,AT +3105728128,3105728191,FI +3105728192,3105728255,PT +3105728256,3105728319,TR +3105728320,3105728383,PL +3105728384,3105728447,CZ +3105728448,3105728511,LT 3105728512,3105729535,DE 3105729536,3105731583,GB 3105731584,3105732607,FR @@ -44444,6 +44326,411 @@ 3105735680,3105736703,IS 3105736704,3105737727,NL 3105737728,3105738751,IT +3105738752,3105739775,GB +3105739776,3105740799,ES +3105740800,3105741823,DE +3105741824,3105742847,IR +3105742848,3105744895,GB +3105744896,3105745919,FR +3105745920,3105746943,UA +3105746944,3105747967,DE +3105747968,3105748991,FR +3105748992,3105750015,IT +3105750016,3105751039,UA +3105751040,3105752063,RU +3105752064,3105753087,IR +3105753088,3105754111,GB +3105754112,3105756159,RU +3105756160,3105757183,US +3105757184,3105758207,GB +3105758208,3105759231,FR +3105759232,3105760255,DE +3105760256,3105761279,LB +3105761280,3105762303,RU +3105762304,3105763327,IT +3105763328,3105764351,FR +3105764352,3105765375,BE +3105765376,3105766399,NL +3105766400,3105770495,IT +3105770496,3105771519,IR +3105771520,3105772543,IT +3105772544,3105773567,UA +3105773568,3105774591,AZ +3105774592,3105775615,FR +3105775616,3105776639,RU +3105776640,3105777663,DK +3105777664,3105778687,RU +3105778688,3105780735,IT +3105780736,3105781759,RU +3105781760,3105782783,SK +3105782784,3105783807,PL +3105783808,3105785855,FR +3105785856,3105786879,SI +3105786880,3105787903,ES +3105787904,3105788927,AL +3105788928,3105789951,SA +3105789952,3105790975,SE +3105790976,3105791999,DE +3105792000,3105793023,DK +3105793024,3105794047,NL +3105794048,3105795071,GB +3105795072,3105796095,LU +3105796096,3105797119,NL +3105797120,3105798143,IT +3105798144,3105799167,IS +3105799168,3105800191,IT +3105800192,3105801215,RU +3105801216,3105802239,ES +3105802240,3105803263,UA +3105803264,3105804287,NL +3105804288,3105805311,FR +3105805312,3105806335,GB +3105806336,3105807359,FR +3105807360,3105808383,RU +3105808384,3105809407,NO +3105809408,3105810431,RU +3105810432,3105811455,IL +3105811456,3105812479,NL +3105812480,3105814527,ES +3105814528,3105815551,JO +3105815552,3105816575,BE +3105816576,3105817599,FR +3105817600,3105818623,DE +3105818624,3105819647,NL +3105819648,3105820671,GB +3105820672,3105821695,EU +3105821696,3105822719,ES +3105822720,3105823743,PL +3105823744,3105824767,AT +3105824768,3105825791,RS +3105825792,3105826815,CZ +3105826816,3105827839,FR +3105827840,3105828863,LV +3105828864,3105829887,PL +3105829888,3105830911,AT +3105830912,3105831935,IT +3105831936,3105832959,DE +3105832960,3105833983,IT +3105833984,3105835007,FI +3105835008,3105836031,KZ +3105836032,3105837055,DK +3105837056,3105838079,PL +3105838080,3105839103,UA +3105839104,3105840127,PL +3105840128,3105841151,EE +3105841152,3105842175,IE +3105842176,3105843199,CH +3105843200,3105844223,ES +3105844224,3105847295,RU +3105847296,3105848319,BG +3105848320,3105849343,IR +3105849344,3105850367,US +3105850368,3105851391,RU +3105851392,3105852415,FI +3105852416,3105853439,SE +3105853440,3105854463,NL +3105854464,3105855487,FR +3105855488,3105856511,GB +3105856512,3105857535,PT +3105857536,3105859583,RU +3105859584,3105860607,GB +3105860608,3105861631,NL +3105861632,3105862655,DK +3105862656,3105863679,DE +3105863680,3105864703,PL +3105864704,3105865727,AE +3105865728,3105866751,RU +3105866752,3105867775,SE +3105867776,3105868799,NL +3105868800,3105869823,GB +3105869824,3105870847,DE +3105870848,3105871871,AT +3105871872,3105872895,PL +3105872896,3105873919,GB +3105873920,3105874943,AT +3105874944,3105875967,NL +3105875968,3105876991,GB +3105876992,3105878015,ES +3105878016,3105879039,EE +3105879040,3105880063,NL +3105880064,3105881087,CH +3105881088,3105882111,GB +3105882112,3105883135,MD +3105883136,3105884159,PL +3105884160,3105885183,SE +3105885184,3105886207,TR +3105886208,3105887231,ES +3105887232,3105888255,AL +3105888256,3105889279,RO +3105889280,3105890303,ES +3105890304,3105891327,DE +3105891328,3105892351,PT +3105892352,3105893375,GB +3105893376,3105894399,AZ +3105894400,3105895423,PL +3105895424,3105896447,GB +3105896448,3105897471,RU +3105897472,3105898495,UA +3105898496,3105899007,CZ +3105899008,3105899263,RU +3105899264,3105899519,CZ +3105899520,3105900543,RU +3105900544,3105902591,GB +3105902592,3105903615,DE +3105903616,3105904639,RU +3105904640,3105905663,NO +3105905664,3105906687,IE +3105906688,3105908735,FR +3105908736,3105910783,GB +3105910784,3105911807,IL +3105911808,3105912831,DE +3105912832,3105913855,RU +3105913856,3105914879,CH +3105914880,3105915903,IR +3105915904,3105916927,RU +3105916928,3105917951,ES +3105917952,3105918975,NL +3105918976,3105919999,PL +3105920000,3105921023,FR +3105921024,3105922047,IE +3105922048,3105923071,PL +3105923072,3105924095,CZ +3105924096,3105925119,RU +3105925120,3105926143,BE +3105926144,3105927167,BA +3105927168,3105928191,IL +3105928192,3105928447,ES +3105928448,3105929215,CZ +3105929216,3105930239,RU +3105930240,3105931263,PT +3105931264,3105932287,EU +3105932288,3105933311,SE +3105933312,3105934335,GB +3105934336,3105935359,SE +3105935360,3105936383,FR +3105936384,3105937407,CH +3105937408,3105938431,FR +3105938432,3105939455,CH +3105939456,3105940479,BY +3105940480,3105941503,GR +3105941504,3105942527,NL +3105942528,3105943551,LU +3105943552,3105944575,NL +3105944576,3105945599,DE +3105945600,3105946623,RU +3105946624,3105947647,IE +3105947648,3105948671,DE +3105948672,3105949695,GB +3105949696,3105950719,AT +3105950720,3105951743,FR +3105951744,3105952767,LU +3105952768,3105953791,CH +3105953792,3105954815,FR +3105954816,3105955839,JO +3105955840,3105956863,AL +3105956864,3105957887,PL +3105957888,3105958911,FR +3105958912,3105959935,IQ +3105959936,3105960959,SI +3105960960,3105961983,HU +3105961984,3105963007,IT +3105963008,3105964031,TR +3105964032,3105965055,ES +3105965056,3105966079,NL +3105966080,3105967103,FI +3105967104,3105968127,GB +3105968128,3105969151,HU +3105969152,3105970175,GB +3105970176,3105971199,FR +3105971200,3105972223,GB +3105972224,3105973247,FI +3105973248,3105974271,US +3105974272,3105975295,MD +3105975296,3105976319,TR +3105976320,3105977343,LB +3105977344,3105978367,NL +3105978368,3105979391,RU +3105979392,3105980415,KW +3105980416,3105981439,TR +3105981440,3105982463,ES +3105982464,3105983487,CZ +3105983488,3105984511,UA +3105984512,3105985535,HU +3105985536,3105986559,GB +3105986560,3105987583,NL +3105987584,3105988607,CZ +3105988608,3105989631,RU +3105989632,3105990655,NL +3105990656,3105991679,PS +3105991680,3105992703,SA +3105992704,3105993727,BH +3105993728,3105994751,DE +3105994752,3105995775,GB +3105995776,3105996799,DE +3105996800,3105997823,GB +3105997824,3105999871,RU +3105999872,3106000895,DE +3106000896,3106001919,GB +3106001920,3106002943,FR +3106002944,3106003967,DE +3106003968,3106004991,EU +3106004992,3106006015,CH +3106006016,3106007039,RU +3106007040,3106008063,TR +3106008064,3106009087,RU +3106009088,3106010111,GB +3106010112,3106011135,RU +3106011136,3106012159,CH +3106012160,3106013183,AT +3106013184,3106014207,DE +3106014208,3106015231,NO +3106015232,3106016255,GB +3106016256,3106017279,DK +3106017280,3106018303,IQ +3106018304,3106019327,RU +3106019328,3106020351,LV +3106020352,3106021375,PL +3106021376,3106022399,FR +3106022400,3106023423,IT +3106023424,3106024447,NL +3106024448,3106025471,GB +3106025472,3106026495,PL +3106026496,3106027519,NL +3106027520,3106029567,GB +3106029568,3106031615,NL +3106031616,3106032639,AZ +3106032640,3106033663,PL +3106033664,3106034687,GB +3106034688,3106035711,IT +3106035712,3106036735,DE +3106036736,3106037759,RS +3106037760,3106038783,GB +3106038784,3106039807,AZ +3106039808,3106041855,IE +3106041856,3106042879,DE +3106042880,3106043903,GB +3106043904,3106044927,IE +3106044928,3106045951,GB +3106045952,3106046975,TR +3106046976,3106047999,DK +3106048000,3106049023,IT +3106049024,3106050047,FR +3106050048,3106051071,NL +3106051072,3106052095,LI +3106052096,3106053119,RU +3106053120,3106054143,NL +3106054144,3106055167,IR +3106055168,3106056191,GB +3106056192,3106057215,NL +3106057216,3106058239,GB +3106058240,3106059263,NL +3106059264,3106060287,RU +3106060288,3106061311,DE +3106061312,3106062335,NL +3106062336,3106063359,ES +3106063360,3106064383,DE +3106064384,3106065407,NL +3106065408,3106066431,IT +3106066432,3106067455,GB +3106067456,3106068479,DE +3106068480,3106070527,NL +3106070528,3106071551,UA +3106071552,3106072575,BH +3106072576,3106073599,GB +3106073600,3106074623,PL +3106074624,3106076671,RU +3106076672,3106078719,GB +3106078720,3106080767,RU +3106080768,3106081791,UA +3106081792,3106082815,DE +3106082816,3106083839,KZ +3106083840,3106084863,TR +3106084864,3106085887,GB +3106085888,3106086911,CH +3106086912,3106087935,NL +3106087936,3106091007,RU +3106091008,3106092031,GB +3106092032,3106093055,BE +3106093056,3106094079,GB +3106094080,3106095103,CH +3106095104,3106096127,DE +3106096128,3106097151,LV +3106097152,3106099199,GB +3106099200,3106100223,NO +3106100224,3106101247,SE +3106101248,3106102271,GB +3106102272,3106103295,ES +3106103296,3106104319,NL +3106104320,3106105343,UA +3106105344,3106106367,AE +3106106368,3106107391,CZ +3106107392,3106108415,NL +3106108416,3106110463,RU +3106110464,3106111487,GB +3106111488,3106112511,RU +3106112512,3106113535,CZ +3106113536,3106114559,NL +3106114560,3106115583,ES +3106115584,3106116607,DE +3106116608,3106117631,GB +3106117632,3106118655,AT +3106118656,3106119679,BA +3106119680,3106120703,RU +3106120704,3106121727,BE +3106121728,3106122751,RU +3106122752,3106123775,BE +3106123776,3106124799,BG +3106124800,3106125823,AT +3106125824,3106126847,NO +3106126848,3106127871,ES +3106127872,3106128895,RU +3106128896,3106129919,PL +3106129920,3106130943,NO +3106130944,3106131967,FR +3106131968,3106132991,DE +3106132992,3106134015,NO +3106134016,3106135039,DE +3106135040,3106136063,RU +3106136064,3106137087,CH +3106137088,3106138111,GB +3106138112,3106139135,DE +3106139136,3106140159,SE +3106140160,3106141183,DE +3106141184,3106142207,IS +3106142208,3106143231,GB +3106143232,3106144255,CH +3106144256,3106145279,ES +3106145280,3106146303,BE +3106146304,3106147327,GB +3106147328,3106148351,FR +3106148352,3106149375,AT +3106149376,3106150399,EU +3106150400,3106151423,GB +3106151424,3106152447,NO +3106152448,3106153471,GB +3106153472,3106154495,AM +3106154496,3106155519,NL +3106155520,3106156543,DE +3106156544,3106157567,NO +3106157568,3106158591,IT +3106158592,3106159615,UA +3106159616,3106160639,RU +3106160640,3106161663,IT +3106161664,3106162687,BA +3106162688,3106163711,IT +3106163712,3106164735,GB +3106164736,3106165759,LT +3106165760,3106166783,BA +3106166784,3106167807,BH +3106167808,3106168831,RO +3106168832,3106169855,FI +3106169856,3106170879,CZ +3106170880,3106171903,RU +3106171904,3106172927,GB +3106172928,3106173951,NL +3106173952,3106175999,DE +3106176000,3106177023,NO +3106177024,3106178047,IT 3120562176,3120594943,CO 3120594944,3120599039,AR 3120599040,3120601087,EC @@ -44583,7 +44870,9 @@ 3128492032,3128524799,CO 3128524800,3128541183,AR 3128541184,3128557567,BO -3128557568,3129999359,AR +3128557568,3128574463,AR +3128574464,3128574719,UY +3128574720,3129999359,AR 3129999360,3130261503,CO 3130261504,3130277887,CL 3130277888,3130284031,AR @@ -44612,7 +44901,8 @@ 3131310080,3131572223,VE 3131572224,3131834367,CO 3131834368,3132096511,CL -3132096512,3132227583,CR +3132096512,3132194815,CR +3132219392,3132227583,AR 3132227584,3132293119,EC 3132293120,3132309503,HN 3132309504,3132313599,CR @@ -44751,13 +45041,16 @@ 3158507520,3158573055,FI 3158573056,3158638591,RU 3158638592,3158704127,LT -3158704128,3158749183,KW -3158749184,3158751231,US -3158751232,3158835199,KW +3158704128,3158824959,KW +3158824960,3158825215,US +3158825216,3158825727,KW +3158825728,3158825983,US +3158825984,3158835199,KW 3158835200,3158851583,IQ 3158851584,3158867967,RU 3158867968,3158884351,AZ -3158884352,3158885119,DE +3158884352,3158884863,DE +3158884864,3158885119,GB 3158885120,3158885887,TR 3158885888,3158891551,DE 3158891552,3158891583,GB @@ -44765,7 +45058,9 @@ 3158891776,3158892031,PL 3158892032,3158892415,DE 3158892416,3158892543,GB -3158892544,3158897727,DE +3158892544,3158893567,DE +3158893568,3158893823,GB +3158893824,3158897727,DE 3158897728,3158897791,RU 3158897792,3158897855,DE 3158897856,3158897919,UA @@ -44846,8 +45141,7 @@ 3160262656,3160264703,HU 3160264704,3160266751,RU 3160266752,3160268799,DE -3160268800,3160270847,PT -3160270848,3160272895,ES +3160268800,3160272895,PT 3160272896,3160274943,RU 3160274944,3160276991,AT 3160276992,3160279039,FR @@ -44872,7 +45166,7 @@ 3160315904,3160317951,KZ 3160317952,3160322047,RU 3160322048,3160324095,CH -3160324096,3160328191,IT +3160326144,3160328191,IT 3160328192,3160330239,FR 3160330240,3160332287,RU 3160332288,3160334335,NO @@ -44924,35 +45218,41 @@ 3161620480,3161636863,DK 3161636864,3161653247,RU 3161653248,3161669631,LU -3161669632,3161669887,RE -3161669888,3161670399,FR +3161669632,3161670399,FR 3161670400,3161670655,RE -3161670656,3161670911,FR -3161670912,3161671167,RE -3161671168,3161671679,FR +3161670656,3161671679,FR 3161671680,3161672191,RE -3161672192,3161672703,FR -3161672704,3161672959,RE -3161672960,3161673215,FR -3161673216,3161673727,RE -3161673728,3161674751,FR +3161672192,3161672447,FR +3161672448,3161672703,RE +3161672704,3161674751,FR 3161674752,3161675263,RE -3161675264,3161676799,FR -3161676800,3161677823,RE -3161677824,3161678079,MQ -3161678080,3161678335,FR -3161678336,3161679871,MQ -3161679872,3161680127,FR -3161680128,3161680895,GP -3161680896,3161681151,FR -3161681152,3161681663,GP -3161681664,3161681919,FR -3161681920,3161682943,GF -3161682944,3161683199,FR -3161683200,3161683967,MQ +3161675264,3161675775,FR +3161675776,3161676031,RE +3161676032,3161676799,FR +3161676800,3161677055,RE +3161677056,3161677311,FR +3161677312,3161677823,RE +3161677824,3161678079,FR +3161678080,3161678335,MQ +3161678336,3161678847,FR +3161678848,3161679103,MQ +3161679104,3161679359,FR +3161679360,3161679615,MQ +3161679616,3161680383,FR +3161680384,3161680639,GP +3161680640,3161680895,FR +3161680896,3161681407,GP +3161681408,3161681919,FR +3161681920,3161682431,GF +3161682432,3161682687,FR +3161682688,3161682943,GF +3161682944,3161683711,FR +3161683712,3161683967,MQ 3161683968,3161684223,FR -3161684224,3161685247,MQ -3161685248,3161686015,FR +3161684224,3161684735,MQ +3161684736,3161684991,FR +3161684992,3161685759,MQ +3161685760,3161686015,FR 3161686016,3161702399,UA 3161702400,3161718783,AM 3161718784,3161735167,PL @@ -44962,12 +45262,11 @@ 3161784320,3161800703,FI 3161800704,3161817087,SA 3161817088,3161833471,PL -3161833472,3161835007,MK -3161835008,3161839103,AT -3161839104,3161840639,MK -3161840640,3161843199,AT -3161843200,3161844223,MK -3161844224,3161849855,AT +3161833472,3161840639,AT +3161840640,3161840895,MK +3161840896,3161846015,AT +3161846016,3161847039,MK +3161847040,3161849855,AT 3161849856,3161866239,BE 3161866240,3161882623,IR 3161882624,3161899007,DE @@ -44990,8 +45289,22 @@ 3162071040,3162087423,IR 3162087424,3162095615,SK 3162095616,3162103807,GE -3162103808,3162109951,FR -3162109952,3162111999,NL +3162103808,3162105087,FR +3162105088,3162105855,NL +3162105856,3162106111,FR +3162106112,3162106367,NL +3162106368,3162106623,FR +3162106624,3162106879,NL +3162106880,3162107135,FR +3162107136,3162107391,NL +3162107392,3162107647,FR +3162107648,3162108415,NL +3162108416,3162108671,FR +3162108672,3162108927,NL +3162108928,3162110975,FR +3162110976,3162111103,NL +3162111104,3162111167,FR +3162111168,3162111999,NL 3162112000,3162120191,PL 3162120192,3162128383,GB 3162128384,3162129407,NL @@ -45051,13 +45364,9 @@ 3162636288,3162669055,FR 3162669056,3162681343,RU 3162681344,3162682367,UA -3162682368,3162682879,RU -3162682880,3162683391,LV -3162683392,3162685439,RU +3162682368,3162685439,RU 3162685440,3162693631,UA -3162693632,3162698751,RU -3162698752,3162699263,NL -3162699264,3162701823,RU +3162693632,3162701823,RU 3162701824,3162734591,MD 3162734592,3162767359,RU 3162767360,3162800127,SA @@ -45071,7 +45380,11 @@ 3163062272,3163095039,IR 3163095040,3163127807,PL 3163127808,3163160575,BH -3163160576,3163170527,DE +3163160576,3163164927,DE +3163164928,3163165183,FR +3163165184,3163166975,DE +3163166976,3163167231,FR +3163167232,3163170527,DE 3163170528,3163170559,AE 3163170560,3163186534,DE 3163186535,3163186535,FR @@ -45119,11 +45432,7 @@ 3164936192,3164937749,LT 3164937750,3164937750,FR 3164937751,3164938239,LT -3164938240,3164947967,FR -3164947968,3164948479,BE -3164948480,3164949503,FR -3164949504,3164950015,BE -3164950016,3164951663,FR +3164938240,3164951663,FR 3164951664,3164951671,PL 3164951672,3164952224,FR 3164952225,3164952231,GB @@ -45146,7 +45455,9 @@ 3164970414,3164970415,IT 3164970416,3164970923,FR 3164970924,3164970927,LT -3164970928,3164974335,FR +3164970928,3164973663,FR +3164973664,3164973695,GB +3164973696,3164974335,FR 3164974336,3164974463,GB 3164974464,3164976295,FR 3164976296,3164976303,IT @@ -45160,11 +45471,7 @@ 3165388800,3165519871,RO 3165519872,3165585407,DE 3165585408,3165650943,CZ -3165650944,3165938239,DK -3165938240,3165938367,US -3165938368,3165938375,DK -3165938376,3165938431,US -3165938432,3166175231,DK +3165650944,3166175231,DK 3166175232,3166306303,CH 3166306304,3166437375,RU 3166437376,3166568447,BE @@ -45178,7 +45485,7 @@ 3166654464,3166658559,RU 3166658560,3166662655,UA 3166662656,3166666751,RU -3166666752,3166667263,DE +3166666752,3166667263,PL 3166667264,3166667775,CZ 3166667776,3166668799,GB 3166668800,3166670847,RO @@ -45197,26 +45504,17 @@ 3166699520,3166961663,DE 3166961664,3167223807,SI 3167223808,3167748095,NL -3167748096,3167781887,RO -3167781888,3167782399,A2 -3167782400,3167870975,RO +3167748096,3167870975,RO 3167870976,3167879167,MD -3167879168,3167950847,RO -3167950848,3167951359,A2 -3167951360,3167986687,RO -3167986688,3167987711,GB +3167879168,3167987711,RO 3167987712,3167989759,MD 3167989760,3168005887,RO 3168005888,3168006143,NL -3168006144,3168096255,RO +3168006144,3168050431,RO +3168050432,3168050687,MD +3168050688,3168096255,RO 3168096256,3168100351,MD -3168100352,3168110591,RO -3168110592,3168111615,GB -3168111616,3168195583,RO -3168195584,3168196095,DE -3168196096,3168223743,RO -3168223744,3168224255,MD -3168224256,3168272383,RO +3168100352,3168272383,RO 3168272384,3168534527,IT 3168534528,3168796671,GB 3168796672,3168829439,FR @@ -45234,27 +45532,35 @@ 3169054720,3169056767,GB 3169056768,3169058815,EE 3169058816,3169091583,DK -3169091584,3169107967,IT -3169107968,3169112063,US -3169112064,3169124351,IT +3169091584,3169111039,IT +3169111040,3169111295,US +3169111296,3169124351,IT 3169124352,3169157119,RO 3169157120,3169189887,SY 3169189888,3169222655,UA 3169222656,3169255423,SI 3169255424,3169264127,KW 3169264128,3169264383,US -3169264384,3169288191,KW +3169264384,3169279999,KW +3169280000,3169282047,GB +3169282048,3169288191,KW 3169288192,3169320959,UA 3169320960,3169583103,RU 3169583104,3169648639,KW 3169648640,3169714175,MD 3169714176,3169779711,FI 3169779712,3169845247,UA -3169845248,3169863679,RO +3169845248,3169854463,RO +3169854464,3169855487,IR +3169855488,3169863167,RO +3169863168,3169863423,MD +3169863424,3169863679,RO 3169863680,3169864703,MD 3169864704,3169869823,RO 3169869824,3169878015,MD -3169878016,3169927423,RO +3169878016,3169896447,RO +3169896448,3169898495,ES +3169898496,3169927423,RO 3169927424,3169927679,NL 3169927680,3169976319,RO 3169976320,3170111487,RU @@ -45321,8 +45627,17 @@ 3187910656,3187914751,CL 3187914752,3187916799,BO 3187916800,3187933183,CO -3187933184,3187939327,HN -3187939328,3187946111,GT +3187933184,3187933439,GT +3187933440,3187933695,HN +3187933696,3187935607,GT +3187935608,3187935615,HN +3187935616,3187935999,GT +3187936000,3187936255,HN +3187936256,3187936711,GT +3187936712,3187936719,HN +3187936720,3187937279,GT +3187937280,3187937535,HN +3187937536,3187946111,GT 3187946112,3187946239,HN 3187946240,3187946639,GT 3187946640,3187946647,HN @@ -45331,7 +45646,9 @@ 3187947988,3187948799,GT 3187948800,3187948927,HN 3187948928,3187949567,GT -3187949568,3187953663,BQ +3187949568,3187950126,BQ +3187950127,3187950127,CW +3187950128,3187953663,BQ 3187953664,3187955711,CL 3187955712,3187957759,CR 3187957760,3187961855,CL @@ -45455,7 +45772,11 @@ 3191193600,3191209983,HN 3191209984,3191275519,CL 3191275520,3191341055,AR -3191341056,3191406591,GT +3191341056,3191405855,GT +3191405856,3191405863,SV +3191405864,3191405871,GT +3191405872,3191405887,SV +3191405888,3191406591,GT 3191406592,3191439359,SV 3191439360,3191455743,EC 3191455744,3191472127,AR @@ -45794,9 +46115,7 @@ 3194994688,3195011071,AR 3195019264,3195023359,AR 3195023360,3195024383,CL -3195024384,3195024639,HN -3195024640,3195024895,UY -3195024896,3195025407,HN +3195024384,3195025407,UY 3195025408,3195043839,AR 3195043840,3195056127,CO 3195056128,3195060223,AR @@ -46049,6 +46368,8 @@ 3203549184,3203661823,CO 3203661824,3203923967,AR 3203923968,3204448255,CO +3219128320,3220176895,BR +3221225480,3221225727,GB 3221226496,3221227519,KY 3221227520,3221242879,US 3221242880,3221243391,GB @@ -46101,8 +46422,10 @@ 3221802240,3221803775,US 3221803776,3221804031,IN 3221804032,3221806079,US -3221806080,3221807103,IN -3221807104,3221843967,US +3221806080,3221806335,IN +3221806336,3221806591,US +3221806592,3221806847,IN +3221806848,3221843967,US 3221843968,3221844223,EU 3221844224,3221993727,US 3221993728,3221993983,EU @@ -46147,7 +46470,9 @@ 3222072064,3222072319,SE 3222072320,3222075135,US 3222075136,3222075391,CH -3222075392,3222305535,US +3222075392,3222274559,US +3222274560,3222274815,AU +3222274816,3222305535,US 3222305536,3222309119,SE 3222309120,3222309375,DE 3222309376,3222313727,SE @@ -46213,14 +46538,14 @@ 3222989312,3222989567,GB 3222989568,3222989823,CA 3222989824,3222990079,PT -3222990080,3222990591,AT +3222990080,3222990335,NL +3222990336,3222990591,AT 3222990592,3222990847,PT 3222990848,3223077119,US 3223077120,3223077375,EU 3223077376,3223201791,US 3223201792,3223202815,PR -3223202816,3223203071,US -3223203840,3223214079,US +3223202816,3223214079,US 3223214848,3223215103,US 3223215104,3223215359,AU 3223215360,3223215871,US @@ -46257,9 +46582,7 @@ 3223272960,3223273215,GB 3223273216,3223283199,US 3223283200,3223283455,DE -3223283712,3223286271,US -3223286272,3223286527,IN -3223286528,3223286783,US +3223283712,3223286783,US 3223286784,3223289855,JP 3223289856,3223299327,US 3223299584,3223301119,NL @@ -46303,8 +46626,7 @@ 3223435008,3223437311,US 3223437312,3223447551,CH 3223447552,3223447807,US -3223447808,3223449087,NL -3223449088,3223449599,EU +3223447808,3223449599,NL 3223449600,3223452671,US 3223452928,3223453183,US 3223453184,3223453439,DE @@ -46380,17 +46702,9 @@ 3223583488,3223584767,US 3223584768,3223594495,SE 3223594496,3223595007,AT -3223595008,3223598079,SE -3223598080,3223598591,CZ -3223598592,3223599103,SE +3223595008,3223599103,SE 3223599104,3223599615,AT -3223599616,3223602687,SE -3223602688,3223603199,CZ -3223603200,3223619583,SE -3223619584,3223620095,CZ -3223620096,3223628799,SE -3223628800,3223629311,CZ -3223629312,3223650303,SE +3223599616,3223650303,SE 3223650304,3223715839,CH 3223715840,3223781375,DK 3223781376,3223784191,US @@ -46419,7 +46733,7 @@ 3223938816,3223946239,GB 3223946240,3223947519,CH 3223947520,3223947775,US -3223948288,3223948543,NL +3223948288,3223948543,US 3223948544,3223949823,CH 3223949824,3223950079,AU 3223950080,3223950335,DE @@ -46476,8 +46790,7 @@ 3224014592,3224014847,DE 3224014848,3224016639,US 3224016640,3224016895,AU -3224016896,3224023039,US -3224023808,3224024063,US +3224016896,3224024063,US 3224024064,3224029695,CH 3224029696,3224030463,CA 3224030720,3224030975,CA @@ -46521,10 +46834,8 @@ 3224367616,3224368127,US 3224368128,3224369663,CH 3224369664,3224373247,US -3224373248,3224373248,AU -3224373249,3224373759,US -3224373760,3224374015,AU -3224374016,3224379135,US +3224373248,3224373503,AU +3224373504,3224379135,US 3224379136,3224379391,DE 3224379392,3224398079,US 3224398336,3224398591,US @@ -46607,9 +46918,7 @@ 3224822016,3224822271,SE 3224822272,3224822527,US 3224822784,3224826367,US -3224826368,3224826531,CA -3224826532,3224826535,CA -3224826536,3224826623,CA +3224826368,3224826623,CA 3224826624,3224826879,US 3224827136,3224827391,GB 3224827392,3224827647,US @@ -46617,9 +46926,7 @@ 3224828672,3224828927,AU 3224829184,3224829439,US 3224829440,3224829695,DE -3224829952,3224833535,US -3224833536,3224833791,SG -3224833792,3224834047,US +3224829952,3224834047,US 3224834048,3224834303,SG 3224834304,3224834559,US 3224834560,3224834815,TH @@ -46627,9 +46934,7 @@ 3224839424,3224839679,EU 3224839680,3224841727,US 3224841728,3224841983,CN -3224841984,3224850175,US -3224850176,3224850431,IN -3224850432,3224851455,US +3224841984,3224851455,US 3224851456,3224851711,DE 3224851968,3224852735,US 3224852736,3224852991,DE @@ -46720,13 +47025,14 @@ 3225427968,3225428991,US 3225429504,3225429759,CA 3225430016,3225431039,CA -3225431040,3225431551,RU +3225431040,3225431551,CZ 3225431552,3225434111,US 3225434112,3225436159,CA 3225436160,3225444607,US 3225445376,3225446399,BE 3225446400,3225450495,US -3225450496,3225451519,AG +3225450496,3225451263,AG +3225451264,3225451519,MS 3225451776,3225452031,SE 3225452544,3225456639,CA 3225456640,3225459711,US @@ -46839,7 +47145,7 @@ 3225701120,3225701375,US 3225701376,3225709567,NO 3225709568,3225710079,US -3225710592,3225714687,US +3225710592,3225715455,US 3225715456,3225715711,CA 3225715712,3225715967,AU 3225715968,3225716991,US @@ -46925,15 +47231,9 @@ 3225874944,3225875199,GB 3225875456,3225875967,US 3225876480,3225878527,US -3225878528,3225892351,SE -3225892352,3225892863,FR -3225892864,3225894399,SE -3225894400,3225895423,GB -3225895424,3225896447,SE -3225896448,3225896959,CZ -3225896960,3225900543,SE -3225900544,3225901567,CZ -3225901568,3225917183,SE +3225878528,3225885183,SE +3225885184,3225885695,AT +3225885696,3225917183,SE 3225917184,3225917439,NL 3225917440,3225923327,SE 3225923328,3225923583,IN @@ -46943,9 +47243,7 @@ 3225933056,3225933311,AT 3225933312,3225934335,SE 3225934336,3225934591,AT -3225934592,3225935871,SE -3225935872,3225936383,CZ -3225936384,3225936639,SE +3225934592,3225936639,SE 3225936640,3225936895,US 3225936896,3225938175,SE 3225938176,3225938431,RU @@ -46987,10 +47285,7 @@ 3226177536,3226178559,US 3226178560,3226189823,CA 3226189824,3226191871,US -3226191872,3226201087,CA -3226201344,3226201855,CA -3226201856,3226202111,US -3226202112,3226206207,CA +3226191872,3226206207,CA 3226206208,3226207231,US 3226207744,3226215423,GB 3226215424,3226236927,US @@ -47020,9 +47315,7 @@ 3226305536,3226307327,GB 3226307328,3226307583,US 3226307584,3226308095,ES -3226308096,3226365439,US -3226365440,3226365951,DE -3226365952,3226374143,US +3226308096,3226374143,US 3226374144,3226375423,DE 3226375424,3226397695,US 3226397696,3226400255,DE @@ -47058,8 +47351,7 @@ 3226576896,3226578943,CA 3226578944,3226579967,US 3226580480,3226581247,FI -3226582528,3226582783,US -3226583040,3226583295,US +3226581248,3226583295,US 3226583552,3226583807,SE 3226584064,3226591231,US 3226591232,3226592255,CA @@ -47076,7 +47368,7 @@ 3226631424,3226631935,US 3226631936,3226632191,PT 3226632192,3226633215,CA -3226635008,3226635263,US +3226633216,3226635263,US 3226635264,3226635519,AU 3226635520,3226635775,US 3226635776,3226636031,ZA @@ -47089,7 +47381,8 @@ 3226639616,3226640127,AT 3226640128,3226640639,US 3226640640,3226640895,AU -3226640896,3226654207,US +3226640896,3226652927,US +3226653696,3226654207,US 3226654208,3226654463,PT 3226654464,3226655743,US 3226655744,3226656255,IT @@ -47107,7 +47400,9 @@ 3226695680,3226695935,US 3226695936,3226696191,CA 3226696448,3226696703,AU -3226696704,3226705919,US +3226696704,3226698495,US +3226698496,3226698751,CA +3226698752,3226705919,US 3226705920,3226706175,FR 3226706176,3226706943,US 3226707200,3226707455,PL @@ -47277,7 +47572,9 @@ 3227054080,3227056639,US 3227056640,3227058175,PT 3227058176,3227123711,FI -3227123712,3227204617,US +3227123712,3227143167,US +3227143168,3227143423,FR +3227143424,3227204617,US 3227204618,3227204619,EU 3227204620,3227225087,US 3227225088,3227225599,LU @@ -47333,11 +47630,10 @@ 3227295232,3227310079,US 3227310080,3227310335,NO 3227310336,3227320319,US -3227320320,3227361791,FR -3227361792,3227362047,GB +3227320320,3227362047,FR 3227362048,3227362303,US -3227362304,3227363071,GB -3227363072,3227385855,FR +3227362304,3227362559,GB +3227362560,3227385855,FR 3227385856,3227391999,US 3227392000,3227392255,PT 3227392256,3227393023,US @@ -47409,9 +47705,13 @@ 3227457024,3227457535,US 3227457536,3227459001,CA 3227459002,3227459002,US -3227459003,3227461119,CA +3227459003,3227461081,CA +3227461082,3227461082,US +3227461083,3227461119,CA 3227461120,3227461631,US -3227461632,3227464447,CA +3227461632,3227461959,CA +3227461960,3227461963,US +3227461964,3227464447,CA 3227464448,3227464575,US 3227464576,3227465147,CA 3227465148,3227465151,US @@ -47457,9 +47757,7 @@ 3227804928,3227805183,CA 3227805184,3227805695,FI 3227805696,3227806463,US -3227806464,3227806502,FI -3227806503,3227806503,GB -3227806504,3227806719,FI +3227806464,3227806719,FI 3227806720,3227807743,US 3227807744,3227809023,FI 3227809024,3227809279,IN @@ -47491,8 +47789,7 @@ 3227864064,3227865343,US 3227865344,3227867903,NL 3227867904,3227868159,TH -3227868160,3227872767,US -3227872768,3227873023,GB +3227868160,3227873023,US 3227873024,3227874047,NL 3227874048,3227874815,US 3227874816,3227875071,PT @@ -47516,9 +47813,7 @@ 3227893760,3227894015,FI 3227894016,3227895039,US 3227895040,3227895551,DE -3227895808,3227909119,US -3227909120,3227909375,GB -3227909376,3227909631,US +3227895808,3227909631,US 3227909632,3227909887,AU 3227910400,3227910655,AT 3227910656,3227911679,US @@ -47635,7 +47930,9 @@ 3228109312,3228109567,NZ 3228109568,3228125951,US 3228125952,3228126207,RU -3228126208,3228172287,US +3228126208,3228150271,US +3228150272,3228150527,FI +3228150528,3228172287,US 3228172288,3228237823,IT 3228238336,3228238591,GB 3228238592,3228238847,US @@ -47698,11 +47995,21 @@ 3228335360,3228335615,SK 3228335616,3228335871,CZ 3228336128,3228336639,CZ -3228336640,3228342783,SK +3228336640,3228337663,SK +3228337664,3228337919,CZ +3228337920,3228338175,SK +3228338176,3228338431,CZ +3228338432,3228340735,SK +3228340736,3228341247,CZ +3228341248,3228342783,SK 3228342784,3228343039,CZ -3228343040,3228344063,SK +3228343040,3228343295,SK +3228343296,3228343551,CZ +3228343552,3228344063,SK 3228344064,3228344575,CZ -3228344576,3228348159,SK +3228344576,3228347135,SK +3228347136,3228347391,CZ +3228347392,3228348159,SK 3228348160,3228353279,US 3228353280,3228358399,SE 3228358400,3228362239,US @@ -47787,35 +48094,35 @@ 3228631040,3228696575,NL 3228696576,3228826371,IL 3228826372,3228826372,US -3228826373,3228827647,IL -3228827648,3228828159,PS -3228828160,3228829183,IL -3228829184,3228829695,PS -3228829696,3228830719,IL +3228826373,3228830719,IL 3228830720,3228833791,PS 3228833792,3229024255,IL 3229024256,3229061119,US 3229061120,3229062433,CA 3229062434,3229062450,US -3229062451,3229062655,CA -3229062656,3229063167,US -3229063168,3229064951,CA +3229062451,3229064951,CA 3229064952,3229064955,US 3229064956,3229065215,CA -3229065216,3229093119,US -3229093120,3229093375,AU -3229093376,3229155327,US +3229065216,3229092607,US +3229092608,3229092863,AU +3229092864,3229093119,US +3229093120,3229093631,AU +3229093632,3229155327,US 3229155328,3229159423,SE 3229159424,3229159935,AT 3229159936,3229160959,SE 3229160960,3229161471,AT -3229161472,3229183999,SE +3229161472,3229167103,SE +3229167104,3229167615,AT +3229167616,3229183999,SE 3229184000,3229184511,AT 3229184512,3229195263,SE 3229195264,3229196287,DE 3229196288,3229196799,SE 3229196800,3229197311,AT -3229197312,3229220863,SE +3229197312,3229198847,SE +3229198848,3229199359,AT +3229199360,3229220863,SE 3229220864,3229245439,GB 3229245440,3229246463,US 3229246464,3229254399,GB @@ -47878,9 +48185,7 @@ 3229700096,3229700351,AT 3229700352,3229701887,US 3229701888,3229702143,TR -3229702144,3229703679,US -3229703680,3229703935,GB -3229703936,3229704703,US +3229702144,3229704703,US 3229704704,3229704959,DE 3229705216,3229745151,US 3229745152,3229810687,FI @@ -47953,7 +48258,7 @@ 3229940736,3229940991,CH 3229940992,3229941247,AU 3229941248,3229941503,US -3229941760,3229945343,US +3229941760,3229945087,US 3229945600,3229945855,PT 3229945856,3229947135,US 3229947136,3229947391,AU @@ -48143,7 +48448,7 @@ 3230832128,3230832383,NZ 3230832384,3230832639,US 3230832640,3230832895,FI -3230832896,3230833407,US +3230832896,3230833151,US 3230833664,3230833919,CA 3230833920,3230834175,BR 3230834176,3230835455,US @@ -48309,10 +48614,7 @@ 3231049984,3231050239,US 3231050496,3231051263,US 3231051264,3231051519,GB -3231051776,3231056895,US -3231056896,3231057407,CA -3231057408,3231057663,US -3231057664,3231057919,CA +3231051776,3231057919,US 3231057920,3231058175,EU 3231058176,3231060991,US 3231060992,3231061247,EU @@ -48382,9 +48684,10 @@ 3231121408,3231149311,US 3231149312,3231149567,CA 3231149568,3231154431,US -3231155200,3231155711,US -3231155712,3231156223,CA -3231156224,3231188479,US +3231155200,3231156223,CA +3231156224,3231174655,US +3231174656,3231182847,CN +3231182848,3231188479,US 3231188480,3231188735,NO 3231188736,3231190527,US 3231190528,3231190783,GB @@ -48511,9 +48814,7 @@ 3231352832,3231358975,CA 3231358976,3231383551,US 3231383552,3231385599,NO -3231385600,3231475199,US -3231475200,3231475455,PL -3231475456,3231477759,US +3231385600,3231477759,US 3231477760,3231478015,CA 3231478016,3231482879,US 3231482880,3231483135,BE @@ -48552,16 +48853,14 @@ 3231516672,3231519231,SE 3231519744,3231526911,US 3231526912,3231528959,A2 -3231528960,3231529007,CA -3231529008,3231529015,US +3231528960,3231528999,CA +3231529000,3231529015,US 3231529016,3231531007,CA 3231531008,3231539199,US 3231539200,3231547391,CA 3231547392,3231547647,US 3231547648,3231547903,NO -3231547904,3231550207,US -3231550208,3231550719,DE -3231550720,3231551231,US +3231547904,3231551231,US 3231551232,3231551999,CA 3231552000,3231553023,US 3231553024,3231553791,JP @@ -48623,7 +48922,7 @@ 3231675904,3231676159,IE 3231676672,3231676927,FR 3231676928,3231677183,FI -3231677440,3231686655,US +3231677440,3231694847,US 3231694848,3231711231,CA 3231711232,3231713023,US 3231713024,3231713279,CA @@ -48706,6 +49005,7 @@ 3231793152,3231793663,BE 3231794176,3231800319,US 3231800320,3231801343,CN +3231801344,3231809535,CA 3231809536,3231810047,NZ 3231810560,3231825919,US 3231825920,3231842303,CA @@ -48751,7 +49051,7 @@ 3231886336,3231888383,PL 3231888384,3231889407,RU 3231889408,3231890431,RO -3231890432,3231893503,RU +3231890432,3231892479,RU 3231893504,3231894527,UA 3231895552,3231896575,UA 3231896576,3231897599,RU @@ -48776,9 +49076,7 @@ 3232056064,3232056319,IT 3232056320,3232079871,SE 3232079872,3232080895,GB -3232080896,3232092671,SE -3232092672,3232093183,GB -3232093184,3232093439,SE +3232080896,3232093439,SE 3232093440,3232093675,GB 3232093676,3232093676,EU 3232093677,3232093695,GB @@ -48795,7 +49093,7 @@ 3232130048,3232131071,UA 3232131072,3232133119,DE 3232133120,3232133631,UA -3232133632,3232134143,DE +3232133888,3232134143,DE 3232134144,3232135167,RU 3232135168,3232135679,PL 3232135680,3232135935,RO @@ -48810,9 +49108,10 @@ 3232156160,3232156671,PL 3232156672,3232159743,DE 3232159744,3232160767,PL -3232160768,3232163839,DE +3232160768,3232161791,DE 3232163840,3232165887,RU -3232165888,3232169727,DE +3232167936,3232168959,DE +3232169216,3232169727,DE 3232169728,3232169983,PL 3232169984,3232235519,IT 3232301056,3232309247,US @@ -48827,9 +49126,7 @@ 3232462848,3232464895,BB 3232464896,3232483327,GB 3232483328,3232555007,US -3232555264,3232555640,US -3232555641,3232555641,US -3232555642,3232555775,US +3232555264,3232555775,US 3232555776,3232560127,JP 3232560640,3232560895,JP 3232560896,3232561663,US @@ -48864,8 +49161,11 @@ 3232774144,3232825343,SE 3232825344,3233288191,US 3233288192,3233292287,CA -3233292288,3233349631,US -3233480704,3233484799,US +3233292288,3233431551,US +3233431552,3233451519,CA +3233451520,3233451775,GB +3233451776,3233464319,CA +3233464320,3233484799,US 3233484800,3233487359,ES 3233487872,3233488895,CA 3233488896,3233548287,US @@ -48918,7 +49218,7 @@ 3233588224,3233589247,GA 3233589248,3233589759,CA 3233589760,3233590015,CN -3233590528,3233590783,PR +3233590528,3233590783,US 3233590784,3233591039,PH 3233591040,3233591295,ID 3233591296,3233593599,US @@ -49040,8 +49340,9 @@ 3233740544,3233741311,GB 3233741312,3233808383,US 3233808384,3233873919,TW -3233873920,3233874943,AU -3233874944,3233903615,US +3233873920,3233874175,US +3233874176,3233874687,AU +3233874688,3233903615,US 3233903616,3233903743,GB 3233903744,3233903807,EU 3233903808,3233903871,GB @@ -49093,9 +49394,7 @@ 3234039296,3234043135,SE 3234043136,3234043903,US 3234043904,3234044159,AU -3234044160,3234047743,US -3234047744,3234047999,GB -3234048000,3234048511,US +3234044160,3234048511,US 3234048512,3234048767,AU 3234048768,3234051839,US 3234051840,3234052095,NL @@ -49134,8 +49433,7 @@ 3234240388,3234240511,EU 3234240512,3234240607,US 3234240608,3234240611,IL -3234240612,3234250751,US -3234267136,3234269695,US +3234240612,3234269695,US 3234270208,3234271231,CA 3234271232,3234275327,PT 3234275328,3234279423,AU @@ -49143,10 +49441,10 @@ 3234283520,3234310367,US 3234310368,3234310371,HK 3234310372,3234316287,US -3234332672,3234349055,US +3234316288,3234320383,CA +3234320384,3234349055,US 3234349056,3234353151,NZ -3234353152,3234381823,US -3234398208,3234549759,US +3234353152,3234549759,US 3234549760,3234550015,RU 3234553856,3234556415,US 3234556416,3234556927,CA @@ -49180,9 +49478,7 @@ 3234592512,3234592767,TH 3234592768,3234611199,US 3234611200,3234615295,US -3234615296,3234645247,US -3234645248,3234645759,US -3234645760,3234725887,US +3234615296,3234725887,US 3234726144,3234726399,CA 3234726400,3234726911,US 3234726912,3234727935,CA @@ -49265,12 +49561,15 @@ 3234855168,3234855935,US 3234856192,3234856447,US 3234856960,3234861055,CA -3234861056,3234906111,US -3234922496,3234988031,US +3234861056,3234988031,US 3234988032,3234991103,CA 3234991104,3235004415,US -3235004416,3235020799,CA -3235020800,3235085311,US +3235004416,3235021823,CA +3235021824,3235026943,US +3235026944,3235028991,CA +3235028992,3235045375,US +3235045376,3235046143,CA +3235046144,3235085311,US 3235085312,3235086335,CA 3235086336,3235184639,US 3235184640,3235184895,CA @@ -49279,9 +49578,7 @@ 3235276800,3235278847,US 3235278848,3235282943,BB 3235282944,3235315711,CA -3235315712,3235389439,US -3235389440,3235389951,VE -3235389952,3235512319,US +3235315712,3235512319,US 3235512320,3235577855,JP 3235577856,3235643391,CA 3235643392,3235774463,US @@ -49292,21 +49589,31 @@ 3235843072,3235844095,CA 3235844096,3235856383,US 3235856384,3235872767,BR -3235872768,3235876607,US +3235872768,3235875839,US +3235875840,3235876095,GB +3235876096,3235876607,US 3235876608,3235876863,AP -3235876864,3235877375,US -3235877376,3235877631,AU -3235877632,3235880447,US +3235876864,3235880447,US 3235880448,3235880703,GB -3235880704,3236044799,US +3235880704,3235914495,US +3235914496,3235914751,CA +3235914752,3235927295,US +3235927296,3235927807,CA +3235927808,3235928319,US +3235928320,3235928575,CA +3235928576,3235929087,US +3235929088,3235929343,CA +3235929344,3235945983,US +3235945984,3235946239,CA +3235946240,3236044799,US 3236044800,3236052991,CA 3236052992,3236069375,US 3236069376,3236102143,CA 3236102144,3236106239,PH -3236106240,3236167679,US -3236167680,3236172543,CA -3236172544,3236172799,US -3236172800,3236175871,CA +3236106240,3236139007,US +3236139008,3236143103,CA +3236143104,3236167679,US +3236167680,3236175871,CA 3236175872,3236200447,US 3236200448,3236233215,MY 3236233216,3236237567,US @@ -49387,29 +49694,17 @@ 3236695040,3236696063,CA 3236696064,3236757503,US 3236757504,3236765695,CA -3236765696,3236774911,US -3236774912,3236775423,HK -3236775424,3236775679,US -3236775680,3236776191,CA -3236776192,3236778239,US +3236765696,3236778239,US 3236778240,3236778751,GB -3236778752,3236781823,US -3236781824,3236782335,ES -3236782336,3236784383,US -3236784384,3236784895,IT -3236784896,3236786687,US -3236786688,3236787199,CA -3236787200,3236788479,US +3236778752,3236788479,US 3236788480,3236789503,GB 3236789504,3236823039,US 3236823040,3236826111,CH 3236826112,3236827135,CA 3236827136,3236958207,US 3236958208,3236962303,AU -3236962304,3237022207,US -3237022208,3237022719,CA -3237022720,3237023231,US -3237023232,3237023743,CA +3236962304,3237021695,US +3237021696,3237023743,CA 3237023744,3237036031,US 3237036032,3237052415,CA 3237052416,3237154815,US @@ -49417,6 +49712,8 @@ 3237155840,3237156863,AU 3237156864,3237163007,US 3237163008,3237167103,DM +3237167104,3237182463,US +3237182464,3237183487,DE 3237183488,3237216255,US 3237216256,3237281791,JP 3237281792,3237285119,US @@ -49477,11 +49774,11 @@ 3237553155,3237553155,GB 3237553156,3237553922,US 3237553923,3237553923,EU -3237553924,3237554431,US -3237554432,3237554434,AU +3237553924,3237554434,US 3237554435,3237554435,AP -3237554436,3237554687,AU -3237554688,3237560319,US +3237554436,3237568511,US +3237568512,3237572607,CA +3237572608,3237576703,US 3237576704,3237609471,CA 3237609472,3237613567,US 3237613568,3237614591,CA @@ -49521,23 +49818,21 @@ 3237726976,3237727231,US 3237727232,3237728255,AU 3237728256,3237732863,US -3237732864,3237733068,DE -3237733069,3237733070,DE -3237733071,3237733119,DE +3237732864,3237733119,DE 3237734144,3237734399,CA 3237734400,3237773311,US 3237773312,3237777407,CA 3237777408,3237781503,US 3237781504,3237785599,CA -3237785600,3237789695,US +3237785600,3237797887,US +3237797888,3237801983,CA 3237806080,3237857535,US 3237858304,3237863423,CA 3237863424,3237896191,US 3237896192,3237900287,PR -3237900288,3237937151,US +3237900288,3238002687,US 3238002688,3238008831,NL -3238008832,3238009855,EU -3238009856,3238010879,IE +3238008832,3238010879,GR 3238010880,3238017023,CH 3238017024,3238018303,DK 3238018304,3238018559,UA @@ -49571,7 +49866,6 @@ 3238053888,3238054911,RU 3238054912,3238055935,UA 3238055936,3238056959,PL -3238056960,3238057215,MD 3238057216,3238057471,BG 3238057472,3238057983,RU 3238057984,3238059519,UA @@ -49580,9 +49874,7 @@ 3238060032,3238060287,CH 3238060288,3238060543,RO 3238060544,3238060799,HU -3238060800,3238061311,UA -3238061312,3238061567,GB -3238061568,3238061823,AT +3238061056,3238061311,UA 3238061824,3238062079,CZ 3238062080,3238062591,CH 3238062848,3238063103,SE @@ -49594,7 +49886,6 @@ 3238064640,3238064895,PL 3238064896,3238065151,DK 3238065152,3238065407,SI -3238065408,3238065663,FR 3238065664,3238065919,DE 3238065920,3238066175,UA 3238066176,3238066431,DE @@ -49631,7 +49922,7 @@ 3238545920,3238546431,RU 3238546432,3238546943,CH 3238546944,3238547455,UA -3238547456,3238548991,CH +3238548480,3238548991,CH 3238548992,3238549503,CZ 3238549504,3238559231,CH 3238559232,3238559487,SE @@ -49639,7 +49930,9 @@ 3238562560,3238562815,IR 3238562816,3238573567,CH 3238573568,3238574079,PL -3238574080,3238578431,CH +3238574080,3238575103,CH +3238575104,3238575615,DE +3238575616,3238578431,CH 3238578432,3238578687,UA 3238578688,3238578943,CH 3238578944,3238579199,RU @@ -49667,13 +49960,7 @@ 3238599680,3238599935,UA 3238599936,3238600703,HU 3238600704,3238604799,DE -3238604800,3238606335,NL -3238606336,3238606591,SE -3238606592,3238607359,NL -3238607360,3238607871,SE -3238607872,3238608895,NL 3238608896,3238621183,SE -3238621184,3238622975,EU 3238622976,3238623231,GB 3238623232,3238623487,LV 3238623488,3238623743,PL @@ -49691,22 +49978,17 @@ 3238656512,3238657023,UA 3238657024,3238657535,AT 3238657536,3238657791,GB -3238657792,3238658047,AT -3238658048,3238789119,SE -3238789120,3238790143,EE -3238790144,3238802431,SE +3238658048,3238802431,SE 3238802432,3238804479,NL 3238804480,3238806527,SE 3238806528,3238807551,NL -3238807552,3238828031,SE -3238828032,3238829055,EE -3238829056,3238832127,SE +3238807552,3238821887,SE +3238821888,3238823935,HR +3238823936,3238832127,SE 3238832128,3238833151,NL 3238833152,3238838271,SE 3238838272,3238839295,NL -3238839296,3238843391,SE -3238843392,3238844415,EE -3238844416,3238847487,SE +3238839296,3238847487,SE 3238847488,3238848511,NL 3238848512,3238860799,SE 3238860800,3238862847,HR @@ -49733,15 +50015,28 @@ 3238919168,3238920191,NL 3238920192,3238941695,SE 3238941696,3238942719,NL -3238942720,3238986751,SE +3238942720,3238967295,SE +3238967296,3238969343,HR +3238969344,3238975487,SE +3238975488,3238977535,HR +3238977536,3238981631,SE +3238981632,3238983679,HR +3238983680,3238986751,SE 3238986752,3238987775,NL -3238987776,3239001087,SE +3238987776,3238993919,SE +3238993920,3238995967,HR +3238995968,3239001087,SE 3239001088,3239002111,NL 3239002112,3239008255,SE 3239008256,3239009279,NL -3239009280,3239051263,SE -3239051264,3239051519,CH -3239051520,3239062271,DE +3239009280,3239018495,SE +3239018496,3239020543,HR +3239020544,3239022591,SE +3239022592,3239024639,HR +3239024640,3239026687,SE +3239026688,3239028735,HR +3239028736,3239051263,SE +3239051264,3239062271,DE 3239062272,3239062527,ES 3239062528,3239062783,CH 3239062784,3239063039,UA @@ -49764,7 +50059,7 @@ 3239079424,3239079679,FR 3239079680,3239079935,MD 3239079936,3239088127,DE -3239088128,3239088639,GB +3239088384,3239088639,GB 3239088640,3239088895,DK 3239088896,3239089151,IL 3239089152,3239089407,RO @@ -49783,7 +50078,7 @@ 3239105280,3239105535,CH 3239105536,3239105791,DE 3239105792,3239106047,RO -3239106048,3239106559,DE +3239106048,3239106559,AT 3239106560,3239106815,ES 3239106816,3239107071,CH 3239107072,3239107327,RO @@ -49903,7 +50198,6 @@ 3239175168,3239175423,UA 3239175424,3239175679,BG 3239175680,3239175935,DE -3239175936,3239176191,FI 3239176192,3239180287,DE 3239180288,3239181311,CZ 3239181312,3239181567,AT @@ -50039,12 +50333,12 @@ 3239509504,3239509759,CH 3239509760,3239510015,DE 3239510016,3239510271,UA -3239510272,3239521023,DE +3239510272,3239514111,DE +3239518208,3239521023,DE 3239521024,3239521279,AP 3239521280,3239522303,DE 3239522304,3239522559,PL 3239522560,3239522815,SI -3239522816,3239523071,LT 3239523072,3239523327,PL 3239523328,3239523583,BG 3239523584,3239523839,UA @@ -50176,7 +50470,9 @@ 3239691008,3239691263,FR 3239691264,3239691519,IT 3239691520,3239691775,FR -3239691776,3239692031,EU +3239691776,3239691821,EU +3239691822,3239691822,GB +3239691823,3239692031,EU 3239692032,3239692287,AT 3239692288,3239697407,DE 3239697408,3239697663,HR @@ -50204,7 +50500,6 @@ 3239711232,3239711487,BY 3239711488,3239711743,RU 3239711744,3239711999,UA -3239712000,3239712255,PL 3239712256,3239712511,DE 3239712512,3239712767,GB 3239712768,3239713023,DE @@ -50295,7 +50590,6 @@ 3239828736,3239828991,DE 3239828992,3239830015,RU 3239830016,3239830527,CH -3239830528,3239831039,SE 3239831040,3239831551,RU 3239832064,3239832575,UA 3239832576,3239834111,RU @@ -50337,7 +50631,6 @@ 3239874816,3239875071,DE 3239875072,3239875327,SI 3239875328,3239875583,DK -3239875584,3239875839,PL 3239875840,3239876095,DK 3239876096,3239876351,DE 3239876352,3239876607,RO @@ -50413,10 +50706,7 @@ 3239916800,3239917055,KZ 3239917056,3239917311,DE 3239917312,3239917567,BG -3239917568,3239922687,DE -3239922688,3239922943,FR -3239922944,3239935999,DE -3239936000,3239936255,UA +3239917568,3239935999,DE 3239936256,3239936511,FR 3239936512,3239938815,DE 3239938816,3239939071,NL @@ -50460,10 +50750,8 @@ 3240005632,3240009727,DE 3240009728,3240009983,PL 3240009984,3240010239,IL -3240010240,3240010495,GB 3240010496,3240010751,AT 3240010752,3240011007,HU -3240011008,3240011263,DE 3240011520,3240011775,CH 3240011776,3240026111,DE 3240026112,3240027135,FR @@ -50551,7 +50839,6 @@ 3240180736,3240181247,NL 3240181248,3240181759,RU 3240181760,3240182271,UA -3240182272,3240182783,RO 3240182784,3240183295,RU 3240183296,3240183807,NL 3240183808,3240184319,GB @@ -50572,7 +50859,6 @@ 3240192512,3240193023,RO 3240193024,3240193535,GB 3240193536,3240194047,PL -3240194048,3240194559,GB 3240194560,3240195071,AT 3240195072,3240195583,GB 3240195584,3240196095,RO @@ -50584,7 +50870,7 @@ 3240199168,3240199679,RU 3240199680,3240200191,NL 3240200192,3240200703,RO -3240200704,3240201215,SE +3240200704,3240201215,GB 3240201216,3240201727,RO 3240201728,3240202239,CH 3240202240,3240202751,RU @@ -50946,7 +51232,7 @@ 3240739072,3240739327,CH 3240739328,3240739583,FR 3240739584,3240739839,LV -3240739840,3240740095,US +3240739840,3240740095,DE 3240740096,3240740351,LT 3240740352,3240740607,IT 3240740608,3240741119,DE @@ -51108,7 +51394,6 @@ 3241036800,3241037055,GB 3241037056,3241037311,RU 3241037312,3241037567,BE -3241037568,3241037823,DK 3241037824,3241038079,NL 3241038080,3241038335,UA 3241038336,3241038591,DE @@ -51160,7 +51445,6 @@ 3241101312,3241101567,RO 3241101568,3241101823,DE 3241101824,3241102079,BG -3241102080,3241102335,RO 3241102336,3241102591,ES 3241102592,3241102847,DE 3241102848,3241103359,NL @@ -51220,14 +51504,14 @@ 3241146368,3241146623,IL 3241146624,3241146879,RO 3241146880,3241148415,CH -3241148416,3241476095,FR +3241148416,3241373951,FR +3241373952,3241374207,RE +3241374208,3241476095,FR 3241476096,3241481727,BE 3241481728,3241481983,PT 3241481984,3241482239,DE 3241482240,3241484799,SE -3241484800,3241485311,BE -3241485312,3241485567,GB -3241485568,3241496575,BE +3241484800,3241496575,BE 3241496576,3241496831,AT 3241496832,3241497343,BE 3241497344,3241497599,UA @@ -51240,7 +51524,7 @@ 3241499904,3241500159,DE 3241500160,3241500671,GB 3241500672,3241501439,BE -3241501440,3241501951,GB +3241501440,3241501951,EU 3241501952,3241502463,BE 3241503232,3241503487,RS 3241503488,3241508095,BE @@ -51272,8 +51556,7 @@ 3241857536,3241859071,AT 3241859072,3241859651,US 3241859652,3241859652,MY -3241859653,3241860863,US -3241860864,3241861119,FR +3241859653,3241861119,US 3241861120,3241863167,BE 3241863168,3241863423,PL 3241863424,3241863679,FR @@ -51307,16 +51590,12 @@ 3242459136,3242467327,BG 3242467328,3242475519,HU 3242475520,3242483711,LV -3242483712,3242493029,BG -3242493030,3242493030,BG -3242493031,3242524671,BG +3242483712,3242524671,BG 3242524672,3242590207,NO 3242590208,3242655743,IT 3242655744,3242721279,NO 3242721280,3242852351,CH -3242852352,3242911231,BE -3242911232,3242911743,NL -3242911744,3242917887,BE +3242852352,3242917887,BE 3242917888,3242950655,NO 3242950656,3242983423,BE 3242983424,3243048959,IT @@ -51380,7 +51659,6 @@ 3243532032,3243532287,DE 3243532288,3243536383,CZ 3243536384,3243536639,AT -3243536640,3243536895,CH 3243536896,3243537151,CZ 3243537152,3243537407,RO 3243537408,3243544063,CZ @@ -51416,11 +51694,8 @@ 3243982848,3243991039,HU 3243991040,3243999231,BE 3243999232,3244031999,NO -3244032000,3244034047,GR -3244034048,3244035071,CY -3244035072,3244097535,GR +3244032000,3244097535,GR 3244097536,3244098559,DE -3244098560,3244099583,GB 3244099584,3244100607,FR 3244100608,3244102655,UA 3244102656,3244103679,CH @@ -51480,17 +51755,11 @@ 3244343808,3244344063,EU 3244344064,3244452863,DE 3244452864,3244453119,EU -3244453120,3244545279,DE +3244453120,3244501503,DE +3244501504,3244501759,GB +3244501760,3244545279,DE 3244545280,3244545535,EU -3244545536,3244592127,DE -3244592128,3244592639,CH -3244592640,3244624895,DE -3244624896,3244625919,CH -3244625920,3244794367,DE -3244794368,3244794879,CA -3244794880,3244813311,DE -3244813312,3244813823,CA -3244813824,3244818431,DE +3244545536,3244818431,DE 3244818432,3244818687,ES 3244818688,3244818943,AT 3244818944,3244819199,PL @@ -51503,7 +51772,7 @@ 3244820736,3244820991,DE 3244820992,3244821247,SI 3244821248,3244821503,RU -3244821504,3244821759,PA +3244821504,3244821759,UA 3244821760,3244822015,TR 3244822016,3244822271,RU 3244822272,3244822527,GB @@ -51576,7 +51845,7 @@ 3244840960,3244841215,PL 3244841216,3244841471,GB 3244841472,3244841727,DE -3244841728,3244842495,GB +3244841728,3244842239,GB 3244842496,3244842751,RU 3244842752,3244843007,DE 3244843008,3244843263,UA @@ -51681,19 +51950,17 @@ 3244870912,3244871167,FR 3244871168,3244871423,LT 3244871424,3244871679,RU -3244871680,3244872447,UA -3244872448,3244872703,CH +3244871680,3244872703,UA 3244872704,3244872959,IR 3244872960,3244873215,UA 3244873216,3244873471,SE 3244873472,3244873727,EU 3244873728,3244873983,DE -3244873984,3244874239,FI +3244873984,3244874239,SE 3244874240,3244874495,ES 3244874496,3244874751,FR 3244874752,3244875007,DE 3244875008,3244875263,PL -3244875264,3244875519,LI 3244875520,3244875775,IT 3244875776,3244876799,RU 3244876800,3244877055,GB @@ -51964,7 +52231,8 @@ 3244952576,3244953599,GB 3244953600,3244954623,DE 3244954624,3244955647,PL -3244955648,3244957695,UA +3244955648,3244956671,UA +3244956672,3244957695,LT 3244957696,3244958719,EU 3244958720,3244959743,FR 3244959744,3244960767,RU @@ -52182,7 +52450,6 @@ 3245146112,3245147135,FR 3245147136,3245148159,DE 3245148160,3245149183,UA -3245149184,3245150207,RU 3245150208,3245154303,IS 3245154304,3245158399,IT 3245158400,3245158911,CH @@ -52197,7 +52464,7 @@ 3245162496,3245163007,DE 3245163008,3245163519,KE 3245163520,3245164543,RU -3245164544,3245165055,DE +3245164544,3245165055,BE 3245165056,3245165567,AT 3245165568,3245166079,RU 3245166080,3245166591,TZ @@ -52217,7 +52484,6 @@ 3245170176,3245170431,GB 3245170432,3245170687,CH 3245170688,3245171711,DE -3245171712,3245172735,UA 3245172736,3245173759,IT 3245173760,3245174783,UA 3245174784,3245175039,IT @@ -52263,7 +52529,6 @@ 3245201920,3245202175,SA 3245202432,3245202687,GB 3245202688,3245203455,DE -3245203456,3245203711,FR 3245203712,3245204223,PL 3245204224,3245204479,SI 3245204480,3245204735,BE @@ -52293,7 +52558,9 @@ 3245215744,3245217791,UA 3245217792,3245218815,DE 3245218816,3245219839,AT -3245219840,3245221887,FI +3245219840,3245220863,FI +3245220864,3245221119,SE +3245221120,3245221887,FI 3245221888,3245223935,DE 3245223936,3245225471,NL 3245225472,3245225727,EU @@ -52331,11 +52598,9 @@ 3245243392,3245244415,UA 3245244416,3245244671,ES 3245244672,3245244927,AT -3245244928,3245245183,BE -3245245184,3245245439,CH +3245244928,3245245183,US 3245245440,3245245695,BG 3245245696,3245245951,DE -3245245952,3245246207,UA 3245246208,3245246463,GB 3245246464,3245246719,AT 3245246720,3245246975,PL @@ -52399,7 +52664,6 @@ 3245283328,3245283839,GB 3245283840,3245284351,PL 3245284352,3245284863,GB -3245284864,3245285375,PL 3245285376,3245285631,NL 3245285632,3245285887,GB 3245285888,3245286143,DE @@ -52445,13 +52709,12 @@ 3245307392,3245307903,FI 3245307904,3245308415,RO 3245308416,3245308927,ES -3245308928,3245309439,SE +3245309184,3245309439,SE 3245309440,3245309951,UA 3245309952,3245311999,CZ -3245312000,3245314047,GB +3245312000,3245314047,DE 3245314048,3245315071,PL 3245315072,3245316095,IT -3245316096,3245317119,SE 3245317120,3245318143,UA 3245318144,3245318399,IT 3245318400,3245318655,RO @@ -52488,7 +52751,7 @@ 3245336832,3245337087,DE 3245337088,3245337343,GB 3245337344,3245337599,BE -3245337600,3245337855,PL +3245337600,3245337855,LT 3245337856,3245338367,DE 3245338368,3245339647,UA 3245339648,3245340671,LV @@ -52497,17 +52760,19 @@ 3245342720,3245867007,GB 3245867008,3245916159,IE 3245916160,3245917183,GB -3245917184,3245932543,IE +3245917184,3245931263,IE +3245931264,3245931519,GB +3245931520,3245932543,IE 3245932544,3245998079,BE 3245998080,3246129151,GB 3246129152,3246260223,RU 3246260224,3246325759,PT -3246325760,3246326015,EU -3246326016,3246326527,ES -3246326528,3246351615,EU +3246325760,3246351615,EU 3246351616,3246352639,ES -3246352640,3246378495,EU -3246378496,3246379007,ES +3246352640,3246376959,EU +3246376960,3246377215,ES +3246377216,3246378751,EU +3246378752,3246379007,ES 3246379008,3246381055,GB 3246381056,3246381567,EU 3246381568,3246381823,ES @@ -52519,7 +52784,9 @@ 3246614528,3246744543,GB 3246744544,3246744559,NG 3246744560,3246784511,GB -3246784512,3246828066,CH +3246784512,3246825983,CH +3246825984,3246826239,US +3246826240,3246828066,CH 3246828067,3246828067,EU 3246828068,3246915583,CH 3246915584,3247046655,PT @@ -52544,7 +52811,6 @@ 3247065088,3247065343,US 3247065344,3247065599,CH 3247065600,3247065855,SE -3247065856,3247066111,GB 3247066112,3247066367,DK 3247066368,3247066623,LV 3247066624,3247066879,CZ @@ -52602,7 +52868,6 @@ 3247087616,3247088639,IT 3247088640,3247089663,DE 3247089664,3247090687,RO -3247090688,3247091711,LV 3247091712,3247092735,RU 3247092736,3247093759,DE 3247093760,3247094783,UA @@ -52622,31 +52887,20 @@ 3247111168,3247112191,DE 3247112192,3247177727,FR 3247177728,3247243263,TR -3247243264,3247247432,DE -3247247433,3247247440,NL -3247247441,3247252863,DE -3247252864,3247252871,NL -3247252872,3247255295,DE -3247255296,3247255551,NL -3247255552,3247265791,DE -3247265792,3247266047,NL -3247266048,3247277055,DE -3247277056,3247277311,NL -3247277312,3247278479,DE -3247278480,3247278487,NL -3247278488,3247278535,DE -3247278536,3247278543,NL -3247278544,3247281303,DE -3247281304,3247281311,NL -3247281312,3247282679,DE -3247282680,3247282687,NL -3247282688,3247286783,DE -3247286784,3247287039,NL -3247287040,3247299363,DE +3247243264,3247244287,DE +3247244288,3247253503,NL +3247253504,3247254527,DE +3247254528,3247267839,NL +3247267840,3247268351,DE +3247268352,3247279871,NL +3247279872,3247280127,DE +3247280128,3247290367,NL +3247290368,3247291391,DE +3247291392,3247292415,NL +3247292416,3247299363,DE 3247299364,3247299364,EU -3247299365,3247306143,DE -3247306144,3247306151,NL -3247306152,3247308799,DE +3247299365,3247300607,DE +3247300608,3247308799,NL 3247308800,3247309055,BG 3247309056,3247313663,FI 3247313664,3247313919,AM @@ -52706,7 +52960,6 @@ 3247365120,3247365375,GB 3247365376,3247365631,UA 3247365632,3247365887,SA -3247365888,3247366143,DE 3247366144,3247371007,FI 3247371008,3247371263,PL 3247371264,3247371519,SE @@ -52765,15 +53018,10 @@ 3247794439,3247794439,EU 3247794440,3247800319,FR 3247800320,3247816703,DK -3247816704,3247817727,EU -3247817728,3247820799,BE -3247820800,3247822335,CH -3247822336,3247822847,DE -3247822848,3247823359,EU -3247823360,3247823871,AT -3247823872,3247825407,EU -3247825408,3247825919,CH -3247825920,3247826943,BE +3247816704,3247818751,EU +3247818752,3247820799,BE +3247820800,3247821823,CH +3247821824,3247826943,EU 3247826944,3247828991,CH 3247828992,3247833087,BE 3247833088,3247833599,RU @@ -52880,16 +53128,12 @@ 3248095232,3248160767,AT 3248160768,3248226303,DE 3248226304,3248357375,NO -3248357376,3248418687,DE -3248418688,3248418799,US -3248418800,3248418807,DE -3248418808,3248418815,US -3248418816,3248488447,DE +3248357376,3248488447,DE 3248488448,3248488703,FR 3248488704,3248491519,NO 3248491520,3248492031,RU 3248492032,3248496895,NO -3248496896,3248497151,US +3248496896,3248497151,IL 3248497152,3248498431,NO 3248498432,3248498687,DE 3248498688,3248513279,NO @@ -52908,7 +53152,8 @@ 3248541184,3248545791,NO 3248545792,3248546815,UA 3248546816,3248547839,RU -3248547840,3248553727,NO +3248547840,3248553215,NO +3248553472,3248553727,NO 3248553728,3248553983,RU 3248553984,3248554239,RO 3248554240,3248557055,NO @@ -52943,7 +53188,7 @@ 3248785408,3248785663,RO 3248785664,3248786943,SI 3248786944,3248787199,PL -3248787200,3248787455,GB +3248787200,3248787455,FR 3248787456,3248787711,NL 3248787712,3248787967,CH 3248787968,3248788223,RU @@ -52951,7 +53196,6 @@ 3248788480,3248788735,FR 3248788736,3248788991,UA 3248788992,3248789503,FR -3248789504,3248789759,RO 3248789760,3248790015,FR 3248790016,3248790271,DE 3248790272,3248790527,DK @@ -52959,9 +53203,15 @@ 3248790784,3248791039,PL 3248791040,3248791295,BE 3248791296,3248791551,DE -3248791552,3248792319,EU +3248791552,3248792063,GB +3248792064,3248792319,EU 3248792320,3248792575,GB -3248792576,3248799743,EU +3248792576,3248796607,EU +3248796608,3248796863,GB +3248796864,3248798975,EU +3248798976,3248799231,GB +3248799232,3248799735,EU +3248799736,3248799743,GB 3248799744,3248800255,NL 3248800256,3248800767,RU 3248800768,3248801279,FR @@ -52970,7 +53220,7 @@ 3248802304,3248802815,FR 3248802816,3248803327,RU 3248803328,3248804351,GB -3248804352,3248804863,EU +3248804352,3248804863,LV 3248804864,3248805375,DE 3248805376,3248805887,RU 3248805888,3248806399,NL @@ -53074,7 +53324,8 @@ 3249119744,3249120255,IT 3249120256,3249120767,SE 3249120768,3249121279,LV -3249121280,3249121791,GB +3249121280,3249121535,DE +3249121536,3249121791,GB 3249122304,3249124351,RU 3249124352,3249124863,DE 3249124864,3249125375,CZ @@ -53116,7 +53367,9 @@ 3249313536,3249369855,NL 3249369856,3249370111,EU 3249370112,3249405951,NL -3249405952,3249537023,DE +3249405952,3249521279,DE +3249521280,3249521343,UA +3249521344,3249537023,DE 3249537024,3249537279,PT 3249537280,3249537791,NL 3249537792,3249538047,GB @@ -53227,46 +53480,33 @@ 3249868800,3249869823,NL 3249869824,3249871359,SE 3249871360,3249871615,US -3249871616,3249910271,SE -3249910272,3249910783,NL -3249910784,3249912319,GB -3249912320,3249926655,SE -3249926656,3249926911,AU -3249926912,3249931263,SE -3249931264,3249931775,NL -3249931776,3249932287,SE +3249871616,3249910783,SE +3249910784,3249911807,GB +3249911808,3249932287,SE 3249932288,3249934335,US -3249934336,3249935871,SE -3249935872,3249936383,DE -3249936384,3249968127,SE +3249934336,3249934847,IT +3249934848,3249967103,SE +3249967104,3249967615,AT +3249967616,3249968127,SE 3249968128,3249969151,FR -3249969152,3250012159,SE +3249969152,3249972479,SE +3249972480,3249972735,DE +3249972736,3250012159,SE 3250012160,3250013183,DE -3250013184,3250014207,SE -3250014208,3250014719,DE -3250014720,3250015231,SE -3250015232,3250015743,FI -3250015744,3250015999,SE -3250016000,3250016127,DK -3250016128,3250016767,SE -3250016768,3250017279,NL -3250017280,3250017791,SE -3250017792,3250018303,DE -3250018304,3250018815,FR -3250018816,3250020863,SE +3250013184,3250015999,SE +3250016000,3250016005,DK +3250016006,3250016007,SE +3250016008,3250016255,DK +3250016256,3250020863,SE 3250020864,3250021375,IT 3250021376,3250022399,FR -3250022400,3250022911,SE -3250022912,3250023423,FR +3250022400,3250023423,SE 3250023424,3250024447,DE 3250024448,3250026495,SE 3250026496,3250027519,FR 3250027520,3250032639,SE 3250032640,3250032895,AP -3250032896,3250039295,SE -3250039296,3250039807,DK -3250039808,3250040319,GB -3250040320,3250061311,SE +3250032896,3250061311,SE 3250061312,3250192383,FI 3250192384,3250192639,AT 3250192640,3250192895,RU @@ -53297,7 +53537,7 @@ 3250245632,3250245887,TR 3250245888,3250246143,AT 3250246144,3250246399,GB -3250246400,3250257663,AT +3250246656,3250257663,AT 3250257664,3250257919,PL 3250257920,3250258175,EU 3250258176,3250271231,AT @@ -53360,7 +53600,6 @@ 3250387200,3250387455,FR 3250387456,3250387711,DE 3250387712,3250387967,FR -3250387968,3250388223,JO 3250388224,3250388479,PL 3250388480,3250388735,UA 3250388736,3250388991,FR @@ -53377,7 +53616,6 @@ 3250410496,3250411007,AT 3250411008,3250411519,LT 3250411520,3250412031,RU -3250412032,3250412543,FR 3250412544,3250413055,DK 3250413056,3250413567,DE 3250413568,3250414079,UA @@ -53637,7 +53875,8 @@ 3251157248,3251157503,BE 3251157504,3251158015,PL 3251158016,3251158271,TR -3251158272,3251158783,UA +3251158272,3251158527,RU +3251158528,3251158783,UA 3251158784,3251159295,GB 3251159296,3251159551,DE 3251159808,3251160063,DE @@ -53736,7 +53975,8 @@ 3251197952,3251198975,RU 3251198976,3251199999,DE 3251200000,3251200511,SE -3251200512,3251201279,UA +3251200512,3251200767,UA +3251201024,3251201279,UA 3251201280,3251201535,SI 3251201536,3251201791,AT 3251201792,3251202047,FR @@ -53794,7 +54034,6 @@ 3251215616,3251215743,CY 3251215744,3251215871,GB 3251215872,3251216127,RO -3251216128,3251216255,FI 3251216256,3251216383,RU 3251216384,3251216639,GB 3251216640,3251216895,RO @@ -53817,7 +54056,7 @@ 3251226624,3251227135,GB 3251227136,3251227647,DE 3251227648,3251228159,GB -3251228160,3251229695,UA +3251228160,3251228671,UA 3251229696,3251230719,SI 3251230720,3251231743,UA 3251231744,3251232767,NO @@ -53845,8 +54084,11 @@ 3251251200,3251252735,EU 3251252736,3251256831,CH 3251256832,3251257343,GB -3251257344,3251259903,BE -3251259904,3251261439,FR +3251257344,3251257855,BE +3251257856,3251258111,NL +3251258112,3251259903,BE +3251260160,3251260671,EU +3251260672,3251261439,FR 3251261440,3251264255,CH 3251264256,3251265535,FR 3251265536,3251267839,NL @@ -53896,8 +54138,14 @@ 3251319808,3251320831,HU 3251320832,3251321855,PL 3251321856,3251322879,RU -3251322880,3251331327,GB -3251331328,3251331583,FR +3251322880,3251331071,GB +3251331072,3251331262,FR +3251331263,3251331263,GB +3251331264,3251331319,FR +3251331320,3251331320,GB +3251331321,3251331321,FR +3251331322,3251331323,GB +3251331324,3251331583,FR 3251331584,3251332095,PL 3251332096,3251333119,RU 3251333120,3251333631,CH @@ -53940,13 +54188,9 @@ 3251806208,3251810047,BE 3251810048,3251812607,FI 3251812608,3251814143,BE -3251814144,3251814655,FI -3251814656,3251815167,BE -3251815168,3251815679,LU +3251814144,3251815679,FI 3251815680,3251817471,BE -3251817472,3251817983,FI -3251817984,3251818495,BE -3251818496,3251896319,FI +3251817472,3251896319,FI 3251896320,3252166655,NO 3252166656,3252167679,SE 3252167680,3252176127,NL @@ -53954,13 +54198,14 @@ 3252177920,3252178943,HR 3252178944,3252179455,SE 3252179456,3252189183,NL -3252189184,3252189695,NO -3252189696,3252190719,SE +3252189184,3252190719,SE 3252190720,3252190975,NO 3252190976,3252191231,SE 3252191232,3252196351,HR 3252196352,3252197375,SE -3252197376,3252205567,HR +3252197376,3252202495,HR +3252202496,3252203007,SE +3252203008,3252205567,HR 3252205568,3252205823,SE 3252205824,3252206079,NO 3252206080,3252207615,SE @@ -53968,8 +54213,8 @@ 3252211712,3252213759,SE 3252213760,3252214527,NO 3252214528,3252223999,SE -3252224000,3252232191,NL -3252232192,3252233215,SE +3252224000,3252232320,NL +3252232321,3252233215,SE 3252233216,3252234239,NO 3252234240,3252236287,SE 3252236288,3252247551,NO @@ -53977,13 +54222,11 @@ 3252248576,3252256767,NL 3252256768,3252273151,NO 3252273152,3252276223,SE -3252276224,3252277759,NO -3252277760,3252278271,SE -3252278272,3252279295,HR -3252279296,3252279807,NO -3252279808,3252280319,SE -3252280320,3252286463,HR -3252286464,3252289535,SE +3252276224,3252277247,NO +3252277248,3252278271,SE +3252278272,3252286463,HR +3252286464,3252287487,SE +3252287488,3252289535,LT 3252289536,3252289791,BG 3252289792,3252291327,GR 3252291328,3252291583,SK @@ -53996,7 +54239,6 @@ 3252314624,3252314879,HU 3252314880,3252315135,GB 3252315136,3252316415,CH -3252316416,3252316671,FR 3252316672,3252318463,GR 3252318464,3252318719,TR 3252318720,3252318975,GP @@ -54010,7 +54252,7 @@ 3252322304,3252323327,NO 3252323328,3252324351,PL 3252324352,3252326399,RU -3252326400,3252327423,UA +3252326400,3252327423,DE 3252327424,3252329471,PL 3252329472,3252330495,UA 3252330496,3252334591,GB @@ -54036,7 +54278,9 @@ 3252346368,3252346623,GB 3252346624,3252355071,GR 3252355072,3252355327,GB -3252355328,3252358911,LT +3252355328,3252356351,LT +3252356352,3252356863,EU +3252356864,3252358911,LT 3252358912,3252359167,DE 3252359168,3252362239,DK 3252362240,3252362495,PL @@ -54074,28 +54318,28 @@ 3252387328,3252387583,PL 3252387584,3252387839,RU 3252387840,3252404223,LT -3252404224,3252406271,NO -3252406272,3252410758,LT -3252410759,3252410759,SL -3252410760,3252411903,LT -3252411904,3252411967,GN -3252411968,3252415487,LT +3252404224,3252405759,NO +3252405760,3252409263,LT +3252409264,3252409271,SS +3252409272,3252409663,LT +3252409664,3252409679,CD +3252409680,3252409791,LT +3252409792,3252409823,BI +3252409824,3252415487,LT 3252415488,3252415743,US 3252415744,3252421631,LT 3252421632,3252423679,NO -3252423680,3252436991,LT -3252436992,3252437503,NG -3252437504,3252449791,LT +3252423680,3252424799,LT +3252424800,3252424815,SS +3252424816,3252448511,LT +3252448512,3252448767,NO +3252448768,3252449791,LT 3252449792,3252450047,DK 3252450048,3252452543,LT 3252452544,3252452551,SS 3252452552,3252455679,LT 3252455680,3252455807,BI -3252455808,3252456447,LT -3252456448,3252456959,BJ -3252456960,3252461055,LT -3252461056,3252461567,NO -3252461568,3252469759,LT +3252455808,3252469759,LT 3252469760,3252473855,NL 3252473856,3252486143,LT 3252486144,3252490239,BE @@ -54125,7 +54369,6 @@ 3252516864,3252517119,FR 3252517120,3252517375,EU 3252517376,3252517631,PL -3252517632,3252517887,BE 3252517888,3252518143,DK 3252518144,3252518399,NL 3252518400,3252518655,PL @@ -54192,8 +54435,8 @@ 3252643840,3252682751,CH 3252682752,3252813823,HU 3252813824,3252830207,RO -3252830208,3252830463,MD -3252830464,3252862975,RO +3252830208,3252830719,MD +3252830720,3252862975,RO 3252862976,3252879359,HU 3252879360,3252895743,EG 3252895744,3252903935,IT @@ -54203,7 +54446,6 @@ 3252904960,3252905215,PL 3252905216,3252905471,CH 3252905472,3252905727,LT -3252905728,3252905983,BE 3252905984,3252906239,IT 3252906240,3252906495,PL 3252906496,3252906751,GB @@ -54213,7 +54455,6 @@ 3252907776,3252908031,GB 3252908032,3252908287,PL 3252908288,3252908543,AT -3252908544,3252908799,MT 3252908800,3252909055,UA 3252909056,3252909311,PL 3252909312,3252909567,DE @@ -54249,7 +54490,7 @@ 3252937728,3252938239,FR 3252938240,3252938751,UA 3252938752,3252939263,RU -3252939264,3252939775,EU +3252939264,3252939775,DE 3252939776,3252940287,RO 3252940288,3252940799,PT 3252940800,3252941311,RU @@ -54288,34 +54529,23 @@ 3253005056,3253010431,AT 3253010432,3253075967,FI 3253075968,3253207039,RO -3253207040,3253265407,RU -3253265408,3253265919,AM -3253265920,3253270527,RU +3253207040,3253270527,RU 3253270528,3253271551,BY 3253271552,3253338111,RU 3253338112,3253401343,SE 3253401344,3253401599,EU 3253401600,3253405563,SE 3253405564,3253405564,EU -3253405565,3253409279,SE -3253409280,3253409791,AT -3253409792,3253430783,SE -3253430784,3253431039,BE -3253431040,3253441023,SE +3253405565,3253441023,SE 3253441024,3253441535,AT 3253441536,3253454335,SE 3253454336,3253454591,EU -3253454592,3253454847,SE -3253454848,3253455359,NL -3253455360,3253463039,SE +3253454592,3253463039,SE 3253463040,3253464063,GB -3253464064,3253464575,SE -3253464576,3253465087,NL -3253465088,3253469183,SE +3253464064,3253469183,SE 3253469184,3253471231,AO 3253471232,3253534719,PT 3253534720,3253600255,GB -3253600256,3253601279,RO 3253601280,3253602303,FI 3253602304,3253603327,DE 3253603328,3253605375,PL @@ -54425,7 +54655,7 @@ 3253709824,3253710335,RO 3253710336,3253710847,GB 3253710848,3253711359,DK -3253711360,3253712383,UA +3253711872,3253712383,UA 3253712384,3253712895,MD 3253712896,3253713151,PL 3253713152,3253713407,DE @@ -54434,7 +54664,6 @@ 3253714432,3253714943,RO 3253714944,3253715455,FR 3253715456,3253715967,RO -3253715968,3253716479,DE 3253716480,3253716991,FR 3253716992,3253717503,CH 3253717504,3253718015,NL @@ -54457,14 +54686,23 @@ 3253726720,3253727231,UA 3253727232,3253727743,FR 3253727744,3253728255,RU -3253728256,3253728767,PL 3253728768,3253729279,RO 3253729280,3253729791,AT 3253729792,3253730303,UA 3253730304,3253730815,RO 3253730816,3253731327,UA 3253731328,3253731583,DE -3253731584,3253761407,GB +3253731584,3253737823,GB +3253737824,3253737831,PL +3253737832,3253737839,AT +3253737840,3253737847,GB +3253737848,3253737855,HU +3253737856,3253738559,GB +3253738560,3253738567,CZ +3253738568,3253738575,BE +3253738576,3253760511,GB +3253760512,3253760767,FR +3253760768,3253761407,GB 3253761408,3253761471,ES 3253761472,3253762687,GB 3253762688,3253762751,IT @@ -54519,7 +54757,7 @@ 3253901824,3253902079,SI 3253902080,3253902335,DK 3253902336,3253904383,UA -3253904384,3253904895,ES +3253904384,3253904895,GB 3253904896,3253905151,UA 3253905152,3253905407,RU 3253905408,3253905919,PL @@ -54545,7 +54783,7 @@ 3253917184,3253917439,CY 3253917440,3253917695,PL 3253917696,3253918207,RU -3253918208,3253918719,DE +3253918208,3253918719,CH 3253918720,3253919743,IL 3253919744,3253923839,GB 3253923840,3253927935,GR @@ -54580,17 +54818,16 @@ 3254067712,3254067967,CZ 3254067968,3254124543,BE 3254124544,3254255615,CH -3254255616,3254256127,RE +3254255616,3254255871,FR +3254255872,3254256127,RE 3254256128,3254256639,GP -3254256640,3254261247,FR -3254261248,3254261759,YT -3254261760,3254275327,FR -3254275328,3254275583,MQ -3254275584,3254277119,FR -3254277120,3254278143,YT -3254278144,3254485759,FR -3254485760,3254485763,CI -3254485764,3254489487,FR +3254256640,3254488431,FR +3254488432,3254488447,MG +3254488448,3254489407,FR +3254489408,3254489439,MR +3254489440,3254489447,FR +3254489448,3254489455,MR +3254489456,3254489487,FR 3254489488,3254489503,MR 3254489504,3254491903,FR 3254491904,3254492031,CM @@ -54604,40 +54841,32 @@ 3254493376,3254493410,GP 3254493411,3254494207,FR 3254494208,3254494527,GP -3254494528,3254495055,FR +3254494528,3254494975,FR +3254494976,3254494983,DJ +3254494984,3254495055,FR 3254495056,3254495063,DJ -3254495064,3254496767,FR -3254496768,3254497247,DZ -3254497248,3254508031,FR -3254508032,3254508543,GQ -3254508544,3254508799,FR +3254495064,3254508799,FR 3254508800,3254508831,MQ 3254508832,3254521855,FR -3254521856,3254522143,GB -3254522144,3254552319,FR -3254552320,3254552831,IR -3254552832,3254607871,FR -3254607872,3254608895,RE -3254608896,3254609151,FR -3254609152,3254610687,RE -3254610688,3254610943,FR -3254610944,3254611455,RE +3254521856,3254522111,GB +3254522112,3254607871,FR +3254607872,3254610687,RE +3254610688,3254611199,FR +3254611200,3254611455,RE 3254611456,3254611456,YT 3254611457,3254611711,FR 3254611712,3254611712,YT -3254611713,3254612223,FR -3254612224,3254612991,RE +3254611713,3254611967,FR +3254611968,3254612991,RE 3254612992,3254613247,FR -3254613248,3254613503,RE -3254613504,3254614527,FR +3254613248,3254613759,RE +3254613760,3254614527,FR 3254614528,3254615039,RE 3254615040,3254615551,FR 3254615552,3254615552,YT 3254615553,3254615807,FR 3254615808,3254615808,YT -3254615809,3254623743,FR -3254623744,3254624255,US -3254624256,3254648831,FR +3254615809,3254648831,FR 3254648832,3254648895,DK 3254648896,3254649087,GB 3254649088,3254649855,AL @@ -54677,7 +54906,6 @@ 3254710784,3254711295,RO 3254711808,3254712319,PL 3254712320,3254712831,RU -3254712832,3254713343,KZ 3254713344,3254713855,TR 3254713856,3254714367,NL 3254714368,3254779903,TR @@ -54706,7 +54934,7 @@ 3254788352,3254789119,ES 3254789120,3254789375,FR 3254789376,3254789631,BE -3254789632,3254790655,TK +3254789632,3254790655,EU 3254790656,3254790911,LU 3254790912,3254791423,BE 3254791424,3254791679,SK @@ -54839,7 +55067,6 @@ 3254841344,3254841599,PL 3254841600,3254841855,IE 3254841856,3254842111,LV -3254842112,3254842367,GB 3254842368,3254842623,PL 3254842624,3254842879,RU 3254842880,3254843135,SE @@ -54922,28 +55149,94 @@ 3254908928,3254909951,RU 3254909952,3254910719,PL 3254910720,3254910975,HR -3254910976,3255120639,FR +3254910976,3255072767,FR +3255072768,3255073023,BE +3255073024,3255120639,FR 3255120640,3255120895,DE 3255120896,3255123711,FR 3255123712,3255123967,DE -3255123968,3255129855,FR +3255123968,3255126527,FR +3255126528,3255127551,EU +3255127552,3255129855,FR 3255129856,3255130111,HR 3255130112,3255172351,FR 3255172352,3255172607,DE 3255172608,3255173119,FR 3255173120,3255173631,SH -3255173632,3255174143,EU -3255174144,3255174399,GB -3255174400,3255176191,EU +3255173632,3255173647,EU +3255173648,3255173711,GB +3255173712,3255173759,EU +3255173760,3255173823,GB +3255173824,3255173839,EU +3255173840,3255174151,GB +3255174152,3255174159,EU +3255174160,3255174167,GB +3255174168,3255174199,EU +3255174200,3255174207,GB +3255174208,3255174215,EU +3255174216,3255174247,GB +3255174248,3255174271,EU +3255174272,3255174279,GB +3255174280,3255174311,EU +3255174312,3255174319,GB +3255174320,3255174327,EU +3255174328,3255174335,GB +3255174336,3255174375,EU +3255174376,3255174383,GB +3255174384,3255174399,EU +3255174400,3255175167,GB +3255175168,3255175199,EU +3255175200,3255175231,GB +3255175232,3255175247,EU +3255175248,3255175263,GB +3255175264,3255175279,EU +3255175280,3255175295,GB +3255175296,3255175311,EU +3255175312,3255175327,GB +3255175328,3255175431,EU +3255175432,3255175447,GB +3255175448,3255175455,EU +3255175456,3255175503,GB +3255175504,3255175511,EU +3255175512,3255175535,GB +3255175536,3255175551,EU +3255175552,3255175559,GB +3255175560,3255175591,EU +3255175592,3255175607,GB +3255175608,3255175679,EU +3255175680,3255175935,GB +3255175936,3255176191,EU 3255176192,3255177215,GB -3255177216,3255189759,EU -3255189760,3255191807,GB -3255191808,3255195391,EU -3255195392,3255195903,GB -3255195904,3255196927,EU -3255196928,3255197439,GB -3255197440,3255197695,EU -3255197696,3255205887,GB +3255177216,3255177471,EU +3255177472,3255177855,GB +3255177856,3255177983,EU +3255177984,3255187199,GB +3255187200,3255187455,DE +3255187456,3255187711,GB +3255187712,3255188479,EU +3255188480,3255191807,GB +3255191808,3255192319,EU +3255192320,3255193863,GB +3255193864,3255193887,EU +3255193888,3255193959,GB +3255193960,3255193967,EU +3255193968,3255193975,GB +3255193976,3255193983,GI +3255193984,3255193999,GB +3255194000,3255194015,EU +3255194016,3255194039,GB +3255194040,3255194055,EU +3255194056,3255194063,GB +3255194064,3255194071,EU +3255194072,3255194431,GB +3255194432,3255194495,EU +3255194496,3255194559,GB +3255194560,3255194623,EU +3255194624,3255194703,GB +3255194704,3255194719,EU +3255194720,3255194815,GB +3255194816,3255194879,EU +3255194880,3255205887,GB 3255205888,3255214079,FR 3255214080,3255222271,CH 3255222272,3255223295,DE @@ -54981,11 +55274,11 @@ 3255237888,3255238143,ES 3255238144,3255238399,GB 3255238400,3255238655,QA -3255238656,3255274015,BE -3255274016,3255274047,US -3255274048,3255280018,BE +3255238656,3255280018,BE 3255280019,3255280019,EU -3255280020,3255304191,BE +3255280020,3255292311,BE +3255292312,3255292319,LU +3255292320,3255304191,BE 3255304192,3255304447,DE 3255304448,3255305215,LV 3255305216,3255305471,BG @@ -55099,7 +55392,6 @@ 3255412736,3255413247,DE 3255413248,3255413503,LV 3255413504,3255413759,UZ -3255413760,3255414271,GB 3255414272,3255414527,TR 3255414528,3255414783,LV 3255414784,3255415807,BE @@ -55107,7 +55399,6 @@ 3255416320,3255416831,DE 3255417856,3255418879,GB 3255418880,3255422975,DE -3255422976,3255423999,RO 3255424000,3255425023,LV 3255426048,3255426559,IT 3255426816,3255427071,PL @@ -55117,28 +55408,17 @@ 3255434466,3255434720,GB 3255434721,3255434721,EU 3255434722,3255436287,GB -3255436288,3255449599,EU -3255449600,3255450111,BE -3255450112,3255450623,EU -3255450624,3255451135,DE -3255451136,3255452671,FR -3255452672,3255468031,EU -3255468032,3255468543,GB -3255468544,3255470079,EU -3255470080,3255470591,AT -3255470592,3255474175,EU -3255474176,3255476735,GB -3255476736,3255483391,EU +3255436288,3255451647,EU +3255451648,3255452671,FR +3255452672,3255474175,EU +3255474176,3255476223,GB +3255476224,3255483391,EU 3255483392,3255484415,DE 3255484416,3255485439,EU 3255485440,3255486463,FR -3255486464,3255486975,EU -3255486976,3255487487,GB -3255487488,3255488511,EU +3255486464,3255488511,EU 3255488512,3255489535,AT -3255489536,3255490047,EU -3255490048,3255490559,DE -3255490560,3255492607,EU +3255489536,3255492607,EU 3255492608,3255496703,GB 3255496704,3255498751,EU 3255498752,3255500799,FR @@ -55171,7 +55451,7 @@ 3255566336,3255570431,GB 3255570432,3255574527,CH 3255574528,3255578623,CZ -3255578624,3255582719,IT +3255578624,3255582719,CY 3255582720,3255599103,UA 3255599104,3255615487,CH 3255615488,3255623679,DE @@ -55181,24 +55461,16 @@ 3255660544,3255666431,NL 3255666432,3255666687,DE 3255666688,3255697407,NL -3255697408,3255704575,SE -3255704576,3255705087,FR -3255705088,3255716351,SE -3255716352,3255716863,CH -3255716864,3255743231,SE +3255697408,3255743231,SE 3255743232,3255743487,IT 3255743488,3255743743,SE 3255743744,3255743999,US -3255744000,3255745535,SE -3255745536,3255746047,DK -3255746048,3255762431,SE -3255762432,3255762943,BE +3255744000,3255762943,SE 3255762944,3255791615,DE 3255791616,3255792639,UA 3255792640,3255793663,RU 3255793664,3255794943,PL -3255794944,3255795199,RU -3255795200,3255795711,UA +3255794944,3255795711,RU 3255795712,3255799039,DE 3255799040,3255799295,SE 3255799296,3255800575,DE @@ -55217,9 +55489,7 @@ 3256025088,3256057855,NO 3256057856,3256082431,DK 3256082432,3256090623,LV -3256090624,3256164863,IT -3256164864,3256165375,SE -3256165376,3256221695,IT +3256090624,3256221695,IT 3256221696,3256223743,SE 3256223744,3256225791,NL 3256225792,3256229887,SE @@ -55258,7 +55528,7 @@ 3256415232,3256415743,PL 3256415744,3256416255,UA 3256416256,3256416767,RS -3256416768,3256417279,GB +3256417024,3256417279,GB 3256417280,3256417791,NO 3256417792,3256418303,GB 3256418304,3256444415,DE @@ -55272,7 +55542,9 @@ 3256513792,3256514047,GB 3256514048,3256524287,NL 3256524288,3256524799,DE -3256524800,3256549375,NL +3256524800,3256528895,NL +3256530688,3256530943,DE +3256530944,3256549375,NL 3256549376,3256614911,TR 3256614912,3256615935,FI 3256615936,3256616959,UA @@ -55331,26 +55603,18 @@ 3256693760,3256694783,IT 3256694784,3256695807,DE 3256695808,3256696831,UA -3256696832,3256697087,BE -3256697088,3256697855,EU -3256697856,3256698367,IT +3256696832,3256698367,EU 3256698368,3256698623,NL 3256698624,3256698879,GB -3256698880,3256701439,EU -3256701440,3256701695,GB -3256701696,3256705023,EU +3256698880,3256699391,EU +3256699392,3256699647,GB +3256699648,3256705023,EU 3256705024,3256705279,IE 3256705280,3256705535,EU 3256705536,3256705791,BE -3256705792,3256706047,AT -3256706048,3256706559,GR -3256706560,3256709631,EU -3256709632,3256709887,AT -3256709888,3256710143,EU -3256710144,3256710655,AT -3256710656,3256711167,SE -3256711168,3256711423,DE -3256711424,3256713215,EU +3256705792,3256710655,EU +3256710656,3256710911,SE +3256710912,3256713215,EU 3256713216,3256727551,PL 3256727552,3256727807,DE 3256727808,3256728063,HU @@ -55482,7 +55746,7 @@ 3256991744,3257011199,GB 3257011200,3257011455,BG 3257011456,3257024511,GB -3257024512,3257032703,JP +3257024512,3257032703,AU 3257032704,3257058815,GB 3257058816,3257059071,PL 3257059072,3257092607,GB @@ -55598,9 +55862,7 @@ 3257564672,3257565183,RO 3257565184,3257573375,CY 3257573376,3257574015,CH -3257574016,3257574911,EU -3257574912,3257575423,BE -3257575424,3257576447,EU +3257574016,3257576447,EU 3257576448,3257577471,AT 3257577472,3257581567,DE 3257581568,3257585663,UA @@ -55615,45 +55877,28 @@ 3257588736,3257589759,NL 3257589760,3257663487,GB 3257663488,3257729023,UA -3257729024,3257731295,DE -3257731296,3257731327,NL -3257731328,3257745639,DE -3257745640,3257745647,NL -3257745648,3257750783,DE -3257750784,3257751039,NL -3257751040,3257751679,DE -3257751680,3257751687,NL -3257751688,3257762303,DE -3257762304,3257762559,NL -3257762560,3257769727,DE -3257769728,3257769983,NL -3257769984,3257778175,DE -3257778176,3257778431,NL -3257778432,3257781495,DE -3257781496,3257781503,NL -3257781504,3257790567,DE -3257790568,3257790575,NL -3257790576,3257791943,DE -3257791944,3257791951,NL -3257791952,3257793719,DE -3257793720,3257793727,NL -3257793728,3257794047,DE -3257794048,3257794303,NL -3257794304,3257794559,DE -3257794560,3257827327,GB -3257827328,3257827839,IE -3257827840,3257829375,GB +3257729024,3257730047,DE +3257730048,3257742335,NL +3257742336,3257743359,DE +3257743360,3257748479,NL +3257748480,3257749503,DE +3257749504,3257753087,NL +3257753088,3257753343,DE +3257753344,3257765887,NL +3257765888,3257767935,DE +3257767936,3257782271,NL +3257782272,3257784319,DE +3257784320,3257794559,NL +3257794560,3257829375,GB 3257829376,3257830399,IE 3257830400,3257835519,GB -3257835520,3257844223,IE -3257844224,3257844735,GB +3257835520,3257843711,IE +3257843712,3257844735,GB 3257844736,3257860095,IE 3257860096,3257925631,SE 3257925632,3257925887,AT 3257925888,3257926143,SE -3257926144,3257970431,AT -3257970432,3257970687,UA -3257970688,3257977855,AT +3257926144,3257977855,AT 3257977856,3257978111,GB 3257978112,3257978367,SE 3257978368,3257978623,BG @@ -55707,7 +55952,6 @@ 3258067968,3258068223,RO 3258068224,3258068479,CH 3258068736,3258068991,DE -3258068992,3258069247,NL 3258069248,3258069503,PL 3258069504,3258069759,RO 3258069760,3258070015,UA @@ -55733,7 +55977,6 @@ 3258076928,3258077183,UA 3258077184,3258077439,GB 3258077440,3258077695,UA -3258077696,3258077951,NL 3258077952,3258078207,PL 3258078208,3258078463,TR 3258078464,3258078719,UA @@ -55957,7 +56200,6 @@ 3258849280,3258859519,GB 3258859520,3258859775,BY 3258859776,3258902783,GB -3258902784,3258903039,RU 3258903040,3258903295,FR 3258903296,3258903551,GB 3258903552,3258903807,DE @@ -55967,26 +56209,20 @@ 3258943488,3258944511,BG 3258944512,3258946559,RU 3258946560,3258947583,CH -3258947584,3258948607,RO 3258948608,3258949631,RU 3258949632,3258972159,GR 3258972160,3258974207,NO 3258974208,3259039743,DE 3259039744,3259105279,PT 3259105280,3259170815,GB -3259170816,3259219967,RU -3259219968,3259220479,BY -3259220480,3259223295,RU -3259223296,3259223807,TM +3259170816,3259223807,RU 3259223808,3259224831,KZ -3259224832,3259225343,TJ +3259224832,3259225343,RU 3259225344,3259226111,AZ -3259226112,3259226623,UZ -3259226624,3259227135,AM -3259227136,3259236351,RU -3259236352,3259236863,SE -3259236864,3259237119,CH -3259237120,3259240447,SE +3259226112,3259227391,RU +3259227392,3259227647,KZ +3259227648,3259236351,RU +3259236352,3259240447,SE 3259240448,3259241471,CZ 3259241472,3259243007,SE 3259243008,3259243519,AT @@ -56001,9 +56237,7 @@ 3259250723,3259250723,EU 3259250724,3259252479,SE 3259252480,3259252735,EU -3259252736,3259265023,SE -3259265024,3259265535,DE -3259265536,3259281407,SE +3259252736,3259281407,SE 3259281408,3259282431,US 3259282432,3259301887,SE 3259301888,3259302143,DE @@ -56011,11 +56245,7 @@ 3259302400,3259303423,CH 3259303424,3259305983,SE 3259305984,3259310079,NL -3259310080,3259311103,EU -3259311104,3259311615,DE -3259311616,3259312639,EU -3259312640,3259313151,GB -3259313152,3259317247,EU +3259310080,3259317247,EU 3259317248,3259318271,CH 3259318272,3259334655,GB 3259334656,3259338751,DE @@ -56039,44 +56269,20 @@ 3259367424,3259432959,GB 3259432960,3259435263,SE 3259435264,3259435519,IT -3259435520,3259438591,SE -3259438592,3259439103,NO -3259439104,3259454719,SE +3259435520,3259454719,SE 3259454720,3259454975,EU 3259454976,3259458559,SE 3259458560,3259459583,CZ 3259459584,3259470847,SE 3259470848,3259471871,US -3259471872,3259484671,SE -3259484672,3259485183,ES +3259471872,3259485183,SE 3259485184,3259485695,AT 3259485696,3259491327,SE 3259491328,3259492351,CZ -3259492352,3259495935,SE -3259495936,3259496447,DK -3259496448,3259498495,SE -3259498496,3259521023,GB -3259521024,3259521535,NL -3259521536,3259541503,GB +3259492352,3259498495,SE +3259498496,3259541503,GB 3259541504,3259543551,NL -3259543552,3259545599,GB -3259545600,3259546111,LB -3259546112,3259581439,GB -3259581440,3259581951,ES -3259581952,3259587583,GB -3259587584,3259588095,ES -3259588096,3259588607,IT -3259588608,3259628031,GB -3259628032,3259628543,CH -3259628544,3259640831,GB -3259640832,3259641343,ES -3259641344,3259650047,GB -3259650048,3259650559,NL -3259650560,3259651071,GB -3259651072,3259652095,NL -3259652096,3259701759,GB -3259701760,3259702271,DE -3259702272,3259760639,GB +3259543552,3259760639,GB 3259760640,3259814399,DE 3259814400,3259814655,AT 3259814656,3259821823,DE @@ -56088,9 +56294,9 @@ 3259824128,3259891711,DE 3259891712,3259893503,BE 3259893504,3259893759,EU -3259893760,3259900863,BE -3259900864,3259900927,EU -3259900928,3259957247,BE +3259893760,3259900866,BE +3259900867,3259900867,EU +3259900868,3259957247,BE 3259957248,3259958271,DE 3259958272,3259959295,RU 3259959296,3259960319,UA @@ -56099,11 +56305,9 @@ 3259962368,3259963391,UA 3259963392,3259964415,PL 3259964416,3259965439,GB -3259965440,3259966463,RU -3259966464,3259967487,DE +3259965440,3259967487,RU 3259967488,3259968511,RS 3259968512,3259969535,RU -3259969536,3259970559,FR 3259970560,3259971583,CZ 3259971584,3259972607,IT 3259972608,3259973631,UA @@ -56234,7 +56438,11 @@ 3261333504,3261399039,FI 3261399040,3261472767,GB 3261472768,3261530111,RO -3261530112,3261539327,SE +3261530112,3261534207,SE +3261534208,3261534463,NL +3261534464,3261534719,SE +3261534720,3261534975,US +3261534976,3261539327,SE 3261539328,3261540351,SG 3261540352,3261540863,AT 3261540864,3261564927,SE @@ -56247,7 +56455,6 @@ 3261675520,3261675775,LV 3261675776,3261676031,IT 3261676032,3261676287,GB -3261676288,3261676543,IT 3261676800,3261677055,IT 3261677056,3261685759,GB 3261685760,3261687807,DE @@ -56325,7 +56532,7 @@ 3261823232,3261823487,NL 3261823488,3261823743,RO 3261823744,3261823999,BE -3261824000,3261824511,RU +3261824000,3261824255,RU 3261824512,3261824767,FR 3261824768,3261825023,PT 3261825024,3261857791,AT @@ -56428,11 +56635,56 @@ 3262119936,3262124031,AX 3262124032,3262128127,DE 3262128128,3262136319,GB -3262136320,3262139391,EU +3262136320,3262137599,EU +3262137600,3262137855,DE +3262137856,3262139391,EU 3262139392,3262140415,GB -3262140416,3262141439,EU +3262140416,3262140671,DE +3262140672,3262141183,EU +3262141184,3262141439,DE 3262141440,3262142463,ES -3262142464,3262152703,EU +3262142464,3262142719,DE +3262142720,3262143487,EU +3262143488,3262143743,GB +3262143744,3262143999,EU +3262144000,3262144047,DE +3262144048,3262145023,EU +3262145024,3262145279,DE +3262145280,3262145551,EU +3262145552,3262145567,DE +3262145568,3262145615,EU +3262145616,3262145631,DE +3262145632,3262145663,EU +3262145664,3262145791,DE +3262145792,3262146047,GB +3262146048,3262146815,DE +3262146816,3262147583,EU +3262147584,3262147839,DE +3262147840,3262148607,EU +3262148608,3262148863,DE +3262148864,3262148879,EU +3262148880,3262148919,DE +3262148920,3262148927,EU +3262148928,3262149119,DE +3262149120,3262149151,FR +3262149152,3262149159,DE +3262149160,3262149167,EU +3262149168,3262149375,FR +3262149376,3262149631,EU +3262149632,3262149887,DE +3262149888,3262150911,EU +3262150912,3262151047,DE +3262151048,3262151071,EU +3262151072,3262151103,DE +3262151104,3262151135,EU +3262151136,3262151151,DE +3262151152,3262151167,EU +3262151168,3262151423,DE +3262151424,3262151935,EU +3262151936,3262152191,DE +3262152192,3262152663,EU +3262152664,3262152671,DE +3262152672,3262152703,EU 3262152704,3262185471,AT 3262185472,3262200575,DE 3262200576,3262200831,EU @@ -56472,7 +56724,6 @@ 3262425088,3262425343,GR 3262425344,3262425599,RU 3262425600,3262426111,UA -3262426112,3262426623,DE 3262426624,3262427135,GB 3262427136,3262427647,FR 3262427648,3262428159,DK @@ -56493,7 +56744,6 @@ 3262435840,3262436351,CH 3262436352,3262436863,SE 3262436864,3262437375,GB -3262437376,3262437887,RO 3262437888,3262438399,FR 3262438400,3262438911,NL 3262438912,3262439423,DK @@ -56529,15 +56779,37 @@ 3262472736,3262472739,IT 3262472740,3262473476,DE 3262473477,3262473477,US -3262473478,3262473732,DE +3262473478,3262473596,DE +3262473597,3262473597,US +3262473598,3262473685,DE +3262473686,3262473686,US +3262473687,3262473730,DE +3262473731,3262473731,US +3262473732,3262473732,DE 3262473733,3262473733,US 3262473734,3262473752,DE 3262473753,3262473753,US -3262473754,3262474043,DE +3262473754,3262473777,DE +3262473778,3262473778,US +3262473779,3262473781,DE +3262473782,3262473782,US +3262473783,3262473855,DE +3262473856,3262473859,US +3262473860,3262474043,DE 3262474044,3262474044,GB 3262474045,3262474051,DE 3262474052,3262474052,SG -3262474053,3262474183,DE +3262474053,3262474060,DE +3262474061,3262474061,SG +3262474062,3262474114,DE +3262474115,3262474115,SG +3262474116,3262474145,DE +3262474146,3262474146,SG +3262474147,3262474156,DE +3262474157,3262474157,SG +3262474158,3262474176,DE +3262474177,3262474177,SG +3262474178,3262474183,DE 3262474184,3262474184,SG 3262474185,3262474204,DE 3262474205,3262474205,SG @@ -56551,25 +56823,58 @@ 3262474476,3262474479,AU 3262474480,3262475057,DE 3262475058,3262475058,US -3262475059,3262475479,DE +3262475059,3262475109,DE +3262475110,3262475110,US +3262475111,3262475205,DE +3262475206,3262475206,US +3262475207,3262475479,DE 3262475480,3262475483,US -3262475484,3262475555,DE +3262475484,3262475523,DE +3262475524,3262475527,US +3262475528,3262475555,DE 3262475556,3262475559,US 3262475560,3262476235,DE 3262476236,3262476239,US 3262476240,3262476275,DE 3262476276,3262476279,CA -3262476280,3262476591,DE +3262476280,3262476471,DE +3262476472,3262476475,CA +3262476476,3262476591,DE 3262476592,3262476595,GB -3262476596,3262477771,DE +3262476596,3262477311,DE +3262477312,3262477315,ES +3262477316,3262477367,DE +3262477368,3262477371,US +3262477372,3262477771,DE 3262477772,3262477775,CA -3262477776,3262478319,DE +3262477776,3262477859,DE +3262477860,3262477863,US +3262477864,3262478307,DE +3262478308,3262478311,ES +3262478312,3262478319,DE 3262478320,3262478323,GB -3262478324,3262478696,DE +3262478324,3262478389,DE +3262478390,3262478390,ES +3262478391,3262478404,DE +3262478405,3262478405,GB +3262478406,3262478493,DE +3262478494,3262478494,FR +3262478495,3262478557,DE +3262478558,3262478558,IT +3262478559,3262478696,DE 3262478697,3262478697,ES -3262478698,3262479267,DE +3262478698,3262478998,DE +3262478999,3262478999,AT +3262479000,3262479000,CH +3262479001,3262479184,DE +3262479185,3262479185,IT +3262479186,3262479267,DE 3262479268,3262479268,NL -3262479269,3262479654,DE +3262479269,3262479323,DE +3262479324,3262479324,NL +3262479325,3262479427,DE +3262479428,3262479428,FR +3262479429,3262479654,DE 3262479655,3262479655,NL 3262479656,3262479751,DE 3262479752,3262479752,CH @@ -56596,7 +56901,6 @@ 3262509568,3262510079,RO 3262510080,3262511103,FR 3262511104,3262511615,GB -3262511616,3262512127,DE 3262512128,3262512639,UA 3262512640,3262513151,DE 3262513152,3262578687,AT @@ -56606,16 +56910,13 @@ 3262636032,3262644223,BE 3262644224,3262648319,NL 3262648320,3262648575,EU -3262648576,3262648831,DE -3262648832,3262649855,NL -3262649856,3262650111,DE -3262650112,3262664703,NL +3262648576,3262664703,NL 3262664704,3262665727,DE 3262665728,3262665983,EU 3262665984,3262666751,DE 3262666752,3262667007,EU -3262667008,3262671359,DE -3262671360,3262690815,NL +3262667008,3262670847,DE +3262670848,3262690815,NL 3262690816,3262691583,DE 3262691584,3262693375,NL 3262693376,3262701567,DE @@ -56623,17 +56924,11 @@ 3262712576,3262712831,DE 3262712832,3262715135,NL 3262715136,3262715391,DE -3262715392,3262722559,NL -3262722560,3262722815,DE -3262722816,3262724863,NL -3262724864,3262725119,DE -3262725120,3262725631,NL -3262725632,3262726143,DE -3262726144,3262732799,NL +3262715392,3262722815,NL +3262722816,3262723071,DE +3262723072,3262732799,NL 3262732800,3262733055,DE -3262733056,3262736383,NL -3262736384,3262736895,DE -3262736896,3262753791,NL +3262733056,3262753791,NL 3262753792,3262754815,DE 3262754816,3262832639,NL 3262832640,3262840319,DE @@ -56650,7 +56945,6 @@ 3263033856,3263034367,IT 3263034368,3263034879,UA 3263034880,3263035391,GB -3263035904,3263036415,CH 3263036416,3263036927,GR 3263036928,3263037439,RU 3263037440,3263045631,LB @@ -56698,7 +56992,6 @@ 3263092736,3263092991,PL 3263092992,3263093247,FR 3263093248,3263093503,CH -3263093504,3263093759,RU 3263093760,3263094015,RO 3263094016,3263094527,PL 3263094528,3263094783,DK @@ -56745,17 +57038,7 @@ 3263168512,3263430655,GB 3263430656,3263432703,SE 3263432704,3263433215,AT -3263433216,3263436799,SE -3263436800,3263437311,GB -3263437312,3263443455,SE -3263443456,3263443967,NL -3263443968,3263446527,SE -3263446528,3263447039,DE -3263447040,3263458815,SE -3263458816,3263459327,FR -3263459328,3263467519,SE -3263467520,3263468031,IT -3263468032,3263469567,SE +3263433216,3263469567,SE 3263469568,3263470591,SG 3263470592,3263475711,SE 3263475712,3263476735,JP @@ -56766,7 +57049,9 @@ 3263483904,3263496191,SE 3263496192,3263499775,EU 3263499776,3263500031,FR -3263500032,3263501519,EU +3263500032,3263500799,EU +3263500800,3263501055,GB +3263501056,3263501519,EU 3263501520,3263501527,IE 3263501528,3263512063,EU 3263512064,3263512319,GB @@ -56777,9 +57062,7 @@ 3263526144,3263561727,EU 3263561728,3263627263,NL 3263627264,3263692799,RU -3263692800,3263764991,FI -3263764992,3263765503,BE -3263765504,3263823871,FI +3263692800,3263823871,FI 3263823872,3263826943,DE 3263826944,3263827199,AT 3263827200,3263833903,DE @@ -56844,7 +57127,9 @@ 3264282624,3264290815,GB 3264290816,3264296191,FI 3264296192,3264297727,FR -3264297728,3264298751,DE +3264297728,3264297983,DE +3264297984,3264298239,PT +3264298240,3264298751,DE 3264298752,3264299007,BG 3264299008,3264307199,DE 3264307200,3264311295,PL @@ -56860,7 +57145,6 @@ 3264313856,3264314623,DE 3264314624,3264314879,SE 3264314880,3264315135,GB -3264315136,3264315391,GR 3264315392,3264317439,IE 3264317440,3264318463,SK 3264318464,3264318975,ES @@ -56893,8 +57177,7 @@ 3264334336,3264334847,UA 3264334848,3264335359,PL 3264335360,3264335871,SK -3264335872,3264336383,NL -3264336384,3264336895,GB +3264335872,3264336895,GB 3264336896,3264337407,RU 3264337408,3264338431,UA 3264338432,3264338943,DE @@ -56917,9 +57200,7 @@ 3264345088,3264346111,NL 3264346112,3264347135,SE 3264347136,3264348159,DE -3264348160,3264372223,FR -3264372224,3264372735,GB -3264372736,3264375039,FR +3264348160,3264375039,FR 3264375040,3264376063,SE 3264376064,3264376319,HR 3264376320,3264376575,UA @@ -56937,7 +57218,6 @@ 3264379648,3264379903,PL 3264379904,3264380159,DE 3264380160,3264380415,RO -3264380416,3264380671,CH 3264380672,3264380927,NL 3264380928,3264381951,PL 3264381952,3264385023,UA @@ -56960,7 +57240,6 @@ 3264401408,3264402431,DE 3264402432,3264403455,CH 3264403456,3264404479,PL -3264404480,3264405503,UA 3264405504,3264406527,FR 3264406528,3264407551,UA 3264407552,3264408575,BG @@ -56978,8 +57257,8 @@ 3264446464,3264447743,CH 3264447744,3264447999,DE 3264448000,3264463871,CH -3264463872,3264466943,LI -3264466944,3264476671,CH +3264463872,3264466687,LI +3264466688,3264476671,CH 3264476672,3264477183,RU 3264477184,3264477439,PL 3264477440,3264477695,RU @@ -57014,15 +57293,11 @@ 3264612352,3264612607,FR 3264612608,3264613119,GB 3264613120,3264613375,FR -3264613376,3264613904,GB -3264613905,3264613905,NL -3264613906,3264614911,GB -3264614912,3264615167,SE -3264615168,3264617983,GB -3264617984,3264618495,US -3264618496,3264621823,GB -3264621824,3264622079,DE -3264622080,3264624639,GB +3264613376,3264617983,GB +3264617984,3264618239,US +3264618240,3264619391,GB +3264619392,3264619519,BE +3264619520,3264624639,GB 3264624640,3264624671,US 3264624672,3264626687,GB 3264626688,3264627711,EE @@ -57042,7 +57317,7 @@ 3264651776,3264652287,IT 3264652288,3264652799,RU 3264652800,3264653311,PL -3264653312,3264653823,EU +3264653312,3264653823,DE 3264653824,3264654335,PL 3264654336,3264654847,DE 3264654848,3264655359,UA @@ -57222,7 +57497,9 @@ 3265140000,3265140015,BE 3265140016,3265141135,CH 3265141136,3265141151,GB -3265141152,3265141759,CH +3265141152,3265141553,CH +3265141554,3265141557,IE +3265141558,3265141759,CH 3265141760,3265141767,GB 3265141768,3265141791,CH 3265141792,3265141887,GB @@ -57234,77 +57511,52 @@ 3265175552,3265183743,NL 3265183744,3265191935,BY 3265191936,3265200127,CH -3265200128,3265218559,GB -3265218560,3265219071,NL -3265219072,3265265663,GB +3265200128,3265265663,GB 3265265664,3265331199,SK -3265331200,3265334783,GB -3265334784,3265335807,EU -3265335808,3265337343,GB -3265337344,3265337855,EU -3265337856,3265340415,GB -3265340416,3265341951,EU -3265341952,3265343487,GB -3265343488,3265343999,DE -3265344000,3265344511,EU -3265344512,3265345023,DE -3265345024,3265345535,EU +3265331200,3265334271,GB +3265334272,3265336319,EU +3265336320,3265337343,GB +3265337344,3265338367,EU +3265338368,3265340415,GB +3265340416,3265342463,EU +3265342464,3265343487,GB +3265343488,3265345535,EU 3265345536,3265347583,DE -3265347584,3265349119,FR -3265349120,3265349631,EU -3265349632,3265352191,FR -3265352192,3265353215,EU -3265353216,3265353727,DE -3265353728,3265354751,EU -3265354752,3265355263,DE -3265355264,3265355775,FR -3265355776,3265357823,EU -3265357824,3265358847,NL -3265358848,3265359359,EU -3265359360,3265359871,NL -3265359872,3265360383,EU -3265360384,3265360895,CH +3265347584,3265348607,FR +3265348608,3265349631,EU +3265349632,3265351679,FR +3265351680,3265360895,EU 3265360896,3265361919,GB 3265361920,3265363967,IT 3265363968,3265366015,ES -3265366016,3265366527,EU -3265366528,3265367039,DK -3265367040,3265368063,EU +3265366016,3265368063,EU 3265368064,3265369087,DK -3265369088,3265370111,EU -3265370112,3265370623,DK -3265370624,3265371135,EU +3265369088,3265371135,EU 3265371136,3265376255,DE -3265376256,3265376767,EU -3265376768,3265378303,GB +3265376256,3265377279,EU +3265377280,3265378303,GB 3265378304,3265379327,NL 3265379328,3265380351,EU 3265380352,3265382399,GB -3265382400,3265382911,CH -3265382912,3265383935,EU -3265383936,3265384447,GB -3265384448,3265386495,DE +3265382400,3265386495,EU 3265386496,3265386751,NL 3265386752,3265387007,EU 3265387008,3265387263,SE 3265387264,3265388543,EU 3265388544,3265392639,GB -3265392640,3265393151,EU -3265393152,3265394175,GB -3265394176,3265394687,EU +3265392640,3265394687,EU 3265394688,3265396735,GB 3265396736,3265527807,DE 3265527808,3265582476,GB 3265582477,3265582477,LB 3265582478,3265593343,GB 3265593344,3265594367,RU -3265594368,3265595391,UA +3265594880,3265595391,UA 3265595392,3265595903,PL 3265595904,3265596415,RU 3265596416,3265596927,GB 3265596928,3265597439,FR -3265597440,3265597951,MC -3265597952,3265599999,RU +3265597440,3265599999,RU 3265600000,3265600511,HU 3265600512,3265601023,GB 3265601024,3265601535,RU @@ -57345,7 +57597,9 @@ 3265650688,3265658879,SE 3265658880,3265724415,AT 3265724416,3265789951,FR -3265789952,3265887487,GB +3265789952,3265824767,GB +3265824768,3265825023,US +3265825024,3265887487,GB 3265887488,3265887743,PT 3265887744,3265888255,PL 3265888256,3265902335,GB @@ -57353,7 +57607,6 @@ 3265902592,3265904383,GB 3265904384,3265904639,RO 3265904640,3265904895,DE -3265904896,3265905151,UA 3265905152,3265905663,GB 3265905664,3265905919,IE 3265905920,3265906175,GB @@ -57445,9 +57698,27 @@ 3266345984,3266346495,GB 3266346496,3266346751,IT 3266346752,3266347007,FR -3266347008,3266351615,EU -3266351616,3266352127,GB -3266352128,3266354687,EU +3266347008,3266351359,EU +3266351360,3266352607,GB +3266352608,3266352895,EU +3266352896,3266353567,GB +3266353568,3266353583,EU +3266353584,3266353591,GB +3266353592,3266353663,EU +3266353664,3266353671,GB +3266353672,3266353679,EU +3266353680,3266353687,GB +3266353688,3266353775,EU +3266353776,3266353783,US +3266353784,3266353855,EU +3266353856,3266353863,GB +3266353864,3266353879,EU +3266353880,3266353887,GB +3266353888,3266353895,EU +3266353896,3266353903,GB +3266353904,3266353919,EU +3266353920,3266354175,GB +3266354176,3266354687,EU 3266354688,3266355199,GB 3266355200,3266363391,RO 3266363392,3266371583,GB @@ -57561,120 +57832,71 @@ 3267368481,3267368481,EU 3267368482,3267428351,DK 3267428352,3267493887,GB -3267493888,3267494399,EU -3267494400,3267494911,GB -3267494912,3267495423,EU -3267495424,3267495935,GB -3267495936,3267496959,EU -3267496960,3267497983,GB -3267497984,3267499519,EU -3267499520,3267500031,GB -3267500032,3267500543,EU -3267500544,3267504127,GB -3267504128,3267506175,EU -3267506176,3267506687,DE -3267506688,3267508223,EU -3267508224,3267508735,DE -3267508736,3267509759,EU -3267509760,3267510271,GB -3267510272,3267512831,FR -3267512832,3267513343,GB +3267493888,3267501055,EU +3267501056,3267504127,GB +3267504128,3267511295,EU +3267511296,3267512319,FR +3267512320,3267513343,EU 3267513344,3267514367,FR 3267514368,3267515391,DE -3267515392,3267515903,EU -3267515904,3267517951,DE -3267517952,3267518463,EU -3267518464,3267518975,DE -3267518976,3267519487,EU -3267519488,3267519999,DE -3267520000,3267520511,EU +3267515392,3267516415,EU +3267516416,3267517439,DE +3267517440,3267520511,EU 3267520512,3267521535,DE 3267521536,3267522559,EU -3267522560,3267524095,DE -3267524096,3267527167,EU -3267527168,3267527679,DE +3267522560,3267523583,DE +3267523584,3267527679,EU 3267527680,3267528703,FR 3267528704,3267529727,EU 3267529728,3267530751,AT -3267530752,3267531263,EU -3267531264,3267532799,FR +3267530752,3267531775,EU +3267531776,3267532799,FR 3267532800,3267534847,EU 3267534848,3267536895,FR -3267536896,3267537407,EU -3267537408,3267538943,FR -3267538944,3267539455,EU -3267539456,3267539967,NL -3267539968,3267540991,EU -3267540992,3267541503,NL -3267541504,3267542015,EU -3267542016,3267542527,GB -3267542528,3267543551,EU -3267543552,3267544063,GB -3267544064,3267546111,EU -3267546112,3267546623,ES -3267546624,3267547135,FR -3267547136,3267547647,EU -3267547648,3267548159,GB -3267548160,3267548671,EU -3267548672,3267549183,GB +3267536896,3267537919,EU +3267537920,3267538943,FR +3267538944,3267549183,EU 3267549184,3267550207,DK -3267550208,3267550719,EU -3267550720,3267551231,DK -3267551232,3267551743,AT -3267551744,3267552255,EU -3267552256,3267552767,AT -3267552768,3267553279,EU -3267553280,3267554303,DK -3267554304,3267556863,EU -3267556864,3267557375,IL -3267557376,3267557887,EU -3267557888,3267558399,IL -3267558400,3267558911,CH -3267558912,3267559423,EU +3267550208,3267559423,EU 3267559424,3267624959,DE 3267624960,3267630079,EU -3267630080,3267631615,GB +3267630080,3267631095,GB +3267631096,3267631103,IT +3267631104,3267631615,GB 3267631616,3267634175,EU 3267634176,3267635199,GB -3267635200,3267638783,EU -3267638784,3267639295,CZ -3267639296,3267645439,EU -3267645440,3267645695,GB -3267645696,3267648255,EU -3267648256,3267648511,GB -3267648512,3267649279,EU -3267649280,3267649535,DE -3267649536,3267655679,EU -3267655680,3267656191,IT -3267656192,3267658751,EU -3267658752,3267659263,CH -3267659264,3267662847,EU -3267662848,3267663023,GB -3267663024,3267663039,IE -3267663040,3267663103,GB +3267635200,3267636863,EU +3267636864,3267636991,ZA +3267636992,3267648319,EU +3267648320,3267648335,GB +3267648336,3267650319,EU +3267650320,3267650335,AT +3267650336,3267660607,EU +3267660608,3267660671,ES +3267660672,3267662847,EU +3267662848,3267663103,GB 3267663104,3267665919,EU -3267665920,3267666943,GB +3267665920,3267666287,GB +3267666288,3267666295,GR +3267666296,3267666943,GB 3267666944,3267667455,EU 3267667456,3267667967,GB 3267667968,3267670015,EU -3267670016,3267671551,ZA -3267671552,3267680255,EU -3267680256,3267680767,SK -3267680768,3267684351,EU +3267670016,3267671039,ZA +3267671040,3267674207,EU +3267674208,3267674239,GB +3267674240,3267684351,EU 3267684352,3267684863,GB -3267684864,3267685375,EU -3267685376,3267685887,NL -3267685888,3267686399,CH -3267686400,3267690495,EU +3267684864,3267690495,EU 3267690496,3267691519,FI 3267691520,3267692543,SE -3267692544,3267756031,FI -3267756032,3267760639,SE -3267760640,3267761151,NO -3267761152,3267821567,SE -3267821568,3267824639,FR -3267824640,3267824895,MQ -3267824896,3267845375,FR +3267692544,3267741759,FI +3267741760,3267741791,SE +3267741792,3267756031,FI +3267756032,3267761919,SE +3267761920,3267762175,NO +3267762176,3267821567,SE +3267821568,3267845375,FR 3267845376,3267845631,GP 3267845632,3267846655,FR 3267846656,3267846911,MQ @@ -57691,25 +57913,256 @@ 3268173824,3268182015,MT 3268182016,3268198399,PL 3268198400,3268214783,MA -3268214784,3268218111,EU +3268214784,3268215583,EU +3268215584,3268215615,GB +3268215616,3268215647,EU +3268215648,3268215679,GB +3268215680,3268215711,EU +3268215712,3268215743,GB +3268215744,3268215807,EU +3268215808,3268216063,GB +3268216064,3268218111,EU 3268218112,3268218367,GB -3268218368,3268226559,EU -3268226560,3268226815,GB -3268226816,3268235935,EU -3268235936,3268235967,GB -3268235968,3268238639,EU -3268238640,3268238655,GB -3268238656,3268238815,EU -3268238816,3268238831,GB -3268238832,3268239615,EU -3268239616,3268240127,GB -3268240128,3268249599,EU -3268249600,3268251647,GB -3268251648,3268254591,EU +3268218368,3268219807,EU +3268219808,3268219823,GB +3268219824,3268221439,EU +3268221440,3268221471,GB +3268221472,3268221503,EU +3268221504,3268221599,GB +3268221600,3268221695,EU +3268221696,3268221951,GB +3268221952,3268222975,EU +3268222976,3268223167,GB +3268223168,3268223199,EU +3268223200,3268223231,GB +3268223232,3268224767,EU +3268224768,3268225023,US +3268225024,3268226367,EU +3268226368,3268226399,GB +3268226400,3268226495,EU +3268226496,3268226663,GB +3268226664,3268226687,EU +3268226688,3268226815,GB +3268226816,3268227327,EU +3268227328,3268227391,GB +3268227392,3268227519,EU +3268227520,3268227615,GB +3268227616,3268231167,EU +3268231168,3268231199,GB +3268231200,3268231319,EU +3268231320,3268231359,GB +3268231360,3268231391,EU +3268231392,3268231423,GB +3268231424,3268231647,EU +3268231648,3268231679,GB +3268231680,3268231743,EU +3268231744,3268231807,GB +3268231808,3268232223,EU +3268232224,3268232243,GB +3268232244,3268232351,EU +3268232352,3268232367,GB +3268232368,3268232383,EU +3268232384,3268232415,GB +3268232416,3268232479,EU +3268232480,3268232575,GB +3268232576,3268232959,EU +3268232960,3268233087,GB +3268233088,3268233983,EU +3268233984,3268234047,GB +3268234048,3268234175,EU +3268234176,3268234239,GB +3268234240,3268234559,EU +3268234560,3268234623,GB +3268234624,3268235007,EU +3268235008,3268235263,GB +3268235264,3268235519,DE +3268235520,3268235775,GB +3268235776,3268235935,EU +3268235936,3268236031,GB +3268236032,3268236191,EU +3268236192,3268236207,GB +3268236208,3268236543,EU +3268236544,3268236607,GB +3268236608,3268236671,EU +3268236672,3268236799,GB +3268236800,3268238335,EU +3268238336,3268238359,GB +3268238360,3268238479,EU +3268238480,3268238847,GB +3268238848,3268239583,EU +3268239584,3268240127,GB +3268240128,3268240159,EU +3268240160,3268240191,GB +3268240192,3268240383,EU +3268240384,3268240399,GB +3268240400,3268240479,EU +3268240480,3268240487,GB +3268240488,3268240687,EU +3268240688,3268240695,GB +3268240696,3268240711,EU +3268240712,3268240735,GB +3268240736,3268240743,EU +3268240744,3268240751,GB +3268240752,3268240975,EU +3268240976,3268240991,GB +3268240992,3268241007,EU +3268241008,3268241023,GB +3268241024,3268241543,EU +3268241544,3268241551,GB +3268241552,3268241639,EU +3268241640,3268241655,GB +3268241656,3268242495,EU +3268242496,3268242523,GB +3268242524,3268242879,EU +3268242880,3268243071,GB +3268243072,3268243327,EU +3268243328,3268243391,GB +3268243392,3268243743,EU +3268243744,3268243775,GB +3268243776,3268244775,EU +3268244776,3268244783,GB +3268244784,3268244791,EU +3268244792,3268244799,GB +3268244800,3268245503,EU +3268245504,3268245759,GB +3268245760,3268246271,EU +3268246272,3268246783,GB +3268246784,3268246799,EU +3268246800,3268246807,GB +3268246808,3268246975,EU +3268246976,3268246991,GB +3268246992,3268248319,EU +3268248320,3268248447,GB +3268248448,3268248511,EU +3268248512,3268248543,GB +3268248544,3268249599,EU +3268249600,3268251311,GB +3268251312,3268251327,IE +3268251328,3268251647,GB +3268251648,3268254463,EU +3268254464,3268254543,GB +3268254544,3268254591,EU 3268254592,3268254607,GB -3268254608,3268265983,EU +3268254608,3268254623,EU +3268254624,3268254639,GB +3268254640,3268254895,EU +3268254896,3268254903,GB +3268254904,3268255823,EU +3268255824,3268255863,GB +3268255864,3268255895,EU +3268255896,3268255919,GB +3268255920,3268255951,EU +3268255952,3268255959,GB +3268255960,3268255967,EU +3268255968,3268255983,GB +3268255984,3268256895,EU +3268256896,3268256959,GB +3268256960,3268257023,EU +3268257024,3268257055,GB +3268257056,3268257087,EU +3268257088,3268257119,GB +3268257120,3268257415,EU +3268257416,3268257419,GB +3268257420,3268257431,EU +3268257432,3268257439,IT +3268257440,3268257463,EU +3268257464,3268257471,GB +3268257472,3268257487,EU +3268257488,3268257527,GB +3268257528,3268258559,EU +3268258560,3268258623,GB +3268258624,3268258687,EU +3268258688,3268258751,GB +3268258752,3268259519,EU +3268259520,3268259527,GB +3268259528,3268259543,EU +3268259544,3268259551,GB +3268259552,3268259559,EU +3268259560,3268259575,GB +3268259576,3268259807,EU +3268259808,3268259815,GB +3268259816,3268259831,EU +3268259832,3268260095,GB +3268260096,3268260351,EU +3268260352,3268260383,GB +3268260384,3268260415,EU +3268260416,3268260447,GB +3268260448,3268260511,EU +3268260512,3268260607,GB +3268260608,3268260639,EU +3268260640,3268260647,GB +3268260648,3268260655,EU +3268260656,3268260671,GB +3268260672,3268261935,EU +3268261936,3268261951,GB +3268261952,3268262767,EU +3268262768,3268262783,GB +3268262784,3268262879,EU +3268262880,3268262887,GB +3268262888,3268263231,EU +3268263232,3268263263,GB +3268263264,3268263775,EU +3268263776,3268263783,GB +3268263784,3268264735,EU +3268264736,3268264767,GB +3268264768,3268265415,EU +3268265416,3268265431,GB +3268265432,3268265983,EU 3268265984,3268266495,GB -3268266496,3268280319,EU +3268266496,3268266983,EU +3268266984,3268266991,GB +3268266992,3268267535,EU +3268267536,3268267551,GB +3268267552,3268267583,EU +3268267584,3268267599,GB +3268267600,3268267615,EU +3268267616,3268267647,GB +3268267648,3268267743,EU +3268267744,3268267775,GB +3268267776,3268267951,EU +3268267952,3268267959,GB +3268267960,3268268543,EU +3268268544,3268268799,GB +3268268800,3268270351,EU +3268270352,3268270367,GB +3268270368,3268270495,EU +3268270496,3268270511,GB +3268270512,3268270847,EU +3268270848,3268271359,GB +3268271360,3268271911,EU +3268271912,3268271919,GB +3268271920,3268271927,EU +3268271928,3268271935,GB +3268271936,3268272703,EU +3268272704,3268272711,GB +3268272712,3268272727,EU +3268272728,3268272735,GB +3268272736,3268273023,EU +3268273024,3268273151,GB +3268273152,3268274111,EU +3268274112,3268274175,GB +3268274176,3268274455,EU +3268274456,3268274459,GB +3268274460,3268274527,EU +3268274528,3268274543,GB +3268274544,3268274559,EU +3268274560,3268274591,GB +3268274592,3268275983,EU +3268275984,3268275999,GB +3268276000,3268276639,EU +3268276640,3268276655,GB +3268276656,3268276671,EU +3268276672,3268276687,GB +3268276688,3268276863,EU +3268276864,3268276895,GB +3268276896,3268277055,EU +3268277056,3268277119,GB +3268277120,3268277759,EU +3268277760,3268278015,GB +3268278016,3268278463,EU +3268278464,3268278495,GB +3268278496,3268280063,EU +3268280064,3268280319,GB 3268280320,3268345855,FR 3268345856,3268411391,GB 3268411392,3268426751,AT @@ -57760,7 +58213,7 @@ 3268765184,3268765695,RU 3268765696,3268766719,UA 3268766720,3268767231,IL -3268767232,3268767743,UA +3268767232,3268767743,RU 3268767744,3268768255,NL 3268768256,3268768767,BE 3268768768,3268769279,RU @@ -57771,35 +58224,172 @@ 3268771328,3268771839,NL 3268771840,3268788223,NO 3268788224,3268804607,CZ -3268804608,3268870143,FR +3268804608,3268869375,FR +3268869376,3268869631,PF +3268869632,3268870143,FR 3268870144,3268935679,FI 3268935680,3269066751,GB 3269066752,3269132287,SE 3269132288,3269197823,GR 3269197824,3269263359,RU -3269263360,3269266943,EU +3269263360,3269264639,EU +3269264640,3269264895,DE +3269264896,3269265855,EU +3269265856,3269265919,DE +3269265920,3269266175,GB +3269266176,3269266687,EU +3269266688,3269266943,DE 3269266944,3269267455,GB -3269267456,3269276159,EU -3269276160,3269276287,GB -3269276288,3269277183,EU +3269267456,3269272575,EU +3269272576,3269272583,DE +3269272584,3269272703,EU +3269272704,3269272831,DE +3269272832,3269272847,GB +3269272848,3269272863,NL +3269272864,3269272887,GB +3269272888,3269272895,EU +3269272896,3269273087,NL +3269273088,3269273343,DE +3269273344,3269273599,EU +3269273600,3269273855,GB +3269273856,3269275647,DE +3269275648,3269275903,EU +3269275904,3269276159,DE +3269276160,3269276415,GB +3269276416,3269277183,EU 3269277184,3269277695,FR -3269277696,3269278719,NL -3269278720,3269279743,EU -3269279744,3269281279,NL -3269281280,3269282303,EU +3269277696,3269277759,GB +3269277760,3269278719,NL +3269278720,3269279231,EU +3269279232,3269279487,NL +3269279488,3269279671,EU +3269279672,3269279679,CH +3269279680,3269279743,EU +3269279744,3269280255,GB +3269280256,3269280271,DE +3269280272,3269280767,NL +3269280768,3269281023,GB +3269281024,3269281279,DE +3269281280,3269281535,FR +3269281536,3269282047,EU +3269282048,3269282303,DE 3269282304,3269282559,GB -3269282560,3269291775,EU +3269282560,3269282815,FR +3269282816,3269283327,EU +3269283328,3269283583,DE +3269283584,3269283871,EU +3269283872,3269283903,DE +3269283904,3269284095,EU +3269284096,3269284351,GB +3269284352,3269284863,EU +3269284864,3269285055,FR +3269285056,3269285087,EU +3269285088,3269285135,DE +3269285136,3269285151,GB +3269285152,3269285215,DE +3269285216,3269285311,EU +3269285312,3269285327,DE +3269285328,3269285335,EU +3269285336,3269285343,FR +3269285344,3269285344,GB +3269285345,3269285345,EU +3269285346,3269285631,GB +3269285632,3269285887,DE +3269285888,3269286399,EU +3269286400,3269286463,DE +3269286464,3269288687,EU +3269288688,3269288959,DE +3269288960,3269290559,EU +3269290560,3269290575,DE +3269290576,3269290591,EU +3269290592,3269290687,DE +3269290688,3269290735,EU +3269290736,3269290743,DE +3269290744,3269291263,EU +3269291264,3269291519,DE +3269291520,3269291575,GB +3269291576,3269291583,EU +3269291584,3269291647,GB +3269291648,3269291775,EU 3269291776,3269292287,ES -3269292288,3269305855,EU +3269292288,3269293119,EU +3269293120,3269293151,DE +3269293152,3269293207,EU +3269293208,3269293215,DE +3269293216,3269293247,EU +3269293248,3269293279,DE +3269293280,3269293375,EU +3269293376,3269293391,DE +3269293392,3269293855,EU +3269293856,3269293887,DE +3269293888,3269293919,EU +3269293920,3269293951,DE +3269293952,3269296231,EU +3269296232,3269296235,DE +3269296236,3269296367,EU +3269296368,3269296375,DE +3269296376,3269297151,EU +3269297152,3269297663,GB +3269297664,3269298663,EU +3269298664,3269298671,DE +3269298672,3269303039,EU +3269303040,3269303295,DE +3269303296,3269303423,GB +3269303424,3269303551,EU +3269303552,3269303679,DE +3269303680,3269305343,EU +3269305344,3269305351,DE +3269305352,3269305855,EU 3269305856,3269306879,DE -3269306880,3269317663,EU +3269306880,3269307647,EU +3269307648,3269307903,DE +3269307904,3269310655,EU +3269310656,3269310671,DE +3269310672,3269310975,EU +3269310976,3269311231,DE +3269311232,3269311871,EU +3269311872,3269311999,DE +3269312000,3269313791,EU +3269313792,3269314175,DE +3269314176,3269314191,EU +3269314192,3269314199,DE +3269314200,3269315583,EU +3269315584,3269315591,DE +3269315592,3269317631,EU +3269317632,3269317663,GB 3269317664,3269317671,IE -3269317672,3269319167,EU -3269319168,3269319679,DE -3269319680,3269320703,EU +3269317672,3269317887,GB +3269317888,3269318399,DE +3269318400,3269318655,GB +3269318656,3269318983,DE +3269318984,3269319007,EU +3269319008,3269319047,DE +3269319048,3269319055,EU +3269319056,3269319071,DE +3269319072,3269319135,EU +3269319136,3269320447,DE +3269320448,3269320703,EU 3269320704,3269321727,GB -3269321728,3269327871,EU -3269327872,3269328383,DE +3269321728,3269322239,EU +3269322240,3269322495,DE +3269322496,3269322655,EU +3269322656,3269322671,DE +3269322672,3269322751,EU +3269322752,3269323263,DE +3269323264,3269326847,EU +3269326848,3269326855,DE +3269326856,3269326959,EU +3269326960,3269326971,DE +3269326972,3269326991,EU +3269326992,3269326999,DE +3269327000,3269327023,EU +3269327024,3269327039,DE +3269327040,3269327055,EU +3269327056,3269327103,DE +3269327104,3269327759,EU +3269327760,3269327767,DE +3269327768,3269327863,EU +3269327864,3269328383,DE 3269328384,3269328895,EU 3269328896,3269459967,GB 3269459968,3269525503,ES @@ -57814,36 +58404,17 @@ 3269918720,3269984255,DE 3269984256,3270049791,AT 3270049792,3270115327,DE -3270115328,3270125055,EU -3270125056,3270125567,DK -3270125568,3270143999,EU -3270144000,3270144511,NO -3270144512,3270148351,EU +3270115328,3270148351,EU 3270148352,3270149887,FI 3270149888,3270150655,EU 3270150656,3270151423,FI 3270151424,3270152703,EU 3270152704,3270153727,FI -3270153728,3270155007,EU -3270155008,3270155519,FI -3270155520,3270156287,EU -3270156288,3270156799,DK -3270156800,3270166527,EU +3270153728,3270166527,EU 3270166528,3270167551,NO -3270167552,3270170111,EU -3270170112,3270170623,NO -3270170624,3270182911,EU -3270182912,3270183423,CH -3270183424,3270190079,EU -3270190080,3270190591,IT -3270190592,3270190911,CH -3270190912,3270230271,EU -3270230272,3270230783,LU -3270230784,3270235135,EU +3270167552,3270235135,EU 3270235136,3270236159,NL -3270236160,3270238207,EU -3270238208,3270238719,NL -3270238720,3270246399,EU +3270236160,3270246399,EU 3270246400,3270348287,SE 3270348288,3270348543,EU 3270348544,3270377471,SE @@ -57991,72 +58562,36 @@ 3271024640,3271032831,GB 3271032832,3271098367,NO 3271098368,3271163903,SI -3271163904,3271224319,FR -3271224320,3271224575,MQ -3271224576,3271229439,FR -3271229440,3271301631,FI -3271301632,3271302143,AX -3271302144,3271360511,FI -3271360512,3271361023,GB -3271361024,3271361535,EU -3271361536,3271362559,GB -3271362560,3271364607,EU -3271364608,3271365631,GB -3271365632,3271367679,EU -3271367680,3271368191,GB -3271368192,3271368703,EU -3271368704,3271369727,GB -3271369728,3271370239,EU -3271370240,3271370751,GB -3271370752,3271374335,EU -3271374336,3271374847,DE -3271374848,3271375359,EU -3271375360,3271375871,CH -3271375872,3271376895,EU -3271376896,3271377407,ES -3271377408,3271377919,NL -3271377920,3271378431,BE -3271378432,3271378943,EU +3271163904,3271229439,FR +3271229440,3271280687,FI +3271280688,3271280703,SE +3271280704,3271360511,FI +3271360512,3271378943,EU 3271378944,3271380991,GB -3271380992,3271382015,EU -3271382016,3271382527,IT -3271382528,3271383039,IL -3271383040,3271385599,EU -3271385600,3271386111,DE -3271386112,3271389183,EU +3271380992,3271389183,EU 3271389184,3271391231,DE -3271391232,3271391743,NL -3271391744,3271392767,EU -3271392768,3271393279,FR -3271393280,3271393791,AT -3271393792,3271395327,EU +3271391232,3271395327,EU 3271395328,3271396351,IT -3271396352,3271398399,EU -3271398400,3271398911,DE -3271398912,3271399423,EU -3271399424,3271399935,BE -3271399936,3271401983,EU -3271401984,3271402495,DK -3271402496,3271407103,EU -3271407104,3271407615,AT -3271407616,3271409663,EU +3271396352,3271409663,EU 3271409664,3271417855,BE -3271417856,3271418367,EU -3271418368,3271418879,FR -3271418880,3271419391,EU -3271419392,3271422463,FR -3271422464,3271423487,EU -3271423488,3271423999,FR -3271424000,3271425535,EU -3271425536,3271426047,DE +3271417856,3271419903,EU +3271419904,3271421951,FR +3271421952,3271426047,EU 3271426048,3271491583,FR -3271491584,3271513343,DK +3271491584,3271502591,DK +3271502592,3271502723,SE +3271502724,3271502727,DK +3271502728,3271502847,SE +3271502848,3271513343,DK 3271513344,3271513599,EU 3271513600,3271557119,DK 3271557120,3271589887,BE 3271589888,3271688191,NO -3271688192,3271694847,EU -3271694848,3271695103,GB +3271688192,3271691775,EU +3271691776,3271692031,US +3271692032,3271692287,GB +3271692288,3271694591,EU +3271694592,3271695103,GB 3271695104,3271696383,EU 3271696384,3271698431,GB 3271698432,3271704575,EU @@ -58137,7 +58672,7 @@ 3271913984,3271914495,RO 3271914496,3271915007,ES 3271915008,3271915519,SE -3271915520,3271916031,NL +3271915520,3271916031,DE 3271916032,3271916543,GB 3271916544,3271917311,UA 3271917312,3271925759,RU @@ -58184,13 +58719,9 @@ 3272065024,3272073727,GB 3272073728,3272073855,IE 3272073856,3272081407,GB -3272081408,3272081919,PT -3272081920,3272082431,CV -3272082432,3272084025,PT +3272081408,3272084025,PT 3272084026,3272084026,AO -3272084027,3272086015,PT -3272086016,3272086527,ST -3272086528,3272087551,PT +3272084027,3272087551,PT 3272087552,3272088575,MR 3272088576,3272089599,PT 3272089600,3272090111,NO @@ -58211,6 +58742,7 @@ 3272106752,3272107007,PL 3272107008,3272107263,GB 3272107264,3272107519,PL +3272107520,3272107775,RU 3272107776,3272108031,GB 3272108032,3272108287,DE 3272108288,3272108543,RO @@ -58220,7 +58752,6 @@ 3272109824,3272110079,FR 3272110080,3272110335,SE 3272110336,3272110591,CH -3272110592,3272110847,AT 3272110848,3272111103,LV 3272111104,3272111871,GB 3272111872,3272112383,RO @@ -58247,32 +58778,165 @@ 3272138240,3272138751,BG 3272138752,3272146943,DE 3272146944,3272212479,RU -3272212480,3272213503,ES -3272213504,3272214271,EU -3272214272,3272214527,GB +3272212480,3272212991,GB +3272212992,3272213375,ES +3272213376,3272213391,IT +3272213392,3272213399,GB +3272213400,3272213407,ES +3272213408,3272213415,NL +3272213416,3272213423,ES +3272213424,3272213431,NL +3272213432,3272213439,GB +3272213440,3272213471,ES +3272213472,3272213487,CY +3272213488,3272213495,GB +3272213496,3272213503,ES +3272213504,3272213567,IT +3272213568,3272213575,GB +3272213576,3272213583,IE +3272213584,3272213599,DE +3272213600,3272213631,EU +3272213632,3272213639,NL +3272213640,3272213655,EU +3272213656,3272213663,IT +3272213664,3272213671,EU +3272213672,3272213679,IT +3272213680,3272213695,EU +3272213696,3272213735,IT +3272213736,3272213751,EU +3272213752,3272213759,IT +3272213760,3272214015,NL +3272214016,3272214271,ES +3272214272,3272214351,GB +3272214352,3272214407,FR +3272214408,3272214431,EU +3272214432,3272214463,SE +3272214464,3272214527,EU 3272214528,3272215039,FR -3272215040,3272217087,EU +3272215040,3272215295,ES +3272215296,3272215551,NL +3272215552,3272215807,CH +3272215808,3272215823,NL +3272215824,3272215871,EU +3272215872,3272215879,BE +3272215880,3272215883,EU +3272215884,3272215919,CH +3272215920,3272215935,NL +3272215936,3272215999,GB +3272216000,3272216015,EU +3272216016,3272216031,DE +3272216032,3272216039,EU +3272216040,3272216047,GB +3272216048,3272216191,EU +3272216192,3272216207,BE +3272216208,3272216215,EU +3272216216,3272216223,FR +3272216224,3272216231,DE +3272216232,3272216239,EU +3272216240,3272216255,NL +3272216256,3272216287,CH +3272216288,3272216303,EU +3272216304,3272216311,ES +3272216312,3272216319,EU +3272216320,3272216351,NL +3272216352,3272216383,DE +3272216384,3272216447,CH +3272216448,3272216451,EU +3272216452,3272216455,NL +3272216456,3272216463,EU +3272216464,3272216479,FR +3272216480,3272216495,IR +3272216496,3272216511,EU +3272216512,3272216575,IT +3272216576,3272216895,GB +3272216896,3272216911,FR +3272216912,3272216927,DE +3272216928,3272216959,EU +3272216960,3272217007,GB +3272217008,3272217087,EU 3272217088,3272217151,GB -3272217152,3272217855,EU +3272217152,3272217215,EU +3272217216,3272217279,BE +3272217280,3272217303,DE +3272217304,3272217311,BE +3272217312,3272217343,EU +3272217344,3272217599,GB +3272217600,3272217631,CH +3272217632,3272217855,EU 3272217856,3272217875,ES -3272217876,3272218111,EU +3272217876,3272217879,EU +3272217880,3272217895,IT +3272217896,3272217911,ES +3272217912,3272217919,EU +3272217920,3272217983,DE +3272217984,3272218079,ES +3272218080,3272218111,EU 3272218112,3272218623,GB -3272218624,3272219663,EU -3272219664,3272219679,FR -3272219680,3272222207,EU -3272222208,3272222271,ES -3272222272,3272223999,EU +3272218624,3272218687,EU +3272218688,3272218719,DE +3272218720,3272218751,EU +3272218752,3272218879,GB +3272218880,3272219135,BE +3272219136,3272219391,NL +3272219392,3272219647,GB +3272219648,3272219903,FR +3272219904,3272220159,DE +3272220160,3272220415,FR +3272220416,3272221183,GB +3272221184,3272221439,NL +3272221440,3272221447,SE +3272221448,3272221455,NO +3272221456,3272221463,SE +3272221464,3272221695,EU +3272221696,3272221951,NL +3272221952,3272222207,GB +3272222208,3272222463,ES +3272222464,3272222719,NL +3272222720,3272222975,EU +3272222976,3272223015,GB +3272223016,3272223023,EU +3272223024,3272223039,GB +3272223040,3272223231,EU +3272223232,3272223487,NL +3272223488,3272223503,SG +3272223504,3272223743,EU +3272223744,3272223775,GI +3272223776,3272223807,EU +3272223808,3272223815,CY +3272223816,3272223823,EU +3272223824,3272223839,GB +3272223840,3272223999,EU 3272224000,3272224255,GB -3272224256,3272225279,EU -3272225280,3272225791,IT -3272225792,3272227839,EU -3272227840,3272228351,ES -3272228352,3272228863,NL +3272224256,3272224383,GI +3272224384,3272224511,EU +3272224512,3272225279,GB +3272225280,3272225535,IT +3272225536,3272225791,GB +3272225792,3272225855,EU +3272225856,3272225919,GB +3272225920,3272226047,EU +3272226048,3272226815,FR +3272226816,3272227071,GB +3272227072,3272227327,FR +3272227328,3272227359,US +3272227360,3272227511,GB +3272227512,3272227519,EU +3272227520,3272227583,GB +3272227584,3272227839,FR +3272227840,3272228095,ES +3272228096,3272228223,GB +3272228224,3272228351,ES +3272228352,3272228607,FR +3272228608,3272228623,NL +3272228624,3272228631,CY +3272228632,3272228639,NL +3272228640,3272228671,IT +3272228672,3272228703,DE +3272228704,3272228735,FR +3272228736,3272228799,NL +3272228800,3272228863,CH 3272228864,3272237055,LU -3272237056,3272238079,IM -3272238080,3272238591,GB -3272238592,3272244223,IM -3272244224,3272245247,GB +3272237056,3272245247,IM 3272245248,3272261631,FI 3272261632,3272261887,MT 3272261888,3272262143,BG @@ -58318,10 +58982,14 @@ 3272376320,3272384511,SK 3272384512,3272392703,LT 3272392704,3272400895,AT -3272400896,3272402559,EU +3272400896,3272400911,EU +3272400912,3272400919,GB +3272400920,3272402559,EU 3272402560,3272402623,GB -3272402624,3272403455,EU -3272403456,3272404991,FR +3272402624,3272402687,EU +3272402688,3272402815,SE +3272402816,3272403967,EU +3272403968,3272404991,FR 3272404992,3272406015,DE 3272406016,3272407039,NL 3272407040,3272409087,EU @@ -58349,7 +59017,7 @@ 3272475136,3272475391,RU 3272475392,3272475903,PL 3272475904,3272476159,FR -3272476160,3272476671,RO +3272476160,3272476415,RO 3272476672,3272476927,DE 3272476928,3272477183,GR 3272477184,3272477439,GB @@ -58373,16 +59041,13 @@ 3272482304,3272482559,PL 3272482560,3272482815,BE 3272482816,3272491007,RU -3272491008,3272491407,GB -3272491408,3272491423,DE -3272491424,3272499199,GB +3272491008,3272499199,GB 3272499200,3272499711,RU 3272499712,3272500223,NL 3272500224,3272500735,RU 3272500736,3272501247,IT 3272501248,3272502783,RU 3272502784,3272503295,KW -3272503296,3272503807,UA 3272503808,3272504319,RU 3272504320,3272504831,PL 3272504832,3272505343,RU @@ -58404,16 +59069,10 @@ 3272628224,3272629247,UA 3272629248,3272638463,RU 3272638464,3272646655,ES -3272646656,3272652287,GB -3272652288,3272652799,FR -3272652800,3272654847,GB +3272646656,3272654847,GB 3272654848,3272663039,FI 3272663040,3272671231,AT -3272671232,3272706559,SE -3272706560,3272707071,IE -3272707072,3272713471,SE -3272713472,3272713983,GB -3272713984,3272736767,SE +3272671232,3272736767,SE 3272736768,3272737791,IT 3272737792,3272738815,GB 3272738816,3272739839,IL @@ -58478,11 +59137,7 @@ 3272908032,3272908287,CH 3272908288,3272908543,AT 3272908544,3272908799,DE -3272908800,3272909823,SK -3272909824,3272910335,NO -3272910336,3272911871,SK -3272911872,3272912383,CZ -3272912384,3272916991,SK +3272908800,3272916991,SK 3272916992,3272917503,MC 3272917504,3272918527,RU 3272918528,3272919039,FR @@ -58556,9 +59211,7 @@ 3273193984,3273194495,EU 3273194496,3273195007,UA 3273195008,3273195519,RU -3273195520,3273225727,FR -3273225728,3273225983,GF -3273225984,3273261055,FR +3273195520,3273261055,FR 3273261056,3273261567,NO 3273261568,3273262079,BE 3273262080,3273262591,LU @@ -58586,44 +59239,214 @@ 3273302016,3273310207,RU 3273310208,3273318399,AT 3273318400,3273326591,GB -3273326592,3273327359,EU +3273326592,3273326847,IE +3273326848,3273326983,EU +3273326984,3273326987,DE +3273326988,3273326991,EU +3273326992,3273327047,DE +3273327048,3273327263,EU +3273327264,3273327287,DE +3273327288,3273327359,EU 3273327360,3273327615,IE -3273327616,3273329663,EU -3273329664,3273329919,GB -3273329920,3273330431,EU -3273330432,3273330687,GB -3273330688,3273330943,EU -3273330944,3273331199,GB -3273331200,3273334271,EU +3273327616,3273328511,EU +3273328512,3273328639,DE +3273328640,3273329423,GB +3273329424,3273329439,DE +3273329440,3273330175,GB +3273330176,3273330183,IR +3273330184,3273330199,GB +3273330200,3273330223,IE +3273330224,3273330271,GB +3273330272,3273330431,IE +3273330432,3273331199,GB +3273331200,3273331711,EU +3273331712,3273331791,GB +3273331792,3273331807,EU +3273331808,3273331967,GB +3273331968,3273332031,DE +3273332032,3273332095,GB +3273332096,3273332223,DE +3273332224,3273332479,GB +3273332480,3273332543,EU +3273332544,3273332575,DE +3273332576,3273332607,EU +3273332608,3273332671,DE +3273332672,3273333055,EU +3273333056,3273333119,DE +3273333120,3273334271,EU 3273334272,3273334783,DE -3273334784,3273335295,EU +3273334784,3273335039,EU +3273335040,3273335295,DE 3273335296,3273335807,GB -3273335808,3273336881,EU -3273336882,3273336882,DE -3273336883,3273339391,EU -3273339392,3273339903,DE +3273335808,3273335935,EU +3273335936,3273335999,DE +3273336000,3273336847,EU +3273336848,3273336863,DE +3273336864,3273336871,GB +3273336872,3273336895,DE +3273336896,3273336959,EU +3273336960,3273337087,DE +3273337088,3273337855,EU +3273337856,3273338111,DE +3273338112,3273338623,EU +3273338624,3273338879,DE +3273338880,3273339135,EU +3273339136,3273339903,DE 3273339904,3273340415,GB 3273340416,3273340927,EU -3273340928,3273341439,FR -3273341440,3273342975,EU +3273340928,3273341695,FR +3273341696,3273341951,DE +3273341952,3273342207,GB +3273342208,3273342463,EU +3273342464,3273342975,DE 3273342976,3273343999,GB 3273344000,3273344767,DE -3273344768,3273366015,EU +3273344768,3273345023,EU +3273345024,3273345279,DE +3273345280,3273346815,EU +3273346816,3273347071,DE +3273347072,3273347839,EU +3273347840,3273348351,DE +3273348352,3273349119,EU +3273349120,3273349631,DE +3273349632,3273350271,EU +3273350272,3273350287,DE +3273350288,3273350335,EU +3273350336,3273350351,DE +3273350352,3273351423,EU +3273351424,3273351455,DE +3273351456,3273351503,EU +3273351504,3273351519,DE +3273351520,3273351871,EU +3273351872,3273351903,DE +3273351904,3273351935,EU +3273351936,3273352191,DE +3273352192,3273352927,EU +3273352928,3273352959,DE +3273352960,3273352991,EU +3273352992,3273353023,DE +3273353024,3273355519,EU +3273355520,3273356287,DE +3273356288,3273359887,EU +3273359888,3273359903,DE +3273359904,3273360015,EU +3273360016,3273360079,DE +3273360080,3273361471,EU +3273361472,3273361535,DE +3273361536,3273361631,EU +3273361632,3273361663,DE +3273361664,3273361791,EU +3273361792,3273361823,DE +3273361824,3273361855,EU +3273361856,3273361919,DE +3273361920,3273362047,EU +3273362048,3273362175,DE +3273362176,3273362239,EU +3273362240,3273362255,DE +3273362256,3273363207,EU +3273363208,3273363211,DE +3273363212,3273363327,EU +3273363328,3273363391,DE +3273363392,3273364607,EU +3273364608,3273364735,DE +3273364736,3273364991,EU +3273364992,3273365247,DE +3273365248,3273365503,EU +3273365504,3273365519,NL +3273365520,3273365543,GB +3273365544,3273365759,NL +3273365760,3273365767,GB +3273365768,3273365887,EU +3273365888,3273366015,FR 3273366016,3273366527,DE -3273366528,3273368063,EU +3273366528,3273367295,EU +3273367296,3273367423,DE +3273367424,3273367551,EU +3273367552,3273367567,DE +3273367568,3273368063,EU 3273368064,3273368575,DE -3273368576,3273372671,EU -3273372672,3273373695,DE -3273373696,3273375743,EU +3273368576,3273369343,EU +3273369344,3273369855,DE +3273369856,3273370623,EU +3273370624,3273371135,DE +3273371136,3273371711,EU +3273371712,3273371743,DE +3273371744,3273371759,EU +3273371760,3273371775,DE +3273371776,3273371807,EU +3273371808,3273371823,DE +3273371824,3273371871,EU +3273371872,3273371875,DE +3273371876,3273371999,EU +3273372000,3273372055,DE +3273372056,3273372671,EU +3273372672,3273372927,GB +3273372928,3273373183,NL +3273373184,3273373455,GB +3273373456,3273373567,DE +3273373568,3273373695,GB +3273373696,3273375231,EU +3273375232,3273375551,DE +3273375552,3273375743,EU 3273375744,3273375871,DE -3273375872,3273382143,EU +3273375872,3273375999,EU +3273376000,3273376255,DE +3273376256,3273376535,EU +3273376536,3273376543,DE +3273376544,3273377791,EU +3273377792,3273378095,DE +3273378096,3273378559,EU +3273378560,3273378815,DE +3273378816,3273381887,EU +3273381888,3273382143,DE 3273382144,3273382399,GB -3273382400,3273390111,EU -3273390112,3273390143,DE -3273390144,3273392127,EU +3273382400,3273382463,DE +3273382464,3273382479,EU +3273382480,3273382591,DE +3273382592,3273382639,EU +3273382640,3273382687,DE +3273382688,3273384191,EU +3273384192,3273384703,DE +3273384704,3273384959,EU +3273384960,3273385215,DE +3273385216,3273385279,EU +3273385280,3273385343,DE +3273385344,3273385471,EU +3273385472,3273385727,DE +3273385728,3273385759,EU +3273385760,3273385791,DE +3273385792,3273385855,EU +3273385856,3273385919,DE +3273385920,3273387055,EU +3273387056,3273387071,DE +3273387072,3273387215,EU +3273387216,3273387231,DE +3273387232,3273387263,EU +3273387264,3273387519,DE +3273387520,3273387551,EU +3273387552,3273387583,DE +3273387584,3273388159,EU +3273388160,3273388223,DE +3273388224,3273388543,EU +3273388544,3273388807,DE +3273388808,3273388815,EU +3273388816,3273388863,DE +3273388864,3273388871,EU +3273388872,3273388879,DE +3273388880,3273388903,EU +3273388904,3273388911,DE +3273388912,3273388927,GB +3273388928,3273389055,DE +3273389056,3273390079,EU +3273390080,3273390207,DE +3273390208,3273390335,EU +3273390336,3273390463,DE +3273390464,3273391103,EU +3273391104,3273391359,DE +3273391360,3273391871,EU +3273391872,3273392127,DE 3273392128,3273392639,PL 3273392640,3273393663,RO -3273393664,3273394175,BG 3273394176,3273394687,RO 3273394688,3273395199,RU 3273395200,3273395711,DE @@ -58647,7 +59470,6 @@ 3273436160,3273436671,NO 3273436672,3273437183,DE 3273437184,3273437695,RO -3273437696,3273438207,PL 3273438208,3273438719,IL 3273438720,3273439231,RU 3273439232,3273439743,RO @@ -58655,19 +59477,15 @@ 3273440256,3273440767,RO 3273440768,3273441023,AT 3273441024,3273441279,PL -3273441280,3273443327,GB -3273443328,3273443839,FR -3273443840,3273449727,GB -3273449728,3273457663,CH +3273441280,3273449471,GB +3273449472,3273457663,CH 3273457664,3273523199,HR 3273523200,3273588735,DE 3273588736,3273687039,IT 3273687040,3273719807,DE 3273719808,3273720831,NL 3273720832,3273720847,IE -3273720848,3273721855,NL -3273721856,3273722367,GB -3273722368,3273726719,NL +3273720848,3273726719,NL 3273726720,3273726975,GB 3273726976,3273727087,NL 3273727088,3273727088,GB @@ -58767,8 +59585,6 @@ 3273932800,3273949183,DE 3273949184,3273981951,FR 3273981952,3274047487,DE -3274047488,3274049535,SE -3274049536,3274050559,DE 3274050560,3274051583,PL 3274051584,3274052351,UA 3274052352,3274052607,GB @@ -58793,13 +59609,12 @@ 3274152448,3274152703,US 3274152704,3274162175,KW 3274162176,3274162687,GB -3274162688,3274163199,DE 3274163200,3274163711,UA 3274163712,3274164223,BG 3274164224,3274164735,AT 3274165248,3274165759,GB 3274165760,3274166271,RU -3274166272,3274166783,RO +3274166272,3274166783,AT 3274166784,3274167295,UA 3274167296,3274167807,BG 3274168320,3274168831,PL @@ -58822,9 +59637,7 @@ 3274177536,3274178047,UA 3274178048,3274178559,NL 3274178560,3274244095,GB -3274244096,3274255106,DK -3274255107,3274255107,EU -3274255108,3274309631,DK +3274244096,3274309631,DK 3274309632,3274326015,FR 3274326016,3274334719,RU 3274334720,3274335231,PL @@ -58922,47 +59735,161 @@ 3274424320,3274435711,SE 3274435712,3274435839,US 3274435840,3274440703,SE -3274440704,3274446847,EU -3274446848,3274447743,GB -3274447744,3274450175,EU -3274450176,3274450431,GB -3274450432,3274450591,EU -3274450592,3274450623,GB -3274450624,3274451199,EU -3274451200,3274451711,GB -3274451712,3274452991,EU -3274452992,3274453503,GB -3274453504,3274455343,EU +3274440704,3274442751,EU +3274442752,3274443263,GB +3274443264,3274443519,EU +3274443520,3274443647,GB +3274443648,3274443711,EU +3274443712,3274443775,GB +3274443776,3274443807,EU +3274443808,3274444031,GB +3274444032,3274446335,EU +3274446336,3274447871,GB +3274447872,3274448383,EU +3274448384,3274448639,GB +3274448640,3274448895,EU +3274448896,3274449663,GB +3274449664,3274449919,EU +3274449920,3274450623,GB +3274450624,3274450655,EU +3274450656,3274450687,GB +3274450688,3274451199,EU +3274451200,3274452255,GB +3274452256,3274452263,EU +3274452264,3274452311,GB +3274452312,3274452319,EU +3274452320,3274452335,GB +3274452336,3274452343,EU +3274452344,3274452367,GB +3274452368,3274452383,EU +3274452384,3274452391,GB +3274452392,3274452399,EU +3274452400,3274452423,GB +3274452424,3274452431,EU +3274452432,3274452439,GB +3274452440,3274452447,EU +3274452448,3274452455,GB +3274452456,3274452463,EU +3274452464,3274452471,GB +3274452472,3274452495,EU +3274452496,3274452543,GB +3274452544,3274452559,EU +3274452560,3274452575,GB +3274452576,3274452655,EU +3274452656,3274452703,GB +3274452704,3274452735,EU +3274452736,3274452927,GB +3274452928,3274452991,EU +3274452992,3274453767,GB +3274453768,3274453783,EU +3274453784,3274453791,GB +3274453792,3274453799,EU +3274453800,3274453847,GB +3274453848,3274453863,EU +3274453864,3274453871,GB +3274453872,3274453887,EU +3274453888,3274453903,GB +3274453904,3274453919,EU +3274453920,3274453935,GB +3274453936,3274453943,EU +3274453944,3274453951,GB +3274453952,3274453959,EU +3274453960,3274453975,GB +3274453976,3274453983,EU +3274453984,3274453991,GB +3274453992,3274453999,EU +3274454000,3274454271,GB +3274454272,3274454655,EU +3274454656,3274455311,GB +3274455312,3274455327,EU +3274455328,3274455335,GB +3274455336,3274455343,EU 3274455344,3274455351,GB -3274455352,3274457087,EU -3274457088,3274458111,GB -3274458112,3274459391,EU -3274459392,3274459903,GB -3274459904,3274460671,EU -3274460672,3274461183,GB -3274461184,3274461695,EU -3274461696,3274462207,GB +3274455352,3274455359,EU +3274455360,3274455375,GB +3274455376,3274455383,EU +3274455384,3274455391,GB +3274455392,3274455399,EU +3274455400,3274455423,GB +3274455424,3274455431,EU +3274455432,3274455439,GB +3274455440,3274455447,EU +3274455448,3274455503,GB +3274455504,3274455519,EU +3274455520,3274455535,GB +3274455536,3274455743,EU +3274455744,3274455807,GB +3274455808,3274455871,EU +3274455872,3274455935,GB +3274455936,3274455967,EU +3274455968,3274456359,GB +3274456360,3274456367,EU +3274456368,3274456375,GB +3274456376,3274456383,EU +3274456384,3274456391,GB +3274456392,3274456399,EU +3274456400,3274456407,GB +3274456408,3274456415,EU +3274456416,3274456447,GB +3274456448,3274456455,EU +3274456456,3274456511,GB +3274456512,3274456527,EU +3274456528,3274456535,GB +3274456536,3274456543,EU +3274456544,3274456559,GB +3274456560,3274456567,EU +3274456568,3274460223,GB +3274460224,3274460415,EU +3274460416,3274462207,GB 3274462208,3274462463,EU -3274462464,3274462975,GB -3274462976,3274463487,EU -3274463488,3274464767,GB -3274464768,3274465279,EU -3274465280,3274465791,GB -3274465792,3274467327,EU -3274467328,3274467839,GB -3274467840,3274468095,EU -3274468096,3274468863,GB -3274468864,3274473471,EU -3274473472,3274481407,GB -3274481408,3274490879,EU -3274490880,3274491135,GB -3274491136,3274491279,EU -3274491280,3274491287,GB -3274491288,3274491391,EU -3274491392,3274491647,GB -3274491648,3274491903,EU -3274491904,3274504447,GB -3274504448,3274506239,EU +3274462464,3274465023,GB +3274465024,3274465151,EU +3274465152,3274466351,GB +3274466352,3274466367,EU +3274466368,3274466399,GB +3274466400,3274466415,EU +3274466416,3274466463,GB +3274466464,3274466559,EU +3274466560,3274466735,GB +3274466736,3274466743,EU +3274466744,3274466763,GB +3274466764,3274466767,EU +3274466768,3274466783,GB +3274466784,3274466815,EU +3274466816,3274467099,GB +3274467100,3274467103,EU +3274467104,3274467307,GB +3274467308,3274467327,EU +3274467328,3274470383,GB +3274470384,3274470399,EU +3274470400,3274470535,GB +3274470536,3274470655,EU +3274470656,3274471423,GB +3274471424,3274471535,EU +3274471536,3274471615,GB +3274471616,3274471679,EU +3274471680,3274471935,GB +3274471936,3274472959,EU +3274472960,3274483711,GB +3274483712,3274489599,EU +3274489600,3274489855,GB +3274489856,3274490175,EU +3274490176,3274490895,GB +3274490896,3274490911,EU +3274490912,3274491247,GB +3274491248,3274491255,EU +3274491256,3274491295,GB +3274491296,3274491303,EU +3274491304,3274491319,GB +3274491320,3274491327,EU +3274491328,3274491383,GB +3274491384,3274491391,EU +3274491392,3274504447,GB +3274504448,3274505727,EU +3274505728,3274505791,GB +3274505792,3274505792,EU +3274505793,3274505855,GB +3274505856,3274506239,EU 3274506240,3274571775,IT 3274571776,3274579967,GR 3274579968,3274580991,UA @@ -59043,7 +59970,6 @@ 3274700544,3274700799,DK 3274700800,3274701055,UA 3274701056,3274701311,DE -3274701312,3274701567,TJ 3274701568,3274701823,IT 3274701824,3274702079,IL 3274702080,3274702335,UA @@ -59056,8 +59982,7 @@ 3274804224,3274805247,FR 3274805248,3274806271,GB 3274806272,3274807295,UA -3274807296,3274809087,DE -3274809088,3274809343,NL +3274807296,3274809343,DE 3274809344,3274810367,SE 3274810368,3274811391,UA 3274811392,3274812415,RU @@ -59078,50 +60003,29 @@ 3274850304,3274866687,GB 3274866688,3274883071,DE 3274883072,3274899455,EE -3274899456,3274900991,EU -3274900992,3274901503,DE -3274901504,3274903039,EU -3274903040,3274909183,DE -3274909184,3274910207,EU -3274910208,3274910719,DE -3274910720,3274913279,EU -3274913280,3274914815,DE -3274914816,3274917375,EU -3274917376,3274917887,NL -3274917888,3274918399,BE -3274918400,3274920959,EU +3274899456,3274903551,EU +3274903552,3274908671,DE +3274908672,3274913791,EU +3274913792,3274914815,DE +3274914816,3274920959,EU 3274920960,3274921983,BE 3274921984,3274923263,EU 3274923264,3274924031,NL -3274924032,3274924543,EU -3274924544,3274925055,FR -3274925056,3274926079,EU +3274924032,3274926079,EU 3274926080,3274928127,FR -3274928128,3274929663,EU -3274929664,3274930175,BE -3274930176,3274930687,IT -3274930688,3274933247,EU -3274933248,3274933759,GB -3274933760,3274935295,EU -3274935296,3274935807,GB -3274935808,3274939391,EU +3274928128,3274939391,EU 3274939392,3274940415,ZA 3274940416,3274941439,EU 3274941440,3274942463,DE 3274942464,3274943487,FR -3274943488,3274943999,EU -3274944000,3274944511,FR +3274943488,3274944511,EU 3274944512,3274948607,NL 3274948608,3274951679,DK 3274951680,3274952703,EU 3274952704,3274953727,AT -3274953728,3274955263,EU -3274955264,3274955775,SE -3274955776,3274958335,EU -3274958336,3274958847,AT -3274958848,3274960895,EU -3274960896,3274961407,AT -3274961408,3274964991,EU +3274953728,3274958079,EU +3274958080,3274958207,IE +3274958208,3274964991,EU 3274964992,3275030527,DE 3275030528,3275096063,ES 3275096064,3275104767,RU @@ -59173,85 +60077,117 @@ 3275399168,3275407359,AT 3275407360,3275415551,GB 3275415552,3275423743,UA -3275423744,3275423999,EU -3275424000,3275424511,GB -3275424512,3275424767,EU -3275424768,3275425279,GB -3275425280,3275425791,EU -3275425792,3275426303,GB -3275426304,3275426815,EU -3275426816,3275427327,GB -3275427328,3275427583,EU -3275427584,3275428351,GB -3275428352,3275429887,EU +3275423744,3275423751,GB +3275423752,3275423775,EU +3275423776,3275423839,GB +3275423840,3275423871,EU +3275423872,3275425559,GB +3275425560,3275425567,EU +3275425568,3275425583,GB +3275425584,3275425791,EU +3275425792,3275426559,GB +3275426560,3275426575,EU +3275426576,3275428367,GB +3275428368,3275428375,EU +3275428376,3275428407,GB +3275428408,3275428415,EU +3275428416,3275428447,GB +3275428448,3275429887,EU 3275429888,3275430143,GB -3275430144,3275431935,EU -3275431936,3275432447,GB -3275432448,3275432703,EU -3275432704,3275432959,GB -3275432960,3275433983,EU -3275433984,3275434495,GB -3275434496,3275434751,EU -3275434752,3275435007,GB -3275435008,3275435263,EU -3275435264,3275435519,GB -3275435520,3275435775,EU -3275435776,3275436543,GB -3275436544,3275437055,EU -3275437056,3275437567,GB -3275437568,3275438079,EU -3275438080,3275438591,GB -3275438592,3275438719,EU -3275438720,3275438847,GB -3275438848,3275439687,EU -3275439688,3275439775,GB -3275439776,3275440127,EU -3275440128,3275440639,GB -3275440640,3275442175,EU -3275442176,3275442687,GB -3275442688,3275443199,EU -3275443200,3275443215,GB -3275443216,3275444223,EU +3275430144,3275430271,EU +3275430272,3275430399,GB +3275430400,3275430591,EU +3275430592,3275430631,GB +3275430632,3275430655,EU +3275430656,3275430911,GB +3275430912,3275431935,EU +3275431936,3275432883,GB +3275432884,3275433983,EU +3275433984,3275436543,GB +3275436544,3275436799,EU +3275436800,3275438847,GB +3275438848,3275439103,EU +3275439104,3275441407,GB +3275441408,3275441423,EU +3275441424,3275441439,GB +3275441440,3275441471,EU +3275441472,3275441535,GB +3275441536,3275441599,EU +3275441600,3275441823,GB +3275441824,3275441855,EU +3275441856,3275442723,GB +3275442724,3275443199,EU +3275443200,3275443227,GB +3275443228,3275443231,EU +3275443232,3275443239,GB +3275443240,3275443255,EU +3275443256,3275443311,GB +3275443312,3275443327,EU +3275443328,3275443391,GB +3275443392,3275443423,EU +3275443424,3275443439,GB +3275443440,3275443447,EU +3275443448,3275443727,GB +3275443728,3275443759,EU +3275443760,3275443775,GB +3275443776,3275444223,EU 3275444224,3275444735,GB 3275444736,3275446271,EU -3275446272,3275447039,GB -3275447040,3275448319,EU -3275448320,3275448831,GB -3275448832,3275449343,EU -3275449344,3275450111,GB -3275450112,3275450367,EU -3275450368,3275450879,GB -3275450880,3275452415,EU -3275452416,3275453439,GB -3275453440,3275453695,EU -3275453696,3275454975,GB -3275454976,3275455487,EU -3275455488,3275455999,GB -3275456000,3275456447,EU -3275456448,3275457023,GB -3275457024,3275457535,FK -3275457536,3275458559,GB -3275458560,3275459071,IE -3275459072,3275460351,EU +3275446272,3275446783,GB +3275446784,3275446799,EU +3275446800,3275446831,GB +3275446832,3275446847,EU +3275446848,3275447039,GB +3275447040,3275447055,EU +3275447056,3275447151,GB +3275447152,3275448319,EU +3275448320,3275450207,GB +3275450208,3275450223,EU +3275450224,3275450879,GB +3275450880,3275451231,EU +3275451232,3275451263,GB +3275451264,3275451391,EU +3275451392,3275451663,GB +3275451664,3275451679,EU +3275451680,3275451711,GB +3275451712,3275451719,EU +3275451720,3275451727,GB +3275451728,3275452415,EU +3275452416,3275457023,GB +3275457024,3275457791,FK +3275457792,3275458559,GB +3275458560,3275460095,IE +3275460096,3275460223,GB +3275460224,3275460239,IE +3275460240,3275460351,EU 3275460352,3275460607,IE -3275460608,3275468740,GB -3275468741,3275468741,IE -3275468742,3275472895,GB -3275472896,3275473151,EU -3275473152,3275473407,GB -3275473408,3275473663,EU -3275473664,3275474175,GB -3275474176,3275474431,EU -3275474432,3275474943,GB -3275474944,3275474951,EU -3275474952,3275474959,GB -3275474960,3275475199,EU -3275475200,3275475455,GB -3275475456,3275476991,EU -3275476992,3275477503,GB -3275477504,3275479039,EU -3275479040,3275480319,GB -3275480320,3275489279,EU +3275460608,3275460863,HK +3275460864,3275468655,GB +3275468656,3275468671,IE +3275468672,3275468735,GB +3275468736,3275468751,IE +3275468752,3275468767,GB +3275468768,3275468799,IE +3275468800,3275475879,GB +3275475880,3275475967,EU +3275475968,3275476223,GB +3275476224,3275476287,EU +3275476288,3275476319,GB +3275476320,3275476351,EU +3275476352,3275476479,GB +3275476480,3275476991,EU +3275476992,3275477567,GB +3275477568,3275477759,EU +3275477760,3275478271,GB +3275478272,3275478527,EU +3275478528,3275481087,GB +3275481088,3275483135,EU +3275483136,3275483647,GB +3275483648,3275485183,EU +3275485184,3275485215,GB +3275485216,3275485247,EU +3275485248,3275485375,GB +3275485376,3275489279,EU 3275489280,3275497471,GB 3275497472,3275505663,DE 3275505664,3275506175,PL @@ -59282,7 +60218,6 @@ 3275510752,3275510783,NL 3275510784,3275510911,CY 3275510912,3275511167,GB -3275511168,3275511295,LV 3275511296,3275511551,GB 3275511552,3275511679,NL 3275511680,3275511807,CY @@ -59298,7 +60233,6 @@ 3275512960,3275513023,PL 3275513024,3275513087,UA 3275513088,3275513151,CY -3275513152,3275513215,ES 3275513216,3275513279,CH 3275513280,3275513343,CY 3275513344,3275513471,PL @@ -59335,9 +60269,11 @@ 3275551744,3275552767,RU 3275552768,3275553791,LV 3275553792,3275554815,FI -3275554816,3275579647,EU -3275579648,3275579903,NL -3275579904,3275620351,EU +3275554816,3275588447,EU +3275588448,3275588463,BE +3275588464,3275612927,EU +3275612928,3275613183,LU +3275613184,3275620351,EU 3275620352,3275622399,RU 3275622400,3275623423,GB 3275623424,3275623935,PL @@ -59455,7 +60391,8 @@ 3275905536,3275905791,NL 3275905792,3275906303,AT 3275906304,3275906559,UA -3275906560,3275907071,SE +3275906560,3275906815,NO +3275906816,3275907071,SE 3275907072,3275907327,RU 3275907328,3275907583,CH 3275907584,3275907839,PL @@ -59504,56 +60441,36 @@ 3275923456,3275931647,ME 3275931648,3275939839,UA 3275939840,3275948031,GB -3275948032,3275953407,SE -3275953408,3275953527,FI -3275953528,3275953535,SE -3275953536,3275953663,FI -3275953664,3276013567,SE -3276013568,3276014079,GB -3276014080,3276015103,FR -3276015104,3276016639,GB -3276016640,3276016895,FR -3276016896,3276017919,GB -3276017920,3276018431,FR -3276018432,3276020129,GB +3275948032,3276013567,SE +3276013568,3276014239,GB +3276014240,3276014247,FR +3276014248,3276014799,GB +3276014800,3276014815,FR +3276014816,3276019495,GB +3276019496,3276019503,FR +3276019504,3276019631,GB +3276019632,3276019639,FR +3276019640,3276020129,GB 3276020130,3276020130,FR -3276020131,3276020223,GB -3276020224,3276020479,FR -3276020480,3276020735,GB -3276020736,3276021247,FR -3276021248,3276021503,GB -3276021504,3276022015,FR -3276022016,3276022783,GB -3276022784,3276023039,FR -3276023040,3276023295,GB -3276023296,3276023551,FR -3276023552,3276024575,GB -3276024576,3276024831,FR -3276024832,3276025087,GB -3276025088,3276025343,FR -3276025344,3276026367,GB -3276026368,3276026623,FR -3276026624,3276027391,GB -3276027392,3276027647,FR -3276027648,3276029183,GB -3276029184,3276029439,FR -3276029440,3276030207,GB -3276030208,3276030719,FR -3276030720,3276031231,GB -3276031232,3276031487,FR -3276031488,3276036095,GB -3276036096,3276036351,FR -3276036352,3276037119,GB -3276037120,3276037375,FR -3276037376,3276039167,GB -3276039168,3276039423,FR -3276039424,3276042239,GB -3276042240,3276043007,FR -3276043008,3276044799,GB -3276044800,3276045311,FR -3276045312,3276045917,GB -3276045918,3276045918,FR -3276045919,3276046335,GB +3276020131,3276025159,GB +3276025160,3276025167,FR +3276025168,3276031479,GB +3276031480,3276031487,FR +3276031488,3276032311,GB +3276032312,3276032319,FR +3276032320,3276033535,GB +3276033536,3276033791,FR +3276033792,3276040351,GB +3276040352,3276040367,FR +3276040368,3276042015,GB +3276042016,3276042031,FR +3276042032,3276042079,GB +3276042080,3276042095,FR +3276042096,3276042495,GB +3276042496,3276042751,FR +3276042752,3276045247,GB +3276045248,3276045255,FR +3276045256,3276046335,GB 3276046336,3276062719,RU 3276062720,3276063231,PL 3276063232,3276063743,FR @@ -59641,7 +60558,11 @@ 3276185600,3276193791,NO 3276193792,3276201983,RU 3276201984,3276210175,AT -3276210176,3276275711,DE +3276210176,3276234303,DE +3276234304,3276234367,GB +3276234368,3276259071,DE +3276259072,3276259327,US +3276259328,3276275711,DE 3276275712,3276283903,SK 3276283904,3276292095,GB 3276292096,3276300287,BE @@ -59704,44 +60625,37 @@ 3276451584,3276455935,EU 3276455936,3276464127,BE 3276464128,3276472319,GR -3276472320,3276473343,EU -3276473344,3276473855,AT -3276473856,3276477439,EU -3276477440,3276477951,CH -3276477952,3276479999,EU -3276480000,3276480511,FR -3276480512,3276481023,EU -3276481024,3276481535,RU -3276481536,3276485631,EU +3276472320,3276473303,EU +3276473304,3276473311,AT +3276473312,3276479999,EU +3276480000,3276480255,FR +3276480256,3276485631,EU 3276485632,3276486655,GB -3276486656,3276493567,EU -3276493568,3276493823,GB -3276493824,3276494335,EU -3276494336,3276494591,GB -3276494592,3276498431,EU -3276498432,3276498943,DE -3276498944,3276502527,EU -3276502528,3276505087,DE -3276505088,3276506623,EU -3276506624,3276507135,ZA -3276507136,3276508927,EU -3276508928,3276509183,GB +3276486656,3276503039,EU +3276503040,3276505087,DE +3276505088,3276508679,EU +3276508680,3276508687,GB +3276508688,3276509183,EU 3276509184,3276510207,IT 3276510208,3276512255,EU 3276512256,3276513023,ZA -3276513024,3276518911,EU -3276518912,3276519423,BE -3276519424,3276521983,EU -3276521984,3276523519,NL -3276523520,3276529663,EU -3276529664,3276530175,NL -3276530176,3276530687,EU -3276530688,3276532639,NL -3276532640,3276532640,EU -3276532641,3276532735,NL -3276532736,3276534527,EU +3276513024,3276517631,EU +3276517632,3276517887,NL +3276517888,3276518367,EU +3276518368,3276518383,NL +3276518384,3276522495,EU +3276522496,3276523519,NL +3276523520,3276527615,EU +3276527616,3276527743,PK +3276527744,3276528351,EU +3276528352,3276528359,GB +3276528360,3276530687,EU +3276530688,3276531711,NL +3276531712,3276534527,EU 3276534528,3276534783,AU -3276534784,3276537343,EU +3276534784,3276536687,EU +3276536688,3276536695,HU +3276536696,3276537343,EU 3276537344,3276537599,AT 3276537600,3276537855,EU 3276537856,3276668927,ES @@ -59781,7 +60695,7 @@ 3276695040,3276695551,RU 3276695552,3276696063,UA 3276696064,3276696575,RO -3276696576,3276697087,CZ +3276696576,3276697087,EU 3276697088,3276697599,GB 3276697600,3276698111,UA 3276698112,3276699647,RU @@ -59800,42 +60714,22 @@ 3276731392,3276732415,UA 3276732416,3276733439,DE 3276733440,3276734463,UA -3276734464,3276735999,EU -3276736000,3276736511,AT -3276736512,3276739583,EU -3276739584,3276740095,CH -3276740096,3276741631,EU -3276741632,3276742655,FR -3276742656,3276744191,EU -3276744192,3276744703,BE -3276744704,3276746751,EU -3276746752,3276748287,CH -3276748288,3276751359,EU -3276751360,3276751871,GB -3276751872,3276752383,EU -3276752384,3276752895,GB -3276752896,3276758015,EU +3276734464,3276746751,EU +3276746752,3276747775,CH +3276747776,3276758015,EU 3276758016,3276759039,GB -3276759040,3276759551,DE -3276759552,3276760063,EU +3276759040,3276760063,EU 3276760064,3276761087,DE -3276761088,3276764671,EU -3276764672,3276765183,DE +3276761088,3276765183,EU 3276765184,3276766207,GB -3276766208,3276770303,EU -3276770304,3276770815,ES -3276770816,3276773375,EU -3276773376,3276773887,DK -3276773888,3276775423,EU -3276775424,3276781055,NL -3276781056,3276781567,EU +3276766208,3276775423,EU +3276775424,3276780543,NL +3276780544,3276781567,EU 3276781568,3276782591,BE -3276782592,3276783103,EU -3276783104,3276783615,IT -3276783616,3276783871,EU -3276783872,3276784383,FR -3276784384,3276794367,EU -3276794368,3276795903,BE +3276782592,3276789279,EU +3276789280,3276789295,FI +3276789296,3276794879,EU +3276794880,3276795903,BE 3276795904,3276797951,AT 3276797952,3276799999,EU 3276800000,3276824575,GB @@ -59865,94 +60759,51 @@ 3276861440,3276865535,DK 3276865536,3276866303,NL 3276866304,3276866559,EU -3276866560,3276866687,GB -3276866688,3276866815,IT +3276866560,3276866815,GB 3276866816,3276867071,EU -3276867072,3276868607,IT -3276868608,3276868863,GB -3276868864,3276869119,IT -3276869120,3276870143,GB -3276870144,3276870399,IT -3276870400,3276870655,GB -3276870656,3276871423,IT -3276871424,3276873983,GB +3276867072,3276873983,GB 3276873984,3276874239,ES -3276874240,3276875263,GB -3276875264,3276875775,NL -3276875776,3276876383,GB +3276874240,3276876383,GB 3276876384,3276876415,NL -3276876416,3276881919,GB -3276881920,3276883199,IT -3276883200,3276883711,GB -3276883712,3276883967,IT -3276883968,3276886363,GB +3276876416,3276882431,GB +3276882432,3276882687,IT +3276882688,3276886363,GB 3276886364,3276886367,DE -3276886368,3276886783,GB -3276886784,3276887039,DE -3276887040,3276888575,GB -3276888576,3276888831,IT -3276888832,3276890623,GB -3276890624,3276891135,IT -3276891136,3276892159,GB -3276892160,3276893951,IT -3276893952,3276894207,GB -3276894208,3276894463,IT -3276894464,3276895743,GB -3276895744,3276895999,IT -3276896000,3276896847,GB -3276896848,3276896855,BE -3276896856,3276897279,GB -3276897280,3276897535,BE -3276897536,3276898815,GB -3276898816,3276899327,CH -3276899328,3276899839,GB -3276899840,3276900095,CH -3276900096,3276900863,GB -3276900864,3276901375,CH -3276901376,3276901439,FR -3276901440,3276901471,CH -3276901472,3276901631,FR -3276901632,3276901887,CH -3276901888,3276903167,GB -3276903168,3276903679,SE -3276903680,3276907263,GB -3276907264,3276907341,NL +3276886368,3276892159,GB +3276892160,3276893183,IT +3276893184,3276893695,GB +3276893696,3276893951,IT +3276893952,3276898671,GB +3276898672,3276898687,CH +3276898688,3276903423,GB +3276903424,3276903679,SE +3276903680,3276907341,GB 3276907342,3276907342,EU -3276907343,3276907775,NL -3276907776,3276908543,GB -3276908544,3276908671,SE -3276908672,3276908687,NL -3276908688,3276908703,GB -3276908704,3276908799,SE -3276908800,3276910847,GB -3276910848,3276911103,IT -3276911104,3276911615,GB -3276911616,3276912127,IT -3276912128,3276912383,GB +3276907343,3276907519,GB +3276907520,3276907775,NL +3276907776,3276908287,GB +3276908288,3276908543,BE +3276908544,3276911615,GB +3276911616,3276911871,IT +3276911872,3276912383,GB 3276912384,3276912511,IT 3276912512,3276912879,GB 3276912880,3276913151,IT 3276913152,3276917231,GB 3276917232,3276917247,FR -3276917248,3276917759,GB -3276917760,3276918015,ES -3276918016,3276919295,GB -3276919296,3276919551,DE -3276919552,3276920831,GB -3276920832,3276921087,DE -3276921088,3276921855,GB -3276921856,3276922111,DE -3276922112,3276922879,GB +3276917248,3276919375,GB +3276919376,3276919391,DE +3276919392,3276919471,GB +3276919472,3276919479,DE +3276919480,3276919487,GB +3276919488,3276919535,DE +3276919536,3276922879,GB 3276922880,3276923135,FR 3276923136,3276923391,GB 3276923392,3276923903,FR -3276923904,3276924091,GB -3276924092,3276924092,FR -3276924093,3276925951,GB +3276923904,3276925951,GB 3276925952,3276926207,FR -3276926208,3276926719,GB -3276926720,3276926975,FR -3276926976,3276931071,GB +3276926208,3276931071,GB 3276931072,3276939263,KZ 3276939264,3276955647,DE 3276955648,3276963839,GB @@ -60004,7 +60855,6 @@ 3277184768,3277185023,UA 3277185024,3277185279,SA 3277185280,3277185535,RU -3277185536,3277185791,DE 3277185792,3277186047,PL 3277186048,3277186303,IT 3277186304,3277186559,DE @@ -60034,7 +60884,8 @@ 3277193216,3277258751,NL 3277258752,3277324287,TR 3277324288,3277324799,RU -3277324800,3277325311,KZ +3277324800,3277325055,KZ +3277325056,3277325311,RU 3277325312,3277326335,IT 3277326336,3277326847,GB 3277326848,3277327359,AT @@ -60044,7 +60895,6 @@ 3277328896,3277329407,NL 3277329408,3277329919,GB 3277329920,3277330431,RU -3277330432,3277330943,RO 3277330944,3277331455,UA 3277331456,3277332479,PL 3277332480,3277332991,NL @@ -60146,15 +60996,41 @@ 3277388544,3277388799,HU 3277388800,3277389311,RU 3277389312,3277389823,AM -3277389824,3277399295,GB -3277399296,3277399311,BE -3277399312,3277399359,GB -3277399360,3277399551,BE -3277399552,3277455359,GB +3277389824,3277394943,GB +3277394944,3277395455,US +3277395456,3277402591,GB +3277402592,3277402607,ES +3277402608,3277403135,GB +3277403136,3277403215,FR +3277403216,3277403231,GB +3277403232,3277403295,FR +3277403296,3277403423,GB +3277403424,3277403439,FR +3277403440,3277403647,GB +3277403648,3277403807,ES +3277403808,3277404159,GB +3277404160,3277404415,DE +3277404416,3277404463,IT +3277404464,3277404495,GB +3277404496,3277404511,IT +3277404512,3277404543,GB +3277404544,3277404559,IT +3277404560,3277404591,GB +3277404592,3277404607,IT +3277404608,3277404623,GB +3277404624,3277404649,IT +3277404650,3277404671,GB +3277404672,3277404719,CH +3277404720,3277405183,GB +3277405184,3277405263,SE +3277405264,3277405439,GB +3277405440,3277405471,DE +3277405472,3277452639,GB +3277452640,3277452647,IE +3277452648,3277452655,DK +3277452656,3277455359,GB 3277455360,3277463551,DE -3277463552,3277464063,US -3277464064,3277464575,FR -3277464576,3277471743,US +3277463552,3277471743,US 3277471744,3277474815,NL 3277474816,3277475711,BE 3277475712,3277476607,NL @@ -60351,29 +61227,18 @@ 3278020608,3278028799,RU 3278028800,3278036991,DE 3278036992,3278045183,FR -3278045184,3278054911,GB -3278054912,3278055423,NL -3278055424,3278061567,GB +3278045184,3278061567,GB 3278061568,3278065663,NL 3278065664,3278110719,GB -3278110720,3278115839,SE -3278115840,3278116351,ES -3278116352,3278125055,SE -3278125056,3278125567,NL -3278125568,3278176255,SE -3278176256,3278221091,FR -3278221092,3278221093,GB -3278221094,3278241791,FR +3278110720,3278176255,SE +3278176256,3278241791,FR 3278241792,3278307327,GB -3278307328,3278358527,IT -3278358528,3278358783,US -3278358784,3278372863,IT +3278307328,3278372863,IT 3278372864,3278635007,GB 3278635008,3278635263,NL 3278635264,3278635519,EU 3278635520,3278766079,NL 3278766080,3278766591,RO -3278766592,3278767103,RU 3278767104,3278767615,RO 3278767616,3278768127,UA 3278768128,3278769151,GB @@ -60401,7 +61266,9 @@ 3278780928,3278781439,LT 3278781440,3278781951,DE 3278781952,3278782463,RU -3278782464,3278790655,GB +3278782464,3278790095,GB +3278790096,3278790111,ES +3278790112,3278790655,GB 3278790656,3278807039,IT 3278807040,3278815231,GB 3278815232,3278823423,AT @@ -60411,49 +61278,115 @@ 3278913536,3278921727,CH 3278921728,3278929919,RU 3278929920,3278938111,TR -3278938112,3278940355,DE +3278938112,3278939611,DE +3278939612,3278939615,FR +3278939616,3278940055,DE +3278940056,3278940059,SG +3278940060,3278940355,DE 3278940356,3278940359,NL -3278940360,3278941295,DE +3278940360,3278940867,DE +3278940868,3278940871,GB +3278940872,3278941251,DE +3278941252,3278941255,US +3278941256,3278941295,DE 3278941296,3278941299,US -3278941300,3278943949,DE +3278941300,3278942139,DE +3278942140,3278942143,NL +3278942144,3278942255,DE +3278942256,3278942259,NZ +3278942260,3278942359,DE +3278942360,3278942363,AU +3278942364,3278942523,DE +3278942524,3278942527,IN +3278942528,3278942695,DE +3278942696,3278942699,SG +3278942700,3278943027,DE +3278943028,3278943028,GB +3278943029,3278943310,DE +3278943311,3278943311,BE +3278943312,3278943415,DE +3278943416,3278943416,NL +3278943417,3278943428,DE +3278943429,3278943429,IT +3278943430,3278943666,DE +3278943667,3278943667,IT +3278943668,3278943940,DE +3278943941,3278943941,GB +3278943942,3278943949,DE 3278943950,3278943950,BE -3278943951,3278944080,DE +3278943951,3278944022,DE +3278944023,3278944023,AT +3278944024,3278944080,DE 3278944081,3278944081,GB 3278944082,3278944098,DE 3278944099,3278944099,GB -3278944100,3278944161,DE +3278944100,3278944137,DE +3278944138,3278944138,GB +3278944139,3278944161,DE 3278944162,3278944162,GB -3278944163,3278944286,DE +3278944163,3278944202,DE +3278944203,3278944203,NL +3278944204,3278944286,DE 3278944287,3278944287,CA 3278944288,3278944294,DE 3278944295,3278944295,US 3278944296,3278944305,DE 3278944306,3278944306,US -3278944307,3278944612,DE +3278944307,3278944375,DE +3278944376,3278944376,US +3278944377,3278944417,DE +3278944418,3278944418,US +3278944419,3278944612,DE 3278944613,3278944613,US 3278944614,3278944616,DE 3278944617,3278944617,US -3278944618,3278944660,DE +3278944618,3278944628,DE +3278944629,3278944629,US +3278944630,3278944643,DE +3278944644,3278944644,US +3278944645,3278944660,DE 3278944661,3278944661,US 3278944662,3278944666,DE 3278944667,3278944667,US -3278944668,3278944680,DE +3278944668,3278944677,DE +3278944678,3278944678,CA +3278944679,3278944680,DE 3278944681,3278944681,US -3278944682,3278944714,DE +3278944682,3278944696,DE +3278944697,3278944697,CA +3278944698,3278944708,DE +3278944709,3278944709,US +3278944710,3278944714,DE 3278944715,3278944715,CA -3278944716,3278944747,DE +3278944716,3278944726,DE +3278944727,3278944727,US +3278944728,3278944732,DE +3278944733,3278944733,US +3278944734,3278944747,DE 3278944748,3278944748,US 3278944749,3278944755,DE 3278944756,3278944756,US 3278944757,3278944983,DE 3278944984,3278944987,CA -3278944988,3278945287,DE +3278944988,3278945063,DE +3278945064,3278945067,US +3278945068,3278945287,DE 3278945288,3278945291,US -3278945292,3278945407,DE +3278945292,3278945315,DE +3278945316,3278945319,US +3278945320,3278945407,DE 3278945408,3278945411,US 3278945412,3278945527,DE 3278945528,3278945531,US -3278945532,3278946074,DE +3278945532,3278945571,DE +3278945572,3278945575,US +3278945576,3278945775,DE +3278945776,3278945779,US +3278945780,3278945805,DE +3278945806,3278945806,FR +3278945807,3278945833,DE +3278945834,3278945834,NL +3278945835,3278946074,DE 3278946075,3278946075,US 3278946076,3278946081,DE 3278946082,3278946082,US @@ -60497,7 +61430,6 @@ 3279057152,3279057407,GB 3279057408,3279057919,FR 3279057920,3279058431,RO -3279058432,3279058943,RU 3279058944,3279059455,UA 3279059456,3279060479,RU 3279060480,3279060991,PL @@ -60508,97 +61440,51 @@ 3279085568,3279089663,NL 3279089664,3279093759,KG 3279093760,3279123455,FR -3279123456,3279123711,RE -3279123712,3279159295,FR +3279123456,3279123716,RE +3279123717,3279123717,FR +3279123718,3279123720,RE +3279123721,3279123721,FR +3279123722,3279123967,RE +3279123968,3279159295,FR 3279159296,3279290367,PL -3279290368,3279290879,EU -3279290880,3279291391,NL -3279291392,3279291903,EU -3279291904,3279294463,NL +3279290368,3279292415,EU +3279292416,3279294463,NL 3279294464,3279295999,EU 3279296000,3279296511,ZA -3279296512,3279297023,ES -3279297024,3279297535,EU -3279297536,3279298047,SE +3279296512,3279298047,EU 3279298048,3279298559,ZA -3279298560,3279299071,DE -3279299072,3279299583,EU -3279299584,3279300095,DE -3279300096,3279301631,EU +3279298560,3279301631,EU 3279301632,3279304703,DE -3279304704,3279305727,EU -3279305728,3279306751,DE -3279306752,3279307263,EU -3279307264,3279307775,FR -3279307776,3279308287,EU -3279308288,3279308799,FR -3279308800,3279309311,EU -3279309312,3279310335,FR -3279310336,3279310847,EU +3279304704,3279310847,EU 3279310848,3279311871,DE -3279311872,3279316479,EU -3279316480,3279317503,IT -3279317504,3279320063,EU +3279311872,3279319295,EU +3279319296,3279319423,AT +3279319424,3279320063,EU 3279320064,3279321087,FR -3279321088,3279321599,EU -3279321600,3279322111,DK -3279322112,3279323391,EU -3279323392,3279323903,GB -3279323904,3279324671,EU -3279324672,3279325183,GB -3279325184,3279326719,EU -3279326720,3279329279,GB +3279321088,3279327231,EU +3279327232,3279329279,GB 3279329280,3279331327,EU -3279331328,3279332863,GB -3279332864,3279334399,EU -3279334400,3279334911,GB -3279334912,3279335935,EU -3279335936,3279339519,GB -3279339520,3279340031,EU -3279340032,3279340543,IT -3279340544,3279341055,EU -3279341056,3279341567,IT -3279341568,3279343871,EU +3279331328,3279332351,GB +3279332352,3279337471,EU +3279337472,3279339519,GB +3279339520,3279343871,EU 3279343872,3279344127,BE -3279344128,3279345151,EU -3279345152,3279345663,SE -3279345664,3279346687,GB -3279346688,3279347199,EU -3279347200,3279347711,FR -3279347712,3279348223,SE -3279348224,3279349759,EU -3279349760,3279350783,DE -3279350784,3279351295,EU -3279351296,3279351807,GB -3279351808,3279352319,DK -3279352320,3279353343,EU -3279353344,3279354879,DK -3279354880,3279355391,AT -3279355392,3279373311,EU +3279344128,3279353855,EU +3279353856,3279354879,DK +3279354880,3279373311,EU 3279373312,3279374335,FI 3279374336,3279374591,EU 3279374592,3279375359,FI -3279375360,3279380479,EU -3279380480,3279380991,CH -3279380992,3279383295,EU -3279383296,3279383807,CH -3279383808,3279384319,EU -3279384320,3279384831,CH -3279384832,3279421439,EU +3279375360,3279421439,EU 3279421440,3279486975,IT 3279486976,3279552511,NL 3279552512,3279560703,LV 3279560704,3279568895,GB 3279568896,3279577087,IT 3279577088,3279585279,BE -3279585280,3279585791,DE -3279585792,3279586815,GB -3279586816,3279587327,DE -3279587328,3279589375,GB -3279589376,3279589887,DE -3279589888,3279593983,GB -3279593984,3279594495,DE -3279594496,3279596543,GB +3279585280,3279593407,GB +3279593408,3279593440,DE +3279593441,3279596543,GB 3279596544,3279597311,DE 3279597312,3279598591,GB 3279598592,3279599615,DE @@ -60659,7 +61545,6 @@ 3279989760,3279990271,PL 3279990272,3279990783,DK 3279990784,3279991295,IL -3279991296,3279991807,UA 3279991808,3279992319,PL 3279992320,3279992831,UA 3279992832,3279993855,NL @@ -60681,17 +61566,9 @@ 3280009728,3280010239,GB 3280010240,3280010751,UA 3280010752,3280011263,TR -3280011264,3280015871,EU -3280015872,3280016383,GB -3280016384,3280017919,EU -3280017920,3280018431,IT -3280018432,3280019967,EU -3280019968,3280020479,CH -3280020480,3280023551,EU +3280011264,3280023551,EU 3280023552,3280024575,IT -3280024576,3280037887,EU -3280037888,3280038399,CH -3280038400,3280076799,EU +3280024576,3280076799,EU 3280076800,3280084991,GB 3280084992,3280093183,BA 3280093184,3280109567,GR @@ -60856,9 +61733,7 @@ 3280658176,3280658431,DE 3280658432,3280660479,MT 3280660480,3280662527,RU -3280662528,3280662783,DE -3280662784,3280663295,CZ -3280663296,3280666623,DE +3280662528,3280666623,DE 3280666624,3280732159,NO 3280732160,3280764927,DE 3280764928,3280765951,TJ @@ -60895,17 +61770,15 @@ 3280863232,3280928767,TR 3280928768,3280928831,GB 3280928832,3280928847,RU -3280928848,3280933365,GB -3280933366,3280933366,DE -3280933367,3280934911,GB -3280934912,3280936959,DE -3280936960,3280955709,GB +3280928848,3280928855,GB +3280928856,3280928863,RU +3280928864,3280955709,GB 3280955710,3280955713,DE -3280955714,3280956415,GB -3280956416,3280956927,DE -3280956928,3280991231,GB -3280991232,3280991743,DE -3280991744,3280994559,GB +3280955714,3280958919,GB +3280958920,3280958927,DE +3280958928,3280963375,GB +3280963376,3280963383,DE +3280963384,3280994559,GB 3280994560,3280994815,RU 3280994816,3280995071,NL 3280995072,3280995327,DE @@ -60938,16 +61811,28 @@ 3281010688,3281018879,BE 3281018880,3281027071,CZ 3281027072,3281027327,GB -3281027328,3281027775,EU -3281027776,3281027791,GB -3281027792,3281028095,EU -3281028096,3281028159,GB -3281028160,3281030399,EU +3281027328,3281027583,EU +3281027584,3281027615,GB +3281027616,3281027631,EU +3281027632,3281027679,GB +3281027680,3281027695,EU +3281027696,3281027743,GB +3281027744,3281027775,EU +3281027776,3281027807,GB +3281027808,3281027839,EU +3281027840,3281027903,GB +3281027904,3281028063,EU +3281028064,3281028159,GB +3281028160,3281028991,EU +3281028992,3281029055,GB +3281029056,3281030399,EU 3281030400,3281035263,GB 3281035264,3281043455,CH 3281043456,3281059839,RU 3281059840,3281062911,DE -3281062912,3281063167,EU +3281062912,3281063039,EU +3281063040,3281063111,DE +3281063112,3281063167,EU 3281063168,3281125375,DE 3281125376,3281133567,SK 3281133568,3281141759,IR @@ -61039,7 +61924,7 @@ 3281969152,3281969663,RU 3281969664,3281970175,PL 3281970176,3281970687,RU -3281970688,3281971199,LI +3281970688,3281971199,CH 3281971200,3281971711,RU 3281971712,3281972223,RO 3281972224,3281972735,DE @@ -61115,9 +62000,7 @@ 3282206720,3282223103,CH 3282223104,3282231295,BE 3282231296,3282239487,DE -3282239488,3282287615,SE -3282287616,3282287871,FI -3282287872,3282305023,SE +3282239488,3282305023,SE 3282305024,3282370559,PL 3282370560,3282436095,FI 3282436096,3282477055,GB @@ -61186,7 +62069,7 @@ 3283181568,3283182591,NO 3283182592,3283183615,PL 3283183616,3283184639,RU -3283185664,3283187711,UA +3283186688,3283187711,UA 3283187712,3283188735,RU 3283188736,3283189759,UA 3283189760,3283206143,DE @@ -61291,7 +62174,6 @@ 3283493120,3283493375,IL 3283493376,3283493887,PL 3283493888,3283494143,DK -3283494144,3283494399,GB 3283494400,3283494655,PL 3283494656,3283494911,DK 3283494912,3283495167,PL @@ -61336,47 +62218,19 @@ 3283540992,3283541503,RO 3283541504,3283542015,CH 3283542016,3283550207,IT -3283550208,3283551231,EU -3283551232,3283552255,AT -3283552256,3283554815,EU -3283554816,3283555327,CH -3283555328,3283561471,EU +3283550208,3283561471,EU 3283561472,3283562495,GB 3283562496,3283563519,EU -3283563520,3283565055,GB -3283565056,3283566079,EU -3283566080,3283566591,GB -3283566592,3283568639,EU +3283563520,3283564543,GB +3283564544,3283568639,EU 3283568640,3283569663,GB 3283569664,3283570687,EU 3283570688,3283570943,GB -3283570944,3283573247,EU -3283573248,3283574271,GB -3283574272,3283575807,EU -3283575808,3283576319,DE -3283576320,3283576831,EU +3283570944,3283576831,EU 3283576832,3283579903,DE -3283579904,3283582463,EU -3283582464,3283582975,DE -3283582976,3283591679,EU -3283591680,3283592191,DE -3283592192,3283592703,CH -3283592704,3283593215,EU +3283579904,3283593215,EU 3283593216,3283595263,IT -3283595264,3283595775,DE -3283595776,3283597311,EU -3283597312,3283597823,GB -3283597824,3283603455,EU -3283603456,3283603967,GB -3283603968,3283607551,EU -3283607552,3283608575,BE -3283608576,3283609087,EU -3283609088,3283609599,DE -3283609600,3283610111,EU -3283610112,3283610623,DE -3283610624,3283612159,EU -3283612160,3283612671,IT -3283612672,3283615743,EU +3283595264,3283615743,EU 3283615744,3283623935,HU 3283623936,3283632127,DK 3283632128,3283632639,NL @@ -61394,9 +62248,7 @@ 3283639296,3283639807,CH 3283639808,3283640319,DE 3283640320,3283648511,DK -3283648512,3283650047,BE -3283650048,3283650559,DE -3283650560,3283650927,BE +3283648512,3283650927,BE 3283650928,3283650943,GB 3283650944,3283650975,BE 3283650976,3283651007,GB @@ -61446,7 +62298,7 @@ 3283977728,3283978751,RU 3283978752,3283979263,RO 3283979264,3283979775,IL -3283979776,3283980287,EU +3283979776,3283980287,NO 3283980288,3283980799,RO 3283980800,3283981823,CH 3283981824,3283983359,RO @@ -61516,7 +62368,7 @@ 3284014336,3284014591,IT 3284014592,3284014847,GB 3284014848,3284015103,IL -3284015104,3284015359,PL +3284015104,3284015359,US 3284015360,3284015615,DK 3284015616,3284015871,AT 3284015872,3284016127,FR @@ -61541,7 +62393,6 @@ 3284045056,3284045311,LT 3284045312,3284045567,DE 3284045568,3284045823,AT -3284045824,3284046079,UA 3284046080,3284046335,DE 3284046336,3284046591,NL 3284046592,3284046847,SE @@ -61607,7 +62458,7 @@ 3284099328,3284099583,HU 3284099584,3284100095,GR 3284100096,3284100607,AM -3284100608,3284101119,US +3284100608,3284101119,EU 3284101120,3284101631,UA 3284101632,3284102143,GB 3284102144,3284102399,DK @@ -61700,11 +62551,11 @@ 3284684288,3284684799,FR 3284684800,3284685311,DE 3284685312,3284685823,NL -3284685824,3284686335,DE +3284685824,3284686335,US 3284686336,3284686847,RO 3284686848,3284687359,PL 3284687360,3284687871,UA -3284687872,3284688383,NG +3284687872,3284688383,IL 3284688384,3284688895,IT 3284688896,3284697087,FR 3284697088,3284705279,GB @@ -61773,7 +62624,6 @@ 3285076480,3285076735,EU 3285076736,3285082111,NL 3285082112,3285084159,AT -3285084160,3285085183,LU 3285085184,3285086207,GB 3285086208,3285088255,PL 3285088256,3285088511,RO @@ -61784,7 +62634,7 @@ 3285098496,3285114879,GB 3285114880,3285115903,RU 3285115904,3285116415,PL -3285116416,3285116927,RU +3285116416,3285116927,CZ 3285116928,3285117439,UA 3285117440,3285117951,RU 3285117952,3285118463,FR @@ -61878,52 +62728,27 @@ 3285446656,3285447679,UA 3285447680,3285449727,RU 3285449728,3285450751,UA -3285450752,3285451007,GB -3285451008,3285454079,EU -3285454080,3285454335,GB -3285454336,3285457919,EU -3285457920,3285458175,GB -3285458176,3285458431,EU -3285458432,3285458943,GB -3285458944,3285459967,EU -3285459968,3285460479,FI -3285460480,3285460991,DK -3285460992,3285464575,EU -3285464576,3285465087,BE -3285465088,3285468671,EU -3285468672,3285469183,DE -3285469184,3285470207,EU -3285470208,3285470719,DE -3285470720,3285471231,EU -3285471232,3285471743,DE -3285471744,3285471999,EU -3285472000,3285472255,DE +3285450752,3285451455,EU +3285451456,3285451471,GB +3285451472,3285451607,EU +3285451608,3285451615,GB +3285451616,3285452495,EU +3285452496,3285452511,GB +3285452512,3285453439,EU +3285453440,3285453567,GB +3285453568,3285457071,EU +3285457072,3285457079,GB +3285457080,3285461183,EU +3285461184,3285461215,NL +3285461216,3285472255,EU 3285472256,3285472511,US -3285472512,3285476029,EU -3285476030,3285476030,AT -3285476031,3285480959,EU +3285472512,3285480959,EU 3285480960,3285481215,CH -3285481216,3285484543,EU -3285484544,3285485055,IE -3285485056,3285486591,EU -3285486592,3285487103,IT -3285487104,3285489151,EU -3285489152,3285489663,GB -3285489664,3285494271,EU -3285494272,3285494783,IT -3285494784,3285495807,EU -3285495808,3285496319,DE -3285496320,3285497343,EU -3285497344,3285497855,DE -3285497856,3285498623,EU -3285498624,3285498879,CH -3285498880,3285501727,EU -3285501728,3285501759,GB -3285501760,3285501844,EU -3285501845,3285501845,CZ -3285501846,3285510143,EU +3285481216,3285510143,EU 3285510144,3285512191,GB -3285512192,3285516287,EU +3285512192,3285513983,EU +3285513984,3285514239,GR +3285514240,3285516287,EU 3285516288,3285516687,BE 3285516688,3285516691,NL 3285516692,3285517311,BE @@ -61932,7 +62757,9 @@ 3285524224,3285524351,GB 3285524352,3285527455,BE 3285527456,3285527487,IL -3285527488,3285529727,BE +3285527488,3285529199,BE +3285529200,3285529215,IL +3285529216,3285529727,BE 3285529728,3285529855,GB 3285529856,3285533503,BE 3285533504,3285533519,GB @@ -61946,11 +62773,19 @@ 3285546688,3285546751,GB 3285546752,3285550335,BE 3285550336,3285550463,GB -3285550464,3285561087,BE +3285550464,3285552511,BE +3285552512,3285552639,GB +3285552640,3285553663,BE +3285553664,3285553727,DE +3285553728,3285561087,BE 3285561088,3285561103,SE 3285561104,3285567487,BE 3285567488,3285568511,NL -3285568512,3285581823,BE +3285568512,3285577983,BE +3285577984,3285578111,IT +3285578112,3285580287,BE +3285580288,3285580415,DE +3285580416,3285581823,BE 3285581824,3285606399,DE 3285606400,3285614591,GB 3285614592,3285630975,TR @@ -61975,7 +62810,7 @@ 3285762560,3285763071,RU 3285763072,3285763583,GB 3285763584,3285764095,DE -3285764096,3285765119,RU +3285764096,3285764607,RU 3285765120,3285766143,UA 3285766144,3285766655,DE 3285766656,3285767679,UA @@ -61995,7 +62830,6 @@ 3285772032,3285772287,SE 3285772288,3285772543,TR 3285772544,3285772799,LT -3285772800,3285773055,MT 3285773056,3285773311,DE 3285773312,3285773567,LV 3285773568,3285773823,KG @@ -62025,47 +62859,39 @@ 3285876736,3285909503,RU 3285909504,3285910335,EU 3285910336,3285910399,ES -3285910400,3285919743,EU +3285910400,3285911551,EU +3285911552,3285911807,GB +3285911808,3285917695,EU +3285917696,3285917703,GB +3285917704,3285919743,EU 3285919744,3285921791,QA 3285921792,3285922047,EU 3285922048,3285922303,FR -3285922304,3285922815,EU -3285922816,3285923327,KW -3285923328,3285928447,EU -3285928448,3285928959,ES -3285928960,3285934591,EU -3285934592,3285934847,ES -3285934848,3285935103,GB -3285935104,3285935871,EU +3285922304,3285926431,EU +3285926432,3285926463,CH +3285926464,3285935871,EU 3285935872,3285936127,GB -3285936128,3285938175,EU -3285938176,3285938431,ES -3285938432,3285939135,EU +3285936128,3285939135,EU 3285939136,3285939175,GB 3285939176,3285939183,EU 3285939184,3285939191,GB 3285939192,3285939743,EU 3285939744,3285939759,GB -3285939760,3285940735,EU -3285940736,3285941247,GB -3285941248,3285943551,EU -3285943552,3285943647,GB -3285943648,3285943679,NG -3285943680,3285943807,GB -3285943808,3285944319,EU -3285944320,3285944831,US -3285944832,3285945343,DK -3285945344,3285946111,EU -3285946112,3285946367,ES -3285946368,3285951487,EU -3285951488,3285951743,GB -3285951744,3285953535,EU +3285939760,3285939839,EU +3285939840,3285939967,GB +3285939968,3285941247,EU +3285941248,3285941503,ES +3285941504,3285949855,EU +3285949856,3285949887,ES +3285949888,3285950207,EU +3285950208,3285950463,IT +3285950464,3285951647,EU +3285951648,3285951679,ES +3285951680,3285953535,EU 3285953536,3285954047,PK 3285954048,3285962751,EU 3285962752,3285963775,DE -3285963776,3285964799,EU -3285964800,3285966335,GB -3285966336,3285975039,EU +3285963776,3285975039,EU 3285975040,3286013695,FR 3286013696,3286013951,RE 3286013952,3286106111,FR @@ -62100,7 +62926,7 @@ 3286317056,3286317567,RU 3286317568,3286318079,RO 3286318080,3286318591,CH -3286318592,3286319103,A2 +3286318592,3286319103,EU 3286319104,3286320127,RO 3286320128,3286321151,PL 3286321152,3286322175,CZ @@ -62149,13 +62975,17 @@ 3286368256,3286376447,CH 3286376448,3286384639,GB 3286384640,3286401023,DE -3286401024,3286403839,GB -3286403840,3286405375,GG +3286401024,3286403071,GB +3286403072,3286403327,GG +3286403328,3286404863,GB +3286404864,3286405375,GG 3286405376,3286405887,GB -3286405888,3286407167,GG -3286407168,3286407679,GB -3286407680,3286407935,GG -3286407936,3286409215,GB +3286405888,3286405951,GG +3286405952,3286406015,GB +3286406016,3286406143,GG +3286406144,3286407935,GB +3286407936,3286408191,GG +3286408192,3286409215,GB 3286409216,3286417407,DE 3286417408,3286417663,UA 3286417664,3286417919,IT @@ -62192,9 +63022,7 @@ 3286499328,3286564863,HU 3286564864,3286566655,AE 3286566656,3286567423,KW -3286567424,3286571007,AE -3286571008,3286571519,KW -3286571520,3286630399,AE +3286567424,3286630399,AE 3286630400,3286638591,BG 3286638592,3286646783,AT 3286646784,3286654975,RU @@ -62237,10 +63065,7 @@ 3286773760,3286777855,DE 3286777856,3286778111,GB 3286778112,3286781951,FR -3286781952,3286789119,GB -3286789120,3286789631,DE -3286789632,3286790143,FR -3286790144,3286794239,GB +3286781952,3286794239,GB 3286794240,3286888447,DE 3286888448,3286889471,IE 3286889472,3286892543,DE @@ -62288,7 +63113,8 @@ 3286908672,3286908927,PL 3286908928,3286909951,CH 3286909952,3286913023,UA -3286913024,3286913535,DE +3286913024,3286913279,DE +3286913280,3286913535,GB 3286914048,3286915071,BG 3286915072,3286916095,FR 3286917120,3286918143,RU @@ -62410,7 +63236,6 @@ 3287180288,3287181311,RU 3287181312,3287182335,UZ 3287182336,3287185407,UA -3287185408,3287186431,SE 3287186432,3287187455,FI 3287187456,3287196671,DE 3287196672,3287198719,PL @@ -62423,7 +63248,7 @@ 3287212544,3287212799,FR 3287212800,3287213311,PL 3287213312,3287213567,FR -3287213568,3287214079,RU +3287213568,3287213823,RU 3287214080,3287214335,GB 3287214336,3287214591,DE 3287214592,3287214847,NO @@ -62438,7 +63263,6 @@ 3287217408,3287217663,PL 3287217664,3287217919,RU 3287217920,3287218175,PL -3287218176,3287218431,DE 3287218432,3287218687,GB 3287218688,3287218943,RU 3287218944,3287219199,FR @@ -62470,8 +63294,7 @@ 3287443968,3287444479,BG 3287444480,3287444991,PL 3287444992,3287445503,DE -3287445504,3287446015,GB -3287446016,3287446527,UA +3287445504,3287446527,UA 3287446528,3287447039,PL 3287447040,3287447551,IL 3287447552,3287448063,DK @@ -62534,9 +63357,7 @@ 3287479296,3287480319,RO 3287480320,3287481343,AT 3287481344,3287482367,PL -3287482368,3287524095,DE -3287524096,3287524351,GB -3287524352,3287548927,DE +3287482368,3287548927,DE 3287548928,3287549439,UA 3287549440,3287549951,SE 3287549952,3287550463,UA @@ -62563,11 +63384,10 @@ 3287632384,3287632895,SE 3287632896,3287633407,RU 3287633408,3287633919,SK -3287633920,3287634431,GB +3287633920,3287634431,UA 3287634432,3287634943,RO 3287634944,3287635455,PL 3287635456,3287635967,DE -3287635968,3287636479,RO 3287636480,3287636991,IE 3287636992,3287637503,AT 3287637504,3287638015,PL @@ -62576,8 +63396,7 @@ 3287639552,3287640063,RU 3287640064,3287640575,PL 3287640576,3287641087,SI -3287641088,3287641599,A2 -3287641600,3287642111,FI +3287641088,3287641599,EU 3287642112,3287642623,UA 3287642624,3287643135,BE 3287643136,3287643647,IT @@ -62657,7 +63476,6 @@ 3287705600,3287706111,SA 3287706112,3287706623,RU 3287706624,3287707135,GB -3287707136,3287707647,FR 3287707648,3287708159,BE 3287708160,3287708671,NL 3287708672,3287709183,EU @@ -62684,7 +63502,7 @@ 3287736832,3287737343,LV 3287737344,3287737855,GB 3287737856,3287738367,FR -3287738368,3287738879,CH +3287738368,3287738879,GB 3287738880,3287739391,DE 3287739392,3287739903,NL 3287739904,3287740415,PT @@ -62733,7 +63551,21 @@ 3287834624,3287842815,GB 3287842816,3287851007,DE 3287851008,3287859199,UA -3287859200,3287867391,EU +3287859200,3287859455,GB +3287859456,3287859711,FK +3287859712,3287859967,EU +3287859968,3287860479,GB +3287860480,3287861247,EU +3287861248,3287862015,GB +3287862016,3287863807,EU +3287863808,3287864063,GB +3287864064,3287866383,EU +3287866384,3287866439,GB +3287866440,3287866495,EU +3287866496,3287866591,GB +3287866592,3287866607,EU +3287866608,3287866623,GB +3287866624,3287867391,EU 3287867392,3287867903,UA 3287867904,3287868415,PL 3287868416,3287868927,RO @@ -62788,9 +63620,7 @@ 3288006656,3288072191,GR 3288072192,3288088575,SE 3288088576,3288104959,RS -3288104960,3288151039,DE -3288151040,3288151551,NL -3288151552,3288236031,DE +3288104960,3288236031,DE 3288236032,3288236543,LI 3288236544,3288237055,FR 3288237056,3288238591,RO @@ -62850,7 +63680,7 @@ 3288428544,3288428799,CU 3288428800,3288429311,IN 3288429312,3288429567,ZA -3288429568,3288430335,GH +3288430080,3288430335,GH 3288430336,3288430591,EG 3288430592,3288432639,SC 3288432640,3288433407,ZA @@ -62865,13 +63695,16 @@ 3288435968,3288436223,PR 3288436224,3288436479,US 3288436480,3288436735,EG -3288436736,3288440575,ZA -3288440576,3288440831,TG -3288440832,3288441087,BB -3288441088,3288441343,VC -3288441344,3288442879,BB -3288442880,3288443135,KN -3288443136,3288444927,BB +3288436736,3288440831,ZA +3288440832,3288441135,BB +3288441136,3288441143,VC +3288441144,3288441183,BB +3288441184,3288441191,VC +3288441192,3288441239,BB +3288441240,3288441247,VC +3288441248,3288441303,BB +3288441304,3288441311,VC +3288441312,3288444927,BB 3288444928,3288449023,NG 3288449024,3288465407,SD 3288465408,3288465919,JM @@ -62880,7 +63713,11 @@ 3288466432,3288467455,SY 3288467456,3288469503,BI 3288469504,3288481791,ZA -3288481792,3288485887,ZW +3288481792,3288482303,ZW +3288482304,3288484863,ZA +3288484864,3288485119,ZW +3288485120,3288485631,ZA +3288485632,3288485887,ZW 3288485888,3288489983,MA 3288489984,3288514559,ZA 3288514560,3288522751,EG @@ -62890,10 +63727,9 @@ 3288535040,3288539135,CW 3288539136,3288543487,US 3288543488,3288543743,AP -3288543744,3288543996,DE +3288543744,3288543996,CH 3288543997,3288543997,EU -3288543998,3288543998,CH -3288543999,3288543999,DE +3288543998,3288543999,CH 3288544000,3288544498,US 3288544499,3288544499,EU 3288544500,3288544767,US @@ -62941,11 +63777,11 @@ 3288727808,3288753919,ZA 3288753920,3288754175,NG 3288758272,3288758527,EG -3288758528,3288772095,ZA -3288772096,3288772607,MU +3288758528,3288772607,ZA 3288774656,3288774911,ZA 3288774912,3288775167,EG 3288775168,3288777727,NG +3288777728,3288778239,TZ 3288778240,3288778495,ZA 3288778496,3288778751,MU 3288778752,3288779007,EG @@ -62959,8 +63795,7 @@ 3288787968,3288788223,EG 3288788224,3288792831,ZA 3288792832,3288793087,AO -3288793088,3289002751,ZA -3289002752,3289003007,TZ +3288793088,3289003007,ZA 3289005056,3289005311,TZ 3289005312,3289014527,ZA 3289014528,3289014783,EG @@ -62968,14 +63803,27 @@ 3289015296,3289015551,CM 3289015552,3289020159,ZA 3289020160,3289020415,UG -3289020416,3289044991,ZA +3289020416,3289020671,EG +3289020672,3289020927,ZA +3289021440,3289024767,ZA +3289024768,3289025023,GH +3289025024,3289025535,UG +3289026048,3289027327,ZA +3289027328,3289027583,TZ +3289027584,3289041407,ZA +3289041408,3289041663,NG +3289041664,3289044991,ZA 3289044992,3289047039,ML -3289047040,3289063423,ZA -3289069568,3289070335,ZA -3289070336,3289070591,ZW -3289070592,3289070847,NA -3289070848,3289071103,ZA -3289071616,3289086975,ZA +3289047040,3289048063,ZA +3289048064,3289048319,UG +3289048320,3289048831,ZA +3289048832,3289049087,NG +3289049088,3289054207,ZA +3289054208,3289055231,NG +3289055232,3289074431,ZA +3289074432,3289074687,DZ +3289074688,3289075711,ZA +3289077760,3289086975,ZA 3289086976,3289087231,SZ 3289087232,3289120767,ZA 3289120768,3289123327,PR @@ -63025,10 +63873,11 @@ 3290031360,3290060287,ZA 3290060288,3290060543,SZ 3290060544,3290103807,ZA -3290103808,3290104319,JO -3290104320,3290104831,EG +3290103808,3290104831,US 3290104832,3290106879,VE -3290106880,3290116095,US +3290106880,3290108415,US +3290108416,3290108671,CA +3290108672,3290116095,US 3290116096,3290118143,PE 3290118144,3290120191,US 3290120192,3290128383,MU @@ -63057,9 +63906,7 @@ 3290284032,3290288127,AO 3290288128,3290292223,NG 3290292224,3290296319,GH -3290296320,3290333183,ZA -3290333184,3290333439,ZW -3290333440,3290431487,ZA +3290296320,3290431487,ZA 3290431488,3290433535,JM 3290439680,3290447871,TT 3290447872,3290456063,AR @@ -63082,11 +63929,10 @@ 3290980352,3290984447,ZA 3290988544,3290992639,KE 3290992640,3290996735,GH +3290996736,3291000831,NG 3291004928,3291021311,NG 3291021312,3291029503,ZA -3291029504,3291033343,TZ -3291033344,3291033599,KE -3291033600,3291037695,TZ +3291029504,3291037695,TZ 3291045888,3291078655,ZA 3291078656,3291086847,DZ 3291086848,3291103231,PR @@ -63167,9 +64013,7 @@ 3291326464,3291330559,ZA 3291330560,3291331583,TZ 3291331584,3291332607,MW -3291332608,3291332615,ZA -3291332616,3291332863,NG -3291332864,3291348991,ZA +3291332608,3291348991,ZA 3291348992,3291353087,MZ 3291353088,3291353343,KE 3291353344,3291353599,EG @@ -63207,335 +64051,33 @@ 3291408384,3291410431,GM 3291410432,3291412479,NG 3291412480,3291414527,DZ -3291414528,3291432191,ZA -3291432192,3291432447,NA -3291432448,3291432703,ZA +3291414528,3291432703,ZA 3291432704,3291432959,NA -3291432960,3291433215,ZA -3291433216,3291433727,NA -3291433728,3291434239,ZA +3291432960,3291434239,ZA 3291434240,3291434751,A2 3291434752,3291435007,ZA 3291435008,3291439103,A2 +3291439104,3291447295,NG 3291447296,3291463679,CI 3291480064,3291484159,SC -3291484160,3291486463,DE -3291486464,3291486719,US -3291486720,3291488255,DE -3291488256,3291488511,US -3291488512,3291492351,SC -3291492352,3291492607,US -3291492608,3291496447,SC +3291484160,3291488255,DE +3291488256,3291496447,SC 3291496448,3291504639,US -3291504640,3291506431,SC -3291506432,3291506687,US -3291506688,3291510015,SC -3291510016,3291510527,US -3291510528,3291522559,SC -3291522560,3291522815,US -3291522816,3291529215,SC +3291504640,3291529215,SC 3291529216,3291533311,US 3291533312,3291535359,SC 3291535360,3291537407,US -3291537408,3291539711,SC -3291539712,3291539967,US -3291539968,3291540479,SC -3291540480,3291540735,US -3291540736,3291545599,SC +3291537408,3291545599,SC 3291742208,3292004351,US -3292004352,3292004863,SC -3292004864,3292005119,US -3292005120,3292008191,SC -3292008192,3292008447,US -3292008448,3292008959,SC -3292008960,3292009471,US -3292009472,3292011519,SC -3292011520,3292011775,US -3292011776,3292013055,SC -3292013056,3292013311,US -3292013312,3292017151,SC -3292017152,3292017407,US -3292017408,3292018431,SC -3292018432,3292018943,US -3292018944,3292020479,SC -3292020480,3292020735,US -3292020736,3292021247,SC -3292021248,3292021503,US -3292021504,3292023039,SC -3292023040,3292023295,US -3292023296,3292024063,SC -3292024064,3292024319,US -3292024320,3292025855,SC -3292025856,3292026367,US -3292026368,3292026879,SC -3292026880,3292027391,US -3292027392,3292027647,SC -3292027648,3292027903,US -3292027904,3292030975,SC -3292030976,3292031231,US -3292031232,3292031487,SC -3292031488,3292031743,US -3292031744,3292033023,SC -3292033024,3292033279,US -3292033280,3292035071,SC -3292035072,3292035327,US -3292035328,3292037375,SC -3292037376,3292037631,US -3292037632,3292039679,SC -3292039680,3292039935,US -3292039936,3292043007,SC -3292043008,3292043519,US -3292043520,3292045567,SC -3292045568,3292045823,US -3292045824,3292046079,SC -3292046080,3292046335,US -3292046336,3292047871,SC -3292047872,3292048639,US -3292048640,3292050687,SC -3292050688,3292050943,US -3292050944,3292059391,SC -3292059392,3292059647,US -3292059648,3292062207,SC -3292062208,3292062719,US -3292062720,3292062975,SC -3292062976,3292063231,US -3292063232,3292066303,SC -3292066304,3292066559,US -3292066560,3292068095,SC -3292068096,3292068351,US -3292068352,3292071935,SC -3292071936,3292072191,US -3292072192,3292072959,SC -3292072960,3292073215,US -3292073216,3292079103,SC -3292079104,3292079359,US -3292079360,3292080895,SC -3292080896,3292081151,US -3292081152,3292084735,SC -3292084736,3292084991,US -3292084992,3292088063,SC -3292088064,3292088319,US -3292088320,3292090367,SC -3292090368,3292090623,US -3292090624,3292094719,SC -3292094720,3292094975,US -3292094976,3292095999,SC -3292096000,3292096255,US -3292096256,3292097535,SC -3292097536,3292097791,US -3292097792,3292098815,SC -3292098816,3292099071,US -3292099072,3292102399,SC -3292102400,3292102655,US -3292102656,3292103167,SC -3292103168,3292103423,US -3292103424,3292103935,SC -3292103936,3292104191,US -3292104192,3292105215,SC -3292105216,3292105471,US -3292105472,3292110335,SC -3292110336,3292110591,US -3292110592,3292110847,SC -3292110848,3292111103,US -3292111104,3292112639,SC -3292112640,3292112895,US -3292112896,3292114687,SC -3292114688,3292114943,US -3292114944,3292115455,SC -3292115456,3292115711,US -3292115712,3292117503,SC -3292117504,3292117759,US -3292117760,3292118271,SC -3292118272,3292118527,US -3292118528,3292119295,SC -3292119296,3292119551,US -3292119552,3292121087,SC -3292121088,3292121343,US -3292121344,3292122111,SC -3292122112,3292122879,US -3292122880,3292128511,SC -3292128512,3292128767,US -3292128768,3292131583,SC -3292131584,3292131839,US -3292131840,3292133119,SC -3292133120,3292133375,US -3292133376,3292134143,SC -3292134144,3292134399,US -3292134400,3292134655,SC -3292134656,3292134911,US -3292134912,3292137983,SC -3292137984,3292138239,US -3292138240,3292138751,SC -3292138752,3292139007,US -3292139008,3292141311,SC -3292141312,3292141567,US -3292141568,3292143103,SC -3292143104,3292143359,US -3292143360,3292151551,SC -3292151552,3292151807,US -3292151808,3292153343,SC -3292153344,3292153599,US -3292153600,3292154367,SC -3292154368,3292154623,US -3292154624,3292162559,SC -3292162560,3292162815,US -3292162816,3292163583,SC -3292163584,3292163839,US -3292163840,3292164351,SC -3292164352,3292164607,US -3292164608,3292165119,SC -3292165120,3292165375,US -3292165376,3292166143,SC -3292166144,3292166399,US -3292166400,3292169215,SC -3292169216,3292169727,US -3292169728,3292172031,SC -3292172032,3292172543,US -3292172544,3292174335,SC -3292174336,3292174591,US -3292174592,3292175615,SC -3292175616,3292175871,US -3292175872,3292180479,SC -3292180480,3292180735,US -3292180736,3292181759,SC -3292181760,3292182015,US -3292182016,3292184063,SC -3292184064,3292184319,US -3292184320,3292185599,SC -3292185600,3292185855,US -3292185856,3292187135,SC -3292187136,3292187391,US -3292187392,3292188159,SC -3292188160,3292188415,US -3292188416,3292190207,SC -3292190208,3292190463,US -3292190464,3292190719,SC -3292190720,3292190975,US -3292190976,3292193279,SC -3292193280,3292193791,US -3292193792,3292196863,SC -3292196864,3292197119,US -3292197120,3292198399,SC -3292198400,3292198655,US -3292198656,3292199167,SC -3292199168,3292199423,US -3292199424,3292199679,SC -3292199680,3292200191,US -3292200192,3292200959,SC -3292200960,3292201215,SE -3292201216,3292201727,SC -3292201728,3292201983,US -3292201984,3292202751,SC -3292202752,3292203007,US -3292203008,3292203263,SC -3292203264,3292203519,US -3292203520,3292205311,SC -3292205312,3292205567,US -3292205568,3292209151,SC -3292209152,3292209663,US -3292209664,3292212479,SC -3292212480,3292212735,US -3292212736,3292213503,SC -3292213504,3292214015,US -3292214016,3292216575,SC -3292216576,3292217087,US -3292217088,3292217599,SC -3292217600,3292217855,US -3292217856,3292220671,SC -3292220672,3292220927,US -3292220928,3292221695,SC -3292221696,3292221951,US -3292221952,3292226047,SC -3292226048,3292226303,US -3292226304,3292227327,SC -3292227328,3292227583,US -3292227584,3292234495,SC -3292234496,3292234751,US -3292234752,3292236543,SC -3292236544,3292236799,US -3292236800,3292239103,SC -3292239104,3292239359,US -3292239360,3292242175,SC -3292242176,3292242431,US -3292242432,3292243967,SC -3292243968,3292244223,US -3292244224,3292248063,SC -3292248064,3292248319,US -3292248320,3292251647,SC -3292251648,3292251903,US -3292251904,3292254975,SC -3292254976,3292255231,US -3292255232,3292259839,SC -3292259840,3292260351,US -3292260352,3292261375,SC -3292261376,3292261631,US -3292261632,3292262655,SC -3292262656,3292262911,US -3292262912,3292263423,SC -3292263424,3292263679,US -3292263680,3292265471,SC -3292265472,3292265983,US -3292265984,3292266239,DE -3292266240,3292266495,SC +3292004352,3292266495,SC 3292397568,3292528639,ZA 3300917248,3300921343,MU 3300925440,3300929535,MG 3300933632,3300950015,MU +3300953088,3300954111,MU 3300982784,3301175295,ZA 3301175296,3301179391,AF -3301179392,3301181183,SC -3301181184,3301181439,US -3301181440,3301183743,SC -3301183744,3301183999,US -3301184000,3301188351,SC -3301188352,3301188607,US -3301188608,3301188863,SC -3301188864,3301189119,US -3301189120,3301189375,SC -3301189376,3301189631,US -3301189632,3301191167,SC -3301191168,3301191423,US -3301191424,3301191935,SC -3301191936,3301192191,US -3301192192,3301193727,SC -3301193728,3301193983,US -3301193984,3301197567,SC -3301197568,3301197823,US -3301197824,3301199359,SC -3301199360,3301199615,US -3301199616,3301205759,SC -3301205760,3301206015,US -3301206016,3301210623,SC -3301210624,3301210879,US -3301210880,3301213695,SC -3301213696,3301213951,US -3301213952,3301217535,SC -3301217536,3301217791,US -3301217792,3301219327,SC -3301219328,3301219583,US -3301219584,3301220863,SC -3301220864,3301221119,US -3301221120,3301221887,SC -3301221888,3301222143,US -3301222144,3301222911,SC -3301222912,3301223167,US -3301223168,3301224959,SC -3301224960,3301225215,US -3301225216,3301228543,SC -3301228544,3301228799,US -3301228800,3301230591,SC -3301230592,3301230847,US -3301230848,3301234687,SC -3301234688,3301234943,US -3301234944,3301236991,SC -3301236992,3301237247,US -3301237248,3301238527,SC -3301238528,3301238783,US -3301238784,3301241343,SC -3301241344,3301241599,US -3301241600,3301243647,SC -3301243648,3301243903,US -3301243904,3301311487,SC +3301179392,3301311487,SC 3301311488,3301313535,SA 3301313536,3301318655,SC 3301318656,3301322751,DE @@ -63548,65 +64090,7 @@ 3301355520,3301365759,SE 3301365760,3301367807,SC 3301367808,3301371903,SE -3301371904,3301383679,SC -3301383680,3301383935,US -3301383936,3301384703,SC -3301384704,3301384959,US -3301384960,3301387007,SC -3301387008,3301387263,US -3301387264,3301393151,SC -3301393152,3301393663,US -3301393664,3301393919,SC -3301393920,3301394175,US -3301394176,3301394431,SC -3301394432,3301394687,US -3301394688,3301397503,SC -3301397504,3301397759,US -3301397760,3301399295,SC -3301399296,3301399551,US -3301399552,3301403135,SC -3301403136,3301403391,US -3301403392,3301403903,SC -3301403904,3301404159,US -3301404160,3301405951,SC -3301405952,3301406207,US -3301406208,3301407231,SC -3301407232,3301407487,US -3301407488,3301407743,SC -3301407744,3301407999,US -3301408000,3301408511,SC -3301408512,3301408767,US -3301408768,3301410047,SC -3301410048,3301410303,US -3301410304,3301412351,SC -3301412352,3301412607,US -3301412608,3301414655,SC -3301414656,3301414911,US -3301414912,3301419519,SC -3301419520,3301420031,US -3301420032,3301423103,SC -3301423104,3301423359,US -3301423360,3301426943,SC -3301426944,3301427199,US -3301427200,3301427455,SC -3301427456,3301427711,US -3301427712,3301428223,SC -3301428224,3301428479,US -3301428480,3301431295,SC -3301431296,3301431551,US -3301431552,3301432063,SC -3301432064,3301432319,US -3301432320,3301433599,SC -3301433600,3301434367,US -3301434368,3301435647,SC -3301435648,3301435903,US -3301435904,3301437951,SC -3301437952,3301438207,US -3301438208,3301439999,SC -3301440000,3301440255,US -3301440256,3301440767,SC -3301440768,3301441023,US -3301441024,3301441535,SC +3301371904,3301441535,SC 3301441536,3301445631,ZA 3301445632,3301453823,KE 3301453824,3301457919,ML @@ -63630,9 +64114,7 @@ 3301515264,3301523455,GH 3301523456,3301531647,CI 3301539840,3301543935,A2 -3301543936,3301543967,KE -3301543968,3301544191,UG -3301544192,3301544959,KE +3301543936,3301544959,KE 3301544960,3301545215,A2 3301545216,3301548031,KE 3301548032,3301556223,GH @@ -63695,8 +64177,8 @@ 3302548992,3302549503,ZA 3302549504,3302550015,KE 3302550016,3302550527,TZ -3302550528,3302551295,ZA -3302551296,3302551551,MU +3302550528,3302551039,ZA +3302551040,3302551551,MU 3302551552,3302552063,EG 3302552064,3302552575,KE 3302552576,3302552831,TZ @@ -63913,8 +64395,7 @@ 3320300544,3320301567,ZA 3320301568,3320302591,SO 3320302592,3320303615,GM -3320303616,3320304127,SC -3320304128,3320304639,GH +3320303616,3320304639,SC 3320304640,3320305663,ZW 3320305664,3320306687,MZ 3320306688,3320307711,LR @@ -63929,6 +64410,7 @@ 3320315904,3320381439,KE 3320381440,3320446975,NA 3320446976,3320451071,SC +3320451072,3320455167,ZA 3320455168,3320463359,NG 3320463360,3320479743,NA 3320479744,3320500223,ZA @@ -63954,9 +64436,7 @@ 3320905728,3320938495,DJ 3320938496,3320971263,AO 3320971264,3320979455,GA -3320979456,3320982783,ZA -3320982784,3320983039,TZ -3320983040,3320995839,ZA +3320979456,3320995839,ZA 3320995840,3321004031,NG 3321004032,3321008127,GM 3321008128,3321012223,ZA @@ -63987,13 +64467,7 @@ 3321790464,3321806847,LS 3321806848,3321823231,SD 3321823232,3321839615,NG -3321839616,3321843711,GH -3321843712,3321846783,MU -3321846784,3321848831,GH -3321848832,3321849855,MU -3321849856,3321850879,GH -3321850880,3321854975,MU -3321854976,3321855999,GH +3321839616,3321855999,GH 3321856000,3321860095,CV 3321860096,3321864191,ZA 3321864192,3321868287,NG @@ -64001,12 +64475,11 @@ 3321872384,3321876479,GM 3321876480,3321880575,NG 3321880576,3321884671,KM -3321884672,3321885439,ZA -3321885440,3321885695,LS +3321884672,3321885695,ZA 3321885696,3321886719,NG 3321886720,3321887743,GA 3321887744,3321888767,NG -3321954304,3321968639,US +3321888768,3321968639,US 3321968640,3321970687,CA 3321970688,3322003455,US 3322003456,3322019839,CA @@ -64014,9 +64487,10 @@ 3322023936,3322028031,CL 3322028032,3322036223,US 3322036224,3322052607,CA -3322052608,3322167295,US -3322167296,3322167807,GB -3322167808,3322609663,US +3322052608,3322353663,US +3322353664,3322354175,VI +3322354176,3322354431,JP +3322354432,3322609663,US 3322609664,3322610687,SA 3322610688,3322683391,US 3322683392,3322691583,BR @@ -64062,37 +64536,45 @@ 3323224064,3323228159,NL 3323228160,3323240447,US 3323240448,3323248639,CA -3323248640,3323270399,US -3323270400,3323270420,DE +3323248640,3323270420,US 3323270421,3323270421,CH -3323270422,3323270655,DE -3323270656,3323330559,US -3323330816,3323331071,US +3323270422,3323331071,US 3323331072,3323331839,CA -3323331840,3323342335,US +3323331840,3323339263,US +3323339776,3323340031,CA +3323340288,3323342591,US 3323342592,3323342847,AU 3323343616,3323343871,DE -3323343872,3323345919,US +3323343872,3323346175,US 3323346176,3323346431,AU 3323346432,3323354111,US 3323354112,3323354367,GB 3323354368,3323355647,DE -3323355904,3323356671,US +3323355648,3323356671,US 3323356672,3323356927,CA 3323356928,3323378687,US 3323378688,3323378943,CA -3323378944,3323391231,US +3323378944,3323382783,US +3323382784,3323383295,CA +3323383296,3323391231,US 3323391232,3323391487,CA 3323391488,3323394559,US 3323394560,3323395071,CL -3323395072,3323462655,US +3323395072,3323437823,US +3323437824,3323438079,CA +3323438080,3323462655,US 3323462656,3323463167,BR 3323463168,3323659263,US 3323659264,3323660543,NZ +3323660544,3323661311,US 3323661312,3323662335,CA 3323662336,3323674623,US -3323674624,3323681279,CA -3323681280,3323741439,US +3323674624,3323682955,CA +3323682956,3323682959,US +3323682960,3323687073,CA +3323687074,3323687074,US +3323687075,3323691007,CA +3323691008,3323741439,US 3323741440,3323741695,GB 3323741696,3323747327,US 3323747328,3323747583,GB @@ -64129,36 +64611,41 @@ 3324047616,3324048383,US 3324048384,3324051455,KN 3324051456,3324182527,CA -3324182528,3324255231,US +3324182528,3324193279,US +3324193280,3324193791,CA +3324193792,3324255231,US 3324255232,3324256255,VI 3324256256,3324260095,SA 3324260096,3324266495,US 3324266496,3324266751,AP 3324266752,3324270079,US 3324270080,3324270591,EU -3324270592,3324277247,US +3324270592,3324277759,US 3324277760,3324278783,CA 3324278784,3324354559,US 3324354560,3324362751,CA 3324362752,3324379135,US 3324379136,3324380159,CA -3324380160,3324470271,US +3324380160,3324380927,US +3324380928,3324381183,CA +3324381184,3324470271,US 3324470272,3324470527,GB 3324470528,3324471295,US 3324471296,3324474367,GB 3324474368,3324579839,US 3324582912,3324583935,CA -3324583936,3324588031,CL -3324588032,3324655871,US +3324583936,3324587775,CL +3324587776,3324647679,US +3324647680,3324647935,CA +3324647936,3324655871,US 3324655872,3324656127,CA -3324656128,3324732415,US +3324656128,3324696063,US +3324696064,3324696319,CA +3324696320,3324732415,US 3324732416,3324732671,EU -3324732672,3324772351,US -3324837888,3324843775,US -3324843776,3324843799,SG +3324732672,3324843799,US 3324843800,3324843801,AP -3324843802,3324844031,SG -3324844032,3324844543,US +3324843802,3324844543,US 3324844544,3324844799,EU 3324844800,3324980223,US 3324980224,3324981247,CA @@ -64167,18 +64654,17 @@ 3324998656,3325034495,US 3325034496,3325035519,NZ 3325035520,3325067263,US -3325067264,3325100031,CA -3325100032,3325128703,US +3325067264,3325100287,CA +3325100288,3325100543,US +3325101056,3325128703,US 3325128704,3325129215,TH 3325129216,3325131775,US 3325131776,3325132031,AU 3325132032,3325132799,US 3325132800,3325133823,BR -3325134336,3325134591,US -3325134848,3325135359,US +3325134336,3325136127,US 3325136128,3325136383,CA -3325136384,3325136639,US -3325136896,3325142015,US +3325136384,3325142015,US 3325142016,3325142271,CR 3325142272,3325144831,US 3325144832,3325145087,CA @@ -64189,7 +64675,9 @@ 3325202048,3325202079,US 3325202080,3325204479,CA 3325204480,3325205503,US -3325205504,3325206639,CA +3325205504,3325206428,CA +3325206429,3325206429,US +3325206430,3325206639,CA 3325206640,3325206655,US 3325206656,3325207807,CA 3325207808,3325207935,US @@ -64199,55 +64687,76 @@ 3325218208,3325218239,US 3325218240,3325220863,CA 3325220864,3325220879,US -3325220880,3325229591,CA +3325220880,3325225671,CA +3325225672,3325225675,US +3325225676,3325229591,CA 3325229592,3325229599,US 3325229600,3325231103,CA 3325231104,3325232127,US 3325233152,3325234175,US 3325234176,3325234431,SA -3325234432,3325234687,US -3325234944,3325249279,US +3325234432,3325249279,US 3325249280,3325249535,CO -3325249536,3325256703,US +3325249536,3325250303,US +3325250304,3325250559,CA +3325250560,3325256703,US 3325257216,3325257727,US 3325257728,3325258751,CA 3325258752,3325259775,US 3325259776,3325261311,CA 3325261312,3325265919,US 3325265920,3325266943,CA -3325267200,3325267711,US +3325266944,3325267711,US 3325267712,3325268735,SY 3325268736,3325269759,US 3325269760,3325270015,CA 3325270016,3325271039,US 3325271040,3325271295,CA -3325271296,3325271551,US -3325271808,3325281023,US +3325271296,3325281023,US 3325281024,3325281279,NZ 3325281280,3325284863,US 3325284864,3325285119,AU -3325285376,3325304831,US +3325285376,3325296383,US +3325296384,3325296639,CA +3325296640,3325304063,US +3325304064,3325304191,AS +3325304192,3325304831,US 3325304832,3325313023,CA -3325313024,3325329407,US -3325329408,3325348415,CA -3325348416,3325348671,US -3325348672,3325427711,CA -3325427712,3325450239,ZA +3325313024,3325362175,US +3325362176,3325427711,CA +3325427712,3325427967,US +3325427968,3325430527,ZA +3325430528,3325431551,US +3325431552,3325443583,ZA +3325443584,3325444095,US +3325444096,3325448447,ZA +3325448448,3325448959,US +3325448960,3325450239,ZA +3325450240,3325451007,US 3325451008,3325451263,ZA -3325451264,3325452287,US +3325451264,3325452799,US 3325452800,3325453311,ZA 3325453312,3325454335,CA -3325454336,3325463551,US -3325463808,3325464063,ZA -3325464064,3325465087,NA -3325465088,3325481983,ZA +3325454336,3325463807,US +3325463808,3325466623,ZA +3325466624,3325467135,US +3325467136,3325469695,ZA +3325469696,3325469951,US +3325469952,3325470207,ZA +3325470208,3325471231,US +3325471232,3325471487,ZA +3325471488,3325471743,US +3325471744,3325478911,ZA +3325478912,3325479423,US +3325479424,3325481983,ZA 3325481984,3325483007,CA -3325483008,3325488127,ZA -3325488128,3325490175,US +3325483008,3325483519,US +3325483776,3325488127,ZA +3325488128,3325490687,US 3325490944,3325493247,ZA 3325493248,3325497343,US 3325497344,3325499903,PR -3325500416,3325505535,US +3325499904,3325505535,US 3325505536,3325509631,CA 3325509632,3325551615,US 3325551616,3325552639,CA @@ -64281,18 +64790,16 @@ 3326191296,3326191359,US 3326191360,3326191551,US 3326191552,3326191583,US -3326191584,3326349823,US -3326349824,3326350335,EC -3326350336,3326406655,US +3326191584,3326406655,US 3326406656,3326408703,CO -3326408704,3326413823,US -3326413824,3326414335,YE -3326414336,3326420991,US +3326408704,3326420991,US 3326420992,3326423039,PR 3326423040,3326613503,US 3326613504,3326615551,CA 3326615552,3326619647,US -3326619648,3326623743,CA +3326619648,3326620159,CA +3326620160,3326620415,US +3326620416,3326623743,CA 3326623744,3326631935,US 3326631936,3326640127,CA 3326640128,3326680063,US @@ -64311,9 +64818,7 @@ 3326734336,3326737663,CA 3326737664,3326737919,US 3326737920,3326738175,CA -3326738432,3326953983,US -3326953984,3326954495,AS -3326954496,3327144959,US +3326738432,3327144959,US 3327144960,3327145983,CA 3327145984,3327172863,US 3327172864,3327173119,AP @@ -64323,9 +64828,7 @@ 3327199232,3327200255,BR 3327200256,3327426559,US 3327426560,3327459327,CA -3327459328,3327591237,US -3327591238,3327591238,US -3327591239,3327723519,US +3327459328,3327723519,US 3327723520,3327725567,CA 3327725568,3327803647,US 3327803648,3327803903,AP @@ -64371,8 +64874,10 @@ 3328433920,3328475135,US 3328475136,3328477183,CA 3328477184,3328479231,US -3328479232,3328481279,CA -3328481280,3328514559,US +3328479232,3328481759,CA +3328481760,3328481760,US +3328481761,3328483327,CA +3328483328,3328514559,US 3328515072,3328516095,DM 3328516096,3328617983,US 3328617984,3328618239,CA @@ -64408,11 +64913,7 @@ 3330664192,3330664447,CA 3330664448,3330677759,US 3330677760,3330678783,CA -3330678784,3330684927,US -3330684928,3330685183,IN -3330685184,3330697471,US -3330697472,3330697727,US -3330697728,3330714367,US +3330678784,3330714367,US 3330714368,3330714623,CA 3330714624,3330726655,US 3330726656,3330726911,CA @@ -64433,19 +64934,15 @@ 3330796544,3330796799,CA 3330796800,3330812927,US 3330812928,3330813951,CA -3330813952,3330866943,US +3330813952,3330815743,US +3330815744,3330815999,CA +3330816000,3330866943,US 3330866944,3330867199,CA 3330867200,3330883583,US 3330883584,3330884351,NL -3330884352,3330888191,US -3330888192,3330888703,AU -3330888704,3330889471,US +3330884352,3330889471,US 3330889472,3330890239,JP -3330890240,3330890751,BE -3330890752,3330891263,GB -3330891264,3330894079,US -3330894080,3330894591,GB -3330894592,3330898431,US +3330890240,3330898431,US 3330898432,3330898943,FR 3330898944,3330904575,US 3330904576,3330904831,CA @@ -64465,9 +64962,7 @@ 3331352920,3331352920,US 3331352921,3331353087,US 3331353088,3331353599,US -3331353600,3331356671,US -3331356672,3331357183,BZ -3331357184,3331362815,US +3331353600,3331362815,US 3331362816,3331366911,CA 3331366912,3331527423,US 3331527424,3331527679,GB @@ -64483,7 +64978,9 @@ 3331647232,3331647487,CA 3331647488,3331649279,US 3331649280,3331649535,CA -3331649536,3331818495,US +3331649536,3331798271,US +3331798272,3331798527,AU +3331798528,3331818495,US 3331818496,3331818751,MX 3331818752,3331853823,US 3331853824,3331854079,AP @@ -64506,7 +65003,6 @@ 3332440320,3332460543,CA 3332460544,3332460799,US 3332460800,3332461311,CA -3332461312,3332461567,US 3332461568,3332462335,CA 3332462336,3332462591,US 3332462592,3332473855,CA @@ -64518,7 +65014,8 @@ 3332491264,3332492031,US 3332492032,3332500735,CA 3332500736,3332500991,US -3332500992,3332503039,CA +3332500992,3332501247,CA +3332501504,3332503039,CA 3332503040,3332503551,US 3332503552,3332505343,CA 3332505344,3332505855,US @@ -64532,7 +65029,9 @@ 3332562944,3332563455,US 3332563456,3332564479,CA 3332564480,3332564735,US -3332564736,3332570879,CA +3332564736,3332566783,CA +3332566784,3332567039,US +3332567040,3332570879,CA 3332570880,3332571391,US 3332571392,3332579327,CA 3332579328,3332581375,US @@ -64583,7 +65082,7 @@ 3332923392,3332925695,CA 3332925696,3332929023,US 3332929024,3332930047,CA -3332930048,3332931327,US +3332930560,3332931327,US 3332931328,3332947967,CA 3332947968,3332948223,US 3332948224,3332964351,CA @@ -64607,9 +65106,7 @@ 3333213056,3333213439,US 3333213440,3333213695,US 3333213696,3333214079,US -3333214080,3333246505,US -3333246506,3333246506,US -3333246507,3333374975,US +3333214080,3333374975,US 3333374976,3333375231,IN 3333375232,3333396689,US 3333396690,3333396691,EU @@ -64621,26 +65118,17 @@ 3333583872,3333584895,CA 3333584896,3333593855,US 3333593856,3333594111,CA -3333594112,3333603327,US -3333603328,3333603328,GB +3333594112,3333603328,US 3333603329,3333603329,EU -3333603330,3333603583,GB -3333603584,3333609733,US +3333603330,3333609733,US 3333609734,3333609734,AU -3333609735,3333614591,US -3333614592,3333614847,GB -3333614848,3333624319,US +3333609735,3333624319,US 3333624320,3333624575,CA 3333624576,3333675775,US 3333675776,3333676031,CA 3333676032,3333705727,US 3333705728,3333709567,GB -3333709568,3333710847,US -3333710848,3333711359,GB -3333711360,3333711871,DE -3333711872,3333716223,US -3333716224,3333716735,CA -3333716736,3333721599,US +3333709568,3333721599,US 3333721600,3333721855,JP 3333721856,3333781503,US 3333781504,3333783551,CA @@ -64660,9 +65148,9 @@ 3333988608,3333988863,BR 3333988864,3333997823,US 3333997824,3333998079,CA -3333998080,3334006781,US -3334006782,3334006782,NL -3334006783,3334007551,US +3333998080,3334006527,US +3334006528,3334006783,NL +3334006784,3334007551,US 3334007552,3334007807,EU 3334007808,3334019583,US 3334020096,3334021119,CA @@ -64676,9 +65164,9 @@ 3334934016,3334934527,CA 3334934528,3334995967,US 3334995968,3334998527,PH -3334998528,3335011071,US -3335011072,3335011327,US -3335011328,3335012351,US +3334998528,3335004655,US +3335004656,3335004671,CN +3335004672,3335012351,US 3335012352,3335028735,CA 3335028736,3335057919,US 3335057920,3335058175,CA @@ -64710,15 +65198,23 @@ 3336139776,3336140799,CA 3336140800,3336854015,US 3336854016,3336854271,CO -3336854272,3336990719,US -3336990720,3336994815,CA -3336994816,3337044479,US +3336854272,3336991231,US +3336991232,3336991487,CA +3336991488,3336993023,US +3336993024,3336993535,CA +3336993536,3337030655,US +3337030656,3337030911,GB +3337030912,3337044479,US 3337044480,3337044735,CA 3337044736,3337044991,US 3337044992,3337046015,CA 3337046016,3337046527,US -3337046528,3337047039,CA -3337047040,3337053183,US +3337046528,3337047551,CA +3337047552,3337050111,US +3337050112,3337051647,CA +3337051648,3337051903,US +3337051904,3337052159,CA +3337052160,3337053183,US 3337053184,3337053695,CA 3337053696,3337055231,US 3337055232,3337060351,CA @@ -64748,25 +65244,23 @@ 3337650944,3337651199,HK 3337651200,3337651455,CH 3337651456,3337651711,SG -3337651712,3337653503,CH -3337653504,3337653759,JP -3337653760,3337654783,CH -3337654784,3337655039,AU -3337655040,3337682943,CH -3337682944,3337895935,US +3337651712,3337682943,CH +3337682944,3337892607,US +3337892608,3337892671,HK +3337892672,3337895935,US 3337895936,3337900031,PR 3337900032,3337948671,US 3337948672,3337949183,CA 3337949184,3337957375,US -3337957376,3337958399,CA -3337958400,3337960447,US -3337960448,3337963128,CA +3337957376,3337963128,CA 3337963129,3337963129,US 3337963130,3337964031,CA 3337964032,3337964543,A2 3337964544,3337965567,CA 3337965568,3337969663,US -3337969664,3337973759,PR +3337969664,3337970559,PR +3337970560,3337970687,US +3337970688,3337973759,PR 3337973760,3337977855,CA 3337977856,3337980671,US 3337980672,3337980927,PR @@ -64782,23 +65276,33 @@ 3338021888,3338022911,CA 3338022912,3338069247,US 3338069248,3338069759,BB -3338069760,3338350591,US +3338069760,3338248959,US +3338248960,3338249215,CA +3338249216,3338261503,US +3338261504,3338261759,CA +3338261760,3338350591,US 3338350592,3338354687,CA 3338354688,3338371071,US 3338371072,3338403839,CA 3338403840,3338424319,US -3338424320,3338432511,CA +3338424320,3338428415,CA +3338428416,3338429439,US +3338429440,3338429951,CA +3338429952,3338430719,US +3338430720,3338432511,CA 3338432512,3338455039,US 3338455040,3338455295,GB 3338455296,3338567679,US 3338567680,3338600447,CA -3338665984,3338686463,US +3338600448,3338686463,US 3338686464,3338688511,AW 3338688512,3338770431,US 3338770432,3338772479,PR 3338772480,3338825727,US 3338825728,3338827775,AW -3338827776,3338935039,US +3338827776,3338934015,US +3338934016,3338934271,GB +3338934272,3338935039,US 3338935040,3338935295,GB 3338935296,3338964991,US 3338964992,3338965247,CA @@ -64807,8 +65311,7 @@ 3339059886,3339075583,US 3339075584,3339076863,GB 3339076864,3339077631,JP -3339077632,3339079167,US -3339079168,3339079679,DE +3339077632,3339079679,US 3339079680,3339080703,IT 3339080704,3339080959,US 3339080960,3339081727,HK @@ -64816,9 +65319,7 @@ 3339081984,3339082751,FR 3339082752,3339091967,US 3339091968,3339092991,NL -3339092992,3339093503,US -3339093504,3339094015,NL -3339094016,3339142655,US +3339092992,3339142655,US 3339142656,3339142911,NL 3339142912,3339146239,US 3339146496,3339147007,US @@ -64896,9 +65397,7 @@ 3340490752,3340492799,CA 3340492800,3340493567,US 3340493568,3340493823,HK -3340493824,3340648959,US -3340648960,3340649215,US -3340649216,3340664831,US +3340493824,3340664831,US 3340664832,3340665855,CA 3340665856,3340677119,US 3340677120,3340679167,CA @@ -64906,41 +65405,45 @@ 3340694784,3340695039,CA 3340695040,3340857343,US 3340857344,3340858367,CA -3340858368,3340925815,US +3340859136,3340925815,US 3340925816,3340925823,AU 3340925824,3341082623,US 3341082624,3341084671,CA 3341084672,3341180927,US 3341180928,3341182975,CA 3341182976,3341205503,US -3341205504,3341206527,BB -3341206528,3341207551,VC +3341205504,3341206271,BB +3341206272,3341207551,VC 3341207552,3341216255,US 3341216256,3341216511,JP 3341216512,3341216767,US 3341216768,3341217791,CA -3341217792,3341339647,US +3341217792,3341218623,US +3341218624,3341218655,CA +3341218656,3341339647,US 3341339648,3341339903,AP 3341339904,3341340159,US 3341340160,3341340415,AP 3341340416,3341439200,US 3341439201,3341439201,CA -3341439202,3341445119,US -3341445120,3341445631,DE -3341445632,3341479935,US -3341479936,3341480447,DE -3341480448,3341484287,US +3341439202,3341484287,US 3341484288,3341485055,CA 3341485056,3341488639,US 3341488640,3341488895,JP 3341488896,3341489151,AP -3341489152,3341511679,US +3341489152,3341495551,US +3341495552,3341495807,HK +3341495808,3341500159,US +3341500160,3341500415,HK +3341500416,3341511679,US 3341511680,3341517823,CA 3341517824,3341518847,US 3341518848,3341520895,CA 3341520896,3341521663,US 3341521664,3341531135,CA -3341531136,3341534207,US +3341531392,3341531647,US +3341531648,3341531903,IN +3341531904,3341534207,US 3341534976,3341537279,CA 3341537280,3341546239,US 3341546240,3341547007,CA @@ -64964,15 +65467,13 @@ 3341828096,3341829119,CA 3341829120,3341837311,US 3341837312,3341838335,CA -3341838336,3341849375,US -3341849376,3341853471,US -3341853472,3341863963,US +3341838336,3341863963,US 3341863964,3341864959,AG 3341864960,3341867007,US 3341867008,3341869055,CA -3341869056,3341873151,US -3341873152,3341875199,US -3341875200,3342139391,US +3341869056,3341881087,US +3341881088,3341881343,SG +3341881344,3342139391,US 3342139392,3342204927,CH 3342204928,3342487551,US 3342487552,3342488575,CA @@ -65005,9 +65506,9 @@ 3342795008,3342795263,AP 3342795264,3342831103,US 3342831104,3342831359,IN -3342831360,3342878971,US -3342878972,3342878972,EU -3342878973,3343013887,US +3342831360,3342878967,US +3342878968,3342878975,EU +3342878976,3343013887,US 3343013888,3343015935,CA 3343015936,3343055871,US 3343055872,3343056895,CA @@ -65036,8 +65537,8 @@ 3343461376,3343465471,US 3343465472,3343466495,JM 3343466496,3343858687,US -3343858688,3343859199,VG -3343859200,3344116223,US +3343858688,3343859711,VG +3343859712,3344116223,US 3344116224,3344116735,CA 3344116736,3344126975,US 3344126976,3344127999,CA @@ -65055,7 +65556,9 @@ 3344168960,3344171263,US 3344171264,3344236543,CA 3344236544,3344237055,US -3344237056,3344242175,CA +3344237056,3344241407,CA +3344241408,3344241663,US +3344241664,3344242175,CA 3344242176,3344242687,US 3344242688,3344255999,CA 3344256000,3344261631,US @@ -65080,9 +65583,7 @@ 3344379904,3344380927,CA 3344380928,3344406527,US 3344406528,3344408575,CA -3344408576,3344426239,US -3344426240,3344426495,US -3344426496,3344429055,US +3344408576,3344429055,US 3344429056,3344431103,CA 3344431104,3344486399,US 3344486400,3344488447,NL @@ -65109,8 +65610,7 @@ 3344964608,3344965631,CA 3344965632,3344973823,US 3344973824,3344974847,BM -3344974848,3344979839,US -3344979840,3344979967,US +3344974848,3344979967,US 3344979968,3344982015,CA 3344982016,3345007615,US 3345007616,3345008639,CA @@ -65118,7 +65618,11 @@ 3345010688,3345011711,CA 3345011712,3345299455,US 3345299456,3345301503,CA -3345301504,3345321471,US +3345301504,3345315071,US +3345315072,3345315327,TW +3345315328,3345315583,US +3345315584,3345315839,TW +3345315840,3345321471,US 3345321472,3345321727,CA 3345321728,3345327103,US 3345327104,3345328127,CA @@ -65182,8 +65686,8 @@ 3345447680,3345447935,BE 3345447936,3345448447,FR 3345448448,3345448959,BE -3345448960,3346193919,US -3346193920,3346194431,US +3345448960,3346194175,US +3346194176,3346194431,US 3346194432,3346196479,US 3346196480,3346197503,CA 3346197504,3346201599,US @@ -65225,7 +65729,9 @@ 3346793472,3346793983,US 3346794496,3346923519,US 3346923520,3346989055,CA -3346989056,3347016703,US +3346989056,3347015647,US +3347015648,3347015663,AE +3347015664,3347016703,US 3347016704,3347017727,CA 3347017728,3347021823,US 3347021824,3347022847,CA @@ -65233,9 +65739,9 @@ 3347033088,3347034111,CA 3347034112,3347039231,US 3347039232,3347040255,DM -3347040256,3349268479,US -3349268480,3349268991,CA -3349268992,3349446911,US +3347040256,3349273087,US +3349273088,3349273343,CA +3349273344,3349446911,US 3349446912,3349447167,CA 3349447168,3349463039,US 3349463040,3349463295,CA @@ -65248,10 +65754,10 @@ 3349545216,3349545727,CA 3349545728,3349545983,US 3349545984,3349551103,CA -3349551104,3349553663,US -3349553664,3349608447,CA -3349608448,3349609215,US -3349609216,3349610239,CA +3349551104,3349553407,US +3349553408,3349608447,CA +3349608448,3349609471,US +3349609472,3349610239,CA 3349610240,3349614591,US 3349614592,3349617663,CA 3349617664,3349637119,US @@ -65269,9 +65775,7 @@ 3349733376,3349739519,US 3349739520,3349740543,CA 3349740544,3349987327,US -3349987328,3349996543,BM -3349996544,3349997055,KY -3349997056,3350003711,BM +3349987328,3350003711,BM 3350003712,3350134783,US 3350134784,3350146047,CA 3350146048,3350150143,US @@ -65305,7 +65809,9 @@ 3350643712,3350645759,US 3350645760,3350646783,CA 3350646784,3350648831,US -3350648832,3350650879,CA +3350648832,3350650623,CA +3350650624,3350650631,US +3350650632,3350650879,CA 3350650880,3350790399,US 3350790400,3350814975,CA 3350814976,3350815231,US @@ -65330,7 +65836,9 @@ 3351004160,3351005183,CA 3351005184,3351015423,US 3351015424,3351016447,CA -3351016448,3351030783,US +3351016448,3351020543,US +3351020544,3351020799,PH +3351020800,3351030783,US 3351030784,3351031807,CA 3351031808,3351034879,US 3351034880,3351035903,CA @@ -65373,8 +65881,8 @@ 3351298048,3351303167,US 3351303168,3351304191,CA 3351304192,3351306239,US -3351306240,3351306751,VC -3351306752,3351307263,LC +3351306240,3351307007,VC +3351307008,3351307263,LC 3351307264,3351308287,US 3351308288,3351310335,CA 3351310336,3351326719,US @@ -65383,11 +65891,13 @@ 3351336960,3351339007,CA 3351339008,3351357439,US 3351357440,3351359487,CA -3351359488,3351364607,US -3351364608,3351365119,AU -3351365120,3351372799,US +3351359488,3351372799,US 3351372800,3351373823,BM -3351373824,3351483391,US +3351373824,3351382271,US +3351382272,3351382527,CA +3351382528,3351390463,US +3351390464,3351390719,CA +3351390720,3351483391,US 3351483392,3351484415,CA 3351484416,3351485439,US 3351485440,3351488511,CA @@ -65417,9 +65927,7 @@ 3351871488,3351895551,US 3351895552,3351895807,CA 3351895808,3351904255,US -3351904256,3351959551,CA -3351959552,3351961599,US -3351961600,3351969791,CA +3351904256,3351969791,CA 3351969792,3352035327,IL 3352035328,3352036351,CA 3352036352,3352046591,US @@ -65452,12 +65960,10 @@ 3352918016,3352919039,CA 3352919040,3353722367,US 3353722368,3353722623,GB -3353722624,3353729023,US -3353729024,3353729279,HK -3353729280,3353730047,US +3353722624,3353730047,US 3353730048,3353731071,CA -3353731072,3353736447,US -3353736448,3353736703,PR +3353731072,3353736191,US +3353736192,3353736703,PR 3353736704,3353780223,US 3353780224,3353780479,GB 3353780480,3353855999,US @@ -65487,9 +65993,11 @@ 3354676224,3354677247,CA 3354677248,3354687487,US 3354687488,3354688511,CA -3354688512,3354731018,US +3354688512,3354731007,US +3354731008,3354731018,GB 3354731019,3354731019,EU -3354731020,3354731519,US +3354731020,3354731263,GB +3354731264,3354731519,US 3354731520,3354731775,AP 3354731776,3354770687,US 3354770688,3354770943,CA @@ -65509,9 +66017,11 @@ 3354972160,3354972415,CA 3354972416,3355013119,US 3355013120,3355017215,CA -3355017216,3355052287,US +3355017216,3355052031,US +3355052032,3355052287,CA 3355052288,3355052543,AU -3355052544,3355053567,CA +3355052544,3355053311,CA +3355053312,3355053567,US 3355054080,3355260927,US 3355260928,3355262719,CA 3355262720,3355272189,US @@ -65532,12 +66042,10 @@ 3355384832,3355385855,CA 3355385856,3355407359,US 3355407360,3355408383,PR -3355408384,3355412479,US -3355412480,3355412991,BE -3355412992,3355431423,US -3355431424,3355431679,US -3355431680,3355432191,US -3355432192,3355432959,US +3355408384,3355430911,US +3355430912,3355431295,US +3355431296,3355431423,SA +3355431424,3355432959,US 3355432960,3355435007,CA 3355435008,3355443199,US 3355443200,3355445247,CO @@ -65919,13 +66427,7 @@ 3356280832,3356282879,AR 3356282880,3356284927,PA 3356284928,3356286975,AR -3356286976,3356288511,US -3356288512,3356288767,SV -3356288768,3356289023,US -3356289024,3356289535,SV -3356289536,3356290303,US -3356290304,3356290559,SV -3356290560,3356291071,CR +3356286976,3356291071,US 3356291072,3356293119,TT 3356293120,3356295167,AW 3356295168,3356297215,CL @@ -65974,7 +66476,9 @@ 3356390400,3356390655,AR 3356390656,3356391167,CL 3356391168,3356391423,PA -3356393472,3356425471,CL +3356393472,3356420607,CL +3356420608,3356420863,CO +3356420864,3356425471,CL 3356425472,3356425599,CO 3356425600,3356426239,CL 3356426240,3356427263,BR @@ -66027,17 +66531,11 @@ 3357407232,3357409279,AR 3357409280,3357411327,BR 3357411328,3357412351,VE -3357412352,3357412863,PE -3357412864,3357414399,US +3357412352,3357414399,US 3357414400,3357415423,PR -3357415424,3357415935,US -3357415936,3357416447,MX -3357416448,3357416959,VE -3357416960,3357417471,US +3357415424,3357417471,US 3357417472,3357418495,CL -3357418496,3357419007,US -3357419008,3357419519,GT -3357419520,3357420031,SZ +3357418496,3357420031,US 3357420032,3357421055,CO 3357421056,3357421567,US 3357421568,3357422847,NI @@ -66129,9 +66627,13 @@ 3357479552,3357479679,CO 3357479680,3357479871,AR 3357479872,3357479879,CO -3357479880,3357479935,AR -3357479936,3357480447,CO -3357480448,3357480463,AR +3357479880,3357480103,AR +3357480104,3357480111,CO +3357480112,3357480335,AR +3357480336,3357480343,CO +3357480344,3357480359,AR +3357480360,3357480367,CO +3357480368,3357480463,AR 3357480464,3357480479,CO 3357480480,3357480959,AR 3357480960,3357483007,EC @@ -66236,8 +66738,8 @@ 3358154752,3358158847,PE 3358158848,3358159159,AR 3358159160,3358159167,US -3358159168,3358159359,AR -3358159360,3358159615,EC +3358159168,3358159487,AR +3358159488,3358159615,EC 3358159616,3358159871,US 3358159872,3358160895,VE 3358160896,3358236671,AR @@ -66249,21 +66751,13 @@ 3358326784,3358392319,VE 3358392320,3358457855,AR 3358457856,3358523391,PA -3358523392,3358526463,VE -3358526464,3358526719,AR -3358526720,3358529535,VE +3358523392,3358529535,VE 3358529536,3358530303,AR -3358530304,3358531071,VE -3358531072,3358531583,AR -3358531584,3358532607,VE -3358532608,3358533119,AR -3358533120,3358534143,VE -3358534144,3358534655,AR +3358530304,3358534399,VE +3358534400,3358534655,AR 3358534656,3358535423,VE 3358535424,3358535679,AR -3358535680,3358536703,VE -3358536704,3358537727,AR -3358537728,3358539519,VE +3358535680,3358539519,VE 3358539520,3358539775,AR 3358539776,3358543871,VE 3358543872,3358544127,MX @@ -66271,8 +66765,8 @@ 3358548224,3358548479,AR 3358548480,3358549759,VE 3358549760,3358550015,AR -3358550016,3358553087,VE -3358553088,3358553855,AR +3358550016,3358553599,VE +3358553600,3358553855,AR 3358553856,3358558463,VE 3358558464,3358558591,PY 3358558592,3358562303,VE @@ -66350,8 +66844,8 @@ 3358720000,3358728191,PR 3358728192,3358736383,CL 3358736384,3358738175,BB -3358738176,3358738431,GD -3358738432,3358744575,BB +3358738176,3358738687,GD +3358738688,3358744575,BB 3358744576,3358752767,CL 3358752768,3358756863,BB 3358756864,3358760959,CL @@ -66399,15 +66893,15 @@ 3359505920,3359506431,AR 3359506432,3359508479,US 3359508480,3359510527,VE -3359510528,3359511807,US -3359511808,3359513087,VE -3359513088,3359513599,US -3359513600,3359514111,VE -3359514112,3359514623,US +3359510528,3359510815,US +3359510816,3359510847,VE +3359510848,3359511535,US +3359511536,3359511543,VE +3359511544,3359511807,US +3359511808,3359512575,VE +3359512576,3359514623,US 3359514624,3359514879,CL -3359514880,3359520255,US -3359520256,3359520767,AR -3359520768,3359522815,US +3359514880,3359522815,US 3359522816,3359539199,NI 3359539200,3359571967,PE 3359571968,3359582207,AR @@ -66418,7 +66912,10 @@ 3359596544,3359598591,CL 3359600640,3359621119,AR 3359621120,3359637503,EC -3359637504,3359899647,MX +3359637504,3359789583,MX +3359789584,3359789599,US +3359789600,3359797247,MX +3359801344,3359899647,MX 3359899648,3359916031,CL 3359916032,3359932415,AR 3359948800,3359989759,AR @@ -66444,7 +66941,6 @@ 3360276480,3360278527,VE 3360278528,3360280575,EC 3360280576,3360282623,CL -3360282624,3360284671,CO 3360284672,3360325631,CL 3360325632,3360333823,CO 3360333824,3360342015,CL @@ -66498,8 +66994,9 @@ 3361054720,3361058815,NI 3361058816,3361062911,AR 3361062912,3361071103,CL -3361071104,3361071615,CO -3361071616,3361071631,VE +3361071104,3361071455,VE +3361071456,3361071471,CO +3361071472,3361071631,VE 3361071632,3361071635,CO 3361071636,3361072767,VE 3361072768,3361072895,CO @@ -66814,7 +67311,11 @@ 3386802176,3386900479,CL 3386900480,3387162623,PA 3387162624,3387228159,CO -3387228160,3387260927,AW +3387228160,3387248383,AW +3387248384,3387248511,TT +3387248512,3387248575,AW +3387248576,3387248639,TT +3387248640,3387260927,AW 3387260928,3387293695,DO 3387293696,3387359231,PE 3387359232,3387424767,AR @@ -66839,8 +67340,7 @@ 3387608576,3387608831,EC 3387608832,3387609087,AR 3387609088,3387613183,EC -3387613184,3387613439,US -3387613440,3387617279,VE +3387613184,3387617279,VE 3387617280,3387619327,CO 3387619328,3387686911,AR 3387686912,3387736063,CL @@ -66925,7 +67425,9 @@ 3389092864,3389093887,AU 3389093888,3389095935,IN 3389095936,3389104127,SG -3389104128,3389112319,SB +3389104128,3389106175,SB +3389106176,3389106431,AU +3389106432,3389112319,SB 3389112320,3389116415,MV 3389116416,3389120511,JP 3389122560,3389122815,HK @@ -66950,8 +67452,8 @@ 3389196288,3389198335,AU 3389198336,3389202431,KR 3389202432,3389203455,NZ -3389203456,3389204479,AU -3389204480,3389210623,NZ +3389203456,3389203967,AU +3389203968,3389210623,NZ 3389210624,3389210879,IN 3389210880,3389211135,AU 3389211136,3389211391,IN @@ -67513,7 +68015,6 @@ 3391843328,3391844351,VN 3391844352,3391845887,ID 3391845888,3391846399,PK -3391847424,3391848447,PK 3391848448,3391851007,AU 3391851008,3391851263,AP 3391851264,3391852543,AU @@ -67540,9 +68041,7 @@ 3391906304,3391906815,AU 3391906816,3391907839,PH 3391907840,3391909887,BD -3391909888,3391910143,IO -3391910144,3391910399,US -3391910400,3391910911,IO +3391909888,3391910911,IO 3391910912,3391911935,AU 3391911936,3391913983,HK 3391913984,3391914239,TH @@ -67570,9 +68069,9 @@ 3391954944,3391971327,HK 3391971328,3391979519,AU 3391979520,3391979775,HK -3391979776,3391979955,CN +3391979776,3391979955,JP 3391979956,3391979957,AP -3391979958,3391980031,CN +3391979958,3391980031,JP 3391980032,3391980543,HK 3391980544,3391983615,MY 3391983616,3391984639,NP @@ -67614,7 +68113,6 @@ 3392100864,3392101887,ID 3392101888,3392102143,PK 3392102144,3392102399,AU -3392102400,3392106495,KH 3392106496,3392108543,IN 3392108544,3392109567,AU 3392109824,3392110079,PH @@ -67755,9 +68253,9 @@ 3392700416,3392708607,SG 3392708608,3392712703,ID 3392712704,3392716799,AF -3392716800,3392733439,IN -3392733440,3392733695,ID -3392733696,3392734207,IN +3392716800,3392733695,IN +3392733696,3392733951,ID +3392733952,3392734207,IN 3392734208,3392741375,ID 3392741376,3392765951,PH 3392765952,3392782335,TH @@ -67847,9 +68345,7 @@ 3392942080,3392944127,CN 3392944128,3392945151,MY 3392945152,3392946175,IN -3392946176,3392946719,AU -3392946720,3392946720,AU -3392946721,3392954367,AU +3392946176,3392954367,AU 3392954368,3392956415,CN 3392956416,3392958463,VN 3392958464,3392962559,CN @@ -67926,9 +68422,7 @@ 3393257472,3393260031,CN 3393260032,3393260543,BD 3393260544,3393265663,AU -3393265664,3393266687,CK -3393266688,3393267199,NZ -3393267200,3393273855,CK +3393265664,3393273855,CK 3393273856,3393282047,AU 3393286144,3393290239,ID 3393290240,3393298431,IN @@ -67952,8 +68446,10 @@ 3393478656,3393486847,AU 3393486848,3393495039,IN 3393495040,3393499135,AU -3393499136,3393501183,US -3393501184,3393503231,SG +3393499136,3393499391,US +3393499392,3393499903,SG +3393499904,3393500159,US +3393500160,3393503231,SG 3393503232,3393507327,HK 3393507328,3393511423,SG 3393511424,3393519615,KR @@ -67995,7 +68491,6 @@ 3393634304,3393638399,CN 3393638400,3393650687,JP 3393650688,3393658879,IN -3393658880,3393662975,KH 3393662976,3393675263,JP 3393675264,3393679359,MY 3393679360,3393683455,TH @@ -68163,9 +68658,7 @@ 3394306048,3394307071,CN 3394307072,3394308095,SG 3394308096,3394310143,JP -3394310144,3394313727,AU -3394313728,3394313983,PH -3394313984,3394314239,AU +3394310144,3394314239,AU 3394314240,3394322431,ID 3394322432,3394326527,AU 3394326528,3394330623,JP @@ -68194,7 +68687,6 @@ 3394501632,3394502655,CN 3394502656,3394503679,HK 3394503680,3394506751,CN -3394506752,3394507263,HK 3394507264,3394507775,JP 3394508544,3394508799,PH 3394508800,3394510847,CN @@ -68260,8 +68752,8 @@ 3394835968,3394836223,AP 3394836224,3394836479,HK 3394836480,3394838527,BT -3394838528,3394844671,NZ -3394844672,3394845695,AU +3394838528,3394842623,NZ +3394842624,3394845695,AU 3394845696,3394845951,NZ 3394845952,3394846719,AU 3394846720,3394850815,IN @@ -68291,8 +68783,8 @@ 3394906112,3394906367,IN 3394906368,3394906623,AU 3394906624,3394907135,IN -3394907136,3394909183,NZ -3394909184,3394910207,AU +3394907136,3394908159,NZ +3394908160,3394910207,AU 3394910208,3394912255,NZ 3394912256,3394920447,PF 3394920448,3394924543,IN @@ -68437,9 +68929,7 @@ 3397070848,3397074943,PH 3397074944,3397083135,HK 3397083136,3397087231,CN -3397091328,3397093375,US -3397093376,3397096447,GU -3397096448,3397099519,MP +3397091328,3397099519,GU 3397099520,3397103615,HK 3397103616,3397105663,LA 3397105664,3397107711,JP @@ -68488,7 +68978,7 @@ 3397216256,3397216767,AU 3397216768,3397217023,IN 3397217024,3397217279,SG -3397217280,3397217791,AU +3397217280,3397217535,AU 3397217792,3397218047,NZ 3397218048,3397218303,AU 3397218304,3397222399,CN @@ -68506,9 +68996,9 @@ 3397283840,3397285887,KR 3397285888,3397287935,BD 3397287936,3397296127,SG -3397296128,3397298943,HK -3397298944,3397299199,SG -3397299200,3397304319,HK +3397296128,3397299199,HK +3397299200,3397299455,SG +3397299456,3397304319,HK 3397304320,3397308415,NZ 3397308416,3397312511,HK 3397312512,3397320703,JP @@ -68526,15 +69016,12 @@ 3397369856,3397374463,CN 3397374464,3397374975,AU 3397374976,3397386239,CN -3397386240,3397387263,US -3397387264,3397387775,GU -3397387776,3397389311,US -3397389312,3397389567,PH -3397389568,3397390335,US -3397390336,3397394431,GU +3397386240,3397387775,GU +3397387776,3397388031,US +3397388032,3397394431,GU 3397394432,3397402623,PH 3397402624,3397410815,GU -3397410816,3397411327,IN +3397410816,3397411327,AU 3397411328,3397411583,SG 3397411584,3397411839,HK 3397411840,3397412351,KR @@ -68564,7 +69051,8 @@ 3397507840,3397508095,IN 3397508096,3397509119,PH 3397509120,3397510143,ID -3397510144,3397511167,FJ +3397510144,3397510911,FJ +3397510912,3397511167,AU 3397511168,3397512191,LK 3397512192,3397512447,KH 3397512448,3397512703,AU @@ -68603,10 +69091,7 @@ 3397603328,3397605375,KH 3397605376,3397607423,AU 3397607424,3397623807,IN -3397623808,3397626879,MP -3397626880,3397627135,GU -3397627136,3397627903,MP -3397627904,3397631999,GU +3397623808,3397631999,GU 3397632000,3397636095,JP 3397636096,3397640191,CN 3397640192,3397648383,MN @@ -68747,8 +69232,16 @@ 3398637120,3398637183,HK 3398637184,3398637823,JP 3398637824,3398638079,PH -3398638080,3398639615,JP -3398639616,3398668287,AU +3398638080,3398640639,JP +3398640640,3398640895,AU +3398640896,3398642431,JP +3398642432,3398642943,AU +3398642944,3398643199,JP +3398643200,3398643455,AU +3398643456,3398646783,JP +3398646784,3398647039,AU +3398647040,3398647807,JP +3398647808,3398668287,AU 3398668288,3398672383,CN 3398672384,3398680575,PK 3398680576,3398684671,ID @@ -68777,7 +69270,8 @@ 3398830080,3398831103,KH 3398831104,3398831359,JP 3398831360,3398831615,HK -3398831616,3398832127,JP +3398831616,3398831871,SG +3398831872,3398832127,JP 3398832128,3398840319,CN 3398840320,3398842367,JP 3398842368,3398843391,CN @@ -68797,9 +69291,7 @@ 3398902784,3398903807,AU 3398903808,3398905855,TH 3398905856,3398909951,TW -3398909952,3398913535,GU -3398913536,3398913791,US -3398913792,3398918143,GU +3398909952,3398918143,GU 3398918144,3398926335,JP 3398926336,3398934527,CN 3398934528,3398938623,VN @@ -68958,8 +69450,8 @@ 3399999488,3400000255,SG 3400000256,3400000511,AU 3400000512,3400004607,SG -3400004608,3400005631,AU -3400005632,3400006143,SG +3400004608,3400004863,AU +3400004864,3400006143,SG 3400006144,3400006399,AP 3400006400,3400006911,SG 3400006912,3400006927,AU @@ -69067,9 +69559,7 @@ 3400438202,3400438202,US 3400438203,3400441599,HK 3400441600,3400441855,AU -3400441856,3400446975,NZ -3400446976,3400447231,AU -3400447232,3400450047,NZ +3400441856,3400450047,NZ 3400450048,3400458239,JP 3400458240,3400466431,AU 3400466432,3400499199,MO @@ -69171,16 +69661,20 @@ 3401545728,3401547775,BD 3401547776,3401580543,IN 3401580544,3402629119,CN -3402629120,3403081727,JP -3403081728,3403083007,US -3403083008,3403083263,JP -3403083264,3403083775,US -3403083776,3404630527,JP -3404630528,3404633087,US -3404633088,3404693503,JP -3404693504,3404695295,US -3404695296,3404695551,JP -3404695552,3404697343,US +3402629120,3403081983,JP +3403081984,3403082239,US +3403082240,3404631295,JP +3404631296,3404631551,US +3404631552,3404693759,JP +3404693760,3404694015,US +3404694016,3404694271,JP +3404694272,3404694527,US +3404694528,3404695039,JP +3404695040,3404695295,US +3404695296,3404696319,JP +3404696320,3404696575,US +3404696576,3404697087,JP +3404697088,3404697343,US 3404697344,3404720639,JP 3404720640,3404720678,US 3404720679,3404720679,JP @@ -69515,7 +70009,8 @@ 3406528000,3406528255,CN 3406528256,3406528511,AU 3406528512,3406528767,AP -3406528768,3406530047,HK +3406528768,3406529023,AU +3406529024,3406530047,HK 3406530048,3406530303,SG 3406530304,3406530559,HK 3406530560,3406531583,CN @@ -69719,9 +70214,12 @@ 3406948096,3406948351,CN 3406948352,3406948607,AU 3406948608,3406948863,CN -3406948864,3406952447,AU +3406948864,3406950655,AU +3406950656,3406950911,NF +3406950912,3406951167,AU +3406951168,3406951423,NF +3406951424,3406952447,AU 3406952448,3406952703,CN -3406952704,3406952959,PH 3406952960,3406954239,AU 3406954240,3406954495,CN 3406954496,3406955007,AU @@ -69976,8 +70474,8 @@ 3407334400,3407335423,CN 3407335424,3407339519,AU 3407339520,3407339775,CN -3407339776,3407340543,AU -3407340544,3407341567,CN +3407339776,3407340031,AU +3407340032,3407341567,CN 3407341568,3407345919,AU 3407345920,3407346175,CN 3407346176,3407346431,AU @@ -70311,7 +70809,7 @@ 3407748608,3407750655,AU 3407750656,3407751167,SG 3407751168,3407753215,AU -3407753216,3407753727,HK +3407753216,3407753727,SG 3407753728,3407757823,AU 3407757824,3407758079,CN 3407758080,3407761663,AU @@ -70619,9 +71117,7 @@ 3409435904,3409436159,CN 3409436160,3409436671,AU 3409436672,3409436927,CN -3409436928,3409438563,AU -3409438564,3409438564,AU -3409438565,3409445119,AU +3409436928,3409445119,AU 3409445120,3409445375,CN 3409445376,3409445887,AU 3409445888,3409446143,CN @@ -70870,7 +71366,7 @@ 3411215360,3411216383,AU 3411218432,3411220479,PG 3411220480,3411226623,ID -3411226624,3411228671,US +3411226624,3411228671,IO 3411228672,3411230719,CN 3411230720,3411247103,HK 3411247104,3411255295,KR @@ -70882,7 +71378,7 @@ 3411270656,3411271679,SG 3411271680,3411275775,CN 3411275776,3411277823,JP -3411277824,3411278335,IN +3411277824,3411278335,HK 3411278336,3411278591,SG 3411278592,3411278847,FJ 3411278848,3411296255,HK @@ -70916,9 +71412,7 @@ 3411509248,3411542015,PH 3411542016,3411550207,IN 3411550208,3411558399,CN -3411558400,3411559935,HK -3411559936,3411560191,US -3411560192,3411565257,HK +3411558400,3411565257,HK 3411565258,3411565258,US 3411565259,3411566591,HK 3411566592,3411570687,BD @@ -70944,9 +71438,13 @@ 3411644928,3411645951,ID 3411645952,3411646207,SG 3411646208,3411647487,IN -3411647488,3411649535,AU -3411649536,3411650047,NZ -3411650048,3411654399,AU +3411647488,3411648767,AU +3411648768,3411649023,NZ +3411649024,3411649279,AU +3411649280,3411649535,NZ +3411649536,3411649791,AU +3411649792,3411650303,NZ +3411650304,3411654399,AU 3411654400,3411654655,NZ 3411654656,3411673087,AU 3411673088,3411674111,CN @@ -71038,7 +71536,7 @@ 3412328448,3412336639,AU 3412336640,3412342783,CN 3412342784,3412343039,AU -3412343040,3412343295,IN +3412343040,3412343295,HK 3412343552,3412343807,AU 3412344064,3412344319,AU 3412344320,3412344575,SG @@ -71066,8 +71564,11 @@ 3412656128,3412672511,HK 3412672512,3412675071,JP 3412675072,3412675327,US -3412675328,3412678655,JP -3412678656,3412680703,US +3412675328,3412678911,JP +3412678912,3412679167,US +3412679168,3412680191,JP +3412680192,3412680447,US +3412680448,3412680703,JP 3412680704,3412697087,CN 3412697088,3412705279,IN 3412705280,3412713471,AU @@ -71085,7 +71586,8 @@ 3413008384,3413016575,JP 3413016576,3413024767,AU 3413024768,3413032959,CN -3413032960,3413033471,AU +3413032960,3413033215,US +3413033216,3413033471,AU 3413033472,3413033727,US 3413033728,3413036287,AU 3413036288,3413036799,US @@ -71120,7 +71622,9 @@ 3413180416,3413213183,TH 3413213184,3413229567,VN 3413229568,3413245951,AU -3413245952,3413262335,SG +3413245952,3413250559,SG +3413250560,3413250815,MY +3413250816,3413262335,SG 3413262336,3413270527,PH 3413270528,3413278719,TH 3413278720,3413295103,NZ @@ -71196,7 +71700,9 @@ 3413639168,3413704703,SG 3413704704,3413737471,MY 3413737472,3413753855,TH -3413753856,3413762047,AU +3413753856,3413755391,AU +3413755392,3413755647,US +3413755648,3413762047,AU 3413762048,3413770239,TW 3413770240,3413786623,IN 3413786624,3413835775,AU @@ -71291,8 +71797,8 @@ 3414670848,3414671359,MY 3414671360,3415080959,JP 3415080960,3415083007,SG -3415083008,3415083519,AU -3415083520,3415084031,SG +3415083008,3415083023,AU +3415083024,3415084031,SG 3415084032,3415084159,CN 3415084160,3415089151,SG 3415089152,3415097343,MY @@ -71432,10 +71938,7 @@ 3416375296,3416383487,CN 3416383488,3416391679,HK 3416391680,3416457215,VN -3416457216,3416475391,JP -3416475392,3416475647,NZ -3416475648,3416489727,JP -3416489728,3416489983,AU +3416457216,3416489983,JP 3416489984,3416506367,VN 3416506368,3416514559,TW 3416514560,3416522751,IN @@ -71528,8 +72031,7 @@ 3417182208,3417184767,AU 3417184768,3417185023,MN 3417185024,3417185279,AF -3417185280,3417185535,AU -3417185536,3417185791,SG +3417185280,3417185791,SG 3417185792,3417186303,NZ 3417186304,3417194495,HK 3417194496,3417198591,JP @@ -71578,8 +72080,8 @@ 3417357824,3417358335,PK 3417358336,3417374719,HK 3417374720,3417440255,PH -3417440256,3417664511,JP -3417664512,3417665279,US +3417440256,3417664767,JP +3417664768,3417665279,US 3417665280,3417833471,JP 3417833472,3417849855,NZ 3417849856,3417853951,AU @@ -71651,7 +72153,8 @@ 3418243072,3418251263,PH 3418251264,3418255359,CN 3418255360,3418257407,ID -3418257408,3418259455,HK +3418257408,3418259199,HK +3418259200,3418259455,SG 3418259456,3418267647,IN 3418267648,3418271743,VN 3418271744,3418273791,SG @@ -71662,9 +72165,7 @@ 3418282240,3418282495,AU 3418282496,3418283519,PH 3418283520,3418284031,AU -3418284032,3418286847,SG -3418286848,3418287103,AU -3418287104,3418288127,SG +3418284032,3418288127,SG 3418288128,3418290175,ID 3418290176,3418290431,IN 3418290432,3418290687,CN @@ -71694,22 +72195,27 @@ 3418365952,3418374143,TH 3418374144,3418382335,AU 3418382336,3418390527,JP -3418390528,3418394623,AU -3418394624,3418397183,AP -3418397184,3418397695,MY -3418397696,3418398719,AP -3418398720,3418399231,AU +3418390528,3418392575,AU +3418392576,3418393919,AP +3418393920,3418393927,AU +3418393928,3418397183,AP +3418397184,3418397439,MY +3418397440,3418399231,AP 3418399232,3418399247,PH -3418399248,3418404863,AU -3418404864,3418405631,AP -3418405632,3418405887,SG -3418405888,3418406911,AP +3418399248,3418400255,AP +3418400256,3418400511,AU +3418400512,3418403583,AP +3418403584,3418403839,AU +3418403840,3418405631,AP +3418405632,3418405887,MY +3418405888,3418406143,PH +3418406144,3418406911,AP 3418406912,3418423295,IN 3418423296,3418444091,HK 3418444092,3418444095,CN 3418444096,3418452479,HK -3418452480,3418452735,SG -3418452736,3418456063,HK +3418452480,3418452607,SG +3418452608,3418456063,HK 3418456064,3418472447,IN 3418472448,3418480639,AU 3418480640,3418488831,CN @@ -71736,8 +72242,7 @@ 3418643456,3418644479,AU 3418644480,3418644735,JP 3418644736,3418644991,AU -3418644992,3418645247,TW -3418645248,3418649343,JP +3418644992,3418649343,JP 3418649344,3418649599,AP 3418649600,3418652671,JP 3418652672,3418750975,IN @@ -71768,9 +72273,11 @@ 3419078656,3419209727,TW 3419209728,3419226111,VN 3419226112,3419234303,CN -3419234304,3419237375,US -3419237376,3419238399,JP -3419238400,3419242495,US +3419234304,3419235839,JP +3419235840,3419236095,US +3419236096,3419241983,JP +3419241984,3419242239,US +3419242240,3419242495,JP 3419242496,3419275263,CN 3419275264,3419340799,AU 3419340800,3419344895,TW @@ -71893,13 +72400,13 @@ 3420061696,3420127231,HK 3420127232,3420323839,AU 3420323840,3420332031,TW -3420332032,3420336127,AU -3420336128,3420336383,SG -3420336384,3420367359,AU +3420332032,3420367359,AU 3420367360,3420367615,AP 3420367616,3420369007,AU 3420369008,3420369023,HK -3420369024,3420372991,AU +3420369024,3420370559,AU +3420370560,3420370575,JP +3420370576,3420372991,AU 3420372992,3420374527,CN 3420374528,3420374783,ID 3420374784,3420375551,CN @@ -71931,11 +72438,7 @@ 3422000536,3422000536,IN 3422000537,3422000537,AP 3422000538,3422552063,KR -3422552064,3422717439,US -3422717440,3422717695,US -3422717696,3422847487,US -3422847488,3422847743,GB -3422847744,3422850559,US +3422552064,3422850559,US 3422850560,3422851071,GB 3422851072,3422955519,US 3422955520,3422956799,FR @@ -71947,9 +72450,7 @@ 3423092848,3423093759,VI 3423093760,3423094783,US 3423094784,3423095807,CA -3423095808,3423113983,US -3423113984,3423114239,CA -3423114240,3423143935,US +3423095808,3423143935,US 3423143936,3423145983,CA 3423145984,3423162367,US 3423162368,3423163391,CA @@ -71957,30 +72458,28 @@ 3423182848,3423184895,CA 3423184896,3423221759,US 3423221760,3423222783,CA -3423222784,3423236095,US -3423236096,3423238143,JM -3423238144,3423258623,US +3423222784,3423258623,US 3423258624,3423260671,CA -3423260672,3423265025,US +3423260672,3423264831,US +3423264832,3423264863,NG +3423264864,3423265025,US 3423265026,3423265026,A2 3423265027,3423268863,US 3423268864,3423269887,CA 3423269888,3423285247,US 3423285248,3423287295,CA 3423287296,3423288319,VG -3423288320,3423303679,US +3423288320,3423301631,US +3423302656,3423303679,US 3423303680,3423304703,CA 3423304704,3423311871,US 3423311872,3423313919,VI -3423313920,3423371263,US +3423313920,3423366479,US +3423366480,3423366495,IT +3423366496,3423371263,US 3423371264,3423375359,ZA -3423375360,3423377151,CA -3423377152,3423377407,US -3423377408,3423378431,CA -3423378432,3423378943,US -3423378944,3423379455,CA -3423379456,3423379967,US -3423379968,3423416319,US +3423375360,3423379455,CA +3423379456,3423416319,US 3423416320,3423417343,CA 3423417344,3423430655,US 3423430656,3423431167,TC @@ -71988,9 +72487,7 @@ 3423471616,3423473663,US 3423473664,3423474687,CA 3423474688,3423479807,US -3423479808,3423480063,A2 -3423480064,3423480319,AU -3423480320,3423480831,A2 +3423479808,3423480831,A2 3423480832,3423480987,NG 3423480988,3423480988,US 3423480989,3423481343,NG @@ -72026,9 +72523,7 @@ 3423705856,3423797503,US 3423797504,3423801087,CA 3423801088,3423801343,US -3423801344,3423823359,CA -3423823360,3423823871,US -3423823872,3423827711,CA +3423801344,3423827711,CA 3423827712,3423827967,US 3423827968,3423830271,CA 3423830272,3423830527,US @@ -72056,7 +72551,8 @@ 3424378880,3424379135,PR 3424379136,3424412415,US 3424412416,3424412671,CA -3424412672,3424493823,US +3424412672,3424413695,US +3424415744,3424493823,US 3424493824,3424494079,CA 3424494080,3424507135,US 3424507136,3424507391,CA @@ -72064,20 +72560,14 @@ 3425173504,3425304575,CA 3425304576,3425484543,US 3425484544,3425484799,GU -3425484800,3425529504,US -3425529505,3425529510,US -3425529511,3425564159,US -3425564160,3425564415,US -3425564416,3425697791,US +3425484800,3425697791,US 3425697792,3425699839,CA 3425699840,3425714175,US 3425714176,3425722367,CA 3425722368,3425828863,US 3425828864,3425846783,CA 3425846784,3425847039,EU -3425847040,3425869167,CA -3425869168,3425869183,US -3425869184,3425894399,CA +3425847040,3425894399,CA 3425894400,3426007807,US 3426007808,3426008063,EU 3426008064,3426013183,US @@ -72096,9 +72586,7 @@ 3426729472,3426729983,CA 3426729984,3426744319,US 3426744320,3426746367,CA -3426746368,3427038719,US -3427038720,3427038975,US -3427038976,3427112447,US +3426746368,3427112447,US 3427112448,3427112703,CN 3427112704,3427117055,US 3427117056,3427117311,CA @@ -72106,7 +72594,9 @@ 3427127296,3427127551,CA 3427127552,3427132927,US 3427132928,3427133183,EU -3427133184,3427426303,US +3427133184,3427408393,US +3427408394,3427408394,EU +3427408395,3427426303,US 3427426304,3427426559,HK 3427426560,3427428863,US 3427428864,3427429119,GB @@ -72114,7 +72604,9 @@ 3427487744,3427487999,GB 3427488000,3427503615,US 3427503616,3427503871,AU -3427503872,3427647999,US +3427503872,3427583087,US +3427583088,3427583088,CA +3427583089,3427647999,US 3427648000,3427648511,CA 3427648512,3427651071,US 3427651072,3427651327,CA @@ -72122,20 +72614,13 @@ 3427732736,3427735039,IE 3427735040,3427735295,US 3427735296,3427736063,HK -3427736064,3427742719,US -3427742720,3427743231,CH -3427743232,3427744255,US -3427744256,3427745279,DE -3427745280,3427745791,TW -3427745792,3427748863,US +3427736064,3427748863,US 3427748864,3427749631,DE 3427749632,3427749887,US 3427749888,3427750655,DE 3427750656,3427752447,US 3427752448,3427752703,EU -3427752704,3427759359,US -3427759360,3427759871,GB -3427759872,3427760127,US +3427752704,3427760127,US 3427760128,3427760895,CA 3427760896,3427762175,US 3427762176,3427762431,DE @@ -72210,16 +72695,14 @@ 3427791872,3427792383,CA 3427792384,3427792639,NL 3427792640,3427793407,SG -3427793408,3427793919,HK +3427793408,3427793919,NL 3427793920,3427794175,US 3427794176,3427794943,NL 3427794944,3427796991,CA 3427796992,3427831551,US 3427831552,3427831807,MX 3427831808,3427860479,US -3427860480,3428025343,CA -3428025344,3428025855,US -3428025856,3428057087,CA +3427860480,3428057087,CA 3428057088,3428286719,US 3428286720,3428286975,CA 3428286976,3428296959,US @@ -72238,33 +72721,25 @@ 3428434944,3428435199,CA 3428435200,3428437503,US 3428437504,3428437759,MX -3428437760,3428496639,US -3428496640,3428497151,NL -3428497152,3428592639,US +3428437760,3428592639,US 3428592640,3428593919,CA -3428593920,3428598015,US -3428598016,3428598271,CA -3428598272,3428600831,US -3428600832,3428601343,CA -3428601344,3428606463,US -3428606464,3428606591,CA -3428606592,3428606655,US -3428606656,3428606719,CA -3428606720,3428630015,US -3428630016,3428634623,CA +3428593920,3428598591,US +3428598592,3428598623,CA +3428598624,3428607999,US +3428608000,3428609023,CA +3428609024,3428630527,US +3428630528,3428634623,CA 3428634624,3428635903,US 3428635904,3428636671,CA -3428636672,3428641279,US -3428641280,3428641791,CA -3428641792,3428642303,US -3428642304,3428642815,CA -3428642816,3428660991,US -3428660992,3428661247,CA +3428636672,3428638719,US +3428638720,3428638975,CA +3428638976,3428642815,US +3428642816,3428643071,CA +3428643072,3428660735,US +3428660736,3428661247,CA 3428661248,3428662271,US 3428662272,3428662527,US -3428662528,3428689646,US -3428689647,3428689647,US -3428689648,3428743167,US +3428662528,3428743167,US 3428743168,3428744191,CA 3428744192,3428752383,US 3428752384,3428753407,GH @@ -72299,9 +72774,7 @@ 3430074112,3430074367,AU 3430074368,3430354943,US 3430354944,3430356991,PR -3430356992,3430701055,US -3430701056,3430702079,CA -3430702080,3430703871,US +3430356992,3430703871,US 3430703872,3430704127,PR 3430704128,3430705151,US 3430705152,3430706175,MX @@ -72351,9 +72824,7 @@ 3431642624,3431657471,CA 3431657472,3431658495,US 3431658496,3431661311,CA -3431661312,3431748607,US -3431748608,3431749119,FR -3431749120,3431751423,US +3431661312,3431751423,US 3431751424,3431752703,IT 3431752704,3431753727,US 3431753728,3431755007,CA @@ -72381,7 +72852,8 @@ 3432517120,3432517631,NA 3432517632,3432585215,US 3432585216,3432585727,MX -3432585728,3432613631,US +3432585728,3432611839,US +3432612864,3432613631,US 3432613632,3432613887,CA 3432613888,3432634111,US 3432634112,3432634367,CA @@ -72389,9 +72861,7 @@ 3432660992,3432663039,DE 3432663040,3432689151,US 3432689152,3432689663,CA -3432689664,3432749055,US -3432749056,3432749311,US -3432749312,3432807423,US +3432689664,3432807423,US 3432807424,3432808447,CA 3432808448,3433824511,US 3433824512,3433824767,DE @@ -72408,26 +72878,17 @@ 3434014720,3434015231,US 3434015232,3434020607,CA 3434020608,3434427391,US -3434427392,3434428415,HN +3434427392,3434428415,HR 3434428416,3434571775,US 3434571776,3434573823,CO 3434573824,3434583039,US 3434583040,3434584063,NL 3434584064,3434807551,US -3434807552,3434810111,CA -3434810112,3434810367,US -3434810368,3434831359,CA +3434807552,3434831359,CA 3434831360,3434831615,US 3434831616,3434872575,CA 3434872576,3434913791,US -3434913792,3434914047,AG -3434914048,3434914303,DM -3434914304,3434914559,VG -3434914560,3434914815,AG -3434914816,3434915071,VG -3434915072,3434916351,AG -3434916352,3434916607,DM -3434916608,3434917887,AG +3434913792,3434917887,AG 3434917888,3435069439,US 3435069440,3435134975,CA 3435134976,3435216637,US @@ -72448,7 +72909,9 @@ 3436290048,3436314367,CA 3436314368,3436476415,US 3436476416,3436478463,AW -3436478464,3437297919,US +3436478464,3436507135,US +3436507136,3436509183,BB +3436509184,3437297919,US 3437297920,3437301759,CA 3437301760,3437305855,US 3437305856,3437307391,CA @@ -72470,8 +72933,8 @@ 3437341952,3437343231,CA 3437343232,3437343487,US 3437343488,3437345791,CA -3437345792,3437346047,A2 -3437346048,3437350911,CA +3437345792,3437346303,A2 +3437346304,3437350911,CA 3437350912,3437351423,US 3437351424,3437353983,CA 3437353984,3437354239,A2 @@ -72480,21 +72943,14 @@ 3437359104,3437428735,CA 3437428736,3437691391,US 3437691392,3437691647,HK -3437691648,3437691903,US -3437691904,3437692415,FR -3437692416,3437692671,US +3437691648,3437692671,US 3437692672,3437693439,CA 3437693440,3437694207,US 3437694208,3437695231,AT 3437695232,3437695999,HK -3437696000,3437696511,NL -3437696512,3437702911,US +3437696000,3437702911,US 3437702912,3437703167,HK -3437703168,3437704191,US -3437704192,3437704703,CH -3437704704,3437708287,US -3437708288,3437708799,FI -3437708800,3437712639,US +3437703168,3437712639,US 3437712640,3437713663,GB 3437713664,3437715967,US 3437715968,3437716991,DE @@ -72502,14 +72958,7 @@ 3437717248,3437718527,BE 3437718528,3437720063,US 3437720064,3437723135,SG -3437723136,3437725183,US -3437725184,3437725695,MN -3437725696,3437726207,DE -3437726208,3437726463,US -3437726464,3437726975,GB -3437726976,3437736447,US -3437736448,3437737471,CL -3437737472,3437748223,US +3437723136,3437748223,US 3437748224,3437748479,GB 3437748480,3437748991,NL 3437748992,3437749247,US @@ -72557,66 +73006,65 @@ 3438261760,3438262015,US 3438262016,3438280703,CA 3438280704,3438542847,US -3438542848,3438545735,CA -3438545736,3438545743,US -3438545744,3438608383,CA +3438542848,3438608383,CA 3438608384,3438614607,US 3438614608,3438614615,BR 3438614616,3438813183,US 3438813184,3438814207,GH 3438814208,3438895103,US -3438895104,3438896895,HN -3438896896,3448263423,US -3448263424,3448263935,AG -3448263936,3448303103,US -3448303104,3448303615,KY -3448303616,3448338943,US -3448338944,3448339455,GB -3448339456,3448380839,US +3438895104,3438896127,HN +3438896128,3439071103,US +3439071104,3439071135,MX +3439071136,3448380839,US 3448380840,3448380847,SG -3448380848,3448398335,US -3448398336,3448398847,CA -3448398848,3448399359,US -3448399360,3448399871,CA -3448399872,3448717311,US +3448380848,3448380943,US +3448380944,3448380959,SG +3448380960,3448717311,US 3448717312,3448717567,AU 3448717568,3448838143,US 3448838144,3448838399,CA -3448838400,3449161983,US +3448838400,3448989695,US +3448989696,3448990719,HK +3448990720,3448991743,IN +3448991744,3449161983,US 3449161984,3449162239,CA -3449162240,3449174527,US -3449174528,3449174783,CA -3449174784,3449176063,US +3449162240,3449174495,US +3449174496,3449174527,CA +3449174528,3449176063,US 3449176064,3449176319,CA 3449176320,3449176831,US 3449176832,3449177087,CA -3449177088,3449177599,US -3449177600,3449178111,CA -3449178112,3449182719,US -3449182720,3449182975,CA -3449182976,3449183231,US -3449183232,3449184255,CA -3449184256,3449191167,US +3449177088,3449182015,US +3449182016,3449182031,CA +3449182032,3449182975,US +3449182976,3449184255,CA +3449184256,3449188671,US +3449188672,3449188703,CA +3449188704,3449191167,US 3449191168,3449191423,CA 3449191424,3449192447,US 3449192448,3449194495,CA 3449194496,3449198687,US 3449198688,3449198719,CA -3449198720,3449204735,US +3449198720,3449203711,US +3449203712,3449203775,CA +3449203776,3449204735,US 3449204736,3449205759,CA -3449205760,3449222911,US -3449222912,3449223423,CA -3449223424,3449223679,US -3449223680,3449224191,CA -3449224192,3449225471,US +3449205760,3449208927,US +3449208928,3449208943,CA +3449208944,3449215871,US +3449215872,3449215999,CA +3449216000,3449220863,US +3449220864,3449221119,CA +3449221120,3449225471,US 3449225472,3449254143,CA 3449254144,3449254911,US 3449254912,3449273599,CA 3449273600,3449273855,US -3449273856,3449278975,CA -3449278976,3449279487,US -3449279488,3449290495,CA -3449290496,3449582848,US +3449273856,3449290495,CA +3449290496,3449575423,US +3449575424,3449575679,AU +3449575680,3449582848,US 3449582849,3449582849,EU 3449582850,3449593855,US 3449593856,3449594111,AU @@ -72628,13 +73076,9 @@ 3449823232,3449824255,CO 3449824256,3449835519,US 3449835520,3449836543,ES -3449836544,3449843199,US -3449843200,3449843711,YE -3449843712,3449974783,US +3449836544,3449974783,US 3449974784,3449976831,CA -3449976832,3450078463,US -3450078464,3450079487,US -3450079488,3450085375,US +3449976832,3450085375,US 3450085376,3450085631,US 3450085632,3450217215,US 3450217216,3450217471,LC @@ -72676,18 +73120,14 @@ 3450950656,3450951679,JP 3450951680,3450953727,US 3450953728,3450957823,DE -3450957824,3450974207,US -3450974208,3450974463,GB -3450974464,3450975231,US +3450957824,3450975231,US 3450975232,3450975743,LB -3450975744,3450976511,US -3450976512,3450976767,IL -3450976768,3450982399,US +3450975744,3450982399,US 3450982400,3450984447,TW 3450984448,3450986495,PH -3450986496,3451507199,US -3451507200,3451507711,BR -3451507712,3451715839,US +3450986496,3450987007,US +3450987008,3450987263,CN +3450987264,3451715839,US 3451715840,3451724543,CA 3451724544,3451724799,US 3451725312,3451725567,US @@ -72706,9 +73146,7 @@ 3451767296,3451767551,CA 3451767552,3451767807,US 3451767808,3451780863,CA -3451780864,3451879423,US -3451879424,3451879935,DE -3451879936,3451884287,US +3451780864,3451884287,US 3451884288,3451884543,DE 3451884544,3451890431,US 3451890432,3451890687,AU @@ -72738,7 +73176,9 @@ 3452931328,3452931583,US 3452931584,3452934911,CA 3452934912,3452936191,US -3452936192,3452942847,CA +3452936192,3452938751,CA +3452938752,3452939263,US +3452939264,3452942847,CA 3452942848,3452943103,US 3452943104,3452953087,CA 3452953088,3452953343,US @@ -72777,25 +73217,17 @@ 3453180928,3453195263,CA 3453195264,3453195519,US 3453195520,3453206527,CA -3453206528,3453207551,HN -3453207552,3453207807,US +3453206528,3453207807,US 3453207808,3453208575,HN -3453208576,3453209087,US -3453209088,3453209599,HN -3453209600,3453209855,US -3453209856,3453210367,HN -3453210368,3453210623,US +3453208576,3453210623,US 3453210624,3453213183,CR -3453213184,3453214719,HN -3453214720,3453215231,GT +3453213184,3453214207,HN +3453214208,3453215231,US 3453215232,3453215999,SV 3453216000,3453217023,CR -3453217024,3453217535,SV -3453217536,3453217791,US +3453217024,3453217791,US 3453217792,3453219327,CR -3453219328,3453219583,US -3453219584,3453219839,SV -3453219840,3453220607,US +3453219328,3453220607,US 3453220608,3453222911,HN 3453222912,3453241343,US 3453241344,3453243391,US @@ -72804,21 +73236,13 @@ 3453406976,3453407231,GD 3453407232,3453407743,BB 3453407744,3453408255,GD -3453408256,3453409023,BB -3453409024,3453409535,KN -3453409536,3453411327,BB +3453408256,3453411327,BB 3453411328,3453607935,US 3453607936,3453608959,KN 3453608960,3453609983,LC -3453609984,3453610495,AG -3453610496,3453610751,MS -3453610752,3453611007,AG -3453611008,3453611263,MS -3453611264,3453612543,DM -3453612544,3453613055,KN -3453613056,3453614591,AG -3453614592,3453615103,DM -3453615104,3453615359,AG +3453609984,3453611263,AG +3453611264,3453611519,DM +3453611520,3453615359,AG 3453615360,3453615615,KN 3453615616,3453616127,AG 3453616128,3454003013,US @@ -72847,7 +73271,9 @@ 3454617600,3454617855,CA 3454617856,3454618111,US 3454618112,3454618367,CA -3454618368,3454619647,US +3454618368,3454618879,US +3454618880,3454619135,DO +3454619136,3454619647,US 3454619648,3454631423,CA 3454631424,3454631935,US 3454631936,3454634751,CA @@ -72887,66 +73313,36 @@ 3454881792,3454883839,CA 3454883840,3454915071,US 3454915072,3454926591,CA -3454926592,3455034879,US -3455034880,3455035135,AU -3455035136,3455042565,US +3454926592,3455042565,US 3455042566,3455042566,CA 3455042567,3455096831,US 3455096832,3455097855,EC 3455097856,3455109119,US 3455109120,3455111167,HN 3455111168,3455115263,SR -3455115264,3455132159,US -3455132160,3455133695,BO +3455115264,3455132671,US +3455132672,3455133695,BO 3455133696,3455320063,US 3455320064,3455322111,FR 3455322112,3455328255,US 3455328256,3455329279,DO -3455329280,3455333887,US -3455333888,3455334399,NL -3455334400,3455357951,US +3455329280,3455357951,US 3455357952,3455358975,BB -3455358976,3455418367,US -3455418368,3455418879,KY -3455418880,3455421439,US -3455421440,3455421951,BE -3455421952,3455453439,US +3455358976,3455453439,US 3455453440,3455453695,HT 3455453696,3455582207,US 3455582208,3455583743,SG -3455583744,3455584255,NL -3455584256,3455588351,US -3455588352,3455588863,BE -3455588864,3455596031,US -3455596032,3455596543,CH -3455596544,3455599615,US -3455599616,3455600127,TW -3455600128,3455600639,GB -3455600640,3455601407,US -3455601408,3455601919,GB -3455601920,3455602175,US -3455602176,3455602687,GB -3455602688,3455617279,US +3455583744,3455617279,US 3455617280,3455619071,GB -3455619072,3455621631,US -3455621632,3455622143,GB -3455622144,3455627519,US +3455619072,3455627519,US 3455627520,3455628287,DK 3455628288,3455628799,US 3455628800,3455630847,GB 3455630848,3455631359,US 3455631360,3455632639,ES -3455632640,3455632895,US -3455632896,3455633407,GB -3455633408,3455634431,US +3455632640,3455634431,US 3455634432,3455635455,DE -3455635456,3455637759,US -3455637760,3455638271,GB -3455638272,3455644927,US -3455644928,3455645439,GB -3455645440,3455646207,US -3455646208,3455646719,FR -3455646720,3455713279,US +3455635456,3455713279,US 3455713280,3455778815,CA 3455778816,3455864831,US 3455864832,3455866879,TW @@ -72961,9 +73357,15 @@ 3456360448,3456364543,BG 3456364544,3456892927,US 3456892928,3456958463,CA -3456958464,3458195455,US +3456958464,3457553407,US +3457553408,3457553663,CA +3457553664,3458039807,US +3458039808,3458043903,CA +3458043904,3458195455,US 3458195456,3458196479,SG -3458196480,3458807039,US +3458196480,3458233343,US +3458233344,3458234367,CA +3458234368,3458807039,US 3458807040,3458807295,GB 3458807296,3458811903,US 3458813952,3458818047,CA @@ -72987,28 +73389,25 @@ 3459310592,3459310847,KY 3459310848,3459312639,US 3459312640,3459312671,MX -3459312672,3459326463,US +3459312672,3459312767,US +3459312768,3459312895,MX +3459312896,3459326463,US 3459326464,3459327487,CA 3459327488,3459327999,CO 3459328000,3459329023,CL 3459329024,3459330047,VE -3459330048,3459331071,US -3459331072,3459331583,MX +3459330048,3459331583,US 3459331584,3459332607,PA -3459332608,3459333119,US -3459333120,3459333631,PW -3459333632,3459341055,US +3459332608,3459341055,US 3459341056,3459341311,MX -3459341312,3459348991,US -3459348992,3459349503,IT -3459349504,3459350527,US +3459341312,3459343487,US +3459343488,3459343551,CA +3459343552,3459350527,US 3459350528,3459352575,VE 3459352576,3459353599,US 3459353600,3459354623,CO 3459354624,3459357183,NI -3459357184,3459359999,US -3459360000,3459360511,VE -3459360512,3459362815,US +3459357184,3459362815,US 3459362816,3459364863,CO 3459364864,3459366911,AR 3459366912,3459368959,VE @@ -73033,8 +73432,11 @@ 3459513856,3459592191,US 3459592192,3459596287,CA 3459596288,3459614719,US -3459616768,3459617023,US -3459617024,3459617791,CA +3459616768,3459616799,CA +3459616800,3459616801,US +3459616802,3459617023,CA +3459617024,3459617535,US +3459617536,3459617791,CA 3459617792,3459617999,AP 3459618000,3459618000,ID 3459618001,3459618047,AP @@ -73045,18 +73447,20 @@ 3459629056,3459731455,US 3459731456,3459735551,CA 3459735552,3459842815,US -3459842816,3459843071,AR +3459842816,3459843071,BR 3459843072,3459848959,US 3459848960,3459849215,FR -3459849216,3460057283,US +3459849216,3459850239,US +3459850240,3459850367,CA +3459850368,3459850431,US +3459850432,3459850495,CA +3459850496,3460057283,US 3460057284,3460057287,TH 3460057288,3460061687,US 3460061688,3460061691,HK 3460061692,3460063175,US 3460063176,3460063179,HK -3460063180,3460104703,US -3460104704,3460105215,MX -3460105216,3460114431,US +3460063180,3460114431,US 3460114432,3460116479,SR 3460116480,3460161535,US 3460161536,3460165631,PR @@ -73066,18 +73470,14 @@ 3460411150,3460411150,EU 3460411151,3460507647,US 3460507648,3460507903,MX -3460507904,3460803583,US -3460803584,3460803839,US -3460803840,3460878335,US +3460507904,3460801023,US +3460801024,3460801279,US +3460801280,3460878335,US 3460878336,3460878591,CA -3460878592,3460878847,US -3460882432,3460905295,US -3460905296,3460905311,BR -3460905312,3460944127,US +3460878592,3460879359,US +3460882432,3460944127,US 3460944128,3460944383,AU -3460944384,3460950527,US -3460950528,3460950783,HK -3460950784,3460954527,US +3460944384,3460954527,US 3460954528,3460954559,KR 3460954560,3461021695,US 3461021696,3461087231,CA @@ -73086,9 +73486,7 @@ 3461357568,3461408767,US 3461410816,3461414911,CA 3461414912,3461513215,US -3461513216,3461513727,CA -3461513728,3461513983,BF -3461513984,3461516287,CA +3461513216,3461516287,CA 3461516288,3461516543,IL 3461516544,3461517311,CA 3461517312,3461554175,US @@ -73111,8 +73509,8 @@ 3463116800,3463118847,CO 3463118848,3463156735,US 3463156736,3463157759,BO -3463157760,3463176191,US -3463176192,3463176703,CW +3463157760,3463176447,US +3463176448,3463176703,CW 3463176704,3463184383,US 3463184384,3463192575,CA 3463192576,3463192831,US @@ -73132,11 +73530,7 @@ 3463708672,3463774207,CA 3463774208,3464127999,US 3464128000,3464128255,DE -3464128256,3464129535,US -3464129536,3464130047,DE -3464130048,3464142335,US -3464142336,3464142591,FR -3464142592,3464167679,US +3464128256,3464167679,US 3464167680,3464169215,CA 3464169216,3464169471,US 3464169472,3464171775,CA @@ -73161,8 +73555,18 @@ 3464392192,3464392703,US 3464392704,3464392959,CA 3464392960,3464394751,US -3464394752,3464396799,LC -3464396800,3464626175,US +3464394752,3464395007,LC +3464395008,3464395263,VC +3464395264,3464396031,LC +3464396032,3464396287,VC +3464396288,3464396543,LC +3464396544,3464396799,VC +3464396800,3464421631,US +3464421632,3464421887,CA +3464422400,3464549695,US +3464549696,3464549727,AG +3464549728,3464549759,KN +3464549760,3464626175,US 3464626176,3464626687,CA 3464626688,3464627199,US 3464627968,3464630271,CA @@ -73174,9 +73578,9 @@ 3464769536,3464773631,CA 3464773632,3464774079,US 3464774080,3464774111,ES -3464774112,3464781823,US -3464781824,3464782847,GB -3464782848,3464785151,US +3464774112,3464782079,US +3464782080,3464782335,GB +3464782336,3464785151,US 3464785152,3464785407,AR 3464785408,3464802303,US 3464802304,3464806399,CA @@ -73184,11 +73588,13 @@ 3465154560,3465158655,BS 3465158656,3465177087,US 3465177088,3465179135,PE -3465179136,3465462783,US -3465462784,3465462911,FR -3465462912,3465510911,US +3465179136,3465468671,US +3465468672,3465468927,GB +3465468928,3465510911,US 3465510912,3465543679,JP -3465543680,3466158079,US +3465543680,3466069071,US +3466069072,3466069087,CA +3466069088,3466158079,US 3466158080,3466166271,PA 3466166272,3466313727,US 3466313728,3466317823,CA @@ -73206,9 +73612,7 @@ 3466901504,3466903551,DE 3466903552,3466907647,US 3466907648,3466909695,DE -3466909696,3466921087,US -3466921088,3466921215,US -3466921216,3466929407,US +3466909696,3466929407,US 3466929408,3466929663,IT 3466929664,3466937667,US 3466937668,3466937669,DE @@ -73218,9 +73622,7 @@ 3466938445,3466938448,HK 3466938449,3466938808,US 3466938809,3466938812,GB -3466938813,3466976767,US -3466976768,3466977023,US -3466977024,3467051007,US +3466938813,3467051007,US 3467051008,3467116543,CA 3467116544,3467378687,US 3467378688,3467444223,CA @@ -73230,20 +73632,26 @@ 3467706368,3467902975,CA 3467902976,3467964415,US 3467964416,3467968511,CA -3467968512,3468127743,US +3467968512,3468058687,US +3468058688,3468058719,ES +3468058720,3468127743,US 3468127744,3468128255,IN 3468128256,3468296191,US 3468296192,3468361727,CA 3468361728,3468443647,US 3468443648,3468460031,CA 3468460032,3468468223,BM -3468468224,3468623871,US +3468468224,3468598527,US +3468598528,3468598783,SG +3468598784,3468599039,NL +3468599040,3468599295,SG +3468599296,3468623871,US 3468623872,3468656639,CA 3468656640,3468799999,US 3468800000,3468800255,GB -3468800256,3468978131,US -3468978132,3468978133,US -3468978134,3469032191,US +3468800256,3469010687,US +3469010688,3469010943,AU +3469010944,3469032191,US 3469032192,3469032447,AP 3469032448,3469055743,US 3469055744,3469055999,CA @@ -73257,23 +73665,27 @@ 3470131200,3470135295,AG 3470135296,3470137343,LC 3470137344,3470139391,VG -3470139392,3470186011,US -3470186012,3470186012,US -3470186013,3470192639,US -3470192640,3470196735,CA +3470139392,3470188111,US +3470188112,3470188115,CA +3470188116,3470192639,US +3470192640,3470194927,CA +3470194928,3470194935,US +3470194936,3470196735,CA 3470196736,3470458879,US 3470458880,3470475263,KR 3470475264,3470509311,US 3470509312,3470509567,CA -3470509568,3470522879,US -3470522880,3470523135,AE -3470523136,3470558207,US +3470509568,3470558207,US 3470558208,3470559231,HK 3470559232,3470573567,US 3470573568,3470575615,CA -3470575616,3470651391,US +3470575616,3470646591,US +3470646592,3470646599,CN +3470646600,3470651391,US 3470651392,3470655487,CA -3470655488,3470671871,US +3470655488,3470660647,US +3470660648,3470660655,IE +3470660656,3470671871,US 3470671872,3470680063,CA 3470680064,3470744063,US 3470744064,3470744575,CA @@ -73283,7 +73695,7 @@ 3470749952,3470750207,CA 3470750208,3470752767,US 3470752768,3470753023,CO -3470753024,3470754047,US +3470753024,3470754303,US 3470754304,3470754559,PE 3470754560,3470755839,US 3470755840,3470756095,ZA @@ -73297,15 +73709,15 @@ 3470884864,3470885887,HK 3470885888,3471057919,US 3471057920,3471058943,VE -3471058944,3471059455,US -3471059456,3471059967,ES -3471059968,3471262719,US +3471058944,3471059967,US +3471059968,3471060223,ES +3471060224,3471262719,US 3471262720,3471263743,EC 3471263744,3471265791,CO 3471265792,3471276031,US -3471276032,3471276799,BB -3471276800,3471277055,US -3471277056,3471278079,BB +3471276032,3471277055,BB +3471277056,3471277311,GB +3471277312,3471278079,BB 3471278080,3471529215,US 3471529216,3471529983,CA 3471529984,3471558655,US @@ -73317,15 +73729,15 @@ 3472392192,3472408575,CA 3472408576,3472571647,US 3472571648,3472571903,GH -3472571904,3472614911,US -3472614912,3472615167,US -3472615168,3473039359,US +3472571904,3473039359,US 3473039360,3473041407,BM -3473041408,3473276927,US +3473041408,3473067007,US +3473067008,3473068031,CA +3473068032,3473276927,US 3473276928,3473342463,CA -3473342464,3473765887,US -3473765888,3473766399,EC -3473766400,3474053119,US +3473342464,3473786111,US +3473786112,3473786127,PR +3473786128,3474053119,US 3474053120,3474055167,PE 3474055168,3474391039,US 3474391040,3474456575,CA @@ -73340,15 +73752,12 @@ 3475296463,3475310847,US 3475310848,3475311103,DE 3475311104,3475670015,US -3475670016,3475670527,AG -3475670528,3475670783,LC +3475670016,3475670783,AG 3475670784,3475670847,DM 3475670848,3475671039,AG 3475671040,3475681279,US 3475681280,3475685375,HN -3475685376,3475813423,US -3475813424,3475813679,US -3475813680,3475881983,US +3475685376,3475881983,US 3475881984,3475882767,CA 3475882768,3475882783,FR 3475882784,3475882799,CA @@ -73369,9 +73778,9 @@ 3475921152,3475921407,JP 3475921408,3475996671,US 3475996672,3476029439,CA -3476029440,3476422143,US -3476422144,3476422655,AZ -3476422656,3476447231,US +3476029440,3476418559,US +3476418560,3476421631,CA +3476421632,3476447231,US 3476447232,3476455423,CA 3476455424,3476881407,US 3476881408,3476946943,CA @@ -73382,15 +73791,17 @@ 3477313024,3477313279,US 3477313280,3477313535,US 3477313536,3477541887,US -3477541888,3477542911,IN +3477541888,3477542207,IN +3477542208,3477542271,US +3477542272,3477542911,IN 3477542912,3478114303,US 3478114304,3478118399,PE 3478118400,3478192127,US 3478192128,3478257663,CA -3478257664,3478372351,US -3478372352,3478374399,MX -3478374400,3478374655,US -3478374656,3478380543,MX +3478257664,3478274823,US +3478274824,3478274831,GB +3478274832,3478372351,US +3478372352,3478380543,MX 3478380544,3479207935,US 3479207936,3479240703,CA 3479240704,3479568383,US @@ -73399,61 +73810,39 @@ 3479896064,3479961599,CA 3479961600,3480223743,US 3480223744,3480256511,CA -3480256512,3480284159,US -3480284160,3480284671,CA -3480284672,3480444927,US +3480256512,3480444927,US 3480444928,3480449023,CA 3480453120,3480556287,US 3480556288,3480556543,HK -3480556544,3480567039,US -3480567040,3480567551,GB -3480567552,3480570879,US -3480570880,3480571391,CH -3480571392,3480575743,US +3480556544,3480575743,US 3480575744,3480577023,IT 3480577024,3480582655,US 3480582656,3480583423,MX -3480583424,3480591615,US -3480591616,3480592127,ID -3480592128,3480595967,US +3480583424,3480595967,US 3480595968,3480596991,SG 3480596992,3480597247,US 3480597248,3480598271,AU -3480598272,3480598527,US -3480598528,3480599039,AU -3480599040,3480602879,US +3480598272,3480602879,US 3480602880,3480603647,IT -3480603648,3480604159,US -3480604160,3480604671,ES -3480604672,3480612351,US +3480603648,3480612351,US 3480612352,3480613631,DE -3480613632,3480907263,US -3480907264,3480907775,FR -3480907776,3481164801,US -3481164802,3481164802,US -3481164803,3481165057,US -3481165058,3481165058,US -3481165059,3481165313,US -3481165314,3481165314,US -3481165315,3481165569,US -3481165570,3481165570,US -3481165571,3481665535,US +3480613632,3481665535,US 3481665536,3481731071,CA 3481731072,3481812991,US 3481812992,3481829375,CA 3481829376,3481843455,US 3481843456,3481843711,GB -3481843712,3481936895,US -3481936896,3481937919,VE -3481937920,3481951395,US +3481843712,3481937407,US +3481937408,3481937663,VE +3481937664,3481951395,US 3481951396,3481951399,GB -3481951400,3481958143,US -3481958144,3481958399,NL +3481951400,3481958271,US +3481958272,3481958399,NL 3481958400,3481964575,US 3481964576,3481964579,IE -3481964580,3481973247,US -3481973248,3481973503,CA -3481973504,3481993215,US +3481964580,3481966591,US +3481966592,3481966847,CH +3481966848,3481993215,US 3481993216,3482058751,CA 3482058752,3482583039,US 3482583040,3482632191,CA @@ -73461,29 +73850,23 @@ 3482775552,3482779647,PR 3482779648,3482910719,US 3482910720,3482927103,CA -3482927104,3483239423,US -3483239424,3483239679,US -3483239680,3483240703,US -3483240704,3483240959,US -3483240960,3483247359,US -3483247360,3483247871,US -3483247872,3483248639,US -3483248640,3483249151,US -3483249152,3483435007,US +3482927104,3483435007,US 3483435008,3483533311,CA 3483533312,3483631615,US 3483631616,3483697151,CA 3483697152,3483791359,US -3483791360,3483795455,PR +3483791360,3483791623,PR +3483791624,3483791631,US +3483791632,3483791815,PR +3483791816,3483791823,US +3483791824,3483795455,PR 3483795456,3483828223,US 3483828224,3483836415,CA 3483836416,3483877375,US 3483877376,3483893759,CA 3483893760,3484006911,US 3484006912,3484007167,AU -3484007168,3484013055,US -3484013056,3484013567,DE -3484013568,3484319743,US +3484007168,3484319743,US 3484320256,3484320511,US 3484321792,3484322047,PR 3484322048,3484323839,US @@ -73492,21 +73875,19 @@ 3484419584,3484419839,A2 3484419840,3484437503,US 3484437504,3484442623,GB -3484442624,3484458751,US -3484458752,3484459775,CA -3484459776,3484460735,US +3484442624,3484459007,US +3484459008,3484459775,CA +3484459776,3484460687,US +3484460688,3484460703,CA +3484460704,3484460735,US 3484460736,3484460751,CA -3484460752,3484468479,US -3484468480,3484468991,CA -3484468992,3484469247,US -3484469248,3484469759,CA -3484469760,3484472831,US -3484472832,3484473087,CA -3484473088,3484475903,US +3484460752,3484464319,US +3484464320,3484464335,CA +3484464336,3484472967,US +3484472968,3484472975,CA +3484472976,3484475903,US 3484475904,3484476159,CA -3484476160,3484476671,US -3484476672,3484476927,CA -3484476928,3484480255,US +3484476160,3484480255,US 3484480256,3484480511,CA 3484480512,3484647423,US 3484647424,3484663807,CA @@ -73522,26 +73903,22 @@ 3485462528,3485464575,VC 3485464576,3485466623,LC 3485466624,3485597695,US -3485597696,3485695999,CA +3485597696,3485671583,CA +3485671584,3485671615,US +3485671616,3485672543,CA +3485672544,3485672551,US +3485672552,3485694975,CA +3485694976,3485695231,US +3485695232,3485695999,CA 3485696000,3485721056,US 3485721057,3485721057,AE -3485721058,3485724671,US -3485724672,3485728767,US -3485728768,3485959679,US -3485959680,3485960191,CA -3485960192,3486023679,US +3485721058,3486023679,US 3486023680,3486031871,CA 3486031872,3486269439,US 3486269440,3486285823,JM 3486285824,3486302207,PR 3486302208,3486310399,CA -3486310400,3486590463,US -3486590464,3486590975,GB -3486590976,3486628863,US -3486628864,3486629375,PT -3486629376,3486637823,US -3486637824,3486638335,SE -3486638336,3486646271,US +3486310400,3486646271,US 3486646272,3486662655,CA 3486662656,3486688255,US 3486688256,3486688511,GB @@ -73549,20 +73926,14 @@ 3487039488,3487105023,CA 3487105024,3487175935,US 3487175936,3487176191,GB -3487176192,3487177983,US -3487177984,3487178239,GB -3487178240,3487181359,US +3487176192,3487181359,US 3487181360,3487181375,GB 3487181376,3487188991,US 3487188992,3487189247,GB -3487189248,3487194111,US -3487194112,3487194367,GB -3487194368,3487216383,US +3487189248,3487216383,US 3487216384,3487216639,SE 3487216640,3487236095,US -3487236096,3487238023,CA -3487238024,3487238024,CA -3487238025,3487301631,CA +3487236096,3487301631,CA 3487301632,3487703039,US 3487703040,3487703073,DE 3487703074,3487703074,A2 @@ -73580,8 +73951,7 @@ 3487766528,3487768575,CA 3487768576,3487842303,US 3487842304,3487858687,CA -3487858688,3487859199,KY -3487859200,3487875071,BM +3487858688,3487875071,BM 3487875072,3487891455,US 3487891456,3487907839,CA 3487907840,3488014335,US @@ -73598,18 +73968,22 @@ 3488290816,3488291839,IN 3488291840,3488300287,US 3488300288,3488300543,A2 -3488300544,3488307711,US -3488307712,3488308223,IN +3488300544,3488307199,US +3488307200,3488308223,IN 3488308224,3488350207,US 3488350208,3488415743,CA 3488415744,3488718847,US 3488718848,3488719615,A2 -3488719616,3488720895,US -3488720896,3488721919,A2 -3488721920,3488722943,US -3488722944,3488725503,A2 -3488725504,3488725759,US -3488725760,3488727039,A2 +3488719616,3488719871,US +3488719872,3488720639,A2 +3488720640,3488720895,US +3488720896,3488721697,A2 +3488721698,3488721698,US +3488721699,3488722175,A2 +3488722176,3488722431,US +3488722432,3488726015,A2 +3488726016,3488726271,US +3488726272,3488727039,A2 3488727040,3488940031,US 3488940032,3488956415,CA 3488956416,3488989183,US @@ -73624,68 +73998,48 @@ 3489562624,3489566719,JM 3489566720,3489577215,US 3489577216,3489578239,CN -3489578240,3489673471,US -3489673472,3489673727,PR -3489673728,3489718271,US -3489718272,3489718527,AG -3489718528,3489718783,LC -3489718784,3489719807,AG -3489719808,3489720063,DM -3489720064,3489720319,AG +3489578240,3489685503,US +3489685504,3489687551,BB +3489687552,3489718271,US +3489718272,3489720319,AG 3489720320,3489738751,US 3489738752,3489740799,PH 3489740800,3489775103,US 3489775104,3489775359,BO 3489775360,3489969151,US 3489969152,3489969663,PR -3489969664,3490228735,US -3490228736,3490229247,CO -3490229248,3490263039,US +3489969664,3490263039,US 3490263040,3490265087,CO 3490265088,3490265343,EC 3490265344,3490267135,CO 3490267136,3490488319,US 3490488320,3490489343,PR -3490489344,3490702847,US -3490702848,3490703103,AS -3490703104,3490974719,US -3490974720,3490975743,PR -3490975744,3491381247,US -3491381248,3491381503,BM -3491381504,3491381759,KY -3491381760,3491389439,BM -3491389440,3491476991,US -3491476992,3491478527,VI -3491478528,3491508223,US -3491508224,3491512319,CA -3491512320,3491637247,US -3491637248,3491637759,CO -3491637760,3491651583,US +3490489344,3491381247,US +3491381248,3491389439,BM +3491389440,3491477503,US +3491477504,3491478527,VI +3491478528,3491651583,US 3491651584,3491659775,VI 3491659776,3491743743,US 3491743744,3491745791,CO -3491745792,3491907591,US -3491907592,3491907592,US -3491907593,3491969023,US +3491745792,3491969023,US 3491969024,3491970047,PR 3491970048,3492151295,US 3492151296,3492167679,CA -3492167680,3492669951,US +3492167680,3492588132,US +3492588133,3492588133,PR +3492588134,3492669951,US 3492669952,3492671487,PA -3492671488,3492712191,US -3492712192,3492712447,CA -3492712448,3492815457,US -3492815458,3492815458,GB -3492815459,3492845823,US +3492671488,3492815455,US +3492815456,3492815487,GB +3492815488,3492845823,US 3492845824,3492846079,CH -3492846080,3492868607,US -3492868608,3492868863,MX -3492868864,3492869631,US -3492869632,3492870143,BR -3492870144,3492893951,US -3492893952,3492893985,GB -3492893986,3492893986,US -3492893987,3492894207,GB +3492846080,3492867071,US +3492867072,3492867327,FR +3492867328,3492869631,US +3492869632,3492869887,BR +3492869888,3492893951,US +3492893952,3492894207,GB 3492894208,3492894975,US 3492894976,3492895231,BE 3492895232,3492905983,US @@ -73698,29 +74052,31 @@ 3492912160,3492912383,GB 3492912384,3492917247,US 3492917248,3492917503,VI -3492917504,3492926079,US +3492917504,3492923391,US +3492923392,3492923647,GB +3492923648,3492926079,US 3492926080,3492926095,EU -3492926096,3492934111,US +3492926096,3492933376,US +3492933377,3492933377,CH +3492933378,3492934111,US 3492934112,3492934143,GB 3492934144,3492950863,US 3492950864,3492950879,DE -3492950880,3492960383,US -3492960384,3492960511,ES -3492960512,3492962303,US -3492962304,3492963327,GB -3492963328,3492968447,US -3492968448,3492970239,VI -3492970240,3492970367,US -3492970368,3492970495,VI -3492970496,3492994815,US +3492950880,3492954879,US +3492954880,3492955135,GB +3492955136,3492960255,US +3492960256,3492960511,ES +3492960512,3492962815,US +3492962816,3492963071,GB +3492963072,3492968191,US +3492968192,3492968447,GB +3492968448,3492969471,US +3492969472,3492969727,VI +3492969728,3492994815,US 3492994816,3492995071,GB 3492995072,3492996127,US 3492996128,3492996136,GB -3492996137,3493003519,US -3493003520,3493003775,AU -3493003776,3493008127,US -3493008128,3493008383,MX -3493008384,3493011327,US +3492996137,3493011327,US 3493011328,3493011455,GB 3493011456,3493013247,US 3493013248,3493013503,MX @@ -73733,9 +74089,7 @@ 3493029343,3493039359,US 3493039360,3493039615,AR 3493039616,3493050367,US -3493050368,3493050386,FR -3493050387,3493050387,US -3493050388,3493050464,FR +3493050368,3493050464,FR 3493050465,3493050496,US 3493050497,3493050623,FR 3493050624,3493061119,US @@ -73746,9 +74100,7 @@ 3493081600,3493082367,PY 3493082368,3493089023,US 3493089024,3493089279,CM -3493089280,3493174877,US -3493174878,3493174878,US -3493174879,3493244927,US +3493089280,3493244927,US 3493244928,3493249023,PR 3493249024,3493866495,US 3493866496,3493867519,VG @@ -73758,9 +74110,9 @@ 3493900372,3493900375,GB 3493900376,3493936127,US 3493936128,3493937151,CA -3493937152,3493939199,US -3493939200,3493940223,CA -3493940224,3493980159,US +3493937152,3493939455,US +3493939456,3493939711,CA +3493939712,3493980159,US 3493980160,3493981183,CA 3493981184,3493982207,US 3493982208,3493984255,CA @@ -73798,7 +74150,9 @@ 3494144000,3494145023,CA 3494145024,3494168575,US 3494168576,3494170623,CA -3494170624,3494184959,US +3494170624,3494181631,US +3494181632,3494181887,SN +3494181888,3494184959,US 3494184960,3494187007,CA 3494187008,3494191359,US 3494191360,3494191615,DE @@ -73841,9 +74195,7 @@ 3494425600,3494432767,US 3494432768,3494433791,CA 3494433792,3494437887,US -3494437888,3494438399,GP -3494438400,3494438655,KN -3494438656,3494438911,DM +3494437888,3494438911,GP 3494438912,3494455295,US 3494455296,3494456319,CA 3494456320,3494459391,US @@ -73877,22 +74229,20 @@ 3494668288,3494670335,CA 3494670336,3494700031,US 3494700032,3494701055,CA -3494701056,3494713091,US -3494713092,3494713092,US -3494713093,3494727679,US +3494701056,3494727679,US 3494727680,3494729727,CA 3494729728,3494730751,US 3494730752,3494731775,CA -3494731776,3494743039,US -3494743040,3494744063,CA -3494744064,3494747135,US +3494731776,3494747135,US 3494747136,3494748159,CA 3494748160,3494757375,US 3494757376,3494758399,CA 3494758400,3494776831,US 3494776832,3494777855,CA 3494777856,3494785023,US -3494785024,3494786559,GP +3494785024,3494785279,GP +3494785280,3494786303,MF +3494786304,3494786559,GP 3494786560,3494787071,MF 3494787072,3494787327,A2 3494787328,3494787583,NG @@ -73903,10 +74253,13 @@ 3494789120,3494852607,US 3494852608,3494854655,CA 3494854656,3494862847,US -3494862848,3494863871,DM +3494862848,3494863103,GP +3494863104,3494863359,DM +3494863360,3494863871,GP 3494863872,3494866943,US 3494866944,3494867967,CA -3494867968,3494893567,US +3494867968,3494868991,US +3494870016,3494893567,US 3494893568,3494894591,CA 3494894592,3494917119,US 3494917120,3494917631,CA @@ -73956,10 +74309,8 @@ 3495219200,3495251967,US 3495251968,3495254015,CA 3495254016,3495260159,US -3495260160,3495260799,CA -3495260800,3495260927,US -3495260928,3495261183,CA -3495261184,3495286783,US +3495260160,3495261183,CA +3495261184,3495285759,US 3495286784,3495288831,CA 3495288832,3495331839,US 3495331840,3495332863,A2 @@ -73992,7 +74343,8 @@ 3495478272,3495479295,CA 3495479296,3495505919,US 3495505920,3495507967,CA -3495507968,3495515135,US +3495507968,3495508991,US +3495510016,3495515135,US 3495515136,3495516159,CA 3495516160,3495526399,US 3495526400,3495527423,CA @@ -74012,12 +74364,10 @@ 3495618560,3495619583,CA 3495619584,3495620607,US 3495620608,3495622655,CA -3495622656,3495653887,US -3495653888,3495654399,CA -3495654400,3495673855,US +3495622656,3495673855,US 3495673856,3495674879,MF -3495674880,3495675391,VG -3495675392,3495688191,US +3495674880,3495675903,VG +3495675904,3495688191,US 3495688192,3495689215,CA 3495689216,3495694335,US 3495694336,3495696383,CA @@ -74029,7 +74379,9 @@ 3495723008,3495724031,US 3495724032,3495727103,CA 3495727104,3495749631,US -3495749632,3495750655,CA +3495749632,3495749856,CA +3495749857,3495749861,RU +3495749862,3495750655,CA 3495750656,3495815167,US 3495815168,3495817215,CA 3495817216,3495828479,US @@ -74040,8 +74392,7 @@ 3495847936,3495849983,CA 3495849984,3495862271,US 3495862272,3495864319,CA -3495864320,3495864831,DM -3495864832,3495865343,GP +3495864320,3495865343,GP 3495865344,3495866367,US 3495866368,3495868415,LC 3495868416,3495871487,US @@ -74062,9 +74413,13 @@ 3496132608,3496148991,CA 3496148992,3496181759,US 3496181760,3496189951,CA -3496189952,3496190719,US -3496190720,3496190975,CA -3496190976,3496296447,US +3496189952,3496190519,US +3496190520,3496190527,CA +3496190528,3496190719,US +3496190720,3496190735,CA +3496190736,3496190751,US +3496190752,3496190767,CA +3496190768,3496296447,US 3496296448,3496312831,CA 3496312832,3496468479,US 3496468480,3496476671,CA @@ -74079,15 +74434,15 @@ 3496946432,3496946943,US 3496946944,3496947199,IN 3496947200,3496947711,US -3496947712,3496951807,JP +3496947712,3496949759,JP +3496949760,3496951807,US 3496951808,3496959999,CA 3496960000,3497066495,US 3497066496,3497082879,CA -3497082880,3497157375,US -3497157376,3497157887,A2 -3497157888,3497161735,US +3497082880,3497161735,US 3497161736,3497161743,MT -3497161744,3497161767,US +3497161744,3497161759,US +3497161760,3497161767,PT 3497161768,3497161775,MT 3497161776,3497161895,US 3497161896,3497161903,MT @@ -74095,9 +74450,7 @@ 3497161936,3497161943,MT 3497161944,3497164799,US 3497164800,3497181183,CA -3497181184,3497251915,US -3497251916,3497251916,US -3497251917,3497410559,US +3497181184,3497410559,US 3497410560,3497431039,CA 3497431040,3497447423,US 3497447424,3497451519,CA @@ -74115,22 +74468,21 @@ 3498428416,3498429439,CR 3498429440,3498509055,US 3498509056,3498510335,PR -3498510336,3498513919,US -3498513920,3498514431,CL -3498514432,3498587135,US +3498510336,3498587135,US 3498587136,3498588159,NL -3498588160,3498708991,US +3498588160,3498599935,US +3498599936,3498600191,WS +3498600192,3498708991,US 3498708992,3498717183,JM 3498717184,3498760191,US 3498760192,3498762239,PR -3498762240,3499403263,US -3499403264,3499403775,MW -3499403776,3499450367,US +3498762240,3499299327,US +3499299328,3499299583,WS +3499299584,3499450367,US 3499450368,3499451391,IN 3499451392,3499705343,US 3499705344,3499705855,TZ -3499705856,3499706367,MG -3499706368,3499986943,US +3499705856,3499986943,US 3499986944,3499988991,KY 3499988992,3500015615,US 3500015616,3500016383,AG @@ -74149,17 +74501,9 @@ 3500486656,3500490751,CR 3500490752,3500613631,US 3500613632,3500614655,MZ -3500614656,3500664262,US -3500664263,3500664263,US -3500664264,3500664575,US -3500664576,3500664831,US -3500664832,3500664870,US +3500614656,3500664870,US 3500664871,3500664871,CA -3500664872,3500666751,US -3500666752,3500666879,US -3500666880,3500689407,US -3500689408,3500689919,CL -3500689920,3500707327,US +3500664872,3500707327,US 3500707328,3500707839,CA 3500707840,3500728319,US 3500728320,3500736511,KY @@ -74173,37 +74517,19 @@ 3501378048,3501378303,DE 3501378304,3501522943,US 3501522944,3501588479,CA -3501588480,3501721187,US -3501721188,3501721188,US -3501721189,3501789442,US -3501789443,3501789443,US -3501789444,3502470143,US +3501588480,3502470143,US 3502470144,3502471167,MX -3502471168,3502518783,US -3502518784,3502519295,LK -3502519296,3502993407,US -3502993408,3502993919,NL -3502993920,3503206399,US -3503206400,3503206911,CR -3503206912,3503250431,US -3503250432,3503250943,PK -3503250944,3503323135,US -3503323136,3503323647,KE -3503323648,3503738879,US +3502471168,3503738879,US 3503738880,3503740927,CO 3503740928,3503890431,US 3503890432,3503894527,CO 3503894528,3503990783,US 3503990784,3503992831,AE -3503992832,3504086015,US -3504086016,3504086527,LI -3504086528,3504136191,US +3503992832,3504136191,US 3504136192,3504138239,AZ -3504138240,3504889343,US -3504889344,3504889855,PK -3504889856,3504932351,US -3504932352,3504932863,BD -3504932864,3505004543,US +3504138240,3504928687,US +3504928688,3504928695,IT +3504928696,3505004543,US 3505004544,3505005823,PR 3505005824,3505006079,DO 3505006080,3505012735,PR @@ -74211,13 +74537,9 @@ 3505121024,3505121279,PH 3505121280,3505424383,US 3505424384,3505425407,PK -3505425408,3505661951,US -3505661952,3505662463,JM -3505662464,3505818623,US +3505425408,3505818623,US 3505818624,3505819647,BS -3505819648,3505999359,US -3505999360,3506000127,PR -3506000128,3506043135,US +3505819648,3506043135,US 3506043136,3506044927,PA 3506044928,3506231807,US 3506231808,3506232063,IN @@ -74256,7 +74578,6 @@ 3507749376,3507749631,US 3507749632,3507765247,CA 3507765248,3508219903,US -3508219904,3508220927,CA 3508220928,3508221951,KY 3508221952,3508222975,US 3508222976,3508223999,KY @@ -74264,115 +74585,105 @@ 3508338688,3508404223,CA 3508404224,3508690943,US 3508690944,3508695039,CA -3508695040,3509112831,US -3509112832,3509114879,US -3509114880,3509116159,US -3509116160,3509116415,US -3509116416,3509157887,US +3508695040,3509157887,US 3509157888,3509166079,CA 3509166080,3509215231,US 3509215232,3509223423,CA 3509223424,3509305599,US 3509305600,3509305615,GB 3509305616,3509346303,US -3509346304,3509354495,CA +3509346304,3509350711,CA +3509350712,3509350719,US +3509350720,3509354495,CA 3509354496,3509387263,US 3509387264,3509420031,PE 3509420032,3509522175,US 3509522176,3509522431,CA -3509522432,3509526015,US +3509522432,3509523679,US +3509523680,3509523695,CA +3509523696,3509524479,US +3509524480,3509524735,CA +3509524736,3509526015,US 3509526016,3509526271,CA -3509526272,3509530623,US +3509526272,3509529087,US +3509529088,3509529215,CA +3509529216,3509530623,US 3509530624,3509532671,CA 3509532672,3509533183,US 3509533184,3509533439,CA -3509533440,3509533604,US -3509533605,3509533605,CA -3509533606,3509534719,US -3509534720,3509535231,CA -3509535232,3509535487,US -3509535488,3509535743,CA -3509535744,3509538047,US +3509533440,3509538047,US 3509538048,3509538303,CA 3509538304,3509538559,US 3509538560,3509538815,CA 3509538816,3509539583,US 3509539584,3509539839,CA -3509539840,3509551359,US +3509539840,3509539967,US +3509539968,3509540031,CA +3509540032,3509541375,US +3509541376,3509541503,CA +3509541504,3509541631,US +3509541632,3509541887,CA +3509541888,3509546095,US +3509546096,3509546111,CA +3509546112,3509551359,US 3509551360,3509551615,CA 3509551616,3509553919,US 3509553920,3509554431,CA -3509554432,3509555455,US +3509554432,3509554943,US +3509554944,3509554959,CA +3509554960,3509555455,US 3509555456,3509555711,CA 3509555712,3509561599,US 3509561600,3509561855,CA -3509561856,3509562367,US -3509562368,3509562623,CA -3509562624,3509563903,US +3509561856,3509562495,US +3509562496,3509562559,CA +3509562560,3509563903,US 3509563904,3509564159,CA 3509564160,3509564671,US 3509564672,3509564927,CA -3509564928,3509565695,US -3509565696,3509565951,CA -3509565952,3509570047,US +3509564928,3509567999,US +3509568000,3509568255,CA +3509568256,3509570047,US 3509570048,3509570303,CA 3509570304,3509571071,US 3509571072,3509571327,CA -3509571328,3509576959,US +3509571328,3509573439,US +3509573440,3509573455,CA +3509573456,3509576959,US 3509576960,3509577215,CA -3509577216,3509577471,US -3509577472,3509577535,CA -3509577536,3509577551,US -3509577552,3509577727,CA -3509577728,3509578495,US -3509578496,3509578751,CA -3509578752,3509580799,US +3509577216,3509580799,US 3509580800,3509581055,CA 3509581056,3509731327,US 3509731328,3509739519,CA 3509739520,3509846015,US 3509846016,3509977087,CA -3509977088,3509987327,US -3509987328,3509987583,US -3509987584,3509993471,US +3509977088,3509993471,US 3509993472,3509997567,CA 3509997568,3510005759,US 3510005760,3510009855,CA 3510009856,3510239231,US 3510239232,3510246728,CA 3510246729,3510246729,US -3510246730,3510249471,CA -3510249472,3510249983,QA -3510249984,3510251519,CA +3510246730,3510251519,CA 3510251520,3510252799,DO -3510252800,3510269951,CA +3510252800,3510253953,CA +3510253954,3510253954,US +3510253955,3510269951,CA 3510269952,3510270719,LY 3510270720,3510271999,CA -3510272000,3510312959,US -3510312960,3510321151,US -3510321152,3510321407,AG -3510321408,3510321663,VG -3510321664,3510323199,AG -3510323200,3510324223,KN -3510324224,3510325247,AI -3510325248,3510326271,AG -3510326272,3510327295,VG -3510327296,3510328319,AG +3510272000,3510321151,US +3510321152,3510328319,AG 3510328320,3510328575,KN -3510328576,3510331391,AG -3510331392,3510332415,DM -3510332416,3510332927,KN -3510332928,3510333183,LC -3510333184,3510333439,AG -3510333440,3510333951,KN -3510333952,3510337535,AG -3510337536,3510479791,US +3510328576,3510329599,AG +3510329600,3510329855,MS +3510329856,3510337535,AG +3510337536,3510470927,US +3510470928,3510470935,IL +3510470936,3510479791,US 3510479792,3510479799,IE 3510479800,3510788447,US 3510788448,3510788479,GB -3510788480,3510844415,US -3510844416,3510844927,CA -3510844928,3510935551,US +3510788480,3510935551,US 3510935552,3510943743,CA 3510943744,3511140351,US 3511140352,3511156735,CA @@ -74386,7 +74697,11 @@ 3511260928,3511261183,US 3511261184,3511812095,US 3511812096,3511844863,CA -3511844864,3512045055,US +3511844864,3512012095,US +3512012096,3512012159,GB +3512012160,3512019135,US +3512019136,3512019151,MX +3512019152,3512045055,US 3512045056,3512045311,IE 3512045312,3512053247,US 3512053248,3512053503,MY @@ -74405,7 +74720,9 @@ 3512207104,3512207359,US 3512207360,3512209407,CO 3512209408,3512221695,US -3512221696,3512222271,AG +3512221696,3512221759,AG +3512221760,3512221791,GP +3512221792,3512222271,AG 3512222272,3512222335,KN 3512222336,3512223743,AG 3512223744,3512225791,ZA @@ -74418,8 +74735,7 @@ 3512237312,3512238079,US 3512238080,3512240127,AW 3512240128,3512241663,BS -3512241664,3512242175,CO -3512242176,3512242687,US +3512241664,3512242687,US 3512242688,3512244991,EG 3512244992,3512246015,IL 3512246016,3512246783,CL @@ -74430,8 +74746,7 @@ 3512260608,3512261631,GU 3512261632,3512262911,US 3512262912,3512263679,GT -3512263680,3512264703,VE -3512264704,3512267263,US +3512263680,3512267263,US 3512267264,3512268031,TG 3512268032,3512270847,US 3512270848,3512336383,CA @@ -74442,9 +74757,15 @@ 3512401920,3512418303,US 3512418304,3512451071,CA 3512451072,3512467455,PR -3512467456,3512581375,US +3512467456,3512502530,US +3512502531,3512502531,CA +3512502532,3512581375,US 3512581376,3512582143,CN -3512582144,3512593919,US +3512582144,3512593151,US +3512593152,3512593279,GB +3512593280,3512593663,US +3512593664,3512593791,JP +3512593792,3512593919,US 3512593920,3512594175,AP 3512594176,3512647679,US 3512647680,3512655871,TT @@ -74468,23 +74789,19 @@ 3513475072,3513483263,CA 3513499648,3513778175,US 3513778176,3513794559,CA -3513794560,3513840127,US -3513840128,3513840383,US -3513840384,3514007551,US +3513794560,3514007551,US 3514007552,3514040319,CA 3514040320,3514367999,US 3514368000,3514433535,CA 3514433536,3514580991,US -3514580992,3514589183,GB -3514589184,3514590207,US -3514590208,3514590719,NI +3514580992,3514583511,GB +3514583512,3514583535,US +3514583536,3514589183,GB +3514589184,3514590719,US 3514590720,3514591103,SV -3514591104,3514591743,US -3514591744,3514592255,NI -3514592256,3514593279,SV -3514593280,3514596863,US -3514596864,3514597375,SV -3514597376,3514826751,US +3514591104,3514592255,US +3514592256,3514592767,SV +3514592768,3514826751,US 3514826752,3514843135,CA 3514843136,3514993919,US 3514993920,3514993983,GB @@ -74499,7 +74816,9 @@ 3515001870,3515001873,GB 3515001874,3515007869,US 3515007870,3515007870,GB -3515007871,3515301887,US +3515007871,3515136511,US +3515136512,3515136767,GB +3515136768,3515301887,US 3515301888,3515318271,CA 3515318272,3515596799,US 3515596800,3515613183,CA @@ -74519,8 +74838,7 @@ 3516366848,3516370943,CA 3516370944,3516514303,US 3516514304,3516530687,CA -3516530688,3516899327,US -3516899328,3516899839,A2 +3516530688,3516899839,US 3516899840,3516900095,NG 3516900096,3516903423,US 3516903424,3516907519,CA @@ -74540,60 +74858,74 @@ 3517233152,3517235199,GU 3517235200,3517383935,US 3517383936,3517384191,CA -3517384192,3517385215,US -3517385216,3517385471,CA -3517385472,3517388031,US +3517384192,3517385407,US +3517385408,3517385439,CA +3517385440,3517388031,US 3517388032,3517388287,CA -3517388288,3517390335,US -3517390336,3517390847,CA -3517390848,3517391103,US +3517388288,3517389311,US +3517389312,3517389567,CA +3517389568,3517390335,US +3517390336,3517390591,CA +3517390592,3517391103,US 3517391104,3517391359,CA -3517391360,3517391615,US -3517391616,3517391871,CA -3517391872,3517392383,US -3517392384,3517392639,CA -3517392640,3517394175,US +3517391360,3517392895,US +3517392896,3517393151,CA +3517393152,3517394175,US 3517394176,3517394431,CA 3517394432,3517395199,US 3517395200,3517395455,CA 3517395456,3517396111,US 3517396112,3517396127,CA -3517396128,3517396223,US -3517396224,3517396479,CA -3517396480,3517400319,US +3517396128,3517396751,US +3517396752,3517396767,CA +3517396768,3517397759,US +3517397760,3517398015,CA +3517398016,3517399807,US +3517399808,3517399871,CA +3517399872,3517400319,US 3517400320,3517400575,CA 3517400576,3517403903,US 3517403904,3517404159,CA -3517404160,3517409791,US -3517409792,3517410047,CA -3517410048,3517410303,US -3517410304,3517410815,CA -3517410816,3517411839,US +3517404160,3517411839,US 3517411840,3517412095,CA 3517412096,3517416191,US 3517416192,3517416447,CA -3517416448,3517423103,US -3517423104,3517423359,CA -3517423360,3517431903,US -3517431904,3517431935,CA -3517431936,3517438943,US +3517416448,3517416919,US +3517416920,3517416927,CA +3517416928,3517420375,US +3517420376,3517420383,CA +3517420384,3517423423,US +3517423424,3517423455,CA +3517423456,3517423487,US +3517423488,3517423519,CA +3517423520,3517424767,US +3517424768,3517424831,CA +3517424832,3517426751,US +3517426752,3517426815,CA +3517426816,3517430687,US +3517430688,3517430719,CA +3517430720,3517431807,US +3517431808,3517432063,CA +3517432064,3517438943,US 3517438944,3517438975,CA -3517438976,3517441279,US +3517438976,3517439743,US +3517439744,3517439999,CA +3517440000,3517441279,US 3517441280,3517441535,CA -3517441536,3517447863,US +3517441536,3517442175,US +3517442176,3517442207,CA +3517442208,3517442559,US +3517442560,3517442623,CA +3517442624,3517447863,US 3517447864,3517447871,CA 3517447872,3517546495,US 3517546496,3517562879,CA 3517562880,3517595647,US 3517595648,3517596671,SE 3517596672,3517596927,US -3517596928,3517597183,SE -3517597184,3517597695,US -3517597696,3517599359,SE +3517596928,3517599359,SE 3517599360,3517599615,US -3517599616,3517600767,SE -3517600768,3517601279,US -3517601280,3517602687,SE +3517599616,3517602687,SE 3517602688,3517602815,US 3517602816,3517603327,SE 3517603328,3517603583,US @@ -74622,35 +74954,25 @@ 3519234048,3519250431,CA 3519250432,3519340543,US 3519340544,3519344639,CA -3519344640,3519350271,US -3519350272,3519350463,US -3519350464,3519351327,US +3519344640,3519351327,US 3519351328,3519351359,GB 3519351360,3519351423,US 3519351424,3519351455,GB 3519351456,3519351551,US 3519351552,3519351807,GB -3519351808,3519352831,US -3519352832,3519352959,US -3519352960,3519354047,US -3519354048,3519354111,US -3519354112,3519355391,US -3519355392,3519355519,US -3519355520,3519381503,US +3519351808,3519381503,US 3519381504,3519397887,CA 3519397888,3519475711,US 3519475712,3519477759,A2 -3519477760,3519554047,US -3519554048,3519554175,US -3519554176,3519676415,US +3519477760,3519676415,US 3519676416,3519709183,CA -3519709184,3519723519,US -3519723520,3519724031,CA -3519724032,3519741951,US +3519709184,3519741951,US 3519741952,3519758335,ZA 3519758336,3519873023,US -3519873024,3519901695,CA -3519901696,3519934463,US +3519873024,3519879807,CA +3519879808,3519879815,US +3519879816,3519901695,CA +3519901696,3519930367,US 3519934464,3519938559,CA 3519938560,3520020479,US 3520020480,3520036863,CA @@ -74660,26 +74982,12 @@ 3520369097,3520369097,US 3520369098,3520397311,US 3520401408,3520413439,US -3520413440,3520413445,CA -3520413446,3520413446,US -3520413447,3520413695,CA +3520413440,3520413695,CA 3520413696,3520454655,US 3520454656,3520462847,CA -3520462848,3520527871,US -3520527872,3520528383,A2 -3520528384,3520626687,US +3520462848,3520626687,US 3520626688,3520634879,CA -3520634880,3520644607,US -3520644608,3520644863,US -3520644864,3520650239,US -3520650240,3520650495,US -3520650496,3520652287,US -3520652288,3520652543,US -3520652544,3520656383,US -3520656384,3520656639,US -3520656640,3520658943,US -3520658944,3520659199,US -3520659200,3520675839,US +3520634880,3520675839,US 3520675840,3520692223,CA 3520692224,3520937983,US 3520937984,3520954367,CA @@ -74691,9 +74999,13 @@ 3521028096,3521032191,CA 3521032192,3521044479,US 3521044480,3521048575,CA -3521048576,3521249279,US +3521048576,3521216511,US +3521216512,3521232895,CA +3521232896,3521249279,US 3521249280,3521314815,CA -3521314816,3521904639,US +3521314816,3521347583,US +3521347584,3521363967,CA +3521363968,3521904639,US 3521904640,3521921023,JM 3521921024,3521965055,US 3521965056,3521966079,DE @@ -74705,9 +75017,7 @@ 3522174976,3522179071,BM 3522179072,3522195455,US 3522195456,3522199551,CA -3522199552,3522773503,US -3522773504,3522773759,US -3522773760,3522816767,US +3522199552,3522816767,US 3522816768,3522817023,CA 3522817024,3522854911,US 3522854912,3522871295,CA @@ -74753,9 +75063,7 @@ 3523557376,3523559423,CN 3523559424,3523575807,PH 3523575808,3523583999,CN -3523584000,3523597823,HK -3523597824,3523598335,US -3523598336,3523601663,HK +3523584000,3523601663,HK 3523601664,3523601919,SA 3523601920,3523603199,HK 3523603200,3523603455,US @@ -74766,10 +75074,7 @@ 3523682304,3523686399,NZ 3523686400,3523690495,AU 3523690496,3523698687,IN -3523698688,3523699199,JP -3523699200,3523699711,US -3523699712,3523707391,JP -3523707392,3523707903,GB +3523698688,3523707903,JP 3523707904,3523708159,AU 3523708160,3523709183,JP 3523709184,3523709951,CN @@ -74797,13 +75102,26 @@ 3524722688,3524730879,SG 3524730880,3524739071,CN 3524739072,3524743167,ID -3524743168,3524745471,MP -3524745472,3524745599,GU -3524745600,3524745727,MP +3524743168,3524745727,MP 3524745728,3524745983,GU 3524745984,3524747263,MP 3524747264,3524755455,PH -3524755456,3524763647,AU +3524755456,3524756223,AU +3524756224,3524756479,SG +3524756480,3524756991,AU +3524756992,3524757247,SG +3524757248,3524758015,AU +3524758016,3524758317,SG +3524758318,3524758318,AU +3524758319,3524758783,SG +3524758784,3524759551,AU +3524759552,3524760575,SG +3524760576,3524760831,AU +3524760832,3524761087,SG +3524761088,3524761343,AU +3524761344,3524761599,SG +3524761600,3524761855,AU +3524761856,3524763647,SG 3524763648,3524788223,PH 3524788224,3524853759,SG 3524853760,3526361087,CN @@ -74866,9 +75184,7 @@ 3528978432,3528982527,HK 3528982528,3529056255,JP 3529056256,3529064447,IN -3529064448,3529065983,HK -3529065984,3529066239,AU -3529066240,3529072639,HK +3529064448,3529072639,HK 3529072640,3529080831,JP 3529080832,3529089023,AU 3529089024,3529097215,KR @@ -74876,9 +75192,7 @@ 3529113600,3531603967,KR 3531603968,3532929279,JP 3532929280,3532929535,AP -3532929536,3533703231,JP -3533703232,3533703247,HK -3533703248,3534749695,JP +3532929536,3534749695,JP 3534749696,3534763775,HK 3534763776,3534764031,AP 3534764032,3534867711,HK @@ -74949,12 +75263,12 @@ 3545235456,3546808319,CN 3546808320,3547856895,KR 3547856896,3547916287,JP -3547916288,3547917311,US -3547917312,3548905471,JP +3547916288,3547916543,US +3547916544,3548905471,JP 3548905472,3551002623,CN 3551002624,3556769791,KR -3556769792,3556774399,DE -3556774400,3556786175,EU +3556769792,3556773887,DE +3556773888,3556786175,EU 3556786176,3556794367,RU 3556794368,3556802559,ES 3556802560,3556810751,SD @@ -74986,11 +75300,7 @@ 3556999168,3557007359,RU 3557007360,3557015551,IT 3557015552,3557023743,DE -3557023744,3557024255,GB -3557024256,3557024767,BE -3557024768,3557026303,GB -3557026304,3557026815,BE -3557026816,3557031935,GB +3557023744,3557031935,GB 3557031936,3557040127,IT 3557040128,3557048319,NO 3557048320,3557056511,CH @@ -75020,22 +75330,24 @@ 3557302272,3557310463,UA 3557310464,3557326847,ES 3557326848,3557335039,DE -3557335040,3557339135,EU -3557339136,3557339391,BE -3557339392,3557339647,EU -3557339648,3557340159,BE -3557340160,3557340287,EU +3557335040,3557340287,EU 3557340288,3557340927,BE -3557340928,3557341951,EU -3557341952,3557342463,BE -3557342464,3557343231,EU +3557340928,3557343231,EU 3557343232,3557351423,DE 3557351424,3557359615,RU -3557359616,3557360127,JE +3557359616,3557359991,JE +3557359992,3557359999,GB +3557360000,3557360047,JE +3557360048,3557360055,GB +3557360056,3557360127,JE 3557360128,3557360135,GB 3557360136,3557360263,JE 3557360264,3557360271,GB -3557360272,3557365791,JE +3557360272,3557360743,JE +3557360744,3557360751,GB +3557360752,3557360863,JE +3557360864,3557360871,GB +3557360872,3557365791,JE 3557365792,3557365799,GB 3557365800,3557367807,JE 3557367808,3557375999,DE @@ -75087,17 +75399,15 @@ 3557834752,3557842943,IR 3557842944,3557851135,FI 3557851136,3557859327,HU -3557859328,3557860607,SE -3557860608,3557860863,FI -3557860864,3557861983,SE +3557859328,3557860831,SE +3557860832,3557860847,FI +3557860848,3557861983,SE 3557861984,3557862015,FI -3557862016,3557862399,SE -3557862400,3557862911,FI -3557862912,3557864287,SE -3557864288,3557864303,DK -3557864304,3557864311,SE +3557862016,3557864191,SE +3557864192,3557864311,DK 3557864312,3557864319,FI -3557864320,3557867519,SE +3557864320,3557864447,DK +3557864448,3557867519,SE 3557867520,3557875711,RU 3557875712,3557883903,DE 3557883904,3557892095,RU @@ -75135,30 +75445,28 @@ 3558146048,3558154239,RU 3558154240,3558155007,A2 3558155008,3558155263,US -3558155264,3558156287,A2 -3558156288,3558156351,US -3558156352,3558156359,GB -3558156360,3558156543,US -3558156544,3558158079,A2 -3558158080,3558158207,US -3558158208,3558159359,A2 +3558155264,3558156303,A2 +3558156304,3558156311,GB +3558156312,3558157391,A2 +3558157392,3558157407,AF +3558157408,3558157439,SS +3558157440,3558157599,A2 +3558157600,3558157727,SS +3558157728,3558159359,A2 3558159360,3558159615,US 3558159616,3558159747,A2 3558159748,3558159748,US 3558159749,3558160127,A2 3558160128,3558160383,GB -3558160384,3558161151,A2 -3558161152,3558161407,US -3558161408,3558162175,A2 -3558162176,3558162431,BI +3558160384,3558162431,A2 3558162432,3558170623,DE 3558170624,3558178815,GB 3558178816,3558187007,BG 3558187008,3558195199,DE -3558195200,3558196735,GB -3558196736,3558199039,US +3558195200,3558197247,GB +3558197248,3558199039,US 3558199040,3558199295,ES -3558199296,3558203391,US +3558199296,3558203391,GB 3558203392,3558211583,ES 3558211584,3558219775,GB 3558219776,3558227967,ES @@ -75170,23 +75478,19 @@ 3558268928,3558277119,GI 3558277120,3558285951,GB 3558285952,3558286079,DE -3558286080,3558286591,GB -3558286592,3558286847,FR -3558286848,3558288639,GB +3558286080,3558288639,GB 3558288640,3558288895,EU -3558288896,3558289151,FR +3558288896,3558289119,GB +3558289120,3558289151,FR 3558289152,3558289431,GB 3558289432,3558289439,NL 3558289440,3558289975,GB 3558289976,3558289983,CZ -3558289984,3558290431,GB -3558290432,3558290687,BE -3558290688,3558291071,GB +3558289984,3558291071,GB 3558291072,3558291135,DE 3558291136,3558291295,GB 3558291296,3558291311,CH -3558291312,3558292223,GB -3558292224,3558292479,SE +3558291312,3558292479,GB 3558292480,3558292735,EU 3558292736,3558293055,GB 3558293056,3558293087,NL @@ -75194,9 +75498,7 @@ 3558293504,3558301695,RU 3558301696,3558318079,DE 3558318080,3558334463,FR -3558334464,3558339959,CH -3558339960,3558339967,DE -3558339968,3558342655,CH +3558334464,3558342655,CH 3558342656,3558350847,IT 3558350848,3558359039,RU 3558359040,3558367231,GB @@ -75211,9 +75513,7 @@ 3558440960,3558449151,SE 3558449152,3558457343,IT 3558457344,3558465535,NL -3558465536,3558468607,GB -3558468608,3558469119,US -3558469120,3558473727,GB +3558465536,3558473727,GB 3558473728,3558506495,SA 3558506496,3558514687,UA 3558514688,3558522879,SK @@ -75243,10 +75543,9 @@ 3558718208,3558718463,EU 3558718464,3558719487,NL 3558719488,3558735871,IL -3558735872,3558737919,GG -3558737920,3558738431,GB -3558738432,3558743039,GG -3558743040,3558744063,GB +3558735872,3558741503,GB +3558741504,3558742015,GG +3558742016,3558744063,GB 3558744064,3558752255,LB 3558752256,3558760447,SI 3558760448,3558768639,FR @@ -75259,12 +75558,10 @@ 3558834176,3558842367,FR 3558842368,3558850559,SE 3558850560,3558851327,GB -3558851328,3558851583,ES -3558851584,3558854367,GB -3558854368,3558854655,ES -3558854656,3558855679,GB -3558855680,3558855935,ES -3558855936,3558856703,GB +3558851328,3558851335,ES +3558851336,3558854367,GB +3558854368,3558854399,ES +3558854400,3558856703,GB 3558856704,3558858751,US 3558858752,3558866943,IT 3558866944,3558899711,GB @@ -75291,19 +75588,11 @@ 3559079936,3559088127,JO 3559088128,3559088383,GB 3559088384,3559088639,BE -3559088640,3559089151,GB -3559089152,3559089407,BE -3559089408,3559089663,GB -3559089664,3559090175,BE -3559090176,3559090239,GB +3559088640,3559090239,GB 3559090240,3559090303,BE -3559090304,3559090431,GB -3559090432,3559090687,BE -3559090688,3559093247,GB -3559093248,3559093759,BE -3559093760,3559094015,GB -3559094016,3559094271,BE -3559094272,3559095455,GB +3559090304,3559093311,GB +3559093312,3559093319,BE +3559093320,3559095455,GB 3559095456,3559095456,BE 3559095457,3559096319,GB 3559096320,3559104511,RO @@ -75313,8 +75602,7 @@ 3559129088,3559137279,BG 3559137280,3559145471,GB 3559145472,3559153663,ES -3559153664,3559177727,GB -3559177728,3559178239,DE +3559153664,3559178239,GB 3559178240,3559186431,LB 3559186432,3559194623,RU 3559194624,3559202815,SE @@ -75331,12 +75619,16 @@ 3559284736,3559288831,RU 3559288832,3559289855,AZ 3559289856,3559291391,RU -3559291392,3559291647,AZ +3559291392,3559291443,AZ +3559291444,3559291444,RU +3559291445,3559291445,AZ +3559291446,3559291446,RU +3559291447,3559291647,AZ 3559291648,3559292927,RU 3559292928,3559301119,JO 3559301120,3559305215,GB -3559305216,3559305727,US -3559305728,3559309311,GB +3559305216,3559305471,US +3559305472,3559309311,GB 3559309312,3559317503,PL 3559317504,3559325695,FI 3559325696,3559333887,IT @@ -75358,15 +75650,7 @@ 3559448576,3559456767,ES 3559456768,3559473151,RU 3559473152,3559489535,CH -3559489536,3559489791,GB -3559489792,3559490303,NL -3559490304,3559491071,GB -3559491072,3559491327,NL -3559491328,3559491583,GB -3559491584,3559491839,NL -3559491840,3559492607,GB -3559492608,3559497471,NL -3559497472,3559505919,GB +3559489536,3559505919,GB 3559505920,3559514111,CH 3559514112,3559522303,AT 3559522304,3559530495,GB @@ -75414,8 +75698,8 @@ 3559890944,3559899135,CH 3559899136,3559900223,UA 3559900224,3559900287,EE -3559900288,3559902975,UA -3559902976,3559907327,EE +3559900288,3559903231,UA +3559903232,3559907327,EE 3559907328,3559915519,FR 3559915520,3559923711,IT 3559923712,3559931903,RU @@ -75428,24 +75712,15 @@ 3559989248,3559997439,PL 3559997440,3560005631,KE 3560005632,3560013823,RU -3560013824,3560014847,ES -3560014848,3560015871,GB -3560015872,3560016127,ES -3560016128,3560016895,GB -3560016896,3560017663,ES -3560017664,3560021247,GB -3560021248,3560021503,ES -3560021504,3560022527,GB -3560022528,3560023039,ES -3560023040,3560023631,GB +3560013824,3560022527,GB +3560022528,3560022783,ES +3560022784,3560023631,GB 3560023632,3560023639,ES 3560023640,3560023791,GB 3560023792,3560023799,ES -3560023800,3560023807,GB -3560023808,3560024063,ES -3560024064,3560029183,GB -3560029184,3560029439,ES -3560029440,3560046591,GB +3560023800,3560030095,GB +3560030096,3560030103,ES +3560030104,3560046591,GB 3560046592,3560054783,BG 3560054784,3560062975,TR 3560062976,3560071167,BG @@ -75478,11 +75753,7 @@ 3560316928,3560325119,NL 3560325120,3560333311,DK 3560333312,3560341503,RO -3560341504,3560344575,GB -3560344576,3560345087,MA -3560345088,3560345599,GB -3560345600,3560346111,US -3560346112,3560346623,GB +3560341504,3560346623,GB 3560346624,3560347647,US 3560347648,3560357887,GB 3560357888,3560366079,GR @@ -75537,7 +75808,9 @@ 3560767488,3560833023,NL 3560833024,3560841215,GB 3560841216,3560849407,RS -3560849408,3560857599,DE +3560849408,3560850431,DE +3560850432,3560850687,NL +3560850688,3560857599,DE 3560857600,3560865791,SA 3560865792,3560882175,FR 3560882176,3560890367,DE @@ -75547,39 +75820,88 @@ 3560923136,3560931327,ES 3560931328,3560941179,DE 3560941180,3560941183,GB -3560941184,3560943842,DE +3560941184,3560941339,DE +3560941340,3560941343,GB +3560941344,3560943366,DE +3560943367,3560943367,IT +3560943368,3560943514,DE +3560943515,3560943515,ES +3560943516,3560943612,DE +3560943613,3560943613,ES +3560943614,3560943634,DE +3560943635,3560943635,ES +3560943636,3560943827,DE +3560943828,3560943828,ES +3560943829,3560943842,DE 3560943843,3560943843,GB -3560943844,3560944139,DE +3560943844,3560943907,DE +3560943908,3560943911,US +3560943912,3560943983,DE +3560943984,3560943987,US +3560943988,3560944139,DE 3560944140,3560944143,US -3560944144,3560944391,DE +3560944144,3560944231,DE +3560944232,3560944235,US +3560944236,3560944391,DE 3560944392,3560944395,US -3560944396,3560944567,DE +3560944396,3560944487,DE +3560944488,3560944491,CA +3560944492,3560944567,DE 3560944568,3560944571,US 3560944572,3560944607,DE 3560944608,3560944611,US 3560944612,3560945164,DE 3560945165,3560945165,AU -3560945166,3560945426,DE +3560945166,3560945347,DE +3560945348,3560945351,JP +3560945352,3560945426,DE 3560945427,3560945427,CN -3560945428,3560945695,DE +3560945428,3560945671,DE +3560945672,3560945675,US +3560945676,3560945695,DE 3560945696,3560945699,US 3560945700,3560945795,DE 3560945796,3560945799,US -3560945800,3560946219,DE +3560945800,3560945863,DE +3560945864,3560945867,US +3560945868,3560946208,DE +3560946209,3560946209,CA +3560946210,3560946219,DE 3560946220,3560946220,US -3560946221,3560946252,DE +3560946221,3560946224,DE +3560946225,3560946225,US +3560946226,3560946226,DE +3560946227,3560946227,US +3560946228,3560946239,DE +3560946240,3560946240,US +3560946241,3560946248,DE +3560946249,3560946249,US +3560946250,3560946252,DE 3560946253,3560946253,US -3560946254,3560946283,DE +3560946254,3560946266,DE +3560946267,3560946267,CA +3560946268,3560946283,DE 3560946284,3560946284,US -3560946285,3560947059,DE +3560946285,3560946372,DE +3560946373,3560946373,US +3560946374,3560946751,DE +3560946752,3560946752,US +3560946753,3560947059,DE 3560947060,3560947063,US -3560947064,3560947159,DE +3560947064,3560947075,DE +3560947076,3560947079,US +3560947080,3560947159,DE 3560947160,3560947163,PR -3560947164,3560947199,DE +3560947164,3560947167,US +3560947168,3560947199,DE 3560947200,3560947203,CA -3560947204,3560947299,DE +3560947204,3560947259,DE +3560947260,3560947263,US +3560947264,3560947299,DE 3560947300,3560947303,US -3560947304,3560947711,DE +3560947304,3560947515,DE +3560947516,3560947519,JP +3560947520,3560947711,DE 3560947712,3560955903,SE 3560955904,3560964095,BE 3560964096,3560996863,NL @@ -75645,11 +75967,9 @@ 3561472000,3561480191,DE 3561480192,3561488383,GB 3561488384,3561496575,OM -3561496576,3561497599,GB -3561497600,3561498111,NL -3561498112,3561498623,GB -3561498624,3561500159,NL -3561500160,3561502719,GB +3561496576,3561497087,GB +3561497088,3561497343,NL +3561497344,3561502719,GB 3561502720,3561503743,NL 3561503744,3561504767,GB 3561504768,3561512959,DE @@ -75664,15 +75984,13 @@ 3561578496,3561586687,RU 3561586688,3561594879,BG 3561594880,3561603071,SE -3561603072,3561605631,GB -3561605632,3561606143,FR -3561606144,3561606655,GB -3561606656,3561607167,FR -3561607168,3561609215,GB -3561609216,3561609727,FR -3561609728,3561615871,GB -3561615872,3561616383,FR -3561616384,3561618943,GB +3561603072,3561607391,GB +3561607392,3561607423,FR +3561607424,3561609215,GB +3561609216,3561609471,FR +3561609472,3561616383,GB +3561616384,3561616639,FR +3561616640,3561618943,GB 3561618944,3561619455,ES 3561619456,3561641450,GB 3561641451,3561641451,FR @@ -75693,8 +76011,8 @@ 3561783296,3561799679,RU 3561799680,3561807871,DE 3561807872,3561814015,BE -3561814016,3561814527,LU -3561814528,3561815295,BE +3561814016,3561814271,LU +3561814272,3561815295,BE 3561815296,3561815551,LU 3561815552,3561816063,BE 3561816064,3561824255,VA @@ -75710,13 +76028,15 @@ 3561897984,3561906175,GB 3561906176,3561914367,DE 3561914368,3561922559,ES -3561922560,3561925009,GB -3561925010,3561925010,NL -3561925011,3561925119,GB -3561925120,3561925631,NL -3561925632,3561927551,GB -3561927552,3561928191,NL -3561928192,3561930751,GB +3561922560,3561922927,GB +3561922928,3561922943,NL +3561922944,3561925023,GB +3561925024,3561925039,NL +3561925040,3561925343,GB +3561925344,3561925375,NL +3561925376,3561929967,GB +3561929968,3561929983,NL +3561929984,3561930751,GB 3561930752,3561938943,NL 3561938944,3561940991,IE 3561940992,3561942015,GB @@ -75732,15 +76052,32 @@ 3562020864,3562029055,UA 3562029056,3562037247,CZ 3562037248,3562045439,CH -3562045440,3562061823,ES +3562045440,3562056711,ES +3562056712,3562056719,NL +3562056720,3562056911,ES +3562056912,3562056927,FR +3562056928,3562057215,ES +3562057216,3562057247,NL +3562057248,3562057263,BE +3562057264,3562057471,ES +3562057472,3562057727,DE +3562057728,3562057975,ES +3562057976,3562057983,FR +3562057984,3562059327,ES +3562059328,3562059335,CH +3562059336,3562059391,ES +3562059392,3562059519,CH +3562059520,3562059647,ES +3562059648,3562059775,CH +3562059776,3562061823,ES 3562070016,3562078207,DE 3562078208,3562086399,SK 3562086400,3562087423,SE 3562087424,3562088447,GB 3562088448,3562094591,SE 3562094592,3562106879,GB -3562106880,3562107135,FR -3562107136,3562110975,GB +3562106880,3562106911,FR +3562106912,3562110975,GB 3562110976,3562143743,ES 3562143744,3562151935,GB 3562151936,3562160127,DE @@ -75774,12 +76111,7 @@ 3562364928,3562373119,PL 3562373120,3562381311,FR 3562381312,3562389503,SI -3562389504,3562395647,GH -3562395648,3562395903,BR -3562395904,3562396159,TZ -3562396160,3562396927,SZ -3562396928,3562397183,GH -3562397184,3562397695,SZ +3562389504,3562397695,GH 3562397696,3562405887,GB 3562405888,3562414079,FI 3562414080,3562422271,DE @@ -75798,7 +76130,9 @@ 3562545152,3562553343,GB 3562553344,3562561535,DK 3562561536,3562569727,UG -3562569728,3562577919,DE +3562569728,3562572543,DE +3562572544,3562572799,LU +3562572800,3562577919,DE 3562577920,3562586111,AT 3562586112,3562594303,DE 3562594304,3562602495,BE @@ -75846,18 +76180,16 @@ 3562971136,3562987519,FR 3562987520,3562995711,DE 3562995712,3563003903,AT -3563003904,3563005951,DE -3563005952,3563006463,TR -3563006464,3563007487,DE -3563007488,3563007999,TR -3563008000,3563008255,DE +3563003904,3563008255,DE 3563008256,3563008511,PL 3563008512,3563010815,DE 3563010816,3563011071,PL 3563011072,3563012095,DE 3563012096,3563020287,FR 3563020288,3563028479,DE -3563028480,3563036671,IR +3563028480,3563032575,IR +3563032576,3563033599,BG +3563033600,3563036671,IR 3563036672,3563044863,BG 3563044864,3563053055,ES 3563053056,3563061247,GB @@ -75866,10 +76198,7 @@ 3563067392,3563068415,MZ 3563068416,3563069439,NG 3563069440,3563077631,HU -3563077632,3563078399,KZ -3563078400,3563078911,SE -3563078912,3563079679,KZ -3563079680,3563085823,SE +3563077632,3563085823,KZ 3563085824,3563094015,RU 3563094016,3563102207,DE 3563102208,3563110399,CZ @@ -75879,20 +76208,20 @@ 3563134976,3563143167,IT 3563143168,3563151359,GB 3563151360,3563159551,DE -3563159552,3563163647,DK -3563163648,3563164159,SE -3563164160,3563167743,DK +3563159552,3563167743,DK 3563167744,3563175935,ES 3563175936,3563192319,DK 3563192320,3563200511,TR 3563200512,3563208703,CH -3563208704,3563210751,DK -3563210752,3563211007,DE -3563211008,3563225087,DK +3563208704,3563225087,DK 3563225088,3563233279,LB 3563233280,3563241471,BY 3563241472,3563257855,TR -3563257856,3563290623,FR +3563257856,3563268351,FR +3563268352,3563268607,BE +3563268608,3563284991,FR +3563284992,3563285247,LU +3563285248,3563290623,FR 3563290624,3563315199,DE 3563315200,3563323391,DK 3563323392,3563323647,EU @@ -75946,37 +76275,29 @@ 3563741184,3563749375,GB 3563749376,3563765759,PL 3563765760,3563782143,ES -3563782144,3563790335,GR 3563790336,3563798527,EE 3563798528,3563806719,FR 3563806720,3563814911,SA 3563814912,3563823103,SE 3563823104,3563831295,DE 3563831296,3563847679,RU -3563847680,3563848191,NL -3563848192,3563848639,GB -3563848640,3563848645,IT -3563848646,3563848646,NL -3563848647,3563848655,IT -3563848656,3563848847,GB +3563847680,3563848447,GB +3563848448,3563848703,EU +3563848704,3563848847,GB 3563848848,3563848855,EU -3563848856,3563851519,GB -3563851520,3563852031,NL -3563852032,3563855871,GB +3563848856,3563854207,GB +3563854208,3563854215,NL +3563854216,3563854263,GB +3563854264,3563854271,NL +3563854272,3563855871,GB 3563855872,3563864063,AT 3563864064,3563872255,GB 3563872256,3563880447,RU -3563880448,3563884543,TR -3563884544,3563884651,CY -3563884652,3563884652,TR -3563884653,3563886591,CY -3563886592,3563888639,TR +3563880448,3563888639,TR 3563888640,3563896831,DE 3563896832,3563899903,HU 3563899904,3563900159,SK -3563900160,3563900415,HU -3563900416,3563900671,SK -3563900672,3563913215,HU +3563900160,3563913215,HU 3563913216,3563921407,RU 3563921408,3563929599,UA 3563929600,3563937791,CH @@ -75994,9 +76315,7 @@ 3564023808,3564024831,IT 3564024832,3564027903,GB 3564027904,3564036095,DE -3564036096,3564039167,A2 -3564039168,3564039679,DE -3564039680,3564043263,A2 +3564036096,3564043263,A2 3564043264,3564044287,DE 3564044288,3564052479,CZ 3564052480,3564060671,GB @@ -76006,15 +76325,13 @@ 3564093440,3564101631,UA 3564101632,3564109823,DE 3564109824,3564126207,SE -3564126208,3564134399,IT +3564126208,3564129727,IT +3564129728,3564129743,PH +3564129744,3564134399,IT 3564134400,3564142591,KG 3564142592,3564146175,DE 3564146176,3564150783,DK -3564150784,3564153087,SE -3564153088,3564153151,NO -3564153152,3564153183,SE -3564153184,3564153343,NO -3564153344,3564158831,SE +3564150784,3564158831,SE 3564158832,3564158839,FI 3564158840,3564158975,SE 3564158976,3564175359,DE @@ -76025,16 +76342,13 @@ 3564208128,3564216319,GB 3564216320,3564224511,PT 3564224512,3564232703,GB -3564232704,3564240895,RU -3564240896,3564241407,TJ -3564241408,3564249087,RU +3564232704,3564249087,RU 3564249088,3564265471,DE 3564265472,3564273663,NL 3564273664,3564306431,DE 3564306432,3564314623,TR 3564314624,3564322815,GB 3564322816,3564331007,IT -3564331008,3564332031,ES 3564339200,3564355583,GB 3564355584,3564363775,NL 3564363776,3564371967,UA @@ -76055,8 +76369,7 @@ 3564470272,3564478463,IL 3564478464,3564486655,LU 3564486656,3564494847,CH -3564494848,3564495203,GB -3564495204,3564503039,EU +3564494848,3564503039,EU 3564503040,3564511231,JO 3564511232,3564519423,RU 3564519424,3564527615,SI @@ -76090,17 +76403,13 @@ 3564734208,3564734457,EU 3564734458,3564734458,DE 3564734459,3564734463,EU -3564734464,3564735999,GB -3564736000,3564736255,DE -3564736256,3564738815,GB -3564738816,3564739071,DE -3564739072,3564739345,GB +3564734464,3564734743,GB +3564734744,3564734751,DE +3564734752,3564736535,GB +3564736536,3564736543,DE +3564736544,3564739345,GB 3564739346,3564739346,DE -3564739347,3564740385,GB -3564740386,3564740386,DE -3564740387,3564740535,GB -3564740536,3564740539,DE -3564740540,3564740607,GB +3564739347,3564740607,GB 3564740608,3564748799,FR 3564748800,3564756991,GB 3564756992,3564765183,ES @@ -76121,19 +76430,23 @@ 3564847104,3564855295,IT 3564855296,3564863487,DE 3564863488,3564879871,NL -3564879872,3564882431,GB +3564879872,3564882015,GB +3564882016,3564882031,NL +3564882032,3564882431,GB 3564882432,3564882687,EU -3564882688,3564883199,GB +3564882688,3564883071,GB +3564883072,3564883081,NL +3564883082,3564883199,GB 3564883200,3564883455,NL -3564883456,3564886271,GB -3564886272,3564886527,NL -3564886528,3564886719,GB +3564883456,3564886719,GB 3564886720,3564886751,NL -3564886752,3564892415,GB -3564892416,3564892927,NL -3564892928,3564894207,GB -3564894208,3564895743,NL -3564895744,3564896255,GB +3564886752,3564889633,GB +3564889634,3564889634,NL +3564889635,3564892735,GB +3564892736,3564892751,NL +3564892752,3564894207,GB +3564894208,3564895232,NL +3564895233,3564896255,GB 3564896256,3564904447,RU 3564904448,3564912639,DE 3564912640,3564920831,BG @@ -76144,9 +76457,7 @@ 3564929024,3564937215,AT 3564937216,3564945407,IT 3564945408,3564953599,GB -3564953600,3564953855,AT -3564953856,3564954111,GB -3564954112,3564954879,AT +3564953600,3564954879,AT 3564954880,3564955903,GB 3564955904,3564956671,AT 3564956672,3564956927,GB @@ -76161,11 +76472,11 @@ 3565002752,3565027327,NO 3565027328,3565035519,PL 3565035520,3565036287,IE -3565036288,3565038591,GB -3565038592,3565038847,IE -3565038848,3565039615,GB -3565039616,3565042175,IE -3565042176,3565043711,GB +3565036288,3565038879,GB +3565038880,3565038895,IE +3565038896,3565039615,GB +3565039616,3565041663,IE +3565041664,3565043711,GB 3565043712,3565051903,AT 3565051904,3565060095,IQ 3565060096,3565068287,GB @@ -76191,25 +76502,165 @@ 3565495296,3565496319,FR 3565496320,3565502463,GB 3565502464,3565503487,NL -3565503488,3565510911,GB -3565510912,3565511295,NL -3565511296,3565518847,GB +3565503488,3565518847,GB 3565518848,3565551615,TR 3565551616,3565682687,GB 3565682688,3565684995,NL 3565684996,3565684996,EU 3565684997,3565748223,NL -3565748224,3565750271,EU -3565750272,3565752319,GB -3565752320,3565756415,EU -3565756416,3565760511,GB -3565760512,3565764375,EU -3565764376,3565764383,GB -3565764384,3565764607,EU -3565764608,3565766655,GB -3565766656,3565767423,EU -3565767424,3565767679,GB -3565767680,3565777919,EU +3565748224,3565752839,GB +3565752840,3565752855,EU +3565752856,3565752879,GB +3565752880,3565752887,EU +3565752888,3565752983,GB +3565752984,3565752991,EU +3565752992,3565752999,GB +3565753000,3565753015,EU +3565753016,3565753031,GB +3565753032,3565753039,EU +3565753040,3565753071,GB +3565753072,3565753079,EU +3565753080,3565753183,GB +3565753184,3565753247,EU +3565753248,3565753279,GB +3565753280,3565753343,EU +3565753344,3565753791,GB +3565753792,3565753799,EU +3565753800,3565753815,GB +3565753816,3565753823,EU +3565753824,3565753831,GB +3565753832,3565753839,EU +3565753840,3565753847,GB +3565753848,3565753983,EU +3565753984,3565754367,GB +3565754368,3565754495,EU +3565754496,3565754511,GB +3565754512,3565754623,EU +3565754624,3565755263,GB +3565755264,3565755279,EU +3565755280,3565755359,GB +3565755360,3565755375,EU +3565755376,3565755583,GB +3565755584,3565755647,EU +3565755648,3565755695,GB +3565755696,3565755703,EU +3565755704,3565755727,GB +3565755728,3565755735,EU +3565755736,3565755831,GB +3565755832,3565755839,EU +3565755840,3565755847,GB +3565755848,3565755855,EU +3565755856,3565755871,GB +3565755872,3565755879,EU +3565755880,3565755919,GB +3565755920,3565755927,EU +3565755928,3565755935,GB +3565755936,3565755943,EU +3565755944,3565755959,GB +3565755960,3565755967,EU +3565755968,3565755999,GB +3565756000,3565756007,EU +3565756008,3565756063,GB +3565756064,3565756071,EU +3565756072,3565756087,GB +3565756088,3565756095,EU +3565756096,3565756119,GB +3565756120,3565756135,EU +3565756136,3565756159,GB +3565756160,3565756287,EU +3565756288,3565760783,GB +3565760784,3565760791,EU +3565760792,3565760799,GB +3565760800,3565760807,EU +3565760808,3565760823,GB +3565760824,3565760831,EU +3565760832,3565760855,GB +3565760856,3565760863,EU +3565760864,3565760935,GB +3565760936,3565760943,EU +3565760944,3565760967,GB +3565760968,3565760975,EU +3565760976,3565761007,GB +3565761008,3565761015,EU +3565761016,3565761279,GB +3565761280,3565761343,EU +3565761344,3565761535,GB +3565761536,3565761543,EU +3565761544,3565761599,GB +3565761600,3565761615,EU +3565761616,3565761631,GB +3565761632,3565761639,EU +3565761640,3565761647,GB +3565761648,3565761655,EU +3565761656,3565761687,GB +3565761688,3565761703,EU +3565761704,3565761727,GB +3565761728,3565761751,EU +3565761752,3565761783,GB +3565761784,3565761791,EU +3565761792,3565762047,GB +3565762048,3565762303,ZA +3565762304,3565762559,EU +3565762560,3565762815,GB +3565762816,3565763071,EU +3565763072,3565763455,GB +3565763456,3565763487,EU +3565763488,3565763599,GB +3565763600,3565763615,EU +3565763616,3565763671,GB +3565763672,3565763679,EU +3565763680,3565763703,GB +3565763704,3565763719,EU +3565763720,3565763735,GB +3565763736,3565763743,EU +3565763744,3565763751,GB +3565763752,3565763759,EU +3565763760,3565763799,GB +3565763800,3565763807,EU +3565763808,3565763815,GB +3565763816,3565763831,EU +3565763832,3565763839,GB +3565763840,3565763883,EU +3565763884,3565763891,GB +3565763892,3565764095,EU +3565764096,3565764183,GB +3565764184,3565764191,EU +3565764192,3565764207,GB +3565764208,3565764255,EU +3565764256,3565764367,GB +3565764368,3565764375,EU +3565764376,3565764439,GB +3565764440,3565764447,EU +3565764448,3565764455,GB +3565764456,3565764463,EU +3565764464,3565764551,GB +3565764552,3565764575,EU +3565764576,3565766655,GB +3565766656,3565766911,EU +3565766912,3565767167,GB +3565767168,3565767175,EU +3565767176,3565767255,GB +3565767256,3565767271,EU +3565767272,3565767287,GB +3565767288,3565767295,EU +3565767296,3565767351,GB +3565767352,3565767359,EU +3565767360,3565767399,GB +3565767400,3565767407,EU +3565767408,3565767999,GB +3565768000,3565768207,EU +3565768208,3565768271,GB +3565768272,3565768279,EU +3565768280,3565768295,GB +3565768296,3565768311,EU +3565768312,3565768335,GB +3565768336,3565768447,EU +3565768448,3565768575,GB +3565768576,3565768703,EU +3565768704,3565768983,GB +3565768984,3565769215,EU +3565769216,3565769471,GB +3565769472,3565777919,EU 3565777920,3565813759,GB 3565813760,3565879295,SA 3565879296,3566010367,GB @@ -76232,9 +76683,7 @@ 3566551040,3566600191,FI 3566600192,3566607359,IL 3566607360,3566607615,GN -3566607616,3566647403,IL -3566647404,3566647404,IL -3566647405,3566665727,IL +3566607616,3566665727,IL 3566665728,3566723287,SE 3566723288,3566723543,RU 3566723544,3566739455,SE @@ -76246,37 +76695,157 @@ 3566895104,3566927871,KZ 3566927872,3566976767,FR 3566976768,3566977023,EU -3566977024,3566993407,FR +3566977024,3566988799,FR +3566988800,3566989055,GB +3566989056,3566993407,FR 3566993408,3567058943,TR 3567058944,3567124479,FR -3567124480,3567141631,EU +3567124480,3567124991,EU +3567124992,3567125023,GB +3567125024,3567125247,EU +3567125248,3567125503,GB +3567125504,3567126687,EU +3567126688,3567126759,GB +3567126760,3567127551,EU +3567127552,3567127807,GB +3567127808,3567129855,EU +3567129856,3567129887,GB +3567129888,3567130015,EU +3567130016,3567130079,GB +3567130080,3567131383,EU +3567131384,3567131647,GB +3567131648,3567133215,EU +3567133216,3567133247,GB +3567133248,3567133367,EU +3567133368,3567133375,GB +3567133376,3567134207,EU +3567134208,3567134335,GB +3567134336,3567134847,EU +3567134848,3567134975,GB +3567134976,3567135999,EU +3567136000,3567136255,GB +3567136256,3567136511,EU +3567136512,3567136575,GB +3567136576,3567136639,EU +3567136640,3567136671,GB +3567136672,3567136767,EU +3567136768,3567136895,GB +3567136896,3567137023,EU +3567137024,3567137279,GB +3567137280,3567137599,EU +3567137600,3567137663,GB +3567137664,3567137987,EU +3567137988,3567137991,GB +3567137992,3567137999,EU +3567138000,3567138003,GB +3567138004,3567138039,EU +3567138040,3567138047,GB +3567138048,3567140095,EU +3567140096,3567140351,GB +3567140352,3567140863,EU +3567140864,3567140927,GB +3567140928,3567141631,EU 3567141632,3567141887,GB -3567141888,3567149919,EU +3567141888,3567142271,EU +3567142272,3567142399,GB +3567142400,3567143431,EU +3567143432,3567143439,GB +3567143440,3567143519,EU +3567143520,3567143551,GB +3567143552,3567143679,EU +3567143680,3567143687,GB +3567143688,3567143871,EU +3567143872,3567143935,GB +3567143936,3567143951,EU +3567143952,3567143967,GB +3567143968,3567144171,EU +3567144172,3567144175,GB +3567144176,3567144319,EU +3567144320,3567144447,GB +3567144448,3567144767,EU +3567144768,3567144831,GB +3567144832,3567147527,EU +3567147528,3567147535,GB +3567147536,3567147551,EU +3567147552,3567147559,GB +3567147560,3567148519,EU +3567148520,3567148527,GB +3567148528,3567148799,EU +3567148800,3567149055,GB +3567149056,3567149087,EU +3567149088,3567149119,GB +3567149120,3567149903,EU +3567149904,3567149911,GB +3567149912,3567149919,EU 3567149920,3567149935,GB -3567149936,3567155199,EU -3567155200,3567155711,GB -3567155712,3567157247,EU +3567149936,3567151135,EU +3567151136,3567151199,GB +3567151200,3567151231,EU +3567151232,3567151263,GB +3567151264,3567151999,EU +3567152000,3567152127,GB +3567152128,3567152159,EU +3567152160,3567152191,GB +3567152192,3567152255,EU +3567152256,3567152383,GB +3567152384,3567152399,EU +3567152400,3567152407,GB +3567152408,3567152639,EU +3567152640,3567152647,GB +3567152648,3567152663,EU +3567152664,3567152671,GB +3567152672,3567152743,EU +3567152744,3567152751,GB +3567152752,3567152831,EU +3567152832,3567152863,GB +3567152864,3567152959,EU +3567152960,3567152991,GB +3567152992,3567153023,EU +3567153024,3567153055,GB +3567153056,3567153599,EU +3567153600,3567153607,GB +3567153608,3567153615,EU +3567153616,3567153623,GB +3567153624,3567153647,EU +3567153648,3567153663,GB +3567153664,3567153687,EU +3567153688,3567153703,GB +3567153704,3567153719,EU +3567153720,3567153727,GB +3567153728,3567153823,EU +3567153824,3567153847,GB +3567153848,3567154303,EU +3567154304,3567154367,GB +3567154368,3567155199,EU +3567155200,3567155967,GB +3567155968,3567156415,EU +3567156416,3567156607,GB +3567156608,3567157247,EU 3567157248,3567165439,CZ 3567165440,3567169535,RU 3567169536,3567173631,MK 3567173632,3567239167,GB 3567239168,3567241215,NL 3567241216,3567241471,EU -3567241472,3567255551,NL +3567241472,3567251583,NL +3567251584,3567251711,BE +3567251712,3567255551,NL 3567255552,3567321087,PL -3567321088,3567324655,GB +3567321088,3567324527,GB +3567324528,3567324543,ES +3567324544,3567324655,GB 3567324656,3567324671,ES 3567324672,3567353855,GB 3567353856,3567386623,CH -3567386624,3567387647,GB -3567387648,3567387903,DE -3567387904,3567388351,GB +3567386624,3567388351,GB 3567388352,3567388383,DE 3567388384,3567388543,GB 3567388544,3567388607,DE 3567388608,3567389695,GB 3567389696,3567390719,DE -3567390720,3567399935,GB +3567390720,3567391231,GB +3567391232,3567391487,DE +3567391488,3567399935,GB 3567399936,3567401471,DE 3567401472,3567403007,GB 3567403008,3567419391,IT @@ -76284,56 +76853,37 @@ 3567427584,3567435775,SE 3567435776,3567453183,GB 3567453184,3567453439,ES -3567453440,3567455743,GB -3567455744,3567455999,ES -3567456000,3567456415,GB -3567456416,3567456431,ES -3567456432,3567456767,GB -3567456768,3567457791,ES -3567457792,3567459935,GB +3567453440,3567456407,GB +3567456408,3567456415,ES +3567456416,3567459935,GB 3567459936,3567459943,ES -3567459944,3567461119,GB -3567461120,3567461631,ES -3567461632,3567463423,GB -3567463424,3567463679,ES -3567463680,3567465983,GB +3567459944,3567465983,GB 3567465984,3567466239,ES -3567466240,3567466751,GB -3567466752,3567467263,ES -3567467264,3567468543,GB -3567468544,3567468800,ES -3567468801,3567470079,GB -3567470080,3567470591,ES -3567470592,3567472639,GB -3567472640,3567474687,ES -3567474688,3567476735,GB -3567476736,3567477247,ES -3567477248,3567478783,GB -3567478784,3567484927,ES -3567484928,3567486975,GB -3567486976,3567487999,ES -3567488000,3567490559,GB -3567490560,3567491071,ES -3567491072,3567495167,GB -3567495168,3567495423,ES -3567495424,3567497215,GB -3567497216,3567497727,ES -3567497728,3567503359,GB +3567466240,3567495679,GB +3567495680,3567495935,ES +3567495936,3567499007,GB +3567499008,3567499135,ES +3567499136,3567503359,GB 3567503360,3567504383,ES -3567504384,3567505151,GB -3567505152,3567505407,ES -3567505408,3567507455,GB -3567507456,3567509503,NL -3567509504,3567509759,GB -3567509760,3567510271,ES -3567510272,3567511487,GB +3567504384,3567511487,GB 3567511488,3567511495,ES -3567511496,3567512575,GB -3567512576,3567513599,NL -3567513600,3567515647,GB -3567515648,3567517695,ES +3567511496,3567516671,GB +3567516672,3567517695,ES 3567517696,3567583231,RU -3567583232,3567587327,EU +3567583232,3567583487,AT +3567583488,3567583743,EU +3567583744,3567583871,AT +3567583872,3567583935,EU +3567583936,3567583999,AT +3567584000,3567584255,EU +3567584256,3567584383,AT +3567584384,3567584399,EU +3567584400,3567584407,AT +3567584408,3567584511,EU +3567584512,3567584639,AT +3567584640,3567585791,EU +3567585792,3567586303,GB +3567586304,3567587327,EU 3567587328,3567591423,GB 3567591424,3567599615,IT 3567599616,3567615999,NL @@ -76345,15 +76895,11 @@ 3567618048,3567619071,IN 3567619072,3567619583,A2 3567619584,3567619839,NG -3567619840,3567620095,TZ +3567619840,3567620095,A2 3567620096,3567620351,IN -3567620352,3567624703,A2 -3567624704,3567625215,LR -3567625216,3567625727,TZ -3567625728,3567626239,A2 +3567620352,3567626239,A2 3567626240,3567626751,TZ -3567626752,3567627008,NG -3567627009,3567647487,A2 +3567626752,3567647487,A2 3567647488,3567648767,GB 3567648768,3567665151,BE 3567665152,3567673343,ES @@ -76393,17 +76939,11 @@ 3568697344,3568730111,PL 3568730112,3568746495,NL 3568746496,3568762879,FI -3568762880,3568767231,AT -3568767232,3568767351,DE -3568767352,3568767407,AT -3568767408,3568767455,DE -3568767456,3568795647,AT +3568762880,3568795647,AT 3568795648,3568803839,GB 3568803840,3568812031,IT 3568812032,3568828415,ES -3568828416,3568893951,DE -3568893952,3568894207,NL -3568894208,3568904191,DE +3568828416,3568904191,DE 3568904192,3568904447,EU 3568904448,3568959487,DE 3568959488,3569025023,AT @@ -76425,20 +76965,14 @@ 3569167872,3569168127,EU 3569168128,3569188863,NL 3569188864,3569221631,IT -3569221632,3569251327,BE -3569251328,3569251839,US -3569251840,3569277183,BE -3569277184,3569277439,LU -3569277440,3569287167,BE +3569221632,3569287167,BE 3569287168,3569352703,PL 3569352704,3569483775,RU 3569483776,3569614847,FR 3569614848,3569680383,GB 3569680384,3569713151,SK 3569713152,3569729535,AT -3569729536,3569741311,FR -3569741312,3569741823,BE -3569741824,3569811175,FR +3569729536,3569811175,FR 3569811176,3569811176,GP 3569811177,3569811455,FR 3569811456,3569876991,IL @@ -76457,9 +76991,7 @@ 3570401280,3570466815,FR 3570466816,3570532351,SE 3570532352,3570597887,IT -3570597888,3570607103,GB -3570607104,3570608127,DE -3570608128,3570614271,GB +3570597888,3570614271,GB 3570614272,3570617343,DE 3570617344,3570618367,GB 3570618368,3570622207,DE @@ -76476,29 +77008,14 @@ 3570991104,3571023871,MA 3571023872,3571056639,SE 3571056640,3571122175,DE -3571122176,3571147519,GB -3571147520,3571147615,US -3571147616,3571147647,GB -3571147648,3571147695,US -3571147696,3571147711,GB -3571147712,3571147775,US -3571147776,3571187711,GB +3571122176,3571187711,GB 3571187712,3571253247,RU 3571253248,3571286015,BE 3571286016,3571318783,DE -3571318784,3571321599,GB -3571321600,3571321727,DE -3571321728,3571343393,GB -3571343394,3571343394,DE -3571343395,3571351551,GB -3571351552,3571351807,DE -3571351808,3571357183,GB -3571357184,3571357695,DE -3571357696,3571361279,GB -3571361280,3571361535,DE -3571361536,3571384319,GB -3571384320,3571473919,DE -3571473920,3571474431,NL +3571318784,3571384319,GB +3571384320,3571425695,DE +3571425696,3571425727,ES +3571425728,3571474431,DE 3571474432,3571475455,US 3571475456,3571482623,DE 3571482624,3571515391,BE @@ -76516,7 +77033,11 @@ 3571982336,3572006911,RU 3572006912,3572039679,CH 3572039680,3572047871,BE -3572047872,3572056063,LU +3572047872,3572049919,LU +3572049920,3572049983,FR +3572049984,3572050047,LU +3572050048,3572050175,FR +3572050176,3572056063,LU 3572056064,3572072447,RU 3572072448,3572105215,BG 3572105216,3572170751,FR @@ -76582,57 +77103,40 @@ 3574005760,3574071295,CY 3574071296,3574136831,IL 3574136832,3574169599,DE -3574169600,3574172159,ES -3574172160,3574176511,GB -3574176512,3574177023,ES -3574177024,3574178815,GB -3574178816,3574180863,ES -3574180864,3574182143,GB +3574169600,3574174839,GB +3574174840,3574174847,ES +3574174848,3574182143,GB 3574182144,3574182399,ES -3574182400,3574183167,GB -3574183168,3574183679,ES -3574183680,3574184191,GB -3574184192,3574184703,ES -3574184704,3574186751,GB -3574186752,3574190079,ES -3574190080,3574190591,GB +3574182400,3574186751,GB +3574186752,3574188031,ES +3574188032,3574190591,GB 3574190592,3574190847,EU -3574190848,3574191103,ES -3574191104,3574195199,GB +3574190848,3574191615,GB +3574191616,3574192127,ES +3574192128,3574195199,GB 3574195200,3574196223,ES -3574196224,3574197247,GB -3574197248,3574197759,ES -3574197760,3574198271,GB +3574196224,3574198271,GB 3574198272,3574199295,ES 3574199296,3574199807,GB 3574199808,3574202367,ES 3574202368,3574267903,NL 3574267904,3574333439,FR 3574333440,3574341631,GB -3574341632,3574398975,EU +3574341632,3574348287,EU +3574348288,3574348543,GB +3574348544,3574398975,EU 3574398976,3574464511,PT 3574464512,3574530047,TR 3574530048,3574594559,SE 3574594560,3574595583,GB -3574595584,3574595839,FR -3574595840,3574596095,MQ -3574596096,3574596607,FR -3574596608,3574596863,GP -3574596864,3574597119,FR -3574597120,3574597631,MQ -3574597632,3574598143,GP -3574598144,3574599167,FR -3574599168,3574599679,MQ -3574599680,3574599935,GP -3574599936,3574600191,FR -3574600192,3574600447,MQ -3574600448,3574600959,FR -3574600960,3574601471,GP -3574601472,3574602239,FR +3574595584,3574595839,GF +3574595840,3574597631,FR +3574597632,3574597887,GP +3574597888,3574599423,FR +3574599424,3574599679,MQ +3574599680,3574602239,FR 3574602240,3574602495,GF -3574602496,3574603263,FR -3574603264,3574603519,GP -3574603520,3574603775,FR +3574602496,3574603775,FR 3574603776,3574611967,BG 3574611968,3574628351,HU 3574628352,3574661119,GR @@ -76640,15 +77144,9 @@ 3574693888,3574726655,PL 3574726656,3574792191,GB 3574792192,3574824959,CZ -3574824960,3574825471,GB -3574825472,3574825983,NL -3574825984,3574827007,GB -3574827008,3574827519,NL -3574827520,3574830079,GB +3574824960,3574830079,GB 3574830080,3574831103,NL -3574831104,3574836735,GB -3574836736,3574837759,NL -3574837760,3574857727,GB +3574831104,3574857727,GB 3574857728,3574923263,DE 3574923264,3574939647,RU 3574939648,3574956031,SE @@ -76668,26 +77166,20 @@ 3575562240,3575578623,DE 3575578624,3575581439,BE 3575581440,3575581695,EU -3575581696,3575587839,BE -3575587840,3575588351,GB -3575588352,3575588863,BE +3575581696,3575588863,BE 3575588864,3575589119,A2 3575589120,3575589375,BE 3575589376,3575589631,A2 3575589632,3575589887,CY 3575589888,3575590655,BE 3575590656,3575590911,GB -3575590912,3575622911,BE -3575622912,3575623167,GB -3575623168,3575624703,BE +3575590912,3575624703,BE 3575624704,3575624959,EU 3575624960,3575626751,BE 3575626752,3575627007,A2 3575627008,3575631103,BE 3575631104,3575631359,EU -3575631360,3575634255,BE -3575634256,3575634263,IT -3575634264,3575638181,BE +3575631360,3575638181,BE 3575638182,3575638182,EU 3575638183,3575640063,BE 3575640064,3575644159,TR @@ -76701,86 +77193,338 @@ 3575873536,3575906303,EE 3575906304,3575971839,FR 3575971840,3576037375,ES -3576037376,3576040063,EU +3576037376,3576038207,EU +3576038208,3576038271,GB +3576038272,3576038335,EU +3576038336,3576038463,GB +3576038464,3576038527,EU +3576038528,3576038591,GB +3576038592,3576038911,EU +3576038912,3576038975,GB +3576038976,3576039167,EU +3576039168,3576039231,GB +3576039232,3576039359,EU +3576039360,3576039383,GB +3576039384,3576039391,EU +3576039392,3576039455,GB +3576039456,3576039519,EU +3576039520,3576039551,GB +3576039552,3576039583,EU +3576039584,3576039647,GB +3576039648,3576039807,EU +3576039808,3576039839,GB +3576039840,3576039903,EU +3576039904,3576039935,GB +3576039936,3576040063,EU 3576040064,3576040127,GB -3576040128,3576040277,EU -3576040278,3576040278,GB -3576040279,3576049151,EU -3576049152,3576049919,GB -3576049920,3576053759,EU -3576053760,3576054847,GB -3576054848,3576055935,EU +3576040128,3576040215,EU +3576040216,3576040223,GB +3576040224,3576040271,EU +3576040272,3576040287,GB +3576040288,3576040351,EU +3576040352,3576040383,GB +3576040384,3576040831,EU +3576040832,3576040959,GB +3576040960,3576041471,EU +3576041472,3576041535,GB +3576041536,3576041727,EU +3576041728,3576041791,GB +3576041792,3576041831,EU +3576041832,3576041847,GB +3576041848,3576041863,EU +3576041864,3576041871,GB +3576041872,3576041879,EU +3576041880,3576041887,GB +3576041888,3576041903,EU +3576041904,3576041919,GB +3576041920,3576041935,EU +3576041936,3576041943,GB +3576041944,3576041951,EU +3576041952,3576041975,GB +3576041976,3576042111,EU +3576042112,3576042239,GB +3576042240,3576042495,EU +3576042496,3576042623,GB +3576042624,3576042687,EU +3576042688,3576042695,GB +3576042696,3576042751,EU +3576042752,3576042815,GB +3576042816,3576045583,EU +3576045584,3576045599,GB +3576045600,3576045663,EU +3576045664,3576045679,GB +3576045680,3576045711,EU +3576045712,3576045735,GB +3576045736,3576045799,EU +3576045800,3576045807,GB +3576045808,3576045815,EU +3576045816,3576045823,GB +3576045824,3576048639,EU +3576048640,3576048767,GB +3576048768,3576048959,EU +3576048960,3576049023,GB +3576049024,3576049151,EU +3576049152,3576050047,GB +3576050048,3576053759,EU +3576053760,3576054911,GB +3576054912,3576055103,EU +3576055104,3576055111,GB +3576055112,3576055119,EU +3576055120,3576055127,GB +3576055128,3576055151,EU +3576055152,3576055167,GB +3576055168,3576055183,EU +3576055184,3576055199,GB +3576055200,3576055207,EU +3576055208,3576055215,GB +3576055216,3576055279,EU +3576055280,3576055551,GB +3576055552,3576055807,EU +3576055808,3576055871,GB +3576055872,3576055935,EU 3576055936,3576055999,GB -3576056000,3576061687,EU +3576056000,3576056191,EU +3576056192,3576056255,GB +3576056256,3576056319,EU +3576056320,3576056447,GB +3576056448,3576056703,EU +3576056704,3576056767,GB +3576056768,3576056855,EU +3576056856,3576056871,GB +3576056872,3576056879,EU +3576056880,3576056887,GB +3576056888,3576056919,EU +3576056920,3576056927,GB +3576056928,3576056935,EU +3576056936,3576056943,GB +3576056944,3576056951,EU +3576056952,3576056975,GB +3576056976,3576056991,EU +3576056992,3576056999,GB +3576057000,3576057039,EU +3576057040,3576057055,GB +3576057056,3576057631,EU +3576057632,3576057647,GB +3576057648,3576057711,EU +3576057712,3576057743,GB +3576057744,3576057823,EU +3576057824,3576057839,GB +3576057840,3576058879,EU +3576058880,3576059007,GB +3576059008,3576059647,EU +3576059648,3576059679,GB +3576059680,3576059711,EU +3576059712,3576059743,GB +3576059744,3576059775,EU +3576059776,3576059807,GB +3576059808,3576060287,EU +3576060288,3576060351,GB +3576060352,3576061039,EU +3576061040,3576061055,GB +3576061056,3576061119,EU +3576061120,3576061135,GB +3576061136,3576061183,EU +3576061184,3576061247,GB +3576061248,3576061311,EU +3576061312,3576061439,GB +3576061440,3576061583,EU +3576061584,3576061591,GB +3576061592,3576061619,EU +3576061620,3576061631,GB +3576061632,3576061639,EU +3576061640,3576061647,GB +3576061648,3576061687,EU 3576061688,3576061695,GB -3576061696,3576078143,EU -3576078144,3576078159,GB -3576078160,3576085695,EU +3576061696,3576062463,EU +3576062464,3576062479,GB +3576062480,3576064319,EU +3576064320,3576064448,GB +3576064449,3576064543,EU +3576064544,3576064559,GB +3576064560,3576065407,EU +3576065408,3576065535,GB +3576065536,3576065855,EU +3576065856,3576065887,GB +3576065888,3576066303,EU +3576066304,3576066431,GB +3576066432,3576067071,EU +3576067072,3576067199,GB +3576067200,3576068351,EU +3576068352,3576068479,GB +3576068480,3576068863,EU +3576068864,3576068927,GB +3576068928,3576069055,EU +3576069056,3576069119,GB +3576069120,3576069247,EU +3576069248,3576069279,GB +3576069280,3576069311,EU +3576069312,3576069343,GB +3576069344,3576070695,EU +3576070696,3576070703,GB +3576070704,3576070711,EU +3576070712,3576070719,GB +3576070720,3576070727,EU +3576070728,3576070735,GB +3576070736,3576070775,EU +3576070776,3576070783,GB +3576070784,3576071295,EU +3576071296,3576071423,GB +3576071424,3576071551,EU +3576071552,3576071679,GB +3576071680,3576071935,EU +3576071936,3576071951,GB +3576071952,3576072063,EU +3576072064,3576072079,GB +3576072080,3576072287,EU +3576072288,3576072319,GB +3576072320,3576072415,EU +3576072416,3576072447,GB +3576072448,3576073215,EU +3576073216,3576073279,GB +3576073280,3576074751,EU +3576074752,3576074879,GB +3576074880,3576075263,EU +3576075264,3576075327,GB +3576075328,3576075647,EU +3576075648,3576075711,GB +3576075712,3576075775,EU +3576075776,3576075903,GB +3576075904,3576076271,EU +3576076272,3576076351,GB +3576076352,3576076567,EU +3576076568,3576076575,GB +3576076576,3576076783,EU +3576076784,3576076791,GB +3576076792,3576077439,EU +3576077440,3576077471,GB +3576077472,3576077567,EU +3576077568,3576077695,GB +3576077696,3576077935,EU +3576077936,3576077967,GB +3576077968,3576078143,EU +3576078144,3576078175,GB +3576078176,3576078463,EU +3576078464,3576078591,GB +3576078592,3576079999,EU +3576080000,3576080127,GB +3576080128,3576080223,EU +3576080224,3576080255,GB +3576080256,3576080775,EU +3576080776,3576080783,GB +3576080784,3576080791,EU +3576080792,3576080799,GB +3576080800,3576080807,EU +3576080808,3576080815,GB +3576080816,3576080823,EU +3576080824,3576080831,GB +3576080832,3576082079,EU +3576082080,3576082111,GB +3576082112,3576082191,EU +3576082192,3576082223,GB +3576082224,3576082687,EU +3576082688,3576082943,GB +3576082944,3576084479,EU +3576084480,3576084543,GB +3576084544,3576084607,EU +3576084608,3576084671,GB +3576084672,3576084703,EU +3576084704,3576084735,GB +3576084736,3576084863,EU +3576084864,3576084927,GB +3576084928,3576085183,EU +3576085184,3576085215,GB +3576085216,3576085695,EU 3576085696,3576085711,GB -3576085712,3576089439,EU +3576085712,3576086015,EU +3576086016,3576086143,GB +3576086144,3576086367,EU +3576086368,3576086431,GB +3576086432,3576086495,EU +3576086496,3576086527,GB +3576086528,3576086567,EU +3576086568,3576086571,GB +3576086572,3576086575,EU +3576086576,3576086591,GB +3576086592,3576086599,EU +3576086600,3576086603,GB +3576086604,3576087807,EU +3576087808,3576087823,GB +3576087824,3576087951,EU +3576087952,3576087967,GB +3576087968,3576088031,EU +3576088032,3576088047,GB +3576088048,3576088223,EU +3576088224,3576088231,GB +3576088232,3576088375,EU +3576088376,3576088383,GB +3576088384,3576088479,EU +3576088480,3576088511,GB +3576088512,3576088959,EU +3576088960,3576088967,GB +3576088968,3576089023,EU +3576089024,3576089039,GB +3576089040,3576089439,EU 3576089440,3576089471,GB -3576089472,3576091967,EU +3576089472,3576089775,EU +3576089776,3576089791,GB +3576089792,3576091407,EU +3576091408,3576091423,GB +3576091424,3576091455,EU +3576091456,3576091479,GB +3576091480,3576091967,EU 3576091968,3576091983,GB 3576091984,3576091999,EU 3576092000,3576092031,GB -3576092032,3576092129,EU -3576092130,3576092130,GB -3576092131,3576095231,EU +3576092032,3576092127,EU +3576092128,3576092159,GB +3576092160,3576092863,EU +3576092864,3576092895,GB +3576092896,3576093063,EU +3576093064,3576093071,GB +3576093072,3576093183,EU +3576093184,3576093247,GB +3576093248,3576095231,EU 3576095232,3576096767,GB -3576096768,3576099327,EU -3576099328,3576100863,GB +3576096768,3576099071,EU +3576099072,3576100863,GB 3576100864,3576101375,EU -3576101376,3576135679,GB +3576101376,3576111359,GB +3576111360,3576111615,FR +3576111616,3576135679,GB 3576135680,3576168447,DE 3576168448,3576233983,GB 3576233984,3576236543,FR -3576236544,3576238335,GB -3576238336,3576238847,FR -3576238848,3576241151,GB -3576241152,3576241407,FR -3576241408,3576241991,GB +3576236544,3576241991,GB 3576241992,3576241999,FR -3576242000,3576242175,GB -3576242176,3576242431,FR -3576242432,3576243199,GB -3576243200,3576243455,FR -3576243456,3576245247,GB -3576245248,3576245503,FR -3576245504,3576249343,GB -3576249344,3576249599,FR -3576249600,3576252159,GB -3576252160,3576252671,FR +3576242000,3576242383,GB +3576242384,3576242391,FR +3576242392,3576252415,GB +3576252416,3576252671,FR 3576252672,3576253807,GB 3576253808,3576253815,FR 3576253816,3576254463,GB 3576254464,3576254719,FR -3576254720,3576254975,GB -3576254976,3576255231,FR -3576255232,3576257023,GB -3576257024,3576257279,FR -3576257280,3576258047,GB -3576258048,3576258303,FR -3576258304,3576258625,GB -3576258626,3576258626,FR -3576258627,3576258815,GB +3576254720,3576254775,GB +3576254776,3576254783,FR +3576254784,3576258815,GB 3576258816,3576259071,FR -3576259072,3576259839,GB -3576259840,3576260095,FR -3576260096,3576260863,GB +3576259072,3576260607,GB +3576260608,3576260623,FR +3576260624,3576260863,GB 3576260864,3576261119,FR -3576261120,3576262132,GB -3576262133,3576262133,FR -3576262134,3576263423,GB +3576261120,3576263423,GB 3576263424,3576263679,FR 3576263680,3576263919,GB 3576263920,3576263935,FR -3576263936,3576264447,GB -3576264448,3576264703,FR -3576264704,3576265215,GB -3576265216,3576265471,FR -3576265472,3576265727,GB -3576265728,3576265983,FR -3576265984,3576266751,GB +3576263936,3576264255,GB +3576264256,3576264263,FR +3576264264,3576264351,GB +3576264352,3576264359,FR +3576264360,3576264375,GB +3576264376,3576264383,FR +3576264384,3576264679,GB +3576264680,3576264687,FR +3576264688,3576266751,GB 3576266752,3576299519,FR 3576299520,3576365055,AE 3576365056,3576430591,TR @@ -76793,33 +77537,35 @@ 3576823808,3576889343,SE 3576889344,3576954879,NL 3576954880,3576987647,NO -3576987648,3577001983,GB -3577001984,3577002495,NL -3577002496,3577020415,GB +3576987648,3577020415,GB 3577020416,3577085951,NL 3577085952,3577151487,DE -3577151488,3577153023,RE -3577153024,3577153279,FR -3577153280,3577153535,RE -3577153536,3577154559,FR -3577154560,3577155327,RE -3577155328,3577155583,FR -3577155584,3577156607,RE -3577156608,3577156863,FR -3577156864,3577158399,RE -3577158400,3577158911,FR -3577158912,3577159167,RE -3577159168,3577159423,FR +3577151488,3577152511,RE +3577152512,3577154303,FR +3577154304,3577154559,RE +3577154560,3577156863,FR +3577156864,3577157375,RE +3577157376,3577157631,FR +3577157632,3577157887,RE +3577157888,3577158015,FR +3577158016,3577158399,RE +3577158400,3577158655,FR +3577158656,3577158911,RE +3577158912,3577159423,FR 3577159424,3577159935,RE -3577159936,3577161727,FR -3577161728,3577162239,RE -3577162240,3577162751,FR -3577162752,3577163007,RE -3577163008,3577164031,FR -3577164032,3577164543,RE -3577164544,3577165311,FR -3577165312,3577165823,RE -3577165824,3577167871,FR +3577159936,3577161215,FR +3577161216,3577161471,RE +3577161472,3577161983,FR +3577161984,3577162239,RE +3577162240,3577163263,FR +3577163264,3577163519,RE +3577163520,3577164287,FR +3577164288,3577164543,RE +3577164544,3577165567,FR +3577165568,3577165823,RE +3577165824,3577167359,FR +3577167360,3577167615,RE +3577167616,3577167871,FR 3577167872,3577184255,ET 3577184256,3577217023,CH 3577217024,3577282559,FR @@ -76830,36 +77576,26 @@ 3577544704,3577545983,DE 3577545984,3577546111,SE 3577546112,3577610239,DE -3577610240,3577611775,EU -3577611776,3577612287,DE -3577612288,3577618943,EU -3577618944,3577619455,GB -3577619456,3577625599,EU +3577610240,3577625599,EU 3577625600,3577625855,GB -3577625856,3577626111,EU -3577626112,3577626367,GB -3577626368,3577628671,EU -3577628672,3577630207,CH -3577630208,3577632511,EU -3577632512,3577632767,GB -3577632768,3577635839,EU +3577625856,3577626175,EU +3577626176,3577626239,GB +3577626240,3577628671,EU +3577628672,3577629695,CH +3577629696,3577635839,EU 3577635840,3577636863,DE 3577636864,3577637887,GB -3577637888,3577639679,EU -3577639680,3577639935,FR -3577639936,3577641199,EU -3577641200,3577641471,FR -3577641472,3577641983,EU -3577641984,3577642239,GB -3577642240,3577653247,EU +3577637888,3577641199,EU +3577641200,3577641215,FR +3577641216,3577650047,EU +3577650048,3577650063,NL +3577650064,3577653247,EU 3577653248,3577655295,IT 3577655296,3577663487,EU -3577663488,3577665023,SE -3577665024,3577669631,EU +3577663488,3577664511,SE +3577664512,3577669631,EU 3577669632,3577670655,BE -3577670656,3577671167,EU -3577671168,3577671679,BE -3577671680,3577675775,EU +3577670656,3577675775,EU 3577675776,3577741311,PT 3577741312,3578003455,SE 3578003456,3578040319,DE @@ -76870,7 +77606,11 @@ 3578064511,3578064639,EU 3578064640,3578159615,DE 3578159616,3578159871,EU -3578159872,3578234623,DE +3578159872,3578201599,DE +3578201600,3578201729,BE +3578201730,3578201730,DE +3578201731,3578201855,BE +3578201856,3578234623,DE 3578234624,3578234879,EU 3578234880,3578265599,DE 3578265600,3578331135,GB @@ -76897,17 +77637,13 @@ 3579019264,3579052031,DK 3579052032,3579117567,NL 3579117568,3579183103,RU -3579183104,3579193713,GB -3579193714,3579193714,BE -3579193715,3579197311,GB +3579183104,3579193759,GB +3579193760,3579193775,NL +3579193776,3579197311,GB 3579197312,3579197439,US 3579197440,3579248639,GB 3579248640,3579346943,RU -3579346944,3579361535,SE -3579361536,3579361791,NO -3579361792,3579362815,SE -3579362816,3579363327,NO -3579363328,3579445247,SE +3579346944,3579445247,SE 3579445248,3579478015,AT 3579478016,3579527167,FR 3579527168,3579543551,BA @@ -76924,53 +77660,51 @@ 3579740160,3579772927,IE 3579772928,3579838463,DE 3579838464,3580100607,ES -3580100608,3580103167,SE -3580103168,3580103679,LV -3580103680,3580104703,SE -3580104704,3580106751,LV -3580106752,3580107263,SE -3580107264,3580107775,LV -3580107776,3580112895,SE +3580100608,3580103679,SE +3580103680,3580106751,LV +3580106752,3580112895,SE 3580112896,3580116991,LV -3580116992,3580133375,SE -3580133376,3580133887,LV -3580133888,3580135423,SE +3580116992,3580131327,SE +3580131328,3580133375,LV +3580133376,3580135423,SE 3580135424,3580135531,EE 3580135532,3580135532,SE 3580135533,3580135935,EE -3580135936,3580137727,SE -3580137728,3580137983,HR -3580137984,3580150783,SE +3580135936,3580136447,SE +3580136448,3580136703,HR +3580136704,3580136959,SE +3580136960,3580138495,HR +3580138496,3580150783,SE 3580150784,3580151039,NL 3580151040,3580162047,SE 3580162048,3580164095,EE 3580164096,3580165887,SE 3580165888,3580166143,NL -3580166144,3580198911,SE -3580198912,3580199423,LV -3580199424,3580200959,EE -3580200960,3580203007,LT +3580166144,3580199935,SE +3580199936,3580200447,EE +3580200448,3580201983,SE +3580201984,3580203007,LT 3580203008,3580203519,SE 3580203520,3580204543,RU 3580204544,3580205055,NL -3580205056,3580207103,HR +3580205056,3580206079,SE +3580206080,3580207103,HR 3580207104,3580208127,LV 3580208128,3580209151,EE 3580209152,3580213247,HR -3580213248,3580214783,LV -3580214784,3580215295,SE -3580215296,3580216831,EE -3580216832,3580220415,SE -3580220416,3580221439,LV -3580221440,3580223487,SE +3580213248,3580214271,LV +3580214272,3580215295,SE +3580215296,3580217343,EE +3580217344,3580223487,SE 3580223488,3580231679,DE 3580231680,3580232447,SE -3580232448,3580233727,LT -3580233728,3580234751,SE -3580234752,3580236799,LT +3580232448,3580233215,LT +3580233216,3580233727,SE +3580233728,3580235263,LT +3580235264,3580235775,SE +3580235776,3580236799,LT 3580236800,3580237567,LV -3580237568,3580237823,SE -3580237824,3580239871,LV +3580237568,3580239871,SE 3580239872,3580241919,EE 3580241920,3580243967,SE 3580243968,3580244991,EE @@ -76982,21 +77716,21 @@ 3580258304,3580258815,SE 3580258816,3580260351,DE 3580260352,3580265471,AT -3580265472,3580265983,SE -3580265984,3580268543,EE +3580265472,3580266495,SE +3580266496,3580268543,EE 3580268544,3580272639,LV 3580272640,3580276735,SE 3580276736,3580280831,NL 3580280832,3580329983,RU -3580329984,3580338175,SE -3580338176,3580339711,HR +3580329984,3580338687,SE +3580338688,3580339711,HR 3580339712,3580340223,EE 3580340224,3580344319,LT -3580344320,3580345343,SE -3580345344,3580345855,EE -3580345856,3580354559,SE +3580344320,3580354559,SE 3580354560,3580362751,LT -3580362752,3580624895,GB +3580362752,3580473871,GB +3580473872,3580473887,IE +3580473888,3580624895,GB 3580624896,3580626943,RU 3580626944,3580628991,PL 3580628992,3580631039,RU @@ -77008,8 +77742,8 @@ 3580641280,3580643327,FR 3580643328,3580645375,UA 3580645376,3580647423,PL -3580647424,3580647935,GB -3580647936,3580649215,DE +3580647424,3580647679,GB +3580647680,3580649215,DE 3580649216,3580649471,GB 3580649472,3580651519,SE 3580651520,3580653567,NL @@ -77047,20 +77781,19 @@ 3581158400,3581159423,EU 3581159424,3581161471,IE 3581161472,3581173759,EU -3581173760,3581196799,NL -3581196800,3581197823,EU -3581197824,3581198335,GB -3581198336,3581199871,NL -3581199872,3581203967,EU -3581203968,3581214719,SE +3581173760,3581196287,NL +3581196288,3581198335,EU +3581198336,3581199359,NL +3581199360,3581204479,EU +3581204480,3581214719,SE 3581214720,3581231103,NL 3581231104,3581239295,EU 3581239296,3581241343,NL 3581241344,3581242623,EU 3581242624,3581245439,FR 3581245440,3581255679,EU -3581255680,3581259263,FR -3581259264,3581280255,EU +3581255680,3581258751,FR +3581258752,3581280255,EU 3581280256,3581411327,BE 3581411328,3581673471,GB 3581673472,3581935615,NL @@ -77104,7 +77837,9 @@ 3582156800,3582164991,GB 3582164992,3582173183,SE 3582173184,3582181375,GB -3582181376,3582193151,DE +3582181376,3582190927,DE +3582190928,3582190931,FR +3582190932,3582193151,DE 3582193152,3582193407,EU 3582193408,3582197759,DE 3582197760,3582205951,DK @@ -77129,7 +77864,9 @@ 3582287872,3582296063,DE 3582296064,3582304255,GB 3582304256,3582312447,UA -3582312448,3582320639,JE +3582312448,3582313855,JE +3582313856,3582313871,GB +3582313872,3582320639,JE 3582320640,3582328831,CH 3582328832,3582337023,HU 3582337024,3582341119,ES @@ -77157,9 +77894,11 @@ 3582533632,3582541823,BG 3582541824,3582550015,US 3582550016,3582558207,RS -3582558208,3582558463,EU -3582558464,3582558479,MC -3582558480,3582574591,EU +3582558208,3582570911,EU +3582570912,3582570943,FR +3582570944,3582572415,EU +3582572416,3582572423,CH +3582572424,3582574591,EU 3582574592,3582582783,DE 3582582784,3582590975,RU 3582590976,3582599167,FR @@ -77178,11 +77917,7 @@ 3582697472,3582705663,FI 3582705664,3582722047,TR 3582722048,3582730239,IT -3582730240,3582736639,ES -3582736640,3582737151,DZ -3582737152,3582737279,ES -3582737280,3582737407,DZ -3582737408,3582738431,ES +3582730240,3582738431,ES 3582738432,3582746623,DK 3582746624,3582754815,RU 3582754816,3582763007,GR @@ -77234,16 +77969,14 @@ 3583123456,3583131647,PL 3583131648,3583139839,SE 3583139840,3583148031,DE -3583148032,3583157247,GB -3583157248,3583157375,IE -3583157376,3583157407,GB -3583157408,3583157471,IE -3583157472,3583157487,GB -3583157488,3583157759,IE +3583148032,3583157503,GB +3583157504,3583157759,IE 3583157760,3583160319,GB 3583160320,3583161343,DE 3583161344,3583162623,GB -3583162624,3583162879,ZA +3583162624,3583162751,ZA +3583162752,3583162815,GB +3583162816,3583162879,ZA 3583162880,3583164415,GB 3583164416,3583172607,PT 3583172608,3583188991,DE @@ -77267,8 +78000,7 @@ 3583336448,3583337727,ME 3583337728,3583337983,AL 3583337984,3583344639,ME -3583344640,3583352575,BG -3583352576,3583352831,MK +3583344640,3583352831,BG 3583352832,3583361023,CY 3583361024,3583369215,IT 3583369216,3583377407,ES @@ -77316,12 +78048,17 @@ 3583729664,3583737855,TR 3583737856,3583743487,EU 3583743488,3583743743,GB -3583743744,3583743999,IE -3583744000,3583744383,EU -3583744384,3583744447,GB -3583744448,3583744959,EU +3583743744,3583743976,EU +3583743977,3583743977,IE +3583743978,3583744319,EU +3583744320,3583744447,GB +3583744448,3583744511,EU +3583744512,3583744767,GB +3583744768,3583744959,EU 3583744960,3583744991,GB -3583744992,3583746047,EU +3583744992,3583745279,EU +3583745280,3583745535,GB +3583745536,3583746047,EU 3583746048,3583754239,PL 3583754240,3583762431,RU 3583762432,3583770623,CZ @@ -77335,8 +78072,7 @@ 3583827968,3583836159,CH 3583836160,3583844351,DE 3583844352,3583852543,KZ -3583852544,3583853055,SG -3583853056,3583854591,FI +3583852544,3583854591,FI 3583854592,3583854847,GB 3583854848,3583860735,FI 3583860736,3583868927,HU @@ -77367,23 +78103,9 @@ 3584073728,3584081919,SK 3584081920,3584082007,NL 3584082008,3584082015,AT -3584082016,3584090111,NL -3584090112,3584090623,NO -3584090624,3584090879,NL -3584090880,3584091135,NO -3584091136,3584091391,NL -3584091392,3584091903,NO -3584091904,3584092415,NL -3584092416,3584092671,NO -3584092672,3584092927,NL -3584092928,3584093695,NO -3584093696,3584094207,NL -3584094208,3584094463,NO -3584094464,3584095487,NL -3584095488,3584095743,NO -3584095744,3584095999,NL -3584096000,3584096255,NO -3584096256,3584098303,NL +3584082016,3584096183,NL +3584096184,3584096191,NO +3584096192,3584098303,NL 3584098304,3584106495,SI 3584106496,3584114687,FI 3584114688,3584120063,GB @@ -77403,24 +78125,14 @@ 3584212992,3584221183,ES 3584221184,3584229375,NO 3584229376,3584245759,HU -3584245760,3584245802,NL -3584245803,3584245803,NL -3584245804,3584246065,NL -3584246066,3584246066,NL -3584246067,3584247651,NL -3584247652,3584247652,NL -3584247653,3584247956,NL -3584247957,3584247957,NL -3584247958,3584253951,NL -3584253952,3584254463,ME -3584254464,3584255743,AL +3584245760,3584253951,NL +3584253952,3584254975,ME +3584254976,3584255743,AL 3584255744,3584255999,ME 3584256000,3584260095,AL -3584260096,3584260351,ME -3584260352,3584260607,RS +3584260096,3584260607,ME 3584260608,3584260863,US -3584260864,3584261631,ME -3584261632,3584262143,AL +3584260864,3584262143,ME 3584262144,3584270335,SE 3584270336,3584278527,FR 3584278528,3584286719,GB @@ -77437,11 +78149,7 @@ 3584376832,3584393215,DE 3584393216,3584401407,GB 3584401408,3584409599,MT -3584409600,3584413695,RU -3584413696,3584414207,GB -3584414208,3584416255,RU -3584416256,3584416767,GB -3584416768,3584417791,RU +3584409600,3584417791,RU 3584417792,3584434175,GB 3584434176,3584442367,LU 3584442368,3584450559,GB @@ -77452,7 +78160,9 @@ 3584483328,3584491519,DE 3584491520,3584499711,BG 3584499712,3584507903,RU -3584507904,3584516095,GB +3584507904,3584509231,GB +3584509232,3584509239,AW +3584509240,3584516095,GB 3584516096,3584524287,NO 3584524288,3584532479,IS 3584532480,3584540671,DE @@ -77466,9 +78176,7 @@ 3584606208,3584614399,DE 3584614400,3584622591,IE 3584622592,3584630783,FI -3584630784,3584635799,BG -3584635800,3584635800,BG -3584635801,3584638975,BG +3584630784,3584638975,BG 3584638976,3584647167,UA 3584647168,3584648191,LU 3584648192,3584648447,IT @@ -77477,11 +78185,16 @@ 3584663552,3584671743,FR 3584671744,3584688127,NL 3584688128,3584696319,GB -3584696320,3584704511,ES +3584696320,3584701751,ES +3584701752,3584701823,NL +3584701824,3584701991,ES +3584701992,3584702007,CH +3584702008,3584703095,ES +3584703096,3584703103,BE +3584703104,3584704511,ES 3584704512,3584720895,RU 3584720896,3584729087,GB 3584729088,3584737279,DE -3584737280,3584745471,GR 3584745472,3584753663,DK 3584753664,3584770047,RU 3584770048,3584778239,NL @@ -77502,7 +78215,8 @@ 3584909312,3584917503,IT 3584917504,3584925695,FI 3584925696,3584933887,CH -3584933888,3584942079,NO +3584933888,3584937983,NO +3584937984,3584942079,NL 3584942080,3584950271,DK 3584950272,3584958463,UA 3584958464,3584966655,DE @@ -77529,7 +78243,9 @@ 3585155072,3585163263,GB 3585163264,3585171455,BE 3585171456,3585179647,RU -3585179648,3585196031,BE +3585179648,3585190527,BE +3585190528,3585190655,DZ +3585190656,3585196031,BE 3585196032,3585204223,ES 3585204224,3585212415,GB 3585212416,3585220607,DE @@ -77551,9 +78267,7 @@ 3585302528,3585310719,ES 3585310720,3585318911,DE 3585318912,3585327103,DZ -3585327104,3585332223,NL -3585332224,3585332351,NL -3585332352,3585335295,NL +3585327104,3585335295,NL 3585335296,3585343487,UA 3585343488,3585351679,EE 3585351680,3585359871,CZ @@ -77562,9 +78276,7 @@ 3585376256,3585384447,PL 3585384448,3585392639,CH 3585392640,3585400831,RU -3585400832,3585407999,A2 -3585408000,3585408255,FR -3585408256,3585409023,A2 +3585400832,3585409023,A2 3585409024,3585417215,RU 3585417216,3585425407,BE 3585425408,3585433599,ES @@ -77597,20 +78309,12 @@ 3585662976,3585671167,BY 3585671168,3585672191,SE 3585672192,3585672447,DK -3585672448,3585672959,SE -3585672960,3585673727,DK -3585673728,3585674239,SE -3585674240,3585675775,DK -3585675776,3585676287,SE -3585676288,3585677311,DK -3585677312,3585679359,SE +3585672448,3585674239,SE +3585674240,3585674495,DK +3585674496,3585679359,SE 3585679360,3585687551,FI 3585687552,3585695743,DE -3585695744,3585697279,A2 -3585697280,3585697535,NO -3585697536,3585701119,A2 -3585701120,3585701375,US -3585701376,3585702527,A2 +3585695744,3585702527,A2 3585702528,3585702655,TZ 3585702656,3585703935,A2 3585703936,3585712127,DE @@ -77629,13 +78333,9 @@ 3585810432,3585818623,GB 3585818624,3585826815,DE 3585826816,3585835007,RU -3585835008,3585837055,NL -3585837056,3585837567,IQ -3585837568,3585838591,NL -3585838592,3585839103,NG -3585839104,3585841663,NL -3585841664,3585842687,NG -3585842688,3585843199,NL +3585835008,3585835775,US +3585835776,3585836031,NL +3585836032,3585843199,US 3585843200,3585851391,NO 3585851392,3585859583,SE 3585859584,3585860607,AF @@ -77643,7 +78343,8 @@ 3585863680,3585864703,RU 3585864704,3585865471,DE 3585865472,3585865727,LB -3585865728,3585867775,RU +3585865728,3585867263,RU +3585867264,3585867775,DE 3585867776,3585875967,NO 3585875968,3585884159,CH 3585884160,3585892351,IQ @@ -77657,15 +78358,14 @@ 3585910784,3585911551,FR 3585911552,3585911807,GP 3585911808,3585912575,FR -3585912576,3585913343,GP -3585913344,3585913599,FR -3585913600,3585914367,GP +3585912576,3585912831,GP +3585912832,3585914111,FR +3585914112,3585914367,GP 3585914368,3585914623,FR 3585914624,3585914879,GF -3585914880,3585915135,FR -3585915136,3585916415,GP -3585916416,3585916671,FR -3585916672,3585916927,MQ +3585914880,3585915391,FR +3585915392,3585915903,GP +3585915904,3585916927,FR 3585916928,3585925119,IT 3585925120,3585933311,CH 3585933312,3585941503,NL @@ -77693,8 +78393,7 @@ 3586162688,3586179071,FI 3586179072,3586195455,ES 3586195456,3586203647,RU -3586203648,3586204159,ZM -3586204160,3586205695,KE +3586203648,3586205695,KE 3586205696,3586207743,BW 3586207744,3586207999,ZA 3586208000,3586208255,A2 @@ -77706,21 +78405,8 @@ 3586228224,3586244607,BE 3586244608,3586246655,NL 3586246656,3586248703,BE -3586248704,3586252799,NL -3586252800,3586253183,BE -3586253184,3586258943,NL -3586258944,3586259455,BE -3586259456,3586269439,NL -3586269440,3586270207,GB -3586270208,3586270719,ES -3586270720,3586270975,GB -3586270976,3586271231,ES -3586271232,3586272255,GB -3586272256,3586272511,NL -3586272512,3586273279,GB -3586273280,3586276351,NL -3586276352,3586276863,GB -3586276864,3586277375,NL +3586248704,3586260991,NL +3586260992,3586277375,GB 3586277376,3586293759,TR 3586293760,3586310143,ES 3586310144,3586326527,CZ @@ -77782,17 +78468,17 @@ 3586850816,3586867199,NO 3586867200,3586883583,FR 3586883584,3586899967,IT -3586899968,3586906225,DE -3586906226,3586906226,DE -3586906227,3586911007,DE +3586899968,3586911007,DE 3586911008,3586911039,BE -3586911040,3586912721,DE +3586911040,3586911103,DE +3586911104,3586911167,NL +3586911168,3586912721,DE 3586912722,3586912722,FR 3586912723,3586916351,DE 3586916352,3586924543,IT -3586924544,3586925823,AX -3586925824,3586926079,FI -3586926080,3586932735,AX +3586924544,3586928895,AX +3586928896,3586929151,FI +3586929152,3586932735,AX 3586932736,3586949119,LB 3586949120,3586965503,SE 3586965504,3586981887,NL @@ -77823,11 +78509,17 @@ 3587194880,3587211263,GB 3587211264,3587219455,AT 3587219456,3587227647,RU -3587227648,3587233279,GB -3587233280,3587233791,NL -3587233792,3587238911,GB -3587238912,3587239423,NL -3587239424,3587239583,GB +3587227648,3587231231,GB +3587231232,3587231263,NL +3587231264,3587233279,GB +3587233280,3587233535,NL +3587233536,3587234175,GB +3587234176,3587234207,NL +3587234208,3587237375,GB +3587237376,3587237887,NL +3587237888,3587238487,GB +3587238488,3587238495,NL +3587238496,3587239583,GB 3587239584,3587239599,NL 3587239600,3587239711,GB 3587239712,3587239727,NL @@ -77835,14 +78527,13 @@ 3587239792,3587239799,NL 3587239800,3587239935,GB 3587239936,3587240191,NL -3587240192,3587240447,GB -3587240448,3587240703,NL -3587240704,3587240959,GB -3587240960,3587241215,NL -3587241216,3587244031,GB +3587240192,3587242671,GB +3587242672,3587242679,DE +3587242680,3587244031,GB 3587244032,3587260415,IT -3587260416,3587282943,DE -3587282944,3587284991,CZ +3587260416,3587281151,DE +3587281152,3587282943,US +3587282944,3587284991,DE 3587284992,3587285216,EU 3587285217,3587285217,US 3587285218,3587285523,EU @@ -77856,9 +78547,7 @@ 3587375104,3587383295,TR 3587383296,3587391487,CZ 3587391488,3587407871,KZ -3587407872,3587408895,BE -3587408896,3587409407,RU -3587409408,3587412223,BE +3587407872,3587412223,BE 3587412224,3587413759,NL 3587413760,3587414015,BE 3587414016,3587415039,NL @@ -77868,7 +78557,13 @@ 3587424256,3587440639,DE 3587440640,3587444900,SE 3587444901,3587444916,FI -3587444917,3587457023,SE +3587444917,3587445759,SE +3587445760,3587445823,FI +3587445824,3587445983,SE +3587445984,3587445999,FI +3587446000,3587446143,SE +3587446144,3587446271,FI +3587446272,3587457023,SE 3587457024,3587473407,GB 3587473408,3587489791,IT 3587489792,3587506175,EG @@ -77884,7 +78579,9 @@ 3587620864,3587637247,SE 3587637248,3587646975,FR 3587646976,3587647231,MC -3587647232,3587653631,FR +3587647232,3587647983,FR +3587647984,3587647999,GB +3587648000,3587653631,FR 3587653632,3587670015,SK 3587670016,3587702783,IT 3587702784,3587710975,DE @@ -77917,11 +78614,13 @@ 3588079616,3588095999,CH 3588096000,3588104191,NL 3588104192,3588112383,BG -3588112384,3588128767,FR +3588112384,3588128767,RE 3588128768,3588145151,HU 3588145152,3588153343,PL 3588153344,3588161535,RU -3588161536,3588227071,FR +3588161536,3588173567,FR +3588173568,3588173823,YT +3588173824,3588227071,FR 3588227072,3588292607,BE 3588292608,3588308991,AT 3588308992,3588325375,NO @@ -77931,8 +78630,8 @@ 3588333568,3588341759,FR 3588341760,3588358143,IT 3588358144,3588374527,BG -3588390912,3588393983,LT -3588393984,3588394495,LV +3588390912,3588394239,LT +3588394240,3588394495,LV 3588394496,3588407295,LT 3588407296,3588423679,CZ 3588423680,3588440063,ES @@ -77946,9 +78645,11 @@ 3588538368,3588554751,GB 3588554752,3588571135,AT 3588571136,3588587519,GB -3588587520,3588588567,ES -3588588568,3588588575,IT -3588588576,3588603903,ES +3588587520,3588590591,ES +3588590592,3588590847,FR +3588590848,3588595199,ES +3588595200,3588595455,FR +3588595456,3588603903,ES 3588603904,3588620287,SI 3588620288,3588628479,SA 3588628480,3588636671,CH @@ -77983,26 +78684,11 @@ 3589021696,3589029887,SA 3589029888,3589030119,GB 3589030120,3589030127,NL -3589030128,3589030143,GB -3589030144,3589030399,FR -3589030400,3589030911,GB -3589030912,3589031167,NL -3589031168,3589031935,GB -3589031936,3589033983,NL -3589033984,3589034239,GB +3589030128,3589034239,GB 3589034240,3589034495,EU -3589034496,3589037055,ES +3589034496,3589037055,GB 3589037056,3589037311,EU -3589037312,3589037487,NL -3589037488,3589037495,IT -3589037496,3589037567,NL -3589037568,3589038079,ES -3589038080,3589040127,NL -3589040128,3589042175,GB -3589042176,3589042431,NL -3589042432,3589043455,GB -3589043456,3589043711,NL -3589043712,3589046271,GB +3589037312,3589046271,GB 3589046272,3589079039,NO 3589079040,3589128191,DK 3589128192,3589144575,GB @@ -78022,11 +78708,11 @@ 3589341184,3589373951,PL 3589373952,3589390335,DE 3589390336,3589423103,RU -3589423104,3589430271,GB -3589430272,3589430527,ES -3589430528,3589431039,GB +3589423104,3589431039,GB 3589431040,3589431295,ES -3589431296,3589439487,GB +3589431296,3589432831,GB +3589432832,3589433087,CH +3589433088,3589439487,GB 3589439488,3589455871,SE 3589455872,3589472255,RU 3589472256,3589488639,TR @@ -78036,23 +78722,19 @@ 3589537792,3589545983,FR 3589545984,3589554175,DE 3589554176,3589570559,PS -3589570560,3589580543,GB -3589580544,3589580799,NL -3589580800,3589581823,GB -3589581824,3589582335,NL -3589582336,3589582975,GB +3589570560,3589578751,GB +3589578752,3589579007,IN +3589579008,3589580543,GB +3589580544,3589581055,NL +3589581056,3589582975,GB 3589582976,3589583103,NL 3589583104,3589583871,GB 3589583872,3589584127,NL -3589584128,3589585407,GB -3589585408,3589585919,NL -3589585920,3589586943,GB +3589584128,3589586943,GB 3589586944,3589603327,RS 3589603328,3589668863,FR 3589668864,3589677055,RU -3589677056,3589680600,FR -3589680601,3589680601,FR -3589680602,3589685247,FR +3589677056,3589685247,FR 3589685248,3589718015,GB 3589718016,3589722023,BE 3589722024,3589722031,FR @@ -78065,16 +78747,16 @@ 3589816320,3589825791,EU 3589825792,3589826047,DE 3589826048,3589827711,EU -3589827712,3589828095,DE -3589828096,3589828351,EU +3589827712,3589827839,DE +3589827840,3589828351,EU 3589828352,3589828607,FR 3589828608,3589828735,EU 3589828736,3589828863,NL 3589828864,3589829631,EU -3589829632,3589830655,GB -3589830656,3589831167,DE -3589831168,3589831679,US -3589831680,3589832703,EU +3589829632,3589830143,GB +3589830144,3589831679,EU +3589831680,3589831935,FR +3589831936,3589832703,EU 3589832704,3589849087,TR 3589849088,3589865471,GB 3589865472,3589881855,GR @@ -78091,9 +78773,7 @@ 3590062080,3590078463,DE 3590078464,3590094847,RU 3590094848,3590111231,DE -3590111232,3590113023,LT -3590113024,3590113279,LV -3590113280,3590127615,LT +3590111232,3590127615,LT 3590127616,3590143999,GB 3590144000,3590156287,SI 3590156288,3590157311,HR @@ -78110,28 +78790,21 @@ 3590244352,3590244607,DE 3590244608,3590245311,FR 3590245312,3590245439,US -3590245440,3590246399,FR -3590246400,3590246911,US -3590246912,3590247167,FR +3590245440,3590247167,FR 3590247168,3590247231,US 3590247232,3590247295,FR 3590247296,3590247423,US 3590247424,3590247487,FR 3590247488,3590247551,US -3590247552,3590248447,FR -3590248448,3590248959,US -3590248960,3590250239,FR -3590250240,3590250495,GR +3590247552,3590250495,FR 3590250496,3590250751,IE 3590250752,3590251647,FR 3590251648,3590251775,NL 3590251776,3590252543,FR 3590252544,3590253055,LB -3590253056,3590253311,DE +3590253056,3590253311,FR 3590253312,3590253567,GB -3590253568,3590254207,FR -3590254208,3590254271,US -3590254272,3590254847,FR +3590253568,3590254847,FR 3590254848,3590255103,GB 3590255104,3590255871,FR 3590255872,3590255935,US @@ -78140,37 +78813,31 @@ 3590256384,3590256735,FR 3590256736,3590256767,BE 3590256768,3590257151,US -3590257152,3590258175,DE -3590258176,3590258559,FR +3590257152,3590258559,FR 3590258560,3590258687,US 3590258688,3590291455,IT 3590291456,3590299647,EG 3590299648,3590307839,FI -3590307840,3590308639,GB -3590308640,3590308671,US -3590308672,3590308863,GB -3590308864,3590309119,ZM -3590309120,3590311679,GB -3590311680,3590311935,YT -3590311936,3590314495,GB -3590314496,3590314751,US -3590314752,3590314847,GB -3590314848,3590314879,US -3590314880,3590316031,GB -3590316032,3590316223,US -3590316224,3590316231,SO -3590316232,3590316415,US -3590316416,3590316479,GB -3590316480,3590316543,US -3590316544,3590322175,GB -3590322176,3590322431,A2 -3590322432,3590322687,GB -3590322688,3590323199,IQ -3590323200,3590323711,MW -3590323712,3590324223,GB -3590324224,3623891967,US -3623891968,3623892479,ZA -3623892480,3624054783,US +3590307840,3590308607,A2 +3590308608,3590309119,US +3590309120,3590312111,A2 +3590312112,3590312119,SS +3590312120,3590312135,A2 +3590312136,3590312143,SS +3590312144,3590312935,A2 +3590312936,3590312943,UG +3590312944,3590314625,A2 +3590314626,3590314626,US +3590314627,3590316282,A2 +3590316283,3590316283,US +3590316284,3590316287,A2 +3590316288,3590316799,US +3590316800,3590317951,A2 +3590317952,3590318015,UA +3590318016,3590324223,A2 +3590324224,3623891695,US +3623891696,3623891703,ZA +3623891704,3624054783,US 3624054784,3624056831,ZA 3624056832,3624181759,US 3624181760,3624182783,ZA @@ -78179,8 +78846,7 @@ 3624208384,3624255487,US 3624255488,3624257535,ZA 3624257536,3624271871,US -3624271872,3624272383,SY -3624272384,3624283135,CA +3624271872,3624283135,CA 3624283136,3624284159,US 3624284160,3624286193,CA 3624286194,3624286194,ZA @@ -78196,16 +78862,20 @@ 3624321024,3624325119,CA 3624325120,3624359679,US 3624359680,3624360703,CW -3624360704,3624376247,US -3624376248,3624376263,ES -3624376264,3624376287,US -3624376288,3624376295,GB -3624376296,3624386559,US +3624360704,3624376335,US +3624376336,3624376343,AU +3624376344,3624376351,US +3624376352,3624376359,PT +3624376360,3624377863,US +3624377864,3624377871,GB +3624377872,3624377879,US +3624377880,3624377887,GB +3624377888,3624377903,US +3624377904,3624377911,GB +3624377912,3624386559,US 3624386560,3624394751,CA 3624394752,3624435711,US -3624435712,3624443903,CA -3624443904,3624443919,US -3624443920,3624452095,CA +3624435712,3624452095,CA 3624452096,3624480767,US 3624480768,3624484863,CA 3624484864,3624534015,US @@ -78231,9 +78901,7 @@ 3624833024,3624845311,US 3624845312,3624849407,AU 3624849408,3624984575,US -3624984576,3624986367,CA -3624986368,3624986399,US -3624986400,3624992767,CA +3624984576,3624992767,CA 3624992768,3625058303,US 3625058304,3625091071,CA 3625091072,3625140223,US @@ -78243,11 +78911,7 @@ 3625172992,3625287679,US 3625287680,3625295871,CA 3625295872,3625418751,US -3625418752,3625420031,CA -3625420032,3625420543,US -3625420544,3625422591,CA -3625422592,3625423103,US -3625423104,3625426943,CA +3625418752,3625426943,CA 3625426944,3625508863,US 3625508864,3625512959,CA 3625512960,3625574399,US @@ -78260,9 +78924,7 @@ 3625959424,3625961471,GB 3625961472,3625961983,US 3625961984,3625962239,GB -3625962240,3626091519,US -3626091520,3626092031,AR -3626092032,3626222653,US +3625962240,3626222653,US 3626222654,3626222654,CA 3626222655,3626270719,US 3626270720,3626287103,CA @@ -78288,23 +78950,19 @@ 3627065344,3627069439,CA 3627069440,3627299071,US 3627299072,3627299327,IN -3627299328,3627507711,US -3627507712,3627511807,CA +3627299328,3627507967,US +3627507968,3627511807,CA 3627511808,3627532287,US 3627532288,3627544575,CA 3627544576,3627659263,US 3627659264,3627663359,CA 3627663360,3627679743,US 3627679744,3627712511,CA -3627712512,3627752191,US -3627752192,3627752319,US -3627752320,3627760639,US +3627712512,3627760639,US 3627760640,3627760895,EU 3627760896,3627802623,US 3627802624,3627810815,CA -3627810816,3628165759,US -3628165760,3628165775,US -3628165776,3628179455,US +3627810816,3628179455,US 3628179456,3628187647,CA 3628187648,3628236799,US 3628236800,3628257279,CA @@ -78314,17 +78972,11 @@ 3628603392,3628604415,US 3628604416,3628605439,GT 3628605440,3628608511,IL -3628608512,3628609023,VE -3628609024,3628613631,US +3628608512,3628608735,US +3628608736,3628608767,VE +3628608768,3628613631,US 3628613632,3628614399,ID -3628614400,3628614911,CO -3628614912,3628615167,US -3628615168,3628615679,IL -3628615680,3628616191,US -3628616192,3628617215,PR -3628617216,3628617727,US -3628617728,3628618239,CO -3628618240,3628618751,US +3628614400,3628618751,US 3628618752,3628619775,HN 3628619776,3628622847,US 3628622848,3628623871,PR @@ -78337,18 +78989,11 @@ 3628629760,3628631807,VE 3628631808,3628634111,US 3628634112,3628636159,AR -3628636160,3628636671,VE -3628636672,3628637183,US -3628637184,3628637695,CO -3628637696,3628638207,US +3628636160,3628638207,US 3628638208,3628646399,CL -3628646400,3628646911,US -3628646912,3628647423,HN -3628647424,3628647679,US +3628646400,3628647679,US 3628647680,3628649727,CO -3628649728,3628654079,US -3628654080,3628654591,PA -3628654592,3628655359,US +3628649728,3628655359,US 3628655360,3628657407,CO 3628657408,3628679167,US 3628679168,3628683263,CA @@ -78359,83 +79004,85 @@ 3628848896,3629187071,US 3629187072,3629195263,CA 3629195264,3629199359,US -3629199360,3629201407,CA -3629201408,3629202431,US +3629199360,3629201439,CA +3629201440,3629201447,US +3629201448,3629201471,CA +3629201472,3629201475,US +3629201476,3629201495,CA +3629201496,3629201499,US +3629201500,3629201503,CA +3629201504,3629201507,US +3629201508,3629201919,CA +3629201920,3629202431,US 3629202432,3629203455,CA 3629203456,3629318143,US 3629318144,3629326335,CA -3629326336,3629534657,US -3629534658,3629534658,US -3629534659,3629539327,US +3629326336,3629539327,US 3629539328,3629547519,CA -3629547520,3630022639,US -3630022640,3630022643,US -3630022644,3630039039,US +3629547520,3630039039,US 3630039040,3630039551,CA 3630039552,3630040431,US 3630040432,3630040447,CA -3630040448,3630041343,US -3630041344,3630041599,CA -3630041600,3630046719,US -3630046720,3630047231,CA -3630047232,3630049279,US -3630049280,3630049535,CA -3630049536,3630050047,US +3630040448,3630049535,US +3630049536,3630049599,CA +3630049600,3630050047,US 3630050048,3630050303,CA 3630050304,3630054143,US 3630054144,3630054399,CA 3630054400,3630055935,US 3630055936,3630056959,CA -3630056960,3630059263,US +3630056960,3630057407,US +3630057408,3630057471,CA +3630057472,3630059263,US 3630059264,3630059519,CA -3630059520,3630059627,US -3630059628,3630059631,CA -3630059632,3630061567,US +3630059520,3630061567,US 3630061568,3630061823,CA -3630061824,3630066943,US -3630066944,3630068223,CA -3630068224,3630074111,US -3630074112,3630074255,CA -3630074256,3630074287,US -3630074288,3630074367,CA -3630074368,3630081151,US +3630061824,3630063935,US +3630063936,3630063951,CA +3630063952,3630066943,US +3630066944,3630067967,CA +3630067968,3630072255,US +3630072256,3630072287,CA +3630072288,3630075311,US +3630075312,3630075327,CA +3630075328,3630078975,US +3630078976,3630079039,CA +3630079040,3630079407,US +3630079408,3630079423,CA +3630079424,3630080575,US +3630080576,3630080639,CA +3630080640,3630081151,US 3630081152,3630081279,CA 3630081280,3630086375,US 3630086376,3630086383,CA -3630086384,3630089983,US +3630086384,3630087039,US +3630087040,3630087167,CA +3630087168,3630089983,US 3630089984,3630090239,CA 3630090240,3630098687,US 3630098688,3630100223,CA 3630100224,3630102783,US 3630102784,3630103807,CA -3630103808,3630104575,US -3630104576,3630108671,CA -3630108672,3630120959,US -3630120960,3630129151,CA -3630129152,3630141695,US -3630141696,3630141951,CA -3630141952,3630146047,US -3630146048,3630146559,CA -3630146560,3630147839,US +3630103808,3630108159,US +3630108160,3630108415,CA +3630108416,3630126335,US +3630126336,3630126591,CA +3630126592,3630147839,US 3630147840,3630148095,CA 3630148096,3630152959,US 3630152960,3630153215,CA -3630153216,3630157311,US -3630157312,3630158135,CA -3630158136,3630158151,US -3630158152,3630158335,CA +3630153216,3630158079,US +3630158080,3630158335,CA 3630158336,3630161407,US 3630161408,3630161663,CA -3630161664,3630162431,US -3630162432,3630162687,CA -3630162688,3630164991,US -3630164992,3630165247,CA -3630165248,3630168319,US +3630161664,3630167007,US +3630167008,3630167023,CA +3630167024,3630168319,US 3630168320,3630169087,CA 3630169088,3630309375,US 3630309376,3630317567,CA -3630317568,3630375423,US -3630375424,3630383103,CA +3630317568,3630374911,US +3630374912,3630383103,CA 3630383104,3630391295,US 3630391296,3630395391,CA 3630395392,3630718975,US @@ -78444,41 +79091,45 @@ 3630745856,3630746111,UG 3630746112,3630746367,US 3630746368,3630746623,UG -3630746624,3630746879,US -3630746880,3630747391,TZ -3630747392,3630780415,US +3630746624,3630780415,US 3630780416,3630784511,CA 3630784512,3630850047,US 3630850048,3630854143,CA -3630854144,3630866431,US -3630866432,3630870527,GT +3630854144,3630870271,US +3630870272,3630870527,GT 3630870528,3630956543,US 3630956544,3631005695,CA -3631005696,3631096951,US -3631096952,3631096952,US -3631096953,3631112191,US -3631112192,3631112703,VC -3631112704,3631116543,BB -3631116544,3631117055,GD -3631117056,3631117439,BB -3631117440,3631117567,GD +3631005696,3631112191,US +3631112192,3631112447,VC +3631112448,3631116543,BB +3631116544,3631117567,GD 3631117568,3631117823,BB 3631117824,3631118079,GD -3631118080,3631118335,BB -3631118336,3631119103,VC -3631119104,3631120127,BB -3631120128,3631120383,GD +3631118080,3631119615,BB +3631119616,3631120383,GD 3631120384,3631144959,US 3631144960,3631153151,CA 3631153152,3631284223,US 3631284224,3631316991,CA 3631316992,3631333375,US 3631333376,3631341567,CA -3631341568,3631644671,US +3631341568,3631415295,US +3631415296,3631415551,A2 +3631415552,3631415807,US +3631415808,3631416063,A2 +3631416064,3631417087,US +3631417088,3631417343,A2 +3631417344,3631418111,US +3631418112,3631418623,A2 +3631418624,3631418879,US +3631418880,3631419135,A2 +3631419136,3631644671,US 3631644672,3631652863,CA 3631652864,3631665151,US 3631665152,3631667199,CA -3631667200,3631668479,US +3631667200,3631667455,US +3631667456,3631668223,CA +3631668224,3631668479,US 3631668480,3631668991,CA 3631668992,3631669247,US 3631669248,3631677439,A2 @@ -78496,13 +79147,7 @@ 3632152576,3632168959,CA 3632168960,3632197631,US 3632197632,3632201727,CA -3632201728,3632219272,US -3632219273,3632219528,US -3632219529,3632220166,US -3632220167,3632220167,US -3632220168,3632222816,US -3632222817,3632223074,US -3632223075,3632332799,US +3632201728,3632332799,US 3632332800,3632357375,CA 3632357376,3632381951,US 3632381952,3632390143,CA @@ -78512,9 +79157,7 @@ 3632448256,3632448511,CA 3632448512,3632451583,US 3632451584,3632455679,CA -3632455680,3632482349,US -3632482350,3632482350,US -3632482351,3632857087,US +3632455680,3632857087,US 3632857088,3632861183,BS 3632861184,3632881663,US 3632881664,3632889855,CA @@ -78522,12 +79165,7 @@ 3632898048,3632902143,CA 3632902144,3632971775,US 3632971776,3632988159,CA -3632988160,3632994047,US -3632994048,3632994303,US -3632994304,3633029119,US -3633029120,3633029631,PY -3633029632,3633030143,NI -3633030144,3633031679,US +3632988160,3633031679,US 3633031680,3633031935,A2 3633031936,3633032191,PG 3633032192,3633036287,US @@ -78544,38 +79182,23 @@ 3633456384,3633456639,AU 3633456640,3633479679,US 3633479680,3633483775,CA -3633483776,3633545215,US -3633545216,3633545727,GA -3633545728,3633547263,US -3633547264,3633547775,GA +3633483776,3633547775,US 3633547776,3633548287,NG 3633548288,3633548799,US 3633548800,3633548927,A2 -3633548928,3633549055,US -3633549056,3633549567,A2 -3633549568,3633550847,US -3633550848,3633551359,GA -3633551360,3633552127,US +3633548928,3633552127,US 3633552128,3633552383,A2 3633552384,3633757439,US 3633757440,3633757695,IN -3633757696,3633782527,US -3633782528,3633782783,US -3633782784,3633815551,US +3633757696,3633815551,US 3633815552,3633819647,CA -3633819648,3633822207,US -3633822208,3633822335,US -3633822336,3633823487,US -3633823488,3633823743,US -3633823744,3633881087,US +3633819648,3633881087,US 3633881088,3633885183,CW 3633885184,3633889279,US 3633889280,3633893375,CA 3633893376,3633971199,US 3633971200,3634020351,CA -3634020352,3634037247,US -3634037248,3634037759,CA -3634037760,3634053119,US +3634020352,3634053119,US 3634053120,3634061311,CL 3634061312,3634094079,US 3634094080,3634098175,SE @@ -78591,9 +79214,7 @@ 3634913280,3634921471,CA 3634921472,3634925567,US 3634925568,3634929663,CA -3634929664,3634982399,US -3634982400,3634982655,US -3634982656,3635109887,US +3634929664,3635109887,US 3635109888,3635113983,CA 3635113984,3635142655,US 3635142656,3635146751,CA @@ -78613,28 +79234,19 @@ 3635425280,3635429375,CA 3635429376,3635466239,US 3635466240,3635470335,CA -3635470336,3635643391,US +3635470336,3635533535,US +3635533536,3635533551,IN +3635533552,3635643391,US 3635643392,3635644415,JP -3635644416,3635645439,US -3635645440,3635645951,HK -3635645952,3635646463,TL -3635646464,3635646975,US -3635646976,3635647487,GB -3635647488,3635650559,US +3635644416,3635650559,US 3635650560,3635652607,HK 3635652608,3635654655,US -3635654656,3635656191,HK -3635656192,3635656703,US +3635654656,3635655679,HK +3635655680,3635656703,US 3635656704,3635657727,JP -3635657728,3635659263,US -3635659264,3635660287,ID -3635660288,3635660799,US +3635657728,3635660799,US 3635660800,3635662847,HK -3635662848,3635670527,US -3635670528,3635671039,TL -3635671040,3635674623,US -3635674624,3635675135,HK -3635675136,3635871743,US +3635662848,3635871743,US 3635871744,3635879935,CA 3635879936,3635892223,US 3635892224,3635895785,CA @@ -78653,47 +79265,47 @@ 3636019200,3636027391,CA 3636027392,3636027647,US 3636027648,3636029439,SG -3636029440,3636064255,US +3636029440,3636032215,US +3636032216,3636032223,SG +3636032224,3636064255,US 3636064256,3636068351,CA -3636068352,3636151807,US +3636068352,3636150783,US +3636150784,3636150799,CA +3636150800,3636151807,US 3636151808,3636152063,CA -3636152064,3636157439,US +3636152064,3636152735,US +3636152736,3636152751,CA +3636152752,3636152783,US +3636152784,3636152791,CA +3636152792,3636152831,US +3636152832,3636152847,CA +3636152848,3636155135,US +3636155136,3636155391,CA +3636155392,3636157439,US 3636157440,3636157951,CA 3636157952,3636158063,US 3636158064,3636158071,CA 3636158072,3636158207,US 3636158208,3636158215,CA -3636158216,3636162047,US -3636162048,3636162559,CA -3636162560,3636166399,US -3636166400,3636166655,CA -3636166656,3636396031,US +3636158216,3636158549,US +3636158550,3636158550,CA +3636158551,3636159231,US +3636159232,3636159487,CA +3636159488,3636164327,US +3636164328,3636164335,CA +3636164336,3636396031,US 3636396032,3636461567,CA 3636461568,3636609023,US 3636609024,3636621311,CA 3636621312,3636625407,US 3636625408,3636626431,AR -3636626432,3636626943,BR -3636626944,3636627455,US +3636626432,3636627455,US 3636627456,3636628479,MX -3636628480,3636628991,PE -3636628992,3636822015,US +3636628480,3636822015,US 3636822016,3636854783,CA -3636854784,3636862975,US -3636862976,3636867071,CA -3636867072,3636887551,US +3636854784,3636887551,US 3636887552,3636895743,CA -3636895744,3636906143,US -3636906144,3636906175,BE -3636906176,3636910495,US -3636910496,3636910527,BE -3636910528,3636911423,US -3636911424,3636911455,BE -3636911456,3636912959,US -3636912960,3636912991,BE -3636912992,3636919711,US -3636919712,3636919743,BE -3636919744,3637075967,US +3636895744,3637075967,US 3637075968,3637080063,CA 3637080064,3637510143,US 3637510144,3637641215,CA @@ -78710,8 +79322,8 @@ 3638350080,3638370303,US 3638370304,3638386687,CA 3638386688,3638401087,US -3638401088,3638401279,CA -3638401280,3638509567,US +3638401088,3638401119,CA +3638401120,3638509567,US 3638509568,3638534143,CA 3638534144,3638697983,US 3638697984,3638706175,CA @@ -78722,9 +79334,7 @@ 3638707712,3638710015,A2 3638710016,3638874111,US 3638874112,3638878207,CA -3638878208,3638880511,US -3638880512,3638880767,CA -3638880768,3638984703,US +3638878208,3638984703,US 3638984704,3638985983,GT 3638985984,3638986239,HN 3638986240,3638992895,GT @@ -78739,16 +79349,11 @@ 3639283712,3639369727,US 3639369728,3639372031,A2 3639372032,3639372287,US -3639372288,3639375359,A2 -3639375360,3639375871,US -3639375872,3639376895,A2 -3639376896,3639377407,GU -3639377408,3639390207,US +3639372288,3639377919,A2 +3639377920,3639390207,US 3639390208,3639394303,ZA 3639394304,3639395839,US -3639395840,3639397887,A2 -3639397888,3639398399,US -3639398400,3639398911,A2 +3639395840,3639398911,A2 3639398912,3639399679,US 3639399680,3639399935,HN 3639399936,3639400447,A2 @@ -78791,9 +79396,9 @@ 3639664640,3639668735,CA 3639668736,3639672831,US 3639672832,3639681023,CL -3639681024,3639685055,US -3639685056,3639685063,SA -3639685064,3639692032,US +3639681024,3639684991,US +3639684992,3639685119,SA +3639685120,3639692032,US 3639692033,3639692288,GB 3639692289,3639730175,US 3639730176,3639734271,CA @@ -78811,17 +79416,17 @@ 3640312832,3640313087,TO 3640313088,3640316927,US 3640316928,3640317183,MX -3640317184,3640318207,US -3640318208,3640318719,NC -3640318720,3640348671,US -3640348672,3640350719,MX -3640350720,3640360959,US +3640317184,3640346879,US +3640346880,3640347134,MX +3640347135,3640360959,US 3640360960,3640369151,CA 3640369152,3640410111,US 3640410112,3640418303,CA 3640418304,3640430591,US 3640430592,3640432639,A2 -3640432640,3640434943,US +3640432640,3640433407,US +3640433408,3640433663,DE +3640433664,3640434943,US 3640436480,3640436735,GH 3640438784,3640442879,A2 3640442880,3640446975,US @@ -78834,35 +79439,12 @@ 3640651776,3640655871,US 3640655872,3641020121,DE 3641020122,3641020122,GB -3641020123,3641029631,DE -3641029632,3641029695,US -3641029696,3641029711,DE -3641029712,3641029759,US -3641029760,3641029887,AT -3641029888,3641061119,DE -3641061120,3641061199,US -3641061200,3641061207,DE -3641061208,3641061375,US -3641061376,3641078015,DE -3641078016,3641078079,US -3641078080,3641078143,DE -3641078144,3641078327,US -3641078328,3641078335,DE -3641078336,3641078351,US -3641078352,3641078359,DE -3641078360,3641078367,US -3641078368,3641078375,DE -3641078376,3641078495,US -3641078496,3641078503,DE -3641078504,3641078511,US -3641078512,3641078519,DE -3641078520,3641078527,US -3641078528,3641115271,DE -3641115272,3641115279,US -3641115280,3641132351,DE -3641132352,3641132415,IT -3641132416,3641150975,DE -3641150976,3641151232,CN +3641020123,3641061225,DE +3641061226,3641061226,US +3641061227,3641078385,DE +3641078386,3641078387,US +3641078388,3641151231,DE +3641151232,3641151232,CN 3641151233,3641180159,DE 3641180160,3641188351,GB 3641188352,3641192447,TJ @@ -78895,7 +79477,11 @@ 3641331712,3641335807,ES 3641335808,3641343999,SE 3641344000,3641352191,GB -3641352192,3641360383,A2 +3641352192,3641356535,A2 +3641356536,3641356543,CM +3641356544,3641357983,A2 +3641357984,3641358015,SL +3641358016,3641360383,A2 3641360384,3641368575,RO 3641368576,3641372671,GB 3641372672,3641376767,BG @@ -78923,11 +79509,7 @@ 3641475072,3641479167,IT 3641479168,3641483263,GB 3641483264,3641491455,IT -3641491456,3641493503,UA -3641493504,3641494015,RU -3641494016,3641495551,UA -3641495552,3641496063,RU -3641496064,3641499647,UA +3641491456,3641499647,UA 3641499648,3641503743,SA 3641503744,3641507839,RU 3641507840,3641516031,NO @@ -78966,8 +79548,9 @@ 3641659392,3641663487,FR 3641663488,3641667583,MT 3641667584,3641669119,GB -3641669120,3641670655,ZW -3641670656,3641671167,GB +3641669120,3641670271,ZW +3641670272,3641670911,GB +3641670912,3641671167,LS 3641671168,3641671423,ZW 3641671424,3641671679,GB 3641671680,3641679871,RU @@ -78998,8 +79581,8 @@ 3641769984,3641774079,NO 3641774080,3641778175,DE 3641778176,3641782271,PL -3641782272,3641782783,BG -3641782784,3641784575,GB +3641782272,3641784319,BG +3641784320,3641784575,GB 3641784576,3641786367,BG 3641786368,3641790463,SE 3641790464,3641794559,LT @@ -79034,9 +79617,7 @@ 3641917440,3641925631,GR 3641925632,3641933823,RU 3641933824,3641937919,GB -3641937920,3641940415,IT -3641940416,3641940479,US -3641940480,3641941759,IT +3641937920,3641941759,IT 3641941760,3641942015,EU 3641942016,3641950207,DE 3641950208,3641954303,FR @@ -79059,7 +79640,9 @@ 3642015744,3642019839,CH 3642019840,3642023935,SY 3642023936,3642028031,EG -3642028032,3642032127,A2 +3642028032,3642028800,A2 +3642028801,3642028863,SO +3642028864,3642032127,A2 3642032128,3642036223,PS 3642036224,3642040319,HU 3642040320,3642048511,BY @@ -79069,9 +79652,7 @@ 3642064896,3642068991,SE 3642068992,3642073087,AL 3642073088,3642077183,LV -3642077184,3642077439,NL -3642077440,3642077695,BE -3642077696,3642085375,NL +3642077184,3642085375,NL 3642085376,3642089471,RU 3642089472,3642093567,SE 3642093568,3642097663,NL @@ -79098,9 +79679,7 @@ 3642187776,3642191871,DK 3642191872,3642195967,BY 3642195968,3642204159,RU -3642204160,3642206751,GB -3642206752,3642206975,IM -3642206976,3642208255,GB +3642204160,3642208255,GB 3642208256,3642212351,RU 3642212352,3642216447,BA 3642216448,3642220543,HU @@ -79158,9 +79737,7 @@ 3642429440,3642433535,GB 3642433536,3642435583,CY 3642435584,3642436607,RU -3642436608,3642437119,CY -3642437120,3642437631,GB -3642437632,3642441727,CY +3642436608,3642441727,CY 3642441728,3642449919,IT 3642449920,3642454015,CH 3642454016,3642458111,IT @@ -79184,15 +79761,19 @@ 3642519552,3642523647,IT 3642523648,3642527743,GB 3642527744,3642531839,PL -3642531840,3642535935,DK +3642531840,3642532607,DK +3642532608,3642532863,US +3642532864,3642535935,DK 3642535936,3642540031,IS 3642540032,3642544127,SE 3642544128,3642552319,RU -3642552320,3642556415,UA +3642552320,3642554198,UA +3642554199,3642554199,RU +3642554200,3642556415,UA 3642556416,3642560511,CZ -3642560512,3642561279,US -3642561280,3642561535,KG -3642561536,3642564607,US +3642560512,3642561535,KG +3642561536,3642561791,US +3642561792,3642564607,KG 3642564608,3642568703,DE 3642568704,3642572799,RU 3642572800,3642576895,IT @@ -79264,7 +79845,11 @@ 3644911616,3644915711,BE 3644915712,3644919807,RU 3644919808,3644923903,DE -3644923904,3644927999,IL +3644923904,3644924927,IL +3644924928,3644925183,US +3644925184,3644926463,IL +3644926464,3644926719,US +3644926720,3644927999,IL 3644928000,3644932095,GI 3644932096,3644936191,IT 3644936192,3644940287,RU @@ -79276,9 +79861,7 @@ 3644968960,3644973055,RU 3644973056,3644977151,NO 3644977152,3644981247,UA -3644981248,3644983807,BE -3644983808,3644984319,NL -3644984320,3644985343,BE +3644981248,3644985343,BE 3644985344,3644989439,RU 3644989440,3644997631,DE 3644997632,3645005823,RU @@ -79314,12 +79897,19 @@ 3645136896,3645145087,NO 3645145088,3645149183,GB 3645149184,3645161471,DE -3645161472,3645165567,AT +3645161472,3645163519,AT +3645163520,3645164031,GB +3645164032,3645164287,US +3645164288,3645165567,AT 3645165568,3645169663,TR 3645169664,3645173759,CH 3645173760,3645177855,GB 3645177856,3645181951,GR -3645181952,3645186047,FR +3645181952,3645183375,FR +3645183376,3645183383,SA +3645183384,3645185759,FR +3645185760,3645185775,GB +3645185776,3645186047,FR 3645186048,3645190143,GB 3645190144,3645194239,FI 3645194240,3645202431,DE @@ -79381,9 +79971,7 @@ 3645423616,3645431807,DE 3645431808,3645435903,BE 3645435904,3645439999,GB -3645440000,3645441023,SE -3645441024,3645441279,GB -3645441280,3645444095,SE +3645440000,3645444095,SE 3645444096,3645448191,SK 3645448192,3645454335,DE 3645454336,3645456383,RU @@ -79436,17 +80024,11 @@ 3645657088,3645661183,SE 3645661184,3645665279,DE 3645665280,3645669375,PL -3645669376,3645669887,PT -3645669888,3645670399,ES -3645670400,3645670911,FR +3645669376,3645670911,PT 3645670912,3645673471,ES 3645673472,3645673535,PT 3645673536,3645674239,ES -3645674240,3645674495,PT -3645674496,3645675007,ES -3645675008,3645676031,PT -3645676032,3645676543,ES -3645676544,3645676799,PT +3645674240,3645676799,PT 3645676800,3645677567,ES 3645677568,3645681663,AT 3645681664,3645685759,RU @@ -79467,9 +80049,15 @@ 3645751296,3645755391,FI 3645755392,3645759487,UA 3645759488,3645763583,FR -3645763584,3645767428,DE +3645763584,3645764014,DE +3645764015,3645764015,GB +3645764016,3645765227,DE +3645765228,3645765231,GB +3645765232,3645767428,DE 3645767429,3645767429,US -3645767430,3645767679,DE +3645767430,3645767443,DE +3645767444,3645767444,US +3645767445,3645767679,DE 3645767680,3645771775,IE 3645771776,3645779967,SE 3645779968,3645784063,PS @@ -79503,9 +80091,7 @@ 3647209472,3647602687,NL 3647602688,3647733759,RU 3647733760,3647864831,FR -3647864832,3647875583,DE -3647875584,3647875839,CH -3647875840,3647890687,DE +3647864832,3647890687,DE 3647890688,3647890943,EU 3647890944,3647916799,DE 3647916800,3647917055,SE @@ -79529,59 +80115,48 @@ 3647964608,3647964615,ES 3647964616,3647964623,DE 3647964624,3647964639,ES -3647964640,3647965183,DE -3647965184,3647965439,ES -3647965440,3647966207,DE +3647964640,3647965695,DE +3647965696,3647965951,CH +3647965952,3647966207,DE 3647966208,3647967231,GB 3647967232,3647968255,BE 3647968256,3647969279,FR -3647969280,3647969791,IT -3647969792,3647970047,DE +3647969280,3647970047,DE 3647970048,3647970303,BE 3647970304,3647971327,DE 3647971328,3647972351,GB -3647972352,3647973631,IT -3647973632,3647973711,DE +3647972352,3647973375,IT +3647973376,3647973615,DE +3647973616,3647973623,IT +3647973624,3647973711,DE 3647973712,3647973719,IT -3647973720,3647974399,DE +3647973720,3647974055,DE +3647974056,3647974063,IT +3647974064,3647974399,DE 3647974400,3647976447,ES -3647976448,3647976703,BE -3647976704,3647977471,DE +3647976448,3647977471,DE 3647977472,3647978495,GB -3647978496,3647979007,NL -3647979008,3647979775,DE -3647979776,3647980543,FR +3647978496,3647980223,DE +3647980224,3647980239,FR +3647980240,3647980383,DE +3647980384,3647980415,FR +3647980416,3647980543,DE 3647980544,3647981567,GB 3647981568,3647982591,BE 3647982592,3647983615,IT 3647983616,3647984031,DE 3647984032,3647984047,NL -3647984048,3647984127,DE -3647984128,3647984383,NL -3647984384,3647984639,DE -3647984640,3647985151,DK -3647985152,3647985663,BE +3647984048,3647985663,DE 3647985664,3647986687,ES -3647986688,3647986943,DE -3647986944,3647987199,ES -3647987200,3647987455,DE -3647987456,3647987711,ES +3647986688,3647987647,DE +3647987648,3647987655,ES +3647987656,3647987695,DE +3647987696,3647987711,ES 3647987712,3647988735,IT 3647988736,3647989759,BE -3647989760,3647990783,DE -3647990784,3647991807,ES -3647991808,3647992831,DE -3647992832,3647993343,BE -3647993344,3647993855,DE -3647993856,3647994367,BE -3647994368,3647994879,NR -3647994880,3647995903,BE +3647989760,3647995903,DE 3647995904,3648004095,RU -3648004096,3648005119,GB -3648005120,3648006143,RU -3648006144,3648006655,GB -3648006656,3648007167,RU -3648007168,3648008191,GB +3648004096,3648008191,GB 3648008192,3648016383,FR 3648016384,3648020479,GB 3648020480,3648024575,IT @@ -79606,20 +80181,20 @@ 3648078336,3648078591,BF 3648078592,3648079103,BE 3648079104,3648079359,CG -3648079360,3648079615,CD -3648079616,3648080511,BE +3648079360,3648080511,BE 3648080512,3648080543,BF 3648080544,3648080639,BE 3648080640,3648080895,GA 3648080896,3648081151,ZM -3648081152,3648081407,BE -3648081408,3648081919,MW -3648081920,3648082239,BE +3648081152,3648082239,BE 3648082240,3648082311,NE -3648082312,3648084223,BE +3648082312,3648082431,BE +3648082432,3648082479,ZM +3648082480,3648084223,BE 3648084224,3648084479,CD 3648084480,3648084991,BE -3648084992,3648086015,GB +3648084992,3648085759,GB +3648085760,3648086015,ZM 3648086016,3648090111,AT 3648090112,3648094207,RU 3648094208,3648102399,PL @@ -79632,14 +80207,22 @@ 3648126976,3648139263,RU 3648139264,3648143359,GB 3648143360,3648147455,DE -3648147456,3648149503,SE -3648149504,3648150015,GB -3648150016,3648151551,SE +3648147456,3648151551,SE 3648151552,3648155647,NL 3648155648,3648159743,CH 3648159744,3648163839,ES 3648163840,3648167935,RU -3648167936,3648172031,IE +3648167936,3648168959,GB +3648168960,3648168991,IE +3648168992,3648169007,GB +3648169008,3648169015,IE +3648169016,3648170239,GB +3648170240,3648170495,IE +3648170496,3648171007,GB +3648171008,3648171263,IE +3648171264,3648171679,GB +3648171680,3648171695,IE +3648171696,3648172031,GB 3648172032,3648176127,RU 3648176128,3648178175,DE 3648178176,3648180223,FR @@ -79697,9 +80280,7 @@ 3648413696,3648417791,SK 3648417792,3648425983,GB 3648425984,3648430079,IT -3648430080,3648432639,NL -3648432640,3648433151,DE -3648433152,3648434175,NL +3648430080,3648434175,NL 3648434176,3648438271,RU 3648438272,3648442367,CH 3648442368,3648446463,SE @@ -79719,8 +80300,8 @@ 3648499712,3648503807,FR 3648503808,3648511999,DE 3648512000,3648516095,NL -3648516096,3648518143,RS -3648518144,3648520191,MK +3648516096,3648519167,RS +3648519168,3648520191,MK 3648520192,3648782335,NL 3648782336,3649044479,ES 3649044480,3649110015,FR @@ -79729,21 +80310,21 @@ 3649241088,3649306623,TR 3649306624,3649372159,IL 3649372160,3649437695,IT -3649437696,3649568767,GB +3649437696,3649512191,GB +3649512192,3649512447,FR +3649512448,3649568767,GB 3649568768,3649634303,BE 3649634304,3649765375,GB 3649765376,3649830911,EG 3649830912,3649831167,NL 3649831168,3649831423,EU 3649831424,3649835007,NL -3649835008,3649838079,ES -3649838080,3649839103,NL +3649835008,3649837055,ES +3649837056,3649839103,NL 3649839104,3649840127,GB -3649840128,3649840639,NL -3649840640,3649843199,GB -3649843200,3649845247,NL -3649845248,3649845759,GB -3649845760,3649847817,NL +3649840128,3649841151,NL +3649841152,3649843199,GB +3649843200,3649847817,NL 3649847818,3649855487,DE 3649855488,3649856511,GB 3649856512,3649857535,US @@ -79783,9 +80364,17 @@ 3650207744,3650211839,SK 3650211840,3650215935,LV 3650220032,3650224127,SA -3650224128,3650224895,AT +3650224128,3650224383,TH +3650224384,3650224639,AT +3650224640,3650224895,UA 3650224896,3650225663,US -3650225664,3650232319,AT +3650225664,3650226175,TR +3650226176,3650226431,RS +3650226432,3650226687,AT +3650226688,3650227455,IN +3650227456,3650227711,PL +3650227712,3650227967,PT +3650227968,3650232319,AT 3650232320,3650236415,RU 3650236416,3650240511,CH 3650240512,3650244607,EE @@ -79829,13 +80418,9 @@ 3650351992,3650351999,HU 3650352000,3650352007,GB 3650352008,3650352015,IE -3650352016,3650352263,GB -3650352264,3650352271,DE -3650352272,3650352280,GB -3650352281,3650352281,IT -3650352282,3650352320,GB -3650352321,3650352321,PL -3650352322,3650355199,GB +3650352016,3650352264,GB +3650352265,3650352265,DE +3650352266,3650355199,GB 3650355200,3650359295,CH 3650359296,3650363391,NL 3650363392,3650367487,GB @@ -79877,17 +80462,10 @@ 3650510848,3650519039,GB 3650519040,3650523135,HU 3650523136,3650527231,DE -3650527232,3650534911,SE -3650534912,3650535423,NL +3650527232,3650535423,SE 3650535424,3650539519,RU 3650539520,3650543615,ES -3650543616,3650548109,CH -3650548110,3650548110,CH -3650548111,3650548827,CH -3650548828,3650548828,CH -3650548829,3650548884,CH -3650548885,3650548885,CH -3650548886,3650551807,CH +3650543616,3650551807,CH 3650551808,3650555903,FR 3650555904,3650559999,RU 3650560000,3650564095,HK @@ -79902,24 +80480,18 @@ 3650600960,3650605055,SE 3650605056,3650609180,DE 3650609181,3650609181,LB -3650609182,3650610175,DE -3650610176,3650610687,KZ -3650610688,3650611711,DE +3650609182,3650611711,DE 3650611712,3650611967,LB -3650611968,3650612735,KZ -3650612736,3650617343,DE +3650611968,3650617343,DE 3650617344,3650682879,FI 3650682880,3650748415,PL 3650748416,3650879487,GB 3650879488,3650912255,RO 3650912256,3650915327,GB -3650915328,3650915343,BE -3650915344,3650915839,FR -3650915840,3650916095,GB -3650916096,3650916351,FR -3650916352,3650922495,GB -3650922496,3650922751,US -3650922752,3650926591,GB +3650915328,3650915583,FR +3650915584,3650926079,GB +3650926080,3650926335,BE +3650926336,3650926591,GB 3650926592,3650929663,ES 3650929664,3650929847,GB 3650929848,3650929855,FR @@ -79928,37 +80500,67 @@ 3650930432,3650930687,DE 3650930688,3650939599,GB 3650939600,3650939607,FR -3650939608,3650944511,GB -3650944512,3650945023,FR +3650939608,3650939615,TR +3650939616,3650944579,GB +3650944580,3650944580,FR +3650944581,3650945023,GB 3650945024,3651010559,DK -3651010560,3651076095,GB -3651076096,3651079423,DE -3651079424,3651079807,GB -3651079808,3651081215,DE -3651081216,3651081727,GB -3651081728,3651084031,DE -3651084032,3651084543,FR -3651084544,3651108863,DE +3651010560,3651053055,GB +3651053056,3651053311,IE +3651053312,3651076095,GB +3651076096,3651108863,DE 3651108864,3651141631,EE -3651141632,3651148287,DE -3651148288,3651148799,ES -3651148800,3651200511,DE -3651200512,3651201023,PL -3651201024,3651205631,DE -3651205632,3651206143,ES -3651206144,3651206655,DE -3651206656,3651207167,ES -3651207168,3651207679,EU -3651207680,3651208703,GB -3651208704,3651209727,EU -3651209728,3651210751,GB -3651210752,3651219455,EU +3651141632,3651207167,DE +3651207168,3651207199,GB +3651207200,3651207223,EU +3651207224,3651207295,GB +3651207296,3651207423,EU +3651207424,3651207615,GB +3651207616,3651207647,EU +3651207648,3651208959,GB +3651208960,3651209215,EU +3651209216,3651209231,US +3651209232,3651209239,GB +3651209240,3651209243,DE +3651209244,3651209471,EU +3651209472,3651210751,GB +3651210752,3651211263,EU +3651211264,3651211775,IR +3651211776,3651213823,EU +3651213824,3651214207,US +3651214208,3651215359,EU +3651215360,3651215395,GB +3651215396,3651215615,EU +3651215616,3651215871,GB +3651215872,3651217407,EU +3651217408,3651217535,GI +3651217536,3651219455,EU 3651219456,3651219967,US -3651219968,3651221503,EU +3651219968,3651220383,EU +3651220384,3651220415,GB +3651220416,3651220431,EU +3651220432,3651220479,GB +3651220480,3651221503,EU 3651221504,3651221695,GB -3651221696,3651230719,EU +3651221696,3651223551,EU +3651223552,3651223567,GB +3651223568,3651223583,EU +3651223584,3651223607,GB +3651223608,3651223647,EU +3651223648,3651223663,ES +3651223664,3651227135,EU +3651227136,3651227391,GB +3651227392,3651230719,EU 3651230720,3651231743,MU -3651231744,3651239935,EU +3651231744,3651232255,EU +3651232256,3651232287,GB +3651232288,3651232319,EU +3651232320,3651232383,GB +3651232384,3651232447,EU +3651232448,3651232511,GB +3651232512,3651237375,EU +3651237376,3651237631,SC +3651237632,3651239935,EU 3651239936,3651272703,GB 3651272704,3651338239,CH 3651338240,3651350783,GB @@ -80011,7 +80613,9 @@ 3651874816,3651878911,PL 3651878912,3651883007,IT 3651883008,3651884287,CD -3651884288,3651887103,BE +3651884288,3651885839,BE +3651885840,3651885843,CD +3651885844,3651887103,BE 3651887104,3651891199,GB 3651891200,3651895295,DE 3651895296,3651899391,GB @@ -80021,9 +80625,7 @@ 3651908608,3651908863,US 3651908864,3651909046,DE 3651909047,3651909047,IQ -3651909048,3651909631,DE -3651909632,3651910143,IQ -3651910144,3651911679,DE +3651909048,3651911679,DE 3651911680,3651915775,NO 3651915776,3651919871,IS 3651919872,3651921919,NL @@ -80037,16 +80639,16 @@ 3651936512,3651936767,EU 3651936768,3651937023,DE 3651937024,3651938047,FR -3651938048,3651939071,DE -3651939072,3651941119,FR -3651941120,3651942911,DE -3651942912,3651944447,FR +3651938048,3651940351,DE +3651940352,3651941119,FR +3651941120,3651943423,DE +3651943424,3651944447,FR 3651944448,3651948543,ES 3651948544,3651952639,FO 3651952640,3651953663,IR 3651953664,3651954687,AE -3651954688,3651958271,IR -3651958272,3651960831,AE +3651954688,3651957759,IR +3651957760,3651960831,AE 3651960832,3651964927,GB 3651964928,3651969023,SK 3651969024,3651977215,DE @@ -80064,9 +80666,7 @@ 3652033792,3652034559,DE 3652034560,3652046847,PL 3652046848,3652050943,IE -3652050944,3652053887,LI -3652053888,3652054015,CH -3652054016,3652055039,LI +3652050944,3652055039,LI 3652055040,3652059135,NO 3652059136,3652063231,RU 3652063232,3652067327,IR @@ -80074,10 +80674,7 @@ 3652071424,3652075519,BG 3652075520,3652083711,SE 3652083712,3652087807,RU -3652087808,3652094463,IT -3652094464,3652094975,US -3652094976,3652095743,IT -3652095744,3652095999,US +3652087808,3652095999,IT 3652096000,3652100095,BG 3652100096,3652108287,RU 3652108288,3652116479,FR @@ -80093,14 +80690,11 @@ 3652157440,3652165631,RU 3652165632,3652169215,FR 3652169216,3652169727,GF -3652169728,3652170495,FR -3652170496,3652170751,MQ -3652170752,3652171263,FR -3652171264,3652171775,MQ -3652171776,3652172799,RE -3652172800,3652173055,FR -3652173056,3652173311,RE -3652173312,3652173823,FR +3652169728,3652169983,FR +3652169984,3652170239,MQ +3652170240,3652170751,FR +3652170752,3652171007,MQ +3652171008,3652173823,FR 3652173824,3652177919,AT 3652177920,3652182015,CY 3652182016,3652190207,DE @@ -80114,22 +80708,19 @@ 3653386240,3653390335,DE 3653390336,3653394431,FR 3653394432,3653402623,NL -3653402624,3653403135,GB -3653403136,3653403647,CD -3653403648,3653407487,GB +3653402624,3653407487,A2 3653407488,3653407743,US -3653407744,3653407999,GB +3653407744,3653407999,A2 3653408000,3653408255,US -3653408256,3653408767,GB -3653408768,3653409023,CD -3653409024,3653410060,GB +3653408256,3653409215,A2 +3653409216,3653409223,SS +3653409224,3653409239,A2 +3653409240,3653409247,SS +3653409248,3653410047,A2 +3653410048,3653410060,US 3653410061,3653410061,YT -3653410062,3653410095,GB -3653410096,3653410111,US -3653410112,3653410199,GB -3653410200,3653410303,US -3653410304,3653410559,GB -3653410560,3653410815,IL +3653410062,3653410303,US +3653410304,3653410815,A2 3653410816,3653414911,CZ 3653414912,3653419007,IT 3653419008,3653423103,IL @@ -80138,15 +80729,14 @@ 3653431296,3653435391,RU 3653435392,3653439487,DE 3653439488,3653443583,FR -3653443584,3653447167,DE -3653447168,3653447679,NL +3653443584,3653447679,DE 3653447680,3653451775,LV 3653451776,3653464063,RU 3653464064,3653468159,NL 3653468160,3653472255,GR -3653472256,3653473023,NL -3653473024,3653473279,US -3653473280,3653476351,NL +3653472256,3653472511,NL +3653472512,3653473535,US +3653473536,3653476351,NL 3653476352,3653480447,CZ 3653480448,3653484543,DK 3653484544,3653488639,TR @@ -80189,7 +80779,9 @@ 3653656576,3653660671,GB 3653660672,3653664767,CZ 3653664768,3653665791,NL -3653665792,3653668863,DE +3653665792,3653666815,DE +3653666816,3653667839,NL +3653667840,3653668863,DE 3653668864,3653672959,SE 3653672960,3653681151,RU 3653681152,3653685247,ES @@ -80212,26 +80804,23 @@ 3654025216,3654287359,GB 3654287360,3654608404,SE 3654608405,3654608405,NO -3654608406,3654608895,SE +3654608406,3654608831,SE +3654608832,3654608895,RU 3654608896,3654609919,NO -3654609920,3654613503,SE -3654613504,3654614015,NO -3654614016,3654811647,SE +3654609920,3654614143,SE +3654614144,3654614271,FI +3654614272,3654811647,SE 3654811648,3654942719,ES 3654942720,3655073791,IR 3655073792,3655335935,IT -3655335936,3656635647,DE -3656635648,3656635903,GB -3656635904,3657433087,DE +3655335936,3657433087,DE 3657433088,3659530239,CN 3659530240,3659595775,TW 3659595776,3659628543,ID 3659628544,3659661311,JP 3659661312,3659792383,TW 3659792384,3660054527,KR -3660054528,3660443903,JP -3660443904,3660444159,NC -3660444160,3660578815,JP +3660054528,3660578815,JP 3660578816,3661103103,KR 3661103104,3663986687,CN 3663986688,3663987711,AU @@ -80313,7 +80902,9 @@ 3671326720,3671392255,SG 3671392256,3671411711,HK 3671411712,3671411967,AP -3671411968,3671457791,HK +3671411968,3671412991,HK +3671412992,3671413247,AU +3671413248,3671457791,HK 3671457792,3671588863,AU 3671588864,3672637439,JP 3672637440,3673161727,KR @@ -80360,7 +80951,11 @@ 3690463232,3690987519,KR 3690987520,3695181823,JP 3695181824,3697278975,KR -3697278976,3697606655,JP +3697278976,3697574399,JP +3697574400,3697574687,GB +3697574688,3697574903,JP +3697574904,3697574911,GB +3697574912,3697606655,JP 3697606656,3697655807,AU 3697655808,3697672191,CN 3697672192,3697737727,JP @@ -80385,7 +80980,10 @@ 3701293056,3701301247,AU 3701301248,3701305343,ID 3701305344,3701309439,TW -3701309440,3701473279,JP +3701309440,3701365759,JP +3701365760,3701366015,US +3701366016,3701374975,JP +3701407744,3701473279,JP 3701473280,3704619007,CN 3704619008,3705667583,JP 3705667584,3705929727,IN @@ -80408,8 +81006,7 @@ 3707109376,3707174911,HK 3707174912,3707207679,JP 3707208704,3707209727,WS -3707209728,3707211775,CN -3707211776,3707215871,SG +3707209728,3707215871,CN 3707215872,3707217919,BD 3707217920,3707219967,ID 3707219968,3707222015,AU @@ -80426,7 +81023,9 @@ 3715629056,3715653631,TW 3715653632,3715655679,BD 3715655680,3715657727,IN -3715657728,3715661823,SG +3715657728,3715658495,SG +3715658496,3715658751,US +3715658752,3715661823,SG 3715661824,3715672063,AU 3715672064,3715674111,JP 3715674112,3715678207,HK @@ -80533,8 +81132,7 @@ 3743120384,3743121407,JP 3743121408,3743125503,MY 3743125504,3743129599,ID -3743129600,3743129855,MY -3743129856,3743130623,HK +3743129600,3743130623,HK 3743130624,3743133695,SG 3743133696,3743134719,AU 3743134720,3743135743,JP @@ -80600,13 +81198,9 @@ 3755988992,3755990015,HK 3755990016,3755991039,SG 3755991040,3755999231,JP -3755999232,3756000255,IN -3756000256,3756000767,LK -3756000768,3756002815,IN +3755999232,3756002815,IN 3756002816,3756003071,LK -3756003072,3756003327,IN -3756003328,3756007423,LK -3756007424,3757047807,IN +3756003072,3757047807,IN 3757047808,3757834239,CN 3757834240,3757867007,AU 3757867008,3757899775,CN diff --git a/src/config/geoip-manual b/src/config/geoip-manual index ff9be5691c..d51a12a1ce 100644 --- a/src/config/geoip-manual +++ b/src/config/geoip-manual @@ -3,27 +3,6 @@ # directory to process this file when producing a new geoip file. See # README.geoip in the same directory for details. -# GB, because previous MaxMind entry 31.6.16.0-31.6.25.255 is GB, and RIR -# delegation files say entire range 31.6.0.0-31.6.63.255 is GB. -# -KL 2013-03-07 -"31.6.26.0","31.6.27.255","520493568","520494079","GB","United Kingdom" - -# NL, because previous MaxMind entry 31.171.128.0-31.171.133.255 is NL, -# and RIR delegation files say 31.171.128.0-31.171.135.255 is NL. -# -KL 2012-11-27 -"31.171.134.0","31.171.135.255","531334656","531335167","NL","Netherlands" - -# EU, because next MaxMind entry 37.139.64.1-37.139.64.9 is EU, because -# RIR delegation files say 37.139.64.0-37.139.71.255 is EU, and because it -# just makes more sense for the next entry to start at .0 and not .1. -# -KL 2012-11-27 -"37.139.64.0","37.139.64.0","629882880","629882880","EU","Europe" - -# US, because next MaxMind entry 38.99.145.0-38.99.149.255 is US and -# RIR delegation files say entire range 38.0.0.0-38.255.255.255 is US. -# -KL 2013-05-13 -"38.99.144.0","38.99.144.255","644059136","644059391","US","United States" - # GB, because RIR delegation files say exactly this range # 46.16.32.0-46.16.39.255 is GB, even though neither previous nor next # MaxMind range is GB. Both previous and next MaxMind ranges match RIR @@ -40,21 +19,6 @@ # -KL 2012-11-27 "46.166.128.0","46.166.128.255","782663680","782663935","GB","United Kingdom" -# GB, because previous MaxMind entry 46.166.129.0-46.166.134.255 is GB, -# and RIR delegation files say entire range 46.166.128.0-46.166.191.255 is -# GB. -KL 2013-03-07 -"46.166.135.0","46.166.139.255","782665472","782666751","GB","United Kingdom" - -# Removing, because RIR delegation files don't even have an entry for this -# single-address range, and there's no previous or next range in MaxMind. -# -KL 2013-03-07 -"64.185.237.110","64.185.237.110","1085926766","1085926766","","" - -# US, because next MaxMind entry 67.43.145.0-67.43.155.255 is US, and RIR -# delegation files say 67.43.144.0-67.43.159.255 is US. -# -KL 2012-11-27 -"67.43.144.0","67.43.144.255","1126928384","1126928639","US","United States" - # US, because previous MaxMind entry 70.159.21.51-70.232.244.255 is US, # because next MaxMind entry 70.232.245.58-70.232.245.59 is A2 ("Satellite # Provider") which is a country information about as useless as A1, and @@ -69,40 +33,11 @@ # US. -KL 2012-11-27 "70.232.245.60","70.232.245.255","1189672252","1189672447","US","United States" -# SE, because previous MaxMind entry 80.67.11.200-80.67.13.255 is SE, and -# RIR delegation files say entire range 80.67.0.0-80.67.15.255 is SE. -# -KL 2013-03-07 -"80.67.14.0","80.67.15.255","1346571776","1346572287","SE","Sweden" - -# NL, because previous MaxMind entry 81.171.56.0-81.171.80.255 is NL, and -# RIR delegation files say entire range 81.171.64.0-81.171.127.255 is NL. -# -KL 2013-03-07 -"81.171.81.0","81.171.81.127","1370181888","1370182015","NL","Netherlands" - -# GB, because RIPE NCC says 85.237.192.0-85.237.223.255 is GB. -"85.237.222.0","85.237.222.255","1441652224","1441652479","GB","United Kingdom" - -# BE, because next MaxMind entry 86.39.147.0-86.39.148.31 is BE, and RIR -# delegation files say entire range 86.39.128.0-86.39.255.255 is BE. -# -KL 2013-04-08 -"86.39.146.0","86.39.146.255","1445433856","1445434111","BE","Belgium" - # GB, despite neither previous (GE) nor next (LV) MaxMind entry being GB, # but because RIR delegation files agree with both previous and next # MaxMind entry and say GB for 91.228.0.0-91.228.3.255. -KL 2012-11-27 "91.228.0.0","91.228.3.255","1541668864","1541669887","GB","United Kingdom" -# GB, because next MaxMind entry 91.232.125.0-91.232.125.255 is GB, and -# RIR delegation files say 91.232.124.0-91.232.125.255 is GB. -# -KL 2012-11-27 -"91.232.124.0","91.232.124.255","1541962752","1541963007","GB","United Kingdom" - -# GB, despite neither previous (RU) nor next (PL) MaxMind entry being GB, -# but because RIR delegation files agree with both previous and next -# MaxMind entry and say GB for 91.238.214.0-91.238.215.255. -# -KL 2012-11-27 -"91.238.214.0","91.238.215.255","1542379008","1542379519","GB","United Kingdom" - # NL, because next MaxMind entry 176.56.173.0-176.56.173.63 is NL, and RIR # delegation files say 176.56.160.0-176.56.191.255 is NL. -KL 2013-05-13 "176.56.172.0","176.56.172.255","2956504064","2956504319","NL","Netherlands" @@ -112,49 +47,23 @@ # 176.56.160.0-176.56.191.255 is NL. -KL 2013-05-13 "176.56.174.0","176.56.174.255","2956504576","2956504831","NL","Netherlands" -# US, because next MaxMind entry 176.67.84.0-176.67.84.79 is US, and RIR -# delegation files say 176.67.80.0-176.67.87.255 is US. -KL 2012-11-27 -"176.67.80.0","176.67.83.255","2957201408","2957202431","US","United States" - -# US, because previous MaxMind entry 176.67.84.192-176.67.85.255 is US, -# and RIR delegation files say 176.67.80.0-176.67.87.255 is US. -# -KL 2012-11-27 -"176.67.86.0","176.67.87.255","2957202944","2957203455","US","United States" - # GB, because RIR delegation files say exactly this range # 185.25.84.0-185.25.87.255 is GB, even though neither previous nor next # MaxMind range is GB. Both previous and next MaxMind ranges match RIR # delegation files, too. -KL 2013-05-13 "185.25.84.0","185.25.87.255","3105444864","3105445887","GB","United Kingdom" -# EU, despite neither previous (RU) nor next (UA) MaxMind entry being EU, -# but because RIR delegation files agree with both previous and next -# MaxMind entry and say EU for 193.200.150.0-193.200.150.255. -# -KL 2012-11-27 -"193.200.150.0","193.200.150.255","3251148288","3251148543","EU","Europe" - -# US, because previous MaxMind entry 199.96.68.0-199.96.87.127 is US, and -# RIR delegation files say 199.96.80.0-199.96.87.255 is US. -# -KL 2012-11-27 -"199.96.87.128","199.96.87.255","3344979840","3344979967","US","United States" - # US, because next MaxMind entry 199.101.193.0-199.101.195.255 is US, and, # together with next entries, matches RIR delegation file entry # 199.101.192.0-199.101.199.255 which is US. -KL 2013-05-13 "199.101.192.0","199.101.192.255","3345334272","3345334527","US","United States" # US, because ARIN says 199.255.208.0-199.255.215.255 is US. -"199.255.213.0","199.255.215.255","3355432192","3355432959","US","United States" - -# US, because next MaxMind entry 204.12.162.0-204.12.197.119 is US, and -# RIR delegation files say 204.12.160.0-204.12.191.255 is US. -# -KL 2013-05-13 -"204.12.160.0","204.12.161.255","3423379456","3423379967","US","United States" - -# US, because previous MaxMind entry 209.58.176.144-209.59.31.255 is US, -# and RIR delegation files say 209.59.32.0-209.59.63.255 is US. -# -KL 2012-11-27 -"209.59.32.0","209.59.63.255","3510312960","3510321151","US","United States" +# Changed entry start from 199.255.213.0 to 199.255.208.0 on 2013-08-12. +# Split up into 199.255.208.0-199.255.209.127 and +# 199.255.210.0-199.255.215.255 on 2013-10-11. -KL 2013-10-11 +"199.255.208.0","199.255.209.127","3355430912","3355431295","US","United States" +"199.255.210.0","199.255.215.255","3355431424","3355432959","US","United States" # EU, despite neither previous (RU) nor next (SE) MaxMind entry being EU, # but because RIR delegation files agree with previous MaxMind entry and diff --git a/src/config/torrc.sample.in b/src/config/torrc.sample.in index c667efc5c9..d842fbcaf5 100644 --- a/src/config/torrc.sample.in +++ b/src/config/torrc.sample.in @@ -1,5 +1,5 @@ ## Configuration file for a typical Tor user -## Last updated 12 September 2012 for Tor 0.2.4.3-alpha. +## Last updated 9 October 2013 for Tor 0.2.5.2-alpha. ## (may or may not work for much older or much newer versions of Tor.) ## ## Lines that begin with "## " try to explain what's going on. Lines @@ -120,9 +120,12 @@ ## is per month) #AccountingStart month 3 15:00 -## Contact info to be published in the directory, so we can contact you -## if your relay is misconfigured or something else goes wrong. Google -## indexes this, so spammers might also collect it. +## Administrative contact information for this relay or bridge. This line +## can be used to contact you if your relay or bridge is misconfigured or +## something else goes wrong. Note that we archive and publish all +## descriptors containing these lines and that Google indexes them, so +## spammers might also collect them. You may want to obscure the fact that +## it's an email address and/or generate a new address for this purpose. #ContactInfo Random Person <nobody AT example dot com> ## You might also include your PGP or GPG fingerprint if you have one: #ContactInfo 0xFFFFFFFF Random Person <nobody AT example dot com> diff --git a/src/ext/eventdns.c b/src/ext/eventdns.c index 66280cccdb..8b934c4430 100644 --- a/src/ext/eventdns.c +++ b/src/ext/eventdns.c @@ -2298,6 +2298,10 @@ _evdns_nameserver_add_impl(const struct sockaddr *address, evtimer_set(&ns->timeout_event, nameserver_prod_callback, ns); +#if 1 + ns->socket = tor_open_socket_nonblocking(address->sa_family, SOCK_DGRAM, 0); + if (!SOCKET_OK(ns->socket)) { err = 1; goto out1; } +#else ns->socket = tor_open_socket(address->sa_family, SOCK_DGRAM, 0); if (ns->socket < 0) { err = 1; goto out1; } #ifdef _WIN32 @@ -2314,6 +2318,7 @@ _evdns_nameserver_add_impl(const struct sockaddr *address, } #endif +#endif /* 1 */ if (global_bind_addr_is_set && !sockaddr_is_loopback((struct sockaddr*)&global_bind_address)) { if (bind(ns->socket, (struct sockaddr *)&global_bind_address, @@ -3473,8 +3478,12 @@ main(int c, char **v) { if (servertest) { int sock; struct sockaddr_in my_addr; +#if 1 + sock = tor_open_socket_nonblocking(PF_INET, SOCK_DGRAM, 0) +#else sock = tor_open_socket(PF_INET, SOCK_DGRAM, 0); fcntl(sock, F_SETFL, O_NONBLOCK); +#endif my_addr.sin_family = AF_INET; my_addr.sin_port = htons(10053); my_addr.sin_addr.s_addr = INADDR_ANY; diff --git a/src/or/buffers.c b/src/or/buffers.c index cc5890416f..50016d3a86 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -19,6 +19,7 @@ #include "connection_or.h" #include "control.h" #include "reasons.h" +#include "ext_orport.h" #include "../common/util.h" #include "../common/torlog.h" #ifdef HAVE_UNISTD_H @@ -1702,6 +1703,64 @@ fetch_from_evbuffer_socks(struct evbuffer *buf, socks_request_t *req, } #endif +/** The size of the header of an Extended ORPort message: 2 bytes for + * COMMAND, 2 bytes for BODYLEN */ +#define EXT_OR_CMD_HEADER_SIZE 4 + +/** Read <b>buf</b>, which should contain an Extended ORPort message + * from a transport proxy. If well-formed, create and populate + * <b>out</b> with the Extended ORport message. Return 0 if the + * buffer was incomplete, 1 if it was well-formed and -1 if we + * encountered an error while parsing it. */ +int +fetch_ext_or_command_from_buf(buf_t *buf, ext_or_cmd_t **out) +{ + char hdr[EXT_OR_CMD_HEADER_SIZE]; + uint16_t len; + + check(); + if (buf->datalen < EXT_OR_CMD_HEADER_SIZE) + return 0; + peek_from_buf(hdr, sizeof(hdr), buf); + len = ntohs(get_uint16(hdr+2)); + if (buf->datalen < (unsigned)len + EXT_OR_CMD_HEADER_SIZE) + return 0; + *out = ext_or_cmd_new(len); + (*out)->cmd = ntohs(get_uint16(hdr)); + (*out)->len = len; + buf_remove_from_front(buf, EXT_OR_CMD_HEADER_SIZE); + fetch_from_buf((*out)->body, len, buf); + return 1; +} + +#ifdef USE_BUFFEREVENTS +/** Read <b>buf</b>, which should contain an Extended ORPort message + * from a transport proxy. If well-formed, create and populate + * <b>out</b> with the Extended ORport message. Return 0 if the + * buffer was incomplete, 1 if it was well-formed and -1 if we + * encountered an error while parsing it. */ +int +fetch_ext_or_command_from_evbuffer(struct evbuffer *buf, ext_or_cmd_t **out) +{ + char hdr[EXT_OR_CMD_HEADER_SIZE]; + uint16_t len; + size_t buf_len = evbuffer_get_length(buf); + + if (buf_len < EXT_OR_CMD_HEADER_SIZE) + return 0; + evbuffer_copyout(buf, hdr, EXT_OR_CMD_HEADER_SIZE); + len = ntohs(get_uint16(hdr+2)); + if (buf_len < (unsigned)len + EXT_OR_CMD_HEADER_SIZE) + return 0; + *out = ext_or_cmd_new(len); + (*out)->cmd = ntohs(get_uint16(hdr)); + (*out)->len = len; + evbuffer_drain(buf, EXT_OR_CMD_HEADER_SIZE); + evbuffer_remove(buf, (*out)->body, len); + return 1; +} +#endif + /** Implementation helper to implement fetch_from_*_socks. Instead of looking * at a buffer's contents, we look at the <b>datalen</b> bytes of data in * <b>data</b>. Instead of removing data from the buffer, we set diff --git a/src/or/buffers.h b/src/or/buffers.h index 910494a874..48b1185204 100644 --- a/src/or/buffers.h +++ b/src/or/buffers.h @@ -53,6 +53,8 @@ int fetch_from_buf_line(buf_t *buf, char *data_out, size_t *data_len); int peek_buf_has_control0_command(buf_t *buf); +int fetch_ext_or_command_from_buf(buf_t *buf, ext_or_cmd_t **out); + #ifdef USE_BUFFEREVENTS int fetch_var_cell_from_evbuffer(struct evbuffer *buf, var_cell_t **out, int linkproto); @@ -68,6 +70,8 @@ int peek_evbuffer_has_control0_command(struct evbuffer *buf); int write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state, const char *data, size_t data_len, int done); +int fetch_ext_or_command_from_evbuffer(struct evbuffer *buf, + ext_or_cmd_t **out); #endif #ifdef USE_BUFFEREVENTS @@ -77,6 +81,8 @@ int write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state, #define generic_buffer_get(b,buf,buflen) evbuffer_remove((b),(buf),(buflen)) #define generic_buffer_clear(b) evbuffer_drain((b), evbuffer_get_length((b))) #define generic_buffer_free(b) evbuffer_free((b)) +#define generic_buffer_fetch_ext_or_cmd(b, out) \ + fetch_ext_or_command_from_evbuffer((b), (out)) #else #define generic_buffer_new() buf_new() #define generic_buffer_len(b) buf_datalen((b)) @@ -84,6 +90,8 @@ int write_to_evbuffer_zlib(struct evbuffer *buf, tor_zlib_state_t *state, #define generic_buffer_get(b,buf,buflen) fetch_from_buf((buf),(buflen),(b)) #define generic_buffer_clear(b) buf_clear((b)) #define generic_buffer_free(b) buf_free((b)) +#define generic_buffer_fetch_ext_or_cmd(b, out) \ + fetch_ext_or_command_from_buf((b), (out)) #endif int generic_buffer_set_to_copy(generic_buffer_t **output, const generic_buffer_t *input); diff --git a/src/or/channel.c b/src/or/channel.c index 98c23d91ea..a345bab20c 100644 --- a/src/or/channel.c +++ b/src/or/channel.c @@ -745,6 +745,9 @@ channel_init(channel_t *chan) /* Timestamp it */ channel_timestamp_created(chan); + + /* It hasn't been open yet. */ + chan->has_been_open = 0; } /** @@ -1295,11 +1298,11 @@ channel_closed(channel_t *chan) if (chan->state == CHANNEL_STATE_CLOSED || chan->state == CHANNEL_STATE_ERROR) return; - if (chan->reason_for_closing == CHANNEL_CLOSE_FOR_ERROR) { - /* Inform any pending (not attached) circs that they should - * give up. */ + /* Inform any pending (not attached) circs that they should + * give up. */ + if (! chan->has_been_open) circuit_n_chan_done(chan, 0); - } + /* Now close all the attached circuits on it. */ circuit_unlink_all_from_channel(chan, END_CIRC_REASON_CHANNEL_CLOSED); @@ -1946,6 +1949,7 @@ channel_change_state(channel_t *chan, channel_state_t to_state) /* Tell circuits if we opened and stuff */ if (to_state == CHANNEL_STATE_OPEN) { channel_do_open_actions(chan); + chan->has_been_open = 1; /* Check for queued cells to process */ if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue)) @@ -2361,7 +2365,7 @@ channel_do_open_actions(channel_t *chan) started_here = channel_is_outgoing(chan); if (started_here) { - circuit_build_times_network_is_live(&circ_times); + circuit_build_times_network_is_live(get_circuit_build_times_mutable()); rep_hist_note_connect_succeeded(chan->identity_digest, now); if (entry_guard_register_connect_status( chan->identity_digest, 1, 0, now) < 0) { @@ -2379,8 +2383,14 @@ channel_do_open_actions(channel_t *chan) /* only report it to the geoip module if it's not a known router */ if (!router_get_by_id_digest(chan->identity_digest)) { if (channel_get_addr_if_possible(chan, &remote_addr)) { - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &remote_addr, + char *transport_name = NULL; + if (chan->get_transport_name(chan, &transport_name) < 0) + transport_name = NULL; + + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, + &remote_addr, transport_name, now); + tor_free(transport_name); } /* Otherwise the underlying transport can't tell us this, so skip it */ } @@ -3090,7 +3100,7 @@ channel_get_for_extend(const char *digest, if (chan->state != CHANNEL_STATE_OPEN) { /* If the address matches, don't launch a new connection for this * circuit. */ - if (!channel_matches_target_addr_for_extend(chan, target_addr)) + if (channel_matches_target_addr_for_extend(chan, target_addr)) ++n_inprogress_goodaddr; continue; } @@ -4106,7 +4116,7 @@ channel_matches_extend_info(channel_t *chan, extend_info_t *extend_info) } /** - * Check if a channel matches a given target address + * Check if a channel matches a given target address; return true iff we do. * * This function calls into the lower layer and asks if this channel thinks * it matches a given target address for circuit extension purposes. diff --git a/src/or/channel.h b/src/or/channel.h index 83d7e900ff..7e3f5ad075 100644 --- a/src/or/channel.h +++ b/src/or/channel.h @@ -10,7 +10,6 @@ #define TOR_CHANNEL_H #include "or.h" -#include "tor_queue.h" #include "circuitmux.h" /* Channel handler function pointer typedefs */ @@ -46,6 +45,9 @@ struct channel_s { /* Should we expect to see this channel in the channel lists? */ unsigned char registered:1; + /** has this channel ever been open? */ + unsigned int has_been_open:1; + /** Why did we close? */ enum { @@ -84,6 +86,8 @@ struct channel_s { * available. */ int (*get_remote_addr)(channel_t *, tor_addr_t *); + int (*get_transport_name)(channel_t *chan, char **transport_out); + #define GRD_FLAG_ORIGINAL 1 #define GRD_FLAG_ADDR_ONLY 2 /* diff --git a/src/or/channeltls.c b/src/or/channeltls.c index 60693daeb2..ca9e10b3fc 100644 --- a/src/or/channeltls.c +++ b/src/or/channeltls.c @@ -55,6 +55,8 @@ static void channel_tls_close_method(channel_t *chan); static const char * channel_tls_describe_transport_method(channel_t *chan); static int channel_tls_get_remote_addr_method(channel_t *chan, tor_addr_t *addr_out); +static int +channel_tls_get_transport_name_method(channel_t *chan, char **transport_out); static const char * channel_tls_get_remote_descr_method(channel_t *chan, int flags); static int channel_tls_has_queued_writes_method(channel_t *chan); @@ -114,6 +116,7 @@ channel_tls_common_init(channel_tls_t *tlschan) chan->describe_transport = channel_tls_describe_transport_method; chan->get_remote_addr = channel_tls_get_remote_addr_method; chan->get_remote_descr = channel_tls_get_remote_descr_method; + chan->get_transport_name = channel_tls_get_transport_name_method; chan->has_queued_writes = channel_tls_has_queued_writes_method; chan->is_canonical = channel_tls_is_canonical_method; chan->matches_extend_info = channel_tls_matches_extend_info_method; @@ -406,6 +409,30 @@ channel_tls_get_remote_addr_method(channel_t *chan, tor_addr_t *addr_out) } /** + * Get the name of the pluggable transport used by a channel_tls_t. + * + * This implements the get_transport_name for channel_tls_t. If the + * channel uses a pluggable transport, copy its name to + * <b>transport_out</b> and return 0. If the channel did not use a + * pluggable transport, return -1. */ + +static int +channel_tls_get_transport_name_method(channel_t *chan, char **transport_out) +{ + channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan); + + tor_assert(tlschan); + tor_assert(transport_out); + tor_assert(tlschan->conn); + + if (!tlschan->conn->ext_or_transport) + return -1; + + *transport_out = tor_strdup(tlschan->conn->ext_or_transport); + return 0; +} + +/** * Get endpoint description of a channel_tls_t * * This implements the get_remote_descr method for channel_tls_t; it returns @@ -546,7 +573,7 @@ channel_tls_matches_extend_info_method(channel_t *chan, } /** - * Check if we match a target address + * Check if we match a target address; return true iff we do. * * This implements the matches_target method for channel_tls t_; the upper * layer wants to know if this channel matches a target address when extending @@ -563,8 +590,7 @@ channel_tls_matches_target_method(channel_t *chan, tor_assert(target); tor_assert(tlschan->conn); - return tor_addr_compare(&(tlschan->conn->real_addr), - target, CMP_EXACT); + return tor_addr_eq(&(tlschan->conn->real_addr), target); } /** @@ -1263,8 +1289,8 @@ channel_tls_process_versions_cell(var_cell_t *cell, channel_tls_t *chan) const int send_versions = !started_here; /* If we want to authenticate, send a CERTS cell */ const int send_certs = !started_here || public_server_mode(get_options()); - /* If we're a relay that got a connection, ask for authentication. */ - const int send_chall = !started_here && public_server_mode(get_options()); + /* If we're a host that got a connection, ask for authentication. */ + const int send_chall = !started_here; /* If our certs cell will authenticate us, we can send a netinfo cell * right now. */ const int send_netinfo = !started_here; @@ -1475,6 +1501,16 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan) /* XXX maybe act on my_apparent_addr, if the source is sufficiently * trustworthy. */ + if (! chan->conn->handshake_state->sent_netinfo) { + /* If we were prepared to authenticate, but we never got an AUTH_CHALLENGE + * cell, then we would not previously have sent a NETINFO cell. Do so + * now. */ + if (connection_or_send_netinfo(chan->conn) < 0) { + connection_or_close_for_error(chan->conn, 0); + return; + } + } + if (connection_or_set_state_open(chan->conn) < 0) { log_fn(LOG_PROTOCOL_WARN, LD_OR, "Got good NETINFO cell from %s:%d; but " diff --git a/src/or/circpathbias.c b/src/or/circpathbias.c new file mode 100644 index 0000000000..51a75cf502 --- /dev/null +++ b/src/or/circpathbias.c @@ -0,0 +1,1538 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#include "or.h" +#include "channel.h" +#include "circpathbias.h" +#include "circuitbuild.h" +#include "circuitlist.h" +#include "circuituse.h" +#include "circuitstats.h" +#include "connection_edge.h" +#include "config.h" +#include "entrynodes.h" +#include "networkstatus.h" +#include "relay.h" + +static void pathbias_count_successful_close(origin_circuit_t *circ); +static void pathbias_count_collapse(origin_circuit_t *circ); +static void pathbias_count_use_failed(origin_circuit_t *circ); +static void pathbias_measure_use_rate(entry_guard_t *guard); +static void pathbias_measure_close_rate(entry_guard_t *guard); +static void pathbias_scale_use_rates(entry_guard_t *guard); +static void pathbias_scale_close_rates(entry_guard_t *guard); +static int entry_guard_inc_circ_attempt_count(entry_guard_t *guard); + +/** Increment the number of times we successfully extended a circuit to + * <b>guard</b>, first checking if the failure rate is high enough that + * we should eliminate the guard. Return -1 if the guard looks no good; + * return 0 if the guard looks fine. + */ +static int +entry_guard_inc_circ_attempt_count(entry_guard_t *guard) +{ + entry_guards_changed(); + + pathbias_measure_close_rate(guard); + + if (guard->path_bias_disabled) + return -1; + + pathbias_scale_close_rates(guard); + guard->circ_attempts++; + + log_info(LD_CIRC, "Got success count %f/%f for guard %s ($%s)", + guard->circ_successes, guard->circ_attempts, guard->nickname, + hex_str(guard->identity, DIGEST_LEN)); + return 0; +} + +/** The minimum number of circuit attempts before we start + * thinking about warning about path bias and dropping guards */ +static int +pathbias_get_min_circs(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_MIN_CIRC 150 + if (options->PathBiasCircThreshold >= 5) + return options->PathBiasCircThreshold; + else + return networkstatus_get_param(NULL, "pb_mincircs", + DFLT_PATH_BIAS_MIN_CIRC, + 5, INT32_MAX); +} + +/** The circuit success rate below which we issue a notice */ +static double +pathbias_get_notice_rate(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_NOTICE_PCT 70 + if (options->PathBiasNoticeRate >= 0.0) + return options->PathBiasNoticeRate; + else + return networkstatus_get_param(NULL, "pb_noticepct", + DFLT_PATH_BIAS_NOTICE_PCT, 0, 100)/100.0; +} + +/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ +/** The circuit success rate below which we issue a warn */ +static double +pathbias_get_warn_rate(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_WARN_PCT 50 + if (options->PathBiasWarnRate >= 0.0) + return options->PathBiasWarnRate; + else + return networkstatus_get_param(NULL, "pb_warnpct", + DFLT_PATH_BIAS_WARN_PCT, 0, 100)/100.0; +} + +/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ +/** + * The extreme rate is the rate at which we would drop the guard, + * if pb_dropguard is also set. Otherwise we just warn. + */ +double +pathbias_get_extreme_rate(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_EXTREME_PCT 30 + if (options->PathBiasExtremeRate >= 0.0) + return options->PathBiasExtremeRate; + else + return networkstatus_get_param(NULL, "pb_extremepct", + DFLT_PATH_BIAS_EXTREME_PCT, 0, 100)/100.0; +} + +/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ +/** + * If 1, we actually disable use of guards that fall below + * the extreme_pct. + */ +int +pathbias_get_dropguards(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_DROP_GUARDS 0 + if (options->PathBiasDropGuards >= 0) + return options->PathBiasDropGuards; + else + return networkstatus_get_param(NULL, "pb_dropguards", + DFLT_PATH_BIAS_DROP_GUARDS, 0, 1); +} + +/** + * This is the number of circuits at which we scale our + * counts by mult_factor/scale_factor. Note, this count is + * not exact, as we only perform the scaling in the event + * of no integer truncation. + */ +static int +pathbias_get_scale_threshold(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_SCALE_THRESHOLD 300 + if (options->PathBiasScaleThreshold >= 10) + return options->PathBiasScaleThreshold; + else + return networkstatus_get_param(NULL, "pb_scalecircs", + DFLT_PATH_BIAS_SCALE_THRESHOLD, 10, + INT32_MAX); +} + +/** + * Compute the path bias scaling ratio from the consensus + * parameters pb_multfactor/pb_scalefactor. + * + * Returns a value in (0, 1.0] which we multiply our pathbias + * counts with to scale them down. + */ +static double +pathbias_get_scale_ratio(const or_options_t *options) +{ + /* + * The scale factor is the denominator for our scaling + * of circuit counts for our path bias window. + * + * Note that our use of doubles for the path bias state + * file means that powers of 2 work best here. + */ + int denominator = networkstatus_get_param(NULL, "pb_scalefactor", + 2, 2, INT32_MAX); + (void) options; + /** + * The mult factor is the numerator for our scaling + * of circuit counts for our path bias window. It + * allows us to scale by fractions. + */ + return networkstatus_get_param(NULL, "pb_multfactor", + 1, 1, denominator)/((double)denominator); +} + +/** The minimum number of circuit usage attempts before we start + * thinking about warning about path use bias and dropping guards */ +static int +pathbias_get_min_use(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_MIN_USE 20 + if (options->PathBiasUseThreshold >= 3) + return options->PathBiasUseThreshold; + else + return networkstatus_get_param(NULL, "pb_minuse", + DFLT_PATH_BIAS_MIN_USE, + 3, INT32_MAX); +} + +/** The circuit use success rate below which we issue a notice */ +static double +pathbias_get_notice_use_rate(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_NOTICE_USE_PCT 80 + if (options->PathBiasNoticeUseRate >= 0.0) + return options->PathBiasNoticeUseRate; + else + return networkstatus_get_param(NULL, "pb_noticeusepct", + DFLT_PATH_BIAS_NOTICE_USE_PCT, + 0, 100)/100.0; +} + +/** + * The extreme use rate is the rate at which we would drop the guard, + * if pb_dropguard is also set. Otherwise we just warn. + */ +double +pathbias_get_extreme_use_rate(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_EXTREME_USE_PCT 60 + if (options->PathBiasExtremeUseRate >= 0.0) + return options->PathBiasExtremeUseRate; + else + return networkstatus_get_param(NULL, "pb_extremeusepct", + DFLT_PATH_BIAS_EXTREME_USE_PCT, + 0, 100)/100.0; +} + +/** + * This is the number of circuits at which we scale our + * use counts by mult_factor/scale_factor. Note, this count is + * not exact, as we only perform the scaling in the event + * of no integer truncation. + */ +static int +pathbias_get_scale_use_threshold(const or_options_t *options) +{ +#define DFLT_PATH_BIAS_SCALE_USE_THRESHOLD 100 + if (options->PathBiasScaleUseThreshold >= 10) + return options->PathBiasScaleUseThreshold; + else + return networkstatus_get_param(NULL, "pb_scaleuse", + DFLT_PATH_BIAS_SCALE_USE_THRESHOLD, + 10, INT32_MAX); +} + +/** + * Convert a Guard's path state to string. + */ +const char * +pathbias_state_to_string(path_state_t state) +{ + switch (state) { + case PATH_STATE_NEW_CIRC: + return "new"; + case PATH_STATE_BUILD_ATTEMPTED: + return "build attempted"; + case PATH_STATE_BUILD_SUCCEEDED: + return "build succeeded"; + case PATH_STATE_USE_ATTEMPTED: + return "use attempted"; + case PATH_STATE_USE_SUCCEEDED: + return "use succeeded"; + case PATH_STATE_USE_FAILED: + return "use failed"; + case PATH_STATE_ALREADY_COUNTED: + return "already counted"; + } + + return "unknown"; +} + +/** + * This function decides if a circuit has progressed far enough to count + * as a circuit "attempt". As long as end-to-end tagging is possible, + * we assume the adversary will use it over hop-to-hop failure. Therefore, + * we only need to account bias for the last hop. This should make us + * much more resilient to ambient circuit failure, and also make that + * failure easier to measure (we only need to measure Exit failure rates). + */ +static int +pathbias_is_new_circ_attempt(origin_circuit_t *circ) +{ +#define N2N_TAGGING_IS_POSSIBLE +#ifdef N2N_TAGGING_IS_POSSIBLE + /* cpath is a circular list. We want circs with more than one hop, + * and the second hop must be waiting for keys still (it's just + * about to get them). */ + return circ->cpath && + circ->cpath->next != circ->cpath && + circ->cpath->next->state == CPATH_STATE_AWAITING_KEYS; +#else + /* If tagging attacks are no longer possible, we probably want to + * count bias from the first hop. However, one could argue that + * timing-based tagging is still more useful than per-hop failure. + * In which case, we'd never want to use this. + */ + return circ->cpath && + circ->cpath->state == CPATH_STATE_AWAITING_KEYS; +#endif +} + +/** + * Decide if the path bias code should count a circuit. + * + * @returns 1 if we should count it, 0 otherwise. + */ +static int +pathbias_should_count(origin_circuit_t *circ) +{ +#define PATHBIAS_COUNT_INTERVAL (600) + static ratelim_t count_limit = + RATELIM_INIT(PATHBIAS_COUNT_INTERVAL); + char *rate_msg = NULL; + + /* We can't do path bias accounting without entry guards. + * Testing and controller circuits also have no guards. + * + * We also don't count server-side rends, because their + * endpoint could be chosen maliciously. + * Similarly, we can't count client-side intro attempts, + * because clients can be manipulated into connecting to + * malicious intro points. */ + if (get_options()->UseEntryGuards == 0 || + circ->base_.purpose == CIRCUIT_PURPOSE_TESTING || + circ->base_.purpose == CIRCUIT_PURPOSE_CONTROLLER || + circ->base_.purpose == CIRCUIT_PURPOSE_S_CONNECT_REND || + circ->base_.purpose == CIRCUIT_PURPOSE_S_REND_JOINED || + (circ->base_.purpose >= CIRCUIT_PURPOSE_C_INTRODUCING && + circ->base_.purpose <= CIRCUIT_PURPOSE_C_INTRODUCE_ACKED)) { + + /* Check to see if the shouldcount result has changed due to a + * unexpected purpose change that would affect our results. + * + * The reason we check the path state too here is because for the + * cannibalized versions of these purposes, we count them as successful + * before their purpose change. + */ + if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED + && circ->path_state != PATH_STATE_ALREADY_COUNTED) { + log_info(LD_BUG, + "Circuit %d is now being ignored despite being counted " + "in the past. Purpose is %s, path state is %s", + circ->global_identifier, + circuit_purpose_to_string(circ->base_.purpose), + pathbias_state_to_string(circ->path_state)); + } + circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED; + return 0; + } + + /* Completely ignore one hop circuits */ + if (circ->build_state->onehop_tunnel || + circ->build_state->desired_path_len == 1) { + /* Check for inconsistency */ + if (circ->build_state->desired_path_len != 1 || + !circ->build_state->onehop_tunnel) { + if ((rate_msg = rate_limit_log(&count_limit, approx_time()))) { + log_info(LD_BUG, + "One-hop circuit has length %d. Path state is %s. " + "Circuit is a %s currently %s.%s", + circ->build_state->desired_path_len, + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + tor_fragile_assert(); + } + + /* Check to see if the shouldcount result has changed due to a + * unexpected change that would affect our results */ + if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED) { + log_info(LD_BUG, + "One-hop circuit %d is now being ignored despite being counted " + "in the past. Purpose is %s, path state is %s", + circ->global_identifier, + circuit_purpose_to_string(circ->base_.purpose), + pathbias_state_to_string(circ->path_state)); + } + circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED; + return 0; + } + + /* Check to see if the shouldcount result has changed due to a + * unexpected purpose change that would affect our results */ + if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_IGNORED) { + log_info(LD_BUG, + "Circuit %d is now being counted despite being ignored " + "in the past. Purpose is %s, path state is %s", + circ->global_identifier, + circuit_purpose_to_string(circ->base_.purpose), + pathbias_state_to_string(circ->path_state)); + } + circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_COUNTED; + + return 1; +} + +/** + * Check our circuit state to see if this is a successful circuit attempt. + * If so, record it in the current guard's path bias circ_attempt count. + * + * Also check for several potential error cases for bug #6475. + */ +int +pathbias_count_build_attempt(origin_circuit_t *circ) +{ +#define CIRC_ATTEMPT_NOTICE_INTERVAL (600) + static ratelim_t circ_attempt_notice_limit = + RATELIM_INIT(CIRC_ATTEMPT_NOTICE_INTERVAL); + char *rate_msg = NULL; + + if (!pathbias_should_count(circ)) { + return 0; + } + + if (pathbias_is_new_circ_attempt(circ)) { + /* Help track down the real cause of bug #6475: */ + if (circ->has_opened && circ->path_state != PATH_STATE_BUILD_ATTEMPTED) { + if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, + approx_time()))) { + log_info(LD_BUG, + "Opened circuit is in strange path state %s. " + "Circuit is a %s currently %s.%s", + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + + /* Don't re-count cannibalized circs.. */ + if (!circ->has_opened) { + entry_guard_t *guard = NULL; + + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } else if (circ->base_.n_chan) { + guard = + entry_guard_get_by_id_digest(circ->base_.n_chan->identity_digest); + } + + if (guard) { + if (circ->path_state == PATH_STATE_NEW_CIRC) { + circ->path_state = PATH_STATE_BUILD_ATTEMPTED; + + if (entry_guard_inc_circ_attempt_count(guard) < 0) { + /* Bogus guard; we already warned. */ + return -END_CIRC_REASON_TORPROTOCOL; + } + } else { + if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, + approx_time()))) { + log_info(LD_BUG, + "Unopened circuit has strange path state %s. " + "Circuit is a %s currently %s.%s", + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + } else { + if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, + approx_time()))) { + log_info(LD_CIRC, + "Unopened circuit has no known guard. " + "Circuit is a %s currently %s.%s", + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + } + } + + return 0; +} + +/** + * Check our circuit state to see if this is a successful circuit + * completion. If so, record it in the current guard's path bias + * success count. + * + * Also check for several potential error cases for bug #6475. + */ +void +pathbias_count_build_success(origin_circuit_t *circ) +{ +#define SUCCESS_NOTICE_INTERVAL (600) + static ratelim_t success_notice_limit = + RATELIM_INIT(SUCCESS_NOTICE_INTERVAL); + char *rate_msg = NULL; + entry_guard_t *guard = NULL; + + if (!pathbias_should_count(circ)) { + return; + } + + /* Don't count cannibalized/reused circs for path bias + * "build" success, since they get counted under "use" success. */ + if (!circ->has_opened) { + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } + + if (guard) { + if (circ->path_state == PATH_STATE_BUILD_ATTEMPTED) { + circ->path_state = PATH_STATE_BUILD_SUCCEEDED; + guard->circ_successes++; + entry_guards_changed(); + + log_info(LD_CIRC, "Got success count %f/%f for guard %s ($%s)", + guard->circ_successes, guard->circ_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + } else { + if ((rate_msg = rate_limit_log(&success_notice_limit, + approx_time()))) { + log_info(LD_BUG, + "Succeeded circuit is in strange path state %s. " + "Circuit is a %s currently %s.%s", + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + + if (guard->circ_attempts < guard->circ_successes) { + log_notice(LD_BUG, "Unexpectedly high successes counts (%f/%f) " + "for guard %s ($%s)", + guard->circ_successes, guard->circ_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + } + /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to + * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. + * No need to log that case. */ + } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { + if ((rate_msg = rate_limit_log(&success_notice_limit, + approx_time()))) { + log_info(LD_CIRC, + "Completed circuit has no known guard. " + "Circuit is a %s currently %s.%s", + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + } else { + if (circ->path_state < PATH_STATE_BUILD_SUCCEEDED) { + if ((rate_msg = rate_limit_log(&success_notice_limit, + approx_time()))) { + log_info(LD_BUG, + "Opened circuit is in strange path state %s. " + "Circuit is a %s currently %s.%s", + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state), + rate_msg); + tor_free(rate_msg); + } + } + } +} + +/** + * Record an attempt to use a circuit. Changes the circuit's + * path state and update its guard's usage counter. + * + * Used for path bias usage accounting. + */ +void +pathbias_count_use_attempt(origin_circuit_t *circ) +{ + entry_guard_t *guard; + + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->path_state < PATH_STATE_BUILD_SUCCEEDED) { + log_notice(LD_BUG, + "Used circuit is in strange path state %s. " + "Circuit is a %s currently %s.", + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } else if (circ->path_state < PATH_STATE_USE_ATTEMPTED) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + if (guard) { + pathbias_measure_use_rate(guard); + pathbias_scale_use_rates(guard); + guard->use_attempts++; + entry_guards_changed(); + + log_debug(LD_CIRC, + "Marked circuit %d (%f/%f) as used for guard %s ($%s).", + circ->global_identifier, + guard->use_successes, guard->use_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + } + + circ->path_state = PATH_STATE_USE_ATTEMPTED; + } else { + /* Harmless but educational log message */ + log_info(LD_CIRC, + "Used circuit %d is already in path state %s. " + "Circuit is a %s currently %s.", + circ->global_identifier, + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } + + return; +} + +/** + * Check the circuit's path state is appropriate and mark it as + * successfully used. Used for path bias usage accounting. + * + * We don't actually increment the guard's counters until + * pathbias_check_close(), because the circuit can still transition + * back to PATH_STATE_USE_ATTEMPTED if a stream fails later (this + * is done so we can probe the circuit for liveness at close). + */ +void +pathbias_mark_use_success(origin_circuit_t *circ) +{ + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->path_state < PATH_STATE_USE_ATTEMPTED) { + log_notice(LD_BUG, + "Used circuit %d is in strange path state %s. " + "Circuit is a %s currently %s.", + circ->global_identifier, + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + + pathbias_count_use_attempt(circ); + } + + /* We don't do any accounting at the guard until actual circuit close */ + circ->path_state = PATH_STATE_USE_SUCCEEDED; + + return; +} + +/** + * If a stream ever detatches from a circuit in a retriable way, + * we need to mark this circuit as still needing either another + * successful stream, or in need of a probe. + * + * An adversary could let the first stream request succeed (ie the + * resolve), but then tag and timeout the remainder (via cell + * dropping), forcing them on new circuits. + * + * Rolling back the state will cause us to probe such circuits, which + * should lead to probe failures in the event of such tagging due to + * either unrecognized cells coming in while we wait for the probe, + * or the cipher state getting out of sync in the case of dropped cells. + */ +void +pathbias_mark_use_rollback(origin_circuit_t *circ) +{ + if (circ->path_state == PATH_STATE_USE_SUCCEEDED) { + log_info(LD_CIRC, + "Rolling back pathbias use state to 'attempted' for detached " + "circuit %d", circ->global_identifier); + circ->path_state = PATH_STATE_USE_ATTEMPTED; + } +} + +/** + * Actually count a circuit success towards a guard's usage counters + * if the path state is appropriate. + */ +static void +pathbias_count_use_success(origin_circuit_t *circ) +{ + entry_guard_t *guard; + + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->path_state != PATH_STATE_USE_SUCCEEDED) { + log_notice(LD_BUG, + "Successfully used circuit %d is in strange path state %s. " + "Circuit is a %s currently %s.", + circ->global_identifier, + pathbias_state_to_string(circ->path_state), + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } else { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + if (guard) { + guard->use_successes++; + entry_guards_changed(); + + if (guard->use_attempts < guard->use_successes) { + log_notice(LD_BUG, "Unexpectedly high use successes counts (%f/%f) " + "for guard %s=%s", + guard->use_successes, guard->use_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + } + + log_debug(LD_CIRC, + "Marked circuit %d (%f/%f) as used successfully for guard " + "%s ($%s).", + circ->global_identifier, guard->use_successes, + guard->use_attempts, guard->nickname, + hex_str(guard->identity, DIGEST_LEN)); + } + } + + return; +} + +/** + * Send a probe down a circuit that the client attempted to use, + * but for which the stream timed out/failed. The probe is a + * RELAY_BEGIN cell with a 0.a.b.c destination address, which + * the exit will reject and reply back, echoing that address. + * + * The reason for such probes is because it is possible to bias + * a user's paths simply by causing timeouts, and these timeouts + * are not possible to differentiate from unresponsive servers. + * + * The probe is sent at the end of the circuit lifetime for two + * reasons: to prevent cryptographic taggers from being able to + * drop cells to cause timeouts, and to prevent easy recognition + * of probes before any real client traffic happens. + * + * Returns -1 if we couldn't probe, 0 otherwise. + */ +static int +pathbias_send_usable_probe(circuit_t *circ) +{ + /* Based on connection_ap_handshake_send_begin() */ + char payload[CELL_PAYLOAD_SIZE]; + int payload_len; + origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); + crypt_path_t *cpath_layer = NULL; + char *probe_nonce = NULL; + + tor_assert(ocirc); + + cpath_layer = ocirc->cpath->prev; + + if (cpath_layer->state != CPATH_STATE_OPEN) { + /* This can happen for cannibalized circuits. Their + * last hop isn't yet open */ + log_info(LD_CIRC, + "Got pathbias probe request for unopened circuit %d. " + "Opened %d, len %d", ocirc->global_identifier, + ocirc->has_opened, ocirc->build_state->desired_path_len); + return -1; + } + + /* We already went down this road. */ + if (circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING && + ocirc->pathbias_probe_id) { + log_info(LD_CIRC, + "Got pathbias probe request for circuit %d with " + "outstanding probe", ocirc->global_identifier); + return -1; + } + + /* Can't probe if the channel isn't open */ + if (circ->n_chan == NULL || + (circ->n_chan->state != CHANNEL_STATE_OPEN + && circ->n_chan->state != CHANNEL_STATE_MAINT)) { + log_info(LD_CIRC, + "Skipping pathbias probe for circuit %d: Channel is not open.", + ocirc->global_identifier); + return -1; + } + + circuit_change_purpose(circ, CIRCUIT_PURPOSE_PATH_BIAS_TESTING); + + /* Update timestamp for when circuit_expire_building() should kill us */ + tor_gettimeofday(&circ->timestamp_began); + + /* Generate a random address for the nonce */ + crypto_rand((char*)ô->pathbias_probe_nonce, + sizeof(ocirc->pathbias_probe_nonce)); + ocirc->pathbias_probe_nonce &= 0x00ffffff; + probe_nonce = tor_dup_ip(ocirc->pathbias_probe_nonce); + + tor_snprintf(payload,RELAY_PAYLOAD_SIZE, "%s:25", probe_nonce); + payload_len = (int)strlen(payload)+1; + + // XXX: need this? Can we assume ipv4 will always be supported? + // If not, how do we tell? + //if (payload_len <= RELAY_PAYLOAD_SIZE - 4 && edge_conn->begincell_flags) { + // set_uint32(payload + payload_len, htonl(edge_conn->begincell_flags)); + // payload_len += 4; + //} + + /* Generate+Store stream id, make sure it's non-zero */ + ocirc->pathbias_probe_id = get_unique_stream_id_by_circ(ocirc); + + if (ocirc->pathbias_probe_id==0) { + log_warn(LD_CIRC, + "Ran out of stream IDs on circuit %u during " + "pathbias probe attempt.", ocirc->global_identifier); + tor_free(probe_nonce); + return -1; + } + + log_info(LD_CIRC, + "Sending pathbias testing cell to %s:25 on stream %d for circ %d.", + probe_nonce, ocirc->pathbias_probe_id, ocirc->global_identifier); + tor_free(probe_nonce); + + /* Send a test relay cell */ + if (relay_send_command_from_edge(ocirc->pathbias_probe_id, circ, + RELAY_COMMAND_BEGIN, payload, + payload_len, cpath_layer) < 0) { + log_notice(LD_CIRC, + "Failed to send pathbias probe cell on circuit %d.", + ocirc->global_identifier); + return -1; + } + + /* Mark it freshly dirty so it doesn't get expired in the meantime */ + circ->timestamp_dirty = time(NULL); + + return 0; +} + +/** + * Check the response to a pathbias probe, to ensure the + * cell is recognized and the nonce and other probe + * characteristics are as expected. + * + * If the response is valid, return 0. Otherwise return < 0. + */ +int +pathbias_check_probe_response(circuit_t *circ, const cell_t *cell) +{ + /* Based on connection_edge_process_relay_cell() */ + relay_header_t rh; + int reason; + uint32_t ipv4_host; + origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); + + tor_assert(cell); + tor_assert(ocirc); + tor_assert(circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING); + + relay_header_unpack(&rh, cell->payload); + + reason = rh.length > 0 ? + get_uint8(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC; + + if (rh.command == RELAY_COMMAND_END && + reason == END_STREAM_REASON_EXITPOLICY && + ocirc->pathbias_probe_id == rh.stream_id) { + + /* Check length+extract host: It is in network order after the reason code. + * See connection_edge_end(). */ + if (rh.length < 9) { /* reason+ipv4+dns_ttl */ + log_notice(LD_PROTOCOL, + "Short path bias probe response length field (%d).", rh.length); + return - END_CIRC_REASON_TORPROTOCOL; + } + + ipv4_host = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+1)); + + /* Check nonce */ + if (ipv4_host == ocirc->pathbias_probe_nonce) { + pathbias_mark_use_success(ocirc); + circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED); + log_info(LD_CIRC, + "Got valid path bias probe back for circ %d, stream %d.", + ocirc->global_identifier, ocirc->pathbias_probe_id); + return 0; + } else { + log_notice(LD_CIRC, + "Got strange probe value 0x%x vs 0x%x back for circ %d, " + "stream %d.", ipv4_host, ocirc->pathbias_probe_nonce, + ocirc->global_identifier, ocirc->pathbias_probe_id); + return -1; + } + } + log_info(LD_CIRC, + "Got another cell back back on pathbias probe circuit %d: " + "Command: %d, Reason: %d, Stream-id: %d", + ocirc->global_identifier, rh.command, reason, rh.stream_id); + return -1; +} + +/** + * Check if a circuit was used and/or closed successfully. + * + * If we attempted to use the circuit to carry a stream but failed + * for whatever reason, or if the circuit mysteriously died before + * we could attach any streams, record these two cases. + * + * If we *have* successfully used the circuit, or it appears to + * have been closed by us locally, count it as a success. + * + * Returns 0 if we're done making decisions with the circ, + * or -1 if we want to probe it first. + */ +int +pathbias_check_close(origin_circuit_t *ocirc, int reason) +{ + circuit_t *circ = ô->base_; + + if (!pathbias_should_count(ocirc)) { + return 0; + } + + switch (ocirc->path_state) { + /* If the circuit was closed after building, but before use, we need + * to ensure we were the ones who tried to close it (and not a remote + * actor). */ + case PATH_STATE_BUILD_SUCCEEDED: + if (reason & END_CIRC_REASON_FLAG_REMOTE) { + /* Remote circ close reasons on an unused circuit all could be bias */ + log_info(LD_CIRC, + "Circuit %d remote-closed without successful use for reason %d. " + "Circuit purpose %d currently %d,%s. Len %d.", + ocirc->global_identifier, + reason, circ->purpose, ocirc->has_opened, + circuit_state_to_string(circ->state), + ocirc->build_state->desired_path_len); + pathbias_count_collapse(ocirc); + } else if ((reason & ~END_CIRC_REASON_FLAG_REMOTE) + == END_CIRC_REASON_CHANNEL_CLOSED && + circ->n_chan && + circ->n_chan->reason_for_closing + != CHANNEL_CLOSE_REQUESTED) { + /* If we didn't close the channel ourselves, it could be bias */ + /* XXX: Only count bias if the network is live? + * What about clock jumps/suspends? */ + log_info(LD_CIRC, + "Circuit %d's channel closed without successful use for reason " + "%d, channel reason %d. Circuit purpose %d currently %d,%s. Len " + "%d.", ocirc->global_identifier, + reason, circ->n_chan->reason_for_closing, + circ->purpose, ocirc->has_opened, + circuit_state_to_string(circ->state), + ocirc->build_state->desired_path_len); + pathbias_count_collapse(ocirc); + } else { + pathbias_count_successful_close(ocirc); + } + break; + + /* If we tried to use a circuit but failed, we should probe it to ensure + * it has not been tampered with. */ + case PATH_STATE_USE_ATTEMPTED: + /* XXX: Only probe and/or count failure if the network is live? + * What about clock jumps/suspends? */ + if (pathbias_send_usable_probe(circ) == 0) + return -1; + else + pathbias_count_use_failed(ocirc); + + /* Any circuit where there were attempted streams but no successful + * streams could be bias */ + log_info(LD_CIRC, + "Circuit %d closed without successful use for reason %d. " + "Circuit purpose %d currently %d,%s. Len %d.", + ocirc->global_identifier, + reason, circ->purpose, ocirc->has_opened, + circuit_state_to_string(circ->state), + ocirc->build_state->desired_path_len); + break; + + case PATH_STATE_USE_SUCCEEDED: + pathbias_count_successful_close(ocirc); + pathbias_count_use_success(ocirc); + break; + + case PATH_STATE_USE_FAILED: + pathbias_count_use_failed(ocirc); + break; + + case PATH_STATE_NEW_CIRC: + case PATH_STATE_BUILD_ATTEMPTED: + case PATH_STATE_ALREADY_COUNTED: + default: + // Other states are uninteresting. No stats to count. + break; + } + + ocirc->path_state = PATH_STATE_ALREADY_COUNTED; + + return 0; +} + +/** + * Count a successfully closed circuit. + */ +static void +pathbias_count_successful_close(origin_circuit_t *circ) +{ + entry_guard_t *guard = NULL; + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } + + if (guard) { + /* In the long run: circuit_success ~= successful_circuit_close + + * circ_failure + stream_failure */ + guard->successful_circuits_closed++; + entry_guards_changed(); + } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { + /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to + * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. + * No need to log that case. */ + log_info(LD_CIRC, + "Successfully closed circuit has no known guard. " + "Circuit is a %s currently %s", + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } +} + +/** + * Count a circuit that fails after it is built, but before it can + * carry any traffic. + * + * This is needed because there are ways to destroy a + * circuit after it has successfully completed. Right now, this is + * used for purely informational/debugging purposes. + */ +static void +pathbias_count_collapse(origin_circuit_t *circ) +{ + entry_guard_t *guard = NULL; + + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } + + if (guard) { + guard->collapsed_circuits++; + entry_guards_changed(); + } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { + /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to + * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. + * No need to log that case. */ + log_info(LD_CIRC, + "Destroyed circuit has no known guard. " + "Circuit is a %s currently %s", + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } +} + +/** + * Count a known failed circuit (because we could not probe it). + * + * This counter is informational. + */ +static void +pathbias_count_use_failed(origin_circuit_t *circ) +{ + entry_guard_t *guard = NULL; + if (!pathbias_should_count(circ)) { + return; + } + + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } + + if (guard) { + guard->unusable_circuits++; + entry_guards_changed(); + } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { + /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to + * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. + * No need to log that case. */ + /* XXX note cut-and-paste code in this function compared to nearby + * functions. Would be nice to refactor. -RD */ + log_info(LD_CIRC, + "Stream-failing circuit has no known guard. " + "Circuit is a %s currently %s", + circuit_purpose_to_string(circ->base_.purpose), + circuit_state_to_string(circ->base_.state)); + } +} + +/** + * Count timeouts for path bias log messages. + * + * These counts are purely informational. + */ +void +pathbias_count_timeout(origin_circuit_t *circ) +{ + entry_guard_t *guard = NULL; + + if (!pathbias_should_count(circ)) { + return; + } + + /* For hidden service circs, they can actually be used + * successfully and then time out later (because + * the other side declines to use them). */ + if (circ->path_state == PATH_STATE_USE_SUCCEEDED) { + return; + } + + if (circ->cpath && circ->cpath->extend_info) { + guard = entry_guard_get_by_id_digest( + circ->cpath->extend_info->identity_digest); + } + + if (guard) { + guard->timeouts++; + entry_guards_changed(); + } +} + +/** + * Helper function to count all of the currently opened circuits + * for a guard that are in a given path state range. The state + * range is inclusive on both ends. + */ +static int +pathbias_count_circs_in_states(entry_guard_t *guard, + path_state_t from, + path_state_t to) +{ + circuit_t *circ; + int open_circuits = 0; + + /* Count currently open circuits. Give them the benefit of the doubt. */ + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { + origin_circuit_t *ocirc = NULL; + if (!CIRCUIT_IS_ORIGIN(circ) || /* didn't originate here */ + circ->marked_for_close) /* already counted */ + continue; + + ocirc = TO_ORIGIN_CIRCUIT(circ); + + if (!ocirc->cpath || !ocirc->cpath->extend_info) + continue; + + if (ocirc->path_state >= from && + ocirc->path_state <= to && + pathbias_should_count(ocirc) && + fast_memeq(guard->identity, + ocirc->cpath->extend_info->identity_digest, + DIGEST_LEN)) { + log_debug(LD_CIRC, "Found opened circuit %d in path_state %s", + ocirc->global_identifier, + pathbias_state_to_string(ocirc->path_state)); + open_circuits++; + } + } + + return open_circuits; +} + +/** + * Return the number of circuits counted as successfully closed for + * this guard. + * + * Also add in the currently open circuits to give them the benefit + * of the doubt. + */ +double +pathbias_get_close_success_count(entry_guard_t *guard) +{ + return guard->successful_circuits_closed + + pathbias_count_circs_in_states(guard, + PATH_STATE_BUILD_SUCCEEDED, + PATH_STATE_USE_SUCCEEDED); +} + +/** + * Return the number of circuits counted as successfully used + * this guard. + * + * Also add in the currently open circuits that we are attempting + * to use to give them the benefit of the doubt. + */ +double +pathbias_get_use_success_count(entry_guard_t *guard) +{ + return guard->use_successes + + pathbias_count_circs_in_states(guard, + PATH_STATE_USE_ATTEMPTED, + PATH_STATE_USE_SUCCEEDED); +} + +/** + * Check the path bias use rate against our consensus parameter limits. + * + * Emits a log message if the use success rates are too low. + * + * If pathbias_get_dropguards() is set, we also disable the use of + * very failure prone guards. + */ +static void +pathbias_measure_use_rate(entry_guard_t *guard) +{ + const or_options_t *options = get_options(); + + if (guard->use_attempts > pathbias_get_min_use(options)) { + /* Note: We rely on the < comparison here to allow us to set a 0 + * rate and disable the feature entirely. If refactoring, don't + * change to <= */ + if (pathbias_get_use_success_count(guard)/guard->use_attempts + < pathbias_get_extreme_use_rate(options)) { + /* Dropping is currently disabled by default. */ + if (pathbias_get_dropguards(options)) { + if (!guard->path_bias_disabled) { + log_warn(LD_CIRC, + "Your Guard %s ($%s) is failing to carry an extremely large " + "amount of stream on its circuits. " + "To avoid potential route manipulation attacks, Tor has " + "disabled use of this guard. " + "Use counts are %ld/%ld. Success counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + guard->path_bias_disabled = 1; + guard->bad_since = approx_time(); + entry_guards_changed(); + return; + } + } else if (!guard->path_bias_use_extreme) { + guard->path_bias_use_extreme = 1; + log_warn(LD_CIRC, + "Your Guard %s ($%s) is failing to carry an extremely large " + "amount of streams on its circuits. " + "This could indicate a route manipulation attack, network " + "overload, bad local network connectivity, or a bug. " + "Use counts are %ld/%ld. Success counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + } + } else if (pathbias_get_use_success_count(guard)/guard->use_attempts + < pathbias_get_notice_use_rate(options)) { + if (!guard->path_bias_use_noticed) { + guard->path_bias_use_noticed = 1; + log_notice(LD_CIRC, + "Your Guard %s ($%s) is failing to carry more streams on its " + "circuits than usual. " + "Most likely this means the Tor network is overloaded " + "or your network connection is poor. " + "Use counts are %ld/%ld. Success counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + } + } + } +} + +/** + * Check the path bias circuit close status rates against our consensus + * parameter limits. + * + * Emits a log message if the use success rates are too low. + * + * If pathbias_get_dropguards() is set, we also disable the use of + * very failure prone guards. + * + * XXX: This function shares similar log messages and checks to + * pathbias_measure_use_rate(). It may be possible to combine them + * eventually, especially if we can ever remove the need for 3 + * levels of closure warns (if the overall circuit failure rate + * goes down with ntor). One way to do so would be to multiply + * the build rate with the use rate to get an idea of the total + * fraction of the total network paths the user is able to use. + * See ticket #8159. + */ +static void +pathbias_measure_close_rate(entry_guard_t *guard) +{ + const or_options_t *options = get_options(); + + if (guard->circ_attempts > pathbias_get_min_circs(options)) { + /* Note: We rely on the < comparison here to allow us to set a 0 + * rate and disable the feature entirely. If refactoring, don't + * change to <= */ + if (pathbias_get_close_success_count(guard)/guard->circ_attempts + < pathbias_get_extreme_rate(options)) { + /* Dropping is currently disabled by default. */ + if (pathbias_get_dropguards(options)) { + if (!guard->path_bias_disabled) { + log_warn(LD_CIRC, + "Your Guard %s ($%s) is failing an extremely large " + "amount of circuits. " + "To avoid potential route manipulation attacks, Tor has " + "disabled use of this guard. " + "Success counts are %ld/%ld. Use counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + guard->path_bias_disabled = 1; + guard->bad_since = approx_time(); + entry_guards_changed(); + return; + } + } else if (!guard->path_bias_extreme) { + guard->path_bias_extreme = 1; + log_warn(LD_CIRC, + "Your Guard %s ($%s) is failing an extremely large " + "amount of circuits. " + "This could indicate a route manipulation attack, " + "extreme network overload, or a bug. " + "Success counts are %ld/%ld. Use counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + } + } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts + < pathbias_get_warn_rate(options)) { + if (!guard->path_bias_warned) { + guard->path_bias_warned = 1; + log_warn(LD_CIRC, + "Your Guard %s ($%s) is failing a very large " + "amount of circuits. " + "Most likely this means the Tor network is " + "overloaded, but it could also mean an attack against " + "you or potentially the guard itself. " + "Success counts are %ld/%ld. Use counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + } + } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts + < pathbias_get_notice_rate(options)) { + if (!guard->path_bias_noticed) { + guard->path_bias_noticed = 1; + log_notice(LD_CIRC, + "Your Guard %s ($%s) is failing more circuits than " + "usual. " + "Most likely this means the Tor network is overloaded. " + "Success counts are %ld/%ld. Use counts are %ld/%ld. " + "%ld circuits completed, %ld were unusable, %ld collapsed, " + "and %ld timed out. " + "For reference, your timeout cutoff is %ld seconds.", + guard->nickname, hex_str(guard->identity, DIGEST_LEN), + tor_lround(pathbias_get_close_success_count(guard)), + tor_lround(guard->circ_attempts), + tor_lround(pathbias_get_use_success_count(guard)), + tor_lround(guard->use_attempts), + tor_lround(guard->circ_successes), + tor_lround(guard->unusable_circuits), + tor_lround(guard->collapsed_circuits), + tor_lround(guard->timeouts), + tor_lround(get_circuit_build_close_time_ms()/1000)); + } + } + } +} + +/** + * This function scales the path bias use rates if we have + * more data than the scaling threshold. This allows us to + * be more sensitive to recent measurements. + * + * XXX: The attempt count transfer stuff here might be done + * better by keeping separate pending counters that get + * transfered at circuit close. See ticket #8160. + */ +static void +pathbias_scale_close_rates(entry_guard_t *guard) +{ + const or_options_t *options = get_options(); + + /* If we get a ton of circuits, just scale everything down */ + if (guard->circ_attempts > pathbias_get_scale_threshold(options)) { + double scale_ratio = pathbias_get_scale_ratio(options); + int opened_attempts = pathbias_count_circs_in_states(guard, + PATH_STATE_BUILD_ATTEMPTED, PATH_STATE_BUILD_ATTEMPTED); + int opened_built = pathbias_count_circs_in_states(guard, + PATH_STATE_BUILD_SUCCEEDED, + PATH_STATE_USE_FAILED); + /* Verify that the counts are sane before and after scaling */ + int counts_are_sane = (guard->circ_attempts >= guard->circ_successes); + + guard->circ_attempts -= (opened_attempts+opened_built); + guard->circ_successes -= opened_built; + + guard->circ_attempts *= scale_ratio; + guard->circ_successes *= scale_ratio; + guard->timeouts *= scale_ratio; + guard->successful_circuits_closed *= scale_ratio; + guard->collapsed_circuits *= scale_ratio; + guard->unusable_circuits *= scale_ratio; + + guard->circ_attempts += (opened_attempts+opened_built); + guard->circ_successes += opened_built; + + entry_guards_changed(); + + log_info(LD_CIRC, + "Scaled pathbias counts to (%f,%f)/%f (%d/%d open) for guard " + "%s ($%s)", + guard->circ_successes, guard->successful_circuits_closed, + guard->circ_attempts, opened_built, opened_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + + /* Have the counts just become invalid by this scaling attempt? */ + if (counts_are_sane && guard->circ_attempts < guard->circ_successes) { + log_notice(LD_BUG, + "Scaling has mangled pathbias counts to %f/%f (%d/%d open) " + "for guard %s ($%s)", + guard->circ_successes, guard->circ_attempts, opened_built, + opened_attempts, guard->nickname, + hex_str(guard->identity, DIGEST_LEN)); + } + } +} + +/** + * This function scales the path bias circuit close rates if we have + * more data than the scaling threshold. This allows us to be more + * sensitive to recent measurements. + * + * XXX: The attempt count transfer stuff here might be done + * better by keeping separate pending counters that get + * transfered at circuit close. See ticket #8160. + */ +void +pathbias_scale_use_rates(entry_guard_t *guard) +{ + const or_options_t *options = get_options(); + + /* If we get a ton of circuits, just scale everything down */ + if (guard->use_attempts > pathbias_get_scale_use_threshold(options)) { + double scale_ratio = pathbias_get_scale_ratio(options); + int opened_attempts = pathbias_count_circs_in_states(guard, + PATH_STATE_USE_ATTEMPTED, PATH_STATE_USE_SUCCEEDED); + /* Verify that the counts are sane before and after scaling */ + int counts_are_sane = (guard->use_attempts >= guard->use_successes); + + guard->use_attempts -= opened_attempts; + + guard->use_attempts *= scale_ratio; + guard->use_successes *= scale_ratio; + + guard->use_attempts += opened_attempts; + + log_info(LD_CIRC, + "Scaled pathbias use counts to %f/%f (%d open) for guard %s ($%s)", + guard->use_successes, guard->use_attempts, opened_attempts, + guard->nickname, hex_str(guard->identity, DIGEST_LEN)); + + /* Have the counts just become invalid by this scaling attempt? */ + if (counts_are_sane && guard->use_attempts < guard->use_successes) { + log_notice(LD_BUG, + "Scaling has mangled pathbias usage counts to %f/%f " + "(%d open) for guard %s ($%s)", + guard->circ_successes, guard->circ_attempts, + opened_attempts, guard->nickname, + hex_str(guard->identity, DIGEST_LEN)); + } + + entry_guards_changed(); + } +} + diff --git a/src/or/circpathbias.h b/src/or/circpathbias.h new file mode 100644 index 0000000000..c95d801a4b --- /dev/null +++ b/src/or/circpathbias.h @@ -0,0 +1,29 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file circuitbuild.h + * \brief Header file for circuitbuild.c. + **/ + +#ifndef TOR_CIRCPATHBIAS_H +#define TOR_CIRCPATHBIAS_H + +double pathbias_get_extreme_rate(const or_options_t *options); +double pathbias_get_extreme_use_rate(const or_options_t *options); +int pathbias_get_dropguards(const or_options_t *options); +void pathbias_count_timeout(origin_circuit_t *circ); +void pathbias_count_build_success(origin_circuit_t *circ); +int pathbias_count_build_attempt(origin_circuit_t *circ); +int pathbias_check_close(origin_circuit_t *circ, int reason); +int pathbias_check_probe_response(circuit_t *circ, const cell_t *cell); +void pathbias_count_use_attempt(origin_circuit_t *circ); +void pathbias_mark_use_success(origin_circuit_t *circ); +void pathbias_mark_use_rollback(origin_circuit_t *circ); +const char *pathbias_state_to_string(path_state_t state); + +#endif + diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 43d2ffe4db..8e6bb59ef3 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -11,6 +11,7 @@ #include "or.h" #include "channel.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuitstats.h" @@ -40,19 +41,11 @@ #include "routerparse.h" #include "routerset.h" #include "crypto.h" -#include "connection_edge.h" #ifndef MIN #define MIN(a,b) ((a)<(b)?(a):(b)) #endif -/********* START VARIABLES **********/ - -/** A global list of all circuits at this hop. */ -extern circuit_t *global_circuitlist; - -/********* END VARIABLES ************/ - static channel_t * channel_connect_for_circuit(const tor_addr_t *addr, uint16_t port, const char *id_digest); @@ -64,14 +57,6 @@ static crypt_path_t *onion_next_hop_in_cpath(crypt_path_t *cpath); static int onion_extend_cpath(origin_circuit_t *circ); static int count_acceptable_nodes(smartlist_t *routers); static int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice); -static int entry_guard_inc_circ_attempt_count(entry_guard_t *guard); -static void pathbias_count_build_success(origin_circuit_t *circ); -static void pathbias_count_successful_close(origin_circuit_t *circ); -static void pathbias_count_collapse(origin_circuit_t *circ); -static void pathbias_count_use_failed(origin_circuit_t *circ); -static void pathbias_measure_use_rate(entry_guard_t *guard); -static void pathbias_measure_close_rate(entry_guard_t *guard); -static void pathbias_scale_use_rates(entry_guard_t *guard); /** This function tries to get a channel to the specified endpoint, * and then calls command_setup_channel() to give it the right @@ -600,16 +585,18 @@ should_use_create_fast_for_circuit(origin_circuit_t *circ) if (!circ->cpath->extend_info->onion_key) return 1; /* our hand is forced: only a create_fast will work. */ - if (!options->FastFirstHopPK) - return 0; /* we prefer to avoid create_fast */ if (public_server_mode(options)) { /* We're a server, and we know an onion key. We can choose. * Prefer to blend our circuit into the other circuits we are * creating on behalf of others. */ return 0; } + if (options->FastFirstHopPK == -1) { + /* option is "auto", so look at the consensus. */ + return networkstatus_get_param(NULL, "usecreatefast", 1, 0, 1); + } - return 1; + return options->FastFirstHopPK; } /** Return true if <b>circ</b> is the type of circuit we want to count @@ -779,20 +766,24 @@ circuit_send_next_onion_skin(origin_circuit_t *circ) * it off at, we probably had a suspend event along this codepath, * and we should discard the value. */ - if (timediff < 0 || timediff > 2*circ_times.close_ms+1000) { + if (timediff < 0 || + timediff > 2*get_circuit_build_close_time_ms()+1000) { log_notice(LD_CIRC, "Strange value for circuit build time: %ldmsec. " "Assuming clock jump. Purpose %d (%s)", timediff, circ->base_.purpose, circuit_purpose_to_string(circ->base_.purpose)); } else if (!circuit_build_times_disabled()) { /* Only count circuit times if the network is live */ - if (circuit_build_times_network_check_live(&circ_times)) { - circuit_build_times_add_time(&circ_times, (build_time_t)timediff); - circuit_build_times_set_timeout(&circ_times); + if (circuit_build_times_network_check_live( + get_circuit_build_times())) { + circuit_build_times_add_time(get_circuit_build_times_mutable(), + (build_time_t)timediff); + circuit_build_times_set_timeout(get_circuit_build_times_mutable()); } if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { - circuit_build_times_network_circ_success(&circ_times); + circuit_build_times_network_circ_success( + get_circuit_build_times_mutable()); } } } @@ -1087,1516 +1078,6 @@ circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data, return 0; } -/** The minimum number of circuit attempts before we start - * thinking about warning about path bias and dropping guards */ -static int -pathbias_get_min_circs(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_MIN_CIRC 150 - if (options->PathBiasCircThreshold >= 5) - return options->PathBiasCircThreshold; - else - return networkstatus_get_param(NULL, "pb_mincircs", - DFLT_PATH_BIAS_MIN_CIRC, - 5, INT32_MAX); -} - -/** The circuit success rate below which we issue a notice */ -static double -pathbias_get_notice_rate(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_NOTICE_PCT 70 - if (options->PathBiasNoticeRate >= 0.0) - return options->PathBiasNoticeRate; - else - return networkstatus_get_param(NULL, "pb_noticepct", - DFLT_PATH_BIAS_NOTICE_PCT, 0, 100)/100.0; -} - -/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ -/** The circuit success rate below which we issue a warn */ -static double -pathbias_get_warn_rate(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_WARN_PCT 50 - if (options->PathBiasWarnRate >= 0.0) - return options->PathBiasWarnRate; - else - return networkstatus_get_param(NULL, "pb_warnpct", - DFLT_PATH_BIAS_WARN_PCT, 0, 100)/100.0; -} - -/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ -/** - * The extreme rate is the rate at which we would drop the guard, - * if pb_dropguard is also set. Otherwise we just warn. - */ -double -pathbias_get_extreme_rate(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_EXTREME_PCT 30 - if (options->PathBiasExtremeRate >= 0.0) - return options->PathBiasExtremeRate; - else - return networkstatus_get_param(NULL, "pb_extremepct", - DFLT_PATH_BIAS_EXTREME_PCT, 0, 100)/100.0; -} - -/* XXXX024 I'd like to have this be static again, but entrynodes.c needs it. */ -/** - * If 1, we actually disable use of guards that fall below - * the extreme_pct. - */ -int -pathbias_get_dropguards(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_DROP_GUARDS 0 - if (options->PathBiasDropGuards >= 0) - return options->PathBiasDropGuards; - else - return networkstatus_get_param(NULL, "pb_dropguards", - DFLT_PATH_BIAS_DROP_GUARDS, 0, 1); -} - -/** - * This is the number of circuits at which we scale our - * counts by mult_factor/scale_factor. Note, this count is - * not exact, as we only perform the scaling in the event - * of no integer truncation. - */ -static int -pathbias_get_scale_threshold(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_SCALE_THRESHOLD 300 - if (options->PathBiasScaleThreshold >= 10) - return options->PathBiasScaleThreshold; - else - return networkstatus_get_param(NULL, "pb_scalecircs", - DFLT_PATH_BIAS_SCALE_THRESHOLD, 10, - INT32_MAX); -} - -/** - * Compute the path bias scaling ratio from the consensus - * parameters pb_multfactor/pb_scalefactor. - * - * Returns a value in (0, 1.0] which we multiply our pathbias - * counts with to scale them down. - */ -static double -pathbias_get_scale_ratio(const or_options_t *options) -{ - /* - * The scale factor is the denominator for our scaling - * of circuit counts for our path bias window. - * - * Note that our use of doubles for the path bias state - * file means that powers of 2 work best here. - */ - int denominator = networkstatus_get_param(NULL, "pb_scalefactor", - 2, 2, INT32_MAX); - (void) options; - /** - * The mult factor is the numerator for our scaling - * of circuit counts for our path bias window. It - * allows us to scale by fractions. - */ - return networkstatus_get_param(NULL, "pb_multfactor", - 1, 1, denominator)/((double)denominator); -} - -/** The minimum number of circuit usage attempts before we start - * thinking about warning about path use bias and dropping guards */ -static int -pathbias_get_min_use(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_MIN_USE 20 - if (options->PathBiasUseThreshold >= 3) - return options->PathBiasUseThreshold; - else - return networkstatus_get_param(NULL, "pb_minuse", - DFLT_PATH_BIAS_MIN_USE, - 3, INT32_MAX); -} - -/** The circuit use success rate below which we issue a notice */ -static double -pathbias_get_notice_use_rate(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_NOTICE_USE_PCT 80 - if (options->PathBiasNoticeUseRate >= 0.0) - return options->PathBiasNoticeUseRate; - else - return networkstatus_get_param(NULL, "pb_noticeusepct", - DFLT_PATH_BIAS_NOTICE_USE_PCT, - 0, 100)/100.0; -} - -/** - * The extreme use rate is the rate at which we would drop the guard, - * if pb_dropguard is also set. Otherwise we just warn. - */ -double -pathbias_get_extreme_use_rate(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_EXTREME_USE_PCT 60 - if (options->PathBiasExtremeUseRate >= 0.0) - return options->PathBiasExtremeUseRate; - else - return networkstatus_get_param(NULL, "pb_extremeusepct", - DFLT_PATH_BIAS_EXTREME_USE_PCT, - 0, 100)/100.0; -} - -/** - * This is the number of circuits at which we scale our - * use counts by mult_factor/scale_factor. Note, this count is - * not exact, as we only perform the scaling in the event - * of no integer truncation. - */ -static int -pathbias_get_scale_use_threshold(const or_options_t *options) -{ -#define DFLT_PATH_BIAS_SCALE_USE_THRESHOLD 100 - if (options->PathBiasScaleUseThreshold >= 10) - return options->PathBiasScaleUseThreshold; - else - return networkstatus_get_param(NULL, "pb_scaleuse", - DFLT_PATH_BIAS_SCALE_USE_THRESHOLD, - 10, INT32_MAX); -} - -/** - * Convert a Guard's path state to string. - */ -const char * -pathbias_state_to_string(path_state_t state) -{ - switch (state) { - case PATH_STATE_NEW_CIRC: - return "new"; - case PATH_STATE_BUILD_ATTEMPTED: - return "build attempted"; - case PATH_STATE_BUILD_SUCCEEDED: - return "build succeeded"; - case PATH_STATE_USE_ATTEMPTED: - return "use attempted"; - case PATH_STATE_USE_SUCCEEDED: - return "use succeeded"; - case PATH_STATE_USE_FAILED: - return "use failed"; - case PATH_STATE_ALREADY_COUNTED: - return "already counted"; - } - - return "unknown"; -} - -/** - * This function decides if a circuit has progressed far enough to count - * as a circuit "attempt". As long as end-to-end tagging is possible, - * we assume the adversary will use it over hop-to-hop failure. Therefore, - * we only need to account bias for the last hop. This should make us - * much more resilient to ambient circuit failure, and also make that - * failure easier to measure (we only need to measure Exit failure rates). - */ -static int -pathbias_is_new_circ_attempt(origin_circuit_t *circ) -{ -#define N2N_TAGGING_IS_POSSIBLE -#ifdef N2N_TAGGING_IS_POSSIBLE - /* cpath is a circular list. We want circs with more than one hop, - * and the second hop must be waiting for keys still (it's just - * about to get them). */ - return circ->cpath && - circ->cpath->next != circ->cpath && - circ->cpath->next->state == CPATH_STATE_AWAITING_KEYS; -#else - /* If tagging attacks are no longer possible, we probably want to - * count bias from the first hop. However, one could argue that - * timing-based tagging is still more useful than per-hop failure. - * In which case, we'd never want to use this. - */ - return circ->cpath && - circ->cpath->state == CPATH_STATE_AWAITING_KEYS; -#endif -} - -/** - * Decide if the path bias code should count a circuit. - * - * @returns 1 if we should count it, 0 otherwise. - */ -static int -pathbias_should_count(origin_circuit_t *circ) -{ -#define PATHBIAS_COUNT_INTERVAL (600) - static ratelim_t count_limit = - RATELIM_INIT(PATHBIAS_COUNT_INTERVAL); - char *rate_msg = NULL; - - /* We can't do path bias accounting without entry guards. - * Testing and controller circuits also have no guards. - * - * We also don't count server-side rends, because their - * endpoint could be chosen maliciously. - * Similarly, we can't count client-side intro attempts, - * because clients can be manipulated into connecting to - * malicious intro points. */ - if (get_options()->UseEntryGuards == 0 || - circ->base_.purpose == CIRCUIT_PURPOSE_TESTING || - circ->base_.purpose == CIRCUIT_PURPOSE_CONTROLLER || - circ->base_.purpose == CIRCUIT_PURPOSE_S_CONNECT_REND || - circ->base_.purpose == CIRCUIT_PURPOSE_S_REND_JOINED || - (circ->base_.purpose >= CIRCUIT_PURPOSE_C_INTRODUCING && - circ->base_.purpose <= CIRCUIT_PURPOSE_C_INTRODUCE_ACKED)) { - - /* Check to see if the shouldcount result has changed due to a - * unexpected purpose change that would affect our results. - * - * The reason we check the path state too here is because for the - * cannibalized versions of these purposes, we count them as successful - * before their purpose change. - */ - if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED - && circ->path_state != PATH_STATE_ALREADY_COUNTED) { - log_info(LD_BUG, - "Circuit %d is now being ignored despite being counted " - "in the past. Purpose is %s, path state is %s", - circ->global_identifier, - circuit_purpose_to_string(circ->base_.purpose), - pathbias_state_to_string(circ->path_state)); - } - circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED; - return 0; - } - - /* Completely ignore one hop circuits */ - if (circ->build_state->onehop_tunnel || - circ->build_state->desired_path_len == 1) { - /* Check for inconsistency */ - if (circ->build_state->desired_path_len != 1 || - !circ->build_state->onehop_tunnel) { - if ((rate_msg = rate_limit_log(&count_limit, approx_time()))) { - log_info(LD_BUG, - "One-hop circuit has length %d. Path state is %s. " - "Circuit is a %s currently %s.%s", - circ->build_state->desired_path_len, - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - tor_fragile_assert(); - } - - /* Check to see if the shouldcount result has changed due to a - * unexpected change that would affect our results */ - if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_COUNTED) { - log_info(LD_BUG, - "One-hop circuit %d is now being ignored despite being counted " - "in the past. Purpose is %s, path state is %s", - circ->global_identifier, - circuit_purpose_to_string(circ->base_.purpose), - pathbias_state_to_string(circ->path_state)); - } - circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED; - return 0; - } - - /* Check to see if the shouldcount result has changed due to a - * unexpected purpose change that would affect our results */ - if (circ->pathbias_shouldcount == PATHBIAS_SHOULDCOUNT_IGNORED) { - log_info(LD_BUG, - "Circuit %d is now being counted despite being ignored " - "in the past. Purpose is %s, path state is %s", - circ->global_identifier, - circuit_purpose_to_string(circ->base_.purpose), - pathbias_state_to_string(circ->path_state)); - } - circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_COUNTED; - - return 1; -} - -/** - * Check our circuit state to see if this is a successful circuit attempt. - * If so, record it in the current guard's path bias circ_attempt count. - * - * Also check for several potential error cases for bug #6475. - */ -static int -pathbias_count_build_attempt(origin_circuit_t *circ) -{ -#define CIRC_ATTEMPT_NOTICE_INTERVAL (600) - static ratelim_t circ_attempt_notice_limit = - RATELIM_INIT(CIRC_ATTEMPT_NOTICE_INTERVAL); - char *rate_msg = NULL; - - if (!pathbias_should_count(circ)) { - return 0; - } - - if (pathbias_is_new_circ_attempt(circ)) { - /* Help track down the real cause of bug #6475: */ - if (circ->has_opened && circ->path_state != PATH_STATE_BUILD_ATTEMPTED) { - if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, - approx_time()))) { - log_info(LD_BUG, - "Opened circuit is in strange path state %s. " - "Circuit is a %s currently %s.%s", - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - - /* Don't re-count cannibalized circs.. */ - if (!circ->has_opened) { - entry_guard_t *guard = NULL; - - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } else if (circ->base_.n_chan) { - guard = - entry_guard_get_by_id_digest(circ->base_.n_chan->identity_digest); - } - - if (guard) { - if (circ->path_state == PATH_STATE_NEW_CIRC) { - circ->path_state = PATH_STATE_BUILD_ATTEMPTED; - - if (entry_guard_inc_circ_attempt_count(guard) < 0) { - /* Bogus guard; we already warned. */ - return -END_CIRC_REASON_TORPROTOCOL; - } - } else { - if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, - approx_time()))) { - log_info(LD_BUG, - "Unopened circuit has strange path state %s. " - "Circuit is a %s currently %s.%s", - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - } else { - if ((rate_msg = rate_limit_log(&circ_attempt_notice_limit, - approx_time()))) { - log_info(LD_CIRC, - "Unopened circuit has no known guard. " - "Circuit is a %s currently %s.%s", - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - } - } - - return 0; -} - -/** - * Check our circuit state to see if this is a successful circuit - * completion. If so, record it in the current guard's path bias - * success count. - * - * Also check for several potential error cases for bug #6475. - */ -static void -pathbias_count_build_success(origin_circuit_t *circ) -{ -#define SUCCESS_NOTICE_INTERVAL (600) - static ratelim_t success_notice_limit = - RATELIM_INIT(SUCCESS_NOTICE_INTERVAL); - char *rate_msg = NULL; - entry_guard_t *guard = NULL; - - if (!pathbias_should_count(circ)) { - return; - } - - /* Don't count cannibalized/reused circs for path bias - * "build" success, since they get counted under "use" success. */ - if (!circ->has_opened) { - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } - - if (guard) { - if (circ->path_state == PATH_STATE_BUILD_ATTEMPTED) { - circ->path_state = PATH_STATE_BUILD_SUCCEEDED; - guard->circ_successes++; - entry_guards_changed(); - - log_info(LD_CIRC, "Got success count %f/%f for guard %s ($%s)", - guard->circ_successes, guard->circ_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - } else { - if ((rate_msg = rate_limit_log(&success_notice_limit, - approx_time()))) { - log_info(LD_BUG, - "Succeeded circuit is in strange path state %s. " - "Circuit is a %s currently %s.%s", - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - - if (guard->circ_attempts < guard->circ_successes) { - log_notice(LD_BUG, "Unexpectedly high successes counts (%f/%f) " - "for guard %s ($%s)", - guard->circ_successes, guard->circ_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - } - /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to - * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. - * No need to log that case. */ - } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { - if ((rate_msg = rate_limit_log(&success_notice_limit, - approx_time()))) { - log_info(LD_CIRC, - "Completed circuit has no known guard. " - "Circuit is a %s currently %s.%s", - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - } else { - if (circ->path_state < PATH_STATE_BUILD_SUCCEEDED) { - if ((rate_msg = rate_limit_log(&success_notice_limit, - approx_time()))) { - log_info(LD_BUG, - "Opened circuit is in strange path state %s. " - "Circuit is a %s currently %s.%s", - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state), - rate_msg); - tor_free(rate_msg); - } - } - } -} - -/** - * Record an attempt to use a circuit. Changes the circuit's - * path state and update its guard's usage counter. - * - * Used for path bias usage accounting. - */ -void -pathbias_count_use_attempt(origin_circuit_t *circ) -{ - entry_guard_t *guard; - - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->path_state < PATH_STATE_BUILD_SUCCEEDED) { - log_notice(LD_BUG, - "Used circuit is in strange path state %s. " - "Circuit is a %s currently %s.", - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } else if (circ->path_state < PATH_STATE_USE_ATTEMPTED) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - if (guard) { - pathbias_measure_use_rate(guard); - pathbias_scale_use_rates(guard); - guard->use_attempts++; - entry_guards_changed(); - - log_debug(LD_CIRC, - "Marked circuit %d (%f/%f) as used for guard %s ($%s).", - circ->global_identifier, - guard->use_successes, guard->use_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - } - - circ->path_state = PATH_STATE_USE_ATTEMPTED; - } else { - /* Harmless but educational log message */ - log_info(LD_CIRC, - "Used circuit %d is already in path state %s. " - "Circuit is a %s currently %s.", - circ->global_identifier, - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } - - return; -} - -/** - * Check the circuit's path state is appropriate and mark it as - * successfully used. Used for path bias usage accounting. - * - * We don't actually increment the guard's counters until - * pathbias_check_close(), because the circuit can still transition - * back to PATH_STATE_USE_ATTEMPTED if a stream fails later (this - * is done so we can probe the circuit for liveness at close). - */ -void -pathbias_mark_use_success(origin_circuit_t *circ) -{ - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->path_state < PATH_STATE_USE_ATTEMPTED) { - log_notice(LD_BUG, - "Used circuit %d is in strange path state %s. " - "Circuit is a %s currently %s.", - circ->global_identifier, - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - - pathbias_count_use_attempt(circ); - } - - /* We don't do any accounting at the guard until actual circuit close */ - circ->path_state = PATH_STATE_USE_SUCCEEDED; - - return; -} - -/** - * If a stream ever detatches from a circuit in a retriable way, - * we need to mark this circuit as still needing either another - * successful stream, or in need of a probe. - * - * An adversary could let the first stream request succeed (ie the - * resolve), but then tag and timeout the remainder (via cell - * dropping), forcing them on new circuits. - * - * Rolling back the state will cause us to probe such circuits, which - * should lead to probe failures in the event of such tagging due to - * either unrecognized cells coming in while we wait for the probe, - * or the cipher state getting out of sync in the case of dropped cells. - */ -void -pathbias_mark_use_rollback(origin_circuit_t *circ) -{ - if (circ->path_state == PATH_STATE_USE_SUCCEEDED) { - log_info(LD_CIRC, - "Rolling back pathbias use state to 'attempted' for detached " - "circuit %d", circ->global_identifier); - circ->path_state = PATH_STATE_USE_ATTEMPTED; - } -} - -/** - * Actually count a circuit success towards a guard's usage counters - * if the path state is appropriate. - */ -static void -pathbias_count_use_success(origin_circuit_t *circ) -{ - entry_guard_t *guard; - - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->path_state != PATH_STATE_USE_SUCCEEDED) { - log_notice(LD_BUG, - "Successfully used circuit %d is in strange path state %s. " - "Circuit is a %s currently %s.", - circ->global_identifier, - pathbias_state_to_string(circ->path_state), - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } else { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - if (guard) { - guard->use_successes++; - entry_guards_changed(); - - if (guard->use_attempts < guard->use_successes) { - log_notice(LD_BUG, "Unexpectedly high use successes counts (%f/%f) " - "for guard %s=%s", - guard->use_successes, guard->use_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - } - - log_debug(LD_CIRC, - "Marked circuit %d (%f/%f) as used successfully for guard " - "%s ($%s).", - circ->global_identifier, guard->use_successes, - guard->use_attempts, guard->nickname, - hex_str(guard->identity, DIGEST_LEN)); - } - } - - return; -} - -/** - * Send a probe down a circuit that the client attempted to use, - * but for which the stream timed out/failed. The probe is a - * RELAY_BEGIN cell with a 0.a.b.c destination address, which - * the exit will reject and reply back, echoing that address. - * - * The reason for such probes is because it is possible to bias - * a user's paths simply by causing timeouts, and these timeouts - * are not possible to differentiate from unresponsive servers. - * - * The probe is sent at the end of the circuit lifetime for two - * reasons: to prevent cryptographic taggers from being able to - * drop cells to cause timeouts, and to prevent easy recognition - * of probes before any real client traffic happens. - * - * Returns -1 if we couldn't probe, 0 otherwise. - */ -static int -pathbias_send_usable_probe(circuit_t *circ) -{ - /* Based on connection_ap_handshake_send_begin() */ - char payload[CELL_PAYLOAD_SIZE]; - int payload_len; - origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); - crypt_path_t *cpath_layer = NULL; - char *probe_nonce = NULL; - - tor_assert(ocirc); - - cpath_layer = ocirc->cpath->prev; - - if (cpath_layer->state != CPATH_STATE_OPEN) { - /* This can happen for cannibalized circuits. Their - * last hop isn't yet open */ - log_info(LD_CIRC, - "Got pathbias probe request for unopened circuit %d. " - "Opened %d, len %d", ocirc->global_identifier, - ocirc->has_opened, ocirc->build_state->desired_path_len); - return -1; - } - - /* We already went down this road. */ - if (circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING && - ocirc->pathbias_probe_id) { - log_info(LD_CIRC, - "Got pathbias probe request for circuit %d with " - "outstanding probe", ocirc->global_identifier); - return -1; - } - - /* Can't probe if the channel isn't open */ - if (circ->n_chan == NULL || - (circ->n_chan->state != CHANNEL_STATE_OPEN - && circ->n_chan->state != CHANNEL_STATE_MAINT)) { - log_info(LD_CIRC, - "Skipping pathbias probe for circuit %d: Channel is not open.", - ocirc->global_identifier); - return -1; - } - - circuit_change_purpose(circ, CIRCUIT_PURPOSE_PATH_BIAS_TESTING); - - /* Update timestamp for when circuit_expire_building() should kill us */ - tor_gettimeofday(&circ->timestamp_began); - - /* Generate a random address for the nonce */ - crypto_rand((char*)ô->pathbias_probe_nonce, - sizeof(ocirc->pathbias_probe_nonce)); - ocirc->pathbias_probe_nonce &= 0x00ffffff; - probe_nonce = tor_dup_ip(ocirc->pathbias_probe_nonce); - - tor_snprintf(payload,RELAY_PAYLOAD_SIZE, "%s:25", probe_nonce); - payload_len = (int)strlen(payload)+1; - - // XXX: need this? Can we assume ipv4 will always be supported? - // If not, how do we tell? - //if (payload_len <= RELAY_PAYLOAD_SIZE - 4 && edge_conn->begincell_flags) { - // set_uint32(payload + payload_len, htonl(edge_conn->begincell_flags)); - // payload_len += 4; - //} - - /* Generate+Store stream id, make sure it's non-zero */ - ocirc->pathbias_probe_id = get_unique_stream_id_by_circ(ocirc); - - if (ocirc->pathbias_probe_id==0) { - log_warn(LD_CIRC, - "Ran out of stream IDs on circuit %u during " - "pathbias probe attempt.", ocirc->global_identifier); - tor_free(probe_nonce); - return -1; - } - - log_info(LD_CIRC, - "Sending pathbias testing cell to %s:25 on stream %d for circ %d.", - probe_nonce, ocirc->pathbias_probe_id, ocirc->global_identifier); - tor_free(probe_nonce); - - /* Send a test relay cell */ - if (relay_send_command_from_edge(ocirc->pathbias_probe_id, circ, - RELAY_COMMAND_BEGIN, payload, - payload_len, cpath_layer) < 0) { - log_notice(LD_CIRC, - "Failed to send pathbias probe cell on circuit %d.", - ocirc->global_identifier); - return -1; - } - - /* Mark it freshly dirty so it doesn't get expired in the meantime */ - circ->timestamp_dirty = time(NULL); - - return 0; -} - -/** - * Check the response to a pathbias probe, to ensure the - * cell is recognized and the nonce and other probe - * characteristics are as expected. - * - * If the response is valid, return 0. Otherwise return < 0. - */ -int -pathbias_check_probe_response(circuit_t *circ, const cell_t *cell) -{ - /* Based on connection_edge_process_relay_cell() */ - relay_header_t rh; - int reason; - uint32_t ipv4_host; - origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); - - tor_assert(cell); - tor_assert(ocirc); - tor_assert(circ->purpose == CIRCUIT_PURPOSE_PATH_BIAS_TESTING); - - relay_header_unpack(&rh, cell->payload); - - reason = rh.length > 0 ? - get_uint8(cell->payload+RELAY_HEADER_SIZE) : END_STREAM_REASON_MISC; - - if (rh.command == RELAY_COMMAND_END && - reason == END_STREAM_REASON_EXITPOLICY && - ocirc->pathbias_probe_id == rh.stream_id) { - - /* Check length+extract host: It is in network order after the reason code. - * See connection_edge_end(). */ - if (rh.length < 9) { /* reason+ipv4+dns_ttl */ - log_notice(LD_PROTOCOL, - "Short path bias probe response length field (%d).", rh.length); - return - END_CIRC_REASON_TORPROTOCOL; - } - - ipv4_host = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+1)); - - /* Check nonce */ - if (ipv4_host == ocirc->pathbias_probe_nonce) { - pathbias_mark_use_success(ocirc); - circuit_mark_for_close(circ, END_CIRC_REASON_FINISHED); - log_info(LD_CIRC, - "Got valid path bias probe back for circ %d, stream %d.", - ocirc->global_identifier, ocirc->pathbias_probe_id); - return 0; - } else { - log_notice(LD_CIRC, - "Got strange probe value 0x%x vs 0x%x back for circ %d, " - "stream %d.", ipv4_host, ocirc->pathbias_probe_nonce, - ocirc->global_identifier, ocirc->pathbias_probe_id); - return -1; - } - } - log_info(LD_CIRC, - "Got another cell back back on pathbias probe circuit %d: " - "Command: %d, Reason: %d, Stream-id: %d", - ocirc->global_identifier, rh.command, reason, rh.stream_id); - return -1; -} - -/** - * Check if a circuit was used and/or closed successfully. - * - * If we attempted to use the circuit to carry a stream but failed - * for whatever reason, or if the circuit mysteriously died before - * we could attach any streams, record these two cases. - * - * If we *have* successfully used the circuit, or it appears to - * have been closed by us locally, count it as a success. - * - * Returns 0 if we're done making decisions with the circ, - * or -1 if we want to probe it first. - */ -int -pathbias_check_close(origin_circuit_t *ocirc, int reason) -{ - circuit_t *circ = ô->base_; - - if (!pathbias_should_count(ocirc)) { - return 0; - } - - switch (ocirc->path_state) { - /* If the circuit was closed after building, but before use, we need - * to ensure we were the ones who tried to close it (and not a remote - * actor). */ - case PATH_STATE_BUILD_SUCCEEDED: - if (reason & END_CIRC_REASON_FLAG_REMOTE) { - /* Remote circ close reasons on an unused circuit all could be bias */ - log_info(LD_CIRC, - "Circuit %d remote-closed without successful use for reason %d. " - "Circuit purpose %d currently %d,%s. Len %d.", - ocirc->global_identifier, - reason, circ->purpose, ocirc->has_opened, - circuit_state_to_string(circ->state), - ocirc->build_state->desired_path_len); - pathbias_count_collapse(ocirc); - } else if ((reason & ~END_CIRC_REASON_FLAG_REMOTE) - == END_CIRC_REASON_CHANNEL_CLOSED && - circ->n_chan && - circ->n_chan->reason_for_closing - != CHANNEL_CLOSE_REQUESTED) { - /* If we didn't close the channel ourselves, it could be bias */ - /* XXX: Only count bias if the network is live? - * What about clock jumps/suspends? */ - log_info(LD_CIRC, - "Circuit %d's channel closed without successful use for reason " - "%d, channel reason %d. Circuit purpose %d currently %d,%s. Len " - "%d.", ocirc->global_identifier, - reason, circ->n_chan->reason_for_closing, - circ->purpose, ocirc->has_opened, - circuit_state_to_string(circ->state), - ocirc->build_state->desired_path_len); - pathbias_count_collapse(ocirc); - } else { - pathbias_count_successful_close(ocirc); - } - break; - - /* If we tried to use a circuit but failed, we should probe it to ensure - * it has not been tampered with. */ - case PATH_STATE_USE_ATTEMPTED: - /* XXX: Only probe and/or count failure if the network is live? - * What about clock jumps/suspends? */ - if (pathbias_send_usable_probe(circ) == 0) - return -1; - else - pathbias_count_use_failed(ocirc); - - /* Any circuit where there were attempted streams but no successful - * streams could be bias */ - log_info(LD_CIRC, - "Circuit %d closed without successful use for reason %d. " - "Circuit purpose %d currently %d,%s. Len %d.", - ocirc->global_identifier, - reason, circ->purpose, ocirc->has_opened, - circuit_state_to_string(circ->state), - ocirc->build_state->desired_path_len); - break; - - case PATH_STATE_USE_SUCCEEDED: - pathbias_count_successful_close(ocirc); - pathbias_count_use_success(ocirc); - break; - - case PATH_STATE_USE_FAILED: - pathbias_count_use_failed(ocirc); - break; - - case PATH_STATE_NEW_CIRC: - case PATH_STATE_BUILD_ATTEMPTED: - case PATH_STATE_ALREADY_COUNTED: - default: - // Other states are uninteresting. No stats to count. - break; - } - - ocirc->path_state = PATH_STATE_ALREADY_COUNTED; - - return 0; -} - -/** - * Count a successfully closed circuit. - */ -static void -pathbias_count_successful_close(origin_circuit_t *circ) -{ - entry_guard_t *guard = NULL; - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } - - if (guard) { - /* In the long run: circuit_success ~= successful_circuit_close + - * circ_failure + stream_failure */ - guard->successful_circuits_closed++; - entry_guards_changed(); - } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { - /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to - * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. - * No need to log that case. */ - log_info(LD_CIRC, - "Successfully closed circuit has no known guard. " - "Circuit is a %s currently %s", - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } -} - -/** - * Count a circuit that fails after it is built, but before it can - * carry any traffic. - * - * This is needed because there are ways to destroy a - * circuit after it has successfully completed. Right now, this is - * used for purely informational/debugging purposes. - */ -static void -pathbias_count_collapse(origin_circuit_t *circ) -{ - entry_guard_t *guard = NULL; - - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } - - if (guard) { - guard->collapsed_circuits++; - entry_guards_changed(); - } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { - /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to - * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. - * No need to log that case. */ - log_info(LD_CIRC, - "Destroyed circuit has no known guard. " - "Circuit is a %s currently %s", - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } -} - -/** - * Count a known failed circuit (because we could not probe it). - * - * This counter is informational. - */ -static void -pathbias_count_use_failed(origin_circuit_t *circ) -{ - entry_guard_t *guard = NULL; - if (!pathbias_should_count(circ)) { - return; - } - - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } - - if (guard) { - guard->unusable_circuits++; - entry_guards_changed(); - } else if (circ->base_.purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { - /* In rare cases, CIRCUIT_PURPOSE_TESTING can get converted to - * CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT and have no guards here. - * No need to log that case. */ - /* XXX note cut-and-paste code in this function compared to nearby - * functions. Would be nice to refactor. -RD */ - log_info(LD_CIRC, - "Stream-failing circuit has no known guard. " - "Circuit is a %s currently %s", - circuit_purpose_to_string(circ->base_.purpose), - circuit_state_to_string(circ->base_.state)); - } -} - -/** - * Count timeouts for path bias log messages. - * - * These counts are purely informational. - */ -void -pathbias_count_timeout(origin_circuit_t *circ) -{ - entry_guard_t *guard = NULL; - - if (!pathbias_should_count(circ)) { - return; - } - - /* For hidden service circs, they can actually be used - * successfully and then time out later (because - * the other side declines to use them). */ - if (circ->path_state == PATH_STATE_USE_SUCCEEDED) { - return; - } - - if (circ->cpath && circ->cpath->extend_info) { - guard = entry_guard_get_by_id_digest( - circ->cpath->extend_info->identity_digest); - } - - if (guard) { - guard->timeouts++; - entry_guards_changed(); - } -} - -/** - * Helper function to count all of the currently opened circuits - * for a guard that are in a given path state range. The state - * range is inclusive on both ends. - */ -static int -pathbias_count_circs_in_states(entry_guard_t *guard, - path_state_t from, - path_state_t to) -{ - circuit_t *circ; - int open_circuits = 0; - - /* Count currently open circuits. Give them the benefit of the doubt. */ - for (circ = global_circuitlist; circ; circ = circ->next) { - origin_circuit_t *ocirc = NULL; - if (!CIRCUIT_IS_ORIGIN(circ) || /* didn't originate here */ - circ->marked_for_close) /* already counted */ - continue; - - ocirc = TO_ORIGIN_CIRCUIT(circ); - - if (!ocirc->cpath || !ocirc->cpath->extend_info) - continue; - - if (ocirc->path_state >= from && - ocirc->path_state <= to && - pathbias_should_count(ocirc) && - fast_memeq(guard->identity, - ocirc->cpath->extend_info->identity_digest, - DIGEST_LEN)) { - log_debug(LD_CIRC, "Found opened circuit %d in path_state %s", - ocirc->global_identifier, - pathbias_state_to_string(ocirc->path_state)); - open_circuits++; - } - } - - return open_circuits; -} - -/** - * Return the number of circuits counted as successfully closed for - * this guard. - * - * Also add in the currently open circuits to give them the benefit - * of the doubt. - */ -double -pathbias_get_close_success_count(entry_guard_t *guard) -{ - return guard->successful_circuits_closed + - pathbias_count_circs_in_states(guard, - PATH_STATE_BUILD_SUCCEEDED, - PATH_STATE_USE_SUCCEEDED); -} - -/** - * Return the number of circuits counted as successfully used - * this guard. - * - * Also add in the currently open circuits that we are attempting - * to use to give them the benefit of the doubt. - */ -double -pathbias_get_use_success_count(entry_guard_t *guard) -{ - return guard->use_successes + - pathbias_count_circs_in_states(guard, - PATH_STATE_USE_ATTEMPTED, - PATH_STATE_USE_SUCCEEDED); -} - -/** - * Check the path bias use rate against our consensus parameter limits. - * - * Emits a log message if the use success rates are too low. - * - * If pathbias_get_dropguards() is set, we also disable the use of - * very failure prone guards. - */ -static void -pathbias_measure_use_rate(entry_guard_t *guard) -{ - const or_options_t *options = get_options(); - - if (guard->use_attempts > pathbias_get_min_use(options)) { - /* Note: We rely on the < comparison here to allow us to set a 0 - * rate and disable the feature entirely. If refactoring, don't - * change to <= */ - if (pathbias_get_use_success_count(guard)/guard->use_attempts - < pathbias_get_extreme_use_rate(options)) { - /* Dropping is currently disabled by default. */ - if (pathbias_get_dropguards(options)) { - if (!guard->path_bias_disabled) { - log_warn(LD_CIRC, - "Your Guard %s ($%s) is failing to carry an extremely large " - "amount of stream on its circuits. " - "To avoid potential route manipulation attacks, Tor has " - "disabled use of this guard. " - "Use counts are %ld/%ld. Success counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - guard->path_bias_disabled = 1; - guard->bad_since = approx_time(); - entry_guards_changed(); - return; - } - } else if (!guard->path_bias_use_extreme) { - guard->path_bias_use_extreme = 1; - log_warn(LD_CIRC, - "Your Guard %s ($%s) is failing to carry an extremely large " - "amount of streams on its circuits. " - "This could indicate a route manipulation attack, network " - "overload, bad local network connectivity, or a bug. " - "Use counts are %ld/%ld. Success counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - } - } else if (pathbias_get_use_success_count(guard)/guard->use_attempts - < pathbias_get_notice_use_rate(options)) { - if (!guard->path_bias_use_noticed) { - guard->path_bias_use_noticed = 1; - log_notice(LD_CIRC, - "Your Guard %s ($%s) is failing to carry more streams on its " - "circuits than usual. " - "Most likely this means the Tor network is overloaded " - "or your network connection is poor. " - "Use counts are %ld/%ld. Success counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - } - } - } -} - -/** - * Check the path bias circuit close status rates against our consensus - * parameter limits. - * - * Emits a log message if the use success rates are too low. - * - * If pathbias_get_dropguards() is set, we also disable the use of - * very failure prone guards. - * - * XXX: This function shares similar log messages and checks to - * pathbias_measure_use_rate(). It may be possible to combine them - * eventually, especially if we can ever remove the need for 3 - * levels of closure warns (if the overall circuit failure rate - * goes down with ntor). One way to do so would be to multiply - * the build rate with the use rate to get an idea of the total - * fraction of the total network paths the user is able to use. - * See ticket #8159. - */ -static void -pathbias_measure_close_rate(entry_guard_t *guard) -{ - const or_options_t *options = get_options(); - - if (guard->circ_attempts > pathbias_get_min_circs(options)) { - /* Note: We rely on the < comparison here to allow us to set a 0 - * rate and disable the feature entirely. If refactoring, don't - * change to <= */ - if (pathbias_get_close_success_count(guard)/guard->circ_attempts - < pathbias_get_extreme_rate(options)) { - /* Dropping is currently disabled by default. */ - if (pathbias_get_dropguards(options)) { - if (!guard->path_bias_disabled) { - log_warn(LD_CIRC, - "Your Guard %s ($%s) is failing an extremely large " - "amount of circuits. " - "To avoid potential route manipulation attacks, Tor has " - "disabled use of this guard. " - "Success counts are %ld/%ld. Use counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - guard->path_bias_disabled = 1; - guard->bad_since = approx_time(); - entry_guards_changed(); - return; - } - } else if (!guard->path_bias_extreme) { - guard->path_bias_extreme = 1; - log_warn(LD_CIRC, - "Your Guard %s ($%s) is failing an extremely large " - "amount of circuits. " - "This could indicate a route manipulation attack, " - "extreme network overload, or a bug. " - "Success counts are %ld/%ld. Use counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - } - } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts - < pathbias_get_warn_rate(options)) { - if (!guard->path_bias_warned) { - guard->path_bias_warned = 1; - log_warn(LD_CIRC, - "Your Guard %s ($%s) is failing a very large " - "amount of circuits. " - "Most likely this means the Tor network is " - "overloaded, but it could also mean an attack against " - "you or potentially the guard itself. " - "Success counts are %ld/%ld. Use counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - } - } else if (pathbias_get_close_success_count(guard)/guard->circ_attempts - < pathbias_get_notice_rate(options)) { - if (!guard->path_bias_noticed) { - guard->path_bias_noticed = 1; - log_notice(LD_CIRC, - "Your Guard %s ($%s) is failing more circuits than " - "usual. " - "Most likely this means the Tor network is overloaded. " - "Success counts are %ld/%ld. Use counts are %ld/%ld. " - "%ld circuits completed, %ld were unusable, %ld collapsed, " - "and %ld timed out. " - "For reference, your timeout cutoff is %ld seconds.", - guard->nickname, hex_str(guard->identity, DIGEST_LEN), - tor_lround(pathbias_get_close_success_count(guard)), - tor_lround(guard->circ_attempts), - tor_lround(pathbias_get_use_success_count(guard)), - tor_lround(guard->use_attempts), - tor_lround(guard->circ_successes), - tor_lround(guard->unusable_circuits), - tor_lround(guard->collapsed_circuits), - tor_lround(guard->timeouts), - tor_lround(circ_times.close_ms/1000)); - } - } - } -} - -/** - * This function scales the path bias use rates if we have - * more data than the scaling threshold. This allows us to - * be more sensitive to recent measurements. - * - * XXX: The attempt count transfer stuff here might be done - * better by keeping separate pending counters that get - * transfered at circuit close. See ticket #8160. - */ -static void -pathbias_scale_close_rates(entry_guard_t *guard) -{ - const or_options_t *options = get_options(); - - /* If we get a ton of circuits, just scale everything down */ - if (guard->circ_attempts > pathbias_get_scale_threshold(options)) { - double scale_ratio = pathbias_get_scale_ratio(options); - int opened_attempts = pathbias_count_circs_in_states(guard, - PATH_STATE_BUILD_ATTEMPTED, PATH_STATE_BUILD_ATTEMPTED); - int opened_built = pathbias_count_circs_in_states(guard, - PATH_STATE_BUILD_SUCCEEDED, - PATH_STATE_USE_FAILED); - /* Verify that the counts are sane before and after scaling */ - int counts_are_sane = (guard->circ_attempts >= guard->circ_successes); - - guard->circ_attempts -= (opened_attempts+opened_built); - guard->circ_successes -= opened_built; - - guard->circ_attempts *= scale_ratio; - guard->circ_successes *= scale_ratio; - guard->timeouts *= scale_ratio; - guard->successful_circuits_closed *= scale_ratio; - guard->collapsed_circuits *= scale_ratio; - guard->unusable_circuits *= scale_ratio; - - guard->circ_attempts += (opened_attempts+opened_built); - guard->circ_successes += opened_built; - - entry_guards_changed(); - - log_info(LD_CIRC, - "Scaled pathbias counts to (%f,%f)/%f (%d/%d open) for guard " - "%s ($%s)", - guard->circ_successes, guard->successful_circuits_closed, - guard->circ_attempts, opened_built, opened_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - - /* Have the counts just become invalid by this scaling attempt? */ - if (counts_are_sane && guard->circ_attempts < guard->circ_successes) { - log_notice(LD_BUG, - "Scaling has mangled pathbias counts to %f/%f (%d/%d open) " - "for guard %s ($%s)", - guard->circ_successes, guard->circ_attempts, opened_built, - opened_attempts, guard->nickname, - hex_str(guard->identity, DIGEST_LEN)); - } - } -} - -/** - * This function scales the path bias circuit close rates if we have - * more data than the scaling threshold. This allows us to be more - * sensitive to recent measurements. - * - * XXX: The attempt count transfer stuff here might be done - * better by keeping separate pending counters that get - * transfered at circuit close. See ticket #8160. - */ -void -pathbias_scale_use_rates(entry_guard_t *guard) -{ - const or_options_t *options = get_options(); - - /* If we get a ton of circuits, just scale everything down */ - if (guard->use_attempts > pathbias_get_scale_use_threshold(options)) { - double scale_ratio = pathbias_get_scale_ratio(options); - int opened_attempts = pathbias_count_circs_in_states(guard, - PATH_STATE_USE_ATTEMPTED, PATH_STATE_USE_SUCCEEDED); - /* Verify that the counts are sane before and after scaling */ - int counts_are_sane = (guard->use_attempts >= guard->use_successes); - - guard->use_attempts -= opened_attempts; - - guard->use_attempts *= scale_ratio; - guard->use_successes *= scale_ratio; - - guard->use_attempts += opened_attempts; - - log_info(LD_CIRC, - "Scaled pathbias use counts to %f/%f (%d open) for guard %s ($%s)", - guard->use_successes, guard->use_attempts, opened_attempts, - guard->nickname, hex_str(guard->identity, DIGEST_LEN)); - - /* Have the counts just become invalid by this scaling attempt? */ - if (counts_are_sane && guard->use_attempts < guard->use_successes) { - log_notice(LD_BUG, - "Scaling has mangled pathbias usage counts to %f/%f " - "(%d open) for guard %s ($%s)", - guard->circ_successes, guard->circ_attempts, - opened_attempts, guard->nickname, - hex_str(guard->identity, DIGEST_LEN)); - } - - entry_guards_changed(); - } -} - -/** Increment the number of times we successfully extended a circuit to - * <b>guard</b>, first checking if the failure rate is high enough that - * we should eliminate the guard. Return -1 if the guard looks no good; - * return 0 if the guard looks fine. - */ -static int -entry_guard_inc_circ_attempt_count(entry_guard_t *guard) -{ - entry_guards_changed(); - - pathbias_measure_close_rate(guard); - - if (guard->path_bias_disabled) - return -1; - - pathbias_scale_close_rates(guard); - guard->circ_attempts++; - - log_info(LD_CIRC, "Got success count %f/%f for guard %s ($%s)", - guard->circ_successes, guard->circ_attempts, guard->nickname, - hex_str(guard->identity, DIGEST_LEN)); - return 0; -} - /** A "created" cell <b>reply</b> came back to us on circuit <b>circ</b>. * (The body of <b>reply</b> varies depending on what sort of handshake * this is.) @@ -2765,11 +1246,7 @@ onionskin_answer(or_circuit_t *circ, * number of endpoints that would give something away about our destination. * * If the routerlist <b>nodes</b> doesn't have enough routers - * to handle the desired path length, return as large a path length as - * is feasible, except if it's less than 2, in which case return -1. - * XXX ^^ I think this behavior is a hold-over from back when we had only a - * few relays in the network, and certainly back before guards existed. - * We should very likely get rid of it. -RD + * to handle the desired path length, return -1. */ static int new_route_len(uint8_t purpose, extend_info_t *exit, smartlist_t *nodes) @@ -2790,19 +1267,13 @@ new_route_len(uint8_t purpose, extend_info_t *exit, smartlist_t *nodes) log_debug(LD_CIRC,"Chosen route length %d (%d/%d routers suitable).", routelen, num_acceptable_routers, smartlist_len(nodes)); - if (num_acceptable_routers < 2) { + if (num_acceptable_routers < routelen) { log_info(LD_CIRC, - "Not enough acceptable routers (%d). Discarding this circuit.", - num_acceptable_routers); + "Not enough acceptable routers (%d/%d). Discarding this circuit.", + num_acceptable_routers, routelen); return -1; } - if (num_acceptable_routers < routelen) { - log_info(LD_CIRC,"Not enough routers: cutting routelen from %d to %d.", - routelen, num_acceptable_routers); - routelen = num_acceptable_routers; - } - return routelen; } diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h index a3091707e8..ebcb22c459 100644 --- a/src/or/circuitbuild.h +++ b/src/or/circuitbuild.h @@ -57,16 +57,6 @@ const char *build_state_get_exit_nickname(cpath_build_state_t *state); const node_t *choose_good_entry_server(uint8_t purpose, cpath_build_state_t *state); -double pathbias_get_extreme_rate(const or_options_t *options); -double pathbias_get_extreme_use_rate(const or_options_t *options); -int pathbias_get_dropguards(const or_options_t *options); -void pathbias_count_timeout(origin_circuit_t *circ); -int pathbias_check_close(origin_circuit_t *circ, int reason); -int pathbias_check_probe_response(circuit_t *circ, const cell_t *cell); -void pathbias_count_use_attempt(origin_circuit_t *circ); -void pathbias_mark_use_success(origin_circuit_t *circ); -void pathbias_mark_use_rollback(origin_circuit_t *circ); -const char *pathbias_state_to_string(path_state_t state); #endif diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c index 85bacce485..c31bc49d08 100644 --- a/src/or/circuitlist.c +++ b/src/or/circuitlist.c @@ -11,6 +11,7 @@ #define CIRCUITLIST_PRIVATE #include "or.h" #include "channel.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" @@ -36,7 +37,8 @@ /********* START VARIABLES **********/ /** A global list of all circuits at this hop. */ -circuit_t *global_circuitlist=NULL; +struct global_circuitlist_s global_circuitlist = + TOR_LIST_HEAD_INITIALIZER(global_circuitlist); /** A list of all the circuits in CIRCUIT_STATE_CHAN_WAIT. */ static smartlist_t *circuits_pending_chans = NULL; @@ -369,21 +371,6 @@ circuit_set_state(circuit_t *circ, uint8_t state) circ->state = state; } -/** Add <b>circ</b> to the global list of circuits. This is called only from - * within circuit_new. - */ -static void -circuit_add(circuit_t *circ) -{ - if (!global_circuitlist) { /* first one */ - global_circuitlist = circ; - circ->next = NULL; - } else { - circ->next = global_circuitlist; - global_circuitlist = circ; - } -} - /** Append to <b>out</b> all circuits in state CHAN_WAIT waiting for * the given connection. */ void @@ -441,33 +428,17 @@ circuit_count_pending_on_channel(channel_t *chan) void circuit_close_all_marked(void) { - circuit_t *tmp,*m; - - while (global_circuitlist && global_circuitlist->marked_for_close) { - tmp = global_circuitlist->next; - circuit_free(global_circuitlist); - global_circuitlist = tmp; - } - - tmp = global_circuitlist; - while (tmp && tmp->next) { - if (tmp->next->marked_for_close) { - m = tmp->next->next; - circuit_free(tmp->next); - tmp->next = m; - /* Need to check new tmp->next; don't advance tmp. */ - } else { - /* Advance tmp. */ - tmp = tmp->next; - } - } + circuit_t *circ, *tmp; + TOR_LIST_FOREACH_SAFE(circ, &global_circuitlist, head, tmp) + if (circ->marked_for_close) + circuit_free(circ); } /** Return the head of the global linked list of circuits. */ -circuit_t * -circuit_get_global_list_(void) +struct global_circuitlist_s * +circuit_get_global_list(void) { - return global_circuitlist; + return &global_circuitlist; } /** Function to make circ-\>state human-readable */ @@ -684,7 +655,7 @@ init_circuit_base(circuit_t *circ) circ->deliver_window = CIRCWINDOW_START; cell_queue_init(&circ->n_chan_cells); - circuit_add(circ); + TOR_LIST_INSERT_HEAD(&global_circuitlist, circ, head); } /** Allocate space for a new circuit, initializing with <b>p_circ_id</b> @@ -708,7 +679,7 @@ origin_circuit_new(void) init_circuit_base(TO_CIRCUIT(circ)); - circ_times.last_circ_at = approx_time(); + circuit_build_times_update_last_circ(get_circuit_build_times_mutable()); return circ; } @@ -803,6 +774,8 @@ circuit_free(circuit_t *circ) extend_info_free(circ->n_hop); tor_free(circ->n_chan_create_cell); + TOR_LIST_REMOVE(circ, head); + /* Remove from map. */ circuit_set_n_circid_chan(circ, 0, NULL); @@ -838,11 +811,11 @@ circuit_free_cpath(crypt_path_t *cpath) void circuit_free_all(void) { - circuit_t *next; - while (global_circuitlist) { - next = global_circuitlist->next; - if (! CIRCUIT_IS_ORIGIN(global_circuitlist)) { - or_circuit_t *or_circ = TO_OR_CIRCUIT(global_circuitlist); + circuit_t *tmp, *tmp2; + + TOR_LIST_FOREACH_SAFE(tmp, &global_circuitlist, head, tmp2) { + if (! CIRCUIT_IS_ORIGIN(tmp)) { + or_circuit_t *or_circ = TO_OR_CIRCUIT(tmp); while (or_circ->resolving_streams) { edge_connection_t *next_conn; next_conn = or_circ->resolving_streams->next_stream; @@ -850,8 +823,7 @@ circuit_free_all(void) or_circ->resolving_streams = next_conn; } } - circuit_free(global_circuitlist); - global_circuitlist = next; + circuit_free(tmp); } smartlist_free(circuits_pending_chans); @@ -921,7 +893,7 @@ circuit_dump_by_conn(connection_t *conn, int severity) circuit_t *circ; edge_connection_t *tmpconn; - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { circid_t n_circ_id = circ->n_circ_id, p_circ_id = 0; if (circ->marked_for_close) { @@ -985,7 +957,7 @@ circuit_dump_by_chan(channel_t *chan, int severity) tor_assert(chan); - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { circid_t n_circ_id = circ->n_circ_id, p_circ_id = 0; if (circ->marked_for_close) { @@ -1026,7 +998,7 @@ origin_circuit_t * circuit_get_by_global_id(uint32_t id) { circuit_t *circ; - for (circ=global_circuitlist;circ;circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (CIRCUIT_IS_ORIGIN(circ) && TO_ORIGIN_CIRCUIT(circ)->global_identifier == id) { if (circ->marked_for_close) @@ -1089,7 +1061,7 @@ circuit_get_by_circid_channel_impl(circid_t circ_id, channel_t *chan, /* We comment it out because coverity complains otherwise. { circuit_t *circ; - for (circ=global_circuitlist;circ;circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (! CIRCUIT_IS_ORIGIN(circ)) { or_circuit_t *or_circ = TO_OR_CIRCUIT(circ); if (or_circ->p_chan == chan && or_circ->p_circ_id == circ_id) { @@ -1171,7 +1143,7 @@ circuit_unlink_all_from_channel(channel_t *chan, int reason) channel_unlink_all_circuits(chan); - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { int mark = 0; if (circ->n_chan == chan) { circuit_set_n_circid_chan(circ, 0, NULL); @@ -1207,8 +1179,7 @@ origin_circuit_t * circuit_get_ready_rend_circ_by_rend_data(const rend_data_t *rend_data) { circuit_t *circ; - - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (!circ->marked_for_close && circ->purpose == CIRCUIT_PURPOSE_C_REND_READY) { origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); @@ -1236,11 +1207,11 @@ circuit_get_next_by_pk_and_purpose(origin_circuit_t *start, circuit_t *circ; tor_assert(CIRCUIT_PURPOSE_IS_ORIGIN(purpose)); if (start == NULL) - circ = global_circuitlist; + circ = TOR_LIST_FIRST(&global_circuitlist); else - circ = TO_CIRCUIT(start)->next; + circ = TOR_LIST_NEXT(TO_CIRCUIT(start), head); - for ( ; circ; circ = circ->next) { + for ( ; circ; circ = TOR_LIST_NEXT(circ, head)) { if (circ->marked_for_close) continue; if (circ->purpose != purpose) @@ -1263,7 +1234,7 @@ circuit_get_by_rend_token_and_purpose(uint8_t purpose, const char *token, size_t len) { circuit_t *circ; - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (! circ->marked_for_close && circ->purpose == purpose && tor_memeq(TO_OR_CIRCUIT(circ)->rend_token, token, len)) @@ -1325,7 +1296,7 @@ circuit_find_to_cannibalize(uint8_t purpose, extend_info_t *info, "capacity %d, internal %d", purpose, need_uptime, need_capacity, internal); - for (circ_=global_circuitlist; circ_; circ_ = circ_->next) { + TOR_LIST_FOREACH(circ_, &global_circuitlist, head) { if (CIRCUIT_IS_ORIGIN(circ_) && circ_->state == CIRCUIT_STATE_OPEN && !circ_->marked_for_close && @@ -1415,8 +1386,7 @@ void circuit_mark_all_unused_circs(void) { circuit_t *circ; - - for (circ=global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (CIRCUIT_IS_ORIGIN(circ) && !circ->marked_for_close && !circ->timestamp_dirty) @@ -1435,8 +1405,7 @@ void circuit_mark_all_dirty_circs_as_unusable(void) { circuit_t *circ; - - for (circ=global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, &global_circuitlist, head) { if (CIRCUIT_IS_ORIGIN(circ) && !circ->marked_for_close && circ->timestamp_dirty) { @@ -1651,25 +1620,58 @@ n_cells_in_circ_queues(const circuit_t *c) return n; } -/** helper to sort a list of circuit_q by total queue lengths, in descending - * order. */ +/** + * Return the age of the oldest cell queued on <b>c</b>, in milliseconds. + * Return 0 if there are no cells queued on c. Requires that <b>now</b> be + * the current time in milliseconds since the epoch, truncated. + * + * This function will return incorrect results if the oldest cell queued on + * the circuit is older than 2**32 msec (about 49 days) old. + */ +static uint32_t +circuit_max_queued_cell_age(const circuit_t *c, uint32_t now) +{ + uint32_t age = 0; + packed_cell_t *cell; + + if (NULL != (cell = TOR_SIMPLEQ_FIRST(&c->n_chan_cells.head))) + age = now - cell->inserted_time; + + if (! CIRCUIT_IS_ORIGIN(c)) { + const or_circuit_t *orcirc = TO_OR_CIRCUIT((circuit_t*)c); + if (NULL != (cell = TOR_SIMPLEQ_FIRST(&orcirc->p_chan_cells.head))) { + uint32_t age2 = now - cell->inserted_time; + if (age2 > age) + return age2; + } + } + return age; +} + +/** Temporary variable for circuits_compare_by_oldest_queued_cell_ This is a + * kludge to work around the fact that qsort doesn't provide a way for + * comparison functions to take an extra argument. */ +static uint32_t circcomp_now_tmp; + +/** Helper to sort a list of circuit_t by age of oldest cell, in descending + * order. Requires that circcomp_now_tmp is set correctly. */ static int -circuits_compare_by_queue_len_(const void **a_, const void **b_) +circuits_compare_by_oldest_queued_cell_(const void **a_, const void **b_) { const circuit_t *a = *a_; const circuit_t *b = *b_; - size_t a_n = n_cells_in_circ_queues(a); - size_t b_n = n_cells_in_circ_queues(b); + uint32_t age_a = circuit_max_queued_cell_age(a, circcomp_now_tmp); + uint32_t age_b = circuit_max_queued_cell_age(b, circcomp_now_tmp); - if (a_n < b_n) + if (age_a < age_b) return 1; - else if (a_n == b_n) + else if (age_a == age_b) return 0; else return -1; } -#define FRACTION_OF_CIRCS_TO_RETAIN_ON_OOM 0.90 +#define FRACTION_OF_CELLS_TO_RETAIN_ON_OOM 0.90 /** We're out of memory for cells, having allocated <b>current_allocation</b> * bytes' worth. Kill the 'worst' circuits until we're under @@ -1682,13 +1684,14 @@ circuits_handle_oom(size_t current_allocation) circuit_t *circ; size_t n_cells_removed=0, n_cells_to_remove; int n_circuits_killed=0; + struct timeval now; log_notice(LD_GENERAL, "We're low on memory. Killing circuits with " "over-long queues. (This behavior is controlled by " "MaxMemInCellQueues.)"); { size_t mem_target = (size_t)(get_options()->MaxMemInCellQueues * - FRACTION_OF_CIRCS_TO_RETAIN_ON_OOM); + FRACTION_OF_CELLS_TO_RETAIN_ON_OOM); size_t mem_to_recover; if (current_allocation <= mem_target) return; @@ -1698,12 +1701,16 @@ circuits_handle_oom(size_t current_allocation) /* This algorithm itself assumes that you've got enough memory slack * to actually run it. */ - for (circ = global_circuitlist; circ; circ = circ->next) + TOR_LIST_FOREACH(circ, &global_circuitlist, head) smartlist_add(circlist, circ); + /* Set circcomp_now_tmp so that the sort can work. */ + tor_gettimeofday_cached(&now); + circcomp_now_tmp = (uint32_t)tv_to_msec(&now); + /* This is O(n log n); there are faster algorithms we could use instead. * Let's hope this doesn't happen enough to be in the critical path. */ - smartlist_sort(circlist, circuits_compare_by_queue_len_); + smartlist_sort(circlist, circuits_compare_by_oldest_queued_cell_); /* Okay, now the worst circuits are at the front of the list. Let's mark * them, and reclaim their storage aggressively. */ diff --git a/src/or/circuitlist.h b/src/or/circuitlist.h index 4e56f5264f..bf3d1b4677 100644 --- a/src/or/circuitlist.h +++ b/src/or/circuitlist.h @@ -14,7 +14,9 @@ #include "testsupport.h" -circuit_t * circuit_get_global_list_(void); +TOR_LIST_HEAD(global_circuitlist_s, circuit_t); + +struct global_circuitlist_s* circuit_get_global_list(void); const char *circuit_state_to_string(int state); const char *circuit_purpose_to_controller_string(uint8_t purpose); const char *circuit_purpose_to_controller_hs_state_string(uint8_t purpose); diff --git a/src/or/circuitmux.c b/src/or/circuitmux.c index 47b423066a..f2af943937 100644 --- a/src/or/circuitmux.c +++ b/src/or/circuitmux.c @@ -1872,7 +1872,7 @@ circuitmux_append_destroy_cell(channel_t *chan, cell.command = CELL_DESTROY; cell.payload[0] = (uint8_t) reason; - cell_queue_append_packed_copy(&cmux->destroy_cell_queue, &cell, + cell_queue_append_packed_copy(NULL, &cmux->destroy_cell_queue, 0, &cell, chan->wide_circ_ids, 0); /* Destroy entering the queue, update counters */ diff --git a/src/or/circuitstats.c b/src/or/circuitstats.c index 95129f9a43..eaefc9edde 100644 --- a/src/or/circuitstats.c +++ b/src/or/circuitstats.c @@ -18,6 +18,10 @@ #undef log #include <math.h> +static void cbt_control_event_buildtimeout_set( + const circuit_build_times_t *cbt, + buildtimeout_set_event_t type); + #define CBT_BIN_TO_MS(bin) ((bin)*CBT_BIN_WIDTH + (CBT_BIN_WIDTH/2)) /** Global list of circuit build times */ @@ -26,8 +30,7 @@ // vary in their own latency. The downside of this is that guards // can change frequently, so we'd be building a lot more circuits // most likely. -/* XXXX024 Make this static; add accessor functions. */ -circuit_build_times_t circ_times; +static circuit_build_times_t circ_times; #ifdef TOR_UNIT_TESTS /** If set, we're running the unit tests: we should avoid clobbering @@ -37,6 +40,37 @@ static int unit_tests = 0; #define unit_tests 0 #endif +/** Return a pointer to the data structure describing our current circuit + * build time history and computations. */ +const circuit_build_times_t * +get_circuit_build_times(void) +{ + return &circ_times; +} + +/** As get_circuit_build_times, but return a mutable pointer. */ +circuit_build_times_t * +get_circuit_build_times_mutable(void) +{ + return &circ_times; +} + +/** Return the time to wait before actually closing an under-construction, in + * milliseconds. */ +double +get_circuit_build_close_time_ms(void) +{ + return circ_times.close_ms; +} + +/** Return the time to wait before giving up on an under-construction circuit, + * in milliseconds. */ +double +get_circuit_build_timeout_ms(void) +{ + return circ_times.timeout_ms; +} + /** * This function decides if CBT learning should be disabled. It returns * true if one or more of the following four conditions are met: @@ -158,7 +192,7 @@ circuit_build_times_min_circs_to_observe(void) /** Return true iff <b>cbt</b> has recorded enough build times that we * want to start acting on the timeout it implies. */ int -circuit_build_times_enough_to_compute(circuit_build_times_t *cbt) +circuit_build_times_enough_to_compute(const circuit_build_times_t *cbt) { return cbt->total_build_times >= circuit_build_times_min_circs_to_observe(); } @@ -475,7 +509,7 @@ circuit_build_times_init(circuit_build_times_t *cbt) cbt->liveness.timeouts_after_firsthop = NULL; } cbt->close_ms = cbt->timeout_ms = circuit_build_times_get_initial_timeout(); - control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); + cbt_control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); } /** @@ -561,7 +595,7 @@ circuit_build_times_add_time(circuit_build_times_t *cbt, build_time_t time) * Return maximum circuit build time */ static build_time_t -circuit_build_times_max(circuit_build_times_t *cbt) +circuit_build_times_max(const circuit_build_times_t *cbt) { int i = 0; build_time_t max_build_time = 0; @@ -602,7 +636,7 @@ circuit_build_times_min(circuit_build_times_t *cbt) * The return value must be freed by the caller. */ static uint32_t * -circuit_build_times_create_histogram(circuit_build_times_t *cbt, +circuit_build_times_create_histogram(const circuit_build_times_t *cbt, build_time_t *nbins) { uint32_t *histogram; @@ -692,7 +726,7 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) * the or_state_t state structure. */ void -circuit_build_times_update_state(circuit_build_times_t *cbt, +circuit_build_times_update_state(const circuit_build_times_t *cbt, or_state_t *state) { uint32_t *histogram; @@ -1129,7 +1163,7 @@ circuit_build_times_initial_alpha(circuit_build_times_t *cbt, * Returns true if we need circuits to be built */ int -circuit_build_times_needs_circuits(circuit_build_times_t *cbt) +circuit_build_times_needs_circuits(const circuit_build_times_t *cbt) { /* Return true if < MIN_CIRCUITS_TO_OBSERVE */ return !circuit_build_times_enough_to_compute(cbt); @@ -1140,7 +1174,7 @@ circuit_build_times_needs_circuits(circuit_build_times_t *cbt) * right now. */ int -circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt) +circuit_build_times_needs_circuits_now(const circuit_build_times_t *cbt) { return circuit_build_times_needs_circuits(cbt) && approx_time()-cbt->last_circ_at > circuit_build_times_test_frequency(); @@ -1273,7 +1307,7 @@ circuit_build_times_network_close(circuit_build_times_t *cbt, * in the case of recent liveness changes. */ int -circuit_build_times_network_check_live(circuit_build_times_t *cbt) +circuit_build_times_network_check_live(const circuit_build_times_t *cbt) { if (cbt->liveness.nonlive_timeouts > 0) { return 0; @@ -1339,7 +1373,7 @@ circuit_build_times_network_check_changed(circuit_build_times_t *cbt) = circuit_build_times_get_initial_timeout(); } - control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); + cbt_control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); log_notice(LD_CIRC, "Your network connection speed appears to have changed. Resetting " @@ -1521,7 +1555,7 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt) } } - control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_COMPUTED); + cbt_control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_COMPUTED); timeout_rate = circuit_build_times_timeout_rate(cbt); @@ -1567,3 +1601,44 @@ circuitbuild_running_unit_tests(void) } #endif +void +circuit_build_times_update_last_circ(circuit_build_times_t *cbt) +{ + cbt->last_circ_at = approx_time(); +} + +static void +cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt, + buildtimeout_set_event_t type) +{ + char *args = NULL; + double qnt; + + switch (type) { + case BUILDTIMEOUT_SET_EVENT_RESET: + case BUILDTIMEOUT_SET_EVENT_SUSPENDED: + case BUILDTIMEOUT_SET_EVENT_DISCARD: + qnt = 1.0; + break; + case BUILDTIMEOUT_SET_EVENT_COMPUTED: + case BUILDTIMEOUT_SET_EVENT_RESUME: + default: + qnt = circuit_build_times_quantile_cutoff(); + break; + } + + tor_asprintf(&args, "TOTAL_TIMES=%lu " + "TIMEOUT_MS=%lu XM=%lu ALPHA=%f CUTOFF_QUANTILE=%f " + "TIMEOUT_RATE=%f CLOSE_MS=%lu CLOSE_RATE=%f", + (unsigned long)cbt->total_build_times, + (unsigned long)cbt->timeout_ms, + (unsigned long)cbt->Xm, cbt->alpha, qnt, + circuit_build_times_timeout_rate(cbt), + (unsigned long)cbt->close_ms, + circuit_build_times_close_rate(cbt)); + + control_event_buildtimeout_set(type, args); + + tor_free(args); +} + diff --git a/src/or/circuitstats.h b/src/or/circuitstats.h index 53ba2b2d2e..3343310b8e 100644 --- a/src/or/circuitstats.h +++ b/src/or/circuitstats.h @@ -12,11 +12,14 @@ #ifndef TOR_CIRCUITSTATS_H #define TOR_CIRCUITSTATS_H -extern circuit_build_times_t circ_times; +const circuit_build_times_t *get_circuit_build_times(void); +circuit_build_times_t *get_circuit_build_times_mutable(void); +double get_circuit_build_close_time_ms(void); +double get_circuit_build_timeout_ms(void); int circuit_build_times_disabled(void); -int circuit_build_times_enough_to_compute(circuit_build_times_t *cbt); -void circuit_build_times_update_state(circuit_build_times_t *cbt, +int circuit_build_times_enough_to_compute(const circuit_build_times_t *cbt); +void circuit_build_times_update_state(const circuit_build_times_t *cbt, or_state_t *state); int circuit_build_times_parse_state(circuit_build_times_t *cbt, or_state_t *state); @@ -27,9 +30,9 @@ int circuit_build_times_count_close(circuit_build_times_t *cbt, void circuit_build_times_set_timeout(circuit_build_times_t *cbt); int circuit_build_times_add_time(circuit_build_times_t *cbt, build_time_t time); -int circuit_build_times_needs_circuits(circuit_build_times_t *cbt); +int circuit_build_times_needs_circuits(const circuit_build_times_t *cbt); -int circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt); +int circuit_build_times_needs_circuits_now(const circuit_build_times_t *cbt); void circuit_build_times_init(circuit_build_times_t *cbt); void circuit_build_times_free_timeouts(circuit_build_times_t *cbt); void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, @@ -37,6 +40,8 @@ void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt); double circuit_build_times_close_rate(const circuit_build_times_t *cbt); +void circuit_build_times_update_last_circ(circuit_build_times_t *cbt); + #ifdef CIRCUITSTATS_PRIVATE STATIC double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt, double quantile); @@ -59,8 +64,35 @@ void circuitbuild_running_unit_tests(void); /* Network liveness functions */ void circuit_build_times_network_is_live(circuit_build_times_t *cbt); -int circuit_build_times_network_check_live(circuit_build_times_t *cbt); +int circuit_build_times_network_check_live(const circuit_build_times_t *cbt); void circuit_build_times_network_circ_success(circuit_build_times_t *cbt); +#ifdef CIRCUITSTATS_PRIVATE +/** Structure for circuit build times history */ +struct circuit_build_times_s { + /** The circular array of recorded build times in milliseconds */ + build_time_t circuit_build_times[CBT_NCIRCUITS_TO_OBSERVE]; + /** Current index in the circuit_build_times circular array */ + int build_times_idx; + /** Total number of build times accumulated. Max CBT_NCIRCUITS_TO_OBSERVE */ + int total_build_times; + /** Information about the state of our local network connection */ + network_liveness_t liveness; + /** Last time we built a circuit. Used to decide to build new test circs */ + time_t last_circ_at; + /** "Minimum" value of our pareto distribution (actually mode) */ + build_time_t Xm; + /** alpha exponent for pareto dist. */ + double alpha; + /** Have we computed a timeout? */ + int have_computed_timeout; + /** The exact value for that timeout in milliseconds. Stored as a double + * to maintain precision from calculations to and from quantile value. */ + double timeout_ms; + /** How long we wait before actually closing the circuit. */ + double close_ms; +}; +#endif + #endif diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 8fb70f5853..cb9e931917 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -12,6 +12,7 @@ #include "or.h" #include "addressmap.h" #include "channel.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuitstats.h" @@ -31,12 +32,6 @@ #include "router.h" #include "routerlist.h" -/********* START VARIABLES **********/ - -extern circuit_t *global_circuitlist; /* from circuitlist.c */ - -/********* END VARIABLES ************/ - static void circuit_expire_old_circuits_clientside(void); static void circuit_increment_failure_count(void); @@ -286,7 +281,7 @@ circuit_get_best(const entry_connection_t *conn, tor_gettimeofday(&now); - for (circ=global_circuitlist;circ;circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { origin_circuit_t *origin_circ; if (!CIRCUIT_IS_ORIGIN(circ)) continue; @@ -327,7 +322,7 @@ count_pending_general_client_circuits(void) int count = 0; - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (circ->marked_for_close || circ->state == CIRCUIT_STATE_OPEN || circ->purpose != CIRCUIT_PURPOSE_C_GENERAL || @@ -375,7 +370,7 @@ circuit_conforms_to_options(const origin_circuit_t *circ, void circuit_expire_building(void) { - circuit_t *victim, *next_circ = global_circuitlist; + circuit_t *victim, *next_circ; /* circ_times.timeout_ms and circ_times.close_ms are from * circuit_build_times_get_initial_timeout() if we haven't computed * custom timeouts yet */ @@ -393,10 +388,9 @@ circuit_expire_building(void) * we want to be more lenient with timeouts, in case the * user has relocated and/or changed network connections. * See bug #3443. */ - while (next_circ) { + TOR_LIST_FOREACH(next_circ, circuit_get_global_list(), head) { if (!CIRCUIT_IS_ORIGIN(next_circ) || /* didn't originate here */ next_circ->marked_for_close) { /* don't mess with marked circs */ - next_circ = next_circ->next; continue; } @@ -408,9 +402,7 @@ circuit_expire_building(void) any_opened_circs = 1; break; } - next_circ = next_circ->next; } - next_circ = global_circuitlist; #define SET_CUTOFF(target, msec) do { \ long ms = tor_lround(msec); \ @@ -451,12 +443,12 @@ circuit_expire_building(void) * RTTs = 4a + 3b + 2c * RTTs = 9h */ - SET_CUTOFF(general_cutoff, circ_times.timeout_ms); - SET_CUTOFF(begindir_cutoff, circ_times.timeout_ms); + SET_CUTOFF(general_cutoff, get_circuit_build_timeout_ms()); + SET_CUTOFF(begindir_cutoff, get_circuit_build_timeout_ms()); /* > 3hop circs seem to have a 1.0 second delay on their cannibalized * 4th hop. */ - SET_CUTOFF(fourhop_cutoff, circ_times.timeout_ms * (10/6.0) + 1000); + SET_CUTOFF(fourhop_cutoff, get_circuit_build_timeout_ms() * (10/6.0) + 1000); /* CIRCUIT_PURPOSE_C_ESTABLISH_REND behaves more like a RELAY cell. * Use the stream cutoff (more or less). */ @@ -465,26 +457,25 @@ circuit_expire_building(void) /* Be lenient with cannibalized circs. They already survived the official * CBT, and they're usually not performance-critical. */ SET_CUTOFF(cannibalized_cutoff, - MAX(circ_times.close_ms*(4/6.0), + MAX(get_circuit_build_close_time_ms()*(4/6.0), options->CircuitStreamTimeout * 1000) + 1000); /* Intro circs have an extra round trip (and are also 4 hops long) */ - SET_CUTOFF(c_intro_cutoff, circ_times.timeout_ms * (14/6.0) + 1000); + SET_CUTOFF(c_intro_cutoff, get_circuit_build_timeout_ms() * (14/6.0) + 1000); /* Server intro circs have an extra round trip */ - SET_CUTOFF(s_intro_cutoff, circ_times.timeout_ms * (9/6.0) + 1000); + SET_CUTOFF(s_intro_cutoff, get_circuit_build_timeout_ms() * (9/6.0) + 1000); - SET_CUTOFF(close_cutoff, circ_times.close_ms); - SET_CUTOFF(extremely_old_cutoff, circ_times.close_ms*2 + 1000); + SET_CUTOFF(close_cutoff, get_circuit_build_close_time_ms()); + SET_CUTOFF(extremely_old_cutoff, get_circuit_build_close_time_ms()*2 + 1000); SET_CUTOFF(hs_extremely_old_cutoff, - MAX(circ_times.close_ms*2 + 1000, + MAX(get_circuit_build_close_time_ms()*2 + 1000, options->SocksTimeout * 1000)); - while (next_circ) { + TOR_LIST_FOREACH(next_circ, circuit_get_global_list(), head) { struct timeval cutoff; victim = next_circ; - next_circ = next_circ->next; if (!CIRCUIT_IS_ORIGIN(victim) || /* didn't originate here */ victim->marked_for_close) /* don't mess with marked circs */ continue; @@ -555,12 +546,14 @@ circuit_expire_building(void) * was a timeout, and the timeout value needs to reset if we * see enough of them. Note this means we also need to avoid * double-counting below, too. */ - circuit_build_times_count_timeout(&circ_times, first_hop_succeeded); + circuit_build_times_count_timeout(get_circuit_build_times_mutable(), + first_hop_succeeded); TO_ORIGIN_CIRCUIT(victim)->relaxed_timeout = 1; } continue; } else { static ratelim_t relax_timeout_limit = RATELIM_INIT(3600); + const double build_close_ms = get_circuit_build_close_time_ms(); log_fn_ratelim(&relax_timeout_limit, LOG_NOTICE, LD_CIRC, "No circuits are opened. Relaxed timeout for circuit %d " "(a %s %d-hop circuit in state %s with channel state %s) to " @@ -571,7 +564,8 @@ circuit_expire_building(void) TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len, circuit_state_to_string(victim->state), channel_state_to_string(victim->n_chan->state), - (long)circ_times.close_ms, num_live_entry_guards(0)); + (long)build_close_ms, + num_live_entry_guards(0)); } } @@ -651,7 +645,7 @@ circuit_expire_building(void) } if (circuit_timeout_want_to_count_circ(TO_ORIGIN_CIRCUIT(victim)) && - circuit_build_times_enough_to_compute(&circ_times)) { + circuit_build_times_enough_to_compute(get_circuit_build_times())) { /* Circuits are allowed to last longer for measurement. * Switch their purpose and wait. */ if (victim->purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) { @@ -665,8 +659,9 @@ circuit_expire_building(void) * have a timeout. We also want to avoid double-counting * already "relaxed" circuits, which are counted above. */ if (!TO_ORIGIN_CIRCUIT(victim)->relaxed_timeout) { - circuit_build_times_count_timeout(&circ_times, - first_hop_succeeded); + circuit_build_times_count_timeout( + get_circuit_build_times_mutable(), + first_hop_succeeded); } continue; } @@ -683,10 +678,11 @@ circuit_expire_building(void) (long)(now.tv_sec - victim->timestamp_began.tv_sec), victim->purpose, circuit_purpose_to_string(victim->purpose)); - } else if (circuit_build_times_count_close(&circ_times, + } else if (circuit_build_times_count_close( + get_circuit_build_times_mutable(), first_hop_succeeded, victim->timestamp_created.tv_sec)) { - circuit_build_times_set_timeout(&circ_times); + circuit_build_times_set_timeout(get_circuit_build_times_mutable()); } } } @@ -750,7 +746,7 @@ circuit_expire_building(void) if (victim->n_chan) log_info(LD_CIRC, - "Abandoning circ %u %s:%d (state %d,%d:%s, purpose %d, " + "Abandoning circ %u %s:%u (state %d,%d:%s, purpose %d, " "len %d)", TO_ORIGIN_CIRCUIT(victim)->global_identifier, channel_get_canonical_remote_descr(victim->n_chan), (unsigned)victim->n_circ_id, @@ -760,7 +756,7 @@ circuit_expire_building(void) TO_ORIGIN_CIRCUIT(victim)->build_state->desired_path_len); else log_info(LD_CIRC, - "Abandoning circ %u %d (state %d,%d:%s, purpose %d, len %d)", + "Abandoning circ %u %u (state %d,%d:%s, purpose %d, len %d)", TO_ORIGIN_CIRCUIT(victim)->global_identifier, (unsigned)victim->n_circ_id, TO_ORIGIN_CIRCUIT(victim)->has_opened, @@ -818,7 +814,7 @@ circuit_stream_is_being_handled(entry_connection_t *conn, get_options()->LongLivedPorts, conn ? conn->socks_request->port : port); - for (circ=global_circuitlist;circ;circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (CIRCUIT_IS_ORIGIN(circ) && !circ->marked_for_close && circ->purpose == CIRCUIT_PURPOSE_C_GENERAL && @@ -869,7 +865,7 @@ circuit_predict_and_launch_new(void) int flags = 0; /* First, count how many of each type of circuit we have already. */ - for (circ=global_circuitlist;circ;circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { cpath_build_state_t *build_state; origin_circuit_t *origin_circ; if (!CIRCUIT_IS_ORIGIN(circ)) @@ -948,8 +944,8 @@ circuit_predict_and_launch_new(void) * want, don't do another -- we want to leave a few slots open so * we can still build circuits preemptively as needed. */ if (num < MAX_UNUSED_OPEN_CIRCUITS-2 && - get_options()->LearnCircuitBuildTimeout && - circuit_build_times_needs_circuits_now(&circ_times)) { + ! circuit_build_times_disabled() && + circuit_build_times_needs_circuits_now(get_circuit_build_times())) { flags = CIRCLAUNCH_NEED_CAPACITY; log_info(LD_CIRC, "Have %d clean circs need another buildtime test circ.", num); @@ -1084,8 +1080,8 @@ circuit_expire_old_circuits_clientside(void) tor_gettimeofday(&now); cutoff = now; - if (get_options()->LearnCircuitBuildTimeout && - circuit_build_times_needs_circuits(&circ_times)) { + if (! circuit_build_times_disabled() && + circuit_build_times_needs_circuits(get_circuit_build_times())) { /* Circuits should be shorter lived if we need more of them * for learning a good build timeout */ cutoff.tv_sec -= IDLE_TIMEOUT_WHILE_LEARNING; @@ -1093,7 +1089,7 @@ circuit_expire_old_circuits_clientside(void) cutoff.tv_sec -= get_options()->CircuitIdleTimeout; } - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (circ->marked_for_close || !CIRCUIT_IS_ORIGIN(circ)) continue; /* If the circuit has been dirty for too long, and there are no streams @@ -1176,7 +1172,7 @@ circuit_expire_old_circuits_serverside(time_t now) or_circuit_t *or_circ; time_t cutoff = now - IDLE_ONE_HOP_CIRC_TIMEOUT; - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (circ->marked_for_close || CIRCUIT_IS_ORIGIN(circ)) continue; or_circ = TO_OR_CIRCUIT(circ); @@ -1223,7 +1219,7 @@ circuit_enough_testing_circs(void) if (have_performed_bandwidth_test) return 1; - for (circ = global_circuitlist; circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (!circ->marked_for_close && CIRCUIT_IS_ORIGIN(circ) && circ->purpose == CIRCUIT_PURPOSE_TESTING && circ->state == CIRCUIT_STATE_OPEN) @@ -1382,10 +1378,11 @@ circuit_build_failed(origin_circuit_t *circ) failed_at_last_hop = 1; } if (circ->cpath && - circ->cpath->state != CPATH_STATE_OPEN) { - /* We failed at the first hop. If there's an OR connection - * to blame, blame it. Also, avoid this relay for a while, and - * fail any one-hop directory fetches destined for it. */ + circ->cpath->state != CPATH_STATE_OPEN && + ! circ->base_.received_destroy) { + /* We failed at the first hop for some reason other than a DESTROY cell. + * If there's an OR connection to blame, blame it. Also, avoid this relay + * for a while, and fail any one-hop directory fetches destined for it. */ const char *n_chan_id = circ->cpath->extend_info->identity_digest; int already_marked = 0; if (circ->base_.n_chan) { diff --git a/src/or/command.c b/src/or/command.c index 876ff526a6..9b3ff16f2c 100644 --- a/src/or/command.c +++ b/src/or/command.c @@ -29,6 +29,7 @@ #include "hibernate.h" #include "nodelist.h" #include "onion.h" +#include "rephist.h" #include "relay.h" #include "router.h" #include "routerlist.h" @@ -52,6 +53,33 @@ static void command_process_created_cell(cell_t *cell, channel_t *chan); static void command_process_relay_cell(cell_t *cell, channel_t *chan); static void command_process_destroy_cell(cell_t *cell, channel_t *chan); +/** Convert the cell <b>command</b> into a lower-case, human-readable + * string. */ +const char * +cell_command_to_string(uint8_t command) +{ + switch (command) { + case CELL_PADDING: return "padding"; + case CELL_CREATE: return "create"; + case CELL_CREATED: return "created"; + case CELL_RELAY: return "relay"; + case CELL_DESTROY: return "destroy"; + case CELL_CREATE_FAST: return "create_fast"; + case CELL_CREATED_FAST: return "created_fast"; + case CELL_VERSIONS: return "versions"; + case CELL_NETINFO: return "netinfo"; + case CELL_RELAY_EARLY: return "relay_early"; + case CELL_CREATE2: return "create2"; + case CELL_CREATED2: return "created2"; + case CELL_VPADDING: return "vpadding"; + case CELL_CERTS: return "certs"; + case CELL_AUTH_CHALLENGE: return "auth_challenge"; + case CELL_AUTHENTICATE: return "authenticate"; + case CELL_AUTHORIZE: return "authorize"; + default: return "unrecognized"; + } +} + #ifdef KEEP_TIMING_STATS /** This is a wrapper function around the actual function that processes the * <b>cell</b> that just arrived on <b>conn</b>. Increment <b>*time</b> @@ -277,6 +305,8 @@ command_process_create_cell(cell_t *cell, channel_t *chan) if (create_cell->handshake_type != ONION_HANDSHAKE_TYPE_FAST) { /* hand it off to the cpuworkers, and then return. */ + if (connection_or_digest_is_known_relay(chan->identity_digest)) + rep_hist_note_circuit_handshake_requested(create_cell->handshake_type); if (assign_onionskin_to_cpuworker(NULL, circ, create_cell) < 0) { log_debug(LD_GENERAL,"Failed to hand off onionskin. Closing."); circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT); @@ -496,6 +526,7 @@ command_process_destroy_cell(cell_t *cell, channel_t *chan) log_debug(LD_OR,"Received for circID %u.",(unsigned)cell->circ_id); reason = (uint8_t)cell->payload[0]; + circ->received_destroy = 1; if (!CIRCUIT_IS_ORIGIN(circ) && cell->circ_id == TO_OR_CIRCUIT(circ)->p_circ_id) { diff --git a/src/or/command.h b/src/or/command.h index 913f46a5cd..adea6adeaa 100644 --- a/src/or/command.h +++ b/src/or/command.h @@ -19,6 +19,8 @@ void command_process_var_cell(channel_t *chan, var_cell_t *cell); void command_setup_channel(channel_t *chan); void command_setup_listener(channel_listener_t *chan_l); +const char *cell_command_to_string(uint8_t command); + extern uint64_t stats_n_padding_cells_processed; extern uint64_t stats_n_create_cells_processed; extern uint64_t stats_n_created_cells_processed; diff --git a/src/or/config.c b/src/or/config.c index fc033ce1bc..d348f1036b 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -45,6 +45,8 @@ #include "routerset.h" #include "statefile.h" #include "transports.h" +#include "ext_orport.h" +#include "torgzip.h" #ifdef _WIN32 #include <shlobj.h> #endif @@ -218,6 +220,9 @@ static config_var_t option_vars_[] = { VPORT(DNSPort, LINELIST, NULL), V(DNSListenAddress, LINELIST, NULL), V(DownloadExtraInfo, BOOL, "0"), + V(TestingEnableConnBwEvent, BOOL, "0"), + V(TestingEnableCellStatsEvent, BOOL, "0"), + V(TestingEnableTbEmptyEvent, BOOL, "0"), V(EnforceDistinctSubnets, BOOL, "1"), V(EntryNodes, ROUTERSET, NULL), V(EntryStatistics, BOOL, "0"), @@ -230,13 +235,14 @@ static config_var_t option_vars_[] = { V(ExitPolicyRejectPrivate, BOOL, "1"), V(ExitPortStatistics, BOOL, "0"), V(ExtendAllowPrivateAddresses, BOOL, "0"), + VPORT(ExtORPort, LINELIST, NULL), V(ExtraInfoStatistics, BOOL, "1"), V(FallbackDir, LINELIST, NULL), OBSOLETE("FallbackNetworkstatusFile"), V(FascistFirewall, BOOL, "0"), V(FirewallPorts, CSV, ""), - V(FastFirstHopPK, BOOL, "1"), + V(FastFirstHopPK, AUTOBOOL, "auto"), V(FetchDirInfoEarly, BOOL, "0"), V(FetchDirInfoExtraEarly, BOOL, "0"), V(FetchServerDescriptors, BOOL, "1"), @@ -315,7 +321,7 @@ static config_var_t option_vars_[] = { OBSOLETE("NoPublish"), VAR("NodeFamily", LINELIST, NodeFamilies, NULL), V(NumCPUs, UINT, "0"), - V(NumDirectoryGuards, UINT, "3"), + V(NumDirectoryGuards, UINT, "0"), V(NumEntryGuards, UINT, "3"), V(ORListenAddress, LINELIST, NULL), VPORT(ORPort, LINELIST, NULL), @@ -390,6 +396,7 @@ static config_var_t option_vars_[] = { V(SSLKeyLifetime, INTERVAL, "0"), OBSOLETE("StatusFetchPeriod"), V(StrictNodes, BOOL, "0"), + V(Support022HiddenServices, AUTOBOOL, "auto"), OBSOLETE("SysLog"), V(TestSocks, BOOL, "0"), OBSOLETE("TestVia"), @@ -454,6 +461,7 @@ static config_var_t option_vars_[] = { V(TestingDescriptorMaxDownloadTries, UINT, "8"), V(TestingMicrodescMaxDownloadTries, UINT, "8"), V(TestingCertMaxDownloadTries, UINT, "8"), + V(TestingDirAuthVoteGuard, ROUTERSET, NULL), VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "0"), { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } @@ -498,6 +506,9 @@ static const config_var_t testing_tor_network_defaults[] = { V(TestingDescriptorMaxDownloadTries, UINT, "80"), V(TestingMicrodescMaxDownloadTries, UINT, "80"), V(TestingCertMaxDownloadTries, UINT, "80"), + V(TestingEnableConnBwEvent, BOOL, "1"), + V(TestingEnableCellStatsEvent, BOOL, "1"), + V(TestingEnableTbEmptyEvent, BOOL, "1"), VAR("___UsingTestNetworkDefaults", BOOL, UsingTestNetworkDefaults_, "1"), { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } @@ -519,7 +530,7 @@ static int options_transition_affects_workers( const or_options_t *old_options, const or_options_t *new_options); static int options_transition_affects_descriptor( const or_options_t *old_options, const or_options_t *new_options); -static int check_nickname_list(const char *lst, const char *name, char **msg); +static int check_nickname_list(char **lst, const char *name, char **msg); static int parse_client_transport_line(const char *line, int validate_only); @@ -548,6 +559,9 @@ static int parse_outbound_addresses(or_options_t *options, int validate_only, char **msg); static void config_maybe_load_geoip_files_(const or_options_t *options, const or_options_t *old_options); +static int options_validate_cb(void *old_options, void *options, + void *default_options, + int from_setconf, char **msg); /** Magic value for or_options_t. */ #define OR_OPTIONS_MAGIC 9090909 @@ -559,7 +573,7 @@ STATIC config_format_t options_format = { STRUCT_OFFSET(or_options_t, magic_), option_abbrevs_, option_vars_, - (validate_fn_t)options_validate, + options_validate_cb, NULL }; @@ -576,8 +590,12 @@ static or_options_t *global_default_options = NULL; static char *torrc_fname = NULL; /** Name of the most recently read torrc-defaults file.*/ static char *torrc_defaults_fname; -/** Configuration Options set by command line. */ +/** Configuration options set by command line. */ static config_line_t *global_cmdline_options = NULL; +/** Non-configuration options set by the command line */ +static config_line_t *global_cmdline_only_options = NULL; +/** Boolean: Have we parsed the command line? */ +static int have_parsed_cmdline = 0; /** Contents of most recently read DirPortFrontPage file. */ static char *global_dirfrontpagecontents = NULL; /** List of port_cfg_t for all configured ports. */ @@ -722,6 +740,7 @@ or_options_free(or_options_t *options) smartlist_free(options->NodeFamilySets); } tor_free(options->BridgePassword_AuthDigest_); + tor_free(options->command_arg); config_free(&options_format, options); } @@ -738,6 +757,9 @@ config_free_all(void) config_free_lines(global_cmdline_options); global_cmdline_options = NULL; + config_free_lines(global_cmdline_only_options); + global_cmdline_only_options = NULL; + if (configured_ports) { SMARTLIST_FOREACH(configured_ports, port_cfg_t *, p, port_cfg_free(p)); @@ -1113,9 +1135,6 @@ options_act_reversible(const or_options_t *old_options, char **msg) /* No need to roll back, since you can't change the value. */ } - /* Write control ports to disk as appropriate */ - control_ports_write_to_file(); - if (directory_caches_v2_dir_info(options)) { char *fn = NULL; tor_asprintf(&fn, "%s"PATH_SEPARATOR"cached-status", @@ -1155,9 +1174,10 @@ options_act_reversible(const or_options_t *old_options, char **msg) } if (get_min_log_level() >= LOG_INFO && get_min_log_level() != old_min_log_level) { - log_warn(LD_GENERAL, "Your log may contain sensitive information - you're " - "logging above \"notice\". Please log safely. Don't log unless " - "it serves an important reason. Overwrite the log afterwards."); + log_warn(LD_GENERAL, "Your log may contain sensitive information: you're " + "logging more than \"notice\". Please log safely. Don't log " + "unless it serves an important reason, and overwrite the log " + "afterwards."); } SMARTLIST_FOREACH(replaced_listeners, connection_t *, conn, @@ -1312,6 +1332,9 @@ options_act(const or_options_t *old_options) } } + /* Write control ports to disk as appropriate */ + control_ports_write_to_file(); + if (running_tor && !have_lockfile()) { if (try_locking(options, 1) < 0) return -1; @@ -1472,8 +1495,14 @@ options_act(const or_options_t *old_options) return -1; } - if (init_cookie_authentication(options->CookieAuthentication) < 0) { - log_warn(LD_CONFIG,"Error creating cookie authentication file."); + if (init_control_cookie_authentication(options->CookieAuthentication) < 0) { + log_warn(LD_CONFIG,"Error creating control cookie authentication file."); + return -1; + } + + /* If we have an ExtORPort, initialize its auth cookie. */ + if (init_ext_or_cookie_authentication(!!options->ExtORPort_lines) < 0) { + log_warn(LD_CONFIG,"Error creating Extended ORPort cookie file."); return -1; } @@ -1781,40 +1810,66 @@ options_act(const or_options_t *old_options) return 0; } -/** Helper: Read a list of configuration options from the command line. - * If successful, put them in *<b>result</b> and return 0, and return - * -1 and leave *<b>result</b> alone. */ -static int -config_get_commandlines(int argc, char **argv, config_line_t **result) +static const struct { + const char *name; + int takes_argument; +} CMDLINE_ONLY_OPTIONS[] = { + { "-f", 1 }, + { "--allow-missing-torrc", 0 }, + { "--defaults-torrc", 1 }, + { "--hash-password", 1 }, + { "--dump-config", 1 }, + { "--list-fingerprint", 0 }, + { "--verify-config", 0 }, + { "--ignore-missing-torrc", 0 }, + { "--quiet", 0 }, + { "--hush", 0 }, + { "--version", 0 }, + { "--library-versions", 0 }, + { "-h", 0 }, + { "--help", 0 }, + { "--list-torrc-options", 0 }, + { "--digests", 0 }, + { "--nt-service", 0 }, + { "-nt-service", 0 }, + { NULL, 0 }, +}; + +/** Helper: Read a list of configuration options from the command line. If + * successful, or if ignore_errors is set, put them in *<b>result</b>, put the + * commandline-only options in *<b>cmdline_result</b>, and return 0; + * otherwise, return -1 and leave *<b>result</b> and <b>cmdline_result</b> + * alone. */ +int +config_parse_commandline(int argc, char **argv, int ignore_errors, + config_line_t **result, + config_line_t **cmdline_result) { + config_line_t *param = NULL; + config_line_t *front = NULL; config_line_t **new = &front; - char *s; + + config_line_t *front_cmdline = NULL; + config_line_t **new_cmdline = &front_cmdline; + + char *s, *arg; int i = 1; while (i < argc) { unsigned command = CONFIG_LINE_NORMAL; int want_arg = 1; + int is_cmdline = 0; + int j; - if (!strcmp(argv[i],"-f") || - !strcmp(argv[i],"--defaults-torrc") || - !strcmp(argv[i],"--hash-password")) { - i += 2; /* command-line option with argument. ignore them. */ - continue; - } else if (!strcmp(argv[i],"--list-fingerprint") || - !strcmp(argv[i],"--verify-config") || - !strcmp(argv[i],"--ignore-missing-torrc") || - !strcmp(argv[i],"--quiet") || - !strcmp(argv[i],"--hush")) { - i += 1; /* command-line option. ignore it. */ - continue; - } else if (!strcmp(argv[i],"--nt-service") || - !strcmp(argv[i],"-nt-service")) { - i += 1; - continue; + for (j = 0; CMDLINE_ONLY_OPTIONS[j].name != NULL; ++j) { + if (!strcmp(argv[i], CMDLINE_ONLY_OPTIONS[j].name)) { + is_cmdline = 1; + want_arg = CMDLINE_ONLY_OPTIONS[j].takes_argument; + break; + } } - *new = tor_malloc_zero(sizeof(config_line_t)); s = argv[i]; /* Each keyword may be prefixed with one or two dashes. */ @@ -1834,22 +1889,38 @@ config_get_commandlines(int argc, char **argv, config_line_t **result) } if (want_arg && i == argc-1) { - log_warn(LD_CONFIG,"Command-line option '%s' with no value. Failing.", - argv[i]); - config_free_lines(front); - return -1; + if (ignore_errors) { + arg = strdup(""); + } else { + log_warn(LD_CONFIG,"Command-line option '%s' with no value. Failing.", + argv[i]); + config_free_lines(front); + config_free_lines(front_cmdline); + return -1; + } + } else { + arg = want_arg ? tor_strdup(argv[i+1]) : strdup(""); } - (*new)->key = tor_strdup(config_expand_abbrev(&options_format, s, 1, 1)); - (*new)->value = want_arg ? tor_strdup(argv[i+1]) : tor_strdup(""); - (*new)->command = command; - (*new)->next = NULL; + param = tor_malloc_zero(sizeof(config_line_t)); + param->key = is_cmdline ? tor_strdup(argv[i]) : tor_strdup(s); + param->value = arg; + param->command = command; + param->next = NULL; log_debug(LD_CONFIG, "command line: parsed keyword '%s', value '%s'", - (*new)->key, (*new)->value); + param->key, param->value); + + if (is_cmdline) { + *new_cmdline = param; + new_cmdline = &((*new_cmdline)->next); + } else { + *new = param; + new = &((*new)->next); + } - new = &((*new)->next); i += want_arg ? 2 : 1; } + *cmdline_result = front_cmdline; *result = front; return 0; } @@ -2216,10 +2287,29 @@ options_init(or_options_t *options) * include options that are the same as Tor's defaults. */ char * -options_dump(const or_options_t *options, int minimal) +options_dump(const or_options_t *options, int how_to_dump) { - return config_dump(&options_format, global_default_options, - options, minimal, 0); + const or_options_t *use_defaults; + int minimal; + switch (how_to_dump) { + case OPTIONS_DUMP_MINIMAL: + use_defaults = global_default_options; + minimal = 1; + break; + case OPTIONS_DUMP_DEFAULTS: + use_defaults = NULL; + minimal = 1; + break; + case OPTIONS_DUMP_ALL: + use_defaults = NULL; + minimal = 0; + break; + default: + log_warn(LD_BUG, "Bogus value for how_to_dump==%d", how_to_dump); + return NULL; + } + + return config_dump(&options_format, use_defaults, options, minimal, 0); } /** Return 0 if every element of sl is a string holding a decimal @@ -2317,6 +2407,10 @@ compute_publishserverdescriptor(or_options_t *options) * will generate too many circuits and potentially overload the network. */ #define MIN_MAX_CIRCUIT_DIRTINESS 10 +/** Highest allowable value for MaxCircuitDirtiness: prevents time_t + * overflows. */ +#define MAX_MAX_CIRCUIT_DIRTINESS (30*24*60*60) + /** Lowest allowable value for CircuitStreamTimeout; if this is too low, Tor * will generate too many circuits and potentially overload the network. */ #define MIN_CIRCUIT_STREAM_TIMEOUT 10 @@ -2332,6 +2426,14 @@ compute_publishserverdescriptor(or_options_t *options) * */ #define RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT (10) +static int +options_validate_cb(void *old_options, void *options, void *default_options, + int from_setconf, char **msg) +{ + return options_validate(old_options, options, default_options, + from_setconf, msg); +} + /** Return 0 if every setting in <b>options</b> is reasonable, is a * permissible transition from <b>old_options</b>, and none of the * testing-only settings differ from <b>default_options</b> unless in @@ -2838,6 +2940,12 @@ options_validate(or_options_t *old_options, or_options_t *options, options->MaxCircuitDirtiness = MIN_MAX_CIRCUIT_DIRTINESS; } + if (options->MaxCircuitDirtiness > MAX_MAX_CIRCUIT_DIRTINESS) { + log_warn(LD_CONFIG, "MaxCircuitDirtiness option is too high; " + "setting to %d days.", MAX_MAX_CIRCUIT_DIRTINESS/86400); + options->MaxCircuitDirtiness = MAX_MAX_CIRCUIT_DIRTINESS; + } + if (options->CircuitStreamTimeout && options->CircuitStreamTimeout < MIN_CIRCUIT_STREAM_TIMEOUT) { log_warn(LD_CONFIG, "CircuitStreamTimeout option is too short; " @@ -3081,7 +3189,7 @@ options_validate(or_options_t *old_options, or_options_t *options, "You should also make sure you aren't listing this bridge's " "fingerprint in any other MyFamily."); } - if (check_nickname_list(options->MyFamily, "MyFamily", msg)) + if (check_nickname_list(&options->MyFamily, "MyFamily", msg)) return -1; for (cl = options->NodeFamilies; cl; cl = cl->next) { routerset_t *rs = routerset_new(); @@ -3157,6 +3265,17 @@ options_validate(or_options_t *old_options, or_options_t *options, smartlist_free(options_sl); } + /* If we are a bridge with a pluggable transport proxy but no + Extended ORPort, inform the user that she is missing out. */ + if (server_mode(options) && options->ServerTransportPlugin && + !options->ExtORPort_lines) { + log_notice(LD_CONFIG, "We are a bridge with a pluggable transport " + "proxy but the Extended ORPort is disabled. The " + "Extended ORPort helps Tor communicate with the pluggable " + "transport proxy. Please enable it using the ExtORPort " + "torrc option."); + } + if (options->ConstrainedSockets) { /* If the user wants to constrain socket buffer use, make sure the desired * limit is between MIN|MAX_TCPSOCK_BUFFER in k increments. */ @@ -3238,8 +3357,8 @@ options_validate(or_options_t *old_options, or_options_t *options, (options->AlternateDirAuthority && options->AlternateBridgeAuthority))) { REJECT("TestingTorNetwork may only be configured in combination with " - "a non-default set of DirServer or both of AlternateDirAuthority " - "and AlternateBridgeAuthority configured."); + "a non-default set of DirAuthority or both of " + "AlternateDirAuthority and AlternateBridgeAuthority configured."); } if (options->AllowSingleHopExits && !options->DirAuthorities) { @@ -3354,6 +3473,24 @@ options_validate(or_options_t *old_options, or_options_t *options, COMPLAIN("TestingCertMaxDownloadTries is insanely high."); } + if (options->TestingEnableConnBwEvent && + !options->TestingTorNetwork && !options->UsingTestNetworkDefaults_) { + REJECT("TestingEnableConnBwEvent may only be changed in testing " + "Tor networks!"); + } + + if (options->TestingEnableCellStatsEvent && + !options->TestingTorNetwork && !options->UsingTestNetworkDefaults_) { + REJECT("TestingEnableCellStatsEvent may only be changed in testing " + "Tor networks!"); + } + + if (options->TestingEnableTbEmptyEvent && + !options->TestingTorNetwork && !options->UsingTestNetworkDefaults_) { + REJECT("TestingEnableTbEmptyEvent may only be changed in testing " + "Tor networks!"); + } + if (options->TestingTorNetwork) { log_warn(LD_CONFIG, "TestingTorNetwork is set. This will make your node " "almost unusable in the public Tor network, and is " @@ -3612,31 +3749,63 @@ get_default_conf_file(int defaults_file) } /** Verify whether lst is a string containing valid-looking comma-separated - * nicknames, or NULL. Return 0 on success. Warn and return -1 on failure. + * nicknames, or NULL. Will normalise <b>lst</b> to prefix '$' to any nickname + * or fingerprint that needs it. Return 0 on success. + * Warn and return -1 on failure. */ static int -check_nickname_list(const char *lst, const char *name, char **msg) +check_nickname_list(char **lst, const char *name, char **msg) { int r = 0; smartlist_t *sl; + int changes = 0; - if (!lst) + if (!*lst) return 0; sl = smartlist_new(); - smartlist_split_string(sl, lst, ",", + smartlist_split_string(sl, *lst, ",", SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK|SPLIT_STRIP_SPACE, 0); - SMARTLIST_FOREACH(sl, const char *, s, + SMARTLIST_FOREACH_BEGIN(sl, char *, s) { if (!is_legal_nickname_or_hexdigest(s)) { + // check if first char is dollar + if (s[0] != '$') { + // Try again but with a dollar symbol prepended + char *prepended; + tor_asprintf(&prepended, "$%s", s); + + if (is_legal_nickname_or_hexdigest(prepended)) { + // The nickname is valid when it's prepended, swap the current + // version with a prepended one + tor_free(s); + SMARTLIST_REPLACE_CURRENT(sl, s, prepended); + changes = 1; + continue; + } + + // Still not valid, free and fallback to error message + tor_free(prepended); + } + tor_asprintf(msg, "Invalid nickname '%s' in %s line", s, name); r = -1; break; } - }); + } + SMARTLIST_FOREACH_END(s); + + // Replace the caller's nickname list with a fixed one + if (changes && r == 0) { + char *newNicknames = smartlist_join_strings(sl, ", ", 0, NULL); + tor_free(*lst); + *lst = newNicknames; + } + SMARTLIST_FOREACH(sl, char *, s, tor_free(s)); smartlist_free(sl); + return r; } @@ -3652,26 +3821,26 @@ check_nickname_list(const char *lst, const char *name, char **msg) * filename if it doesn't exist. */ static char * -find_torrc_filename(int argc, char **argv, +find_torrc_filename(config_line_t *cmd_arg, int defaults_file, int *using_default_fname, int *ignore_missing_torrc) { char *fname=NULL; - int i; + config_line_t *p_index; const char *fname_opt = defaults_file ? "--defaults-torrc" : "-f"; const char *ignore_opt = defaults_file ? NULL : "--ignore-missing-torrc"; if (defaults_file) *ignore_missing_torrc = 1; - for (i = 1; i < argc; ++i) { - if (i < argc-1 && !strcmp(argv[i],fname_opt)) { + for (p_index = cmd_arg; p_index; p_index = p_index->next) { + if (!strcmp(p_index->key, fname_opt)) { if (fname) { log_warn(LD_CONFIG, "Duplicate %s options on command line.", fname_opt); tor_free(fname); } - fname = expand_filename(argv[i+1]); + fname = expand_filename(p_index->value); { char *absfname; @@ -3681,8 +3850,7 @@ find_torrc_filename(int argc, char **argv, } *using_default_fname = 0; - ++i; - } else if (ignore_opt && !strcmp(argv[i],ignore_opt)) { + } else if (ignore_opt && !strcmp(p_index->key,ignore_opt)) { *ignore_missing_torrc = 1; } } @@ -3719,7 +3887,7 @@ find_torrc_filename(int argc, char **argv, * Return the contents of the file on success, and NULL on failure. */ static char * -load_torrc_from_disk(int argc, char **argv, int defaults_file) +load_torrc_from_disk(config_line_t *cmd_arg, int defaults_file) { char *fname=NULL; char *cf = NULL; @@ -3727,7 +3895,7 @@ load_torrc_from_disk(int argc, char **argv, int defaults_file) int ignore_missing_torrc = 0; char **fname_var = defaults_file ? &torrc_defaults_fname : &torrc_fname; - fname = find_torrc_filename(argc, argv, defaults_file, + fname = find_torrc_filename(cmd_arg, defaults_file, &using_default_torrc, &ignore_missing_torrc); tor_assert(fname); log_debug(LD_CONFIG, "Opening config file \"%s\"", fname); @@ -3769,59 +3937,75 @@ int options_init_from_torrc(int argc, char **argv) { char *cf=NULL, *cf_defaults=NULL; - int i, command; + int command; int retval = -1; - static char **backup_argv; - static int backup_argc; char *command_arg = NULL; char *errmsg=NULL; + config_line_t *p_index = NULL; + config_line_t *cmdline_only_options = NULL; - if (argv) { /* first time we're called. save command line args */ - backup_argv = argv; - backup_argc = argc; - } else { /* we're reloading. need to clean up old options first. */ - argv = backup_argv; - argc = backup_argc; + /* Go through command-line variables */ + if (! have_parsed_cmdline) { + /* Or we could redo the list every time we pass this place. + * It does not really matter */ + if (config_parse_commandline(argc, argv, 0, &global_cmdline_options, + &global_cmdline_only_options) < 0) { + goto err; + } + have_parsed_cmdline = 1; } - if (argc > 1 && (!strcmp(argv[1], "-h") || !strcmp(argv[1],"--help"))) { + cmdline_only_options = global_cmdline_only_options; + + if (config_line_find(cmdline_only_options, "-h") || + config_line_find(cmdline_only_options, "--help")) { print_usage(); exit(0); } - if (argc > 1 && !strcmp(argv[1], "--list-torrc-options")) { + if (config_line_find(cmdline_only_options, "--list-torrc-options")) { /* For documenting validating whether we've documented everything. */ list_torrc_options(); exit(0); } - if (argc > 1 && (!strcmp(argv[1],"--version"))) { + if (config_line_find(cmdline_only_options, "--version")) { printf("Tor version %s.\n",get_version()); exit(0); } - if (argc > 1 && (!strcmp(argv[1],"--digests"))) { + + if (config_line_find(cmdline_only_options, "--digests")) { printf("Tor version %s.\n",get_version()); printf("%s", libor_get_digests()); printf("%s", tor_get_digests()); exit(0); } - /* Go through command-line variables */ - if (!global_cmdline_options) { - /* Or we could redo the list every time we pass this place. - * It does not really matter */ - if (config_get_commandlines(argc, argv, &global_cmdline_options) < 0) { - goto err; - } + if (config_line_find(cmdline_only_options, "--library-versions")) { + printf("Tor version %s. \n", get_version()); + printf("Library versions\tCompiled\t\tRuntime\n"); + printf("Libevent\t\t%-15s\t\t%s\n", + tor_libevent_get_header_version_str(), + tor_libevent_get_version_str()); + printf("OpenSSL \t\t%-15s\t\t%s\n", + crypto_openssl_get_header_version_str(), + crypto_openssl_get_version_str()); + printf("Zlib \t\t%-15s\t\t%s\n", + tor_zlib_get_header_version_str(), + tor_zlib_get_version_str()); + //TODO: Hex versions? + exit(0); } command = CMD_RUN_TOR; - for (i = 1; i < argc; ++i) { - if (!strcmp(argv[i],"--list-fingerprint")) { + for (p_index = cmdline_only_options; p_index; p_index = p_index->next) { + if (!strcmp(p_index->key,"--list-fingerprint")) { command = CMD_LIST_FINGERPRINT; - } else if (!strcmp(argv[i],"--hash-password")) { + } else if (!strcmp(p_index->key, "--hash-password")) { command = CMD_HASH_PASSWORD; - command_arg = tor_strdup( (i < argc-1) ? argv[i+1] : ""); - ++i; - } else if (!strcmp(argv[i],"--verify-config")) { + command_arg = p_index->value; + } else if (!strcmp(p_index->key, "--dump-config")) { + command = CMD_DUMP_CONFIG; + command_arg = p_index->value; + } else if (!strcmp(p_index->key, "--verify-config")) { command = CMD_VERIFY_CONFIG; } } @@ -3830,10 +4014,15 @@ options_init_from_torrc(int argc, char **argv) cf_defaults = tor_strdup(""); cf = tor_strdup(""); } else { - cf_defaults = load_torrc_from_disk(argc, argv, 1); - cf = load_torrc_from_disk(argc, argv, 0); - if (!cf) - goto err; + cf_defaults = load_torrc_from_disk(cmdline_only_options, 1); + cf = load_torrc_from_disk(cmdline_only_options, 0); + if (!cf) { + if (config_line_find(cmdline_only_options, "--allow-missing-torrc")) { + cf = tor_strdup(""); + } else { + goto err; + } + } } retval = options_init_from_string(cf_defaults, cf, command, command_arg, @@ -3877,7 +4066,7 @@ options_init_from_string(const char *cf_defaults, const char *cf, newoptions->magic_ = OR_OPTIONS_MAGIC; options_init(newoptions); newoptions->command = command; - newoptions->command_arg = command_arg; + newoptions->command_arg = command_arg ? tor_strdup(command_arg) : NULL; for (i = 0; i < 2; ++i) { const char *body = i==0 ? cf_defaults : cf; @@ -3941,7 +4130,7 @@ options_init_from_string(const char *cf_defaults, const char *cf, newoptions->magic_ = OR_OPTIONS_MAGIC; options_init(newoptions); newoptions->command = command; - newoptions->command_arg = command_arg; + newoptions->command_arg = command_arg ? tor_strdup(command_arg) : NULL; /* Assign all options a second time. */ for (i = 0; i < 2; ++i) { @@ -4408,7 +4597,8 @@ parse_bridge_line(const char *line) * <b>line</b>. Return 0 if the line is well-formed, and -1 if it * isn't. * - * If <b>validate_only</b> is 0, and the line is well-formed: + * If <b>validate_only</b> is 0, the line is well-formed, and the + * transport is needed by some bridge: * - If it's an external proxy line, add the transport described in the line to * our internal transport list. * - If it's a managed proxy line, launch the managed proxy. */ @@ -4430,7 +4620,8 @@ parse_client_transport_line(const char *line, int validate_only) int is_managed=0; char **proxy_argv=NULL; char **tmp=NULL; - int proxy_argc,i; + int proxy_argc, i; + int is_useless_proxy=1; int line_length; @@ -4452,11 +4643,16 @@ parse_client_transport_line(const char *line, int validate_only) smartlist_split_string(transport_list, transports, ",", SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); SMARTLIST_FOREACH_BEGIN(transport_list, const char *, transport_name) { + /* validate transport names */ if (!string_is_C_identifier(transport_name)) { log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).", transport_name); goto err; } + + /* see if we actually need the transports provided by this proxy */ + if (!validate_only && transport_is_needed(transport_name)) + is_useless_proxy = 0; } SMARTLIST_FOREACH_END(transport_name); /* field2 is either a SOCKS version or "exec" */ @@ -4475,9 +4671,15 @@ parse_client_transport_line(const char *line, int validate_only) } if (is_managed) { /* managed */ - if (!validate_only) { /* if we are not just validating, use the - rest of the line as the argv of the proxy - to be launched */ + if (!validate_only && is_useless_proxy) { + log_warn(LD_GENERAL, "Pluggable transport proxy (%s) does not provide " + "any needed transports and will not be launched.", line); + } + + /* If we are not just validating, use the rest of the line as the + argv of the proxy to be launched. Also, make sure that we are + only launching proxies that contribute useful transports. */ + if (!validate_only && !is_useless_proxy) { proxy_argc = line_length-2; tor_assert(proxy_argc > 0); proxy_argv = tor_malloc_zero(sizeof(char*)*(proxy_argc+1)); @@ -4832,7 +5034,7 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, smartlist_split_string(items, line, NULL, SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, -1); if (smartlist_len(items) < 1) { - log_warn(LD_CONFIG, "No arguments on DirServer line."); + log_warn(LD_CONFIG, "No arguments on DirAuthority line."); goto err; } @@ -4860,7 +5062,7 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, char *portstring = flag + strlen("orport="); or_port = (uint16_t) tor_parse_long(portstring, 10, 1, 65535, &ok, NULL); if (!ok) - log_warn(LD_CONFIG, "Invalid orport '%s' on DirServer line.", + log_warn(LD_CONFIG, "Invalid orport '%s' on DirAuthority line.", portstring); } else if (!strcmpstart(flag, "weight=")) { int ok; @@ -4874,13 +5076,13 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, char *idstr = flag + strlen("v3ident="); if (strlen(idstr) != HEX_DIGEST_LEN || base16_decode(v3_digest, DIGEST_LEN, idstr, HEX_DIGEST_LEN)<0) { - log_warn(LD_CONFIG, "Bad v3 identity digest '%s' on DirServer line", + log_warn(LD_CONFIG, "Bad v3 identity digest '%s' on DirAuthority line", flag); } else { type |= V3_DIRINFO|EXTRAINFO_DIRINFO|MICRODESC_DIRINFO; } } else { - log_warn(LD_CONFIG, "Unrecognized flag '%s' on DirServer line", + log_warn(LD_CONFIG, "Unrecognized flag '%s' on DirAuthority line", flag); } tor_free(flag); @@ -4892,23 +5094,23 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, type &= ~V2_DIRINFO; if (smartlist_len(items) < 2) { - log_warn(LD_CONFIG, "Too few arguments to DirServer line."); + log_warn(LD_CONFIG, "Too few arguments to DirAuthority line."); goto err; } addrport = smartlist_get(items, 0); smartlist_del_keeporder(items, 0); if (addr_port_lookup(LOG_WARN, addrport, &address, NULL, &dir_port)<0) { - log_warn(LD_CONFIG, "Error parsing DirServer address '%s'", addrport); + log_warn(LD_CONFIG, "Error parsing DirAuthority address '%s'", addrport); goto err; } if (!dir_port) { - log_warn(LD_CONFIG, "Missing port in DirServer address '%s'",addrport); + log_warn(LD_CONFIG, "Missing port in DirAuthority address '%s'",addrport); goto err; } fingerprint = smartlist_join_strings(items, "", 0, NULL); if (strlen(fingerprint) != HEX_DIGEST_LEN) { - log_warn(LD_CONFIG, "Key digest '%s' for DirServer is wrong length %d.", + log_warn(LD_CONFIG, "Key digest '%s' for DirAuthority is wrong length %d.", fingerprint, (int)strlen(fingerprint)); goto err; } @@ -4921,7 +5123,7 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, goto err; } if (base16_decode(digest, DIGEST_LEN, fingerprint, HEX_DIGEST_LEN)<0) { - log_warn(LD_CONFIG, "Unable to decode DirServer key digest."); + log_warn(LD_CONFIG, "Unable to decode DirAuthority key digest."); goto err; } @@ -5092,6 +5294,27 @@ warn_nonlocal_client_ports(const smartlist_t *ports, const char *portname, } SMARTLIST_FOREACH_END(port); } +/** Warn for every Extended ORPort port in <b>ports</b> that is on a + * publicly routable address. */ +static void +warn_nonlocal_ext_orports(const smartlist_t *ports, const char *portname) +{ + SMARTLIST_FOREACH_BEGIN(ports, const port_cfg_t *, port) { + if (port->type != CONN_TYPE_EXT_OR_LISTENER) + continue; + if (port->is_unix_addr) + continue; + /* XXX maybe warn even if address is RFC1918? */ + if (!tor_addr_is_internal(&port->addr, 1)) { + log_warn(LD_CONFIG, "You specified a public address '%s' for %sPort. " + "This is not advised; this address is supposed to only be " + "exposed on localhost so that your pluggable transport " + "proxies can connect to it.", + fmt_addrport(&port->addr, port->port), portname); + } + } SMARTLIST_FOREACH_END(port); +} + /** Given a list of port_cfg_t in <b>ports</b>, warn any controller port there * is listening on any non-loopback address. If <b>forbid</b> is true, * then emit a stronger warning and remove the port from the list. @@ -5192,6 +5415,7 @@ parse_port_config(smartlist_t *out, smartlist_t *elts; int retval = -1; const unsigned is_control = (listener_type == CONN_TYPE_CONTROL_LISTENER); + const unsigned is_ext_orport = (listener_type == CONN_TYPE_EXT_OR_LISTENER); const unsigned allow_no_options = flags & CL_PORT_NO_OPTIONS; const unsigned use_server_options = flags & CL_PORT_SERVER_OPTIONS; const unsigned warn_nonlocal = flags & CL_PORT_WARN_NONLOCAL; @@ -5269,6 +5493,8 @@ parse_port_config(smartlist_t *out, if (warn_nonlocal && out) { if (is_control) warn_nonlocal_controller_ports(out, forbid_nonlocal); + else if (is_ext_orport) + warn_nonlocal_ext_orports(out, portname); else warn_nonlocal_client_ports(out, portname, listener_type); } @@ -5542,6 +5768,8 @@ parse_port_config(smartlist_t *out, if (warn_nonlocal && out) { if (is_control) warn_nonlocal_controller_ports(out, forbid_nonlocal); + else if (is_ext_orport) + warn_nonlocal_ext_orports(out, portname); else warn_nonlocal_client_ports(out, portname, listener_type); } @@ -5688,6 +5916,14 @@ parse_ports(or_options_t *options, int validate_only, goto err; } if (parse_port_config(ports, + options->ExtORPort_lines, NULL, + "ExtOR", CONN_TYPE_EXT_OR_LISTENER, + "127.0.0.1", 0, + CL_PORT_SERVER_OPTIONS|CL_PORT_WARN_NONLOCAL) < 0) { + *msg = tor_strdup("Invalid ExtORPort configuration"); + goto err; + } + if (parse_port_config(ports, options->DirPort_lines, options->DirListenAddress, "Dir", CONN_TYPE_DIR_LISTENER, "0.0.0.0", 0, @@ -5722,6 +5958,8 @@ parse_ports(or_options_t *options, int validate_only, !! count_real_listeners(ports, CONN_TYPE_DIR_LISTENER); options->DNSPort_set = !! count_real_listeners(ports, CONN_TYPE_AP_DNS_LISTENER); + options->ExtORPort_set = + !! count_real_listeners(ports, CONN_TYPE_EXT_OR_LISTENER); if (!validate_only) { if (configured_ports) { @@ -5785,6 +6023,13 @@ check_server_ports(const smartlist_t *ports, "listening on one."); r = -1; } + if (n_orport_listeners && !n_orport_advertised) { + log_warn(LD_CONFIG, "We are listening on an ORPort, but not advertising " + "any ORPorts. This will keep us from building a %s " + "descriptor, and make us impossible to use.", + options->BridgeRelay ? "bridge" : "router"); + r = -1; + } if (n_dirport_advertised && !n_dirport_listeners) { log_warn(LD_CONFIG, "We are advertising a DirPort, but not actually " "listening on one."); @@ -6002,7 +6247,7 @@ write_configuration_file(const char *fname, const or_options_t *options) return -1; } - if (!(new_conf = options_dump(options, 1))) { + if (!(new_conf = options_dump(options, OPTIONS_DUMP_MINIMAL))) { log_warn(LD_BUG, "Couldn't get configuration string"); goto err; } @@ -6207,7 +6452,8 @@ remove_file_if_very_old(const char *fname, time_t now) #define VERY_OLD_FILE_AGE (28*24*60*60) struct stat st; - if (stat(fname, &st)==0 && st.st_mtime < now-VERY_OLD_FILE_AGE) { + if (stat(sandbox_intern_string(fname), &st)==0 && + st.st_mtime < now-VERY_OLD_FILE_AGE) { char buf[ISO_TIME_LEN+1]; format_local_iso_time(buf, st.st_mtime); log_notice(LD_GENERAL, "Obsolete file %s hasn't been modified since %s. " @@ -6420,3 +6666,58 @@ config_maybe_load_geoip_files_(const or_options_t *options, config_load_geoip_file_(AF_INET6, options->GeoIPv6File, "geoip6"); } +/** Initialize cookie authentication (used so far by the ControlPort + * and Extended ORPort). + * + * Allocate memory and create a cookie (of length <b>cookie_len</b>) + * in <b>cookie_out</b>. + * Then write it down to <b>fname</b> and prepend it with <b>header</b>. + * + * If the whole procedure was successful, set + * <b>cookie_is_set_out</b> to True. */ +int +init_cookie_authentication(const char *fname, const char *header, + int cookie_len, + uint8_t **cookie_out, int *cookie_is_set_out) +{ + char cookie_file_str_len = strlen(header) + cookie_len; + char *cookie_file_str = tor_malloc(cookie_file_str_len); + int retval = -1; + + /* We don't want to generate a new cookie every time we call + * options_act(). One should be enough. */ + if (*cookie_is_set_out) { + retval = 0; /* we are all set */ + goto done; + } + + /* If we've already set the cookie, free it before re-setting + it. This can happen if we previously generated a cookie, but + couldn't write it to a disk. */ + if (*cookie_out) + tor_free(*cookie_out); + + /* Generate the cookie */ + *cookie_out = tor_malloc(cookie_len); + if (crypto_rand((char *)*cookie_out, cookie_len) < 0) + goto done; + + /* Create the string that should be written on the file. */ + memcpy(cookie_file_str, header, strlen(header)); + memcpy(cookie_file_str+strlen(header), *cookie_out, cookie_len); + if (write_bytes_to_file(fname, cookie_file_str, cookie_file_str_len, 1)) { + log_warn(LD_FS,"Error writing auth cookie to %s.", escaped(fname)); + goto done; + } + + /* Success! */ + log_info(LD_GENERAL, "Generated auth cookie file in '%s'.", escaped(fname)); + *cookie_is_set_out = 1; + retval = 0; + + done: + memwipe(cookie_file_str, 0, cookie_file_str_len); + tor_free(cookie_file_str); + return retval; +} + diff --git a/src/or/config.h b/src/or/config.h index 16a8a350d5..8ee2a45725 100644 --- a/src/or/config.h +++ b/src/or/config.h @@ -32,7 +32,11 @@ int resolve_my_address(int warn_severity, const or_options_t *options, const char **method_out, char **hostname_out); int is_local_addr(const tor_addr_t *addr); void options_init(or_options_t *options); -char *options_dump(const or_options_t *options, int minimal); + +#define OPTIONS_DUMP_MINIMAL 1 +#define OPTIONS_DUMP_DEFAULTS 2 +#define OPTIONS_DUMP_ALL 3 +char *options_dump(const or_options_t *options, int how_to_dump); int options_init_from_torrc(int argc, char **argv); setopt_err_t options_init_from_string(const char *cf_defaults, const char *cf, int command, const char *command_arg, char **msg); @@ -90,8 +94,16 @@ uint32_t get_effective_bwburst(const or_options_t *options); char *get_transport_bindaddr_from_config(const char *transport); +int init_cookie_authentication(const char *fname, const char *header, + int cookie_len, + uint8_t **cookie_out, int *cookie_is_set_out); + or_options_t *options_new(void); +int config_parse_commandline(int argc, char **argv, int ignore_errors, + config_line_t **result, + config_line_t **cmdline_result); + void config_register_addressmaps(const or_options_t *options); /* XXXX024 move to connection_edge.h */ int addressmap_register_auto(const char *from, const char *to, diff --git a/src/or/confparse.c b/src/or/confparse.c index eb0362f494..c5400a6512 100644 --- a/src/or/confparse.c +++ b/src/or/confparse.c @@ -79,6 +79,21 @@ config_line_append(config_line_t **lst, (*lst) = newline; } +/** Return the line in <b>lines</b> whose key is exactly <b>key</b>, or NULL + * if no such key exists. For handling commandline-only options only; other + * options should be looked up in the appropriate data structure. */ +const config_line_t * +config_line_find(const config_line_t *lines, + const char *key) +{ + const config_line_t *cl; + for (cl = lines; cl; cl = cl->next) { + if (!strcmp(cl->key, key)) + return cl; + } + return NULL; +} + /** Helper: parse the config string and strdup into key/value * strings. Set *result to the list, or NULL if parsing the string * failed. Return 0 on success, -1 on failure. Warn and ignore any @@ -377,7 +392,7 @@ config_assign_value(const config_format_t *fmt, void *options, "Interval in '%s %s' is malformed or out of bounds.", c->key, c->value); SMARTLIST_FOREACH(csv_str, char *, cp, tor_free(cp)); - smartlist_clear(csv_str); + smartlist_free(csv_str); return -1; } csv_int = tor_malloc_zero(sizeof(int)); @@ -386,7 +401,7 @@ config_assign_value(const config_format_t *fmt, void *options, } SMARTLIST_FOREACH_END(str); SMARTLIST_FOREACH(csv_str, char *, cp, tor_free(cp)); - smartlist_clear(csv_str); + smartlist_free(csv_str); break; case CONFIG_TYPE_LINELIST: @@ -1059,8 +1074,8 @@ config_dump(const config_format_t *fmt, const void *default_options, /* XXX use a 1 here so we don't add a new log line while dumping */ if (default_options == NULL) { - if (fmt->validate_fn(NULL, defaults_tmp, 1, &msg) < 0) { - log_err(LD_BUG, "Failed to validate default config."); + if (fmt->validate_fn(NULL, defaults_tmp, defaults_tmp, 1, &msg) < 0) { + log_err(LD_BUG, "Failed to validate default config: %s", msg); tor_free(msg); tor_assert(0); } @@ -1126,20 +1141,36 @@ static struct unit_table_t memory_units[] = { { "kbytes", 1<<10 }, { "kilobyte", 1<<10 }, { "kilobytes", 1<<10 }, + { "kilobits", 1<<7 }, + { "kilobit", 1<<7 }, + { "kbits", 1<<7 }, + { "kbit", 1<<7 }, { "m", 1<<20 }, { "mb", 1<<20 }, { "mbyte", 1<<20 }, { "mbytes", 1<<20 }, { "megabyte", 1<<20 }, { "megabytes", 1<<20 }, + { "megabits", 1<<17 }, + { "megabit", 1<<17 }, + { "mbits", 1<<17 }, + { "mbit", 1<<17 }, { "gb", 1<<30 }, { "gbyte", 1<<30 }, { "gbytes", 1<<30 }, { "gigabyte", 1<<30 }, { "gigabytes", 1<<30 }, + { "gigabits", 1<<27 }, + { "gigabit", 1<<27 }, + { "gbits", 1<<27 }, + { "gbit", 1<<27 }, { "tb", U64_LITERAL(1)<<40 }, { "terabyte", U64_LITERAL(1)<<40 }, { "terabytes", U64_LITERAL(1)<<40 }, + { "terabits", U64_LITERAL(1)<<37 }, + { "terabit", U64_LITERAL(1)<<37 }, + { "tbits", U64_LITERAL(1)<<37 }, + { "tbit", U64_LITERAL(1)<<37 }, { NULL, 0 }, }; diff --git a/src/or/confparse.h b/src/or/confparse.h index 924ee0d945..2cd6c49a2a 100644 --- a/src/or/confparse.h +++ b/src/or/confparse.h @@ -71,7 +71,7 @@ typedef struct config_var_description_t { /** Type of a callback to validate whether a given configuration is * well-formed and consistent. See options_trial_assign() for documentation * of arguments. */ -typedef int (*validate_fn_t)(void*,void*,int,char**); +typedef int (*validate_fn_t)(void*,void*,void*,int,char**); /** Information on the keys, value types, key-to-struct-member mappings, * variable descriptions, validation functions, and abbreviations for a @@ -103,6 +103,8 @@ void *config_new(const config_format_t *fmt); void config_line_append(config_line_t **lst, const char *key, const char *val); config_line_t *config_lines_dup(const config_line_t *inp); +const config_line_t *config_line_find(const config_line_t *lines, + const char *key); void config_free(const config_format_t *fmt, void *options); int config_lines_eq(config_line_t *a, config_line_t *b); int config_count_key(const config_line_t *a, const char *key); diff --git a/src/or/connection.c b/src/or/connection.c index 6a3cc7bec4..1f6e11fac1 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -10,6 +10,7 @@ * on connections. **/ +#define CONNECTION_PRIVATE #include "or.h" #include "buffers.h" /* @@ -17,6 +18,7 @@ * part of a subclass (channel_tls_t). */ #define TOR_CHANNEL_INTERNAL_ +#define CONNECTION_PRIVATE #include "channel.h" #include "channeltls.h" #include "circuitbuild.h" @@ -33,6 +35,7 @@ #include "dns.h" #include "dnsserv.h" #include "entrynodes.h" +#include "ext_orport.h" #include "geoip.h" #include "main.h" #include "policies.h" @@ -98,6 +101,7 @@ static smartlist_t *outgoing_addrs = NULL; #define CASE_ANY_LISTENER_TYPE \ case CONN_TYPE_OR_LISTENER: \ + case CONN_TYPE_EXT_OR_LISTENER: \ case CONN_TYPE_AP_LISTENER: \ case CONN_TYPE_DIR_LISTENER: \ case CONN_TYPE_CONTROL_LISTENER: \ @@ -129,6 +133,8 @@ conn_type_to_string(int type) case CONN_TYPE_CPUWORKER: return "CPU worker"; case CONN_TYPE_CONTROL_LISTENER: return "Control listener"; case CONN_TYPE_CONTROL: return "Control"; + case CONN_TYPE_EXT_OR: return "Extended OR"; + case CONN_TYPE_EXT_OR_LISTENER: return "Extended OR listener"; default: log_warn(LD_BUG, "unknown connection type %d", type); tor_snprintf(buf, sizeof(buf), "unknown [%d]", type); @@ -165,6 +171,18 @@ conn_state_to_string(int type, int state) case OR_CONN_STATE_OPEN: return "open"; } break; + case CONN_TYPE_EXT_OR: + switch (state) { + case EXT_OR_CONN_STATE_AUTH_WAIT_AUTH_TYPE: + return "waiting for authentication type"; + case EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE: + return "waiting for client nonce"; + case EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH: + return "waiting for client hash"; + case EXT_OR_CONN_STATE_OPEN: return "open"; + case EXT_OR_CONN_STATE_FLUSHING: return "flushing final OKAY"; + } + break; case CONN_TYPE_EXIT: switch (state) { case EXIT_CONN_STATE_RESOLVING: return "waiting for dest info"; @@ -229,6 +247,7 @@ connection_type_uses_bufferevent(connection_t *conn) case CONN_TYPE_DIR: case CONN_TYPE_CONTROL: case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: case CONN_TYPE_CPUWORKER: return 1; default: @@ -259,14 +278,18 @@ dir_connection_new(int socket_family) * Set active_circuit_pqueue_last_recalibrated to current cell_ewma tick. */ or_connection_t * -or_connection_new(int socket_family) +or_connection_new(int type, int socket_family) { or_connection_t *or_conn = tor_malloc_zero(sizeof(or_connection_t)); time_t now = time(NULL); - connection_init(now, TO_CONN(or_conn), CONN_TYPE_OR, socket_family); + tor_assert(type == CONN_TYPE_OR || type == CONN_TYPE_EXT_OR); + connection_init(now, TO_CONN(or_conn), type, socket_family); or_conn->timestamp_last_added_nonpadding = time(NULL); + if (type == CONN_TYPE_EXT_OR) + connection_or_set_ext_or_identifier(or_conn); + return or_conn; } @@ -312,7 +335,6 @@ control_connection_new(int socket_family) tor_malloc_zero(sizeof(control_connection_t)); connection_init(time(NULL), TO_CONN(control_conn), CONN_TYPE_CONTROL, socket_family); - log_notice(LD_CONTROL, "New control connection opened."); return control_conn; } @@ -335,7 +357,8 @@ connection_new(int type, int socket_family) { switch (type) { case CONN_TYPE_OR: - return TO_CONN(or_connection_new(socket_family)); + case CONN_TYPE_EXT_OR: + return TO_CONN(or_connection_new(type, socket_family)); case CONN_TYPE_EXIT: return TO_CONN(edge_connection_new(type, socket_family)); @@ -377,6 +400,7 @@ connection_init(time_t now, connection_t *conn, int type, int socket_family) switch (type) { case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: conn->magic = OR_CONNECTION_MAGIC; break; case CONN_TYPE_EXIT: @@ -435,7 +459,7 @@ connection_link_connections(connection_t *conn_a, connection_t *conn_b) * necessary, close its socket if necessary, and mark the directory as dirty * if <b>conn</b> is an OR or OP connection. */ -static void +STATIC void connection_free_(connection_t *conn) { void *mem; @@ -445,6 +469,7 @@ connection_free_(connection_t *conn) switch (conn->type) { case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: tor_assert(conn->magic == OR_CONNECTION_MAGIC); mem = TO_OR_CONN(conn); memlen = sizeof(or_connection_t); @@ -575,6 +600,13 @@ connection_free_(connection_t *conn) log_warn(LD_BUG, "called on OR conn with non-zeroed identity_digest"); connection_or_remove_from_identity_map(TO_OR_CONN(conn)); } + if (conn->type == CONN_TYPE_OR || conn->type == CONN_TYPE_EXT_OR) { + connection_or_remove_from_ext_or_id_map(TO_OR_CONN(conn)); + tor_free(TO_OR_CONN(conn)->ext_or_conn_id); + tor_free(TO_OR_CONN(conn)->ext_or_auth_correct_client_hash); + tor_free(TO_OR_CONN(conn)->ext_or_transport); + } + #ifdef USE_BUFFEREVENTS if (conn->type == CONN_TYPE_OR && TO_OR_CONN(conn)->bucket_cfg) { ev_token_bucket_cfg_free(TO_OR_CONN(conn)->bucket_cfg); @@ -638,6 +670,7 @@ connection_about_to_close_connection(connection_t *conn) connection_dir_about_to_close(TO_DIR_CONN(conn)); break; case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: connection_or_about_to_close(TO_OR_CONN(conn)); break; case CONN_TYPE_AP: @@ -930,6 +963,27 @@ make_socket_reuseable(tor_socket_t sock) #endif } +/** Max backlog to pass to listen. We start at */ +static int listen_limit = INT_MAX; + +/* Listen on <b>fd</b> with appropriate backlog. Return as for listen. */ +static int +tor_listen(tor_socket_t fd) +{ + int r; + + if ((r = listen(fd, listen_limit)) < 0) { + if (listen_limit == SOMAXCONN) + return r; + if ((r = listen(fd, SOMAXCONN)) == 0) { + listen_limit = SOMAXCONN; + log_warn(LD_NET, "Setting listen backlog to INT_MAX connections " + "didn't work, but SOMAXCONN did. Lowering backlog limit."); + } + } + return r; +} + /** Bind a new non-blocking socket listening to the socket described * by <b>listensockaddr</b>. * @@ -970,7 +1024,7 @@ connection_listener_new(const struct sockaddr *listensockaddr, log_notice(LD_NET, "Opening %s on %s", conn_type_to_string(type), fmt_addrport(&addr, usePort)); - s = tor_open_socket(tor_addr_family(&addr), + s = tor_open_socket_nonblocking(tor_addr_family(&addr), is_tcp ? SOCK_STREAM : SOCK_DGRAM, is_tcp ? IPPROTO_TCP: IPPROTO_UDP); if (!SOCKET_OK(s)) { @@ -1012,7 +1066,7 @@ connection_listener_new(const struct sockaddr *listensockaddr, } if (is_tcp) { - if (listen(s,SOMAXCONN) < 0) { + if (tor_listen(s) < 0) { log_warn(LD_NET, "Could not listen on %s:%u: %s", address, usePort, tor_socket_strerror(tor_socket_errno(s))); goto err; @@ -1054,7 +1108,7 @@ connection_listener_new(const struct sockaddr *listensockaddr, strerror(errno)); goto err; } - s = tor_open_socket(AF_UNIX, SOCK_STREAM, 0); + s = tor_open_socket_nonblocking(AF_UNIX, SOCK_STREAM, 0); if (! SOCKET_OK(s)) { log_warn(LD_NET,"Socket creation failed: %s.", strerror(errno)); goto err; @@ -1102,9 +1156,6 @@ connection_listener_new(const struct sockaddr *listensockaddr, tor_assert(0); } - if (set_socket_nonblocking(s) == -1) - goto err; - lis_conn = listener_connection_new(type, listensockaddr->sa_family); conn = TO_CONN(lis_conn); conn->socket_family = listensockaddr->sa_family; @@ -1252,7 +1303,7 @@ connection_handle_listener_read(connection_t *conn, int new_type) tor_assert((size_t)remotelen >= sizeof(struct sockaddr_in)); memset(&addrbuf, 0, sizeof(addrbuf)); - news = tor_accept_socket(conn->s,remote,&remotelen); + news = tor_accept_socket_nonblocking(conn->s,remote,&remotelen); if (!SOCKET_OK(news)) { /* accept() error */ int e = tor_socket_errno(conn->s); if (ERRNO_IS_ACCEPT_EAGAIN(e)) { @@ -1272,10 +1323,6 @@ connection_handle_listener_read(connection_t *conn, int new_type) (int)news,(int)conn->s); make_socket_reuseable(news); - if (set_socket_nonblocking(news) == -1) { - tor_close_socket(news); - return 0; - } if (options->ConstrainedSockets) set_constrained_socket_buffers(news, (int)options->ConstrainedSockSize); @@ -1330,11 +1377,17 @@ connection_handle_listener_read(connection_t *conn, int new_type) TO_ENTRY_CONN(newconn)->socks_request->socks_prefer_no_auth = TO_LISTENER_CONN(conn)->socks_prefer_no_auth; } + if (new_type == CONN_TYPE_CONTROL) { + log_notice(LD_CONTROL, "New control connection opened from %s.", + fmt_and_decorate_addr(&addr)); + } } else if (conn->socket_family == AF_UNIX) { /* For now only control ports can be Unix domain sockets * and listeners at the same time */ tor_assert(conn->type == CONN_TYPE_CONTROL_LISTENER); + tor_assert(new_type == CONN_TYPE_CONTROL); + log_notice(LD_CONTROL, "New control connection opened."); newconn = connection_new(new_type, conn->socket_family); newconn->s = news; @@ -1374,6 +1427,9 @@ connection_init_accepted_conn(connection_t *conn, connection_start_reading(conn); switch (conn->type) { + case CONN_TYPE_EXT_OR: + /* Initiate Extended ORPort authentication. */ + return connection_ext_or_start_auth(TO_OR_CONN(conn)); case CONN_TYPE_OR: control_event_or_conn_status(TO_OR_CONN(conn), OR_CONN_EVENT_NEW, 0); rv = connection_tls_start_handshake(TO_OR_CONN(conn), 1); @@ -1467,7 +1523,7 @@ connection_connect(connection_t *conn, const char *address, return -1; } - s = tor_open_socket(protocol_family,SOCK_STREAM,IPPROTO_TCP); + s = tor_open_socket_nonblocking(protocol_family,SOCK_STREAM,IPPROTO_TCP); if (! SOCKET_OK(s)) { *socket_error = tor_socket_errno(-1); log_warn(LD_NET,"Error creating network socket: %s", @@ -1509,12 +1565,6 @@ connection_connect(connection_t *conn, const char *address, } } - if (set_socket_nonblocking(s) == -1) { - *socket_error = tor_socket_errno(s); - tor_close_socket(s); - return -1; - } - if (options->ConstrainedSockets) set_constrained_socket_buffers(s, (int)options->ConstrainedSockSize); @@ -2540,6 +2590,35 @@ record_num_bytes_transferred(connection_t *conn, #endif #ifndef USE_BUFFEREVENTS +/** Last time at which the global or relay buckets were emptied in msec + * since midnight. */ +static uint32_t global_relayed_read_emptied = 0, + global_relayed_write_emptied = 0, + global_read_emptied = 0, + global_write_emptied = 0; + +/** Helper: convert given <b>tvnow</b> time value to milliseconds since + * midnight. */ +static uint32_t +msec_since_midnight(const struct timeval *tvnow) +{ + return (uint32_t)(((tvnow->tv_sec % 86400L) * 1000L) + + ((uint32_t)tvnow->tv_usec / (uint32_t)1000L)); +} + +/** Check if a bucket which had <b>tokens_before</b> tokens and which got + * <b>tokens_removed</b> tokens removed at timestamp <b>tvnow</b> has run + * out of tokens, and if so, note the milliseconds since midnight in + * <b>timestamp_var</b> for the next TB_EMPTY event. */ +void +connection_buckets_note_empty_ts(uint32_t *timestamp_var, + int tokens_before, size_t tokens_removed, + const struct timeval *tvnow) +{ + if (tokens_before > 0 && (uint32_t)tokens_before <= tokens_removed) + *timestamp_var = msec_since_midnight(tvnow); +} + /** We just read <b>num_read</b> and wrote <b>num_written</b> bytes * onto <b>conn</b>. Decrement buckets appropriately. */ static void @@ -2562,6 +2641,30 @@ connection_buckets_decrement(connection_t *conn, time_t now, if (!connection_is_rate_limited(conn)) return; /* local IPs are free */ + /* If one or more of our token buckets ran dry just now, note the + * timestamp for TB_EMPTY events. */ + if (get_options()->TestingEnableTbEmptyEvent) { + struct timeval tvnow; + tor_gettimeofday_cached(&tvnow); + if (connection_counts_as_relayed_traffic(conn, now)) { + connection_buckets_note_empty_ts(&global_relayed_read_emptied, + global_relayed_read_bucket, num_read, &tvnow); + connection_buckets_note_empty_ts(&global_relayed_write_emptied, + global_relayed_write_bucket, num_written, &tvnow); + } + connection_buckets_note_empty_ts(&global_read_emptied, + global_read_bucket, num_read, &tvnow); + connection_buckets_note_empty_ts(&global_write_emptied, + global_write_bucket, num_written, &tvnow); + if (connection_speaks_cells(conn) && conn->state == OR_CONN_STATE_OPEN) { + or_connection_t *or_conn = TO_OR_CONN(conn); + connection_buckets_note_empty_ts(&or_conn->read_emptied_time, + or_conn->read_bucket, num_read, &tvnow); + connection_buckets_note_empty_ts(&or_conn->write_emptied_time, + or_conn->write_bucket, num_written, &tvnow); + } + } + if (connection_counts_as_relayed_traffic(conn, now)) { global_relayed_read_bucket -= (int)num_read; global_relayed_write_bucket -= (int)num_written; @@ -2581,6 +2684,9 @@ connection_consider_empty_read_buckets(connection_t *conn) { const char *reason; + if (!connection_is_rate_limited(conn)) + return; /* Always okay. */ + if (global_read_bucket <= 0) { reason = "global read bucket exhausted. Pausing."; } else if (connection_counts_as_relayed_traffic(conn, approx_time()) && @@ -2605,6 +2711,9 @@ connection_consider_empty_write_buckets(connection_t *conn) { const char *reason; + if (!connection_is_rate_limited(conn)) + return; /* Always okay. */ + if (global_write_bucket <= 0) { reason = "global write bucket exhausted. Pausing."; } else if (connection_counts_as_relayed_traffic(conn, approx_time()) && @@ -2668,6 +2777,28 @@ connection_bucket_refill_helper(int *bucket, int rate, int burst, } } +/** Helper: return the time in milliseconds since <b>last_empty_time</b> + * when a bucket ran empty that previously had <b>tokens_before</b> tokens + * now has <b>tokens_after</b> tokens after refilling at timestamp + * <b>tvnow</b>, capped at <b>milliseconds_elapsed</b> milliseconds since + * last refilling that bucket. Return 0 if the bucket has not been empty + * since the last refill or has not been refilled. */ +uint32_t +bucket_millis_empty(int tokens_before, uint32_t last_empty_time, + int tokens_after, int milliseconds_elapsed, + const struct timeval *tvnow) +{ + uint32_t result = 0, refilled; + if (tokens_before <= 0 && tokens_after > tokens_before) { + refilled = msec_since_midnight(tvnow); + result = (uint32_t)((refilled + 86400L * 1000L - last_empty_time) % + (86400L * 1000L)); + if (result > (uint32_t)milliseconds_elapsed) + result = (uint32_t)milliseconds_elapsed; + } + return result; +} + /** Time has passed; increment buckets appropriately. */ void connection_bucket_refill(int milliseconds_elapsed, time_t now) @@ -2676,6 +2807,12 @@ connection_bucket_refill(int milliseconds_elapsed, time_t now) smartlist_t *conns = get_connection_array(); int bandwidthrate, bandwidthburst, relayrate, relayburst; + int prev_global_read = global_read_bucket; + int prev_global_write = global_write_bucket; + int prev_relay_read = global_relayed_read_bucket; + int prev_relay_write = global_relayed_write_bucket; + struct timeval tvnow; /*< Only used if TB_EMPTY events are enabled. */ + bandwidthrate = (int)options->BandwidthRate; bandwidthburst = (int)options->BandwidthBurst; @@ -2710,12 +2847,42 @@ connection_bucket_refill(int milliseconds_elapsed, time_t now) milliseconds_elapsed, "global_relayed_write_bucket"); + /* If buckets were empty before and have now been refilled, tell any + * interested controllers. */ + if (get_options()->TestingEnableTbEmptyEvent) { + uint32_t global_read_empty_time, global_write_empty_time, + relay_read_empty_time, relay_write_empty_time; + tor_gettimeofday_cached(&tvnow); + global_read_empty_time = bucket_millis_empty(prev_global_read, + global_read_emptied, global_read_bucket, + milliseconds_elapsed, &tvnow); + global_write_empty_time = bucket_millis_empty(prev_global_write, + global_write_emptied, global_write_bucket, + milliseconds_elapsed, &tvnow); + control_event_tb_empty("GLOBAL", global_read_empty_time, + global_write_empty_time, milliseconds_elapsed); + relay_read_empty_time = bucket_millis_empty(prev_relay_read, + global_relayed_read_emptied, + global_relayed_read_bucket, + milliseconds_elapsed, &tvnow); + relay_write_empty_time = bucket_millis_empty(prev_relay_write, + global_relayed_write_emptied, + global_relayed_write_bucket, + milliseconds_elapsed, &tvnow); + control_event_tb_empty("RELAY", relay_read_empty_time, + relay_write_empty_time, milliseconds_elapsed); + } + /* refill the per-connection buckets */ SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) { if (connection_speaks_cells(conn)) { or_connection_t *or_conn = TO_OR_CONN(conn); int orbandwidthrate = or_conn->bandwidthrate; int orbandwidthburst = or_conn->bandwidthburst; + + int prev_conn_read = or_conn->read_bucket; + int prev_conn_write = or_conn->write_bucket; + if (connection_bucket_should_increase(or_conn->read_bucket, or_conn)) { connection_bucket_refill_helper(&or_conn->read_bucket, orbandwidthrate, @@ -2730,6 +2897,27 @@ connection_bucket_refill(int milliseconds_elapsed, time_t now) milliseconds_elapsed, "or_conn->write_bucket"); } + + /* If buckets were empty before and have now been refilled, tell any + * interested controllers. */ + if (get_options()->TestingEnableTbEmptyEvent) { + char *bucket; + uint32_t conn_read_empty_time, conn_write_empty_time; + tor_asprintf(&bucket, "ORCONN ID="U64_FORMAT, + U64_PRINTF_ARG(or_conn->base_.global_identifier)); + conn_read_empty_time = bucket_millis_empty(prev_conn_read, + or_conn->read_emptied_time, + or_conn->read_bucket, + milliseconds_elapsed, &tvnow); + conn_write_empty_time = bucket_millis_empty(prev_conn_write, + or_conn->write_emptied_time, + or_conn->write_bucket, + milliseconds_elapsed, &tvnow); + control_event_tb_empty(bucket, conn_read_empty_time, + conn_write_empty_time, + milliseconds_elapsed); + tor_free(bucket); + } } if (conn->read_blocked_on_bw == 1 /* marked to turn reading back on now */ @@ -2886,6 +3074,8 @@ connection_handle_read_impl(connection_t *conn) switch (conn->type) { case CONN_TYPE_OR_LISTENER: return connection_handle_listener_read(conn, CONN_TYPE_OR); + case CONN_TYPE_EXT_OR_LISTENER: + return connection_handle_listener_read(conn, CONN_TYPE_EXT_OR); case CONN_TYPE_AP_LISTENER: case CONN_TYPE_AP_TRANS_LISTENER: case CONN_TYPE_AP_NATD_LISTENER: @@ -3138,14 +3328,37 @@ connection_read_to_buf(connection_t *conn, ssize_t *max_to_read, /* change *max_to_read */ *max_to_read = at_most - n_read; - /* Update edge_conn->n_read */ + /* Update edge_conn->n_read and ocirc->n_read_circ_bw */ if (conn->type == CONN_TYPE_AP) { edge_connection_t *edge_conn = TO_EDGE_CONN(conn); + circuit_t *circ = circuit_get_by_edge_conn(edge_conn); + origin_circuit_t *ocirc; + /* Check for overflow: */ if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_read > n_read)) edge_conn->n_read += (int)n_read; else edge_conn->n_read = UINT32_MAX; + + if (circ && CIRCUIT_IS_ORIGIN(circ)) { + ocirc = TO_ORIGIN_CIRCUIT(circ); + if (PREDICT_LIKELY(UINT32_MAX - ocirc->n_read_circ_bw > n_read)) + ocirc->n_read_circ_bw += (int)n_read; + else + ocirc->n_read_circ_bw = UINT32_MAX; + } + } + + /* If CONN_BW events are enabled, update conn->n_read_conn_bw for + * OR/DIR/EXIT connections, checking for overflow. */ + if (get_options()->TestingEnableConnBwEvent && + (conn->type == CONN_TYPE_OR || + conn->type == CONN_TYPE_DIR || + conn->type == CONN_TYPE_EXIT)) { + if (PREDICT_LIKELY(UINT32_MAX - conn->n_read_conn_bw > n_read)) + conn->n_read_conn_bw += (int)n_read; + else + conn->n_read_conn_bw = UINT32_MAX; } } @@ -3585,12 +3798,34 @@ connection_handle_write_impl(connection_t *conn, int force) if (n_written && conn->type == CONN_TYPE_AP) { edge_connection_t *edge_conn = TO_EDGE_CONN(conn); + circuit_t *circ = circuit_get_by_edge_conn(edge_conn); + origin_circuit_t *ocirc; /* Check for overflow: */ if (PREDICT_LIKELY(UINT32_MAX - edge_conn->n_written > n_written)) edge_conn->n_written += (int)n_written; else edge_conn->n_written = UINT32_MAX; + + if (circ && CIRCUIT_IS_ORIGIN(circ)) { + ocirc = TO_ORIGIN_CIRCUIT(circ); + if (PREDICT_LIKELY(UINT32_MAX - ocirc->n_written_circ_bw > n_written)) + ocirc->n_written_circ_bw += (int)n_written; + else + ocirc->n_written_circ_bw = UINT32_MAX; + } + } + + /* If CONN_BW events are enabled, update conn->n_written_conn_bw for + * OR/DIR/EXIT connections, checking for overflow. */ + if (n_written && get_options()->TestingEnableConnBwEvent && + (conn->type == CONN_TYPE_OR || + conn->type == CONN_TYPE_DIR || + conn->type == CONN_TYPE_EXIT)) { + if (PREDICT_LIKELY(UINT32_MAX - conn->n_written_conn_bw > n_written)) + conn->n_written_conn_bw += (int)n_written; + else + conn->n_written_conn_bw = UINT32_MAX; } connection_buckets_decrement(conn, approx_time(), n_read, n_written); @@ -3676,9 +3911,9 @@ connection_flush(connection_t *conn) * it all, so we don't end up with many megabytes of controller info queued at * once. */ -void -connection_write_to_buf_impl_(const char *string, size_t len, - connection_t *conn, int zlib) +MOCK_IMPL(void, +connection_write_to_buf_impl_,(const char *string, size_t len, + connection_t *conn, int zlib)) { /* XXXX This function really needs to return -1 on failure. */ int r; @@ -3918,6 +4153,7 @@ int connection_is_listener(connection_t *conn) { if (conn->type == CONN_TYPE_OR_LISTENER || + conn->type == CONN_TYPE_EXT_OR_LISTENER || conn->type == CONN_TYPE_AP_LISTENER || conn->type == CONN_TYPE_AP_TRANS_LISTENER || conn->type == CONN_TYPE_AP_DNS_LISTENER || @@ -3940,6 +4176,7 @@ connection_state_is_open(connection_t *conn) return 0; if ((conn->type == CONN_TYPE_OR && conn->state == OR_CONN_STATE_OPEN) || + (conn->type == CONN_TYPE_EXT_OR) || (conn->type == CONN_TYPE_AP && conn->state == AP_CONN_STATE_OPEN) || (conn->type == CONN_TYPE_EXIT && conn->state == EXIT_CONN_STATE_OPEN) || (conn->type == CONN_TYPE_CONTROL && @@ -4109,6 +4346,8 @@ connection_process_inbuf(connection_t *conn, int package_partial) switch (conn->type) { case CONN_TYPE_OR: return connection_or_process_inbuf(TO_OR_CONN(conn)); + case CONN_TYPE_EXT_OR: + return connection_ext_or_process_inbuf(TO_OR_CONN(conn)); case CONN_TYPE_EXIT: case CONN_TYPE_AP: return connection_edge_process_inbuf(TO_EDGE_CONN(conn), @@ -4169,6 +4408,8 @@ connection_finished_flushing(connection_t *conn) switch (conn->type) { case CONN_TYPE_OR: return connection_or_finished_flushing(TO_OR_CONN(conn)); + case CONN_TYPE_EXT_OR: + return connection_ext_or_finished_flushing(TO_OR_CONN(conn)); case CONN_TYPE_AP: case CONN_TYPE_EXIT: return connection_edge_finished_flushing(TO_EDGE_CONN(conn)); @@ -4224,6 +4465,7 @@ connection_reached_eof(connection_t *conn) { switch (conn->type) { case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: return connection_or_reached_eof(TO_OR_CONN(conn)); case CONN_TYPE_AP: case CONN_TYPE_EXIT: @@ -4310,6 +4552,7 @@ assert_connection_ok(connection_t *conn, time_t now) switch (conn->type) { case CONN_TYPE_OR: + case CONN_TYPE_EXT_OR: tor_assert(conn->magic == OR_CONNECTION_MAGIC); break; case CONN_TYPE_AP: @@ -4415,6 +4658,10 @@ assert_connection_ok(connection_t *conn, time_t now) tor_assert(conn->state >= OR_CONN_STATE_MIN_); tor_assert(conn->state <= OR_CONN_STATE_MAX_); break; + case CONN_TYPE_EXT_OR: + tor_assert(conn->state >= EXT_OR_CONN_STATE_MIN_); + tor_assert(conn->state <= EXT_OR_CONN_STATE_MAX_); + break; case CONN_TYPE_EXIT: tor_assert(conn->state >= EXIT_CONN_STATE_MIN_); tor_assert(conn->state <= EXIT_CONN_STATE_MAX_); @@ -4547,6 +4794,7 @@ connection_free_all(void) /* Unlink everything from the identity map. */ connection_or_clear_identity_map(); + connection_or_clear_ext_or_id_map(); /* Clear out our list of broken connections */ clear_broken_connection_map(0); diff --git a/src/or/connection.h b/src/or/connection.h index 3e656ec06e..4073d9fc9c 100644 --- a/src/or/connection.h +++ b/src/or/connection.h @@ -19,7 +19,7 @@ const char *conn_type_to_string(int type); const char *conn_state_to_string(int type, int state); dir_connection_t *dir_connection_new(int socket_family); -or_connection_t *or_connection_new(int socket_family); +or_connection_t *or_connection_new(int type, int socket_family); edge_connection_t *edge_connection_new(int type, int socket_family); entry_connection_t *entry_connection_new(int type, int socket_family); control_connection_t *control_connection_new(int socket_family); @@ -130,8 +130,8 @@ int connection_outbuf_too_full(connection_t *conn); int connection_handle_write(connection_t *conn, int force); int connection_flush(connection_t *conn); -void connection_write_to_buf_impl_(const char *string, size_t len, - connection_t *conn, int zlib); +MOCK_DECL(void, connection_write_to_buf_impl_, + (const char *string, size_t len, connection_t *conn, int zlib)); /* DOCDOC connection_write_to_buf */ static void connection_write_to_buf(const char *string, size_t len, connection_t *conn); @@ -214,5 +214,18 @@ void connection_enable_rate_limiting(connection_t *conn); #define connection_type_uses_bufferevent(c) (0) #endif +#ifdef CONNECTION_PRIVATE +STATIC void connection_free_(connection_t *conn); + +/* Used only by connection.c and test*.c */ +uint32_t bucket_millis_empty(int tokens_before, uint32_t last_empty_time, + int tokens_after, int milliseconds_elapsed, + const struct timeval *tvnow); +void connection_buckets_note_empty_ts(uint32_t *timestamp_var, + int tokens_before, + size_t tokens_removed, + const struct timeval *tvnow); +#endif + #endif diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 33585a0944..07104c7a24 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -14,6 +14,7 @@ #include "addressmap.h" #include "buffers.h" #include "channel.h" +#include "circpathbias.h" #include "circuitlist.h" #include "circuituse.h" #include "config.h" diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 3616363505..089de93f78 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -37,7 +37,7 @@ #include "rephist.h" #include "router.h" #include "routerlist.h" - +#include "ext_orport.h" #ifdef USE_BUFFEREVENTS #include <event2/bufferevent_ssl.h> #endif @@ -75,6 +75,10 @@ static void connection_or_handle_event_cb(struct bufferevent *bufev, * they form a linked list, with next_with_same_id as the next pointer. */ static digestmap_t *orconn_identity_map = NULL; +/** Global map between Extended ORPort identifiers and OR + * connections. */ +static digestmap_t *orconn_ext_or_id_map = NULL; + /** If conn is listed in orconn_identity_map, remove it, and clear * conn->identity_digest. Otherwise do nothing. */ void @@ -174,6 +178,71 @@ connection_or_set_identity_digest(or_connection_t *conn, const char *digest) #endif } +/** Remove the Extended ORPort identifier of <b>conn</b> from the + * global identifier list. Also, clear the identifier from the + * connection itself. */ +void +connection_or_remove_from_ext_or_id_map(or_connection_t *conn) +{ + or_connection_t *tmp; + if (!orconn_ext_or_id_map) + return; + if (!conn->ext_or_conn_id) + return; + + tmp = digestmap_remove(orconn_ext_or_id_map, conn->ext_or_conn_id); + if (!tor_digest_is_zero(conn->ext_or_conn_id)) + tor_assert(tmp == conn); + + memset(conn->ext_or_conn_id, 0, EXT_OR_CONN_ID_LEN); +} + +/** Return the connection whose ext_or_id is <b>id</b>. Return NULL if no such + * connection is found. */ +or_connection_t * +connection_or_get_by_ext_or_id(const char *id) +{ + if (!orconn_ext_or_id_map) + return NULL; + return digestmap_get(orconn_ext_or_id_map, id); +} + +/** Deallocate the global Extended ORPort identifier list */ +void +connection_or_clear_ext_or_id_map(void) +{ + digestmap_free(orconn_ext_or_id_map, NULL); + orconn_ext_or_id_map = NULL; +} + +/** Creates an Extended ORPort identifier for <b>conn<b/> and deposits + * it into the global list of identifiers. */ +void +connection_or_set_ext_or_identifier(or_connection_t *conn) +{ + char random_id[EXT_OR_CONN_ID_LEN]; + or_connection_t *tmp; + + if (!orconn_ext_or_id_map) + orconn_ext_or_id_map = digestmap_new(); + + /* Remove any previous identifiers: */ + if (conn->ext_or_conn_id && !tor_digest_is_zero(conn->ext_or_conn_id)) + connection_or_remove_from_ext_or_id_map(conn); + + do { + crypto_rand(random_id, sizeof(random_id)); + } while (digestmap_get(orconn_ext_or_id_map, random_id)); + + if (!conn->ext_or_conn_id) + conn->ext_or_conn_id = tor_malloc_zero(EXT_OR_CONN_ID_LEN); + + memcpy(conn->ext_or_conn_id, random_id, EXT_OR_CONN_ID_LEN); + + tmp = digestmap_set(orconn_ext_or_id_map, random_id, conn); + tor_assert(!tmp); +} + /**************************************************************/ /** Map from a string describing what a non-open OR connection was doing when @@ -228,7 +297,7 @@ connection_or_get_state_description(or_connection_t *orconn, const char *conn_state; char tls_state[256]; - tor_assert(conn->type == CONN_TYPE_OR); + tor_assert(conn->type == CONN_TYPE_OR || conn->type == CONN_TYPE_EXT_OR); conn_state = conn_state_to_string(conn->type, conn->state); tor_tls_get_state_description(orconn->tls, tls_state, sizeof(tls_state)); @@ -1077,7 +1146,7 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port, return NULL; } - conn = or_connection_new(tor_addr_family(&addr)); + conn = or_connection_new(CONN_TYPE_OR, tor_addr_family(&addr)); /* * Set up conn so it's got all the data we need to remember for channels @@ -1160,6 +1229,16 @@ connection_or_connect(const tor_addr_t *_addr, uint16_t port, /** Mark orconn for close and transition the associated channel, if any, to * the closing state. + * + * It's safe to call this and connection_or_close_for_error() any time, and + * channel layer will treat it as a connection closing for reasons outside + * its control, like the remote end closing it. It can also be a local + * reason that's specific to connection_t/or_connection_t rather than + * the channel mechanism, such as expiration of old connections in + * run_connection_housekeeping(). If you want to close a channel_t + * from somewhere that logically works in terms of generic channels + * rather than connections, use channel_mark_for_close(); see also + * the comment on that function in channel.c. */ void @@ -1212,8 +1291,8 @@ connection_or_close_for_error(or_connection_t *orconn, int flush) * * Return -1 if <b>conn</b> is broken, else return 0. */ -int -connection_tls_start_handshake(or_connection_t *conn, int receiving) +MOCK_IMPL(int, +connection_tls_start_handshake,(or_connection_t *conn, int receiving)) { channel_listener_t *chan_listener; channel_t *chan; @@ -1470,7 +1549,8 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event, int connection_or_nonopen_was_started_here(or_connection_t *conn) { - tor_assert(conn->base_.type == CONN_TYPE_OR); + tor_assert(conn->base_.type == CONN_TYPE_OR || + conn->base_.type == CONN_TYPE_EXT_OR); if (!conn->tls) return 1; /* it's still in proxy states or something */ if (conn->handshake_state) @@ -1679,7 +1759,7 @@ connection_tls_finish_handshake(or_connection_t *conn) digest_rcvd) < 0) return -1; - circuit_build_times_network_is_live(&circ_times); + circuit_build_times_network_is_live(get_circuit_build_times_mutable()); if (tor_tls_used_v1_handshake(conn->tls)) { conn->link_proto = 1; @@ -1713,7 +1793,7 @@ connection_or_launch_v3_or_handshake(or_connection_t *conn) tor_assert(connection_or_nonopen_was_started_here(conn)); tor_assert(tor_tls_received_v3_certificate(conn->tls)); - circuit_build_times_network_is_live(&circ_times); + circuit_build_times_network_is_live(get_circuit_build_times_mutable()); connection_or_change_state(conn, OR_CONN_STATE_OR_HANDSHAKING_V3); if (connection_init_or_handshake_state(conn, 1) < 0) @@ -1946,7 +2026,7 @@ connection_or_process_cells_from_inbuf(or_connection_t *conn) if (conn->chan) channel_timestamp_active(TLS_CHAN_TO_BASE(conn->chan)); - circuit_build_times_network_is_live(&circ_times); + circuit_build_times_network_is_live(get_circuit_build_times_mutable()); channel_tls_handle_var_cell(var_cell, conn); var_cell_free(var_cell); } else { @@ -1962,7 +2042,7 @@ connection_or_process_cells_from_inbuf(or_connection_t *conn) if (conn->chan) channel_timestamp_active(TLS_CHAN_TO_BASE(conn->chan)); - circuit_build_times_network_is_live(&circ_times); + circuit_build_times_network_is_live(get_circuit_build_times_mutable()); connection_fetch_from_buf(buf, cell_network_size, TO_CONN(conn)); /* retrieve cell info from buf (create the host-order struct from the @@ -2042,11 +2122,18 @@ connection_or_send_netinfo(or_connection_t *conn) tor_assert(conn->handshake_state); + if (conn->handshake_state->sent_netinfo) { + log_warn(LD_BUG, "Attempted to send an extra netinfo cell on a connection " + "where we already sent one."); + return 0; + } + memset(&cell, 0, sizeof(cell_t)); cell.command = CELL_NETINFO; - /* Timestamp. */ - set_uint32(cell.payload, htonl((uint32_t)now)); + /* Timestamp, if we're a relay. */ + if (public_server_mode(get_options()) || ! conn->is_outgoing) + set_uint32(cell.payload, htonl((uint32_t)now)); /* Their address. */ out = cell.payload + 4; @@ -2083,6 +2170,7 @@ connection_or_send_netinfo(or_connection_t *conn) } conn->handshake_state->digest_sent_data = 0; + conn->handshake_state->sent_netinfo = 1; connection_or_write_cell_to_buf(&cell, conn); return 0; @@ -2211,7 +2299,7 @@ connection_or_compute_authenticate_cell_body(or_connection_t *conn, const tor_cert_t *id_cert=NULL, *link_cert=NULL; const digests_t *my_digests, *their_digests; const uint8_t *my_id, *their_id, *client_id, *server_id; - if (tor_tls_get_my_certs(0, &link_cert, &id_cert)) + if (tor_tls_get_my_certs(server, &link_cert, &id_cert)) return -1; my_digests = tor_cert_get_id_digests(id_cert); their_digests = tor_cert_get_id_digests(conn->handshake_state->id_cert); @@ -2279,19 +2367,11 @@ connection_or_compute_authenticate_cell_body(or_connection_t *conn, if (server) return V3_AUTH_FIXED_PART_LEN; // ptr-out - /* Time: 8 octets. */ - { - uint64_t now = time(NULL); - if ((time_t)now < 0) - return -1; - set_uint32(ptr, htonl((uint32_t)(now>>32))); - set_uint32(ptr+4, htonl((uint32_t)now)); - ptr += 8; - } - - /* Nonce: 16 octets. */ - crypto_rand((char*)ptr, 16); - ptr += 16; + /* 8 octets were reserved for the current time, but we're trying to get out + * of the habit of sending time around willynilly. Fortunately, nothing + * checks it. That's followed by 16 bytes of nonce. */ + crypto_rand((char*)ptr, 24); + ptr += 24; tor_assert(ptr - out == V3_AUTH_BODY_LEN); diff --git a/src/or/connection_or.h b/src/or/connection_or.h index 85e68f1a33..8d93028932 100644 --- a/src/or/connection_or.h +++ b/src/or/connection_or.h @@ -45,7 +45,8 @@ void connection_or_close_for_error(or_connection_t *orconn, int flush); void connection_or_report_broken_states(int severity, int domain); -int connection_tls_start_handshake(or_connection_t *conn, int receiving); +MOCK_DECL(int,connection_tls_start_handshake,(or_connection_t *conn, + int receiving)); int connection_tls_continue_handshake(or_connection_t *conn); int connection_init_or_handshake_state(or_connection_t *conn, diff --git a/src/or/control.c b/src/or/control.c index 3f8d47c554..49212de65f 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -19,6 +19,7 @@ #include "circuitlist.h" #include "circuitstats.h" #include "circuituse.h" +#include "command.h" #include "config.h" #include "confparse.h" #include "connection.h" @@ -52,46 +53,13 @@ * finished authentication and is accepting commands. */ #define STATE_IS_OPEN(s) ((s) == CONTROL_CONN_STATE_OPEN) -/* Recognized asynchronous event types. It's okay to expand this list - * because it is used both as a list of v0 event types, and as indices - * into the bitfield to determine which controllers want which events. - */ -#define EVENT_MIN_ 0x0001 -#define EVENT_CIRCUIT_STATUS 0x0001 -#define EVENT_STREAM_STATUS 0x0002 -#define EVENT_OR_CONN_STATUS 0x0003 -#define EVENT_BANDWIDTH_USED 0x0004 -#define EVENT_CIRCUIT_STATUS_MINOR 0x0005 -#define EVENT_NEW_DESC 0x0006 -#define EVENT_DEBUG_MSG 0x0007 -#define EVENT_INFO_MSG 0x0008 -#define EVENT_NOTICE_MSG 0x0009 -#define EVENT_WARN_MSG 0x000A -#define EVENT_ERR_MSG 0x000B -#define EVENT_ADDRMAP 0x000C -// #define EVENT_AUTHDIR_NEWDESCS 0x000D -#define EVENT_DESCCHANGED 0x000E -// #define EVENT_NS 0x000F -#define EVENT_STATUS_CLIENT 0x0010 -#define EVENT_STATUS_SERVER 0x0011 -#define EVENT_STATUS_GENERAL 0x0012 -#define EVENT_GUARD 0x0013 -#define EVENT_STREAM_BANDWIDTH_USED 0x0014 -#define EVENT_CLIENTS_SEEN 0x0015 -#define EVENT_NEWCONSENSUS 0x0016 -#define EVENT_BUILDTIMEOUT_SET 0x0017 -#define EVENT_SIGNAL 0x0018 -#define EVENT_CONF_CHANGED 0x0019 -#define EVENT_MAX_ 0x0019 -/* If EVENT_MAX_ ever hits 0x0020, we need to make the mask wider. */ - /** Bitfield: The bit 1<<e is set if <b>any</b> open control * connection is interested in events of type <b>e</b>. We use this * so that we can decide to skip generating event messages that nobody * has interest in without having to walk over the global connection * list to find out. **/ -typedef uint32_t event_mask_t; +typedef uint64_t event_mask_t; /** An event mask of all the events that any controller is interested in * receiving. */ @@ -103,7 +71,7 @@ static int disable_log_messages = 0; /** Macro: true if any control connection is interested in events of type * <b>e</b>. */ #define EVENT_IS_INTERESTING(e) \ - (global_event_mask & (1<<(e))) + (!! (global_event_mask & (((uint64_t)1)<<(e)))) /** If we're using cookie-type authentication, how long should our cookies be? */ @@ -115,7 +83,7 @@ static int authentication_cookie_is_set = 0; /** If authentication_cookie_is_set, a secret cookie that we've stored to disk * and which we're using to authenticate controllers. (If the controller can * read it off disk, it has permission to connect.) */ -static char authentication_cookie[AUTHENTICATION_COOKIE_LEN]; +static uint8_t *authentication_cookie = NULL; #define SAFECOOKIE_SERVER_TO_CONTROLLER_CONSTANT \ "Tor safe cookie authentication server-to-controller hash" @@ -130,15 +98,6 @@ static char authentication_cookie[AUTHENTICATION_COOKIE_LEN]; * of this so we can respond to getinfo status/bootstrap-phase queries. */ static char last_sent_bootstrap_message[BOOTSTRAP_MSG_LEN]; -/** Flag for event_format_t. Indicates that we should use the one standard - format. - */ -#define ALL_FORMATS 1 - -/** Bit field of flags to select how to format a controller event. Recognized - * flag is ALL_FORMATS. */ -typedef int event_format_t; - static void connection_printf_to_buf(control_connection_t *conn, const char *format, ...) CHECK_PRINTF(2,3); @@ -232,6 +191,20 @@ log_severity_to_event(int severity) } } +/** Helper: clear bandwidth counters of all origin circuits. */ +static void +clear_circ_bw_fields(void) +{ + circuit_t *circ; + origin_circuit_t *ocirc; + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { + if (!CIRCUIT_IS_ORIGIN(circ)) + continue; + ocirc = TO_ORIGIN_CIRCUIT(circ); + ocirc->n_written_circ_bw = ocirc->n_read_circ_bw = 0; + } +} + /** Set <b>global_event_mask*</b> to the bitwise OR of each live control * connection's event_mask field. */ void @@ -257,8 +230,8 @@ control_update_global_event_mask(void) * we want to hear...*/ control_adjust_event_log_severity(); - /* ...then, if we've started logging stream bw, clear the appropriate - * fields. */ + /* ...then, if we've started logging stream or circ bw, clear the + * appropriate fields. */ if (! (old_mask & EVENT_STREAM_BANDWIDTH_USED) && (new_mask & EVENT_STREAM_BANDWIDTH_USED)) { SMARTLIST_FOREACH(conns, connection_t *, conn, @@ -269,6 +242,10 @@ control_update_global_event_mask(void) } }); } + if (! (old_mask & EVENT_CIRC_BANDWIDTH_USED) && + (new_mask & EVENT_CIRC_BANDWIDTH_USED)) { + clear_circ_bw_fields(); + } } /** Adjust the log severities that result in control_event_logmsg being called @@ -592,9 +569,9 @@ send_control_done(control_connection_t *conn) * * The EXTENDED_FORMAT and NONEXTENDED_FORMAT flags behave similarly with * respect to the EXTENDED_EVENTS feature. */ -static void -send_control_event_string(uint16_t event, event_format_t which, - const char *msg) +MOCK_IMPL(STATIC void, +send_control_event_string,(uint16_t event, event_format_t which, + const char *msg)) { smartlist_t *conns = get_connection_array(); (void)which; @@ -958,6 +935,11 @@ static const struct control_event_t control_event_table[] = { { EVENT_BUILDTIMEOUT_SET, "BUILDTIMEOUT_SET" }, { EVENT_SIGNAL, "SIGNAL" }, { EVENT_CONF_CHANGED, "CONF_CHANGED"}, + { EVENT_CONN_BW, "CONN_BW" }, + { EVENT_CELL_STATS, "CELL_STATS" }, + { EVENT_TB_EMPTY, "TB_EMPTY" }, + { EVENT_CIRC_BANDWIDTH_USED, "CIRC_BW" }, + { EVENT_TRANSPORT_LAUNCHED, "TRANSPORT_LAUNCHED" }, { 0, NULL }, }; @@ -1447,7 +1429,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, } else if (!strcmp(question, "config-defaults-file")) { *answer = tor_strdup(get_torrc_fname(1)); } else if (!strcmp(question, "config-text")) { - *answer = options_dump(get_options(), 1); + *answer = options_dump(get_options(), OPTIONS_DUMP_MINIMAL); } else if (!strcmp(question, "info/names")) { *answer = list_getinfo_options(); } else if (!strcmp(question, "dormant")) { @@ -1928,7 +1910,7 @@ getinfo_helper_events(control_connection_t *control_conn, if (!strcmp(question, "circuit-status")) { circuit_t *circ_; smartlist_t *status = smartlist_new(); - for (circ_ = circuit_get_global_list_(); circ_; circ_ = circ_->next) { + TOR_LIST_FOREACH(circ_, circuit_get_global_list(), head) { origin_circuit_t *circ; char *circdesc; const char *state; @@ -3182,6 +3164,30 @@ handle_control_usefeature(control_connection_t *conn, return 0; } +/** Implementation for the DROPGUARDS command. */ +static int +handle_control_dropguards(control_connection_t *conn, + uint32_t len, + const char *body) +{ + smartlist_t *args; + (void) len; /* body is nul-terminated; it's safe to ignore the length */ + args = smartlist_new(); + smartlist_split_string(args, body, " ", + SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); + + if (smartlist_len(args)) { + connection_printf_to_buf(conn, "512 Too many arguments to DROPGUARDS\r\n"); + } else { + remove_all_entry_guards(); + send_control_done(conn); + } + + SMARTLIST_FOREACH(args, char *, cp, tor_free(cp)); + smartlist_free(args); + return 0; +} + /** Called when <b>conn</b> has no more bytes left on its outbuf. */ int connection_control_finished_flushing(control_connection_t *conn) @@ -3481,6 +3487,9 @@ connection_control_process_inbuf(control_connection_t *conn) } else if (!strcasecmp(conn->incoming_cmd, "AUTHCHALLENGE")) { if (handle_control_authchallenge(conn, cmd_data_len, args)) return -1; + } else if (!strcasecmp(conn->incoming_cmd, "DROPGUARDS")) { + if (handle_control_dropguards(conn, cmd_data_len, args)) + return -1; } else { connection_printf_to_buf(conn, "510 Unrecognized command \"%s\"\r\n", conn->incoming_cmd); @@ -3848,17 +3857,17 @@ control_event_or_conn_status(or_connection_t *conn, or_conn_status_event_t tp, } ncircs += connection_or_get_num_circuits(conn); if (ncircs && (tp == OR_CONN_EVENT_FAILED || tp == OR_CONN_EVENT_CLOSED)) { - tor_snprintf(ncircs_buf, sizeof(ncircs_buf), "%sNCIRCS=%d", - reason ? " " : "", ncircs); + tor_snprintf(ncircs_buf, sizeof(ncircs_buf), " NCIRCS=%d", ncircs); } orconn_target_get_name(name, sizeof(name), conn); send_control_event(EVENT_OR_CONN_STATUS, ALL_FORMATS, - "650 ORCONN %s %s %s%s%s\r\n", + "650 ORCONN %s %s%s%s%s ID="U64_FORMAT"\r\n", name, status, - reason ? "REASON=" : "", + reason ? " REASON=" : "", orconn_end_reason_to_control_string(reason), - ncircs_buf); + ncircs_buf, + U64_PRINTF_ARG(conn->base_.global_identifier)); return 0; } @@ -3869,6 +3878,8 @@ control_event_or_conn_status(or_connection_t *conn, or_conn_status_event_t tp, int control_event_stream_bandwidth(edge_connection_t *edge_conn) { + circuit_t *circ; + origin_circuit_t *ocirc; if (EVENT_IS_INTERESTING(EVENT_STREAM_BANDWIDTH_USED)) { if (!edge_conn->n_read && !edge_conn->n_written) return 0; @@ -3879,6 +3890,12 @@ control_event_stream_bandwidth(edge_connection_t *edge_conn) (unsigned long)edge_conn->n_read, (unsigned long)edge_conn->n_written); + circ = circuit_get_by_edge_conn(edge_conn); + if (circ && CIRCUIT_IS_ORIGIN(circ)) { + ocirc = TO_ORIGIN_CIRCUIT(circ); + ocirc->n_read_circ_bw += edge_conn->n_read; + ocirc->n_written_circ_bw += edge_conn->n_written; + } edge_conn->n_written = edge_conn->n_read = 0; } @@ -3916,6 +3933,235 @@ control_event_stream_bandwidth_used(void) return 0; } +/** A second or more has elapsed: tell any interested control connections + * how much bandwidth origin circuits have used. */ +int +control_event_circ_bandwidth_used(void) +{ + circuit_t *circ; + origin_circuit_t *ocirc; + if (!EVENT_IS_INTERESTING(EVENT_CIRC_BANDWIDTH_USED)) + return 0; + + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { + if (!CIRCUIT_IS_ORIGIN(circ)) + continue; + ocirc = TO_ORIGIN_CIRCUIT(circ); + if (!ocirc->n_read_circ_bw && !ocirc->n_written_circ_bw) + continue; + send_control_event(EVENT_CIRC_BANDWIDTH_USED, ALL_FORMATS, + "650 CIRC_BW ID=%d READ=%lu WRITTEN=%lu\r\n", + ocirc->global_identifier, + (unsigned long)ocirc->n_read_circ_bw, + (unsigned long)ocirc->n_written_circ_bw); + ocirc->n_written_circ_bw = ocirc->n_read_circ_bw = 0; + } + + return 0; +} + +/** Print out CONN_BW event for a single OR/DIR/EXIT <b>conn</b> and reset + * bandwidth counters. */ +int +control_event_conn_bandwidth(connection_t *conn) +{ + const char *conn_type_str; + if (!get_options()->TestingEnableConnBwEvent || + !EVENT_IS_INTERESTING(EVENT_CONN_BW)) + return 0; + if (!conn->n_read_conn_bw && !conn->n_written_conn_bw) + return 0; + switch (conn->type) { + case CONN_TYPE_OR: + conn_type_str = "OR"; + break; + case CONN_TYPE_DIR: + conn_type_str = "DIR"; + break; + case CONN_TYPE_EXIT: + conn_type_str = "EXIT"; + break; + default: + return 0; + } + send_control_event(EVENT_CONN_BW, ALL_FORMATS, + "650 CONN_BW ID="U64_FORMAT" TYPE=%s " + "READ=%lu WRITTEN=%lu\r\n", + U64_PRINTF_ARG(conn->global_identifier), + conn_type_str, + (unsigned long)conn->n_read_conn_bw, + (unsigned long)conn->n_written_conn_bw); + conn->n_written_conn_bw = conn->n_read_conn_bw = 0; + return 0; +} + +/** A second or more has elapsed: tell any interested control + * connections how much bandwidth connections have used. */ +int +control_event_conn_bandwidth_used(void) +{ + if (get_options()->TestingEnableConnBwEvent && + EVENT_IS_INTERESTING(EVENT_CONN_BW)) { + SMARTLIST_FOREACH(get_connection_array(), connection_t *, conn, + control_event_conn_bandwidth(conn)); + } + return 0; +} + +/** Helper: iterate over cell statistics of <b>circ</b> and sum up added + * cells, removed cells, and waiting times by cell command and direction. + * Store results in <b>cell_stats</b>. Free cell statistics of the + * circuit afterwards. */ +void +sum_up_cell_stats_by_command(circuit_t *circ, cell_stats_t *cell_stats) +{ + memset(cell_stats, 0, sizeof(cell_stats_t)); + SMARTLIST_FOREACH_BEGIN(circ->testing_cell_stats, + testing_cell_stats_entry_t *, ent) { + tor_assert(ent->command <= CELL_COMMAND_MAX_); + if (!ent->removed && !ent->exitward) { + cell_stats->added_cells_appward[ent->command] += 1; + } else if (!ent->removed && ent->exitward) { + cell_stats->added_cells_exitward[ent->command] += 1; + } else if (!ent->exitward) { + cell_stats->removed_cells_appward[ent->command] += 1; + cell_stats->total_time_appward[ent->command] += ent->waiting_time * 10; + } else { + cell_stats->removed_cells_exitward[ent->command] += 1; + cell_stats->total_time_exitward[ent->command] += ent->waiting_time * 10; + } + tor_free(ent); + } SMARTLIST_FOREACH_END(ent); + smartlist_free(circ->testing_cell_stats); + circ->testing_cell_stats = NULL; +} + +/** Helper: append a cell statistics string to <code>event_parts</code>, + * prefixed with <code>key</code>=. Statistics consist of comma-separated + * key:value pairs with lower-case command strings as keys and cell + * numbers or total waiting times as values. A key:value pair is included + * if the entry in <code>include_if_non_zero</code> is not zero, but with + * the (possibly zero) entry from <code>number_to_include</code>. Both + * arrays are expected to have a length of CELL_COMMAND_MAX_ + 1. If no + * entry in <code>include_if_non_zero</code> is positive, no string will + * be added to <code>event_parts</code>. */ +void +append_cell_stats_by_command(smartlist_t *event_parts, const char *key, + const uint64_t *include_if_non_zero, + const uint64_t *number_to_include) +{ + smartlist_t *key_value_strings = smartlist_new(); + int i; + for (i = 0; i <= CELL_COMMAND_MAX_; i++) { + if (include_if_non_zero[i] > 0) { + smartlist_add_asprintf(key_value_strings, "%s:"U64_FORMAT, + cell_command_to_string(i), + U64_PRINTF_ARG(number_to_include[i])); + } + } + if (smartlist_len(key_value_strings) > 0) { + char *joined = smartlist_join_strings(key_value_strings, ",", 0, NULL); + smartlist_add_asprintf(event_parts, "%s=%s", key, joined); + SMARTLIST_FOREACH(key_value_strings, char *, cp, tor_free(cp)); + tor_free(joined); + } + smartlist_free(key_value_strings); +} + +/** Helper: format <b>cell_stats</b> for <b>circ</b> for inclusion in a + * CELL_STATS event and write result string to <b>event_string</b>. */ +void +format_cell_stats(char **event_string, circuit_t *circ, + cell_stats_t *cell_stats) +{ + smartlist_t *event_parts = smartlist_new(); + if (CIRCUIT_IS_ORIGIN(circ)) { + origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ); + smartlist_add_asprintf(event_parts, "ID=%lu", + (unsigned long)ocirc->global_identifier); + } else if (TO_OR_CIRCUIT(circ)->p_chan) { + or_circuit_t *or_circ = TO_OR_CIRCUIT(circ); + smartlist_add_asprintf(event_parts, "InboundQueue=%lu", + (unsigned long)or_circ->p_circ_id); + smartlist_add_asprintf(event_parts, "InboundConn="U64_FORMAT, + U64_PRINTF_ARG(or_circ->p_chan->global_identifier)); + append_cell_stats_by_command(event_parts, "InboundAdded", + cell_stats->added_cells_appward, + cell_stats->added_cells_appward); + append_cell_stats_by_command(event_parts, "InboundRemoved", + cell_stats->removed_cells_appward, + cell_stats->removed_cells_appward); + append_cell_stats_by_command(event_parts, "InboundTime", + cell_stats->removed_cells_appward, + cell_stats->total_time_appward); + } + if (circ->n_chan) { + smartlist_add_asprintf(event_parts, "OutboundQueue=%lu", + (unsigned long)circ->n_circ_id); + smartlist_add_asprintf(event_parts, "OutboundConn="U64_FORMAT, + U64_PRINTF_ARG(circ->n_chan->global_identifier)); + append_cell_stats_by_command(event_parts, "OutboundAdded", + cell_stats->added_cells_exitward, + cell_stats->added_cells_exitward); + append_cell_stats_by_command(event_parts, "OutboundRemoved", + cell_stats->removed_cells_exitward, + cell_stats->removed_cells_exitward); + append_cell_stats_by_command(event_parts, "OutboundTime", + cell_stats->removed_cells_exitward, + cell_stats->total_time_exitward); + } + *event_string = smartlist_join_strings(event_parts, " ", 0, NULL); + SMARTLIST_FOREACH(event_parts, char *, cp, tor_free(cp)); + smartlist_free(event_parts); +} + +/** A second or more has elapsed: tell any interested control connection + * how many cells have been processed for a given circuit. */ +int +control_event_circuit_cell_stats(void) +{ + circuit_t *circ; + cell_stats_t *cell_stats; + char *event_string; + if (!get_options()->TestingEnableCellStatsEvent || + !EVENT_IS_INTERESTING(EVENT_CELL_STATS)) + return 0; + cell_stats = tor_malloc(sizeof(cell_stats_t));; + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { + if (!circ->testing_cell_stats) + continue; + sum_up_cell_stats_by_command(circ, cell_stats); + format_cell_stats(&event_string, circ, cell_stats); + send_control_event(EVENT_CELL_STATS, ALL_FORMATS, + "650 CELL_STATS %s\r\n", event_string); + tor_free(event_string); + } + tor_free(cell_stats); + return 0; +} + +/** Tokens in <b>bucket</b> have been refilled: the read bucket was empty + * for <b>read_empty_time</b> millis, the write bucket was empty for + * <b>write_empty_time</b> millis, and buckets were last refilled + * <b>milliseconds_elapsed</b> millis ago. Only emit TB_EMPTY event if + * either read or write bucket have been empty before. */ +int +control_event_tb_empty(const char *bucket, uint32_t read_empty_time, + uint32_t write_empty_time, + int milliseconds_elapsed) +{ + if (get_options()->TestingEnableTbEmptyEvent && + EVENT_IS_INTERESTING(EVENT_TB_EMPTY) && + (read_empty_time > 0 || write_empty_time > 0)) { + send_control_event(EVENT_TB_EMPTY, ALL_FORMATS, + "650 TB_EMPTY %s READ=%d WRITTEN=%d " + "LAST=%d\r\n", + bucket, read_empty_time, write_empty_time, + milliseconds_elapsed); + } + return 0; +} + /** A second or more has elapsed: tell any interested control * connections how much bandwidth we used. */ int @@ -4163,32 +4409,26 @@ control_event_newconsensus(const networkstatus_t *consensus) /** Called when we compute a new circuitbuildtimeout */ int -control_event_buildtimeout_set(const circuit_build_times_t *cbt, - buildtimeout_set_event_t type) +control_event_buildtimeout_set(buildtimeout_set_event_t type, + const char *args) { const char *type_string = NULL; - double qnt; if (!control_event_is_interesting(EVENT_BUILDTIMEOUT_SET)) return 0; - qnt = circuit_build_times_quantile_cutoff(); - switch (type) { case BUILDTIMEOUT_SET_EVENT_COMPUTED: type_string = "COMPUTED"; break; case BUILDTIMEOUT_SET_EVENT_RESET: type_string = "RESET"; - qnt = 1.0; break; case BUILDTIMEOUT_SET_EVENT_SUSPENDED: type_string = "SUSPENDED"; - qnt = 1.0; break; case BUILDTIMEOUT_SET_EVENT_DISCARD: type_string = "DISCARD"; - qnt = 1.0; break; case BUILDTIMEOUT_SET_EVENT_RESUME: type_string = "RESUME"; @@ -4199,15 +4439,8 @@ control_event_buildtimeout_set(const circuit_build_times_t *cbt, } send_control_event(EVENT_BUILDTIMEOUT_SET, ALL_FORMATS, - "650 BUILDTIMEOUT_SET %s TOTAL_TIMES=%lu " - "TIMEOUT_MS=%lu XM=%lu ALPHA=%f CUTOFF_QUANTILE=%f " - "TIMEOUT_RATE=%f CLOSE_MS=%lu CLOSE_RATE=%f\r\n", - type_string, (unsigned long)cbt->total_build_times, - (unsigned long)cbt->timeout_ms, - (unsigned long)cbt->Xm, cbt->alpha, qnt, - circuit_build_times_timeout_rate(cbt), - (unsigned long)cbt->close_ms, - circuit_build_times_close_rate(cbt)); + "650 BUILDTIMEOUT_SET %s %s\r\n", + type_string, args); return 0; } @@ -4446,44 +4679,27 @@ get_cookie_file(void) } } -/** Choose a random authentication cookie and write it to disk. - * Anybody who can read the cookie from disk will be considered - * authorized to use the control connection. Return -1 if we can't - * write the file, or 0 on success. */ +/* Initialize the cookie-based authentication system of the + * ControlPort. If <b>enabled</b> is 0, then disable the cookie + * authentication system. */ int -init_cookie_authentication(int enabled) +init_control_cookie_authentication(int enabled) { - char *fname; + char *fname = NULL; + int retval; + if (!enabled) { authentication_cookie_is_set = 0; return 0; } - /* We don't want to generate a new cookie every time we call - * options_act(). One should be enough. */ - if (authentication_cookie_is_set) - return 0; /* all set */ - fname = get_cookie_file(); - crypto_rand(authentication_cookie, AUTHENTICATION_COOKIE_LEN); - authentication_cookie_is_set = 1; - if (write_bytes_to_file(fname, authentication_cookie, - AUTHENTICATION_COOKIE_LEN, 1)) { - log_warn(LD_FS,"Error writing authentication cookie to %s.", - escaped(fname)); - tor_free(fname); - return -1; - } -#ifndef _WIN32 - if (get_options()->CookieAuthFileGroupReadable) { - if (chmod(fname, 0640)) { - log_warn(LD_FS,"Unable to make %s group-readable.", escaped(fname)); - } - } -#endif - + retval = init_cookie_authentication(fname, "", /* no header */ + AUTHENTICATION_COOKIE_LEN, + &authentication_cookie, + &authentication_cookie_is_set); tor_free(fname); - return 0; + return retval; } /** A copy of the process specifier of Tor's owning controller, or @@ -4699,8 +4915,8 @@ control_event_bootstrap(bootstrap_status_t status, int progress) * that indicates a problem. <b>warn</b> gives a hint as to why, and * <b>reason</b> provides an "or_conn_end_reason" tag. */ -void -control_event_bootstrap_problem(const char *warn, int reason) +MOCK_IMPL(void, +control_event_bootstrap_problem, (const char *warn, int reason)) { int status = bootstrap_percent; const char *tag, *summary; @@ -4767,3 +4983,35 @@ control_event_clients_seen(const char *controller_str) "650 CLIENTS_SEEN %s\r\n", controller_str); } +/** A new pluggable transport called <b>transport_name</b> was + * launched on <b>addr</b>:<b>port</b>. <b>mode</b> is either + * "server" or "client" depending on the mode of the pluggable + * transport. + * "650" SP "TRANSPORT_LAUNCHED" SP Mode SP Name SP Address SP Port + */ +void +control_event_transport_launched(const char *mode, const char *transport_name, + tor_addr_t *addr, uint16_t port) +{ + send_control_event(EVENT_TRANSPORT_LAUNCHED, ALL_FORMATS, + "650 TRANSPORT_LAUNCHED %s %s %s %u\r\n", + mode, transport_name, fmt_addr(addr), port); +} + +/** Free any leftover allocated memory of the control.c subsystem. */ +void +control_free_all(void) +{ + if (authentication_cookie) /* Free the auth cookie */ + tor_free(authentication_cookie); +} + +#ifdef TOR_UNIT_TESTS +/* For testing: change the value of global_event_mask */ +void +control_testing_set_global_event_mask(uint64_t mask) +{ + global_event_mask = mask; +} +#endif + diff --git a/src/or/control.h b/src/or/control.h index d0f682067e..c8db643b7d 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -50,6 +50,13 @@ int control_event_or_conn_status(or_connection_t *conn, int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written); int control_event_stream_bandwidth(edge_connection_t *edge_conn); int control_event_stream_bandwidth_used(void); +int control_event_circ_bandwidth_used(void); +int control_event_conn_bandwidth(connection_t *conn); +int control_event_conn_bandwidth_used(void); +int control_event_circuit_cell_stats(void); +int control_event_tb_empty(const char *bucket, uint32_t read_empty_time, + uint32_t write_empty_time, + int milliseconds_elapsed); void control_event_logmsg(int severity, uint32_t domain, const char *msg); int control_event_descriptors_changed(smartlist_t *routers); int control_event_address_mapped(const char *from, const char *to, @@ -73,11 +80,11 @@ int control_event_server_status(int severity, const char *format, ...) int control_event_guard(const char *nickname, const char *digest, const char *status); int control_event_conf_changed(const smartlist_t *elements); -int control_event_buildtimeout_set(const circuit_build_times_t *cbt, - buildtimeout_set_event_t type); +int control_event_buildtimeout_set(buildtimeout_set_event_t type, + const char *args); int control_event_signal(uintptr_t signal); -int init_cookie_authentication(int enabled); +int init_control_cookie_authentication(int enabled); smartlist_t *decode_hashed_passwords(config_line_t *passwords); void disable_control_logging(void); void enable_control_logging(void); @@ -85,14 +92,100 @@ void enable_control_logging(void); void monitor_owning_controller_process(const char *process_spec); void control_event_bootstrap(bootstrap_status_t status, int progress); -void control_event_bootstrap_problem(const char *warn, int reason); +MOCK_DECL(void, control_event_bootstrap_problem,(const char *warn, + int reason)); void control_event_clients_seen(const char *controller_str); +void control_event_transport_launched(const char *mode, + const char *transport_name, + tor_addr_t *addr, uint16_t port); + +void control_free_all(void); #ifdef CONTROL_PRIVATE +/* Recognized asynchronous event types. It's okay to expand this list + * because it is used both as a list of v0 event types, and as indices + * into the bitfield to determine which controllers want which events. + */ +#define EVENT_MIN_ 0x0001 +#define EVENT_CIRCUIT_STATUS 0x0001 +#define EVENT_STREAM_STATUS 0x0002 +#define EVENT_OR_CONN_STATUS 0x0003 +#define EVENT_BANDWIDTH_USED 0x0004 +#define EVENT_CIRCUIT_STATUS_MINOR 0x0005 +#define EVENT_NEW_DESC 0x0006 +#define EVENT_DEBUG_MSG 0x0007 +#define EVENT_INFO_MSG 0x0008 +#define EVENT_NOTICE_MSG 0x0009 +#define EVENT_WARN_MSG 0x000A +#define EVENT_ERR_MSG 0x000B +#define EVENT_ADDRMAP 0x000C +/* Exposed above */ +// #define EVENT_AUTHDIR_NEWDESCS 0x000D +#define EVENT_DESCCHANGED 0x000E +/* Exposed above */ +// #define EVENT_NS 0x000F +#define EVENT_STATUS_CLIENT 0x0010 +#define EVENT_STATUS_SERVER 0x0011 +#define EVENT_STATUS_GENERAL 0x0012 +#define EVENT_GUARD 0x0013 +#define EVENT_STREAM_BANDWIDTH_USED 0x0014 +#define EVENT_CLIENTS_SEEN 0x0015 +#define EVENT_NEWCONSENSUS 0x0016 +#define EVENT_BUILDTIMEOUT_SET 0x0017 +#define EVENT_SIGNAL 0x0018 +#define EVENT_CONF_CHANGED 0x0019 +#define EVENT_CONN_BW 0x001A +#define EVENT_CELL_STATS 0x001B +#define EVENT_TB_EMPTY 0x001C +#define EVENT_CIRC_BANDWIDTH_USED 0x001D +#define EVENT_TRANSPORT_LAUNCHED 0x0020 +#define EVENT_MAX_ 0x0020 +/* If EVENT_MAX_ ever hits 0x0040, we need to make the mask into a + * different structure. */ + /* Used only by control.c and test.c */ STATIC size_t write_escaped_data(const char *data, size_t len, char **out); STATIC size_t read_escaped_data(const char *data, size_t len, char **out); +/** Flag for event_format_t. Indicates that we should use the one standard + format. (Other formats previous existed, and are now deprecated) + */ +#define ALL_FORMATS 1 +/** Bit field of flags to select how to format a controller event. Recognized + * flag is ALL_FORMATS. */ +typedef int event_format_t; + +#ifdef TOR_UNIT_TESTS +MOCK_DECL(STATIC void, +send_control_event_string,(uint16_t event, event_format_t which, + const char *msg)); + +void control_testing_set_global_event_mask(uint64_t mask); +#endif + +/** Helper structure: temporarily stores cell statistics for a circuit. */ +typedef struct cell_stats_t { + /** Number of cells added in app-ward direction by command. */ + uint64_t added_cells_appward[CELL_COMMAND_MAX_ + 1]; + /** Number of cells added in exit-ward direction by command. */ + uint64_t added_cells_exitward[CELL_COMMAND_MAX_ + 1]; + /** Number of cells removed in app-ward direction by command. */ + uint64_t removed_cells_appward[CELL_COMMAND_MAX_ + 1]; + /** Number of cells removed in exit-ward direction by command. */ + uint64_t removed_cells_exitward[CELL_COMMAND_MAX_ + 1]; + /** Total waiting time of cells in app-ward direction by command. */ + uint64_t total_time_appward[CELL_COMMAND_MAX_ + 1]; + /** Total waiting time of cells in exit-ward direction by command. */ + uint64_t total_time_exitward[CELL_COMMAND_MAX_ + 1]; +} cell_stats_t; +void sum_up_cell_stats_by_command(circuit_t *circ, + cell_stats_t *cell_stats); +void append_cell_stats_by_command(smartlist_t *event_parts, + const char *key, + const uint64_t *include_if_non_zero, + const uint64_t *number_to_include); +void format_cell_stats(char **event_string, circuit_t *circ, + cell_stats_t *cell_stats); #endif #endif diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 61f9faa394..ecf0d2035d 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -19,9 +19,11 @@ #include "circuitlist.h" #include "config.h" #include "connection.h" +#include "connection_or.h" #include "cpuworker.h" #include "main.h" #include "onion.h" +#include "rephist.h" #include "router.h" /** The maximum number of cpuworker processes we will keep around. */ @@ -683,6 +685,9 @@ assign_onionskin_to_cpuworker(connection_t *cpuworker, return -1; } + if (connection_or_digest_is_known_relay(circ->p_chan->identity_digest)) + rep_hist_note_circuit_handshake_completed(onionskin->handshake_type); + should_time = should_time_request(onionskin->handshake_type); memset(&req, 0, sizeof(req)); req.magic = CPUWORKER_REQUEST_MAGIC; diff --git a/src/or/directory.c b/src/or/directory.c index 88d6717791..12c5b189f4 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -747,7 +747,7 @@ connection_dir_request_failed(dir_connection_t *conn) conn->base_.address); } else if (conn->base_.purpose == DIR_PURPOSE_FETCH_MICRODESC) { log_info(LD_DIR, "Giving up on downloading microdescriptors from " - " directory server at '%s'; will retry", conn->base_.address); + "directory server at '%s'; will retry", conn->base_.address); connection_dir_download_routerdesc_failed(conn); } } @@ -1387,7 +1387,7 @@ directory_send_command(dir_connection_t *conn, * so it does. Return 0. * Otherwise, return -1. */ -static int +STATIC int parse_http_url(const char *headers, char **url) { char *s, *start, *tmp; @@ -1416,6 +1416,19 @@ parse_http_url(const char *headers, char **url) } } + /* Check if the header is well formed (next sequence + * should be HTTP/1.X\r\n). Assumes we're supporting 1.0? */ + { + unsigned minor_ver; + char ch; + char *e = (char *)eat_whitespace_no_nl(s); + if (2 != tor_sscanf(e, "HTTP/1.%u%c", &minor_ver, &ch)) { + return -1; + } + if (ch != '\r') + return -1; + } + if (s-start < 5 || strcmpstart(start,"/tor/")) { /* need to rewrite it */ *url = tor_malloc(s - start + 5); strlcpy(*url,"/tor", s-start+5); @@ -1626,8 +1639,9 @@ load_downloaded_routers(const char *body, smartlist_t *which, added = router_load_routers_from_string(body, NULL, SAVED_NOWHERE, which, descriptor_digests, buf); - control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS, - count_loading_descriptors_progress()); + if (general) + control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS, + count_loading_descriptors_progress()); return added; } @@ -2111,6 +2125,8 @@ connection_dir_client_reached_eof(dir_connection_t *conn) /* Mark remaining ones as failed. */ dir_microdesc_download_failed(which, status_code); } + control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS, + count_loading_descriptors_progress()); SMARTLIST_FOREACH(which, char *, cp, tor_free(cp)); smartlist_free(which); smartlist_free(mds); @@ -2966,7 +2982,9 @@ directory_handle_command_get(dir_connection_t *conn, const char *headers, tor_addr_t addr; if (tor_inet_aton((TO_CONN(conn))->address, &in)) { tor_addr_from_ipv4h(&addr, ntohl(in.s_addr)); - geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, time(NULL)); + geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, + &addr, NULL, + time(NULL)); geoip_note_ns_response(GEOIP_SUCCESS); /* Note that a request for a network status has started, so that we * can measure the download time later on. */ diff --git a/src/or/directory.h b/src/or/directory.h index 41f18a1725..0453160f7a 100644 --- a/src/or/directory.h +++ b/src/or/directory.h @@ -118,5 +118,10 @@ download_status_mark_impossible(download_status_t *dl) int download_status_get_n_failures(const download_status_t *dls); +#ifdef TOR_UNIT_TESTS +/* Used only by directory.c and test_dir.c */ +STATIC int parse_http_url(const char *headers, char **url); +#endif + #endif diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 3243ac47c4..d30a474367 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -26,6 +26,7 @@ #include "router.h" #include "routerlist.h" #include "routerparse.h" +#include "routerset.h" /** * \file dirserv.c @@ -2705,6 +2706,11 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, } else { rs->is_possible_guard = 0; } + if (options->TestingTorNetwork && + routerset_contains_routerstatus(options->TestingDirAuthVoteGuard, + rs, 0)) { + rs->is_possible_guard = 1; + } rs->is_bad_directory = listbaddirs && node->is_bad_directory; rs->is_bad_exit = listbadexits && node->is_bad_exit; diff --git a/src/or/dirvote.c b/src/or/dirvote.c index 12ceba8549..456a033ec9 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -3143,7 +3143,7 @@ dirvote_compute_consensuses(void) }); votefile = get_datadir_fname("v3-status-votes"); - write_chunks_to_file(votefile, votestrings, 0); + write_chunks_to_file(votefile, votestrings, 0, 0); tor_free(votefile); SMARTLIST_FOREACH(votestrings, sized_chunk_t *, c, tor_free(c)); smartlist_free(votestrings); diff --git a/src/or/dns.c b/src/or/dns.c index edcf92e5b3..a1fe0de1d7 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -24,6 +24,7 @@ #include "relay.h" #include "router.h" #include "ht.h" +#include "../common/sandbox.h" #ifdef HAVE_EVENT2_DNS_H #include <event2/event.h> #include <event2/dns.h> @@ -437,8 +438,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve, if (resolve->res_status_ipv4 != RES_STATUS_INFLIGHT) return; - if (dns_result == DNS_ERR_NONE && answer_addr) { - tor_assert(tor_addr_family(answer_addr) == AF_INET); + if (dns_result == DNS_ERR_NONE && answer_addr && + tor_addr_family(answer_addr) == AF_INET) { resolve->result_ipv4.addr_ipv4 = tor_addr_to_ipv4h(answer_addr); resolve->res_status_ipv4 = RES_STATUS_DONE_OK; } else { @@ -450,8 +451,8 @@ cached_resolve_add_answer(cached_resolve_t *resolve, if (resolve->res_status_ipv6 != RES_STATUS_INFLIGHT) return; - if (dns_result == DNS_ERR_NONE && answer_addr) { - tor_assert(tor_addr_family(answer_addr) == AF_INET6); + if (dns_result == DNS_ERR_NONE && answer_addr && + tor_addr_family(answer_addr) == AF_INET6) { memcpy(&resolve->result_ipv6.addr_ipv6, tor_addr_to_in6(answer_addr), sizeof(struct in6_addr)); @@ -1443,13 +1444,14 @@ configure_nameservers(int force) const or_options_t *options; const char *conf_fname; struct stat st; - int r; + int r, flags; options = get_options(); conf_fname = options->ServerDNSResolvConfFile; #ifndef _WIN32 if (!conf_fname) conf_fname = "/etc/resolv.conf"; #endif + flags = DNS_OPTIONS_ALL; if (!the_evdns_base) { if (!(the_evdns_base = evdns_base_new(tor_libevent_get_base(), 0))) { @@ -1477,7 +1479,7 @@ configure_nameservers(int force) evdns_set_log_fn(evdns_log_cb); if (conf_fname) { - if (stat(conf_fname, &st)) { + if (stat(sandbox_intern_string(conf_fname), &st)) { log_warn(LD_EXIT, "Unable to stat resolver configuration in '%s': %s", conf_fname, strerror(errno)); goto err; @@ -1491,9 +1493,16 @@ configure_nameservers(int force) evdns_base_search_clear(the_evdns_base); evdns_base_clear_nameservers_and_suspend(the_evdns_base); } +#if defined(DNS_OPTION_HOSTSFILE) && defined(USE_LIBSECCOMP) + if (flags & DNS_OPTION_HOSTSFILE) { + flags ^= DNS_OPTION_HOSTSFILE; + evdns_base_load_hosts(the_evdns_base, + sandbox_intern_string("/etc/hosts")); + } +#endif log_info(LD_EXIT, "Parsing resolver configuration in '%s'", conf_fname); - if ((r = evdns_base_resolv_conf_parse(the_evdns_base, - DNS_OPTIONS_ALL, conf_fname))) { + if ((r = evdns_base_resolv_conf_parse(the_evdns_base, flags, + sandbox_intern_string(conf_fname)))) { log_warn(LD_EXIT, "Unable to parse '%s', or no nameservers in '%s' (%d)", conf_fname, conf_fname, r); goto err; diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index 70f7c878ee..ebbd85c78f 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -13,6 +13,7 @@ **/ #include "or.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitstats.h" #include "config.h" @@ -349,7 +350,7 @@ control_event_guard_deferred(void) * Else, put the one we pick at the end of the list. */ static const node_t * add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, - int for_directory) + int for_discovery, int for_directory) { const node_t *node; entry_guard_t *entry; @@ -363,7 +364,7 @@ add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, entry->can_retry = 1; } entry->is_dir_cache = node->rs && - node->rs->version_supports_microdesc_cache; + node->rs->version_supports_microdesc_cache; if (get_options()->UseBridges && node_is_a_configured_bridge(node)) entry->is_dir_cache = 1; return NULL; @@ -396,8 +397,8 @@ add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, node_describe(node)); strlcpy(entry->nickname, node_get_nickname(node), sizeof(entry->nickname)); memcpy(entry->identity, node->identity, DIGEST_LEN); - entry->is_dir_cache = node_is_dir(node) && - node->rs && node->rs->version_supports_microdesc_cache; + entry->is_dir_cache = node_is_dir(node) && node->rs && + node->rs->version_supports_microdesc_cache; if (get_options()->UseBridges && node_is_a_configured_bridge(node)) entry->is_dir_cache = 1; @@ -408,6 +409,18 @@ add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, * this guard. For details, see the Jan 2010 or-dev thread. */ entry->chosen_on_date = time(NULL) - crypto_rand_int(3600*24*30); entry->chosen_by_version = tor_strdup(VERSION); + + /* Are we picking this guard because all of our current guards are + * down so we need another one (for_discovery is 1), or because we + * decided we need more variety in our guard list (for_discovery is 0)? + * + * Currently we hack this behavior into place by setting "made_contact" + * for guards of the latter variety, so we'll be willing to use any of + * them right off the bat. + */ + if (!for_discovery) + entry->made_contact = 1; + ((node_t*)node)->using_as_guard = 1; if (prepend) smartlist_insert(entry_guards, 0, entry); @@ -419,19 +432,29 @@ add_an_entry_guard(const node_t *chosen, int reset_status, int prepend, return node; } +/** Choose how many entry guards or directory guards we'll use. If + * <b>for_directory</b> is true, we return how many directory guards to + * use; else we return how many entry guards to use. */ +static int +decide_num_guards(const or_options_t *options, int for_directory) +{ + if (for_directory && options->NumDirectoryGuards != 0) + return options->NumDirectoryGuards; + return options->NumEntryGuards; +} + /** If the use of entry guards is configured, choose more entry guards * until we have enough in the list. */ static void pick_entry_guards(const or_options_t *options, int for_directory) { int changed = 0; - const int num_needed = for_directory ? options->NumDirectoryGuards : - options->NumEntryGuards; + const int num_needed = decide_num_guards(options, for_directory); tor_assert(entry_guards); while (num_live_entry_guards(for_directory) < num_needed) { - if (!add_an_entry_guard(NULL, 0, 0, for_directory)) + if (!add_an_entry_guard(NULL, 0, 0, 0, for_directory)) break; changed = 1; } @@ -576,6 +599,25 @@ remove_dead_entry_guards(time_t now) return changed ? 1 : 0; } +/** Remove all currently listed entry guards. So new ones will be chosen. */ +void +remove_all_entry_guards(void) +{ + char dbuf[HEX_DIGEST_LEN+1]; + + while (smartlist_len(entry_guards)) { + entry_guard_t *entry = smartlist_get(entry_guards, 0); + base16_encode(dbuf, sizeof(dbuf), entry->identity, DIGEST_LEN); + log_info(LD_CIRC, "Entry guard '%s' (%s) has been dropped.", + entry->nickname, dbuf); + control_event_guard(entry->nickname, entry->identity, "DROPPED"); + entry_guard_free(entry); + smartlist_del(entry_guards, 0); + } + log_entry_guards(LOG_INFO); + entry_guards_changed(); +} + /** A new directory or router-status has arrived; update the down/listed * status of the entry guards. * @@ -864,7 +906,7 @@ entry_guards_set_from_config(const or_options_t *options) /* Next, the rest of EntryNodes */ SMARTLIST_FOREACH_BEGIN(entry_nodes, const node_t *, node) { - add_an_entry_guard(node, 0, 0, 0); + add_an_entry_guard(node, 0, 0, 1, 0); if (smartlist_len(entry_guards) > options->NumEntryGuards * 10) break; } SMARTLIST_FOREACH_END(node); @@ -966,8 +1008,7 @@ choose_random_entry_impl(cpath_build_state_t *state, int for_directory, int need_capacity = state ? state->need_capacity : 0; int preferred_min, consider_exit_family = 0; int need_descriptor = !for_directory; - const int num_needed = for_directory ? options->NumDirectoryGuards : - options->NumEntryGuards; + const int num_needed = decide_num_guards(options, for_directory); if (chosen_exit) { nodelist_add_node_and_family(exit_family, chosen_exit); @@ -1049,7 +1090,7 @@ choose_random_entry_impl(cpath_build_state_t *state, int for_directory, /* XXX if guard doesn't imply fast and stable, then we need * to tell add_an_entry_guard below what we want, or it might * be a long time til we get it. -RD */ - node = add_an_entry_guard(NULL, 0, 0, for_directory); + node = add_an_entry_guard(NULL, 0, 0, 1, for_directory); if (node) { entry_guards_changed(); /* XXX we start over here in case the new node we added shares @@ -1761,6 +1802,23 @@ bridge_resolve_conflicts(const tor_addr_t *addr, uint16_t port, } SMARTLIST_FOREACH_END(bridge); } +/** Return True if we have a bridge that uses a transport with name + * <b>transport_name</b>. */ +int +transport_is_needed(const char *transport_name) +{ + if (!bridge_list) + return 0; + + SMARTLIST_FOREACH_BEGIN(bridge_list, const bridge_info_t *, bridge) { + if (bridge->transport_name && + !strcmp(bridge->transport_name, transport_name)) + return 1; + } SMARTLIST_FOREACH_END(bridge); + + return 0; +} + /** Register the bridge information in <b>bridge_line</b> to the * bridge subsystem. Steals reference of <b>bridge_line</b>. */ void @@ -2127,7 +2185,7 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache) node = node_get_mutable_by_id(ri->cache_info.identity_digest); tor_assert(node); rewrite_node_address_for_bridge(bridge, node); - add_an_entry_guard(node, 1, 1, 0); + add_an_entry_guard(node, 1, 1, 0, 0); log_notice(LD_DIR, "new bridge descriptor '%s' (%s): %s", ri->nickname, from_cache ? "cached" : "fresh", router_describe(ri)); @@ -2270,6 +2328,6 @@ entry_guards_free_all(void) clear_bridge_list(); smartlist_free(bridge_list); bridge_list = NULL; - circuit_build_times_free_timeouts(&circ_times); + circuit_build_times_free_timeouts(get_circuit_build_times_mutable()); } diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h index 533f2027aa..772c6662d3 100644 --- a/src/or/entrynodes.h +++ b/src/or/entrynodes.h @@ -77,6 +77,8 @@ int num_live_entry_guards(int for_directory); #endif +void remove_all_entry_guards(void); + void entry_guards_compute_status(const or_options_t *options, time_t now); int entry_guard_register_connect_status(const char *digest, int succeeded, int mark_relay_status, time_t now); @@ -121,6 +123,7 @@ struct transport_t; int get_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port, const struct transport_t **transport); +int transport_is_needed(const char *transport_name); int validate_pluggable_transports_config(void); double pathbias_get_close_success_count(entry_guard_t *guard); diff --git a/src/or/ext_orport.c b/src/or/ext_orport.c new file mode 100644 index 0000000000..d5a0fa1ee4 --- /dev/null +++ b/src/or/ext_orport.c @@ -0,0 +1,648 @@ +/* Copyright (c) 2012, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file ext_orport.c + * \brief Code implementing the Extended ORPort. +*/ + +#define EXT_ORPORT_PRIVATE +#include "or.h" +#include "connection.h" +#include "connection_or.h" +#include "ext_orport.h" +#include "control.h" +#include "config.h" +#include "util.h" +#include "main.h" + +/** Allocate and return a structure capable of holding an Extended + * ORPort message of body length <b>len</b>. */ +ext_or_cmd_t * +ext_or_cmd_new(uint16_t len) +{ + size_t size = STRUCT_OFFSET(ext_or_cmd_t, body) + len; + ext_or_cmd_t *cmd = tor_malloc(size); + cmd->len = len; + return cmd; +} + +/** Deallocate the Extended ORPort message in <b>cmd</b>. */ +void +ext_or_cmd_free(ext_or_cmd_t *cmd) +{ + tor_free(cmd); +} + +/** Get an Extended ORPort message from <b>conn</b>, and place it in + * <b>out</b>. Return -1 on fail, 0 if we need more data, and 1 if we + * successfully extracted an Extended ORPort command from the + * buffer. */ +static int +connection_fetch_ext_or_cmd_from_buf(connection_t *conn, ext_or_cmd_t **out) +{ + IF_HAS_BUFFEREVENT(conn, { + struct evbuffer *input = bufferevent_get_input(conn->bufev); + return fetch_ext_or_command_from_evbuffer(input, out); + }) ELSE_IF_NO_BUFFEREVENT { + return fetch_ext_or_command_from_buf(conn->inbuf, out); + } +} + +/** Write an Extended ORPort message to <b>conn</b>. Use + * <b>command</b> as the command type, <b>bodylen</b> as the body + * length, and <b>body</b>, if it's present, as the body of the + * message. */ +STATIC int +connection_write_ext_or_command(connection_t *conn, + uint16_t command, + const char *body, + size_t bodylen) +{ + char header[4]; + if (bodylen > UINT16_MAX) + return -1; + set_uint16(header, htons(command)); + set_uint16(header+2, htons(bodylen)); + connection_write_to_buf(header, 4, conn); + if (bodylen) { + tor_assert(body); + connection_write_to_buf(body, bodylen, conn); + } + return 0; +} + +/** Transition from an Extended ORPort which accepts Extended ORPort + * messages, to an Extended ORport which accepts OR traffic. */ +static void +connection_ext_or_transition(or_connection_t *conn) +{ + tor_assert(conn->base_.type == CONN_TYPE_EXT_OR); + + conn->base_.type = CONN_TYPE_OR; + TO_CONN(conn)->state = 0; // set the state to a neutral value + control_event_or_conn_status(conn, OR_CONN_EVENT_NEW, 0); + connection_tls_start_handshake(conn, 1); +} + +/** Length of authentication cookie. */ +#define EXT_OR_PORT_AUTH_COOKIE_LEN 32 +/** Length of the header of the cookie file. */ +#define EXT_OR_PORT_AUTH_COOKIE_HEADER_LEN 32 +/** Static cookie file header. */ +#define EXT_OR_PORT_AUTH_COOKIE_HEADER "! Extended ORPort Auth Cookie !\x0a" +/** Length of safe-cookie protocol hashes. */ +#define EXT_OR_PORT_AUTH_HASH_LEN DIGEST256_LEN +/** Length of safe-cookie protocol nonces. */ +#define EXT_OR_PORT_AUTH_NONCE_LEN 32 +/** Safe-cookie protocol constants. */ +#define EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST \ + "ExtORPort authentication server-to-client hash" +#define EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST \ + "ExtORPort authentication client-to-server hash" + +/* Code to indicate cookie authentication */ +#define EXT_OR_AUTHTYPE_SAFECOOKIE 0x01 + +/** If true, we've set ext_or_auth_cookie to a secret code and stored + * it to disk. */ +STATIC int ext_or_auth_cookie_is_set = 0; +/** If ext_or_auth_cookie_is_set, a secret cookie that we've stored to disk + * and which we're using to authenticate controllers. (If the controller can + * read it off disk, it has permission to connect.) */ +STATIC uint8_t *ext_or_auth_cookie = NULL; + +/** Helper: Return a newly allocated string containing a path to the + * file where we store our authentication cookie. */ +char * +get_ext_or_auth_cookie_file_name(void) +{ + const or_options_t *options = get_options(); + if (options->ExtORPortCookieAuthFile && + strlen(options->ExtORPortCookieAuthFile)) { + return tor_strdup(options->ExtORPortCookieAuthFile); + } else { + return get_datadir_fname("extended_orport_auth_cookie"); + } +} + +/* Initialize the cookie-based authentication system of the + * Extended ORPort. If <b>is_enabled</b> is 0, then disable the cookie + * authentication system. */ +int +init_ext_or_cookie_authentication(int is_enabled) +{ + char *fname = NULL; + int retval; + + if (!is_enabled) { + ext_or_auth_cookie_is_set = 0; + return 0; + } + + fname = get_ext_or_auth_cookie_file_name(); + retval = init_cookie_authentication(fname, EXT_OR_PORT_AUTH_COOKIE_HEADER, + EXT_OR_PORT_AUTH_COOKIE_HEADER_LEN, + &ext_or_auth_cookie, + &ext_or_auth_cookie_is_set); + tor_free(fname); + return retval; +} + +/** Read data from <b>conn</b> and see if the client sent us the + * authentication type that she prefers to use in this session. + * + * Return -1 if we received corrupted data or if we don't support the + * authentication type. Return 0 if we need more data in + * <b>conn</b>. Return 1 if the authentication type negotiation was + * successful. */ +static int +connection_ext_or_auth_neg_auth_type(connection_t *conn) +{ + char authtype[1] = {0}; + + if (connection_get_inbuf_len(conn) < 1) + return 0; + + if (connection_fetch_from_buf(authtype, 1, conn) < 0) + return -1; + + log_debug(LD_GENERAL, "Client wants us to use %d auth type", authtype[0]); + if (authtype[0] != EXT_OR_AUTHTYPE_SAFECOOKIE) { + /* '1' is the only auth type supported atm */ + return -1; + } + + conn->state = EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE; + return 1; +} + +/** DOCDOC */ +STATIC int +handle_client_auth_nonce(const char *client_nonce, size_t client_nonce_len, + char **client_hash_out, + char **reply_out, size_t *reply_len_out) +{ + char server_hash[EXT_OR_PORT_AUTH_HASH_LEN] = {0}; + char server_nonce[EXT_OR_PORT_AUTH_NONCE_LEN] = {0}; + char *reply; + size_t reply_len; + + if (client_nonce_len != EXT_OR_PORT_AUTH_NONCE_LEN) + return -1; + + /* Get our nonce */ + if (crypto_rand(server_nonce, EXT_OR_PORT_AUTH_NONCE_LEN) < 0) + return -1; + + { /* set up macs */ + size_t hmac_s_msg_len = strlen(EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST) + + 2*EXT_OR_PORT_AUTH_NONCE_LEN; + size_t hmac_c_msg_len = strlen(EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST) + + 2*EXT_OR_PORT_AUTH_NONCE_LEN; + + char *hmac_s_msg = tor_malloc_zero(hmac_s_msg_len); + char *hmac_c_msg = tor_malloc_zero(hmac_c_msg_len); + char *correct_client_hash = tor_malloc_zero(EXT_OR_PORT_AUTH_HASH_LEN); + + memcpy(hmac_s_msg, + EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST, + strlen(EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST)); + memcpy(hmac_s_msg + strlen(EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST), + client_nonce, EXT_OR_PORT_AUTH_NONCE_LEN); + memcpy(hmac_s_msg + strlen(EXT_OR_PORT_AUTH_SERVER_TO_CLIENT_CONST) + + EXT_OR_PORT_AUTH_NONCE_LEN, + server_nonce, EXT_OR_PORT_AUTH_NONCE_LEN); + + memcpy(hmac_c_msg, + EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST, + strlen(EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST)); + memcpy(hmac_c_msg + strlen(EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST), + client_nonce, EXT_OR_PORT_AUTH_NONCE_LEN); + memcpy(hmac_c_msg + strlen(EXT_OR_PORT_AUTH_CLIENT_TO_SERVER_CONST) + + EXT_OR_PORT_AUTH_NONCE_LEN, + server_nonce, EXT_OR_PORT_AUTH_NONCE_LEN); + + crypto_hmac_sha256(server_hash, + (char*)ext_or_auth_cookie, + EXT_OR_PORT_AUTH_COOKIE_LEN, + hmac_s_msg, + hmac_s_msg_len); + + crypto_hmac_sha256(correct_client_hash, + (char*)ext_or_auth_cookie, + EXT_OR_PORT_AUTH_COOKIE_LEN, + hmac_c_msg, + hmac_c_msg_len); + + /* Store the client hash we generated. We will need to compare it + with the hash sent by the client. */ + *client_hash_out = correct_client_hash; + + memwipe(hmac_s_msg, 0, hmac_s_msg_len); + memwipe(hmac_c_msg, 0, hmac_c_msg_len); + + tor_free(hmac_s_msg); + tor_free(hmac_c_msg); + } + + { /* debug logging */ /* XXX disable this codepath if not logging on debug?*/ + char server_hash_encoded[(2*EXT_OR_PORT_AUTH_HASH_LEN) + 1]; + char server_nonce_encoded[(2*EXT_OR_PORT_AUTH_NONCE_LEN) + 1]; + char client_nonce_encoded[(2*EXT_OR_PORT_AUTH_NONCE_LEN) + 1]; + + base16_encode(server_hash_encoded, sizeof(server_hash_encoded), + server_hash, sizeof(server_hash)); + base16_encode(server_nonce_encoded, sizeof(server_nonce_encoded), + server_nonce, sizeof(server_nonce)); + base16_encode(client_nonce_encoded, sizeof(client_nonce_encoded), + client_nonce, sizeof(client_nonce)); + + log_debug(LD_GENERAL, + "server_hash: '%s'\nserver_nonce: '%s'\nclient_nonce: '%s'", + server_hash_encoded, server_nonce_encoded, client_nonce_encoded); + + memwipe(server_hash_encoded, 0, sizeof(server_hash_encoded)); + memwipe(server_nonce_encoded, 0, sizeof(server_nonce_encoded)); + memwipe(client_nonce_encoded, 0, sizeof(client_nonce_encoded)); + } + + { /* write reply: (server_hash, server_nonce) */ + + reply_len = EXT_OR_PORT_AUTH_COOKIE_LEN+EXT_OR_PORT_AUTH_NONCE_LEN; + reply = tor_malloc_zero(reply_len); + memcpy(reply, server_hash, EXT_OR_PORT_AUTH_HASH_LEN); + memcpy(reply + EXT_OR_PORT_AUTH_HASH_LEN, server_nonce, + EXT_OR_PORT_AUTH_NONCE_LEN); + } + + *reply_out = reply; + *reply_len_out = reply_len; + + return 0; +} + +/** Read the client's nonce out of <b>conn</b>, setup the safe-cookie + * crypto, and then send our own hash and nonce to the client + * + * Return -1 if there was an error; return 0 if we need more data in + * <b>conn</b>, and return 1 if we successfully retrieved the + * client's nonce and sent our own. */ +static int +connection_ext_or_auth_handle_client_nonce(connection_t *conn) +{ + char client_nonce[EXT_OR_PORT_AUTH_NONCE_LEN]; + char *reply=NULL; + size_t reply_len=0; + + if (!ext_or_auth_cookie_is_set) { /* this should not happen */ + log_warn(LD_BUG, "Extended ORPort authentication cookie was not set. " + "That's weird since we should have done that on startup. " + "This might be a Tor bug, please file a bug report. "); + return -1; + } + + if (connection_get_inbuf_len(conn) < EXT_OR_PORT_AUTH_NONCE_LEN) + return 0; + + if (connection_fetch_from_buf(client_nonce, + EXT_OR_PORT_AUTH_NONCE_LEN, conn) < 0) + return -1; + + /* We extract the ClientNonce from the received data, and use it to + calculate ServerHash and ServerNonce according to proposal 217. + + We also calculate our own ClientHash value and save it in the + connection state. We validate it later against the ClientHash + sent by the client. */ + if (handle_client_auth_nonce(client_nonce, sizeof(client_nonce), + &TO_OR_CONN(conn)->ext_or_auth_correct_client_hash, + &reply, &reply_len) < 0) + return -1; + + connection_write_to_buf(reply, reply_len, conn); + + memwipe(reply, 0, reply_len); + tor_free(reply); + + log_debug(LD_GENERAL, "Got client nonce, and sent our own nonce and hash."); + + conn->state = EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH; + return 1; +} + +#define connection_ext_or_auth_send_result_success(c) \ + connection_ext_or_auth_send_result(c, 1) +#define connection_ext_or_auth_send_result_fail(c) \ + connection_ext_or_auth_send_result(c, 0) + +/** Send authentication results to <b>conn</b>. Successful results if + * <b>success</b> is set; failure results otherwise. */ +static void +connection_ext_or_auth_send_result(connection_t *conn, int success) +{ + if (success) + connection_write_to_buf("\x01", 1, conn); + else + connection_write_to_buf("\x00", 1, conn); +} + +/** Receive the client's hash from <b>conn</b>, validate that it's + * correct, and then send the authentication results to the client. + * + * Return -1 if there was an error during validation; return 0 if we + * need more data in <b>conn</b>, and return 1 if we successfully + * validated the client's hash and sent a happy authentication + * result. */ +static int +connection_ext_or_auth_handle_client_hash(connection_t *conn) +{ + char provided_client_hash[EXT_OR_PORT_AUTH_HASH_LEN] = {0}; + + if (connection_get_inbuf_len(conn) < EXT_OR_PORT_AUTH_HASH_LEN) + return 0; + + if (connection_fetch_from_buf(provided_client_hash, + EXT_OR_PORT_AUTH_HASH_LEN, conn) < 0) + return -1; + + if (tor_memneq(TO_OR_CONN(conn)->ext_or_auth_correct_client_hash, + provided_client_hash, EXT_OR_PORT_AUTH_HASH_LEN)) { + log_warn(LD_GENERAL, "Incorrect client hash. Authentication failed."); + connection_ext_or_auth_send_result_fail(conn); + return -1; + } + + log_debug(LD_GENERAL, "Got client's hash and it was legit."); + + /* send positive auth result */ + connection_ext_or_auth_send_result_success(conn); + conn->state = EXT_OR_CONN_STATE_OPEN; + return 1; +} + +/** Handle data from <b>or_conn</b> received on Extended ORPort. + * Return -1 on error. 0 on unsufficient data. 1 on correct. */ +static int +connection_ext_or_auth_process_inbuf(or_connection_t *or_conn) +{ + connection_t *conn = TO_CONN(or_conn); + + /* State transitions of the Extended ORPort authentication protocol: + + EXT_OR_CONN_STATE_AUTH_WAIT_AUTH_TYPE (start state) -> + EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE -> + EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH -> + EXT_OR_CONN_STATE_OPEN + + During EXT_OR_CONN_STATE_OPEN, data is handled by + connection_ext_or_process_inbuf(). + */ + + switch (conn->state) { /* Functionify */ + case EXT_OR_CONN_STATE_AUTH_WAIT_AUTH_TYPE: + return connection_ext_or_auth_neg_auth_type(conn); + + case EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE: + return connection_ext_or_auth_handle_client_nonce(conn); + + case EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH: + return connection_ext_or_auth_handle_client_hash(conn); + + default: + log_warn(LD_BUG, "Encountered unexpected connection state %d while trying " + "to process Extended ORPort authentication data.", conn->state); + return -1; + } +} + +/** Extended ORPort commands (Transport-to-Bridge) */ +#define EXT_OR_CMD_TB_DONE 0x0000 +#define EXT_OR_CMD_TB_USERADDR 0x0001 +#define EXT_OR_CMD_TB_TRANSPORT 0x0002 + +/** Extended ORPort commands (Bridge-to-Transport) */ +#define EXT_OR_CMD_BT_OKAY 0x1000 +#define EXT_OR_CMD_BT_DENY 0x1001 +#define EXT_OR_CMD_BT_CONTROL 0x1002 + +/** Process a USERADDR command from the Extended + * ORPort. <b>payload</b> is a payload of size <b>len</b>. + * + * If the USERADDR command was well formed, change the address of + * <b>conn</b> to the address on the USERADDR command. + * + * Return 0 on success and -1 on error. */ +static int +connection_ext_or_handle_cmd_useraddr(connection_t *conn, + const char *payload, uint16_t len) +{ + /* Copy address string. */ + tor_addr_t addr; + uint16_t port; + char *addr_str; + char *address_part=NULL; + int res; + if (memchr(payload, '\0', len)) { + log_fn(LOG_PROTOCOL_WARN, LD_NET, "Unexpected NUL in ExtORPort UserAddr"); + return -1; + } + + addr_str = tor_memdup_nulterm(payload, len); + + res = tor_addr_port_split(LOG_INFO, addr_str, &address_part, &port); + tor_free(addr_str); + if (res<0) + return -1; + + res = tor_addr_parse(&addr, address_part); + tor_free(address_part); + if (res<0) + return -1; + + { /* do some logging */ + char *old_address = tor_dup_addr(&conn->addr); + char *new_address = tor_dup_addr(&addr); + + log_debug(LD_NET, "Received USERADDR." + "We rewrite our address from '%s:%u' to '%s:%u'.", + safe_str(old_address), conn->port, safe_str(new_address), port); + + tor_free(old_address); + tor_free(new_address); + } + + /* record the address */ + tor_addr_copy(&conn->addr, &addr); + conn->port = port; + if (conn->address) { + tor_free(conn->address); + } + conn->address = tor_dup_addr(&addr); + + return 0; +} + +/** Process a TRANSPORT command from the Extended + * ORPort. <b>payload</b> is a payload of size <b>len</b>. + * + * If the TRANSPORT command was well formed, register the name of the + * transport on <b>conn</b>. + * + * Return 0 on success and -1 on error. */ +static int +connection_ext_or_handle_cmd_transport(or_connection_t *conn, + const char *payload, uint16_t len) +{ + char *transport_str; + if (memchr(payload, '\0', len)) { + log_fn(LOG_PROTOCOL_WARN, LD_NET, "Unexpected NUL in ExtORPort Transport"); + return -1; + } + + transport_str = tor_memdup_nulterm(payload, len); + + /* Transport names MUST be C-identifiers. */ + if (!string_is_C_identifier(transport_str)) { + tor_free(transport_str); + return -1; + } + + /* If ext_or_transport is already occupied (because the PT sent two + * TRANSPORT commands), deallocate the old name and keep the new + * one */ + if (conn->ext_or_transport) + tor_free(conn->ext_or_transport); + + conn->ext_or_transport = transport_str; + return 0; +} + +#define EXT_OR_CONN_STATE_IS_AUTHENTICATING(st) \ + ((st) <= EXT_OR_CONN_STATE_AUTH_MAX) + +/** Process Extended ORPort messages from <b>or_conn</b>. */ +int +connection_ext_or_process_inbuf(or_connection_t *or_conn) +{ + connection_t *conn = TO_CONN(or_conn); + ext_or_cmd_t *command; + int r; + + /* DOCDOC Document the state machine and transitions in this function */ + + /* If we are still in the authentication stage, process traffic as + authentication data: */ + while (EXT_OR_CONN_STATE_IS_AUTHENTICATING(conn->state)) { + log_debug(LD_GENERAL, "Got Extended ORPort authentication data (%u).", + (unsigned int) connection_get_inbuf_len(conn)); + r = connection_ext_or_auth_process_inbuf(or_conn); + if (r < 0) { + connection_mark_for_close(conn); + return -1; + } else if (r == 0) { + return 0; + } + /* if r > 0, loop and process more data (if any). */ + } + + while (1) { + log_debug(LD_GENERAL, "Got Extended ORPort data."); + command = NULL; + r = connection_fetch_ext_or_cmd_from_buf(conn, &command); + if (r < 0) + goto err; + else if (r == 0) + return 0; /* need to wait for more data */ + + /* Got a command! */ + tor_assert(command); + + if (command->cmd == EXT_OR_CMD_TB_DONE) { + if (connection_get_inbuf_len(conn)) { + /* The inbuf isn't empty; the client is misbehaving. */ + goto err; + } + + log_debug(LD_NET, "Received DONE."); + + /* If the transport proxy did not use the TRANSPORT command to + * specify the transport name, mark this as unknown transport. */ + if (!or_conn->ext_or_transport) { + /* We write this string this way to avoid ??>, which is a C + * trigraph. */ + or_conn->ext_or_transport = tor_strdup("<?" "?>"); + } + + connection_write_ext_or_command(conn, EXT_OR_CMD_BT_OKAY, NULL, 0); + + /* can't transition immediately; need to flush first. */ + conn->state = EXT_OR_CONN_STATE_FLUSHING; + connection_stop_reading(conn); + } else if (command->cmd == EXT_OR_CMD_TB_USERADDR) { + if (connection_ext_or_handle_cmd_useraddr(conn, + command->body, command->len) < 0) + goto err; + } else if (command->cmd == EXT_OR_CMD_TB_TRANSPORT) { + if (connection_ext_or_handle_cmd_transport(or_conn, + command->body, command->len) < 0) + goto err; + } else { + log_notice(LD_NET,"Got Extended ORPort command we don't regognize (%u).", + command->cmd); + } + + ext_or_cmd_free(command); + } + + return 0; + + err: + ext_or_cmd_free(command); + connection_mark_for_close(conn); + return -1; +} + +/** <b>conn</b> finished flushing Extended ORPort messages to the + * network, and is now ready to accept OR traffic. This function + * does the transition. */ +int +connection_ext_or_finished_flushing(or_connection_t *conn) +{ + if (conn->base_.state == EXT_OR_CONN_STATE_FLUSHING) { + connection_start_reading(TO_CONN(conn)); + connection_ext_or_transition(conn); + } + return 0; +} + +/** Initiate Extended ORPort authentication, by sending the list of + * supported authentication types to the client. */ +int +connection_ext_or_start_auth(or_connection_t *or_conn) +{ + connection_t *conn = TO_CONN(or_conn); + const uint8_t authtypes[] = { + /* We only support authtype '1' for now. */ + EXT_OR_AUTHTYPE_SAFECOOKIE, + /* Marks the end of the list. */ + 0 + }; + + log_debug(LD_GENERAL, + "ExtORPort authentication: Sending supported authentication types"); + + connection_write_to_buf((const char *)authtypes, sizeof(authtypes), conn); + conn->state = EXT_OR_CONN_STATE_AUTH_WAIT_AUTH_TYPE; + + return 0; +} + +/** Free any leftover allocated memory of the ext_orport.c subsystem. */ +void +ext_orport_free_all(void) +{ + if (ext_or_auth_cookie) /* Free the auth cookie */ + tor_free(ext_or_auth_cookie); +} + diff --git a/src/or/ext_orport.h b/src/or/ext_orport.h new file mode 100644 index 0000000000..ce45e5f418 --- /dev/null +++ b/src/or/ext_orport.h @@ -0,0 +1,42 @@ +/* Copyright (c) 2001 Matej Pfajfar. + * Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#ifndef EXT_ORPORT_H +#define EXT_ORPORT_H + +int connection_ext_or_start_auth(or_connection_t *or_conn); + +ext_or_cmd_t *ext_or_cmd_new(uint16_t len); +void ext_or_cmd_free(ext_or_cmd_t *cmd); +void connection_or_set_ext_or_identifier(or_connection_t *conn); +void connection_or_remove_from_ext_or_id_map(or_connection_t *conn); +void connection_or_clear_ext_or_id_map(void); +or_connection_t *connection_or_get_by_ext_or_id(const char *id); + +int connection_ext_or_finished_flushing(or_connection_t *conn); +int connection_ext_or_process_inbuf(or_connection_t *or_conn); + +int init_ext_or_cookie_authentication(int is_enabled); +char *get_ext_or_auth_cookie_file_name(void); +void ext_orport_free_all(void); + +#ifdef EXT_ORPORT_PRIVATE +STATIC int connection_write_ext_or_command(connection_t *conn, + uint16_t command, + const char *body, + size_t bodylen); +STATIC int handle_client_auth_nonce(const char *client_nonce, + size_t client_nonce_len, + char **client_hash_out, + char **reply_out, size_t *reply_len_out); +#ifdef TOR_UNIT_TESTS +extern uint8_t *ext_or_auth_cookie; +extern int ext_or_auth_cookie_is_set; +#endif +#endif + +#endif + diff --git a/src/or/geoip.c b/src/or/geoip.c index 020075f80f..dc4730c810 100644 --- a/src/or/geoip.c +++ b/src/or/geoip.c @@ -461,6 +461,10 @@ geoip_db_digest(sa_family_t family) typedef struct clientmap_entry_t { HT_ENTRY(clientmap_entry_t) node; tor_addr_t addr; + /* Name of pluggable transport used by this client. NULL if no + pluggable transport was used. */ + char *transport_name; + /** Time when we last saw this IP address, in MINUTES since the epoch. * * (This will run out of space around 4011 CE. If Tor is still in use around @@ -482,12 +486,18 @@ static HT_HEAD(clientmap, clientmap_entry_t) client_history = static INLINE unsigned clientmap_entry_hash(const clientmap_entry_t *a) { - return ht_improve_hash(tor_addr_hash(&a->addr)); + unsigned h = tor_addr_hash(&a->addr); + if (a->transport_name) + h += ht_string_hash(a->transport_name); + return ht_improve_hash(h); } /** Hashtable helper: compare two clientmap_entry_t values for equality. */ static INLINE int clientmap_entries_eq(const clientmap_entry_t *a, const clientmap_entry_t *b) { + if (strcmp_opt(a->transport_name, b->transport_name)) + return 0; + return !tor_addr_compare(&a->addr, &b->addr, CMP_EXACT) && a->action == b->action; } @@ -497,6 +507,17 @@ HT_PROTOTYPE(clientmap, clientmap_entry_t, node, clientmap_entry_hash, HT_GENERATE(clientmap, clientmap_entry_t, node, clientmap_entry_hash, clientmap_entries_eq, 0.6, malloc, realloc, free); +/** Free all storage held by <b>ent</b>. */ +static void +clientmap_entry_free(clientmap_entry_t *ent) +{ + if (!ent) + return; + + tor_free(ent->transport_name); + tor_free(ent); +} + /** Clear history of connecting clients used by entry and bridge stats. */ static void client_history_clear(void) @@ -507,7 +528,7 @@ client_history_clear(void) if ((*ent)->action == GEOIP_CLIENT_CONNECT) { this = *ent; next = HT_NEXT_RMV(clientmap, &client_history, ent); - tor_free(this); + clientmap_entry_free(this); } else { next = HT_NEXT(clientmap, &client_history, ent); } @@ -519,10 +540,14 @@ client_history_clear(void) * configured accordingly. */ void geoip_note_client_seen(geoip_client_action_t action, - const tor_addr_t *addr, time_t now) + const tor_addr_t *addr, + const char *transport_name, + time_t now) { const or_options_t *options = get_options(); clientmap_entry_t lookup, *ent; + memset(&lookup, 0, sizeof(clientmap_entry_t)); + if (action == GEOIP_CLIENT_CONNECT) { /* Only remember statistics as entry guard or as bridge. */ if (!options->EntryStatistics && @@ -534,12 +559,20 @@ geoip_note_client_seen(geoip_client_action_t action, return; } + log_debug(LD_GENERAL, "Seen client from '%s' with transport '%s'.", + safe_str_client(fmt_addr((addr))), + transport_name ? transport_name : "<no transport>"); + tor_addr_copy(&lookup.addr, addr); lookup.action = (int)action; + lookup.transport_name = (char*) transport_name; ent = HT_FIND(clientmap, &client_history, &lookup); + if (! ent) { ent = tor_malloc_zero(sizeof(clientmap_entry_t)); tor_addr_copy(&ent->addr, addr); + if (transport_name) + ent->transport_name = tor_strdup(transport_name); ent->action = (int)action; HT_INSERT(clientmap, &client_history, ent); } @@ -566,7 +599,7 @@ remove_old_client_helper_(struct clientmap_entry_t *ent, void *_cutoff) { time_t cutoff = *(time_t*)_cutoff / 60; if (ent->last_seen_in_minutes < cutoff) { - tor_free(ent); + clientmap_entry_free(ent); return 1; } else { return 0; @@ -769,6 +802,106 @@ geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type, } } +/** Return the bridge-ip-transports string that should be inserted in + * our extra-info descriptor. Return NULL if the bridge-ip-transports + * line should be empty. */ +char * +geoip_get_transport_history(void) +{ + unsigned granularity = IP_GRANULARITY; + /** String hash table <name of transport> -> <number of users>. */ + strmap_t *transport_counts = strmap_new(); + + /** Smartlist that contains copies of the names of the transports + that have been used. */ + smartlist_t *transports_used = smartlist_new(); + + /* Special string to signify that no transport was used for this + connection. Pluggable transport names can't have symbols in their + names, so this string will never collide with a real transport. */ + static const char* no_transport_str = "<OR>"; + + clientmap_entry_t **ent; + const char *transport_name = NULL; + smartlist_t *string_chunks = smartlist_new(); + char *the_string = NULL; + + /* If we haven't seen any clients yet, return NULL. */ + if (HT_EMPTY(&client_history)) + goto done; + + /** We do the following steps to form the transport history string: + * a) Foreach client that uses a pluggable transport, we increase the + * times that transport was used by one. If the client did not use + * a transport, we increase the number of times someone connected + * without obfuscation. + * b) Foreach transport we observed, we write its transport history + * string and push it to string_chunks. So, for example, if we've + * seen 665 obfs2 clients, we write "obfs2=665". + * c) We concatenate string_chunks to form the final string. + */ + + log_debug(LD_GENERAL,"Starting iteration for transport history. %d clients.", + HT_SIZE(&client_history)); + + /* Loop through all clients. */ + HT_FOREACH(ent, clientmap, &client_history) { + uintptr_t val; + void *ptr; + transport_name = (*ent)->transport_name; + if (!transport_name) + transport_name = no_transport_str; + + /* Increase the count for this transport name. */ + ptr = strmap_get(transport_counts, transport_name); + val = (uintptr_t)ptr; + val++; + ptr = (void*)val; + strmap_set(transport_counts, transport_name, ptr); + + /* If it's the first time we see this transport, note it. */ + if (val == 1) + smartlist_add(transports_used, tor_strdup(transport_name)); + + log_debug(LD_GENERAL, "Client from '%s' with transport '%s'. " + "I've now seen %d clients.", + safe_str_client(fmt_addr(&(*ent)->addr)), + transport_name ? transport_name : "<no transport>", + (int)val); + } + + /* Sort the transport names (helps with unit testing). */ + smartlist_sort_strings(transports_used); + + /* Loop through all seen transports. */ + SMARTLIST_FOREACH_BEGIN(transports_used, const char *, transport_name) { + void *transport_count_ptr = strmap_get(transport_counts, transport_name); + uintptr_t transport_count = (uintptr_t) transport_count_ptr; + + log_debug(LD_GENERAL, "We got "U64_FORMAT" clients with transport '%s'.", + U64_PRINTF_ARG((uint64_t)transport_count), transport_name); + + smartlist_add_asprintf(string_chunks, "%s="U64_FORMAT, + transport_name, + U64_PRINTF_ARG(round_uint64_to_next_multiple_of( + (uint64_t)transport_count, + granularity))); + } SMARTLIST_FOREACH_END(transport_name); + + the_string = smartlist_join_strings(string_chunks, ",", 0, NULL); + + log_debug(LD_GENERAL, "Final bridge-ip-transports string: '%s'", the_string); + + done: + strmap_free(transport_counts, NULL); + SMARTLIST_FOREACH(transports_used, char *, s, tor_free(s)); + smartlist_free(transports_used); + SMARTLIST_FOREACH(string_chunks, char *, s, tor_free(s)); + smartlist_free(string_chunks); + + return the_string; +} + /** Return a newly allocated comma-separated string containing statistics * on network status downloads. The string contains the number of completed * requests, timeouts, and still running requests as well as the download @@ -1037,7 +1170,7 @@ geoip_reset_dirreq_stats(time_t now) if ((*ent)->action == GEOIP_CLIENT_NETWORKSTATUS) { this = *ent; next = HT_NEXT_RMV(clientmap, &client_history, ent); - tor_free(this); + clientmap_entry_free(this); } else { next = HT_NEXT(clientmap, &client_history, ent); } @@ -1189,6 +1322,8 @@ validate_bridge_stats(const char *stats_str, time_t now) const char *BRIDGE_STATS_END = "bridge-stats-end "; const char *BRIDGE_IPS = "bridge-ips "; const char *BRIDGE_IPS_EMPTY_LINE = "bridge-ips\n"; + const char *BRIDGE_TRANSPORTS = "bridge-ip-transports "; + const char *BRIDGE_TRANSPORTS_EMPTY_LINE = "bridge-ip-transports\n"; const char *tmp; time_t stats_end_time; int seconds; @@ -1223,6 +1358,15 @@ validate_bridge_stats(const char *stats_str, time_t now) return 0; } + /* Parse: "bridge-ip-transports PT=N,PT=N,..." */ + tmp = find_str_at_start_of_line(stats_str, BRIDGE_TRANSPORTS); + if (!tmp) { + /* Look if there is an empty "bridge-ip-transports" line */ + tmp = find_str_at_start_of_line(stats_str, BRIDGE_TRANSPORTS_EMPTY_LINE); + if (!tmp) + return 0; + } + return 1; } @@ -1236,7 +1380,8 @@ static char *bridge_stats_extrainfo = NULL; char * geoip_format_bridge_stats(time_t now) { - char *out = NULL, *country_data = NULL, *ipver_data = NULL; + char *out = NULL; + char *country_data = NULL, *ipver_data = NULL, *transport_data = NULL; long duration = now - start_of_bridge_stats_interval; char written[ISO_TIME_LEN+1]; @@ -1247,16 +1392,20 @@ geoip_format_bridge_stats(time_t now) format_iso_time(written, now); geoip_get_client_history(GEOIP_CLIENT_CONNECT, &country_data, &ipver_data); + transport_data = geoip_get_transport_history(); tor_asprintf(&out, "bridge-stats-end %s (%ld s)\n" "bridge-ips %s\n" - "bridge-ip-versions %s\n", + "bridge-ip-versions %s\n" + "bridge-ip-transports %s\n", written, duration, country_data ? country_data : "", - ipver_data ? ipver_data : ""); + ipver_data ? ipver_data : "", + transport_data ? transport_data : ""); tor_free(country_data); tor_free(ipver_data); + tor_free(transport_data); return out; } @@ -1515,7 +1664,7 @@ geoip_free_all(void) for (ent = HT_START(clientmap, &client_history); ent != NULL; ent = next) { this = *ent; next = HT_NEXT_RMV(clientmap, &client_history, ent); - tor_free(this); + clientmap_entry_free(this); } HT_CLEAR(clientmap, &client_history); } @@ -1530,5 +1679,6 @@ geoip_free_all(void) } clear_geoip_db(); + tor_free(bridge_stats_extrainfo); } diff --git a/src/or/geoip.h b/src/or/geoip.h index d67007298e..b9b53c3006 100644 --- a/src/or/geoip.h +++ b/src/or/geoip.h @@ -29,10 +29,12 @@ const char *geoip_db_digest(sa_family_t family); country_t geoip_get_country(const char *countrycode); void geoip_note_client_seen(geoip_client_action_t action, - const tor_addr_t *addr, time_t now); + const tor_addr_t *addr, const char *transport_name, + time_t now); void geoip_remove_old_clients(time_t cutoff); void geoip_note_ns_response(geoip_ns_response_t response); +char *geoip_get_transport_history(void); int geoip_get_client_history(geoip_client_action_t action, char **country_str, char **ipver_str); char *geoip_get_request_history(void); diff --git a/src/or/hibernate.c b/src/or/hibernate.c index 22c0f253da..607dec8cd5 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -255,6 +255,13 @@ accounting_get_interval_length(void) return (int)(interval_end_time - interval_start_time); } +/** Return the time at which the current accounting interval will end. */ +time_t +accounting_get_end_time(void) +{ + return interval_end_time; +} + /** Called from main.c to tell us that <b>seconds</b> seconds have * passed, <b>n_read</b> bytes have been read, and <b>n_written</b> * bytes have been written. */ diff --git a/src/or/hibernate.h b/src/or/hibernate.h index 18832fbc6c..4f7331ce8c 100644 --- a/src/or/hibernate.h +++ b/src/or/hibernate.h @@ -15,6 +15,7 @@ int accounting_parse_options(const or_options_t *options, int validate_only); int accounting_is_enabled(const or_options_t *options); int accounting_get_interval_length(void); +time_t accounting_get_end_time(void); void configure_accounting(time_t now); void accounting_run_housekeeping(time_t now); void accounting_add_bytes(size_t n_read, size_t n_written, int seconds); diff --git a/src/or/include.am b/src/or/include.am index f5002e6986..47bdd09901 100644 --- a/src/or/include.am +++ b/src/or/include.am @@ -34,6 +34,7 @@ LIBTOR_A_SOURCES = \ src/or/buffers.c \ src/or/channel.c \ src/or/channeltls.c \ + src/or/circpathbias.c \ src/or/circuitbuild.c \ src/or/circuitlist.c \ src/or/circuitmux.c \ @@ -56,6 +57,7 @@ LIBTOR_A_SOURCES = \ src/or/fp_pair.c \ src/or/geoip.c \ src/or/entrynodes.c \ + src/or/ext_orport.c \ src/or/hibernate.c \ src/or/main.c \ src/or/microdesc.c \ @@ -133,6 +135,7 @@ ORHEADERS = \ src/or/buffers.h \ src/or/channel.h \ src/or/channeltls.h \ + src/or/circpathbias.h \ src/or/circuitbuild.h \ src/or/circuitlist.h \ src/or/circuitmux.h \ @@ -153,6 +156,7 @@ ORHEADERS = \ src/or/dns.h \ src/or/dnsserv.h \ src/or/eventdns_tor.h \ + src/or/ext_orport.h \ src/or/fp_pair.h \ src/or/geoip.h \ src/or/entrynodes.h \ diff --git a/src/or/main.c b/src/or/main.c index a8f1c2306d..e14001f102 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -10,6 +10,7 @@ * connections, implements main loop, and drives scheduled events. **/ +#define MAIN_PRIVATE #include "or.h" #include "addressmap.h" #include "backtrace.h" @@ -21,6 +22,7 @@ #include "circuituse.h" #include "command.h" #include "config.h" +#include "confparse.h" #include "connection.h" #include "connection_edge.h" #include "connection_or.h" @@ -52,6 +54,7 @@ #include "routerparse.h" #include "statefile.h" #include "status.h" +#include "ext_orport.h" #ifdef USE_DMALLOC #include <dmalloc.h> #include <openssl/crypto.h> @@ -350,6 +353,8 @@ connection_remove(connection_t *conn) (int)conn->s, conn_type_to_string(conn->type), smartlist_len(connection_array)); + control_event_conn_bandwidth(conn); + tor_assert(conn->conn_array_index >= 0); current_index = conn->conn_array_index; connection_unregister_events(conn); /* This is redundant, but cheap. */ @@ -413,6 +418,19 @@ connection_unlink(connection_t *conn) connection_free(conn); } +/** Initialize the global connection list, closeable connection list, + * and active connection list. */ +STATIC void +init_connection_lists(void) +{ + if (!connection_array) + connection_array = smartlist_new(); + if (!closeable_connection_lst) + closeable_connection_lst = smartlist_new(); + if (!active_linked_connection_lst) + active_linked_connection_lst = smartlist_new(); +} + /** Schedule <b>conn</b> to be closed. **/ void add_connection_to_closeable_list(connection_t *conn) @@ -506,8 +524,8 @@ connection_is_reading(connection_t *conn) } /** Tell the main loop to stop notifying <b>conn</b> of any read events. */ -void -connection_stop_reading(connection_t *conn) +MOCK_IMPL(void, +connection_stop_reading,(connection_t *conn)) { tor_assert(conn); @@ -531,8 +549,8 @@ connection_stop_reading(connection_t *conn) } /** Tell the main loop to start notifying <b>conn</b> of any read events. */ -void -connection_start_reading(connection_t *conn) +MOCK_IMPL(void, +connection_start_reading,(connection_t *conn)) { tor_assert(conn); @@ -571,8 +589,8 @@ connection_is_writing(connection_t *conn) } /** Tell the main loop to stop notifying <b>conn</b> of any write events. */ -void -connection_stop_writing(connection_t *conn) +MOCK_IMPL(void, +connection_stop_writing,(connection_t *conn)) { tor_assert(conn); @@ -597,8 +615,8 @@ connection_stop_writing(connection_t *conn) } /** Tell the main loop to start notifying <b>conn</b> of any write events. */ -void -connection_start_writing(connection_t *conn) +MOCK_IMPL(void, +connection_start_writing,(connection_t *conn)) { tor_assert(conn); @@ -686,7 +704,7 @@ connection_stop_reading_from_linked_conn(connection_t *conn) } /** Close all connections that have been scheduled to get closed. */ -static void +STATIC void close_closeable_connections(void) { int i; @@ -1355,6 +1373,11 @@ run_scheduled_events(time_t now) next_time_to_write_stats_files = next_write; } time_to_write_stats_files = next_time_to_write_stats_files; + + /* Also commandeer this opportunity to log how our circuit handshake + * stats have been doing. */ + if (public_server_mode(options)) + rep_hist_log_circuit_handshake_stats(now); } /* 1h. Check whether we should write bridge statistics to disk. @@ -1648,6 +1671,9 @@ second_elapsed_callback(periodic_timer_t *timer, void *arg) control_event_bandwidth_used((uint32_t)bytes_read,(uint32_t)bytes_written); control_event_stream_bandwidth_used(); + control_event_conn_bandwidth_used(); + control_event_circ_bandwidth_used(); + control_event_circuit_cell_stats(); if (server_mode(options) && !net_is_disabled() && @@ -2306,14 +2332,10 @@ int tor_init(int argc, char *argv[]) { char progname[256]; - int i, quiet = 0; + int quiet = 0; + time_of_process_start = time(NULL); - if (!connection_array) - connection_array = smartlist_new(); - if (!closeable_connection_lst) - closeable_connection_lst = smartlist_new(); - if (!active_linked_connection_lst) - active_linked_connection_lst = smartlist_new(); + init_connection_lists(); /* Have the log set up with our application name. */ tor_snprintf(progname, sizeof(progname), "Tor %s", get_version()); log_set_application_name(progname); @@ -2324,17 +2346,31 @@ tor_init(int argc, char *argv[]) addressmap_init(); /* Init the client dns cache. Do it always, since it's * cheap. */ + { /* We search for the "quiet" option first, since it decides whether we * will log anything at all to the command line. */ - for (i=1;i<argc;++i) { - if (!strcmp(argv[i], "--hush")) - quiet = 1; - if (!strcmp(argv[i], "--quiet")) - quiet = 2; - /* --version implies --quiet */ - if (!strcmp(argv[i], "--version")) - quiet = 2; + config_line_t *opts = NULL, *cmdline_opts = NULL; + const config_line_t *cl; + (void) config_parse_commandline(argc, argv, 1, &opts, &cmdline_opts); + for (cl = cmdline_opts; cl; cl = cl->next) { + if (!strcmp(cl->key, "--hush")) + quiet = 1; + if (!strcmp(cl->key, "--quiet") || + !strcmp(cl->key, "--dump-config")) + quiet = 2; + /* --version, --digests, and --help imply --hush */ + if (!strcmp(cl->key, "--version") || !strcmp(cl->key, "--digests") || + !strcmp(cl->key, "--list-torrc-options") || + !strcmp(cl->key, "--library-versions") || + !strcmp(cl->key, "-h") || !strcmp(cl->key, "--help")) { + if (quiet < 1) + quiet = 1; + } + } + config_free_lines(opts); + config_free_lines(cmdline_opts); } + /* give it somewhere to log to initially */ switch (quiet) { case 2: @@ -2356,11 +2392,12 @@ tor_init(int argc, char *argv[]) #else ""; #endif - log_notice(LD_GENERAL, "Tor v%s %srunning on %s with Libevent %s " - "and OpenSSL %s.", version, bev_str, + log_notice(LD_GENERAL, "Tor v%s %srunning on %s with Libevent %s, " + "OpenSSL %s and Zlib %s.", version, bev_str, get_uname(), tor_libevent_get_version_str(), - crypto_openssl_get_version_str()); + crypto_openssl_get_version_str(), + tor_zlib_get_version_str()); log_notice(LD_GENERAL, "Tor can't help you if you use it wrong! " "Learn how to be safe at " @@ -2502,6 +2539,8 @@ tor_free_all(int postfork) memarea_clear_freelist(); nodelist_free_all(); microdesc_free_all(); + ext_orport_free_all(); + control_free_all(); if (!postfork) { config_free_all(); or_state_free_all(); @@ -2576,7 +2615,7 @@ do_list_fingerprint(void) const char *nickname = get_options()->Nickname; if (!server_mode(get_options())) { log_err(LD_GENERAL, - "Clients don't have long-term identity keys. Exiting.\n"); + "Clients don't have long-term identity keys. Exiting."); return -1; } tor_assert(nickname); @@ -2614,6 +2653,34 @@ do_hash_password(void) printf("16:%s\n",output); } +/** Entry point for configuration dumping: write the configuration to + * stdout. */ +static int +do_dump_config(void) +{ + const or_options_t *options = get_options(); + const char *arg = options->command_arg; + int how; + char *opts; + if (!strcmp(arg, "short")) { + how = OPTIONS_DUMP_MINIMAL; + } else if (!strcmp(arg, "non-builtin")) { + how = OPTIONS_DUMP_DEFAULTS; + } else if (!strcmp(arg, "full")) { + how = OPTIONS_DUMP_ALL; + } else { + printf("%s is not a recognized argument to --dump-config. " + "Please select 'short', 'non-builtin', or 'full'", arg); + return -1; + } + + opts = options_dump(options, how); + printf("%s", opts); + tor_free(opts); + + return 0; +} + #if defined (WINCE) int find_flashcard_path(PWCHAR path, size_t size) @@ -2639,6 +2706,95 @@ find_flashcard_path(PWCHAR path, size_t size) } #endif +static void +init_addrinfo(void) +{ + char hname[256]; + + // host name to sandbox + gethostname(hname, sizeof(hname)); + sandbox_add_addrinfo(hname); +} + +static sandbox_cfg_t* +sandbox_init_filter(void) +{ + sandbox_cfg_t *cfg = sandbox_cfg_new(); + + sandbox_cfg_allow_openat_filename(&cfg, + get_datadir_fname("cached-status"), 1); + + sandbox_cfg_allow_open_filename_array(&cfg, + get_datadir_fname("cached-certs"), 1, + get_datadir_fname("cached-certs.tmp"), 1, + get_datadir_fname("cached-consensus"), 1, + get_datadir_fname("unverified-consensus"), 1, + get_datadir_fname("unverified-consensus.tmp"), 1, + get_datadir_fname("cached-microdesc-consensus"), 1, + get_datadir_fname("cached-microdesc-consensus.tmp"), 1, + get_datadir_fname("cached-microdescs"), 1, + get_datadir_fname("cached-microdescs.tmp"), 1, + get_datadir_fname("cached-microdescs.new"), 1, + get_datadir_fname("cached-microdescs.new.tmp"), 1, + get_datadir_fname("unverified-microdesc-consensus"), 1, + get_datadir_fname("cached-descriptors"), 1, + get_datadir_fname("cached-descriptors.new"), 1, + get_datadir_fname("cached-descriptors.tmp"), 1, + get_datadir_fname("cached-descriptors.new.tmp"), 1, + get_datadir_fname("cached-descriptors.tmp.tmp"), 1, + get_datadir_fname("cached-extrainfo"), 1, + get_datadir_fname("state.tmp"), 1, + get_datadir_fname("unparseable-desc.tmp"), 1, + get_datadir_fname("unparseable-desc"), 1, + "/dev/srandom", 0, + "/dev/urandom", 0, + "/dev/random", 0, + NULL, 0 + ); + + sandbox_cfg_allow_stat_filename_array(&cfg, + get_datadir_fname(NULL), 1, + get_datadir_fname("lock"), 1, + get_datadir_fname("state"), 1, + get_datadir_fname("router-stability"), 1, + get_datadir_fname("cached-extrainfo.new"), 1, + NULL, 0 + ); + + // orport + if (server_mode(get_options())) { + sandbox_cfg_allow_open_filename_array(&cfg, + get_datadir_fname2("keys", "secret_id_key"), 1, + get_datadir_fname2("keys", "secret_onion_key"), 1, + get_datadir_fname2("keys", "secret_onion_key_ntor"), 1, + get_datadir_fname2("keys", "secret_onion_key_ntor.tmp"), 1, + get_datadir_fname2("keys", "secret_id_key.old"), 1, + get_datadir_fname2("keys", "secret_onion_key.old"), 1, + get_datadir_fname2("keys", "secret_onion_key_ntor.old"), 1, + get_datadir_fname2("keys", "secret_onion_key.tmp"), 1, + get_datadir_fname2("keys", "secret_id_key.tmp"), 1, + get_datadir_fname("fingerprint"), 1, + get_datadir_fname("fingerprint.tmp"), 1, + get_datadir_fname("cached-consensus"), 1, + get_datadir_fname("cached-consensus.tmp"), 1, + "/etc/resolv.conf", 0, + NULL, 0 + ); + + sandbox_cfg_allow_stat_filename_array(&cfg, + get_datadir_fname("keys"), 1, + get_datadir_fname("stats/dirreq-stats"), 1, + NULL, 0 + ); + } + + sandbox_cfg_allow_execve(&cfg, "/usr/local/bin/tor"); + + init_addrinfo(); + + return cfg; +} + /** Main entry point for the Tor process. Called from main(). */ /* This function is distinct from main() only so we can link main.c into * the unittest binary without conflicting with the unittests' main. */ @@ -2709,10 +2865,18 @@ tor_main(int argc, char *argv[]) return -1; if (get_options()->Sandbox) { - if (tor_global_sandbox()) { + sandbox_cfg_t* cfg = sandbox_init_filter(); + + if (sandbox_init(cfg)) { log_err(LD_BUG,"Failed to create syscall sandbox filter"); return -1; } + + // registering libevent rng +#ifdef HAVE_EVUTIL_SECURE_RNG_SET_URANDOM_DEVICE_FILE + evutil_secure_rng_set_urandom_device_file( + (char*) sandbox_intern_string("/dev/urandom")); +#endif } switch (get_options()->command) { @@ -2733,6 +2897,9 @@ tor_main(int argc, char *argv[]) printf("Configuration was valid\n"); result = 0; break; + case CMD_DUMP_CONFIG: + result = do_dump_config(); + break; case CMD_RUN_UNITTESTS: /* only set by test.c */ default: log_warn(LD_BUG,"Illegal command number %d: internal error.", diff --git a/src/or/main.h b/src/or/main.h index 85621a32bf..df302ffa72 100644 --- a/src/or/main.h +++ b/src/or/main.h @@ -36,12 +36,12 @@ typedef enum watchable_events { } watchable_events_t; void connection_watch_events(connection_t *conn, watchable_events_t events); int connection_is_reading(connection_t *conn); -void connection_stop_reading(connection_t *conn); -void connection_start_reading(connection_t *conn); +MOCK_DECL(void,connection_stop_reading,(connection_t *conn)); +MOCK_DECL(void,connection_start_reading,(connection_t *conn)); int connection_is_writing(connection_t *conn); -void connection_stop_writing(connection_t *conn); -void connection_start_writing(connection_t *conn); +MOCK_DECL(void,connection_stop_writing,(connection_t *conn)); +MOCK_DECL(void,connection_start_writing,(connection_t *conn)); void connection_stop_reading_from_linked_conn(connection_t *conn); @@ -69,5 +69,10 @@ int tor_main(int argc, char *argv[]); int do_main_loop(void); int tor_init(int argc, char **argv); +#ifdef MAIN_PRIVATE +STATIC void init_connection_lists(void); +STATIC void close_closeable_connections(void); +#endif + #endif diff --git a/src/or/microdesc.c b/src/or/microdesc.c index 8c763c6729..f6dd6b611b 100644 --- a/src/or/microdesc.c +++ b/src/or/microdesc.c @@ -213,7 +213,6 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, if (fd < 0) { log_warn(LD_DIR, "Couldn't append to journal in %s: %s", cache->journal_fname, strerror(errno)); - return NULL; } } @@ -238,11 +237,11 @@ microdescs_add_list_to_cache(microdesc_cache_t *cache, if (size < 0) { /* we already warned in dump_microdescriptor */ abort_writing_to_file(open_file); - smartlist_clear(added); - return added; + fd = -1; + } else { + md->saved_location = SAVED_IN_JOURNAL; + cache->journal_len += size; } - md->saved_location = SAVED_IN_JOURNAL; - cache->journal_len += size; } else { md->saved_location = where; } diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 3f995a9f6c..c950731bb2 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -1231,7 +1231,7 @@ update_consensus_networkstatus_downloads(time_t now) } if (time_to_download_next_consensus[i] > now) - return; /* Wait until the current consensus is older. */ + continue; /* Wait until the current consensus is older. */ resource = networkstatus_get_flavor_name(i); @@ -1822,7 +1822,8 @@ networkstatus_set_current_consensus(const char *consensus, * current consensus really alter our view of any OR's rate limits? */ connection_or_update_token_buckets(get_connection_array(), options); - circuit_build_times_new_consensus_params(&circ_times, current_consensus); + circuit_build_times_new_consensus_params(get_circuit_build_times_mutable(), + current_consensus); } if (directory_caches_dir_info(options)) { diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 178f084b69..86219b77c0 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -25,6 +25,8 @@ static void nodelist_drop_node(node_t *node, int remove_from_ht); static void node_free(node_t *node); static void update_router_have_minimum_dir_info(void); +static double get_frac_paths_needed_for_circs(const or_options_t *options, + const networkstatus_t *ns); /** A nodelist_t holds a node_t object for every router we're "willing to use * for something". Specifically, it should hold a node_t for every node that @@ -1317,7 +1319,7 @@ count_usable_descriptors(int *num_present, int *num_usable, md ? "microdesc" : "desc", exit_only ? " exits" : "s"); } -/** Return an extimate of which fraction of usable paths through the Tor +/** Return an estimate of which fraction of usable paths through the Tor * network we have available for use. */ static double compute_frac_paths_available(const networkstatus_t *consensus, @@ -1372,13 +1374,14 @@ compute_frac_paths_available(const networkstatus_t *consensus, if (f_myexit < f_exit) f_exit = f_myexit; - tor_asprintf(status_out, - "%d%% of guards bw, " - "%d%% of midpoint bw, and " - "%d%% of exit bw", - (int)(f_guard*100), - (int)(f_mid*100), - (int)(f_exit*100)); + if (status_out) + tor_asprintf(status_out, + "%d%% of guards bw, " + "%d%% of midpoint bw, and " + "%d%% of exit bw", + (int)(f_guard*100), + (int)(f_mid*100), + (int)(f_exit*100)); return f_guard * f_mid * f_exit; } @@ -1391,19 +1394,19 @@ count_loading_descriptors_progress(void) { int num_present = 0, num_usable=0; time_t now = time(NULL); + const or_options_t *options = get_options(); const networkstatus_t *consensus = networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor()); - double fraction; + double paths, fraction; if (!consensus) return 0; /* can't count descriptors if we have no list of them */ - count_usable_descriptors(&num_present, &num_usable, NULL, - consensus, get_options(), now, NULL, 0); + paths = compute_frac_paths_available(consensus, options, now, + &num_present, &num_usable, + NULL); - if (num_usable == 0) - return 0; /* don't div by 0 */ - fraction = num_present / (num_usable/4.); + fraction = paths / get_frac_paths_needed_for_circs(options,consensus); if (fraction > 1.0) return 0; /* it's not the number of descriptors holding us back */ return BOOTSTRAP_STATUS_LOADING_DESCRIPTORS + (int) diff --git a/src/or/ntmain.c b/src/or/ntmain.c index 2fa074d0be..e848314043 100644 --- a/src/or/ntmain.c +++ b/src/or/ntmain.c @@ -314,6 +314,7 @@ nt_service_main(void) case CMD_LIST_FINGERPRINT: case CMD_HASH_PASSWORD: case CMD_VERIFY_CONFIG: + case CMD_DUMP_CONFIG: log_err(LD_CONFIG, "Unsupported command (--list-fingerprint, " "--hash-password, or --verify-config) in NT service."); break; diff --git a/src/or/onion.c b/src/or/onion.c index d4a65022fc..3e1d63d4e2 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -14,6 +14,7 @@ #include "circuitlist.h" #include "config.h" #include "cpuworker.h" +#include "networkstatus.h" #include "onion.h" #include "onion_fast.h" #include "onion_ntor.h" @@ -21,13 +22,13 @@ #include "relay.h" #include "rephist.h" #include "router.h" -#include "tor_queue.h" /** Type for a linked list of circuits that are waiting for a free CPU worker * to process a waiting onion handshake. */ typedef struct onion_queue_t { TOR_TAILQ_ENTRY(onion_queue_t) next; or_circuit_t *circ; + uint16_t handshake_type; create_cell_t *onionskin; time_t when_added; } onion_queue_t; @@ -35,13 +36,19 @@ typedef struct onion_queue_t { /** 5 seconds on the onion queue til we just send back a destroy */ #define ONIONQUEUE_WAIT_CUTOFF 5 -/** Queue of circuits waiting for CPU workers, or NULL if the list is empty.*/ -TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t) ol_list = - TOR_TAILQ_HEAD_INITIALIZER(ol_list); +/** Array of queues of circuits waiting for CPU workers. An element is NULL + * if that queue is empty.*/ +TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t) + ol_list[MAX_ONION_HANDSHAKE_TYPE+1] = { + TOR_TAILQ_HEAD_INITIALIZER(ol_list[0]), /* tap */ + TOR_TAILQ_HEAD_INITIALIZER(ol_list[1]), /* fast */ + TOR_TAILQ_HEAD_INITIALIZER(ol_list[2]), /* ntor */ +}; -/** Number of entries of each type currently in ol_list. */ +/** Number of entries of each type currently in each element of ol_list[]. */ static int ol_entries[MAX_ONION_HANDSHAKE_TYPE+1]; +static int num_ntors_per_tap(void); static void onion_queue_entry_remove(onion_queue_t *victim); /* XXXX024 Check lengths vs MAX_ONIONSKIN_{CHALLENGE,REPLY}_LEN. @@ -51,7 +58,7 @@ static void onion_queue_entry_remove(onion_queue_t *victim); * MAX_ONIONSKIN_CHALLENGE/REPLY_LEN." Also, make sure that we can pass * over-large values via EXTEND2/EXTENDED2, for future-compatibility.*/ -/** Return true iff we have room to queue another oninoskin of type +/** Return true iff we have room to queue another onionskin of type * <b>type</b>. */ static int have_room_for_onionskin(uint16_t type) @@ -59,23 +66,51 @@ have_room_for_onionskin(uint16_t type) const or_options_t *options = get_options(); int num_cpus; uint64_t tap_usec, ntor_usec; + uint64_t ntor_during_tap_usec, tap_during_ntor_usec; + /* If we've got fewer than 50 entries, we always have room for one more. */ - if (ol_entries[ONION_HANDSHAKE_TYPE_TAP] + - ol_entries[ONION_HANDSHAKE_TYPE_NTOR] < 50) + if (ol_entries[type] < 50) return 1; num_cpus = get_num_cpus(options); /* Compute how many microseconds we'd expect to need to clear all - * onionskins in the current queue. */ + * onionskins in various combinations of the queues. */ + + /* How long would it take to process all the TAP cells in the queue? */ tap_usec = estimated_usec_for_onionskins( ol_entries[ONION_HANDSHAKE_TYPE_TAP], ONION_HANDSHAKE_TYPE_TAP) / num_cpus; + + /* How long would it take to process all the NTor cells in the queue? */ ntor_usec = estimated_usec_for_onionskins( ol_entries[ONION_HANDSHAKE_TYPE_NTOR], ONION_HANDSHAKE_TYPE_NTOR) / num_cpus; + + /* How long would it take to process the tap cells that we expect to + * process while draining the ntor queue? */ + tap_during_ntor_usec = estimated_usec_for_onionskins( + MIN(ol_entries[ONION_HANDSHAKE_TYPE_TAP], + ol_entries[ONION_HANDSHAKE_TYPE_NTOR] / num_ntors_per_tap()), + ONION_HANDSHAKE_TYPE_TAP) / num_cpus; + + /* How long would it take to process the ntor cells that we expect to + * process while draining the tap queue? */ + ntor_during_tap_usec = estimated_usec_for_onionskins( + MIN(ol_entries[ONION_HANDSHAKE_TYPE_NTOR], + ol_entries[ONION_HANDSHAKE_TYPE_TAP] * num_ntors_per_tap()), + ONION_HANDSHAKE_TYPE_NTOR) / num_cpus; + /* See whether that exceeds MaxOnionQueueDelay. If so, we can't queue * this. */ - if ((tap_usec + ntor_usec) / 1000 > (uint64_t)options->MaxOnionQueueDelay) + if (type == ONION_HANDSHAKE_TYPE_NTOR && + (ntor_usec + tap_during_ntor_usec) / 1000 > + (uint64_t)options->MaxOnionQueueDelay) + return 0; + + if (type == ONION_HANDSHAKE_TYPE_TAP && + (tap_usec + ntor_during_tap_usec) / 1000 > + (uint64_t)options->MaxOnionQueueDelay) return 0; + #ifdef CURVE25519_ENABLED /* If we support the ntor handshake, then don't let TAP handshakes use * more than 2/3 of the space on the queue. */ @@ -98,8 +133,15 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) onion_queue_t *tmp; time_t now = time(NULL); + if (onionskin->handshake_type > MAX_ONION_HANDSHAKE_TYPE) { + log_warn(LD_BUG, "Handshake %d out of range! Dropping.", + onionskin->handshake_type); + return -1; + } + tmp = tor_malloc_zero(sizeof(onion_queue_t)); tmp->circ = circ; + tmp->handshake_type = onionskin->handshake_type; tmp->onionskin = onionskin; tmp->when_added = now; @@ -108,7 +150,8 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) static ratelim_t last_warned = RATELIM_INIT(WARN_TOO_MANY_CIRC_CREATIONS_INTERVAL); char *m; - if ((m = rate_limit_log(&last_warned, approx_time()))) { + if (onionskin->handshake_type == ONION_HANDSHAKE_TYPE_NTOR && + (m = rate_limit_log(&last_warned, approx_time()))) { log_warn(LD_GENERAL, "Your computer is too slow to handle this many circuit " "creation requests! Please consider using the " @@ -121,12 +164,17 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) } ++ol_entries[onionskin->handshake_type]; + log_info(LD_OR, "New create (%s). Queues now ntor=%d and tap=%d.", + onionskin->handshake_type == ONION_HANDSHAKE_TYPE_NTOR ? "ntor" : "tap", + ol_entries[ONION_HANDSHAKE_TYPE_NTOR], + ol_entries[ONION_HANDSHAKE_TYPE_TAP]); + circ->onionqueue_entry = tmp; - TOR_TAILQ_INSERT_TAIL(&ol_list, tmp, next); + TOR_TAILQ_INSERT_TAIL(&ol_list[onionskin->handshake_type], tmp, next); /* cull elderly requests. */ while (1) { - onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list); + onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list[onionskin->handshake_type]); if (now - head->when_added < (time_t)ONIONQUEUE_WAIT_CUTOFF) break; @@ -140,24 +188,88 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) return 0; } -/** Remove the first item from ol_list and return it, or return - * NULL if the list is empty. +/** Return a fairness parameter, to prefer processing NTOR style + * handshakes but still slowly drain the TAP queue so we don't starve + * it entirely. */ +static int +num_ntors_per_tap(void) +{ +#define DEFAULT_NUM_NTORS_PER_TAP 10 +#define MIN_NUM_NTORS_PER_TAP 1 +#define MAX_NUM_NTORS_PER_TAP 100000 + + return networkstatus_get_param(NULL, "NumNTorsPerTAP", + DEFAULT_NUM_NTORS_PER_TAP, + MIN_NUM_NTORS_PER_TAP, + MAX_NUM_NTORS_PER_TAP); +} + +/** Choose which onion queue we'll pull from next. If one is empty choose + * the other; if they both have elements, load balance across them but + * favoring NTOR. */ +static uint16_t +decide_next_handshake_type(void) +{ + /* The number of times we've chosen ntor lately when both were available. */ + static int recently_chosen_ntors = 0; + + if (!ol_entries[ONION_HANDSHAKE_TYPE_NTOR]) + return ONION_HANDSHAKE_TYPE_TAP; /* no ntors? try tap */ + + if (!ol_entries[ONION_HANDSHAKE_TYPE_TAP]) { + + /* Nick wants us to prioritize new tap requests when there aren't + * any in the queue and we've processed k ntor cells since the last + * tap cell. This strategy is maybe a good idea, since it starves tap + * less in the case where tap is rare, or maybe a poor idea, since it + * makes the new tap cell unfairly jump in front of ntor cells that + * got here first. In any case this edge case will only become relevant + * once tap is rare. We should reevaluate whether we like this decision + * once tap gets more rare. */ + if (ol_entries[ONION_HANDSHAKE_TYPE_NTOR] && + recently_chosen_ntors <= num_ntors_per_tap()) + ++recently_chosen_ntors; + + return ONION_HANDSHAKE_TYPE_NTOR; /* no taps? try ntor */ + } + + /* They both have something queued. Pick ntor if we haven't done that + * too much lately. */ + if (++recently_chosen_ntors <= num_ntors_per_tap()) { + return ONION_HANDSHAKE_TYPE_NTOR; + } + + /* Else, it's time to let tap have its turn. */ + recently_chosen_ntors = 0; + return ONION_HANDSHAKE_TYPE_TAP; +} + +/** Remove the highest priority item from ol_list[] and return it, or + * return NULL if the lists are empty. */ or_circuit_t * onion_next_task(create_cell_t **onionskin_out) { or_circuit_t *circ; - onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list); + uint16_t handshake_to_choose = decide_next_handshake_type(); + onion_queue_t *head = TOR_TAILQ_FIRST(&ol_list[handshake_to_choose]); if (!head) return NULL; /* no onions pending, we're done */ tor_assert(head->circ); - tor_assert(head->circ->p_chan); /* make sure it's still valid */ + tor_assert(head->handshake_type <= MAX_ONION_HANDSHAKE_TYPE); +// tor_assert(head->circ->p_chan); /* make sure it's still valid */ +/* XXX I only commented out the above line to make the unit tests + * more manageable. That's probably not good long-term. -RD */ circ = head->circ; - if (head->onionskin && - head->onionskin->handshake_type <= MAX_ONION_HANDSHAKE_TYPE) - --ol_entries[head->onionskin->handshake_type]; + if (head->onionskin) + --ol_entries[head->handshake_type]; + log_info(LD_OR, "Processing create (%s). Queues now ntor=%d and tap=%d.", + head->handshake_type == ONION_HANDSHAKE_TYPE_NTOR ? "ntor" : "tap", + ol_entries[ONION_HANDSHAKE_TYPE_NTOR], + ol_entries[ONION_HANDSHAKE_TYPE_TAP]); + *onionskin_out = head->onionskin; head->onionskin = NULL; /* prevent free. */ circ->onionqueue_entry = NULL; @@ -165,6 +277,14 @@ onion_next_task(create_cell_t **onionskin_out) return circ; } +/** Return the number of <b>handshake_type</b>-style create requests pending. + */ +int +onion_num_pending(uint16_t handshake_type) +{ + return ol_entries[handshake_type]; +} + /** Go through ol_list, find the onion_queue_t element which points to * circ, remove and free that element. Leave circ itself alone. */ @@ -186,14 +306,20 @@ onion_pending_remove(or_circuit_t *circ) static void onion_queue_entry_remove(onion_queue_t *victim) { - TOR_TAILQ_REMOVE(&ol_list, victim, next); + if (victim->handshake_type > MAX_ONION_HANDSHAKE_TYPE) { + log_warn(LD_BUG, "Handshake %d out of range! Dropping.", + victim->handshake_type); + /* XXX leaks */ + return; + } + + TOR_TAILQ_REMOVE(&ol_list[victim->handshake_type], victim, next); if (victim->circ) victim->circ->onionqueue_entry = NULL; - if (victim->onionskin && - victim->onionskin->handshake_type <= MAX_ONION_HANDSHAKE_TYPE) - --ol_entries[victim->onionskin->handshake_type]; + if (victim->onionskin) + --ol_entries[victim->handshake_type]; tor_free(victim->onionskin); tor_free(victim); @@ -204,8 +330,11 @@ void clear_pending_onions(void) { onion_queue_t *victim; - while ((victim = TOR_TAILQ_FIRST(&ol_list))) { - onion_queue_entry_remove(victim); + int i; + for (i=0; i<=MAX_ONION_HANDSHAKE_TYPE; i++) { + while ((victim = TOR_TAILQ_FIRST(&ol_list[i]))) { + onion_queue_entry_remove(victim); + } } memset(ol_entries, 0, sizeof(ol_entries)); } @@ -514,6 +643,22 @@ check_create_cell(const create_cell_t *cell, int unknown_ok) return 0; } +/** Write the various parameters into the create cell. Separate from + * create_cell_parse() to make unit testing easier. + */ +void +create_cell_init(create_cell_t *cell_out, uint8_t cell_type, + uint16_t handshake_type, uint16_t handshake_len, + const uint8_t *onionskin) +{ + memset(cell_out, 0, sizeof(*cell_out)); + + cell_out->cell_type = cell_type; + cell_out->handshake_type = handshake_type; + cell_out->handshake_len = handshake_len; + memcpy(cell_out->onionskin, onionskin, handshake_len); +} + /** Helper: parse the CREATE2 payload at <b>p</b>, which could be up to * <b>p_len</b> bytes long, and use it to fill the fields of * <b>cell_out</b>. Return 0 on success and -1 on failure. @@ -524,17 +669,21 @@ check_create_cell(const create_cell_t *cell, int unknown_ok) static int parse_create2_payload(create_cell_t *cell_out, const uint8_t *p, size_t p_len) { + uint16_t handshake_type, handshake_len; + if (p_len < 4) return -1; - cell_out->cell_type = CELL_CREATE2; - cell_out->handshake_type = ntohs(get_uint16(p)); - cell_out->handshake_len = ntohs(get_uint16(p+2)); - if (cell_out->handshake_len > CELL_PAYLOAD_SIZE - 4 || - cell_out->handshake_len > p_len - 4) + + handshake_type = ntohs(get_uint16(p)); + handshake_len = ntohs(get_uint16(p+2)); + + if (handshake_len > CELL_PAYLOAD_SIZE - 4 || handshake_len > p_len - 4) return -1; - if (cell_out->handshake_type == ONION_HANDSHAKE_TYPE_FAST) + if (handshake_type == ONION_HANDSHAKE_TYPE_FAST) return -1; - memcpy(cell_out->onionskin, p+4, cell_out->handshake_len); + + create_cell_init(cell_out, CELL_CREATE2, handshake_type, handshake_len, + p+4); return 0; } @@ -552,27 +701,19 @@ parse_create2_payload(create_cell_t *cell_out, const uint8_t *p, size_t p_len) int create_cell_parse(create_cell_t *cell_out, const cell_t *cell_in) { - memset(cell_out, 0, sizeof(*cell_out)); - switch (cell_in->command) { case CELL_CREATE: - cell_out->cell_type = CELL_CREATE; if (tor_memeq(cell_in->payload, NTOR_CREATE_MAGIC, 16)) { - cell_out->handshake_type = ONION_HANDSHAKE_TYPE_NTOR; - cell_out->handshake_len = NTOR_ONIONSKIN_LEN; - memcpy(cell_out->onionskin, cell_in->payload+16, NTOR_ONIONSKIN_LEN); + create_cell_init(cell_out, CELL_CREATE, ONION_HANDSHAKE_TYPE_NTOR, + NTOR_ONIONSKIN_LEN, cell_in->payload+16); } else { - cell_out->handshake_type = ONION_HANDSHAKE_TYPE_TAP; - cell_out->handshake_len = TAP_ONIONSKIN_CHALLENGE_LEN; - memcpy(cell_out->onionskin, cell_in->payload, - TAP_ONIONSKIN_CHALLENGE_LEN); + create_cell_init(cell_out, CELL_CREATE, ONION_HANDSHAKE_TYPE_TAP, + TAP_ONIONSKIN_CHALLENGE_LEN, cell_in->payload); } break; case CELL_CREATE_FAST: - cell_out->cell_type = CELL_CREATE_FAST; - cell_out->handshake_type = ONION_HANDSHAKE_TYPE_FAST; - cell_out->handshake_len = CREATE_FAST_LEN; - memcpy(cell_out->onionskin, cell_in->payload, CREATE_FAST_LEN); + create_cell_init(cell_out, CELL_CREATE_FAST, ONION_HANDSHAKE_TYPE_FAST, + CREATE_FAST_LEN, cell_in->payload); break; case CELL_CREATE2: if (parse_create2_payload(cell_out, cell_in->payload, @@ -728,7 +869,7 @@ extend_cell_parse(extend_cell_t *cell_out, const uint8_t command, cell_out->cell_type = RELAY_COMMAND_EXTEND2; ++payload; /* Parse the specifiers. We'll only take the first IPv4 and first IPv6 - * addres, and the node ID, and ignore everything else */ + * address, and the node ID, and ignore everything else */ for (i = 0; i < n_specs; ++i) { if (eop - payload < 2) return -1; diff --git a/src/or/onion.h b/src/or/onion.h index db4c999c9e..d62f032b87 100644 --- a/src/or/onion.h +++ b/src/or/onion.h @@ -15,6 +15,7 @@ struct create_cell_t; int onion_pending_add(or_circuit_t *circ, struct create_cell_t *onionskin); or_circuit_t *onion_next_task(struct create_cell_t **onionskin_out); +int onion_num_pending(uint16_t handshake_type); void onion_pending_remove(or_circuit_t *circ); void clear_pending_onions(void); @@ -99,6 +100,9 @@ typedef struct extended_cell_t { created_cell_t created_cell; } extended_cell_t; +void create_cell_init(create_cell_t *cell_out, uint8_t cell_type, + uint16_t handshake_type, uint16_t handshake_len, + const uint8_t *onionskin); int create_cell_parse(create_cell_t *cell_out, const cell_t *cell_in); int created_cell_parse(created_cell_t *cell_out, const cell_t *cell_in); int extend_cell_parse(extend_cell_t *cell_out, const uint8_t command, diff --git a/src/or/onion_fast.c b/src/or/onion_fast.c index aa034a8bd6..8e778dbc63 100644 --- a/src/or/onion_fast.c +++ b/src/or/onion_fast.c @@ -22,7 +22,7 @@ fast_handshake_state_free(fast_handshake_state_t *victim) tor_free(victim); } -/** Create the state needed to perform a CREATE_FAST hasnshake. Return 0 +/** Create the state needed to perform a CREATE_FAST handshake. Return 0 * on success, -1 on failure. */ int fast_onionskin_create(fast_handshake_state_t **handshake_state_out, diff --git a/src/or/or.h b/src/or/or.h index 06363fa360..6b18f13285 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -228,8 +228,14 @@ typedef enum { #define CONN_TYPE_AP_NATD_LISTENER 14 /** Type for sockets listening for DNS requests. */ #define CONN_TYPE_AP_DNS_LISTENER 15 -#define CONN_TYPE_MAX_ 15 -/* !!!! If CONN_TYPE_MAX_ is ever over 15, we must grow the type field in + +/** Type for connections from the Extended ORPort. */ +#define CONN_TYPE_EXT_OR 16 +/** Type for sockets listening for Extended ORPort connections. */ +#define CONN_TYPE_EXT_OR_LISTENER 17 + +#define CONN_TYPE_MAX_ 17 +/* !!!! If _CONN_TYPE_MAX is ever over 31, we must grow the type field in * connection_t. */ /* Proxy client types */ @@ -309,6 +315,25 @@ typedef enum { #define OR_CONN_STATE_OPEN 8 #define OR_CONN_STATE_MAX_ 8 +/** States of the Extended ORPort protocol. Be careful before changing + * the numbers: they matter. */ +#define EXT_OR_CONN_STATE_MIN_ 1 +/** Extended ORPort authentication is waiting for the authentication + * type selected by the client. */ +#define EXT_OR_CONN_STATE_AUTH_WAIT_AUTH_TYPE 1 +/** Extended ORPort authentication is waiting for the client nonce. */ +#define EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE 2 +/** Extended ORPort authentication is waiting for the client hash. */ +#define EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH 3 +#define EXT_OR_CONN_STATE_AUTH_MAX 3 +/** Authentication finished and the Extended ORPort is now accepting + * traffic. */ +#define EXT_OR_CONN_STATE_OPEN 4 +/** Extended ORPort is flushing its last messages and preparing to + * start accepting OR connections. */ +#define EXT_OR_CONN_STATE_FLUSHING 5 +#define EXT_OR_CONN_STATE_MAX_ 5 + #define EXIT_CONN_STATE_MIN_ 1 /** State for an exit connection: waiting for response from DNS farm. */ #define EXIT_CONN_STATE_RESOLVING 1 @@ -855,6 +880,7 @@ typedef enum { #define CELL_AUTH_CHALLENGE 130 #define CELL_AUTHENTICATE 131 #define CELL_AUTHORIZE 132 +#define CELL_COMMAND_MAX_ 132 /** How long to test reachability before complaining to the user. */ #define TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT (20*60) @@ -1082,13 +1108,25 @@ typedef struct var_cell_t { uint8_t payload[FLEXIBLE_ARRAY_MEMBER]; } var_cell_t; +/** A parsed Extended ORPort message. */ +typedef struct ext_or_cmd_t { + uint16_t cmd; /** Command type */ + uint16_t len; /** Body length */ + char body[FLEXIBLE_ARRAY_MEMBER]; /** Message body */ +} ext_or_cmd_t; + /** A cell as packed for writing to the network. */ typedef struct packed_cell_t { /** Next cell queued on this circuit. */ TOR_SIMPLEQ_ENTRY(packed_cell_t) next; char body[CELL_MAX_NETWORK_SIZE]; /**< Cell as packed for network. */ + uint32_t inserted_time; /**< Time (in milliseconds since epoch, with high + * bits truncated) when this cell was inserted. */ } packed_cell_t; +/* XXXX This next structure may be obsoleted by inserted_time in + * packed_cell_t */ + /** Number of cells added to a circuit queue including their insertion * time on 10 millisecond detail; used for buffer statistics. */ typedef struct insertion_time_elem_t { @@ -1104,6 +1142,21 @@ typedef struct insertion_time_queue_t { struct insertion_time_elem_t *last; /**< Last element in queue. */ } insertion_time_queue_t; +/** Number of cells with the same command consecutively added to a circuit + * queue; used for cell statistics only if CELL_STATS events are enabled. */ +typedef struct insertion_command_elem_t { + struct insertion_command_elem_t *next; /**< Next element in queue. */ + /** Which command did these consecutively added cells have? */ + uint8_t command; + unsigned counter; /**< How many cells were inserted? */ +} insertion_command_elem_t; + +/** Queue of insertion commands. */ +typedef struct insertion_command_queue_t { + struct insertion_command_elem_t *first; /**< First element in queue. */ + struct insertion_command_elem_t *last; /**< Last element in queue. */ +} insertion_command_queue_t; + /** A queue of cells on a circuit, waiting to be added to the * or_connection_t's outbuf. */ typedef struct cell_queue_t { @@ -1111,6 +1164,8 @@ typedef struct cell_queue_t { TOR_SIMPLEQ_HEAD(cell_simpleq, packed_cell_t) head; int n; /**< The number of cells in the queue. */ insertion_time_queue_t *insertion_times; /**< Insertion times of cells. */ + /** Commands of inserted cells. */ + insertion_command_queue_t *insertion_commands; } cell_queue_t; /** Beginning of a RELAY cell payload. */ @@ -1163,7 +1218,7 @@ typedef struct connection_t { * *_CONNECTION_MAGIC. */ uint8_t state; /**< Current state of this connection. */ - unsigned int type:4; /**< What kind of connection is this? */ + unsigned int type:5; /**< What kind of connection is this? */ unsigned int purpose:5; /**< Only used for DIR and EXIT types currently. */ /* The next fields are all one-bit booleans. Some are only applicable to @@ -1247,6 +1302,14 @@ typedef struct connection_t { /** Unique identifier for this connection on this Tor instance. */ uint64_t global_identifier; + + /** Bytes read since last call to control_event_conn_bandwidth_used(). + * Only used if we're configured to emit CONN_BW events. */ + uint32_t n_read_conn_bw; + + /** Bytes written since last call to control_event_conn_bandwidth_used(). + * Only used if we're configured to emit CONN_BW events. */ + uint32_t n_written_conn_bw; } connection_t; /** Subtype of connection_t; used for a listener socket. */ @@ -1367,6 +1430,9 @@ typedef struct or_handshake_state_t { /* True iff we've received valid authentication to some identity. */ unsigned int authenticated : 1; + /* True iff we have sent a netinfo cell */ + unsigned int sent_netinfo : 1; + /** True iff we should feed outgoing cells into digest_sent and * digest_received respectively. * @@ -1405,6 +1471,9 @@ typedef struct or_handshake_state_t { /**@}*/ } or_handshake_state_t; +/** Length of Extended ORPort connection identifier. */ +#define EXT_OR_CONN_ID_LEN DIGEST_LEN /* 20 */ + /** Subtype of connection_t for an "OR connection" -- that is, one that speaks * cells over TLS. */ typedef struct or_connection_t { @@ -1413,6 +1482,20 @@ typedef struct or_connection_t { /** Hash of the public RSA key for the other side's identity key, or zeroes * if the other side hasn't shown us a valid identity key. */ char identity_digest[DIGEST_LEN]; + + /** Extended ORPort connection identifier. */ + char *ext_or_conn_id; + /** This is the ClientHash value we expect to receive from the + * client during the Extended ORPort authentication protocol. We + * compute it upon receiving the ClientNoce from the client, and we + * compare it with the acual ClientHash value sent by the + * client. */ + char *ext_or_auth_correct_client_hash; + /** String carrying the name of the pluggable transport + * (e.g. "obfs2") that is obfuscating this connection. If no + * pluggable transports are used, it's NULL. */ + char *ext_or_transport; + char *nickname; /**< Nickname of OR on other side (if any). */ tor_tls_t *tls; /**< TLS connection state. */ @@ -1470,6 +1553,12 @@ typedef struct or_connection_t { struct or_connection_t *next_with_same_id; /**< Next connection with same * identity digest as this one. */ + /** Last emptied read token bucket in msec since midnight; only used if + * TB_EMPTY events are enabled. */ + uint32_t read_emptied_time; + /** Last emptied write token bucket in msec since midnight; only used if + * TB_EMPTY events are enabled. */ + uint32_t write_emptied_time; } or_connection_t; /** Subtype of connection_t for an "edge connection" -- that is, an entry (ap) @@ -2733,6 +2822,19 @@ typedef struct { struct create_cell_t; +/** Entry in the cell stats list of a circuit; used only if CELL_STATS + * events are enabled. */ +typedef struct testing_cell_stats_entry_t { + uint8_t command; /**< cell command number. */ + /** Waiting time in centiseconds if this event is for a removed cell, + * or 0 if this event is for adding a cell to the queue. 22 bits can + * store more than 11 hours, enough to assume that a circuit with this + * delay would long have been closed. */ + unsigned int waiting_time:22; + unsigned int removed:1; /**< 0 for added to, 1 for removed from queue. */ + unsigned int exitward:1; /**< 0 for app-ward, 1 for exit-ward. */ +} testing_cell_stats_entry_t; + /** * A circuit is a path over the onion routing * network. Applications can connect to one end of the circuit, and can @@ -2801,6 +2903,9 @@ typedef struct circuit_t { * it on the output buffer. */ unsigned int n_delete_pending : 1; + /** True iff this circuit has received a DESTROY cell in either direction */ + unsigned int received_destroy : 1; + uint8_t state; /**< Current status of this circuit. */ uint8_t purpose; /**< Why are we creating this circuit? */ @@ -2855,7 +2960,8 @@ typedef struct circuit_t { /** Unique ID for measuring tunneled network status requests. */ uint64_t dirreq_id; - struct circuit_t *next; /**< Next circuit in linked list of all circuits. */ + /** Next circuit in linked list of all circuits (global_circuitlist). */ + TOR_LIST_ENTRY(circuit_t) head; /** Next circuit in the doubly-linked ring of circuits waiting to add * cells to n_conn. NULL if we have no cells pending, or if we're not @@ -2865,6 +2971,11 @@ typedef struct circuit_t { * cells to n_conn. NULL if we have no cells pending, or if we're not * linked to an OR connection. */ struct circuit_t *prev_active_on_n_chan; + + /** Various statistics about cells being added to or removed from this + * circuit's queues; used only if CELL_STATS events are enabled and + * cleared after being sent to control port. */ + smartlist_t *testing_cell_stats; } circuit_t; /** Largest number of relay_early cells that we can send on a given @@ -2935,6 +3046,17 @@ typedef struct origin_circuit_t { /** Linked list of AP streams (or EXIT streams if hidden service) * associated with this circuit. */ edge_connection_t *p_streams; + + /** Bytes read from any attached stream since last call to + * control_event_circ_bandwidth_used(). Only used if we're configured + * to emit CIRC_BW events. */ + uint32_t n_read_circ_bw; + + /** Bytes written to any attached stream since last call to + * control_event_circ_bandwidth_used(). Only used if we're configured + * to emit CIRC_BW events. */ + uint32_t n_written_circ_bw; + /** Build state for this circuit. It includes the intended path * length, the chosen exit router, rendezvous information, etc. */ @@ -3345,9 +3467,9 @@ typedef struct { /** What should the tor process actually do? */ enum { CMD_RUN_TOR=0, CMD_LIST_FINGERPRINT, CMD_HASH_PASSWORD, - CMD_VERIFY_CONFIG, CMD_RUN_UNITTESTS + CMD_VERIFY_CONFIG, CMD_RUN_UNITTESTS, CMD_DUMP_CONFIG } command; - const char *command_arg; /**< Argument for command-line option. */ + char *command_arg; /**< Argument for command-line option. */ config_line_t *Logs; /**< New-style list of configuration lines * for logs */ @@ -3428,6 +3550,8 @@ typedef struct { char *User; /**< Name of user to run Tor as. */ char *Group; /**< Name of group to run Tor as. */ config_line_t *ORPort_lines; /**< Ports to listen on for OR connections. */ + /** Ports to listen on for extended OR connections. */ + config_line_t *ExtORPort_lines; /** Ports to listen on for SOCKS connections. */ config_line_t *SocksPort_lines; /** Ports to listen on for transparent pf/netfilter connections. */ @@ -3463,6 +3587,7 @@ typedef struct { unsigned int ControlPort_set : 1; unsigned int DirPort_set : 1; unsigned int DNSPort_set : 1; + unsigned int ExtORPort_set : 1; /**@}*/ int AssumeReachable; /**< Whether to publish our descriptor regardless. */ @@ -3742,7 +3867,10 @@ typedef struct { int CookieAuthentication; /**< Boolean: do we enable cookie-based auth for * the control system? */ - char *CookieAuthFile; /**< Location of a cookie authentication file. */ + char *CookieAuthFile; /**< Filesystem location of a ControlPort + * authentication cookie. */ + char *ExtORPortCookieAuthFile; /**< Filesystem location of Extended + * ORPort authentication cookie. */ int CookieAuthFileGroupReadable; /**< Boolean: Is the CookieAuthFile g+r? */ int LeaveStreamsUnattached; /**< Boolean: Does Tor attach new streams to * circuits itself (0), or does it expect a controller @@ -3784,7 +3912,8 @@ typedef struct { int NumEntryGuards; /**< How many entry guards do we try to establish? */ int UseEntryGuardsAsDirGuards; /** Boolean: Do we try to get directory info * from a smallish number of fixed nodes? */ - int NumDirectoryGuards; /**< How many dir guards do we try to establish? */ + int NumDirectoryGuards; /**< How many dir guards do we try to establish? + * If 0, use value from NumEntryGuards. */ int RephistTrackTime; /**< How many seconds do we keep rephist info? */ int FastFirstHopPK; /**< If Tor believes it is safe, should we save a third * of our PK time by sending CREATE_FAST cells? */ @@ -4005,6 +4134,19 @@ typedef struct { /** Minimum value for the Fast flag threshold on testing networks. */ uint64_t TestingMinFastFlagThreshold; + /** Relays in a testing network which should be voted Guard + * regardless of uptime and bandwidth. */ + routerset_t *TestingDirAuthVoteGuard; + + /** Enable CONN_BW events. Only altered on testing networks. */ + int TestingEnableConnBwEvent; + + /** Enable CELL_STATS events. Only altered on testing networks. */ + int TestingEnableCellStatsEvent; + + /** Enable TB_EMPTY events. Only altered on testing networks. */ + int TestingEnableTbEmptyEvent; + /** If true, and we have GeoIP data, and we're a bridge, keep a per-country * count of how many client addresses have contacted us so that we can help * the bridge authority guess which countries have blocked access to us. */ @@ -4159,6 +4301,9 @@ typedef struct { /** How long (seconds) do we keep a guard before picking a new one? */ int GuardLifetime; + + /** Should we send the timestamps that pre-023 hidden services want? */ + int Support022HiddenServices; } or_options_t; /** Persistent state for an onion router, as saved to disk. */ @@ -4414,30 +4559,7 @@ typedef struct { int after_firsthop_idx; } network_liveness_t; -/** Structure for circuit build times history */ -typedef struct { - /** The circular array of recorded build times in milliseconds */ - build_time_t circuit_build_times[CBT_NCIRCUITS_TO_OBSERVE]; - /** Current index in the circuit_build_times circular array */ - int build_times_idx; - /** Total number of build times accumulated. Max CBT_NCIRCUITS_TO_OBSERVE */ - int total_build_times; - /** Information about the state of our local network connection */ - network_liveness_t liveness; - /** Last time we built a circuit. Used to decide to build new test circs */ - time_t last_circ_at; - /** "Minimum" value of our pareto distribution (actually mode) */ - build_time_t Xm; - /** alpha exponent for pareto dist. */ - double alpha; - /** Have we computed a timeout? */ - int have_computed_timeout; - /** The exact value for that timeout in milliseconds. Stored as a double - * to maintain precision from calculations to and from quantile value. */ - double timeout_ms; - /** How long we wait before actually closing the circuit. */ - double close_ms; -} circuit_build_times_t; +typedef struct circuit_build_times_s circuit_build_times_t; /********************************* config.c ***************************/ diff --git a/src/or/policies.h b/src/or/policies.h index c0e7a9efce..facbbb6b5a 100644 --- a/src/or/policies.h +++ b/src/or/policies.h @@ -12,10 +12,11 @@ #ifndef TOR_POLICIES_H #define TOR_POLICIES_H -/* (length of "accept 255.255.255.255/255.255.255.255:65535-65535\n" plus a - * NUL.) +/* (length of + * "accept6 [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]/128:65535-65535\n" + * plus a terminating NUL, rounded up to a nice number.) */ -#define POLICY_BUF_LEN 52 +#define POLICY_BUF_LEN 72 int firewall_is_fascist_or(void); int fascist_firewall_allows_address_or(const tor_addr_t *addr, uint16_t port); diff --git a/src/or/relay.c b/src/or/relay.c index 297f0f69e0..0c9267a9a5 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -15,6 +15,7 @@ #include "addressmap.h" #include "buffers.h" #include "channel.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" @@ -1106,8 +1107,10 @@ connection_edge_process_relay_cell_not_open( control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_STATUS, 0); break; case DIR_PURPOSE_FETCH_SERVERDESC: - control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS, - count_loading_descriptors_progress()); + case DIR_PURPOSE_FETCH_MICRODESC: + if (TO_DIR_CONN(dirconn)->router_purpose == ROUTER_PURPOSE_GENERAL) + control_event_bootstrap(BOOTSTRAP_STATUS_LOADING_DESCRIPTORS, + count_loading_descriptors_progress()); break; } } @@ -2048,6 +2051,10 @@ static mp_pool_t *cell_pool = NULL; * statistics. */ static mp_pool_t *it_pool = NULL; +/** Memory pool to allocate insertion_command_elem_t objects used for cell + * statistics if CELL_STATS events are enabled. */ +static mp_pool_t *ic_pool = NULL; + /** Allocate structures to hold cells. */ void init_cell_pool(void) @@ -2056,8 +2063,8 @@ init_cell_pool(void) cell_pool = mp_pool_new(sizeof(packed_cell_t), 128*1024); } -/** Free all storage used to hold cells (and insertion times if we measure - * cell statistics). */ +/** Free all storage used to hold cells (and insertion times/commands if we + * measure cell statistics and/or if CELL_STATS events are enabled). */ void free_cell_pool(void) { @@ -2070,6 +2077,10 @@ free_cell_pool(void) mp_pool_destroy(it_pool); it_pool = NULL; } + if (ic_pool) { + mp_pool_destroy(ic_pool); + ic_pool = NULL; + } } /** Free excess storage in cell pool. */ @@ -2113,7 +2124,7 @@ dump_cell_pool_usage(int severity) circuit_t *c; int n_circs = 0; int n_cells = 0; - for (c = circuit_get_global_list_(); c; c = c->next) { + TOR_LIST_FOREACH(c, circuit_get_global_list(), head) { n_cells += c->n_chan_cells.n; if (!CIRCUIT_IS_ORIGIN(c)) n_cells += TO_OR_CIRCUIT(c)->p_chan_cells.n; @@ -2142,20 +2153,81 @@ cell_queue_append(cell_queue_t *queue, packed_cell_t *cell) ++queue->n; } -/** Append a newly allocated copy of <b>cell</b> to the end of <b>queue</b> */ +/** Append command of type <b>command</b> in direction to <b>queue</b> for + * CELL_STATS event. */ +static void +cell_command_queue_append(cell_queue_t *queue, uint8_t command) +{ + insertion_command_queue_t *ic_queue = queue->insertion_commands; + if (!ic_pool) + ic_pool = mp_pool_new(sizeof(insertion_command_elem_t), 1024); + if (!ic_queue) { + ic_queue = tor_malloc_zero(sizeof(insertion_command_queue_t)); + queue->insertion_commands = ic_queue; + } + if (ic_queue->last && ic_queue->last->command == command) { + ic_queue->last->counter++; + } else { + insertion_command_elem_t *elem = mp_pool_get(ic_pool); + elem->next = NULL; + elem->command = command; + elem->counter = 1; + if (ic_queue->last) { + ic_queue->last->next = elem; + ic_queue->last = elem; + } else { + ic_queue->first = ic_queue->last = elem; + } + } +} + +/** Retrieve oldest command from <b>queue</b> and write it to + * <b>command</b> for CELL_STATS event. Return 0 for success, -1 + * otherwise. */ +static int +cell_command_queue_pop(uint8_t *command, cell_queue_t *queue) +{ + int res = -1; + insertion_command_queue_t *ic_queue = queue->insertion_commands; + if (ic_queue && ic_queue->first) { + insertion_command_elem_t *ic_elem = ic_queue->first; + ic_elem->counter--; + if (ic_elem->counter < 1) { + ic_queue->first = ic_elem->next; + if (ic_elem == ic_queue->last) + ic_queue->last = NULL; + mp_pool_release(ic_elem); + } + *command = ic_elem->command; + res = 0; + } + return res; +} + +/** Append a newly allocated copy of <b>cell</b> to the end of the + * <b>exitward</b> (or app-ward) <b>queue</b> of <b>circ</b>. If + * <b>use_stats</b> is true, record statistics about the cell. + */ void -cell_queue_append_packed_copy(cell_queue_t *queue, const cell_t *cell, +cell_queue_append_packed_copy(circuit_t *circ, cell_queue_t *queue, + int exitward, const cell_t *cell, int wide_circ_ids, int use_stats) { + struct timeval now; packed_cell_t *copy = packed_cell_copy(cell, wide_circ_ids); + tor_gettimeofday_cached(&now); + copy->inserted_time = (uint32_t)tv_to_msec(&now); + /* Remember the time when this cell was put in the queue. */ - if (get_options()->CellStatistics && use_stats) { + /*XXXX This may be obsoleted by inserted_time */ + if ((get_options()->CellStatistics || + get_options()->TestingEnableCellStatsEvent) && use_stats) { struct timeval now; uint32_t added; insertion_time_queue_t *it_queue = queue->insertion_times; if (!it_pool) it_pool = mp_pool_new(sizeof(insertion_time_elem_t), 1024); - tor_gettimeofday_cached(&now); + #define SECONDS_IN_A_DAY 86400L added = (uint32_t)(((now.tv_sec % SECONDS_IN_A_DAY) * 100L) + ((uint32_t)now.tv_usec / (uint32_t)10000L)); @@ -2178,6 +2250,18 @@ cell_queue_append_packed_copy(cell_queue_t *queue, const cell_t *cell, } } } + /* Remember that we added a cell to the queue, and remember the cell + * command. */ + if (get_options()->TestingEnableCellStatsEvent && circ) { + testing_cell_stats_entry_t *ent = + tor_malloc_zero(sizeof(testing_cell_stats_entry_t)); + ent->command = cell->command; + ent->exitward = exitward; + if (!circ->testing_cell_stats) + circ->testing_cell_stats = smartlist_new(); + smartlist_add(circ->testing_cell_stats, ent); + cell_command_queue_append(queue, cell->command); + } cell_queue_append(queue, copy); } @@ -2419,7 +2503,8 @@ channel_flush_from_first_active_circuit(channel_t *chan, int max) cell = cell_queue_pop(queue); /* Calculate the exact time that this cell has spent in the queue. */ - if (get_options()->CellStatistics && !CIRCUIT_IS_ORIGIN(circ)) { + if (get_options()->CellStatistics || + get_options()->TestingEnableCellStatsEvent) { struct timeval tvnow; uint32_t flushed; uint32_t cell_waiting_time; @@ -2433,7 +2518,6 @@ channel_flush_from_first_active_circuit(channel_t *chan, int max) "recently enabled."); } else { insertion_time_elem_t *elem = it_queue->first; - or_circ = TO_OR_CIRCUIT(circ); cell_waiting_time = (uint32_t)((flushed * 10L + SECONDS_IN_A_DAY * 1000L - elem->insertion_time * 10L) % @@ -2446,8 +2530,30 @@ channel_flush_from_first_active_circuit(channel_t *chan, int max) it_queue->last = NULL; mp_pool_release(elem); } - or_circ->total_cell_waiting_time += cell_waiting_time; - or_circ->processed_cells++; + if (get_options()->CellStatistics && !CIRCUIT_IS_ORIGIN(circ)) { + or_circ = TO_OR_CIRCUIT(circ); + or_circ->total_cell_waiting_time += cell_waiting_time; + or_circ->processed_cells++; + } + if (get_options()->TestingEnableCellStatsEvent) { + uint8_t command; + if (cell_command_queue_pop(&command, queue) < 0) { + log_info(LD_GENERAL, "Cannot determine command of cell. " + "Looks like the CELL_STATS event was " + "recently enabled."); + } else { + testing_cell_stats_entry_t *ent = + tor_malloc_zero(sizeof(testing_cell_stats_entry_t)); + ent->command = command; + ent->waiting_time = (unsigned int)cell_waiting_time / 10; + ent->removed = 1; + if (circ->n_chan == chan) + ent->exitward = 1; + if (!circ->testing_cell_stats) + circ->testing_cell_stats = smartlist_new(); + smartlist_add(circ->testing_cell_stats, ent); + } + } } } @@ -2522,10 +2628,12 @@ append_cell_to_circuit_queue(circuit_t *circ, channel_t *chan, uint32_t tgt_max_middle_cells, p_len, n_len, tmp, hard_max_middle_cells; #endif + int exitward; if (circ->marked_for_close) return; - if (direction == CELL_DIRECTION_OUT) { + exitward = (direction == CELL_DIRECTION_OUT); + if (exitward) { queue = &circ->n_chan_cells; streams_blocked = circ->streams_blocked_on_n_chan; } else { @@ -2616,7 +2724,8 @@ append_cell_to_circuit_queue(circuit_t *circ, channel_t *chan, } #endif - cell_queue_append_packed_copy(queue, cell, chan->wide_circ_ids, 1); + cell_queue_append_packed_copy(circ, queue, exitward, cell, + chan->wide_circ_ids, 1); if (PREDICT_UNLIKELY(cell_queues_check_size())) { /* We ran the OOM handler */ diff --git a/src/or/relay.h b/src/or/relay.h index e1b5e381ed..20eecfb400 100644 --- a/src/or/relay.h +++ b/src/or/relay.h @@ -54,7 +54,8 @@ void packed_cell_free(packed_cell_t *cell); void cell_queue_init(cell_queue_t *queue); void cell_queue_clear(cell_queue_t *queue); void cell_queue_append(cell_queue_t *queue, packed_cell_t *cell); -void cell_queue_append_packed_copy(cell_queue_t *queue, const cell_t *cell, +void cell_queue_append_packed_copy(circuit_t *circ, cell_queue_t *queue, + int exitward, const cell_t *cell, int wide_circ_ids, int use_stats); void append_cell_to_circuit_queue(circuit_t *circ, channel_t *chan, diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 7115bf2080..f00303f189 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -8,6 +8,7 @@ **/ #include "or.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" @@ -16,6 +17,7 @@ #include "connection_edge.h" #include "directory.h" #include "main.h" +#include "networkstatus.h" #include "nodelist.h" #include "relay.h" #include "rendclient.h" @@ -127,6 +129,16 @@ rend_client_reextend_intro_circuit(origin_circuit_t *circ) return result; } +/** Return true iff we should send timestamps in our INTRODUCE1 cells */ +static int +rend_client_should_send_timestamp(void) +{ + if (get_options()->Support022HiddenServices >= 0) + return get_options()->Support022HiddenServices; + + return networkstatus_get_param(NULL, "Support022HiddenServices", 1, 0, 1); +} + /** Called when we're trying to connect an ap conn; sends an INTRODUCE1 cell * down introcirc if possible. */ @@ -238,7 +250,14 @@ rend_client_send_introduction(origin_circuit_t *introcirc, REND_DESC_COOKIE_LEN); v3_shift += 2+REND_DESC_COOKIE_LEN; } - set_uint32(tmp+v3_shift+1, htonl((uint32_t)time(NULL))); + if (rend_client_should_send_timestamp()) { + uint32_t now = (uint32_t)time(NULL); + now += 300; + now -= now % 600; + set_uint32(tmp+v3_shift+1, htonl(now)); + } else { + set_uint32(tmp+v3_shift+1, 0); + } v3_shift += 4; } /* if version 2 only write version number */ else if (entry->parsed->protocols & (1<<2)) { @@ -358,7 +377,7 @@ rend_client_close_other_intros(const char *onion_address) { circuit_t *c; /* abort parallel intro circs, if any */ - for (c = circuit_get_global_list_(); c; c = c->next) { + TOR_LIST_FOREACH(c, circuit_get_global_list(), head) { if ((c->purpose == CIRCUIT_PURPOSE_C_INTRODUCING || c->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) && !c->marked_for_close && CIRCUIT_IS_ORIGIN(c)) { diff --git a/src/or/rendservice.c b/src/or/rendservice.c index a8f63ddf66..cb2f962995 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -10,6 +10,7 @@ #define RENDSERVICE_PRIVATE #include "or.h" +#include "circpathbias.h" #include "circuitbuild.h" #include "circuitlist.h" #include "circuituse.h" @@ -543,7 +544,7 @@ rend_config_services(const or_options_t *options, int validate_only) /* XXXX it would be nicer if we had a nicer abstraction to use here, * so we could just iterate over the list of services to close, but * once again, this isn't critical-path code. */ - for (circ = circuit_get_global_list_(); circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (!circ->marked_for_close && circ->state == CIRCUIT_STATE_OPEN && (circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || @@ -593,6 +594,7 @@ rend_service_update_descriptor(rend_service_t *service) d = service->desc = tor_malloc_zero(sizeof(rend_service_descriptor_t)); d->pk = crypto_pk_dup_key(service->private_key); d->timestamp = time(NULL); + d->timestamp -= d->timestamp % 3600; /* Round down to nearest hour */ d->intro_nodes = smartlist_new(); /* Support intro protocols 2 and 3. */ d->protocols = (1 << 2) + (1 << 3); @@ -1207,7 +1209,7 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, /* check for replay of PK-encrypted portion. */ replay = replaycache_add_test_and_elapsed( intro_point->accepted_intro_rsa_parts, - parsed_req->ciphertext, (int)parsed_req->ciphertext_len, + parsed_req->ciphertext, parsed_req->ciphertext_len, &elapsed); if (replay) { @@ -1898,8 +1900,8 @@ rend_service_parse_intro_for_v3( } } - /* Check that we actually have everything up to the timestamp */ - if (plaintext_len < (size_t)(ts_offset)) { + /* Check that we actually have everything up through the timestamp */ + if (plaintext_len < (size_t)(ts_offset)+4) { if (err_msg_out) { tor_asprintf(err_msg_out, "truncated plaintext of encrypted parted of " @@ -1923,12 +1925,6 @@ rend_service_parse_intro_for_v3( } /* - * Apparently we don't use the timestamp any more, but might as well copy - * over just in case we ever care about it. - */ - intro->u.v3.timestamp = ntohl(get_uint32(buf + ts_offset)); - - /* * From here on, the format is as in v2, so we call the v2 parser with * adjusted buffer and length. We are 4 + ts_offset octets in, but the * v2 parser expects to skip over a version byte at the start, so we @@ -2381,7 +2377,7 @@ count_established_intro_points(const char *query) { int num_ipos = 0; circuit_t *circ; - for (circ = circuit_get_global_list_(); circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { if (!circ->marked_for_close && circ->state == CIRCUIT_STATE_OPEN && (circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || diff --git a/src/or/rendservice.h b/src/or/rendservice.h index ff31ba6edb..caf88a3d64 100644 --- a/src/or/rendservice.h +++ b/src/or/rendservice.h @@ -56,8 +56,6 @@ struct rend_intro_cell_s { uint16_t auth_len; /* Auth data */ uint8_t *auth_data; - /* timestamp */ - uint32_t timestamp; /* Rendezvous point's IP address/port, identity digest and onion key */ extend_info_t *extend_info; } v3; diff --git a/src/or/rephist.c b/src/or/rephist.c index c84322a679..13404badf4 100644 --- a/src/or/rephist.c +++ b/src/or/rephist.c @@ -2599,7 +2599,7 @@ rep_hist_buffer_stats_write(time_t now) goto done; /* Not ready to write */ /* Add open circuits to the history. */ - for (circ = circuit_get_global_list_(); circ; circ = circ->next) { + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) { rep_hist_buffer_stats_add_circ(circ, now); } @@ -2987,6 +2987,47 @@ rep_hist_conn_stats_write(time_t now) return start_of_conn_stats_interval + WRITE_STATS_INTERVAL; } +/** Internal statistics to track how many requests of each type of + * handshake we've received, and how many we've completed. Useful for + * seeing trends in cpu load. + * @{ */ +static int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1] = {0}; +static int onion_handshakes_completed[MAX_ONION_HANDSHAKE_TYPE+1] = {0}; +/**@}*/ + +/** A new onionskin (using the <b>type</b> handshake) has arrived. */ +void +rep_hist_note_circuit_handshake_requested(uint16_t type) +{ + if (type <= MAX_ONION_HANDSHAKE_TYPE) + onion_handshakes_requested[type]++; +} + +/** We've sent an onionskin (using the <b>type</b> handshake) to a + * cpuworker. */ +void +rep_hist_note_circuit_handshake_completed(uint16_t type) +{ + if (type <= MAX_ONION_HANDSHAKE_TYPE) + onion_handshakes_completed[type]++; +} + +/** Log our onionskin statistics since the last time we were called. */ +void +rep_hist_log_circuit_handshake_stats(time_t now) +{ + (void)now; + /* XXX024 maybe quiet this log message before 0.2.4 goes stable for real */ + log_notice(LD_HIST, "Circuit handshake stats since last time: " + "%d/%d TAP, %d/%d NTor.", + onion_handshakes_completed[ONION_HANDSHAKE_TYPE_TAP], + onion_handshakes_requested[ONION_HANDSHAKE_TYPE_TAP], + onion_handshakes_completed[ONION_HANDSHAKE_TYPE_NTOR], + onion_handshakes_requested[ONION_HANDSHAKE_TYPE_NTOR]); + memset(onion_handshakes_completed, 0, sizeof(onion_handshakes_completed)); + memset(onion_handshakes_requested, 0, sizeof(onion_handshakes_requested)); +} + /** Free all storage held by the OR/link history caches, by the * bandwidth history arrays, by the port history, or by statistics . */ void diff --git a/src/or/rephist.h b/src/or/rephist.h index 811cd8d450..de824749b4 100644 --- a/src/or/rephist.h +++ b/src/or/rephist.h @@ -64,8 +64,6 @@ int rep_hist_circbuilding_dormant(time_t now); void note_crypto_pk_op(pk_op_t operation); void dump_pk_ops(int severity); -void rep_hist_free_all(void); - void rep_hist_exit_stats_init(time_t now); void rep_hist_reset_exit_stats(time_t now); void rep_hist_exit_stats_term(void); @@ -98,5 +96,11 @@ char *rep_hist_format_conn_stats(time_t now); time_t rep_hist_conn_stats_write(time_t now); void rep_hist_conn_stats_term(void); +void rep_hist_note_circuit_handshake_requested(uint16_t type); +void rep_hist_note_circuit_handshake_completed(uint16_t type); +void rep_hist_log_circuit_handshake_stats(time_t now); + +void rep_hist_free_all(void); + #endif diff --git a/src/or/replaycache.c b/src/or/replaycache.c index 122efb7030..90f87c12d5 100644 --- a/src/or/replaycache.c +++ b/src/or/replaycache.c @@ -65,7 +65,7 @@ replaycache_new(time_t horizon, time_t interval) STATIC int replaycache_add_and_test_internal( - time_t present, replaycache_t *r, const void *data, int len, + time_t present, replaycache_t *r, const void *data, size_t len, time_t *elapsed) { int rv = 0; @@ -73,7 +73,7 @@ replaycache_add_and_test_internal( time_t *access_time; /* sanity check */ - if (present <= 0 || !r || !data || len <= 0) { + if (present <= 0 || !r || !data || len == 0) { log_info(LD_BUG, "replaycache_add_and_test_internal() called with stupid" " parameters; please fix this."); goto done; @@ -176,7 +176,7 @@ replaycache_scrub_if_needed_internal(time_t present, replaycache_t *r) */ int -replaycache_add_and_test(replaycache_t *r, const void *data, int len) +replaycache_add_and_test(replaycache_t *r, const void *data, size_t len) { return replaycache_add_and_test_internal(time(NULL), r, data, len, NULL); } @@ -187,7 +187,7 @@ replaycache_add_and_test(replaycache_t *r, const void *data, int len) int replaycache_add_test_and_elapsed( - replaycache_t *r, const void *data, int len, time_t *elapsed) + replaycache_t *r, const void *data, size_t len, time_t *elapsed) { return replaycache_add_and_test_internal(time(NULL), r, data, len, elapsed); } diff --git a/src/or/replaycache.h b/src/or/replaycache.h index c60c408103..cd713fe891 100644 --- a/src/or/replaycache.h +++ b/src/or/replaycache.h @@ -46,7 +46,7 @@ replaycache_t * replaycache_new(time_t horizon, time_t interval); */ STATIC int replaycache_add_and_test_internal( - time_t present, replaycache_t *r, const void *data, int len, + time_t present, replaycache_t *r, const void *data, size_t len, time_t *elapsed); STATIC void replaycache_scrub_if_needed_internal( time_t present, replaycache_t *r); @@ -57,9 +57,9 @@ STATIC void replaycache_scrub_if_needed_internal( * replaycache_t methods */ -int replaycache_add_and_test(replaycache_t *r, const void *data, int len); +int replaycache_add_and_test(replaycache_t *r, const void *data, size_t len); int replaycache_add_test_and_elapsed( - replaycache_t *r, const void *data, int len, time_t *elapsed); + replaycache_t *r, const void *data, size_t len, time_t *elapsed); void replaycache_scrub_if_needed(replaycache_t *r); #endif diff --git a/src/or/router.c b/src/or/router.c index 1063eda044..959e5e34c3 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -232,11 +232,12 @@ get_server_identity_key(void) return server_identitykey; } -/** Return true iff the server identity key has been set. */ +/** Return true iff we are a server and the server identity key + * has been set. */ int server_identity_key_is_set(void) { - return server_identitykey != NULL; + return server_mode(get_options()) && server_identitykey != NULL; } /** Set the current client identity key to <b>k</b>. @@ -955,14 +956,14 @@ init_keys(void) } if (ds->type != type) { log_warn(LD_DIR, "Configured authority type does not match authority " - "type in DirServer list. Adjusting. (%d v %d)", + "type in DirAuthority list. Adjusting. (%d v %d)", type, ds->type); ds->type = type; } if (v3_digest_set && (ds->type & V3_DIRINFO) && tor_memneq(v3_digest, ds->v3_identity_digest, DIGEST_LEN)) { log_warn(LD_DIR, "V3 identity key does not match identity declared in " - "DirServer line. Adjusting."); + "DirAuthority line. Adjusting."); memcpy(ds->v3_identity_digest, v3_digest, DIGEST_LEN); } diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 46da17e03b..c0c4d9a4c0 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -37,7 +37,7 @@ #include "routerlist.h" #include "routerparse.h" #include "routerset.h" - +#include "../common/sandbox.h" // #define DEBUG_ROUTERLIST /****************************************************************************/ @@ -241,6 +241,27 @@ get_cert_list(const char *id_digest) return cl; } +/** Release all space held by a cert_list_t */ +static void +cert_list_free(cert_list_t *cl) +{ + if (!cl) + return; + + SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, + authority_cert_free(cert)); + smartlist_free(cl->certs); + dsmap_free(cl->dl_status_map, tor_free_); + tor_free(cl); +} + +/** Wrapper for cert_list_free so we can pass it to digestmap_free */ +static void +cert_list_free_(void *cl) +{ + cert_list_free(cl); +} + /** Reload the cached v3 key certificates from the cached-certs file in * the data directory. Return 0 on success, -1 on failure. */ int @@ -428,7 +449,7 @@ trusted_dirs_flush_certs_to_disk(void) } DIGESTMAP_FOREACH_END; filename = get_datadir_fname("cached-certs"); - if (write_chunks_to_file(filename, chunks, 0)) { + if (write_chunks_to_file(filename, chunks, 0, 0)) { log_warn(LD_FS, "Error writing certificates to disk."); } tor_free(filename); @@ -1048,7 +1069,7 @@ router_rebuild_store(int flags, desc_store_t *store) smartlist_add(chunk_list, c); } SMARTLIST_FOREACH_END(sd); - if (write_chunks_to_file(fname_tmp, chunk_list, 1)<0) { + if (write_chunks_to_file(fname_tmp, chunk_list, 1, 1)<0) { log_warn(LD_FS, "Error writing router store to disk."); goto done; } @@ -3284,13 +3305,7 @@ routerlist_free_all(void) smartlist_free(fallback_dir_servers); trusted_dir_servers = fallback_dir_servers = NULL; if (trusted_dir_certs) { - DIGESTMAP_FOREACH(trusted_dir_certs, key, cert_list_t *, cl) { - SMARTLIST_FOREACH(cl->certs, authority_cert_t *, cert, - authority_cert_free(cert)); - smartlist_free(cl->certs); - tor_free(cl); - } DIGESTMAP_FOREACH_END; - digestmap_free(trusted_dir_certs, NULL); + digestmap_free(trusted_dir_certs, cert_list_free_); trusted_dir_certs = NULL; } } diff --git a/src/or/statefile.c b/src/or/statefile.c index bcb7b07417..8ab04763d0 100644 --- a/src/or/statefile.c +++ b/src/or/statefile.c @@ -4,6 +4,7 @@ * Copyright (c) 2007-2013, The Tor Project, Inc. */ /* See LICENSE for licensing information */ +#define STATEFILE_PRIVATE #include "or.h" #include "circuitstats.h" #include "config.h" @@ -90,8 +91,11 @@ static config_var_t state_vars_[] = { #undef VAR #undef V -static int or_state_validate(or_state_t *old_options, or_state_t *options, - int from_setconf, char **msg); +static int or_state_validate(or_state_t *state, char **msg); + +static int or_state_validate_cb(void *old_options, void *options, + void *default_options, + int from_setconf, char **msg); /** Magic value for or_state_t. */ #define OR_STATE_MAGIC 0x57A73f57 @@ -109,7 +113,7 @@ static const config_format_t state_format = { STRUCT_OFFSET(or_state_t, magic_), state_abbrevs_, state_vars_, - (validate_fn_t)or_state_validate, + or_state_validate_cb, &state_extra_var, }; @@ -117,8 +121,8 @@ static const config_format_t state_format = { static or_state_t *global_state = NULL; /** Return the persistent state struct for this Tor. */ -or_state_t * -get_or_state(void) +MOCK_IMPL(or_state_t *, +get_or_state, (void)) { tor_assert(global_state); return global_state; @@ -194,21 +198,27 @@ validate_transports_in_state(or_state_t *state) return 0; } -/** Return 0 if every setting in <b>state</b> is reasonable, and a - * permissible transition from <b>old_state</b>. Else warn and return -1. - * Should have no side effects, except for normalizing the contents of - * <b>state</b>. - */ -/* XXX from_setconf is here because of bug 238 */ static int -or_state_validate(or_state_t *old_state, or_state_t *state, - int from_setconf, char **msg) +or_state_validate_cb(void *old_state, void *state, void *default_state, + int from_setconf, char **msg) { /* We don't use these; only options do. Still, we need to match that * signature. */ (void) from_setconf; + (void) default_state; (void) old_state; + return or_state_validate(state, msg); +} + +/** Return 0 if every setting in <b>state</b> is reasonable, and a + * permissible transition from <b>old_state</b>. Else warn and return -1. + * Should have no side effects, except for normalizing the contents of + * <b>state</b>. + */ +static int +or_state_validate(or_state_t *state, char **msg) +{ if (entry_guards_parse_state(state, 0, msg)<0) return -1; @@ -237,7 +247,8 @@ or_state_set(or_state_t *new_state) tor_free(err); ret = -1; } - if (circuit_build_times_parse_state(&circ_times, global_state) < 0) { + if (circuit_build_times_parse_state( + get_circuit_build_times_mutable(),global_state) < 0) { ret = -1; } return ret; @@ -322,7 +333,7 @@ or_state_load(void) } } - if (!badstate && or_state_validate(NULL, new_state, 1, &errmsg) < 0) + if (!badstate && or_state_validate(new_state, &errmsg) < 0) badstate = 1; if (errmsg) { @@ -404,7 +415,7 @@ or_state_save(time_t now) * to avoid redundant writes. */ entry_guards_update_state(global_state); rep_hist_update_state(global_state); - circuit_build_times_update_state(&circ_times, global_state); + circuit_build_times_update_state(get_circuit_build_times(), global_state); if (accounting_is_enabled(get_options())) accounting_run_housekeeping(now); @@ -449,7 +460,7 @@ or_state_save(time_t now) /** Return the config line for transport <b>transport</b> in the current state. * Return NULL if there is no config line for <b>transport</b>. */ -static config_line_t * +STATIC config_line_t * get_transport_in_state_by_name(const char *transport) { or_state_t *or_state = get_or_state(); diff --git a/src/or/statefile.h b/src/or/statefile.h index dcdee6c604..c1413ff952 100644 --- a/src/or/statefile.h +++ b/src/or/statefile.h @@ -7,7 +7,7 @@ #ifndef TOR_STATEFILE_H #define TOR_STATEFILE_H -or_state_t *get_or_state(void); +MOCK_DECL(or_state_t *,get_or_state,(void)); int did_last_state_file_write_fail(void); int or_state_save(time_t now); @@ -18,5 +18,9 @@ int or_state_load(void); int or_state_loaded(void); void or_state_free_all(void); +#ifdef STATEFILE_PRIVATE +STATIC config_line_t *get_transport_in_state_by_name(const char *transport); +#endif + #endif diff --git a/src/or/status.c b/src/or/status.c index d239e6ee75..6e2206e5e5 100644 --- a/src/or/status.c +++ b/src/or/status.c @@ -15,6 +15,9 @@ #include "circuitlist.h" #include "main.h" #include "hibernate.h" +#include "statefile.h" + +static void log_accounting(const time_t now, const or_options_t *options); /** Return the total number of circuits. */ static int @@ -23,7 +26,7 @@ count_circuits(void) circuit_t *circ; int nr=0; - for (circ = circuit_get_global_list_(); circ; circ = circ->next) + TOR_LIST_FOREACH(circ, circuit_get_global_list(), head) nr++; return nr; @@ -111,6 +114,10 @@ log_heartbeat(time_t now) uptime, count_circuits(),bw_sent,bw_rcvd, hibernating?" We are currently hibernating.":""); + if (server_mode(options) && accounting_is_enabled(options) && !hibernating) { + log_accounting(now, options); + } + if (stats_n_data_cells_packaged && !hibernating) log_notice(LD_HEARTBEAT, "Average packaged cell fullness: %2.3f%%", 100*(U64_TO_DBL(stats_n_data_bytes_packaged) / @@ -128,3 +135,27 @@ log_heartbeat(time_t now) return 0; } +static void +log_accounting(const time_t now, const or_options_t *options) +{ + or_state_t *state = get_or_state(); + char *acc_rcvd = bytes_to_usage(state->AccountingBytesReadInInterval); + char *acc_sent = bytes_to_usage(state->AccountingBytesWrittenInInterval); + char *acc_max = bytes_to_usage(options->AccountingMax); + time_t interval_end = accounting_get_end_time(); + char end_buf[ISO_TIME_LEN + 1]; + char *remaining = NULL; + format_local_iso_time(end_buf, interval_end); + remaining = secs_to_uptime(interval_end - now); + + log_notice(LD_HEARTBEAT, "Heartbeat: Accounting enabled. " + "Sent: %s / %s, Received: %s / %s. The " + "current accounting interval ends on %s, in %s.", + acc_sent, acc_max, acc_rcvd, acc_max, end_buf, remaining); + + tor_free(acc_rcvd); + tor_free(acc_sent); + tor_free(acc_max); + tor_free(remaining); +} + diff --git a/src/or/transports.c b/src/or/transports.c index 15faa98d40..8b4a11882b 100644 --- a/src/or/transports.c +++ b/src/or/transports.c @@ -96,6 +96,9 @@ #include "router.h" #include "statefile.h" #include "entrynodes.h" +#include "connection_or.h" +#include "ext_orport.h" +#include "control.h" static process_environment_t * create_managed_proxy_environment(const managed_proxy_t *mp); @@ -103,8 +106,6 @@ create_managed_proxy_environment(const managed_proxy_t *mp); static INLINE int proxy_configuration_finished(const managed_proxy_t *mp); static void handle_finished_proxy(managed_proxy_t *mp); -static void configure_proxy(managed_proxy_t *mp); - static void parse_method_error(const char *line, int is_server_method); #define parse_server_method_error(l) parse_method_error(l, 1) #define parse_client_method_error(l) parse_method_error(l, 0) @@ -551,7 +552,7 @@ pt_configure_remaining_proxies(void) assert_unconfigured_count_ok(); SMARTLIST_FOREACH_BEGIN(tmp, managed_proxy_t *, mp) { - tor_assert(mp->conf_state != PT_PROTO_BROKEN || + tor_assert(mp->conf_state != PT_PROTO_BROKEN && mp->conf_state != PT_PROTO_FAILED_LAUNCH); if (mp->got_hup) { @@ -574,10 +575,8 @@ pt_configure_remaining_proxies(void) /* If the proxy is not fully configured, try to configure it futher. */ if (!proxy_configuration_finished(mp)) - configure_proxy(mp); - - if (proxy_configuration_finished(mp)) - at_least_a_proxy_config_finished = 1; + if (configure_proxy(mp) == 1) + at_least_a_proxy_config_finished = 1; } SMARTLIST_FOREACH_END(mp); @@ -589,10 +588,14 @@ pt_configure_remaining_proxies(void) mark_my_descriptor_dirty("configured managed proxies"); } -/** Attempt to continue configuring managed proxy <b>mp</b>. */ -static void +/** Attempt to continue configuring managed proxy <b>mp</b>. + * Return 1 if the transport configuration finished, and return 0 + * otherwise (if we still have more configuring to do for this + * proxy). */ +STATIC int configure_proxy(managed_proxy_t *mp) { + int configuration_finished = 0; smartlist_t *proxy_output = NULL; enum stream_status stream_status = 0; @@ -602,7 +605,7 @@ configure_proxy(managed_proxy_t *mp) mp->conf_state = PT_PROTO_FAILED_LAUNCH; handle_finished_proxy(mp); } - return; + return 0; } tor_assert(mp->conf_state != PT_PROTO_INFANT); @@ -634,13 +637,17 @@ configure_proxy(managed_proxy_t *mp) done: /* if the proxy finished configuring, exit the loop. */ - if (proxy_configuration_finished(mp)) + if (proxy_configuration_finished(mp)) { handle_finished_proxy(mp); + configuration_finished = 1; + } if (proxy_output) { SMARTLIST_FOREACH(proxy_output, char *, cp, tor_free(cp)); smartlist_free(proxy_output); } + + return configuration_finished; } /** Register server managed proxy <b>mp</b> transports to state */ @@ -653,6 +660,7 @@ register_server_proxy(const managed_proxy_t *mp) save_transport_to_state(t->name, &t->addr, t->port); log_notice(LD_GENERAL, "Registered server transport '%s' at '%s'", t->name, fmt_addrport(&t->addr, t->port)); + control_event_transport_launched("server", t->name, &t->addr, t->port); } SMARTLIST_FOREACH_END(t); } @@ -675,9 +683,11 @@ register_client_proxy(const managed_proxy_t *mp) break; case 0: log_info(LD_GENERAL, "Successfully registered transport %s", t->name); + control_event_transport_launched("client", t->name, &t->addr, t->port); break; case 1: log_info(LD_GENERAL, "Successfully registered transport %s", t->name); + control_event_transport_launched("client", t->name, &t->addr, t->port); transport_free(transport_tmp); break; } @@ -709,7 +719,8 @@ managed_proxy_destroy(managed_proxy_t *mp, smartlist_free(mp->transports_to_launch); /* remove it from the list of managed proxies */ - smartlist_remove(managed_proxy_list, mp); + if (managed_proxy_list) + smartlist_remove(managed_proxy_list, mp); /* free the argv */ free_execve_args(mp->argv); @@ -746,7 +757,6 @@ handle_finished_proxy(managed_proxy_t *mp) } unconfigured_proxies_n--; - tor_assert(unconfigured_proxies_n >= 0); } /** Return true if the configuration of the managed proxy <b>mp</b> is @@ -1194,6 +1204,8 @@ get_bindaddr_for_server_proxy(const managed_proxy_t *mp) static process_environment_t * create_managed_proxy_environment(const managed_proxy_t *mp) { + const or_options_t *options = get_options(); + /* Environment variables to be added to or set in mp's environment. */ smartlist_t *envs = smartlist_new(); /* XXXX The next time someone touches this code, shorten the name of @@ -1257,7 +1269,23 @@ create_managed_proxy_environment(const managed_proxy_t *mp) * (If we remove this line entirely, some joker will stick this * variable in Tor's environment and crash PTs that try to parse * it even when not run in server mode.) */ - smartlist_add(envs, tor_strdup("TOR_PT_EXTENDED_SERVER_PORT=")); + + if (options->ExtORPort_lines) { + char *ext_or_addrport_tmp = + get_first_listener_addrport_string(CONN_TYPE_EXT_OR_LISTENER); + char *cookie_file_loc = get_ext_or_auth_cookie_file_name(); + + smartlist_add_asprintf(envs, "TOR_PT_EXTENDED_SERVER_PORT=%s", + ext_or_addrport_tmp); + smartlist_add_asprintf(envs, "TOR_PT_AUTH_COOKIE_FILE=%s", + cookie_file_loc); + + tor_free(ext_or_addrport_tmp); + tor_free(cookie_file_loc); + + } else { + smartlist_add_asprintf(envs, "TOR_PT_EXTENDED_SERVER_PORT="); + } } SMARTLIST_FOREACH_BEGIN(envs, const char *, env_var) { diff --git a/src/or/transports.h b/src/or/transports.h index 1c6fc419b7..7b524f2073 100644 --- a/src/or/transports.h +++ b/src/or/transports.h @@ -121,6 +121,8 @@ STATIC void managed_proxy_destroy(managed_proxy_t *mp, STATIC managed_proxy_t *managed_proxy_create(const smartlist_t *transport_list, char **proxy_argv, int is_server); +STATIC int configure_proxy(managed_proxy_t *mp); + #endif #endif diff --git a/src/test/Makefile.nmake b/src/test/Makefile.nmake index 562c8df8b5..6479f9d39a 100644 --- a/src/test/Makefile.nmake +++ b/src/test/Makefile.nmake @@ -12,9 +12,9 @@ LIBS = ..\..\..\build-alpha\lib\libevent.lib \ crypt32.lib gdi32.lib user32.lib TEST_OBJECTS = test.obj test_addr.obj test_containers.obj \ - test_crypto.obj test_data.obj test_dir.obj test_microdesc.obj \ - test_pt.obj test_util.obj test_config.obj test_cell_formats.obj \ - test_replay.obj test_introduce.obj tinytest.obj + test_controller_events.ogj test_crypto.obj test_data.obj test_dir.obj \ + test_microdesc.obj test_pt.obj test_util.obj test_config.obj \ + test_cell_formats.obj test_replay.obj test_introduce.obj tinytest.obj tinytest.obj: ..\ext\tinytest.c $(CC) $(CFLAGS) /D snprintf=_snprintf /c ..\ext\tinytest.c diff --git a/src/test/bench.c b/src/test/bench.c index ca01d3c3e6..e650569a75 100644 --- a/src/test/bench.c +++ b/src/test/bench.c @@ -14,8 +14,6 @@ const char tor_git_revision[] = ""; #include "orconfig.h" -#define RELAY_PRIVATE - #include "or.h" #include "onion_tap.h" #include "relay.h" diff --git a/src/test/include.am b/src/test/include.am index e879c2000e..c16dd14fe7 100644 --- a/src/test/include.am +++ b/src/test/include.am @@ -1,4 +1,4 @@ -TESTS+= src/test/test +TESTS += src/test/test noinst_PROGRAMS+= src/test/bench if UNITTESTS_ENABLED @@ -18,20 +18,24 @@ src_test_AM_CPPFLAGS = -DSHARE_DATADIR="\"$(datadir)\"" \ src_test_test_SOURCES = \ src/test/test.c \ src/test/test_addr.c \ + src/test/test_buffers.c \ src/test/test_cell_formats.c \ src/test/test_circuitlist.c \ src/test/test_circuitmux.c \ src/test/test_containers.c \ + src/test/test_controller_events.c \ src/test/test_crypto.c \ src/test/test_cell_queue.c \ src/test/test_data.c \ src/test/test_dir.c \ + src/test/test_extorport.c \ src/test/test_introduce.c \ src/test/test_logging.c \ src/test/test_microdesc.c \ src/test/test_options.c \ src/test/test_pt.c \ src/test/test_replay.c \ + src/test/test_socks.c \ src/test/test_util.c \ src/test/test_config.c \ src/ext/tinytest.c @@ -43,8 +47,6 @@ src_test_test_CPPFLAGS= $(src_test_AM_CPPFLAGS) src_test_bench_SOURCES = \ src/test/bench.c -src_test_bench_CPPFLAGS= $(src_test_AM_CPPFLAGS) - src_test_test_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \ @TOR_LDFLAGS_libevent@ src_test_test_LDADD = src/or/libtor-testing.a src/common/libor-testing.a \ @@ -74,7 +76,15 @@ src_test_test_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \ @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ src_test_test_ntor_cl_AM_CPPFLAGS = \ -I"$(top_srcdir)/src/or" +NTOR_TEST_DEPS=src/test/test-ntor-cl +else +NTOR_TEST_DEPS= +endif +if COVERAGE_ENABLED +CMDLINE_TEST_TOR = ./src/or/tor-cov +else +CMDLINE_TEST_TOR = ./src/or/tor endif noinst_PROGRAMS += src/test/test-bt-cl @@ -85,3 +95,14 @@ src_test_test_bt_cl_LDADD = src/common/libor-testing.a \ src_test_test_bt_cl_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS) src_test_test_bt_cl_CPPFLAGS= $(src_test_AM_CPPFLAGS) + +check-local: $(NTOR_TEST_DEPS) $(CMDLINE_TEST_TOR) +if USEPYTHON + $(PYTHON) $(top_srcdir)/src/test/test_cmdline_args.py $(CMDLINE_TEST_TOR) "${top_srcdir}" +if CURVE25519_ENABLED + $(PYTHON) $(top_srcdir)/src/test/ntor_ref.py test-tor + $(PYTHON) $(top_srcdir)/src/test/ntor_ref.py self-test +endif + ./src/test/test-bt-cl assert | $(PYTHON) $(top_srcdir)/src/test/bt_test.py + ./src/test/test-bt-cl crash | $(PYTHON) $(top_srcdir)/src/test/bt_test.py +endif diff --git a/src/test/ntor_ref.py b/src/test/ntor_ref.py index ade468da7d..2a5f984609 100644..100755 --- a/src/test/ntor_ref.py +++ b/src/test/ntor_ref.py @@ -1,3 +1,4 @@ +#!/usr/bin/python # Copyright 2012-2013, The Tor Project, Inc # See LICENSE for licensing information @@ -27,7 +28,13 @@ commands: """ import binascii -import curve25519 +try: + import curve25519 +except ImportError: + curve25519 = None + print "SKIPPING: No Python curve25519 module installed" + import sys + sys.exit(0) import hashlib import hmac import subprocess @@ -286,6 +293,7 @@ def demo(node_id="iToldYouAboutStairs.", server_key=PrivateKey()): assert len(skeys) == 72 assert len(ckeys) == 72 assert skeys == ckeys + print "OK" # ====================================================================== def timing(): @@ -368,13 +376,15 @@ def test_tor(): assert c_keys == s_keys assert len(c_keys) == 90 - print "We just interoperated." + print "OK" # ====================================================================== if __name__ == '__main__': import sys - if sys.argv[1] == 'gen_kdf_vectors': + if len(sys.argv) < 2: + print __doc__ + elif sys.argv[1] == 'gen_kdf_vectors': kdf_vectors() elif sys.argv[1] == 'timing': timing() diff --git a/src/test/test-network.sh b/src/test/test-network.sh index 9146ae3ce4..7b59864166 100755 --- a/src/test/test-network.sh +++ b/src/test/test-network.sh @@ -1,9 +1,30 @@ #! /bin/sh -# NOTE: Requires Chutney in $CHUTNEY_PATH. +until [ -z $1 ] +do + case $1 in + --chutney-path) + export CHUTNEY_PATH="$2" + shift + ;; + --tor-path) + export TOR_DIR="$2" + shift + ;; + --flavo?r|--network-flavo?r) + export NETWORK_FLAVOUR="$2" + shift + ;; + *) + echo "Sorry, I don't know what to do with '$1'." + exit 2 + ;; + esac + shift +done -TOR_DIR=$(pwd)/src/or -NETWORK_FLAVOUR=basic +TOR_DIR="${TOR_DIR:-$PWD}" +NETWORK_FLAVOUR=${NETWORK_FLAVOUR:-basic} CHUTNEY_NETWORK=networks/$NETWORK_FLAVOUR myname=$(basename $0) @@ -12,7 +33,8 @@ myname=$(basename $0) exit 1 } cd "$CHUTNEY_PATH" -PATH=$TOR_DIR:$PATH # For picking up the right tor binary. +# For picking up the right tor binaries. +PATH="$TOR_DIR/src/or:$TOR_DIR/src/tools:$PATH" ./tools/bootstrap-network.sh $NETWORK_FLAVOUR || exit 2 # Sleep some, waiting for the network to bootstrap. diff --git a/src/test/test.c b/src/test/test.c index ae4ab4462d..752f8d7121 100644 --- a/src/test/test.c +++ b/src/test/test.c @@ -28,7 +28,6 @@ const char tor_git_revision[] = ""; /* These macros pull in declarations for some functions and structures that * are typically file-private. */ -#define BUFFERS_PRIVATE #define GEOIP_PRIVATE #define ROUTER_PRIVATE #define CIRCUITSTATS_PRIVATE @@ -43,6 +42,7 @@ double fabs(double x); #include "or.h" #include "buffers.h" +#include "circuitlist.h" #include "circuitstats.h" #include "config.h" #include "connection_edge.h" @@ -52,6 +52,8 @@ double fabs(double x); #include "torgzip.h" #include "mempool.h" #include "memarea.h" +#include "onion.h" +#include "onion_ntor.h" #include "onion_tap.h" #include "policies.h" #include "rephist.h" @@ -215,622 +217,6 @@ free_pregenerated_keys(void) } } -typedef struct socks_test_data_t { - socks_request_t *req; - buf_t *buf; -} socks_test_data_t; - -static void * -socks_test_setup(const struct testcase_t *testcase) -{ - socks_test_data_t *data = tor_malloc(sizeof(socks_test_data_t)); - (void)testcase; - data->buf = buf_new_with_capacity(256); - data->req = socks_request_new(); - config_register_addressmaps(get_options()); - return data; -} -static int -socks_test_cleanup(const struct testcase_t *testcase, void *ptr) -{ - socks_test_data_t *data = ptr; - (void)testcase; - buf_free(data->buf); - socks_request_free(data->req); - tor_free(data); - return 1; -} - -const struct testcase_setup_t socks_setup = { - socks_test_setup, socks_test_cleanup -}; - -#define SOCKS_TEST_INIT() \ - socks_test_data_t *testdata = ptr; \ - buf_t *buf = testdata->buf; \ - socks_request_t *socks = testdata->req; -#define ADD_DATA(buf, s) \ - write_to_buf(s, sizeof(s)-1, buf) - -static void -socks_request_clear(socks_request_t *socks) -{ - tor_free(socks->username); - tor_free(socks->password); - memset(socks, 0, sizeof(socks_request_t)); -} - -/** Perform unsupported SOCKS 4 commands */ -static void -test_socks_4_unsupported_commands(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 4 Send BIND [02] to IP address 2.2.2.2:4369 */ - ADD_DATA(buf, "\x04\x02\x11\x11\x02\x02\x02\x02\x00"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == -1); - test_eq(4, socks->socks_version); - test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ - - done: - ; -} - -/** Perform supported SOCKS 4 commands */ -static void -test_socks_4_supported_commands(void *ptr) -{ - SOCKS_TEST_INIT(); - - test_eq(0, buf_datalen(buf)); - - /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4370 */ - ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x03\x00"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(4, socks->socks_version); - test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ - test_eq(SOCKS_COMMAND_CONNECT, socks->command); - test_streq("2.2.2.3", socks->address); - test_eq(4370, socks->port); - test_assert(socks->got_auth == 0); - test_assert(! socks->username); - - test_eq(0, buf_datalen(buf)); - socks_request_clear(socks); - - /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4369 with userid*/ - ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x04me\x00"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(4, socks->socks_version); - test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ - test_eq(SOCKS_COMMAND_CONNECT, socks->command); - test_streq("2.2.2.4", socks->address); - test_eq(4370, socks->port); - test_assert(socks->got_auth == 1); - test_assert(socks->username); - test_eq(2, socks->usernamelen); - test_memeq("me", socks->username, 2); - - test_eq(0, buf_datalen(buf)); - socks_request_clear(socks); - - /* SOCKS 4a Send RESOLVE [F0] request for torproject.org */ - ADD_DATA(buf, "\x04\xF0\x01\x01\x00\x00\x00\x02me\x00torproject.org\x00"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(4, socks->socks_version); - test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ - test_streq("torproject.org", socks->address); - - test_eq(0, buf_datalen(buf)); - - done: - ; -} - -/** Perform unsupported SOCKS 5 commands */ -static void -test_socks_5_unsupported_commands(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 5 Send unsupported BIND [02] command */ - ADD_DATA(buf, "\x05\x02\x00\x01"); - - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), 0); - test_eq(0, buf_datalen(buf)); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(0, socks->reply[1]); - ADD_DATA(buf, "\x05\x02\x00\x01\x02\x02\x02\x01\x01\x01"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), -1); - /* XXX: shouldn't tor reply 'command not supported' [07]? */ - - buf_clear(buf); - socks_request_clear(socks); - - /* SOCKS 5 Send unsupported UDP_ASSOCIATE [03] command */ - ADD_DATA(buf, "\x05\x03\x00\x01\x02"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), 0); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(2, socks->reply[1]); - ADD_DATA(buf, "\x05\x03\x00\x01\x02\x02\x02\x01\x01\x01"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), -1); - /* XXX: shouldn't tor reply 'command not supported' [07]? */ - - done: - ; -} - -/** Perform supported SOCKS 5 commands */ -static void -test_socks_5_supported_commands(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */ - ADD_DATA(buf, "\x05\x01\x00"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), 0); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(0, socks->reply[1]); - - ADD_DATA(buf, "\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), 1); - test_streq("2.2.2.2", socks->address); - test_eq(4369, socks->port); - - test_eq(0, buf_datalen(buf)); - socks_request_clear(socks); - - /* SOCKS 5 Send CONNECT [01] to FQDN torproject.org:4369 */ - ADD_DATA(buf, "\x05\x01\x00"); - ADD_DATA(buf, "\x05\x01\x00\x03\x0Etorproject.org\x11\x11"); - test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks), 1); - - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(0, socks->reply[1]); - test_streq("torproject.org", socks->address); - test_eq(4369, socks->port); - - test_eq(0, buf_datalen(buf)); - socks_request_clear(socks); - - /* SOCKS 5 Send RESOLVE [F0] request for torproject.org:4369 */ - ADD_DATA(buf, "\x05\x01\x00"); - ADD_DATA(buf, "\x05\xF0\x00\x03\x0Etorproject.org\x01\x02"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(0, socks->reply[1]); - test_streq("torproject.org", socks->address); - - test_eq(0, buf_datalen(buf)); - socks_request_clear(socks); - - /* SOCKS 5 Send RESOLVE_PTR [F1] for IP address 2.2.2.5 */ - ADD_DATA(buf, "\x05\x01\x00"); - ADD_DATA(buf, "\x05\xF1\x00\x01\x02\x02\x02\x05\x01\x03"); - test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(0, socks->reply[1]); - test_streq("2.2.2.5", socks->address); - - test_eq(0, buf_datalen(buf)); - - done: - ; -} - -/** Perform SOCKS 5 authentication */ -static void -test_socks_5_no_authenticate(void *ptr) -{ - SOCKS_TEST_INIT(); - - /*SOCKS 5 No Authentication */ - ADD_DATA(buf,"\x05\x01\x00"); - test_assert(!fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks)); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(SOCKS_NO_AUTH, socks->reply[1]); - - test_eq(0, buf_datalen(buf)); - - /*SOCKS 5 Send username/password anyway - pretend to be broken */ - ADD_DATA(buf,"\x01\x02\x01\x01\x02\x01\x01"); - test_assert(!fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks)); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(1, socks->reply[0]); - test_eq(0, socks->reply[1]); - - test_eq(2, socks->usernamelen); - test_eq(2, socks->passwordlen); - - test_memeq("\x01\x01", socks->username, 2); - test_memeq("\x01\x01", socks->password, 2); - - done: - ; -} - -/** Perform SOCKS 5 authentication */ -static void -test_socks_5_authenticate(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 5 Negotiate username/password authentication */ - ADD_DATA(buf, "\x05\x01\x02"); - - test_assert(!fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks)); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(SOCKS_USER_PASS, socks->reply[1]); - test_eq(5, socks->socks_version); - - test_eq(0, buf_datalen(buf)); - - /* SOCKS 5 Send username/password */ - ADD_DATA(buf, "\x01\x02me\x08mypasswd"); - test_assert(!fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks)); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(1, socks->reply[0]); - test_eq(0, socks->reply[1]); - - test_eq(2, socks->usernamelen); - test_eq(8, socks->passwordlen); - - test_memeq("me", socks->username, 2); - test_memeq("mypasswd", socks->password, 8); - - done: - ; -} - -/** Perform SOCKS 5 authentication and send data all in one go */ -static void -test_socks_5_authenticate_with_data(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 5 Negotiate username/password authentication */ - ADD_DATA(buf, "\x05\x01\x02"); - - test_assert(!fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks)); - test_eq(2, socks->replylen); - test_eq(5, socks->reply[0]); - test_eq(SOCKS_USER_PASS, socks->reply[1]); - test_eq(5, socks->socks_version); - - test_eq(0, buf_datalen(buf)); - - /* SOCKS 5 Send username/password */ - /* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */ - ADD_DATA(buf, "\x01\x02me\x03you\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11"); - test_assert(fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks) == 1); - test_eq(5, socks->socks_version); - test_eq(2, socks->replylen); - test_eq(1, socks->reply[0]); - test_eq(0, socks->reply[1]); - - test_streq("2.2.2.2", socks->address); - test_eq(4369, socks->port); - - test_eq(2, socks->usernamelen); - test_eq(3, socks->passwordlen); - test_memeq("me", socks->username, 2); - test_memeq("you", socks->password, 3); - - done: - ; -} - -/** Perform SOCKS 5 authentication before method negotiated */ -static void -test_socks_5_auth_before_negotiation(void *ptr) -{ - SOCKS_TEST_INIT(); - - /* SOCKS 5 Send username/password */ - ADD_DATA(buf, "\x01\x02me\x02me"); - test_assert(fetch_from_buf_socks(buf, socks, - get_options()->TestSocks, - get_options()->SafeSocks) == -1); - test_eq(0, socks->socks_version); - test_eq(0, socks->replylen); - test_eq(0, socks->reply[0]); - test_eq(0, socks->reply[1]); - - done: - ; -} - -static void -test_buffer_copy(void *arg) -{ - generic_buffer_t *buf=NULL, *buf2=NULL; - const char *s; - size_t len; - char b[256]; - int i; - (void)arg; - - buf = generic_buffer_new(); - tt_assert(buf); - - /* Copy an empty buffer. */ - tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); - tt_assert(buf2); - tt_int_op(0, ==, generic_buffer_len(buf2)); - - /* Now try with a short buffer. */ - s = "And now comes an act of enormous enormance!"; - len = strlen(s); - generic_buffer_add(buf, s, len); - tt_int_op(len, ==, generic_buffer_len(buf)); - /* Add junk to buf2 so we can test replacing.*/ - generic_buffer_add(buf2, "BLARG", 5); - tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); - tt_int_op(len, ==, generic_buffer_len(buf2)); - generic_buffer_get(buf2, b, len); - test_mem_op(b, ==, s, len); - /* Now free buf2 and retry so we can test allocating */ - generic_buffer_free(buf2); - buf2 = NULL; - tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); - tt_int_op(len, ==, generic_buffer_len(buf2)); - generic_buffer_get(buf2, b, len); - test_mem_op(b, ==, s, len); - /* Clear buf for next test */ - generic_buffer_get(buf, b, len); - tt_int_op(generic_buffer_len(buf),==,0); - - /* Okay, now let's try a bigger buffer. */ - s = "Quis autem vel eum iure reprehenderit qui in ea voluptate velit " - "esse quam nihil molestiae consequatur, vel illum qui dolorem eum " - "fugiat quo voluptas nulla pariatur?"; - len = strlen(s); - for (i = 0; i < 256; ++i) { - b[0]=i; - generic_buffer_add(buf, b, 1); - generic_buffer_add(buf, s, len); - } - tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); - tt_int_op(generic_buffer_len(buf2), ==, generic_buffer_len(buf)); - for (i = 0; i < 256; ++i) { - generic_buffer_get(buf2, b, len+1); - tt_int_op((unsigned char)b[0],==,i); - test_mem_op(b+1, ==, s, len); - } - - done: - if (buf) - generic_buffer_free(buf); - if (buf2) - generic_buffer_free(buf2); -} - -/** Run unit tests for buffers.c */ -static void -test_buffers(void) -{ - char str[256]; - char str2[256]; - - buf_t *buf = NULL, *buf2 = NULL; - const char *cp; - - int j; - size_t r; - - /**** - * buf_new - ****/ - if (!(buf = buf_new())) - test_fail(); - - //test_eq(buf_capacity(buf), 4096); - test_eq(buf_datalen(buf), 0); - - /**** - * General pointer frobbing - */ - for (j=0;j<256;++j) { - str[j] = (char)j; - } - write_to_buf(str, 256, buf); - write_to_buf(str, 256, buf); - test_eq(buf_datalen(buf), 512); - fetch_from_buf(str2, 200, buf); - test_memeq(str, str2, 200); - test_eq(buf_datalen(buf), 312); - memset(str2, 0, sizeof(str2)); - - fetch_from_buf(str2, 256, buf); - test_memeq(str+200, str2, 56); - test_memeq(str, str2+56, 200); - test_eq(buf_datalen(buf), 56); - memset(str2, 0, sizeof(str2)); - /* Okay, now we should be 512 bytes into the 4096-byte buffer. If we add - * another 3584 bytes, we hit the end. */ - for (j=0;j<15;++j) { - write_to_buf(str, 256, buf); - } - assert_buf_ok(buf); - test_eq(buf_datalen(buf), 3896); - fetch_from_buf(str2, 56, buf); - test_eq(buf_datalen(buf), 3840); - test_memeq(str+200, str2, 56); - for (j=0;j<15;++j) { - memset(str2, 0, sizeof(str2)); - fetch_from_buf(str2, 256, buf); - test_memeq(str, str2, 256); - } - test_eq(buf_datalen(buf), 0); - buf_free(buf); - buf = NULL; - - /* Okay, now make sure growing can work. */ - buf = buf_new_with_capacity(16); - //test_eq(buf_capacity(buf), 16); - write_to_buf(str+1, 255, buf); - //test_eq(buf_capacity(buf), 256); - fetch_from_buf(str2, 254, buf); - test_memeq(str+1, str2, 254); - //test_eq(buf_capacity(buf), 256); - assert_buf_ok(buf); - write_to_buf(str, 32, buf); - //test_eq(buf_capacity(buf), 256); - assert_buf_ok(buf); - write_to_buf(str, 256, buf); - assert_buf_ok(buf); - //test_eq(buf_capacity(buf), 512); - test_eq(buf_datalen(buf), 33+256); - fetch_from_buf(str2, 33, buf); - test_eq(*str2, str[255]); - - test_memeq(str2+1, str, 32); - //test_eq(buf_capacity(buf), 512); - test_eq(buf_datalen(buf), 256); - fetch_from_buf(str2, 256, buf); - test_memeq(str, str2, 256); - - /* now try shrinking: case 1. */ - buf_free(buf); - buf = buf_new_with_capacity(33668); - for (j=0;j<67;++j) { - write_to_buf(str,255, buf); - } - //test_eq(buf_capacity(buf), 33668); - test_eq(buf_datalen(buf), 17085); - for (j=0; j < 40; ++j) { - fetch_from_buf(str2, 255,buf); - test_memeq(str2, str, 255); - } - - /* now try shrinking: case 2. */ - buf_free(buf); - buf = buf_new_with_capacity(33668); - for (j=0;j<67;++j) { - write_to_buf(str,255, buf); - } - for (j=0; j < 20; ++j) { - fetch_from_buf(str2, 255,buf); - test_memeq(str2, str, 255); - } - for (j=0;j<80;++j) { - write_to_buf(str,255, buf); - } - //test_eq(buf_capacity(buf),33668); - for (j=0; j < 120; ++j) { - fetch_from_buf(str2, 255,buf); - test_memeq(str2, str, 255); - } - - /* Move from buf to buf. */ - buf_free(buf); - buf = buf_new_with_capacity(4096); - buf2 = buf_new_with_capacity(4096); - for (j=0;j<100;++j) - write_to_buf(str, 255, buf); - test_eq(buf_datalen(buf), 25500); - for (j=0;j<100;++j) { - r = 10; - move_buf_to_buf(buf2, buf, &r); - test_eq(r, 0); - } - test_eq(buf_datalen(buf), 24500); - test_eq(buf_datalen(buf2), 1000); - for (j=0;j<3;++j) { - fetch_from_buf(str2, 255, buf2); - test_memeq(str2, str, 255); - } - r = 8192; /*big move*/ - move_buf_to_buf(buf2, buf, &r); - test_eq(r, 0); - r = 30000; /* incomplete move */ - move_buf_to_buf(buf2, buf, &r); - test_eq(r, 13692); - for (j=0;j<97;++j) { - fetch_from_buf(str2, 255, buf2); - test_memeq(str2, str, 255); - } - buf_free(buf); - buf_free(buf2); - buf = buf2 = NULL; - - buf = buf_new_with_capacity(5); - cp = "Testing. This is a moderately long Testing string."; - for (j = 0; cp[j]; j++) - write_to_buf(cp+j, 1, buf); - test_eq(0, buf_find_string_offset(buf, "Testing", 7)); - test_eq(1, buf_find_string_offset(buf, "esting", 6)); - test_eq(1, buf_find_string_offset(buf, "est", 3)); - test_eq(39, buf_find_string_offset(buf, "ing str", 7)); - test_eq(35, buf_find_string_offset(buf, "Testing str", 11)); - test_eq(32, buf_find_string_offset(buf, "ng ", 3)); - test_eq(43, buf_find_string_offset(buf, "string.", 7)); - test_eq(-1, buf_find_string_offset(buf, "shrdlu", 6)); - test_eq(-1, buf_find_string_offset(buf, "Testing thing", 13)); - test_eq(-1, buf_find_string_offset(buf, "ngx", 3)); - buf_free(buf); - buf = NULL; - - /* Try adding a string too long for any freelist. */ - { - char *cp = tor_malloc_zero(65536); - buf = buf_new(); - write_to_buf(cp, 65536, buf); - tor_free(cp); - - tt_int_op(buf_datalen(buf), ==, 65536); - buf_free(buf); - buf = NULL; - } - - done: - if (buf) - buf_free(buf); - if (buf2) - buf_free(buf2); -} - /** Run unit tests for the onion handshake code. */ static void test_onion_handshake(void) @@ -1019,6 +405,49 @@ test_ntor_handshake(void *arg) } #endif +/** Run unit tests for the onion queues. */ +static void +test_onion_queues(void) +{ + uint8_t buf1[TAP_ONIONSKIN_CHALLENGE_LEN] = {0}; + uint8_t buf2[NTOR_ONIONSKIN_LEN] = {0}; + + or_circuit_t *circ1 = or_circuit_new(0, NULL); + or_circuit_t *circ2 = or_circuit_new(0, NULL); + + create_cell_t *onionskin = NULL; + create_cell_t *create1 = tor_malloc_zero(sizeof(create_cell_t)); + create_cell_t *create2 = tor_malloc_zero(sizeof(create_cell_t)); + + create_cell_init(create1, CELL_CREATE, ONION_HANDSHAKE_TYPE_TAP, + TAP_ONIONSKIN_CHALLENGE_LEN, buf1); + create_cell_init(create2, CELL_CREATE, ONION_HANDSHAKE_TYPE_NTOR, + NTOR_ONIONSKIN_LEN, buf2); + + test_eq(0, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP)); + test_eq(0, onion_pending_add(circ1, create1)); + test_eq(1, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP)); + + test_eq(0, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR)); + test_eq(0, onion_pending_add(circ2, create2)); + test_eq(1, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR)); + + test_eq_ptr(circ2, onion_next_task(&onionskin)); + test_eq(1, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP)); + test_eq(0, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR)); + + clear_pending_onions(); + test_eq(0, onion_num_pending(ONION_HANDSHAKE_TYPE_TAP)); + test_eq(0, onion_num_pending(ONION_HANDSHAKE_TYPE_NTOR)); + + done: + ; +// circuit_free(circ1); +// circuit_free(circ2); + /* and free create1 and create2 */ + /* XXX leaks everything here */ +} + static void test_circuit_timeout(void) { @@ -1620,6 +1049,34 @@ test_rend_fns(void) tor_free(intro_points_encrypted); } + /* Record odd numbered fake-IPs using ipv6, even numbered fake-IPs + * using ipv4. Since our fake geoip database is the same between + * ipv4 and ipv6, we should get the same result no matter which + * address family we pick for each IP. */ +#define SET_TEST_ADDRESS(i) do { \ + if ((i) & 1) { \ + SET_TEST_IPV6(i); \ + tor_addr_from_in6(&addr, &in6); \ + } else { \ + tor_addr_from_ipv4h(&addr, (uint32_t) i); \ + } \ + } while (0) + + /* Make sure that country ID actually works. */ +#define SET_TEST_IPV6(i) \ + do { \ + set_uint32(in6.s6_addr + 12, htonl((uint32_t) (i))); \ + } while (0) +#define CHECK_COUNTRY(country, val) do { \ + /* test ipv4 country lookup */ \ + test_streq(country, \ + geoip_get_country_name(geoip_get_country_by_ipv4(val))); \ + /* test ipv6 country lookup */ \ + SET_TEST_IPV6(val); \ + test_streq(country, \ + geoip_get_country_name(geoip_get_country_by_ipv6(&in6))); \ + } while (0) + /** Run unit tests for GeoIP code. */ static void test_geoip(void) @@ -1630,7 +1087,8 @@ test_geoip(void) const char *bridge_stats_1 = "bridge-stats-end 2010-08-12 13:27:30 (86400 s)\n" "bridge-ips zz=24,xy=8\n" - "bridge-ip-versions v4=16,v6=16\n", + "bridge-ip-versions v4=16,v6=16\n" + "bridge-ip-transports <OR>=24\n", *dirreq_stats_1 = "dirreq-stats-end 2010-08-12 13:27:30 (86400 s)\n" "dirreq-v3-ips ab=8\n" @@ -1694,21 +1152,6 @@ test_geoip(void) test_eq(4, geoip_get_n_countries()); memset(&in6, 0, sizeof(in6)); - /* Make sure that country ID actually works. */ -#define SET_TEST_IPV6(i) \ - do { \ - set_uint32(in6.s6_addr + 12, htonl((uint32_t) (i))); \ - } while (0) -#define CHECK_COUNTRY(country, val) do { \ - /* test ipv4 country lookup */ \ - test_streq(country, \ - geoip_get_country_name(geoip_get_country_by_ipv4(val))); \ - /* test ipv6 country lookup */ \ - SET_TEST_IPV6(val); \ - test_streq(country, \ - geoip_get_country_name(geoip_get_country_by_ipv6(&in6))); \ - } while (0) - CHECK_COUNTRY("??", 3); CHECK_COUNTRY("ab", 32); CHECK_COUNTRY("??", 5); @@ -1721,40 +1164,25 @@ test_geoip(void) SET_TEST_IPV6(3); test_eq(0, geoip_get_country_by_ipv6(&in6)); -#undef CHECK_COUNTRY - - /* Record odd numbered fake-IPs using ipv6, even numbered fake-IPs - * using ipv4. Since our fake geoip database is the same between - * ipv4 and ipv6, we should get the same result no matter which - * address family we pick for each IP. */ -#define SET_TEST_ADDRESS(i) do { \ - if ((i) & 1) { \ - SET_TEST_IPV6(i); \ - tor_addr_from_in6(&addr, &in6); \ - } else { \ - tor_addr_from_ipv4h(&addr, (uint32_t) i); \ - } \ - } while (0) - get_options_mutable()->BridgeRelay = 1; get_options_mutable()->BridgeRecordUsageByCountry = 1; /* Put 9 observations in AB... */ for (i=32; i < 40; ++i) { SET_TEST_ADDRESS(i); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now-7200); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now-7200); } SET_TEST_ADDRESS(225); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now-7200); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now-7200); /* and 3 observations in XY, several times. */ for (j=0; j < 10; ++j) for (i=52; i < 55; ++i) { SET_TEST_ADDRESS(i); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now-3600); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now-3600); } /* and 17 observations in ZZ... */ for (i=110; i < 127; ++i) { SET_TEST_ADDRESS(i); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now); } geoip_get_client_history(GEOIP_CLIENT_CONNECT, &s, &v); test_assert(s); @@ -1803,7 +1231,7 @@ test_geoip(void) /* Start testing dirreq statistics by making sure that we don't collect * dirreq stats without initializing them. */ SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now); s = geoip_format_dirreq_stats(now + 86400); test_assert(!s); @@ -1811,7 +1239,7 @@ test_geoip(void) * dirreq-stats history string. */ geoip_dirreq_stats_init(now); SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now); s = geoip_format_dirreq_stats(now + 86400); test_streq(dirreq_stats_1, s); tor_free(s); @@ -1820,7 +1248,7 @@ test_geoip(void) * don't generate a history string. */ geoip_dirreq_stats_term(); SET_TEST_ADDRESS(101); - geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now); s = geoip_format_dirreq_stats(now + 86400); test_assert(!s); @@ -1828,7 +1256,7 @@ test_geoip(void) * that we get an all empty history string. */ geoip_dirreq_stats_init(now); SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_NETWORKSTATUS, &addr, NULL, now); geoip_reset_dirreq_stats(now); s = geoip_format_dirreq_stats(now + 86400); test_streq(dirreq_stats_2, s); @@ -1855,7 +1283,7 @@ test_geoip(void) /* Start testing entry statistics by making sure that we don't collect * anything without initializing entry stats. */ SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now); s = geoip_format_entry_stats(now + 86400); test_assert(!s); @@ -1863,7 +1291,7 @@ test_geoip(void) * entry-stats history string. */ geoip_entry_stats_init(now); SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now); s = geoip_format_entry_stats(now + 86400); test_streq(entry_stats_1, s); tor_free(s); @@ -1872,7 +1300,7 @@ test_geoip(void) * don't generate a history string. */ geoip_entry_stats_term(); SET_TEST_ADDRESS(101); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now); s = geoip_format_entry_stats(now + 86400); test_assert(!s); @@ -1880,15 +1308,12 @@ test_geoip(void) * that we get an all empty history string. */ geoip_entry_stats_init(now); SET_TEST_ADDRESS(100); - geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, now); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now); geoip_reset_entry_stats(now); s = geoip_format_entry_stats(now + 86400); test_streq(entry_stats_2, s); tor_free(s); -#undef SET_TEST_ADDRESS -#undef SET_TEST_IPV6 - /* Stop collecting entry statistics. */ geoip_entry_stats_term(); get_options_mutable()->EntryStatistics = 0; @@ -1898,6 +1323,79 @@ test_geoip(void) tor_free(v); } +static void +test_geoip_with_pt(void) +{ + time_t now = 1281533250; /* 2010-08-11 13:27:30 UTC */ + char *s = NULL; + int i; + tor_addr_t addr; + struct in6_addr in6; + + get_options_mutable()->BridgeRelay = 1; + get_options_mutable()->BridgeRecordUsageByCountry = 1; + + /* No clients seen yet. */ + s = geoip_get_transport_history(); + tor_assert(!s); + + /* 4 connections without a pluggable transport */ + for (i=0; i < 4; ++i) { + SET_TEST_ADDRESS(i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, NULL, now-7200); + } + + /* 9 connections with "alpha" */ + for (i=4; i < 13; ++i) { + SET_TEST_ADDRESS(i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "alpha", now-7200); + } + + /* one connection with "beta" */ + SET_TEST_ADDRESS(13); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "beta", now-7200); + + /* 14 connections with "charlie" */ + for (i=14; i < 28; ++i) { + SET_TEST_ADDRESS(i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "charlie", now-7200); + } + + /* 131 connections with "ddr" */ + for (i=28; i < 159; ++i) { + SET_TEST_ADDRESS(i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "ddr", now-7200); + } + + /* 8 connections with "entropy" */ + for (i=159; i < 167; ++i) { + SET_TEST_ADDRESS(i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "entropy", now-7200); + } + + /* 2 connections from the same IP with two different transports. */ + SET_TEST_ADDRESS(++i); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "fire", now-7200); + geoip_note_client_seen(GEOIP_CLIENT_CONNECT, &addr, "google", now-7200); + + /* Test the transport history string. */ + s = geoip_get_transport_history(); + tor_assert(s); + test_streq(s, "<OR>=8,alpha=16,beta=8,charlie=16,ddr=136," + "entropy=8,fire=8,google=8"); + + /* Stop collecting entry statistics. */ + geoip_entry_stats_term(); + get_options_mutable()->EntryStatistics = 0; + + done: + tor_free(s); +} + +#undef SET_TEST_ADDRESS +#undef SET_TEST_IPV6 +#undef CHECK_COUNTRY + /** Run unit tests for stats code. */ static void test_stats(void) @@ -2088,10 +1586,9 @@ const struct testcase_setup_t legacy_setup = { { #name, legacy_test_helper, TT_FORK, &legacy_setup, test_ ## name } static struct testcase_t test_array[] = { - ENT(buffers), - { "buffer_copy", test_buffer_copy, 0, NULL, NULL }, ENT(onion_handshake), { "bad_onion_handshake", test_bad_onion_handshake, 0, NULL, NULL }, + ENT(onion_queues), #ifdef CURVE25519_ENABLED { "ntor_handshake", test_ntor_handshake, 0, NULL, NULL }, #endif @@ -2099,29 +1596,14 @@ static struct testcase_t test_array[] = { ENT(policies), ENT(rend_fns), ENT(geoip), + FORK(geoip_with_pt), FORK(stats), END_OF_TESTCASES }; -#define SOCKSENT(name) \ - { #name, test_socks_##name, TT_FORK, &socks_setup, NULL } - -static struct testcase_t socks_tests[] = { - SOCKSENT(4_unsupported_commands), - SOCKSENT(4_supported_commands), - - SOCKSENT(5_unsupported_commands), - SOCKSENT(5_supported_commands), - SOCKSENT(5_no_authenticate), - SOCKSENT(5_auth_before_negotiation), - SOCKSENT(5_authenticate), - SOCKSENT(5_authenticate_with_data), - - END_OF_TESTCASES -}; - extern struct testcase_t addr_tests[]; +extern struct testcase_t buffer_tests[]; extern struct testcase_t crypto_tests[]; extern struct testcase_t container_tests[]; extern struct testcase_t util_tests[]; @@ -2136,11 +1618,15 @@ extern struct testcase_t circuitlist_tests[]; extern struct testcase_t circuitmux_tests[]; extern struct testcase_t cell_queue_tests[]; extern struct testcase_t options_tests[]; +extern struct testcase_t socks_tests[]; +extern struct testcase_t extorport_tests[]; +extern struct testcase_t controller_event_tests[]; extern struct testcase_t logging_tests[]; extern struct testcase_t backtrace_tests[]; static struct testgroup_t testgroups[] = { { "", test_array }, + { "buffer/", buffer_tests }, { "socks/", socks_tests }, { "addr/", addr_tests }, { "crypto/", crypto_tests }, @@ -2158,6 +1644,8 @@ static struct testgroup_t testgroups[] = { { "circuitlist/", circuitlist_tests }, { "circuitmux/", circuitmux_tests }, { "options/", options_tests }, + { "extorport/", extorport_tests }, + { "control/", controller_event_tests }, END_OF_GROUPS }; diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c new file mode 100644 index 0000000000..a009faa0be --- /dev/null +++ b/src/test/test_buffers.c @@ -0,0 +1,342 @@ +/* Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#define BUFFERS_PRIVATE +#include "or.h" +#include "buffers.h" +#include "ext_orport.h" +#include "test.h" + +/** Run unit tests for buffers.c */ +static void +test_buffers_basic(void *arg) +{ + char str[256]; + char str2[256]; + + buf_t *buf = NULL, *buf2 = NULL; + const char *cp; + + int j; + size_t r; + (void) arg; + + /**** + * buf_new + ****/ + if (!(buf = buf_new())) + test_fail(); + + //test_eq(buf_capacity(buf), 4096); + test_eq(buf_datalen(buf), 0); + + /**** + * General pointer frobbing + */ + for (j=0;j<256;++j) { + str[j] = (char)j; + } + write_to_buf(str, 256, buf); + write_to_buf(str, 256, buf); + test_eq(buf_datalen(buf), 512); + fetch_from_buf(str2, 200, buf); + test_memeq(str, str2, 200); + test_eq(buf_datalen(buf), 312); + memset(str2, 0, sizeof(str2)); + + fetch_from_buf(str2, 256, buf); + test_memeq(str+200, str2, 56); + test_memeq(str, str2+56, 200); + test_eq(buf_datalen(buf), 56); + memset(str2, 0, sizeof(str2)); + /* Okay, now we should be 512 bytes into the 4096-byte buffer. If we add + * another 3584 bytes, we hit the end. */ + for (j=0;j<15;++j) { + write_to_buf(str, 256, buf); + } + assert_buf_ok(buf); + test_eq(buf_datalen(buf), 3896); + fetch_from_buf(str2, 56, buf); + test_eq(buf_datalen(buf), 3840); + test_memeq(str+200, str2, 56); + for (j=0;j<15;++j) { + memset(str2, 0, sizeof(str2)); + fetch_from_buf(str2, 256, buf); + test_memeq(str, str2, 256); + } + test_eq(buf_datalen(buf), 0); + buf_free(buf); + buf = NULL; + + /* Okay, now make sure growing can work. */ + buf = buf_new_with_capacity(16); + //test_eq(buf_capacity(buf), 16); + write_to_buf(str+1, 255, buf); + //test_eq(buf_capacity(buf), 256); + fetch_from_buf(str2, 254, buf); + test_memeq(str+1, str2, 254); + //test_eq(buf_capacity(buf), 256); + assert_buf_ok(buf); + write_to_buf(str, 32, buf); + //test_eq(buf_capacity(buf), 256); + assert_buf_ok(buf); + write_to_buf(str, 256, buf); + assert_buf_ok(buf); + //test_eq(buf_capacity(buf), 512); + test_eq(buf_datalen(buf), 33+256); + fetch_from_buf(str2, 33, buf); + test_eq(*str2, str[255]); + + test_memeq(str2+1, str, 32); + //test_eq(buf_capacity(buf), 512); + test_eq(buf_datalen(buf), 256); + fetch_from_buf(str2, 256, buf); + test_memeq(str, str2, 256); + + /* now try shrinking: case 1. */ + buf_free(buf); + buf = buf_new_with_capacity(33668); + for (j=0;j<67;++j) { + write_to_buf(str,255, buf); + } + //test_eq(buf_capacity(buf), 33668); + test_eq(buf_datalen(buf), 17085); + for (j=0; j < 40; ++j) { + fetch_from_buf(str2, 255,buf); + test_memeq(str2, str, 255); + } + + /* now try shrinking: case 2. */ + buf_free(buf); + buf = buf_new_with_capacity(33668); + for (j=0;j<67;++j) { + write_to_buf(str,255, buf); + } + for (j=0; j < 20; ++j) { + fetch_from_buf(str2, 255,buf); + test_memeq(str2, str, 255); + } + for (j=0;j<80;++j) { + write_to_buf(str,255, buf); + } + //test_eq(buf_capacity(buf),33668); + for (j=0; j < 120; ++j) { + fetch_from_buf(str2, 255,buf); + test_memeq(str2, str, 255); + } + + /* Move from buf to buf. */ + buf_free(buf); + buf = buf_new_with_capacity(4096); + buf2 = buf_new_with_capacity(4096); + for (j=0;j<100;++j) + write_to_buf(str, 255, buf); + test_eq(buf_datalen(buf), 25500); + for (j=0;j<100;++j) { + r = 10; + move_buf_to_buf(buf2, buf, &r); + test_eq(r, 0); + } + test_eq(buf_datalen(buf), 24500); + test_eq(buf_datalen(buf2), 1000); + for (j=0;j<3;++j) { + fetch_from_buf(str2, 255, buf2); + test_memeq(str2, str, 255); + } + r = 8192; /*big move*/ + move_buf_to_buf(buf2, buf, &r); + test_eq(r, 0); + r = 30000; /* incomplete move */ + move_buf_to_buf(buf2, buf, &r); + test_eq(r, 13692); + for (j=0;j<97;++j) { + fetch_from_buf(str2, 255, buf2); + test_memeq(str2, str, 255); + } + buf_free(buf); + buf_free(buf2); + buf = buf2 = NULL; + + buf = buf_new_with_capacity(5); + cp = "Testing. This is a moderately long Testing string."; + for (j = 0; cp[j]; j++) + write_to_buf(cp+j, 1, buf); + test_eq(0, buf_find_string_offset(buf, "Testing", 7)); + test_eq(1, buf_find_string_offset(buf, "esting", 6)); + test_eq(1, buf_find_string_offset(buf, "est", 3)); + test_eq(39, buf_find_string_offset(buf, "ing str", 7)); + test_eq(35, buf_find_string_offset(buf, "Testing str", 11)); + test_eq(32, buf_find_string_offset(buf, "ng ", 3)); + test_eq(43, buf_find_string_offset(buf, "string.", 7)); + test_eq(-1, buf_find_string_offset(buf, "shrdlu", 6)); + test_eq(-1, buf_find_string_offset(buf, "Testing thing", 13)); + test_eq(-1, buf_find_string_offset(buf, "ngx", 3)); + buf_free(buf); + buf = NULL; + + /* Try adding a string too long for any freelist. */ + { + char *cp = tor_malloc_zero(65536); + buf = buf_new(); + write_to_buf(cp, 65536, buf); + tor_free(cp); + + tt_int_op(buf_datalen(buf), ==, 65536); + buf_free(buf); + buf = NULL; + } + + done: + if (buf) + buf_free(buf); + if (buf2) + buf_free(buf2); +} +static void +test_buffer_copy(void *arg) +{ + generic_buffer_t *buf=NULL, *buf2=NULL; + const char *s; + size_t len; + char b[256]; + int i; + (void)arg; + + buf = generic_buffer_new(); + tt_assert(buf); + + /* Copy an empty buffer. */ + tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); + tt_assert(buf2); + tt_int_op(0, ==, generic_buffer_len(buf2)); + + /* Now try with a short buffer. */ + s = "And now comes an act of enormous enormance!"; + len = strlen(s); + generic_buffer_add(buf, s, len); + tt_int_op(len, ==, generic_buffer_len(buf)); + /* Add junk to buf2 so we can test replacing.*/ + generic_buffer_add(buf2, "BLARG", 5); + tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); + tt_int_op(len, ==, generic_buffer_len(buf2)); + generic_buffer_get(buf2, b, len); + test_mem_op(b, ==, s, len); + /* Now free buf2 and retry so we can test allocating */ + generic_buffer_free(buf2); + buf2 = NULL; + tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); + tt_int_op(len, ==, generic_buffer_len(buf2)); + generic_buffer_get(buf2, b, len); + test_mem_op(b, ==, s, len); + /* Clear buf for next test */ + generic_buffer_get(buf, b, len); + tt_int_op(generic_buffer_len(buf),==,0); + + /* Okay, now let's try a bigger buffer. */ + s = "Quis autem vel eum iure reprehenderit qui in ea voluptate velit " + "esse quam nihil molestiae consequatur, vel illum qui dolorem eum " + "fugiat quo voluptas nulla pariatur?"; + len = strlen(s); + for (i = 0; i < 256; ++i) { + b[0]=i; + generic_buffer_add(buf, b, 1); + generic_buffer_add(buf, s, len); + } + tt_int_op(0, ==, generic_buffer_set_to_copy(&buf2, buf)); + tt_int_op(generic_buffer_len(buf2), ==, generic_buffer_len(buf)); + for (i = 0; i < 256; ++i) { + generic_buffer_get(buf2, b, len+1); + tt_int_op((unsigned char)b[0],==,i); + test_mem_op(b+1, ==, s, len); + } + + done: + if (buf) + generic_buffer_free(buf); + if (buf2) + generic_buffer_free(buf2); +} + +static void +test_buffer_ext_or_cmd(void *arg) +{ + ext_or_cmd_t *cmd = NULL; + generic_buffer_t *buf = generic_buffer_new(); + char *tmp = NULL; + (void) arg; + + /* Empty -- should give "not there. */ + tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, ==, cmd); + + /* Three bytes: shouldn't work. */ + generic_buffer_add(buf, "\x00\x20\x00", 3); + tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, ==, cmd); + tt_int_op(3, ==, generic_buffer_len(buf)); + + /* 0020 0000: That's a nil command. It should work. */ + generic_buffer_add(buf, "\x00", 1); + tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, !=, cmd); + tt_int_op(0x20, ==, cmd->cmd); + tt_int_op(0, ==, cmd->len); + tt_int_op(0, ==, generic_buffer_len(buf)); + ext_or_cmd_free(cmd); + cmd = NULL; + + /* Now try a length-6 command with one byte missing. */ + generic_buffer_add(buf, "\x10\x21\x00\x06""abcde", 9); + tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, ==, cmd); + generic_buffer_add(buf, "f", 1); + tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, !=, cmd); + tt_int_op(0x1021, ==, cmd->cmd); + tt_int_op(6, ==, cmd->len); + test_mem_op("abcdef", ==, cmd->body, 6); + tt_int_op(0, ==, generic_buffer_len(buf)); + ext_or_cmd_free(cmd); + cmd = NULL; + + /* Now try a length-10 command with 4 extra bytes. */ + generic_buffer_add(buf, "\xff\xff\x00\x0a" + "loremipsum\x10\x00\xff\xff", 18); + tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, !=, cmd); + tt_int_op(0xffff, ==, cmd->cmd); + tt_int_op(10, ==, cmd->len); + test_mem_op("loremipsum", ==, cmd->body, 10); + tt_int_op(4, ==, generic_buffer_len(buf)); + ext_or_cmd_free(cmd); + cmd = NULL; + + /* Finally, let's try a maximum-length command. We already have the header + * waiting. */ + tt_int_op(0, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tmp = tor_malloc_zero(65535); + generic_buffer_add(buf, tmp, 65535); + tt_int_op(1, ==, generic_buffer_fetch_ext_or_cmd(buf, &cmd)); + tt_ptr_op(NULL, !=, cmd); + tt_int_op(0x1000, ==, cmd->cmd); + tt_int_op(0xffff, ==, cmd->len); + test_mem_op(tmp, ==, cmd->body, 65535); + tt_int_op(0, ==, generic_buffer_len(buf)); + ext_or_cmd_free(cmd); + cmd = NULL; + + done: + ext_or_cmd_free(cmd); + generic_buffer_free(buf); + tor_free(tmp); +} + +struct testcase_t buffer_tests[] = { + { "basic", test_buffers_basic, 0, NULL, NULL }, + { "copy", test_buffer_copy, 0, NULL, NULL }, + { "ext_or_cmd", test_buffer_ext_or_cmd, 0, NULL, NULL }, + END_OF_TESTCASES +}; + diff --git a/src/test/test_cell_queue.c b/src/test/test_cell_queue.c index cf2d11ad5d..1eac073105 100644 --- a/src/test/test_cell_queue.c +++ b/src/test/test_cell_queue.c @@ -56,9 +56,11 @@ test_cq_manip(void *arg) "once-ler lerkim, sed do barbaloot tempor gluppitus ut labore et " "truffula magna aliqua.", sizeof(cell.payload)); - cell_queue_append_packed_copy(&cq, &cell, 1 /*wide*/, 0 /*stats*/); + cell_queue_append_packed_copy(NULL /*circ*/, &cq, 0 /*exitward*/, &cell, + 1 /*wide*/, 0 /*stats*/); cell.circ_id = 0x2013; - cell_queue_append_packed_copy(&cq, &cell, 0 /*wide*/, 0 /*stats*/); + cell_queue_append_packed_copy(NULL /*circ*/, &cq, 0 /*exitward*/, &cell, + 0 /*wide*/, 0 /*stats*/); tt_int_op(cq.n, ==, 2); pc_tmp = cell_queue_pop(&cq); diff --git a/src/test/test_cmdline_args.py b/src/test/test_cmdline_args.py new file mode 100755 index 0000000000..6d9cf44dbd --- /dev/null +++ b/src/test/test_cmdline_args.py @@ -0,0 +1,273 @@ +#!/usr/bin/python + +import binascii +import hashlib +import os +import re +import shutil +import subprocess +import sys +import tempfile +import unittest + +TOR = "./src/or/tor" +TOP_SRCDIR = "." + +if len(sys.argv) > 1: + TOR = sys.argv[1] + del sys.argv[1] + +if len(sys.argv) > 1: + TOP_SRCDIR = sys.argv[1] + del sys.argv[1] + +class UnexpectedSuccess(Exception): + pass + +class UnexpectedFailure(Exception): + pass + +def contents(fn): + f = open(fn) + try: + return f.read() + finally: + f.close() + +def run_tor(args, failure=False): + p = subprocess.Popen([TOR] + args, stdout=subprocess.PIPE) + output, _ = p.communicate() + result = p.poll() + if result and not failure: + raise UnexpectedFailure() + elif not result and failure: + raise UnexpectedSuccess() + return output + +def spaceify_fp(fp): + for i in xrange(0, len(fp), 4): + yield fp[i:i+4] + +def lines(s): + out = s.split("\n") + if out and out[-1] == '': + del out[-1] + return out + +def strip_log_junk(line): + m = re.match(r'([^\[]+\[[a-z]*\] *)(.*)', line) + if not m: + return ""+line + return m.group(2).strip() + +def randstring(entropy_bytes): + s = os.urandom(entropy_bytes) + return binascii.b2a_hex(s) + +def findLineContaining(lines, s): + for ln in lines: + if s in ln: + return True + return False + +class CmdlineTests(unittest.TestCase): + + def test_version(self): + out = run_tor(["--version"]) + self.failUnless(out.startswith("Tor version ")) + self.assertEquals(len(lines(out)), 1) + + def test_quiet(self): + out = run_tor(["--quiet", "--quumblebluffin", "1"], failure=True) + self.assertEquals(out, "") + + def test_help(self): + out = run_tor(["--help"], failure=False) + out2 = run_tor(["-h"], failure=False) + self.assert_(out.startswith("Copyright (c) 2001")) + self.assert_(out.endswith( + "tor -f <torrc> [args]\n" + "See man page for options, or https://www.torproject.org/ for documentation.\n")) + self.assert_(out == out2) + + def test_hush(self): + torrc = tempfile.NamedTemporaryFile(delete=False) + torrc.close() + try: + out = run_tor(["--hush", "-f", torrc.name, + "--quumblebluffin", "1"], failure=True) + finally: + os.unlink(torrc.name) + self.assertEquals(len(lines(out)), 2) + ln = [ strip_log_junk(l) for l in lines(out) ] + self.assertEquals(ln[0], "Failed to parse/validate config: Unknown option 'quumblebluffin'. Failing.") + self.assertEquals(ln[1], "Reading config failed--see warnings above.") + + def test_missing_argument(self): + out = run_tor(["--hush", "--hash-password"], failure=True) + self.assertEquals(len(lines(out)), 2) + ln = [ strip_log_junk(l) for l in lines(out) ] + self.assertEquals(ln[0], "Command-line option '--hash-password' with no value. Failing.") + + def test_hash_password(self): + out = run_tor(["--hash-password", "woodwose"]) + result = lines(out)[-1] + self.assertEquals(result[:3], "16:") + self.assertEquals(len(result), 61) + r = binascii.a2b_hex(result[3:]) + self.assertEquals(len(r), 29) + + salt, how, hashed = r[:8], r[8], r[9:] + self.assertEquals(len(hashed), 20) + + count = (16 + (ord(how) & 15)) << ((ord(how) >> 4) + 6) + stuff = salt + "woodwose" + repetitions = count // len(stuff) + 1 + inp = stuff * repetitions + inp = inp[:count] + + self.assertEquals(hashlib.sha1(inp).digest(), hashed) + + def test_digests(self): + main_c = os.path.join(TOP_SRCDIR, "src", "or", "main.c") + + if os.stat(TOR).st_mtime < os.stat(main_c).st_mtime: + self.skipTest(TOR+" not up to date") + out = run_tor(["--digests"]) + main_line = [ l for l in lines(out) if l.endswith("/main.c") ] + digest, name = main_line[0].split() + actual = hashlib.sha1(open(main_c).read()).hexdigest() + self.assertEquals(digest, actual) + + def test_dump_options(self): + default_torrc = tempfile.NamedTemporaryFile(delete=False) + torrc = tempfile.NamedTemporaryFile(delete=False) + torrc.write("SocksPort 9999") + torrc.close() + default_torrc.write("SafeLogging 0") + default_torrc.close() + out_sh = out_nb = out_fl = None + opts = [ "-f", torrc.name, + "--defaults-torrc", default_torrc.name ] + try: + out_sh = run_tor(["--dump-config", "short"]+opts) + out_nb = run_tor(["--dump-config", "non-builtin"]+opts) + out_fl = run_tor(["--dump-config", "full"]+opts) + out_nr = run_tor(["--dump-config", "bliznert"]+opts, + failure=True) + + out_verif = run_tor(["--verify-config"]+opts) + finally: + os.unlink(torrc.name) + os.unlink(default_torrc.name) + + self.assertEquals(len(lines(out_sh)), 2) + self.assert_(lines(out_sh)[0].startswith("DataDirectory ")) + self.assertEquals(lines(out_sh)[1:], + [ "SocksPort 9999" ]) + + self.assertEquals(len(lines(out_nb)), 2) + self.assertEquals(lines(out_nb), + [ "SafeLogging 0", + "SocksPort 9999" ]) + + out_fl = lines(out_fl) + self.assert_(len(out_fl) > 100) + self.assert_("SocksPort 9999" in out_fl) + self.assert_("SafeLogging 0" in out_fl) + self.assert_("ClientOnly 0" in out_fl) + + self.assert_(out_verif.endswith("Configuration was valid\n")) + + def test_list_fingerprint(self): + tmpdir = tempfile.mkdtemp(prefix='ttca_') + torrc = tempfile.NamedTemporaryFile(delete=False) + torrc.write("ORPort 9999\n") + torrc.write("DataDirectory %s\n"%tmpdir) + torrc.write("Nickname tippi") + torrc.close() + opts = ["-f", torrc.name] + try: + out = run_tor(["--list-fingerprint"]+opts) + fp = contents(os.path.join(tmpdir, "fingerprint")) + finally: + os.unlink(torrc.name) + shutil.rmtree(tmpdir) + + out = lines(out) + lastlog = strip_log_junk(out[-2]) + lastline = out[-1] + fp = fp.strip() + nn_fp = fp.split()[0] + space_fp = " ".join(spaceify_fp(fp.split()[1])) + self.assertEquals(lastlog, + "Your Tor server's identity key fingerprint is '%s'"%fp) + self.assertEquals(lastline, "tippi %s"%space_fp) + self.assertEquals(nn_fp, "tippi") + + def test_list_options(self): + out = lines(run_tor(["--list-torrc-options"])) + self.assert_(len(out)>100) + self.assert_(out[0] <= 'AccountingMax') + self.assert_("UseBridges" in out) + self.assert_("SocksPort" in out) + + def test_cmdline_args(self): + default_torrc = tempfile.NamedTemporaryFile(delete=False) + torrc = tempfile.NamedTemporaryFile(delete=False) + torrc.write("SocksPort 9999\n") + torrc.write("SocksPort 9998\n") + torrc.write("ORPort 9000\n") + torrc.write("ORPort 9001\n") + torrc.write("Nickname eleventeen\n") + torrc.write("ControlPort 9500\n") + torrc.close() + default_torrc.write("") + default_torrc.close() + out_sh = out_nb = out_fl = None + opts = [ "-f", torrc.name, + "--defaults-torrc", default_torrc.name, + "--dump-config", "short" ] + try: + out_1 = run_tor(opts) + out_2 = run_tor(opts+["+ORPort", "9003", + "SocksPort", "9090", + "/ControlPort", + "/TransPort", + "+ExtORPort", "9005"]) + finally: + os.unlink(torrc.name) + os.unlink(default_torrc.name) + + out_1 = [ l for l in lines(out_1) if not l.startswith("DataDir") ] + out_2 = [ l for l in lines(out_2) if not l.startswith("DataDir") ] + + self.assertEquals(out_1, + ["ControlPort 9500", + "Nickname eleventeen", + "ORPort 9000", + "ORPort 9001", + "SocksPort 9999", + "SocksPort 9998"]) + self.assertEquals(out_2, + ["ExtORPort 9005", + "Nickname eleventeen", + "ORPort 9000", + "ORPort 9001", + "ORPort 9003", + "SocksPort 9090"]) + + def test_missing_torrc(self): + fname = "nonexistent_file_"+randstring(8) + out = run_tor(["-f", fname, "--verify-config"], failure=True) + ln = [ strip_log_junk(l) for l in lines(out) ] + self.assert_("Unable to open configuration file" in ln[-2]) + self.assert_("Reading config failed" in ln[-1]) + + out = run_tor(["-f", fname, "--verify-config", "--ignore-missing-torrc"]) + ln = [ strip_log_junk(l) for l in lines(out) ] + self.assert_(findLineContaining(ln, ", using reasonable defaults")) + self.assert_("Configuration was valid" in ln[-1]) + +if __name__ == '__main__': + unittest.main() diff --git a/src/test/test_config.c b/src/test/test_config.c index 3848d352d5..6a285db6e3 100644 --- a/src/test/test_config.c +++ b/src/test/test_config.c @@ -4,6 +4,8 @@ /* See LICENSE for licensing information */ #include "orconfig.h" + +#define CONFIG_PRIVATE #include "or.h" #include "addressmap.h" #include "config.h" @@ -509,6 +511,43 @@ test_config_parse_transport_options_line(void *arg) } } +// Tests if an options with MyFamily fingerprints missing '$' normalises +// them correctly and also ensure it also works with multiple fingerprints +static void +test_config_fix_my_family(void *arg) +{ + char *err = NULL; + const char *family = "$1111111111111111111111111111111111111111, " + "1111111111111111111111111111111111111112, " + "$1111111111111111111111111111111111111113"; + + or_options_t* options = options_new(); + or_options_t* defaults = options_new(); + (void) arg; + + options_init(options); + options_init(defaults); + options->MyFamily = tor_strdup(family); + + options_validate(NULL, options, defaults, 0, &err) ; + + if (err != NULL) { + TT_FAIL(("options_validate failed: %s", err)); + } + + test_streq(options->MyFamily, "$1111111111111111111111111111111111111111, " + "$1111111111111111111111111111111111111112, " + "$1111111111111111111111111111111111111113"); + + done: + if (err != NULL) { + tor_free(err); + } + + or_options_free(options); + or_options_free(defaults); +} + #define CONFIG_TEST(name, flags) \ { #name, test_config_ ## name, flags, NULL, NULL } @@ -518,6 +557,7 @@ struct testcase_t config_tests[] = { CONFIG_TEST(parse_transport_options_line, 0), CONFIG_TEST(check_or_create_data_subdir, TT_FORK), CONFIG_TEST(write_to_data_subdir, TT_FORK), + CONFIG_TEST(fix_my_family, 0), END_OF_TESTCASES }; diff --git a/src/test/test_containers.c b/src/test/test_containers.c index 005e102e25..067c4c1907 100644 --- a/src/test/test_containers.c +++ b/src/test/test_containers.c @@ -469,6 +469,51 @@ test_container_smartlist_join(void) tor_free(joined); } +static void +test_container_smartlist_ints_eq(void *arg) +{ + smartlist_t *sl1 = NULL, *sl2 = NULL; + int x; + (void)arg; + + tt_assert(smartlist_ints_eq(NULL, NULL)); + + sl1 = smartlist_new(); + tt_assert(!smartlist_ints_eq(sl1, NULL)); + tt_assert(!smartlist_ints_eq(NULL, sl1)); + + sl2 = smartlist_new(); + tt_assert(smartlist_ints_eq(sl1, sl2)); + + x = 5; + smartlist_add(sl1, tor_memdup(&x, sizeof(int))); + smartlist_add(sl2, tor_memdup(&x, sizeof(int))); + x = 90; + smartlist_add(sl1, tor_memdup(&x, sizeof(int))); + smartlist_add(sl2, tor_memdup(&x, sizeof(int))); + tt_assert(smartlist_ints_eq(sl1, sl2)); + + x = -50; + smartlist_add(sl1, tor_memdup(&x, sizeof(int))); + tt_assert(! smartlist_ints_eq(sl1, sl2)); + tt_assert(! smartlist_ints_eq(sl2, sl1)); + smartlist_add(sl2, tor_memdup(&x, sizeof(int))); + tt_assert(smartlist_ints_eq(sl1, sl2)); + + *(int*)smartlist_get(sl1, 1) = 101010; + tt_assert(! smartlist_ints_eq(sl2, sl1)); + *(int*)smartlist_get(sl2, 1) = 101010; + tt_assert(smartlist_ints_eq(sl1, sl2)); + + done: + if (sl1) + SMARTLIST_FOREACH(sl1, int *, ip, tor_free(ip)); + if (sl2) + SMARTLIST_FOREACH(sl2, int *, ip, tor_free(ip)); + smartlist_free(sl1); + smartlist_free(sl2); +} + /** Run unit tests for bitarray code */ static void test_container_bitarray(void) @@ -784,7 +829,7 @@ test_container_order_functions(void) } static void -test_di_map(void *arg) +test_container_di_map(void *arg) { di_digest256_map_t *map = NULL; const uint8_t key1[] = "In view of the fact that it was "; @@ -856,12 +901,12 @@ test_container_fp_pair_map(void) memset(fp6.second, 0x62, DIGEST_LEN); v = fp_pair_map_set(map, &fp1, (void*)99); - test_eq(v, NULL); + tt_ptr_op(v, ==, NULL); test_assert(!fp_pair_map_isempty(map)); v = fp_pair_map_set(map, &fp2, (void*)101); - test_eq(v, NULL); + tt_ptr_op(v, ==, NULL); v = fp_pair_map_set(map, &fp1, (void*)100); - test_eq(v, (void*)99); + tt_ptr_op(v, ==, (void*)99); test_eq_ptr(fp_pair_map_get(map, &fp1), (void*)100); test_eq_ptr(fp_pair_map_get(map, &fp2), (void*)101); test_eq_ptr(fp_pair_map_get(map, &fp3), NULL); @@ -912,18 +957,22 @@ test_container_fp_pair_map(void) #define CONTAINER_LEGACY(name) \ { #name, legacy_test_helper, 0, &legacy_setup, test_container_ ## name } +#define CONTAINER(name, flags) \ + { #name, test_container_ ## name, (flags), NULL, NULL } + struct testcase_t container_tests[] = { CONTAINER_LEGACY(smartlist_basic), CONTAINER_LEGACY(smartlist_strings), CONTAINER_LEGACY(smartlist_overlap), CONTAINER_LEGACY(smartlist_digests), CONTAINER_LEGACY(smartlist_join), + CONTAINER(smartlist_ints_eq, 0), CONTAINER_LEGACY(bitarray), CONTAINER_LEGACY(digestset), CONTAINER_LEGACY(strmap), CONTAINER_LEGACY(pqueue), CONTAINER_LEGACY(order_functions), - { "di_map", test_di_map, 0, NULL, NULL }, + CONTAINER(di_map, 0), CONTAINER_LEGACY(fp_pair_map), END_OF_TESTCASES }; diff --git a/src/test/test_controller_events.c b/src/test/test_controller_events.c new file mode 100644 index 0000000000..04a04de5b0 --- /dev/null +++ b/src/test/test_controller_events.c @@ -0,0 +1,287 @@ +/* Copyright (c) 2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#define CONNECTION_PRIVATE +#define TOR_CHANNEL_INTERNAL_ +#define CONTROL_PRIVATE +#include "or.h" +#include "channel.h" +#include "channeltls.h" +#include "connection.h" +#include "control.h" +#include "test.h" + +static void +help_test_bucket_note_empty(uint32_t expected_msec_since_midnight, + int tokens_before, size_t tokens_removed, + uint32_t msec_since_epoch) +{ + uint32_t timestamp_var = 0; + struct timeval tvnow; + tvnow.tv_sec = msec_since_epoch / 1000; + tvnow.tv_usec = (msec_since_epoch % 1000) * 1000; + connection_buckets_note_empty_ts(×tamp_var, tokens_before, + tokens_removed, &tvnow); + tt_int_op(expected_msec_since_midnight, ==, timestamp_var); + + done: + ; +} + +static void +test_cntev_bucket_note_empty(void *arg) +{ + (void)arg; + + /* Two cases with nothing to note, because bucket was empty before; + * 86442200 == 1970-01-02 00:00:42.200000 */ + help_test_bucket_note_empty(0, 0, 0, 86442200); + help_test_bucket_note_empty(0, -100, 100, 86442200); + + /* Nothing to note, because bucket has not been emptied. */ + help_test_bucket_note_empty(0, 101, 100, 86442200); + + /* Bucket was emptied, note 42200 msec since midnight. */ + help_test_bucket_note_empty(42200, 101, 101, 86442200); + help_test_bucket_note_empty(42200, 101, 102, 86442200); +} + +static void +test_cntev_bucket_millis_empty(void *arg) +{ + struct timeval tvnow; + (void)arg; + + /* 1970-01-02 00:00:42.200000 */ + tvnow.tv_sec = 86400 + 42; + tvnow.tv_usec = 200000; + + /* Bucket has not been refilled. */ + tt_int_op(0, ==, bucket_millis_empty(0, 42120, 0, 100, &tvnow)); + tt_int_op(0, ==, bucket_millis_empty(-10, 42120, -10, 100, &tvnow)); + + /* Bucket was not empty. */ + tt_int_op(0, ==, bucket_millis_empty(10, 42120, 20, 100, &tvnow)); + + /* Bucket has been emptied 80 msec ago and has just been refilled. */ + tt_int_op(80, ==, bucket_millis_empty(-20, 42120, -10, 100, &tvnow)); + tt_int_op(80, ==, bucket_millis_empty(-10, 42120, 0, 100, &tvnow)); + tt_int_op(80, ==, bucket_millis_empty(0, 42120, 10, 100, &tvnow)); + + /* Bucket has been emptied 180 msec ago, last refill was 100 msec ago + * which was insufficient to make it positive, so cap msec at 100. */ + tt_int_op(100, ==, bucket_millis_empty(0, 42020, 1, 100, &tvnow)); + + /* 1970-01-02 00:00:00:050000 */ + tvnow.tv_sec = 86400; + tvnow.tv_usec = 50000; + + /* Last emptied 30 msec before midnight, tvnow is 50 msec after + * midnight, that's 80 msec in total. */ + tt_int_op(80, ==, bucket_millis_empty(0, 86400000 - 30, 1, 100, &tvnow)); + + done: + ; +} + +static void +add_testing_cell_stats_entry(circuit_t *circ, uint8_t command, + unsigned int waiting_time, + unsigned int removed, unsigned int exitward) +{ + testing_cell_stats_entry_t *ent = tor_malloc_zero( + sizeof(testing_cell_stats_entry_t)); + ent->command = command; + ent->waiting_time = waiting_time; + ent->removed = removed; + ent->exitward = exitward; + if (!circ->testing_cell_stats) + circ->testing_cell_stats = smartlist_new(); + smartlist_add(circ->testing_cell_stats, ent); +} + +static void +test_cntev_sum_up_cell_stats(void *arg) +{ + or_circuit_t *or_circ; + circuit_t *circ; + cell_stats_t *cell_stats; + (void)arg; + + or_circ = tor_malloc_zero(sizeof(or_circuit_t)); + or_circ->base_.magic = OR_CIRCUIT_MAGIC; + or_circ->base_.purpose = CIRCUIT_PURPOSE_OR; + circ = TO_CIRCUIT(or_circ); + + /* A single RELAY cell was added to the appward queue. */ + cell_stats = tor_malloc_zero(sizeof(cell_stats_t)); + add_testing_cell_stats_entry(circ, CELL_RELAY, 0, 0, 0); + sum_up_cell_stats_by_command(circ, cell_stats); + tt_int_op(1, ==, cell_stats->added_cells_appward[CELL_RELAY]); + + /* A single RELAY cell was added to the exitward queue. */ + add_testing_cell_stats_entry(circ, CELL_RELAY, 0, 0, 1); + sum_up_cell_stats_by_command(circ, cell_stats); + tt_int_op(1, ==, cell_stats->added_cells_exitward[CELL_RELAY]); + + /* A single RELAY cell was removed from the appward queue where it spent + * 20 msec. */ + add_testing_cell_stats_entry(circ, CELL_RELAY, 2, 1, 0); + sum_up_cell_stats_by_command(circ, cell_stats); + tt_int_op(20, ==, cell_stats->total_time_appward[CELL_RELAY]); + tt_int_op(1, ==, cell_stats->removed_cells_appward[CELL_RELAY]); + + /* A single RELAY cell was removed from the exitward queue where it + * spent 30 msec. */ + add_testing_cell_stats_entry(circ, CELL_RELAY, 3, 1, 1); + sum_up_cell_stats_by_command(circ, cell_stats); + tt_int_op(30, ==, cell_stats->total_time_exitward[CELL_RELAY]); + tt_int_op(1, ==, cell_stats->removed_cells_exitward[CELL_RELAY]); + + done: + ; +} + +static void +test_cntev_append_cell_stats(void *arg) +{ + smartlist_t *event_parts; + const char *key = "Z"; + uint64_t include_if_non_zero[CELL_COMMAND_MAX_ + 1], + number_to_include[CELL_COMMAND_MAX_ + 1]; + (void)arg; + + event_parts = smartlist_new(); + memset(include_if_non_zero, 0, + (CELL_COMMAND_MAX_ + 1) * sizeof(uint64_t)); + memset(number_to_include, 0, + (CELL_COMMAND_MAX_ + 1) * sizeof(uint64_t)); + + /* All array entries empty. */ + append_cell_stats_by_command(event_parts, key, + include_if_non_zero, + number_to_include); + tt_int_op(0, ==, smartlist_len(event_parts)); + + /* There's a RELAY cell to include, but the corresponding field in + * include_if_non_zero is still zero. */ + number_to_include[CELL_RELAY] = 1; + append_cell_stats_by_command(event_parts, key, + include_if_non_zero, + number_to_include); + tt_int_op(0, ==, smartlist_len(event_parts)); + + /* Now include single RELAY cell. */ + include_if_non_zero[CELL_RELAY] = 2; + append_cell_stats_by_command(event_parts, key, + include_if_non_zero, + number_to_include); + tt_str_op("Z=relay:1", ==, smartlist_pop_last(event_parts)); + + /* Add four CREATE cells. */ + include_if_non_zero[CELL_CREATE] = 3; + number_to_include[CELL_CREATE] = 4; + append_cell_stats_by_command(event_parts, key, + include_if_non_zero, + number_to_include); + tt_str_op("Z=create:4,relay:1", ==, smartlist_pop_last(event_parts)); + + done: + ; +} + +static void +test_cntev_format_cell_stats(void *arg) +{ + char *event_string; + origin_circuit_t *ocirc; + or_circuit_t *or_circ; + cell_stats_t *cell_stats; + channel_tls_t *n_chan, *p_chan; + (void)arg; + + n_chan = tor_malloc_zero(sizeof(channel_tls_t)); + n_chan->base_.global_identifier = 1; + + ocirc = tor_malloc_zero(sizeof(origin_circuit_t)); + ocirc->base_.magic = ORIGIN_CIRCUIT_MAGIC; + ocirc->base_.purpose = CIRCUIT_PURPOSE_C_GENERAL; + ocirc->global_identifier = 2; + ocirc->base_.n_circ_id = 3; + ocirc->base_.n_chan = &(n_chan->base_); + + /* Origin circuit was completely idle. */ + cell_stats = tor_malloc_zero(sizeof(cell_stats_t)); + format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats); + tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1", ==, event_string); + + /* Origin circuit had 4 RELAY cells added to its exitward queue. */ + cell_stats->added_cells_exitward[CELL_RELAY] = 4; + format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats); + tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4", + ==, event_string); + + /* Origin circuit also had 5 CREATE2 cells added to its exitward + * queue. */ + cell_stats->added_cells_exitward[CELL_CREATE2] = 5; + format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats); + tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4," + "create2:5", ==, event_string); + + /* Origin circuit also had 7 RELAY cells removed from its exitward queue + * which together spent 6 msec in the queue. */ + cell_stats->total_time_exitward[CELL_RELAY] = 6; + cell_stats->removed_cells_exitward[CELL_RELAY] = 7; + format_cell_stats(&event_string, TO_CIRCUIT(ocirc), cell_stats); + tt_str_op("ID=2 OutboundQueue=3 OutboundConn=1 OutboundAdded=relay:4," + "create2:5 OutboundRemoved=relay:7 OutboundTime=relay:6", + ==, event_string); + + p_chan = tor_malloc_zero(sizeof(channel_tls_t)); + p_chan->base_.global_identifier = 2; + + or_circ = tor_malloc_zero(sizeof(or_circuit_t)); + or_circ->base_.magic = OR_CIRCUIT_MAGIC; + or_circ->base_.purpose = CIRCUIT_PURPOSE_OR; + or_circ->p_circ_id = 8; + or_circ->p_chan = &(p_chan->base_); + or_circ->base_.n_circ_id = 9; + or_circ->base_.n_chan = &(n_chan->base_); + + /* OR circuit was idle. */ + cell_stats = tor_malloc_zero(sizeof(cell_stats_t)); + format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats); + tt_str_op("InboundQueue=8 InboundConn=2 OutboundQueue=9 OutboundConn=1", + ==, event_string); + + /* OR circuit had 3 RELAY cells added to its appward queue. */ + cell_stats->added_cells_appward[CELL_RELAY] = 3; + format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats); + tt_str_op("InboundQueue=8 InboundConn=2 InboundAdded=relay:3 " + "OutboundQueue=9 OutboundConn=1", ==, event_string); + + /* OR circuit had 7 RELAY cells removed from its appward queue which + * together spent 6 msec in the queue. */ + cell_stats->total_time_appward[CELL_RELAY] = 6; + cell_stats->removed_cells_appward[CELL_RELAY] = 7; + format_cell_stats(&event_string, TO_CIRCUIT(or_circ), cell_stats); + tt_str_op("InboundQueue=8 InboundConn=2 InboundAdded=relay:3 " + "InboundRemoved=relay:7 InboundTime=relay:6 " + "OutboundQueue=9 OutboundConn=1", ==, event_string); + + done: + ; +} + +#define TEST(name, flags) \ + { #name, test_cntev_ ## name, flags, 0, NULL } + +struct testcase_t controller_event_tests[] = { + TEST(bucket_note_empty, 0), + TEST(bucket_millis_empty, 0), + TEST(sum_up_cell_stats, 0), + TEST(append_cell_stats, 0), + TEST(format_cell_stats, 0), + END_OF_TESTCASES +}; + diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 6c2915d094..a82ccb086c 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -214,8 +214,10 @@ test_dir_formats(void) strlcat(buf2, "signing-key\n", sizeof(buf2)); strlcat(buf2, pk1_str, sizeof(buf2)); strlcat(buf2, "hidden-service-dir\n", sizeof(buf2)); +#ifdef CURVE25519_ENABLED strlcat(buf2, "ntor-onion-key " "skyinAnvardNostarsNomoonNowindormistsorsnow=\n", sizeof(buf2)); +#endif strlcat(buf2, "accept *:80\nreject 18.0.0.0/8:24\n", sizeof(buf2)); strlcat(buf2, "router-signature\n", sizeof(buf2)); @@ -235,9 +237,11 @@ test_dir_formats(void) test_eq(rp2->bandwidthrate, r2->bandwidthrate); test_eq(rp2->bandwidthburst, r2->bandwidthburst); test_eq(rp2->bandwidthcapacity, r2->bandwidthcapacity); +#ifdef CURVE25519_ENABLED test_memeq(rp2->onion_curve25519_pkey->public_key, r2->onion_curve25519_pkey->public_key, CURVE25519_PUBKEY_LEN); +#endif test_assert(crypto_pk_cmp_keys(rp2->onion_pkey, pk2) == 0); test_assert(crypto_pk_cmp_keys(rp2->identity_pkey, pk1) == 0); @@ -2364,6 +2368,74 @@ test_dir_fmt_control_ns(void *arg) tor_free(s); } +static void +test_dir_http_handling(void *args) +{ + char *url = NULL; + (void)args; + + /* Parse http url tests: */ + /* Good headers */ + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1\r\n" + "Host: example.com\r\n" + "User-Agent: Mozilla/5.0 (Windows;" + " U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n", + &url), 0); + test_streq(url, "/tor/a/b/c.txt"); + tor_free(url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.0\r\n", &url), 0); + test_streq(url, "/tor/a/b/c.txt"); + tor_free(url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.600\r\n", &url), 0); + test_streq(url, "/tor/a/b/c.txt"); + tor_free(url); + + /* Should prepend '/tor/' to url if required */ + test_eq(parse_http_url("GET /a/b/c.txt HTTP/1.1\r\n" + "Host: example.com\r\n" + "User-Agent: Mozilla/5.0 (Windows;" + " U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n", + &url), 0); + test_streq(url, "/tor/a/b/c.txt"); + tor_free(url); + + /* Bad headers -- no HTTP/1.x*/ + test_eq(parse_http_url("GET /a/b/c.txt\r\n" + "Host: example.com\r\n" + "User-Agent: Mozilla/5.0 (Windows;" + " U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n", + &url), -1); + tt_assert(!url); + + /* Bad headers */ + test_eq(parse_http_url("GET /a/b/c.txt\r\n" + "Host: example.com\r\n" + "User-Agent: Mozilla/5.0 (Windows;" + " U; Windows NT 6.1; en-US; rv:1.9.1.5)\r\n", + &url), -1); + tt_assert(!url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt", &url), -1); + tt_assert(!url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1", &url), -1); + tt_assert(!url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.1x\r\n", &url), -1); + tt_assert(!url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.", &url), -1); + tt_assert(!url); + + test_eq(parse_http_url("GET /tor/a/b/c.txt HTTP/1.\r", &url), -1); + tt_assert(!url); + + done: + tor_free(url); +} + #define DIR_LEGACY(name) \ { #name, legacy_test_helper, TT_FORK, &legacy_setup, test_dir_ ## name } @@ -2386,6 +2458,7 @@ struct testcase_t dir_tests[] = { DIR_LEGACY(clip_unmeasured_bw_kb_alt), DIR(v2_dir, TT_FORK), DIR(fmt_control_ns, 0), + DIR(http_handling, 0), END_OF_TESTCASES }; diff --git a/src/test/test_extorport.c b/src/test/test_extorport.c new file mode 100644 index 0000000000..7e38ba57dc --- /dev/null +++ b/src/test/test_extorport.c @@ -0,0 +1,604 @@ +/* Copyright (c) 2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#define CONNECTION_PRIVATE +#define EXT_ORPORT_PRIVATE +#define MAIN_PRIVATE +#include "or.h" +#include "buffers.h" +#include "connection.h" +#include "connection_or.h" +#include "config.h" +#include "control.h" +#include "ext_orport.h" +#include "main.h" +#include "test.h" + +/* Test connection_or_remove_from_ext_or_id_map and + * connection_or_set_ext_or_identifier */ +static void +test_ext_or_id_map(void *arg) +{ + or_connection_t *c1 = NULL, *c2 = NULL, *c3 = NULL; + char *idp = NULL, *idp2 = NULL; + (void)arg; + + /* pre-initialization */ + tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx")); + + c1 = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + c2 = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + c3 = or_connection_new(CONN_TYPE_OR, AF_INET); + + tt_ptr_op(c1->ext_or_conn_id, !=, NULL); + tt_ptr_op(c2->ext_or_conn_id, !=, NULL); + tt_ptr_op(c3->ext_or_conn_id, ==, NULL); + + tt_ptr_op(c1, ==, connection_or_get_by_ext_or_id(c1->ext_or_conn_id)); + tt_ptr_op(c2, ==, connection_or_get_by_ext_or_id(c2->ext_or_conn_id)); + tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id("xxxxxxxxxxxxxxxxxxxx")); + + idp = tor_memdup(c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN); + + /* Give c2 a new ID. */ + connection_or_set_ext_or_identifier(c2); + test_mem_op(idp, !=, c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN); + idp2 = tor_memdup(c2->ext_or_conn_id, EXT_OR_CONN_ID_LEN); + tt_assert(!tor_digest_is_zero(idp2)); + + tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp)); + tt_ptr_op(c2, ==, connection_or_get_by_ext_or_id(idp2)); + + /* Now remove it. */ + connection_or_remove_from_ext_or_id_map(c2); + tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp)); + tt_ptr_op(NULL, ==, connection_or_get_by_ext_or_id(idp2)); + + done: + if (c1) + connection_free_(TO_CONN(c1)); + if (c2) + connection_free_(TO_CONN(c2)); + if (c3) + connection_free_(TO_CONN(c3)); + tor_free(idp); + tor_free(idp2); + connection_or_clear_ext_or_id_map(); +} + +/* Simple connection_write_to_buf_impl_ replacement that unconditionally + * writes to outbuf. */ +static void +connection_write_to_buf_impl_replacement(const char *string, size_t len, + connection_t *conn, int zlib) +{ + (void) zlib; + + tor_assert(string); + tor_assert(conn); + write_to_buf(string, len, conn->outbuf); +} + +static char * +buf_get_contents(buf_t *buf, size_t *sz_out) +{ + char *out; + *sz_out = buf_datalen(buf); + if (*sz_out >= ULONG_MAX) + return NULL; /* C'mon, really? */ + out = tor_malloc(*sz_out + 1); + if (fetch_from_buf(out, (unsigned long)*sz_out, buf) != 0) { + tor_free(out); + return NULL; + } + out[*sz_out] = '\0'; /* Hopefully gratuitous. */ + return out; +} + +static void +test_ext_or_write_command(void *arg) +{ + or_connection_t *c1; + char *cp = NULL; + char *buf = NULL; + size_t sz; + + (void) arg; + MOCK(connection_write_to_buf_impl_, + connection_write_to_buf_impl_replacement); + + c1 = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + tt_assert(c1); + + /* Length too long */ + tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 100, "X", 100000), + <, 0); + + /* Empty command */ + tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0x99, NULL, 0), + ==, 0); + cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz); + tt_int_op(sz, ==, 4); + test_mem_op(cp, ==, "\x00\x99\x00\x00", 4); + tor_free(cp); + + /* Medium command. */ + tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0x99, + "Wai\0Hello", 9), ==, 0); + cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz); + tt_int_op(sz, ==, 13); + test_mem_op(cp, ==, "\x00\x99\x00\x09Wai\x00Hello", 13); + tor_free(cp); + + /* Long command */ + buf = tor_malloc(65535); + memset(buf, 'x', 65535); + tt_int_op(connection_write_ext_or_command(TO_CONN(c1), 0xf00d, + buf, 65535), ==, 0); + cp = buf_get_contents(TO_CONN(c1)->outbuf, &sz); + tt_int_op(sz, ==, 65539); + test_mem_op(cp, ==, "\xf0\x0d\xff\xff", 4); + test_mem_op(cp+4, ==, buf, 65535); + tor_free(cp); + + done: + if (c1) + connection_free_(TO_CONN(c1)); + tor_free(cp); + tor_free(buf); + UNMOCK(connection_write_to_buf_impl_); +} + +static int +write_bytes_to_file_fail(const char *fname, const char *str, size_t len, + int bin) +{ + (void) fname; + (void) str; + (void) len; + (void) bin; + + return -1; +} + +static void +test_ext_or_init_auth(void *arg) +{ + or_options_t *options = get_options_mutable(); + const char *fn; + char *cp = NULL; + struct stat st; + char cookie0[32]; + (void)arg; + + /* Check default filename location */ + options->DataDirectory = tor_strdup("foo"); + cp = get_ext_or_auth_cookie_file_name(); + tt_str_op(cp, ==, "foo"PATH_SEPARATOR"extended_orport_auth_cookie"); + tor_free(cp); + + /* Shouldn't be initialized already, or our tests will be a bit + * meaningless */ + ext_or_auth_cookie = tor_malloc_zero(32); + test_assert(tor_mem_is_zero((char*)ext_or_auth_cookie, 32)); + + /* Now make sure we use a temporary file */ + fn = get_fname("ext_cookie_file"); + options->ExtORPortCookieAuthFile = tor_strdup(fn); + cp = get_ext_or_auth_cookie_file_name(); + tt_str_op(cp, ==, fn); + tor_free(cp); + + /* Test the initialization function with a broken + write_bytes_to_file(). See if the problem is handled properly. */ + MOCK(write_bytes_to_file, write_bytes_to_file_fail); + tt_int_op(-1, ==, init_ext_or_cookie_authentication(1)); + tt_int_op(ext_or_auth_cookie_is_set, ==, 0); + UNMOCK(write_bytes_to_file); + + /* Now do the actual initialization. */ + tt_int_op(0, ==, init_ext_or_cookie_authentication(1)); + tt_int_op(ext_or_auth_cookie_is_set, ==, 1); + cp = read_file_to_str(fn, RFTS_BIN, &st); + tt_ptr_op(cp, !=, NULL); + tt_int_op(st.st_size, ==, 64); + test_memeq(cp, "! Extended ORPort Auth Cookie !\x0a", 32); + test_memeq(cp+32, ext_or_auth_cookie, 32); + memcpy(cookie0, ext_or_auth_cookie, 32); + test_assert(!tor_mem_is_zero((char*)ext_or_auth_cookie, 32)); + + /* Operation should be idempotent. */ + tt_int_op(0, ==, init_ext_or_cookie_authentication(1)); + test_memeq(cookie0, ext_or_auth_cookie, 32); + + done: + tor_free(cp); + ext_orport_free_all(); +} + +static void +test_ext_or_cookie_auth(void *arg) +{ + char *reply=NULL, *reply2=NULL, *client_hash=NULL, *client_hash2=NULL; + size_t reply_len=0; + char hmac1[32], hmac2[32]; + + const char client_nonce[32] = + "Who is the third who walks alway"; + char server_hash_input[] = + "ExtORPort authentication server-to-client hash" + "Who is the third who walks alway" + "................................"; + char client_hash_input[] = + "ExtORPort authentication client-to-server hash" + "Who is the third who walks alway" + "................................"; + + (void)arg; + + tt_int_op(strlen(client_hash_input), ==, 46+32+32); + tt_int_op(strlen(server_hash_input), ==, 46+32+32); + + ext_or_auth_cookie = tor_malloc_zero(32); + memcpy(ext_or_auth_cookie, "s beside you? When I count, ther", 32); + ext_or_auth_cookie_is_set = 1; + + /* For this authentication, the client sends 32 random bytes (ClientNonce) + * The server replies with 32 byte ServerHash and 32 byte ServerNonce, + * where ServerHash is: + * HMAC-SHA256(CookieString, + * "ExtORPort authentication server-to-client hash" | ClientNonce | + * ServerNonce)" + * The client must reply with 32-byte ClientHash, which we compute as: + * ClientHash is computed as: + * HMAC-SHA256(CookieString, + * "ExtORPort authentication client-to-server hash" | ClientNonce | + * ServerNonce) + */ + + /* Wrong length */ + tt_int_op(-1, ==, + handle_client_auth_nonce(client_nonce, 33, &client_hash, &reply, + &reply_len)); + tt_int_op(-1, ==, + handle_client_auth_nonce(client_nonce, 31, &client_hash, &reply, + &reply_len)); + + /* Now let's try this for real! */ + tt_int_op(0, ==, + handle_client_auth_nonce(client_nonce, 32, &client_hash, &reply, + &reply_len)); + tt_int_op(reply_len, ==, 64); + tt_ptr_op(reply, !=, NULL); + tt_ptr_op(client_hash, !=, NULL); + /* Fill in the server nonce into the hash inputs... */ + memcpy(server_hash_input+46+32, reply+32, 32); + memcpy(client_hash_input+46+32, reply+32, 32); + /* Check the HMACs are correct... */ + crypto_hmac_sha256(hmac1, (char*)ext_or_auth_cookie, 32, server_hash_input, + 46+32+32); + crypto_hmac_sha256(hmac2, (char*)ext_or_auth_cookie, 32, client_hash_input, + 46+32+32); + test_memeq(hmac1, reply, 32); + test_memeq(hmac2, client_hash, 32); + + /* Now do it again and make sure that the results are *different* */ + tt_int_op(0, ==, + handle_client_auth_nonce(client_nonce, 32, &client_hash2, &reply2, + &reply_len)); + test_memneq(reply2, reply, reply_len); + test_memneq(client_hash2, client_hash, 32); + /* But that this one checks out too. */ + memcpy(server_hash_input+46+32, reply2+32, 32); + memcpy(client_hash_input+46+32, reply2+32, 32); + /* Check the HMACs are correct... */ + crypto_hmac_sha256(hmac1, (char*)ext_or_auth_cookie, 32, server_hash_input, + 46+32+32); + crypto_hmac_sha256(hmac2, (char*)ext_or_auth_cookie, 32, client_hash_input, + 46+32+32); + test_memeq(hmac1, reply2, 32); + test_memeq(hmac2, client_hash2, 32); + + done: + tor_free(reply); + tor_free(client_hash); + tor_free(reply2); + tor_free(client_hash2); +} + +static int +crypto_rand_return_tse_str(char *to, size_t n) +{ + if (n != 32) { + TT_FAIL(("Asked for %d bytes, not 32", (int)n)); + return -1; + } + memcpy(to, "te road There is always another ", 32); + return 0; +} + +static void +test_ext_or_cookie_auth_testvec(void *arg) +{ + char *reply=NULL, *client_hash=NULL; + size_t reply_len; + char *mem_op_hex_tmp=NULL; + + const char client_nonce[] = "But when I look ahead up the whi"; + (void)arg; + + ext_or_auth_cookie = tor_malloc_zero(32); + memcpy(ext_or_auth_cookie, "Gliding wrapt in a brown mantle," , 32); + ext_or_auth_cookie_is_set = 1; + + MOCK(crypto_rand, crypto_rand_return_tse_str); + + tt_int_op(0, ==, + handle_client_auth_nonce(client_nonce, 32, &client_hash, &reply, + &reply_len)); + tt_ptr_op(reply, !=, NULL ); + tt_ptr_op(reply_len, ==, 64); + test_memeq(reply+32, "te road There is always another ", 32); + /* HMACSHA256("Gliding wrapt in a brown mantle," + * "ExtORPort authentication server-to-client hash" + * "But when I look ahead up the write road There is always another "); + */ + test_memeq_hex(reply, + "ec80ed6e546d3b36fdfc22fe1315416b" + "029f1ade7610d910878b62eeb7403821"); + /* HMACSHA256("Gliding wrapt in a brown mantle," + * "ExtORPort authentication client-to-server hash" + * "But when I look ahead up the write road There is always another "); + * (Both values computed using Python CLI.) + */ + test_memeq_hex(client_hash, + "ab391732dd2ed968cd40c087d1b1f25b" + "33b3cd77ff79bd80c2074bbf438119a2"); + + done: + UNMOCK(crypto_rand); + tor_free(reply); + tor_free(client_hash); + tor_free(mem_op_hex_tmp); +} + +static void +ignore_bootstrap_problem(const char *warn, int reason) +{ + (void)warn; + (void)reason; +} + +static int is_reading = 1; +static int handshake_start_called = 0; + +static void +note_read_stopped(connection_t *conn) +{ + (void)conn; + is_reading=0; +} +static void +note_read_started(connection_t *conn) +{ + (void)conn; + is_reading=1; +} +static int +handshake_start(or_connection_t *conn, int receiving) +{ + if (!conn || !receiving) + TT_FAIL(("Bad arguments to handshake_start")); + handshake_start_called = 1; + return 0; +} + +#define WRITE(s,n) \ + do { \ + write_to_buf((s), (n), TO_CONN(conn)->inbuf); \ + } while (0) +#define CONTAINS(s,n) \ + do { \ + tt_int_op((n), <=, sizeof(b)); \ + tt_int_op(buf_datalen(TO_CONN(conn)->outbuf), ==, (n)); \ + if ((n)) { \ + fetch_from_buf(b, (n), TO_CONN(conn)->outbuf); \ + test_memeq(b, (s), (n)); \ + } \ + } while (0) + +/* Helper: Do a successful Extended ORPort authentication handshake. */ +static void +do_ext_or_handshake(or_connection_t *conn) +{ + char b[256]; + + tt_int_op(0, ==, connection_ext_or_start_auth(conn)); + CONTAINS("\x01\x00", 2); + WRITE("\x01", 1); + WRITE("But when I look ahead up the whi", 32); + MOCK(crypto_rand, crypto_rand_return_tse_str); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + UNMOCK(crypto_rand); + tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_HASH); + CONTAINS("\xec\x80\xed\x6e\x54\x6d\x3b\x36\xfd\xfc\x22\xfe\x13\x15\x41\x6b" + "\x02\x9f\x1a\xde\x76\x10\xd9\x10\x87\x8b\x62\xee\xb7\x40\x38\x21" + "te road There is always another ", 64); + /* Send the right response this time. */ + WRITE("\xab\x39\x17\x32\xdd\x2e\xd9\x68\xcd\x40\xc0\x87\xd1\xb1\xf2\x5b" + "\x33\xb3\xcd\x77\xff\x79\xbd\x80\xc2\x07\x4b\xbf\x43\x81\x19\xa2", + 32); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("\x01", 1); + tt_assert(! TO_CONN(conn)->marked_for_close); + tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_OPEN); + + done: ; +} + +static void +test_ext_or_handshake(void *arg) +{ + or_connection_t *conn=NULL; + char b[256]; + + (void) arg; + MOCK(connection_write_to_buf_impl_, + connection_write_to_buf_impl_replacement); + /* Use same authenticators as for test_ext_or_cookie_auth_testvec */ + ext_or_auth_cookie = tor_malloc_zero(32); + memcpy(ext_or_auth_cookie, "Gliding wrapt in a brown mantle," , 32); + ext_or_auth_cookie_is_set = 1; + + init_connection_lists(); + + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + tt_int_op(0, ==, connection_ext_or_start_auth(conn)); + /* The server starts by telling us about the one supported authtype. */ + CONTAINS("\x01\x00", 2); + /* Say the client hasn't responded yet. */ + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + /* Let's say the client replies badly. */ + WRITE("\x99", 1); + tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + tt_assert(TO_CONN(conn)->marked_for_close); + close_closeable_connections(); + conn = NULL; + + /* Okay, try again. */ + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + tt_int_op(0, ==, connection_ext_or_start_auth(conn)); + CONTAINS("\x01\x00", 2); + /* Let's say the client replies sensibly this time. "Yes, AUTHTYPE_COOKIE + * sounds delicious. Let's have some of that!" */ + WRITE("\x01", 1); + /* Let's say that the client also sends part of a nonce. */ + WRITE("But when I look ", 16); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + tt_int_op(TO_CONN(conn)->state, ==, + EXT_OR_CONN_STATE_AUTH_WAIT_CLIENT_NONCE); + /* Pump it again. Nothing should happen. */ + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + /* send the rest of the nonce. */ + WRITE("ahead up the whi", 16); + MOCK(crypto_rand, crypto_rand_return_tse_str); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + UNMOCK(crypto_rand); + /* We should get the right reply from the server. */ + CONTAINS("\xec\x80\xed\x6e\x54\x6d\x3b\x36\xfd\xfc\x22\xfe\x13\x15\x41\x6b" + "\x02\x9f\x1a\xde\x76\x10\xd9\x10\x87\x8b\x62\xee\xb7\x40\x38\x21" + "te road There is always another ", 64); + /* Send the wrong response. */ + WRITE("not with a bang but a whimper...", 32); + MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem); + tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("\x00", 1); + tt_assert(TO_CONN(conn)->marked_for_close); + /* XXXX Hold-open-until-flushed. */ + close_closeable_connections(); + conn = NULL; + UNMOCK(control_event_bootstrap_problem); + + MOCK(connection_start_reading, note_read_started); + MOCK(connection_stop_reading, note_read_stopped); + MOCK(connection_tls_start_handshake, handshake_start); + + /* Okay, this time let's succeed. */ + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + do_ext_or_handshake(conn); + + /* Now let's run through some messages. */ + /* First let's send some junk and make sure it's ignored. */ + WRITE("\xff\xf0\x00\x03""ABC", 7); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + /* Now let's send a USERADDR command. */ + WRITE("\x00\x01\x00\x0c""1.2.3.4:5678", 16); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + tt_int_op(TO_CONN(conn)->port, ==, 5678); + tt_int_op(tor_addr_to_ipv4h(&TO_CONN(conn)->addr), ==, 0x01020304); + /* Now let's send a TRANSPORT command. */ + WRITE("\x00\x02\x00\x07""rfc1149", 11); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + tt_ptr_op(NULL, !=, conn->ext_or_transport); + tt_str_op("rfc1149", ==, conn->ext_or_transport); + tt_int_op(is_reading,==,1); + tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_OPEN); + /* DONE */ + WRITE("\x00\x00\x00\x00", 4); + tt_int_op(0, ==, connection_ext_or_process_inbuf(conn)); + tt_int_op(TO_CONN(conn)->state, ==, EXT_OR_CONN_STATE_FLUSHING); + tt_int_op(is_reading,==,0); + CONTAINS("\x10\x00\x00\x00", 4); + tt_int_op(handshake_start_called,==,0); + tt_int_op(0, ==, connection_ext_or_finished_flushing(conn)); + tt_int_op(is_reading,==,1); + tt_int_op(handshake_start_called,==,1); + tt_int_op(TO_CONN(conn)->type, ==, CONN_TYPE_OR); + tt_int_op(TO_CONN(conn)->state, ==, 0); + close_closeable_connections(); + conn = NULL; + + /* Okay, this time let's succeed the handshake but fail the USERADDR + command. */ + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + do_ext_or_handshake(conn); + /* USERADDR command with an extra NUL byte */ + WRITE("\x00\x01\x00\x0d""1.2.3.4:5678\x00", 17); + MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem); + tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + tt_assert(TO_CONN(conn)->marked_for_close); + close_closeable_connections(); + conn = NULL; + UNMOCK(control_event_bootstrap_problem); + + /* Now fail the TRANSPORT command. */ + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + do_ext_or_handshake(conn); + /* TRANSPORT command with an extra NUL byte */ + WRITE("\x00\x02\x00\x08""rfc1149\x00", 12); + MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem); + tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + tt_assert(TO_CONN(conn)->marked_for_close); + close_closeable_connections(); + conn = NULL; + UNMOCK(control_event_bootstrap_problem); + + /* Now fail the TRANSPORT command. */ + conn = or_connection_new(CONN_TYPE_EXT_OR, AF_INET); + do_ext_or_handshake(conn); + /* TRANSPORT command with transport name with symbols (not a + C-identifier) */ + WRITE("\x00\x02\x00\x07""rf*1149", 11); + MOCK(control_event_bootstrap_problem, ignore_bootstrap_problem); + tt_int_op(-1, ==, connection_ext_or_process_inbuf(conn)); + CONTAINS("", 0); + tt_assert(TO_CONN(conn)->marked_for_close); + close_closeable_connections(); + conn = NULL; + UNMOCK(control_event_bootstrap_problem); + + done: + UNMOCK(connection_write_to_buf_impl_); + UNMOCK(crypto_rand); + if (conn) + connection_free_(TO_CONN(conn)); +#undef CONTAINS +#undef WRITE +} + +struct testcase_t extorport_tests[] = { + { "id_map", test_ext_or_id_map, TT_FORK, NULL, NULL }, + { "write_command", test_ext_or_write_command, TT_FORK, NULL, NULL }, + { "init_auth", test_ext_or_init_auth, TT_FORK, NULL, NULL }, + { "cookie_auth", test_ext_or_cookie_auth, TT_FORK, NULL, NULL }, + { "cookie_auth_testvec", test_ext_or_cookie_auth_testvec, TT_FORK, + NULL, NULL }, + { "handshake", test_ext_or_handshake, TT_FORK, NULL, NULL }, + END_OF_TESTCASES +}; + diff --git a/src/test/test_options.c b/src/test/test_options.c index 6beff2567e..737f658e2c 100644 --- a/src/test/test_options.c +++ b/src/test/test_options.c @@ -148,6 +148,8 @@ test_options_validate(void *arg) (void)arg; setup_log_callback(); + WANT_ERR("ExtORPort 500000", "Invalid ExtORPort"); + WANT_ERR_LOG("ServerTransportOptions trebuchet", "ServerTransportOptions did not parse", LOG_WARN, "Too few arguments"); @@ -157,7 +159,6 @@ test_options_validate(void *arg) "ServerTransportOptions did not parse", LOG_WARN, "\"slingsnappy\" is not a k=v"); -// done: clear_log_messages(); return; } diff --git a/src/test/test_pt.c b/src/test/test_pt.c index ac97cf9fb0..3277921052 100644 --- a/src/test/test_pt.c +++ b/src/test/test_pt.c @@ -5,11 +5,17 @@ #include "orconfig.h" #define PT_PRIVATE +#define UTIL_PRIVATE +#define STATEFILE_PRIVATE +#define CONTROL_PRIVATE #include "or.h" #include "config.h" #include "confparse.h" +#include "control.h" #include "transports.h" #include "circuitbuild.h" +#include "util.h" +#include "statefile.h" #include "test.h" static void @@ -269,6 +275,166 @@ test_pt_get_extrainfo_string(void *arg) tor_free(s); } +#ifdef _WIN32 +#define STDIN_HANDLE HANDLE +#else +#define STDIN_HANDLE FILE +#endif + +static smartlist_t * +tor_get_lines_from_handle_replacement(STDIN_HANDLE *handle, + enum stream_status *stream_status_out) +{ + static int times_called = 0; + smartlist_t *retval_sl = smartlist_new(); + + (void) handle; + (void) stream_status_out; + + /* Generate some dummy CMETHOD lines the first 5 times. The 6th + time, send 'CMETHODS DONE' to finish configuring the proxy. */ + if (times_called++ != 5) { + smartlist_add_asprintf(retval_sl, "SMETHOD mock%d 127.0.0.1:555%d", + times_called, times_called); + } else { + smartlist_add(retval_sl, tor_strdup("SMETHODS DONE")); + } + + return retval_sl; +} + +/* NOP mock */ +static void +tor_process_handle_destroy_replacement(process_handle_t *process_handle, + int also_terminate_process) +{ + (void) process_handle; + (void) also_terminate_process; +} + +static or_state_t *dummy_state = NULL; + +static or_state_t * +get_or_state_replacement(void) +{ + return dummy_state; +} + +static int controlevent_n = 0; +static uint16_t controlevent_event = 0; +static smartlist_t *controlevent_msgs = NULL; + +static void +send_control_event_string_replacement(uint16_t event, event_format_t which, + const char *msg) +{ + (void) which; + ++controlevent_n; + controlevent_event = event; + if (!controlevent_msgs) + controlevent_msgs = smartlist_new(); + smartlist_add(controlevent_msgs, tor_strdup(msg)); +} + +/* Test the configure_proxy() function. */ +static void +test_pt_configure_proxy(void *arg) +{ + int i, retval; + managed_proxy_t *mp = NULL; + (void) arg; + + dummy_state = tor_malloc_zero(sizeof(or_state_t)); + + MOCK(tor_get_lines_from_handle, + tor_get_lines_from_handle_replacement); + MOCK(tor_process_handle_destroy, + tor_process_handle_destroy_replacement); + MOCK(get_or_state, + get_or_state_replacement); + MOCK(send_control_event_string, + send_control_event_string_replacement); + + control_testing_set_global_event_mask(EVENT_TRANSPORT_LAUNCHED); + + mp = tor_malloc(sizeof(managed_proxy_t)); + mp->conf_state = PT_PROTO_ACCEPTING_METHODS; + mp->transports = smartlist_new(); + mp->transports_to_launch = smartlist_new(); + mp->process_handle = tor_malloc_zero(sizeof(process_handle_t)); + mp->argv = tor_malloc_zero(sizeof(char*)*2); + mp->argv[0] = tor_strdup("<testcase>"); + mp->is_server = 1; + + /* Test the return value of configure_proxy() by calling it some + times while it is uninitialized and then finally finalizing its + configuration. */ + for (i = 0 ; i < 5 ; i++) { + retval = configure_proxy(mp); + /* retval should be zero because proxy hasn't finished configuring yet */ + test_assert(retval == 0); + /* check the number of registered transports */ + test_assert(smartlist_len(mp->transports) == i+1); + /* check that the mp is still waiting for transports */ + test_assert(mp->conf_state == PT_PROTO_ACCEPTING_METHODS); + } + + /* this last configure_proxy() should finalize the proxy configuration. */ + retval = configure_proxy(mp); + /* retval should be 1 since the proxy finished configuring */ + test_assert(retval == 1); + /* check the mp state */ + test_assert(mp->conf_state == PT_PROTO_COMPLETED); + + tt_int_op(controlevent_n, ==, 5); + tt_int_op(controlevent_event, ==, EVENT_TRANSPORT_LAUNCHED); + tt_int_op(smartlist_len(controlevent_msgs), ==, 5); + smartlist_sort_strings(controlevent_msgs); + tt_str_op(smartlist_get(controlevent_msgs, 0), ==, + "650 TRANSPORT_LAUNCHED server mock1 127.0.0.1 5551\r\n"); + tt_str_op(smartlist_get(controlevent_msgs, 1), ==, + "650 TRANSPORT_LAUNCHED server mock2 127.0.0.1 5552\r\n"); + tt_str_op(smartlist_get(controlevent_msgs, 2), ==, + "650 TRANSPORT_LAUNCHED server mock3 127.0.0.1 5553\r\n"); + tt_str_op(smartlist_get(controlevent_msgs, 3), ==, + "650 TRANSPORT_LAUNCHED server mock4 127.0.0.1 5554\r\n"); + tt_str_op(smartlist_get(controlevent_msgs, 4), ==, + "650 TRANSPORT_LAUNCHED server mock5 127.0.0.1 5555\r\n"); + + { /* check that the transport info were saved properly in the tor state */ + config_line_t *transport_in_state = NULL; + smartlist_t *transport_info_sl = smartlist_new(); + char *name_of_transport = NULL; + char *bindaddr = NULL; + + /* Get the bindaddr for "mock1" and check it against the bindaddr + that the mocked tor_get_lines_from_handle() generated. */ + transport_in_state = get_transport_in_state_by_name("mock1"); + test_assert(transport_in_state); + smartlist_split_string(transport_info_sl, transport_in_state->value, + NULL, 0, 0); + name_of_transport = smartlist_get(transport_info_sl, 0); + bindaddr = smartlist_get(transport_info_sl, 1); + tt_str_op(name_of_transport, ==, "mock1"); + tt_str_op(bindaddr, ==, "127.0.0.1:5551"); + + SMARTLIST_FOREACH(transport_info_sl, char *, cp, tor_free(cp)); + smartlist_free(transport_info_sl); + } + + done: + tor_free(dummy_state); + UNMOCK(tor_get_lines_from_handle); + UNMOCK(tor_process_handle_destroy); + UNMOCK(get_or_state); + UNMOCK(send_control_event_string); + if (controlevent_msgs) { + SMARTLIST_FOREACH(controlevent_msgs, char *, cp, tor_free(cp)); + smartlist_free(controlevent_msgs); + controlevent_msgs = NULL; + } +} + #define PT_LEGACY(name) \ { #name, legacy_test_helper, 0, &legacy_setup, test_pt_ ## name } @@ -279,6 +445,8 @@ struct testcase_t pt_tests[] = { NULL, NULL }, { "get_extrainfo_string", test_pt_get_extrainfo_string, TT_FORK, NULL, NULL }, + { "configure_proxy",test_pt_configure_proxy, TT_FORK, + NULL, NULL }, END_OF_TESTCASES }; diff --git a/src/test/test_replay.c b/src/test/test_replay.c index 200bf4dd3e..b48f582f5e 100644 --- a/src/test/test_replay.c +++ b/src/test/test_replay.c @@ -76,13 +76,13 @@ test_replaycache_miss(void) result = replaycache_add_and_test_internal(1200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); /* poke the bad-parameter error case too */ result = replaycache_add_and_test_internal(1200, NULL, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); done: @@ -102,12 +102,12 @@ test_replaycache_hit(void) result = replaycache_add_and_test_internal(1200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); result = replaycache_add_and_test_internal(1300, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 1); done: @@ -127,17 +127,17 @@ test_replaycache_age(void) result = replaycache_add_and_test_internal(1200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); result = replaycache_add_and_test_internal(1300, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 1); result = replaycache_add_and_test_internal(3000, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); done: @@ -158,12 +158,12 @@ test_replaycache_elapsed(void) result = replaycache_add_and_test_internal(1200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); result = replaycache_add_and_test_internal(1300, r, test_buffer, - (int)strlen(test_buffer), &elapsed); + strlen(test_buffer), &elapsed); test_eq(result, 1); test_eq(elapsed, 100); @@ -184,17 +184,17 @@ test_replaycache_noexpire(void) result = replaycache_add_and_test_internal(1200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); result = replaycache_add_and_test_internal(1300, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 1); result = replaycache_add_and_test_internal(3000, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 1); done: @@ -215,12 +215,12 @@ test_replaycache_scrub(void) /* Set up like in test_replaycache_hit() */ result = replaycache_add_and_test_internal(100, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 0); result = replaycache_add_and_test_internal(200, r, test_buffer, - (int)strlen(test_buffer), NULL); + strlen(test_buffer), NULL); test_eq(result, 1); /* @@ -257,14 +257,14 @@ test_replaycache_future(void) /* Set up like in test_replaycache_hit() */ result = replaycache_add_and_test_internal(100, r, test_buffer, - (int)strlen(test_buffer), &elapsed); + strlen(test_buffer), &elapsed); test_eq(result, 0); /* elapsed should still be 0, since it wasn't written */ test_eq(elapsed, 0); result = replaycache_add_and_test_internal(200, r, test_buffer, - (int)strlen(test_buffer), &elapsed); + strlen(test_buffer), &elapsed); test_eq(result, 1); /* elapsed should be the time since the last hit */ test_eq(elapsed, 100); @@ -275,7 +275,7 @@ test_replaycache_future(void) */ result = replaycache_add_and_test_internal(150, r, test_buffer, - (int)strlen(test_buffer), &elapsed); + strlen(test_buffer), &elapsed); /* We should still get a hit */ test_eq(result, 1); /* ...but it shouldn't let us see a negative elapsed time */ @@ -304,18 +304,18 @@ test_replaycache_realtime(void) /* This should miss */ result = - replaycache_add_and_test(r, test_buffer, (int)strlen(test_buffer)); + replaycache_add_and_test(r, test_buffer, strlen(test_buffer)); test_eq(result, 0); /* This should hit */ result = - replaycache_add_and_test(r, test_buffer, (int)strlen(test_buffer)); + replaycache_add_and_test(r, test_buffer, strlen(test_buffer)); test_eq(result, 1); /* This should hit and return a small elapsed time */ result = replaycache_add_test_and_elapsed(r, test_buffer, - (int)strlen(test_buffer), &elapsed); + strlen(test_buffer), &elapsed); test_eq(result, 1); test_assert(elapsed >= 0); test_assert(elapsed <= 5); diff --git a/src/test/test_socks.c b/src/test/test_socks.c new file mode 100644 index 0000000000..4ce61e068b --- /dev/null +++ b/src/test/test_socks.c @@ -0,0 +1,393 @@ +/* Copyright (c) 2001-2004, Roger Dingledine. + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2013, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#include "or.h" +#include "buffers.h" +#include "config.h" +#include "test.h" + +typedef struct socks_test_data_t { + socks_request_t *req; + buf_t *buf; +} socks_test_data_t; + +static void * +socks_test_setup(const struct testcase_t *testcase) +{ + socks_test_data_t *data = tor_malloc(sizeof(socks_test_data_t)); + (void)testcase; + data->buf = buf_new_with_capacity(256); + data->req = socks_request_new(); + config_register_addressmaps(get_options()); + return data; +} +static int +socks_test_cleanup(const struct testcase_t *testcase, void *ptr) +{ + socks_test_data_t *data = ptr; + (void)testcase; + buf_free(data->buf); + socks_request_free(data->req); + tor_free(data); + return 1; +} + +const struct testcase_setup_t socks_setup = { + socks_test_setup, socks_test_cleanup +}; + +#define SOCKS_TEST_INIT() \ + socks_test_data_t *testdata = ptr; \ + buf_t *buf = testdata->buf; \ + socks_request_t *socks = testdata->req; +#define ADD_DATA(buf, s) \ + write_to_buf(s, sizeof(s)-1, buf) + +static void +socks_request_clear(socks_request_t *socks) +{ + tor_free(socks->username); + tor_free(socks->password); + memset(socks, 0, sizeof(socks_request_t)); +} + +/** Perform unsupported SOCKS 4 commands */ +static void +test_socks_4_unsupported_commands(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 4 Send BIND [02] to IP address 2.2.2.2:4369 */ + ADD_DATA(buf, "\x04\x02\x11\x11\x02\x02\x02\x02\x00"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == -1); + test_eq(4, socks->socks_version); + test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ + + done: + ; +} + +/** Perform supported SOCKS 4 commands */ +static void +test_socks_4_supported_commands(void *ptr) +{ + SOCKS_TEST_INIT(); + + test_eq(0, buf_datalen(buf)); + + /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4370 */ + ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x03\x00"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(4, socks->socks_version); + test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ + test_eq(SOCKS_COMMAND_CONNECT, socks->command); + test_streq("2.2.2.3", socks->address); + test_eq(4370, socks->port); + test_assert(socks->got_auth == 0); + test_assert(! socks->username); + + test_eq(0, buf_datalen(buf)); + socks_request_clear(socks); + + /* SOCKS 4 Send CONNECT [01] to IP address 2.2.2.2:4369 with userid*/ + ADD_DATA(buf, "\x04\x01\x11\x12\x02\x02\x02\x04me\x00"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(4, socks->socks_version); + test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ + test_eq(SOCKS_COMMAND_CONNECT, socks->command); + test_streq("2.2.2.4", socks->address); + test_eq(4370, socks->port); + test_assert(socks->got_auth == 1); + test_assert(socks->username); + test_eq(2, socks->usernamelen); + test_memeq("me", socks->username, 2); + + test_eq(0, buf_datalen(buf)); + socks_request_clear(socks); + + /* SOCKS 4a Send RESOLVE [F0] request for torproject.org */ + ADD_DATA(buf, "\x04\xF0\x01\x01\x00\x00\x00\x02me\x00torproject.org\x00"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(4, socks->socks_version); + test_eq(0, socks->replylen); /* XXX: shouldn't tor reply? */ + test_streq("torproject.org", socks->address); + + test_eq(0, buf_datalen(buf)); + + done: + ; +} + +/** Perform unsupported SOCKS 5 commands */ +static void +test_socks_5_unsupported_commands(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 5 Send unsupported BIND [02] command */ + ADD_DATA(buf, "\x05\x02\x00\x01"); + + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), 0); + test_eq(0, buf_datalen(buf)); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(0, socks->reply[1]); + ADD_DATA(buf, "\x05\x02\x00\x01\x02\x02\x02\x01\x01\x01"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), -1); + /* XXX: shouldn't tor reply 'command not supported' [07]? */ + + buf_clear(buf); + socks_request_clear(socks); + + /* SOCKS 5 Send unsupported UDP_ASSOCIATE [03] command */ + ADD_DATA(buf, "\x05\x03\x00\x01\x02"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), 0); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(2, socks->reply[1]); + ADD_DATA(buf, "\x05\x03\x00\x01\x02\x02\x02\x01\x01\x01"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), -1); + /* XXX: shouldn't tor reply 'command not supported' [07]? */ + + done: + ; +} + +/** Perform supported SOCKS 5 commands */ +static void +test_socks_5_supported_commands(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */ + ADD_DATA(buf, "\x05\x01\x00"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), 0); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(0, socks->reply[1]); + + ADD_DATA(buf, "\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), 1); + test_streq("2.2.2.2", socks->address); + test_eq(4369, socks->port); + + test_eq(0, buf_datalen(buf)); + socks_request_clear(socks); + + /* SOCKS 5 Send CONNECT [01] to FQDN torproject.org:4369 */ + ADD_DATA(buf, "\x05\x01\x00"); + ADD_DATA(buf, "\x05\x01\x00\x03\x0Etorproject.org\x11\x11"); + test_eq(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks), 1); + + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(0, socks->reply[1]); + test_streq("torproject.org", socks->address); + test_eq(4369, socks->port); + + test_eq(0, buf_datalen(buf)); + socks_request_clear(socks); + + /* SOCKS 5 Send RESOLVE [F0] request for torproject.org:4369 */ + ADD_DATA(buf, "\x05\x01\x00"); + ADD_DATA(buf, "\x05\xF0\x00\x03\x0Etorproject.org\x01\x02"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(0, socks->reply[1]); + test_streq("torproject.org", socks->address); + + test_eq(0, buf_datalen(buf)); + socks_request_clear(socks); + + /* SOCKS 5 Send RESOLVE_PTR [F1] for IP address 2.2.2.5 */ + ADD_DATA(buf, "\x05\x01\x00"); + ADD_DATA(buf, "\x05\xF1\x00\x01\x02\x02\x02\x05\x01\x03"); + test_assert(fetch_from_buf_socks(buf, socks, get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(0, socks->reply[1]); + test_streq("2.2.2.5", socks->address); + + test_eq(0, buf_datalen(buf)); + + done: + ; +} + +/** Perform SOCKS 5 authentication */ +static void +test_socks_5_no_authenticate(void *ptr) +{ + SOCKS_TEST_INIT(); + + /*SOCKS 5 No Authentication */ + ADD_DATA(buf,"\x05\x01\x00"); + test_assert(!fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks)); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(SOCKS_NO_AUTH, socks->reply[1]); + + test_eq(0, buf_datalen(buf)); + + /*SOCKS 5 Send username/password anyway - pretend to be broken */ + ADD_DATA(buf,"\x01\x02\x01\x01\x02\x01\x01"); + test_assert(!fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks)); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(1, socks->reply[0]); + test_eq(0, socks->reply[1]); + + test_eq(2, socks->usernamelen); + test_eq(2, socks->passwordlen); + + test_memeq("\x01\x01", socks->username, 2); + test_memeq("\x01\x01", socks->password, 2); + + done: + ; +} + +/** Perform SOCKS 5 authentication */ +static void +test_socks_5_authenticate(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 5 Negotiate username/password authentication */ + ADD_DATA(buf, "\x05\x01\x02"); + + test_assert(!fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks)); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(SOCKS_USER_PASS, socks->reply[1]); + test_eq(5, socks->socks_version); + + test_eq(0, buf_datalen(buf)); + + /* SOCKS 5 Send username/password */ + ADD_DATA(buf, "\x01\x02me\x08mypasswd"); + test_assert(!fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks)); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(1, socks->reply[0]); + test_eq(0, socks->reply[1]); + + test_eq(2, socks->usernamelen); + test_eq(8, socks->passwordlen); + + test_memeq("me", socks->username, 2); + test_memeq("mypasswd", socks->password, 8); + + done: + ; +} + +/** Perform SOCKS 5 authentication and send data all in one go */ +static void +test_socks_5_authenticate_with_data(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 5 Negotiate username/password authentication */ + ADD_DATA(buf, "\x05\x01\x02"); + + test_assert(!fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks)); + test_eq(2, socks->replylen); + test_eq(5, socks->reply[0]); + test_eq(SOCKS_USER_PASS, socks->reply[1]); + test_eq(5, socks->socks_version); + + test_eq(0, buf_datalen(buf)); + + /* SOCKS 5 Send username/password */ + /* SOCKS 5 Send CONNECT [01] to IP address 2.2.2.2:4369 */ + ADD_DATA(buf, "\x01\x02me\x03you\x05\x01\x00\x01\x02\x02\x02\x02\x11\x11"); + test_assert(fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks) == 1); + test_eq(5, socks->socks_version); + test_eq(2, socks->replylen); + test_eq(1, socks->reply[0]); + test_eq(0, socks->reply[1]); + + test_streq("2.2.2.2", socks->address); + test_eq(4369, socks->port); + + test_eq(2, socks->usernamelen); + test_eq(3, socks->passwordlen); + test_memeq("me", socks->username, 2); + test_memeq("you", socks->password, 3); + + done: + ; +} + +/** Perform SOCKS 5 authentication before method negotiated */ +static void +test_socks_5_auth_before_negotiation(void *ptr) +{ + SOCKS_TEST_INIT(); + + /* SOCKS 5 Send username/password */ + ADD_DATA(buf, "\x01\x02me\x02me"); + test_assert(fetch_from_buf_socks(buf, socks, + get_options()->TestSocks, + get_options()->SafeSocks) == -1); + test_eq(0, socks->socks_version); + test_eq(0, socks->replylen); + test_eq(0, socks->reply[0]); + test_eq(0, socks->reply[1]); + + done: + ; +} + +#define SOCKSENT(name) \ + { #name, test_socks_##name, TT_FORK, &socks_setup, NULL } + +struct testcase_t socks_tests[] = { + SOCKSENT(4_unsupported_commands), + SOCKSENT(4_supported_commands), + + SOCKSENT(5_unsupported_commands), + SOCKSENT(5_supported_commands), + SOCKSENT(5_no_authenticate), + SOCKSENT(5_auth_before_negotiation), + SOCKSENT(5_authenticate), + SOCKSENT(5_authenticate_with_data), + + END_OF_TESTCASES +}; + diff --git a/src/test/test_util.c b/src/test/test_util.c index b331a804bd..ab5928ffd4 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -4,6 +4,7 @@ /* See LICENSE for licensing information */ #include "orconfig.h" +#define COMPAT_PRIVATE #define CONTROL_PRIVATE #define MEMPOOL_PRIVATE #define UTIL_PRIVATE @@ -101,6 +102,112 @@ test_util_read_file_eof_zero_bytes(void *arg) test_util_read_until_eof_impl("tor_test_fifo_empty", 0, 10000); } +/* Test the basic expected behaviour for write_chunks_to_file. + * NOTE: This will need to be updated if we ever change the tempfile location + * or extension */ +static void +test_util_write_chunks_to_file(void *arg) +{ + char *fname = NULL; + char *tempname = NULL; + char *str = NULL; + int r; + int fd = -1; + struct stat st; + + /* These should be two different sizes to ensure the data is different + * between the data file and the temp file's 'known string' */ + int temp_str_len = 1024; + int data_str_len = 512; + char *data_str = tor_malloc(data_str_len); + char *temp_str = tor_malloc(temp_str_len); + + smartlist_t *chunks = smartlist_new(); + sized_chunk_t c = {data_str, data_str_len/2}; + sized_chunk_t c2 = {data_str + data_str_len/2, data_str_len/2}; + (void)arg; + + crypto_rand(temp_str, temp_str_len); + crypto_rand(data_str, data_str_len); + + // Ensure it can write multiple chunks + + smartlist_add(chunks, &c); + smartlist_add(chunks, &c2); + + /* + * Check if it writes using a tempfile + */ + fname = tor_strdup(get_fname("write_chunks_with_tempfile")); + tor_asprintf(&tempname, "%s.tmp", fname); + + // write a known string to a file where the tempfile will be + r = write_bytes_to_file(tempname, temp_str, temp_str_len, 1); + tt_int_op(r, ==, 0); + + // call write_chunks_to_file + r = write_chunks_to_file(fname, chunks, 1, 0); + tt_int_op(r, ==, 0); + + // assert the file has been written (expected size) + str = read_file_to_str(fname, RFTS_BIN, &st); + tt_assert(str != NULL); + tt_int_op(st.st_size, ==, data_str_len); + test_mem_op(data_str, ==, str, data_str_len); + tor_free(str); + close(fd); + + // assert that the tempfile is removed (should not leave artifacts) + str = read_file_to_str(tempname, RFTS_BIN|RFTS_IGNORE_MISSING, &st); + tt_assert(str == NULL); + + // Remove old testfile for second test + r = unlink(fname); + tt_int_op(r, ==, 0); + tor_free(fname); + tor_free(tempname); + + /* + * Check if it skips using a tempfile with flags + */ + fname = tor_strdup(get_fname("write_chunks_with_no_tempfile")); + tor_asprintf(&tempname, "%s.tmp", fname); + + // write a known string to a file where the tempfile will be + r = write_bytes_to_file(tempname, temp_str, temp_str_len, 1); + tt_int_op(r, ==, 0); + + // call write_chunks_to_file with no_tempfile = true + r = write_chunks_to_file(fname, chunks, 1, 1); + tt_int_op(r, ==, 0); + + // assert the file has been written (expected size) + str = read_file_to_str(fname, RFTS_BIN, &st); + tt_assert(str != NULL); + tt_int_op(st.st_size, ==, data_str_len); + test_mem_op(data_str, ==, str, data_str_len); + tor_free(str); + close(fd); + + // assert the tempfile still contains the known string + str = read_file_to_str(tempname, RFTS_BIN, &st); + tt_assert(str != NULL); + tt_int_op(st.st_size, ==, temp_str_len); + test_mem_op(temp_str, ==, str, temp_str_len); + + done: + unlink(fname); + unlink(tempname); + smartlist_free(chunks); + tor_free(fname); + tor_free(tempname); + tor_free(str); + tor_free(data_str); + tor_free(temp_str); + if (fd >= 0) + close(fd); +} + static void test_util_time(void) { @@ -2311,6 +2418,7 @@ test_util_exit_status(void *ptr) n = format_helper_exit_status(0xFF, -0x80000000, hex_errno); test_streq("FF/-80000000\n", hex_errno); test_eq(n, strlen(hex_errno)); + test_eq(n, HEX_ERRNO_SIZE); clear_hex_errno(hex_errno); n = format_helper_exit_status(0x7F, 0, hex_errno); @@ -3369,6 +3477,134 @@ test_util_strclear(void *arg) #define UTIL_TEST(name, flags) \ { #name, test_util_ ## name, flags, NULL, NULL } +#ifdef FD_CLOEXEC +#define CAN_CHECK_CLOEXEC +static int +fd_is_cloexec(tor_socket_t fd) +{ + int flags = fcntl(fd, F_GETFD, 0); + return (flags & FD_CLOEXEC) == FD_CLOEXEC; +} +#endif + +#ifndef _WIN32 +#define CAN_CHECK_NONBLOCK +static int +fd_is_nonblocking(tor_socket_t fd) +{ + int flags = fcntl(fd, F_GETFL, 0); + return (flags & O_NONBLOCK) == O_NONBLOCK; +} +#endif + +static void +test_util_socket(void *arg) +{ + tor_socket_t fd1 = TOR_INVALID_SOCKET; + tor_socket_t fd2 = TOR_INVALID_SOCKET; + tor_socket_t fd3 = TOR_INVALID_SOCKET; + tor_socket_t fd4 = TOR_INVALID_SOCKET; + int n = get_n_open_sockets(); + + TT_BLATHER(("Starting with %d open sockets.", n)); + + (void)arg; + + fd1 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 0, 0); + fd2 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 0, 1); + tt_assert(SOCKET_OK(fd1)); + tt_assert(SOCKET_OK(fd2)); + tt_int_op(get_n_open_sockets(), ==, n + 2); + //fd3 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 1, 0); + //fd4 = tor_open_socket_with_extensions(AF_INET, SOCK_STREAM, 0, 1, 1); + fd3 = tor_open_socket(AF_INET, SOCK_STREAM, 0); + fd4 = tor_open_socket_nonblocking(AF_INET, SOCK_STREAM, 0); + tt_assert(SOCKET_OK(fd3)); + tt_assert(SOCKET_OK(fd4)); + tt_int_op(get_n_open_sockets(), ==, n + 4); + +#ifdef CAN_CHECK_CLOEXEC + tt_int_op(fd_is_cloexec(fd1), ==, 0); + tt_int_op(fd_is_cloexec(fd2), ==, 0); + tt_int_op(fd_is_cloexec(fd3), ==, 1); + tt_int_op(fd_is_cloexec(fd4), ==, 1); +#endif +#ifdef CAN_CHECK_NONBLOCK + tt_int_op(fd_is_nonblocking(fd1), ==, 0); + tt_int_op(fd_is_nonblocking(fd2), ==, 1); + tt_int_op(fd_is_nonblocking(fd3), ==, 0); + tt_int_op(fd_is_nonblocking(fd4), ==, 1); +#endif + + tor_close_socket(fd1); + tor_close_socket(fd2); + fd1 = fd2 = TOR_INVALID_SOCKET; + tt_int_op(get_n_open_sockets(), ==, n + 2); + tor_close_socket(fd3); + tor_close_socket(fd4); + fd3 = fd4 = TOR_INVALID_SOCKET; + tt_int_op(get_n_open_sockets(), ==, n); + + done: + if (SOCKET_OK(fd1)) + tor_close_socket(fd1); + if (SOCKET_OK(fd2)) + tor_close_socket(fd2); + if (SOCKET_OK(fd3)) + tor_close_socket(fd3); + if (SOCKET_OK(fd4)) + tor_close_socket(fd4); +} + +static void * +socketpair_test_setup(const struct testcase_t *testcase) +{ + return testcase->setup_data; +} +static int +socketpair_test_cleanup(const struct testcase_t *testcase, void *ptr) +{ + (void)testcase; + (void)ptr; + return 1; +} + +static const struct testcase_setup_t socketpair_setup = { + socketpair_test_setup, socketpair_test_cleanup +}; + +/* Test for socketpair and ersatz_socketpair(). We test them both, since + * the latter is a tolerably good way to exersize tor_accept_socket(). */ +static void +test_util_socketpair(void *arg) +{ + const int ersatz = !strcmp(arg, "1"); + int (*const tor_socketpair_fn)(int, int, int, tor_socket_t[2]) = + ersatz ? tor_ersatz_socketpair : tor_socketpair; + int n = get_n_open_sockets(); + tor_socket_t fds[2] = {TOR_INVALID_SOCKET, TOR_INVALID_SOCKET}; + const int family = AF_UNIX; + + tt_int_op(0, ==, tor_socketpair_fn(family, SOCK_STREAM, 0, fds)); + tt_assert(SOCKET_OK(fds[0])); + tt_assert(SOCKET_OK(fds[1])); + tt_int_op(get_n_open_sockets(), ==, n + 2); +#ifdef CAN_CHECK_CLOEXEC + tt_int_op(fd_is_cloexec(fds[0]), ==, 1); + tt_int_op(fd_is_cloexec(fds[1]), ==, 1); +#endif +#ifdef CAN_CHECK_NONBLOCK + tt_int_op(fd_is_nonblocking(fds[0]), ==, 0); + tt_int_op(fd_is_nonblocking(fds[1]), ==, 0); +#endif + + done: + if (SOCKET_OK(fds[0])) + tor_close_socket(fds[0]); + if (SOCKET_OK(fds[1])) + tor_close_socket(fds[1]); +} + struct testcase_t util_tests[] = { UTIL_LEGACY(time), UTIL_TEST(parse_http_time, 0), @@ -3424,8 +3660,14 @@ struct testcase_t util_tests[] = { UTIL_TEST(read_file_eof_tiny_limit, 0), UTIL_TEST(read_file_eof_two_loops, 0), UTIL_TEST(read_file_eof_zero_bytes, 0), + UTIL_TEST(write_chunks_to_file, 0), UTIL_TEST(mathlog, 0), UTIL_TEST(weak_random, 0), + UTIL_TEST(socket, TT_FORK), + { "socketpair", test_util_socketpair, TT_FORK, &socketpair_setup, + (void*)"0" }, + { "socketpair_ersatz", test_util_socketpair, TT_FORK, + &socketpair_setup, (void*)"1" }, END_OF_TESTCASES }; diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h index 43f68c3b08..0d6fe692b9 100644 --- a/src/win32/orconfig.h +++ b/src/win32/orconfig.h @@ -241,7 +241,7 @@ #define USING_TWOS_COMPLEMENT /* Version number of package */ -#define VERSION "0.2.5.0-alpha-dev" +#define VERSION "0.2.5.1-alpha-dev" diff --git a/ticket9839 b/ticket9839 new file mode 100644 index 0000000000..a71c231042 --- /dev/null +++ b/ticket9839 @@ -0,0 +1,3 @@ + o Documentation: + - Update manpage to describe some of the files one could find + in data directory. Fixes bug 9839. |