From 77efb8b9b8a1314e1b574c9fb6f3abc94f26bc81 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Tue, 30 Nov 2021 17:07:36 +0100 Subject: [PATCH 01/10] Add documentation for resource warnings config options Signed-off-by: DL6ER --- docs/ftldns/configfile.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/ftldns/configfile.md b/docs/ftldns/configfile.md index dc9844c..81b2685 100644 --- a/docs/ftldns/configfile.md +++ b/docs/ftldns/configfile.md @@ -197,6 +197,24 @@ With this option, you can change how (and if) hourly PTR requests are made to ch This setting can be used to disable ARP cache processing. When disabled, client identification and the network table will stop working reliably. +#### `CHECK_LOAD=true|false` (PR [#1249](https://github.com/pi-hole/FTL/pull/1249)) {#check_load data-toc-label='Check system load'} + +Pi-hole is very lightweight on resources. Nevertheless, this does not mean that you should run Pi-hole on a server that is otherwise extremely busy as queuing on the system can lead to unecessary delays in DNS operation as the system becomes less and less usable as the system load increases because all resources are permanently in use. To account for this, FTL regularly checks the system load. To bring this to your attention, FTL warns about excessive load when the 15 minute system load average exceeds the number of cores. + +This check can be disabled with this setting. + +#### `CHECK_SHMEM=90` (PR [#1249](https://github.com/pi-hole/FTL/pull/1249)) {#check_shmem data-toc-label='Check shared-memory limits'} + +FTL stores history in shared memory to allow inter-process communication with forked dedicated TCP workers. If FTL runs out of memory, it cannot continue to work as queries cannot be analyzed any further. Hence, FTL checks if enough shared memory is available on your system and warns you if this is not the case. + +By default, FTL warns if the shared-memory usage exceeds 90%. You can set any integer limit between `0` to `100` (interpreted as percentages) where `0` means that checking of shared-memory usage is disabled. + +#### `CHECK_DISK=90` (PR [#1249](https://github.com/pi-hole/FTL/pull/1249)) {#check_disk data-toc-label='Check disk space'} + +FTL stores its long-term history in a database file on disk (see [here](../database/index.md)). Furthermore, FTL stores log files (see, e.g., [here](#file_LOGFILE)). + +By default, FTL warns if usage of the disk holding any crutial file exceeds 90%. You can set any integer limit between `0` to `100` (interpreted as percentages) where `0` means that checking of disk usage is disabled. + --- ### Long-term database settings From 4c4f9de55f0cfb922dff67f97cb1b78fd9539725 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Fri, 17 Dec 2021 21:44:56 +0100 Subject: [PATCH 02/10] Add dnsmasq cache dump documentation Signed-off-by: DL6ER --- docs/extra.css | 1 - docs/ftldns/cache_dump.md | 198 ++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 docs/ftldns/cache_dump.md diff --git a/docs/extra.css b/docs/extra.css index 0cf7e1d..a0516c8 100644 --- a/docs/extra.css +++ b/docs/extra.css @@ -14,7 +14,6 @@ .md-typeset code, .md-typeset pre { - white-space: pre-wrap; color: var(--code-color); } diff --git a/docs/ftldns/cache_dump.md b/docs/ftldns/cache_dump.md new file mode 100644 index 0000000..9a79ee8 --- /dev/null +++ b/docs/ftldns/cache_dump.md @@ -0,0 +1,198 @@ +## Cache dump interpretation + +The `dnsmasq` core embedded into `pihole-FTL` prints a dump of the current cache content into the mail log file (default location `/var/log/pihole.log`) when receiving `SIGUSR1`, e.g. by + +``` bash +sudo killall -USR1 pihole-FTL +``` + +Such a crash dump looks like + +``` plain +cache size 10000, 0/20984 cache insertions re-used unexpired cache entries. +queries forwarded 10247, queries answered locally 14713 +queries for authoritative zones 0 +pool memory in use 22272, max 24048, allocated 480000 +server 127.0.0.1#5353: queries sent 10801, retried or failed 69 +server 192.168.2.1#53: queries sent 388, retried or failed 3 + +Host Address Flags Expires +imap.strato.de 2a01:238:20a:202:54f0::1103 6F Wed Dec 15 20:51:59 2021 +imap.strato.de 81.169.145.103 4F Wed Dec 15 20:51:59 2021 +api.github.com 6F N Wed Dec 15 20:36:02 2021 +www.googleapis.com 2a00:1450:4001:831::200a 6F Wed Dec 15 20:34:35 2021 +www.googleapis.com 2a00:1450:4001:801::200a 6F Wed Dec 15 20:34:35 2021 +www.googleapis.com 2a00:1450:4001:80e::200a 6F Wed Dec 15 20:34:35 2021 +www.googleapis.com 2a00:1450:4001:80f::200a 6F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.185.170 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.185.202 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.185.234 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.181.234 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 172.217.16.138 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.186.42 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.186.74 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.186.106 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.186.138 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.186.170 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 172.217.18.106 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.184.202 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.184.234 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 216.58.212.138 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.185.74 4F Wed Dec 15 20:34:35 2021 +www.googleapis.com 142.250.185.106 4F Wed Dec 15 20:34:35 2021 +KLA 192.168.2.246 4F D Thu Dec 16 12:49:00 2021 +dominik-desktop 192.168.2.224 4F D Thu Dec 16 18:03:49 2021 +fritz.repeater 192.168.2.3 4FRI H +lan F D Thu Dec 16 20:08:29 2021 +dominik-laptop.lan 192.168.2.206 4FR D Thu Dec 16 20:07:45 2021 +dominik-laptop.lan 2a02:b30:f0c:cf00::1ac 6FR D Wed Dec 15 21:07:44 2021 +dominik-laptop.lan fd00::1ac 6FR D Wed Dec 15 21:07:44 2021 +Internet-Radio 192.168.2.239 4F D Thu Dec 16 12:54:33 2021 +Internet-Radio.lan 192.168.2.239 4FR D Thu Dec 16 12:54:33 2021 +textsecure-service.whispersyst 13.248.212.111 4F Wed Dec 15 20:32:00 2021 +textsecure-service.whispersyst 76.223.92.165 4F Wed Dec 15 20:32:00 2021 +textsecure-service.whispersyst 6F N Wed Dec 15 20:42:00 2021 +arduino.hosted-by-discourse.co 184.104.202.141 4F Wed Dec 15 20:35:40 2021 +arduino.hosted-by-discourse.co 2001:470:1:9a5::141 6F Wed Dec 15 20:35:40 2021 +posteo.de 185.67.36.168 4F V Wed Dec 15 20:32:59 2021 +posteo.de 2a05:bc0:1000::168:1 6F V Wed Dec 15 20:32:59 2021 +posteo.de 23244 8 256 KF V Wed Dec 15 20:32:59 2021 +posteo.de 53881 8 257 KF V Wed Dec 15 20:32:59 2021 +posteo.de 53881 8 2 SF V Wed Dec 15 20:46:13 2021 +strato.de SF N V Wed Dec 15 20:51:59 2021 +ip6-allnodes ff02::1 6FRI H +ubuntu.com SF N V Thu Dec 16 08:31:26 2021 +fritz.2400 192.168.2.3 4F I H +de 57564 8 256 KF V Wed Dec 15 20:32:59 2021 +de 26755 8 257 KF V Wed Dec 15 20:32:59 2021 +de 63015 8 256 KF V Wed Dec 15 20:32:59 2021 +de 26755 8 2 SF V Thu Dec 16 16:38:18 2021 + 20326 8 257 KF V Thu Dec 16 17:46:14 2021 + 14748 8 256 KF V Thu Dec 16 17:46:14 2021 + 20326 8 2 SF I +i.stack.imgur.com ipv4.imgur.map.fastly.net CF Fri Dec 17 22:10:29 2021 + +[...] +``` + +where we stripped lines like `Dec 15 20:32:02 dnsmasq[4177892]:` for the sake of readability. The format is pretty self-explanatory. + +### Cache metrics + +``` plain +cache size 10000, 0/20984 cache insertions re-used unexpired cache entries. +``` + +tells us that the cache size is 10000 (Pi-hole's default value). None of the 20984 cache insertions had to overwrite still valid cache lines. If this number is zero, your cache was sufficiently large at any time. If this number is notably larger than zero, you should consider increasing the cache size. + +### Query statistics + +``` plain +queries forwarded 10247, queries answered locally 14713 +queries for authoritative zones 0 +``` + +Mostly self-explanatory. Queries answered locally can both be from local configuration, HOSTS files, DHCP leases, or from the local cache. Queries for authoritative zones can only appear when defining an authoritative zone (`dnsmasq` option `auth-server`). + +### Blockdata statistics + +``` plain +pool memory in use 22272, max 24048, allocated 480000 +``` + +Blockdata is used to cache records that do not fit in normal cache records. These are `SRV` targets, and `DNSKEY` and `DS` key data objects. Negative (empty) entries do not occupy blockdata space. Blocks are preallocated to reduce heap fragmentation. + +### Server statistics + +``` +server 127.0.0.1#5353: queries sent 10801, retried or failed 69 +server 192.168.2.1#53: queries sent 388, retried or failed 3 +``` + +Self-explanatory: Queries sent, retried, and failed to the individual upstream servers. + +### Cache content + +The first character of the flags describes the query type: + +Character | Record type +----------|------------ +`4` | `A` (IPv4 address) +`6` | `AAAA` (IPv6 address) +`C` | `CNAME` +`V` | `SRV` +`S` | `DS` +`K` | `DNSKEY` +`(empty)` | something else + +The rest of the flags can be almost any combination of the following bits: + +Bit | Interpretation +-------|--------------- +`F` | Forward entry (domain-to-address record) +`R` | Reverse entry (address-to-domain, typically combined with `D` or `H`) +`I` | Immortal cache entry (no expiry, typically from local configuration) +`D` | DHCP-provided record +`N` | Negative record (This record does not exist) +`X` | NXDOMAIN (No record exists at all for this domain) +`H` | From HOSTS file (always combined with `I`) +`V` | DNSSEC verified + +The `V` flag in negative DS records has a different meaning. Only validated `DS` records are every cached, and the `V` bit is used to store information about the presence of an `NS` record for the domain, i.e., if there's a zone cut at that point. + +### Examples + +#### `A` (`DHCP` provided) + +``` plain +Host Address Flags Expires +Internet-Radio 192.168.2.239 4F D Thu Dec 16 12:54:33 2021 +Internet-Radio.lan 192.168.2.239 4FR D Thu Dec 16 12:54:33 2021 +``` + +Both cache entries describe an IPv4 cache record for a device in the local network. The `Internet-Radio.lan` has an `R` as it is the name to be served for a reverse lookup as it includes the local network domain `lan`. + +#### `DNSKEY/DS` + +``` plain +Host Address Flags Expires +de 57564 8 256 KF V Wed Dec 15 20:32:59 2021 +de 26755 8 257 KF V Wed Dec 15 20:32:59 2021 +de 63015 8 256 KF V Wed Dec 15 20:32:59 2021 +de 26755 8 2 SF V Thu Dec 16 16:38:18 2021 + 20326 8 257 KF V Thu Dec 16 17:46:14 2021 + 14748 8 256 KF V Thu Dec 16 17:46:14 2021 + 20326 8 2 SF I +``` + +The first three cache records are `DNSKEY` records (type `K`) of the `de` domain, the fifth and sixth cache records are `DNSKEY` records of the root zone. +The three numbers in the `address` field correspond to the key tag, the algorithm ID, and the key flags. The fourth and seventh entry corresponds to a `DS` record (type `S`) where the three numbers are the key tag, the used algorithm ID, and the digest. + +Note that `DS` records may have an empty `address` field when they are `NODATA` (flag `N`) like + +``` +Host Address Flags Expires +hosted-by-discourse.com SF N V Sat Dec 18 11:06:03 2021 +``` + +The `DS` of the root zone is marked *immortal* as it is given by the locally defined `trust-anchor`. + +#### `CNAME` + +``` plain +Host Address Flags Expires +i.stack.imgur.com ipv4.imgur.map.fastly.net CF Fri Dec 17 22:10:29 2021 +``` + +The `address` field corresponds to the `CNAME` target record. + +#### `SRV` + +``` plain +Host Address Flags Expires +_sip._tcp.pcscf2.ims.telekom.d 100 10 5062 pspcscfhost2.ims.telekom.de VF Sat Dec 18 13:33:37 2021 +``` + +The `address` field lists the priority (`100` in the example), the weight (`10`), and the SRV port (`5062`), followed by the target (`pspcscfhost2.ims.telekom.de`). + +{!abbreviations.md!} diff --git a/mkdocs.yml b/mkdocs.yml index 6d5b34c..d777923 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -112,6 +112,7 @@ nav: - 'Compatibility': ftldns/compatibility.md - 'Install from source': ftldns/compile.md - 'dnsmasq warnings': ftldns/dnsmasq_warn.md + - 'Cache dump': ftldns/cache_dump.md - 'Debugging FTLDNS': - 'gdb': ftldns/debugging.md - 'valgrind': ftldns/valgrind.md From 5c713bdf709bf3bb4c61dc77029d0dd038656693 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Dec 2021 10:07:24 +0000 Subject: [PATCH 03/10] Bump mkdocs-material from 8.1.0 to 8.1.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 8.1.0 to 8.1.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/8.1.0...8.1.2) --- updated-dependencies: - dependency-name: mkdocs-material dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fd88103..f966af3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ markdown-include==0.6.0 mkdocs==1.2.3 mkdocs-git-revision-date-localized-plugin==0.11 -mkdocs-material==8.1.0 +mkdocs-material==8.1.2 mkdocs-redirects==1.0.3 From ff7b8a842a1ae698044ed7fc1769354c8ea4dab5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Dec 2021 12:03:24 +0000 Subject: [PATCH 04/10] Bump mkdocs-git-revision-date-localized-plugin from 0.11 to 0.11.1 Bumps [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) from 0.11 to 0.11.1. - [Release notes](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/releases) - [Commits](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v0.11...v0.11.1) --- updated-dependencies: - dependency-name: mkdocs-git-revision-date-localized-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index f966af3..f47fa22 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ markdown-include==0.6.0 mkdocs==1.2.3 -mkdocs-git-revision-date-localized-plugin==0.11 +mkdocs-git-revision-date-localized-plugin==0.11.1 mkdocs-material==8.1.2 mkdocs-redirects==1.0.3 From f598e7b56d114efbbb402302d0216c0fb3f385c1 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 18 Dec 2021 15:19:36 +0100 Subject: [PATCH 05/10] Update docs/ftldns/cache_dump.md Co-authored-by: yubiuser --- docs/ftldns/cache_dump.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ftldns/cache_dump.md b/docs/ftldns/cache_dump.md index 9a79ee8..defa63e 100644 --- a/docs/ftldns/cache_dump.md +++ b/docs/ftldns/cache_dump.md @@ -6,7 +6,7 @@ The `dnsmasq` core embedded into `pihole-FTL` prints a dump of the current cache sudo killall -USR1 pihole-FTL ``` -Such a crash dump looks like +Such a cache dump looks like ``` plain cache size 10000, 0/20984 cache insertions re-used unexpired cache entries. From 0c4a2d1418b599f7545c9ce32f2439d5305d3dc5 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 19 Dec 2021 11:42:07 +0100 Subject: [PATCH 06/10] Clarify interface listening behavior. Add documentation for the new fourth option. Signed-off-by: DL6ER --- docs/ftldns/interfaces.md | 64 +++++++++++++++++++--------- docs/images/interface-listening.png | Bin 13304 -> 0 bytes docs/images/interface-settings.png | Bin 0 -> 18525 bytes 3 files changed, 45 insertions(+), 19 deletions(-) delete mode 100644 docs/images/interface-listening.png create mode 100644 docs/images/interface-settings.png diff --git a/docs/ftldns/interfaces.md b/docs/ftldns/interfaces.md index 1df448f..05c03b0 100644 --- a/docs/ftldns/interfaces.md +++ b/docs/ftldns/interfaces.md @@ -1,42 +1,68 @@ # Interface binding behavior -## Interface listening settings +Pi-hole offers three choices for interface on its dashboard: -Pi-hole offers three choices for interface listening behavior on its dashboard: +![Available interface settings](/images/interface-settings.png) -![Available interface listening behavior settings](/images/interface-listening.png) +By default, FTL binds the wildcard address. It does this for all options except *Bind only on interface `enp2s0`*. Your Pi-hole then discards requests that it shouldn't reply to. This has the big advantage of working even when interfaces come and go and change address (this happens way more often than one would think). -### Listen on all interfaces +# Recommended setting -This setting accepts DNS queries only from hosts whose address is on a local subnet, i.e. a subnet for which an interface exists on the server. It is intended to be set as a default on installation, to allow unconfigured installations to be useful but also safe from being used for DNS amplification attacks if (accidentally) running public. +## Allow only local requests {#local} -The `dnsmasq` option `local-service` is used. +This setting accepts DNS queries only from hosts whose address is on a local subnet, i.e., a subnet for which an interface exists on the server. It is intended to be set as a default on installation, to allow unconfigured installations to be useful but also safe from being used for DNS amplification attacks if (accidentally) running public. -### Listen only on interface `eth0` +The `dnsmasq` option -Listen only on the specified interface. The loopback (`lo`) interface is automatically added to the list of interfaces to use when this option is used. When the optional settings `bind-interfaces` or `bind-dynamic` are in effect, IP alias interface labels (e.g. `eth1:0`) are checked, rather than interface names. +``` plain +local-service +``` -In the degenerate case when an interface has one address, this amounts to the same thing but when an interface has multiple addresses it allows control over which of those addresses are accepted. The same effect is achievable in default mode by using `listen-address`. +is used. -The `dnsmasq` option `interface=eth0` is used (the interface may be different). +# Potentially dangerous options -### Listen on all interfaces, permit all origins +## Respond only on interface `enp2s0` {#single} -We intentionally add this option to disable any possible `local-service` settings from other files. This truly allows any traffic to be replied to and a dangerous thing to do. You should always ask yourself if the first option doesn't work for you as well. +Respond only to queries arriving on the specified interface. +The loopback (`lo`) interface is automatically added to the list of interfaces to use when this option is used. -The `dnsmasq` option `except-interface=nonexisting` is used. +The `dnsmasq` option -## Technical details +``` plain +interface=enp2s0 +``` -By default, FTL binds the wildcard address, even when it is listening on only some interfaces. It then discards requests that it shouldn't reply to. This has the big advantage of working even when interfaces come and go and change address (this happens way more often than one would think). +is used (the interface may be different). -If this is not what you want, you can add the option +## Bind only on interface `enp2s0` {#bind} -```plain +As said above, the default is to bind to the wildcard address, discarding requests that we shouldn't reply to. +If this is not what you want, you can use this option as it forces FTL to really bind only the interfaces it is listening on. Note that this may result in issues when the interface may go down (cable unplugged, etc.). + +About the only time when this is useful is when running another nameserver on the same port on the same machine. This may also happen if you run a virtualization API such as `libvirt`. + +When this option is used, IP alias interface labels (e.g. `enp2s0:0`) are checked rather than interface names. + +The `dnsmasq` options + +``` plain +interface=enp2s0 bind-interfaces ``` -to some file like `/etc/dnsmasq.d/99-user.conf` and see [the comment above](#listen-only-on-interface-eth0). This config forces FTL to really bind only the interfaces it is listening on. -About the only time when this is useful is when running another nameserver on the same port on the same machine. +are used (the interface may be different). + +## Permit all origins {#all} + +This truly allows any traffic to be replied to and is a dangerous thing to do as your Pi-hole could become an [open resolver](https://serverfault.com/questions/573465/what-is-an-open-dns-resolver-and-how-can-i-protect-my-server-from-being-misused). You should always ask yourself if the first option doesn't work for you as well. + +The `dnsmasq` option + +``` plain +except-interface=nonexisting +``` + +is used. We add this option to disable any possible `local-service` settings in other config files. {!abbreviations.md!} diff --git a/docs/images/interface-listening.png b/docs/images/interface-listening.png deleted file mode 100644 index 6b7f5b55aeccaf1471b247f4e6c404b22a13e1aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13304 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 OIAwVaxmp>Eu>S`P);S6Q diff --git a/docs/images/interface-settings.png b/docs/images/interface-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..22f5d325351c4284e91c6bb5a6617ca0a59650b6 GIT binary patch literal 18525 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 literal 0 HcmV?d00001 From 43547678e85d97d7a48688d02d4ce99a3028ade1 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 20 Dec 2021 10:25:36 +0100 Subject: [PATCH 07/10] Update screenshot after style changes Signed-off-by: DL6ER --- docs/images/interface-settings.png | Bin 18525 -> 18553 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/interface-settings.png b/docs/images/interface-settings.png index 22f5d325351c4284e91c6bb5a6617ca0a59650b6..986d39a64c9bef844d7ac7d2da077fa34aa5dd6a 100644 GIT binary patch literal 18553 zcma&Nbx>U2wl#_ech}$n8VC{~xVvlPjYA-~yA#|!NFYGabVG1=cWd0;-Qmmc+;i*P z@724n-u`EWjDN>9@yv z+tJt8x3^n`=$W^dx2?Bl_nx`(azi9+bfS=(c8^IZ)4wt zwKD}J)H+XIJ6~SGHlI&x9a0>%|Exc07H>Yi4Vrx7SHP*xP)l6klaDl2l~T5e;o?<}ZQC#q7Tj1}n3)_N+j&~~<7ZrZ z@;lgEDYTDM(D&_ZyunGR+w*h5%yrop$<{<0XAy(vqaF=~2nh{486HlLpS=n~9+nX; zLbk=i+-h1;eLOOtknS@(MG0vk9zFrH5(6$ptypdW=SW3aAwfYkUTzupvT#N9)9FbW z!(b&zsfojD8C4?@RW}baO-Dhcx9ujNn6tK~f@}4va$=XSkbEnoOHt8ViAT|vpZno( zQBW>W(a3GJ%GXPRd+Y2`$Ey6Rw&eLDIBxOb?Y2YQrOnXe_XwoUO2EPoBy)2A5~C|& z8S@8PA1k4rXe4Igp!~TZNV_A)%|Xz?R!-OJGnc--XT|v0#Qf^o?=K~Gs%=xdA_j4g zN?#Rao8ctmFee?^FC}`OdG|B9ijq2R($ZoAmeD4k(>0{Sl&!1>E;r_T-`+a3?Ze_5 zho|RHOKPW#ZEd(EECRwEzt|aEO}2W5hh*AIMmALSH`=m%ew}u7mmTu+Ud38*Sx%m zvb5yF>;U6$b-Poq;u5zta#BCUr=Gjt;^X|2zs9?UqcuPuVPK@Zd_iUnBmN(MHUbODM$fL6f^`m7$Vy#A@;6!jB5SZ#0*q_ z*i^wvY5C%WZJ>rUjS=dlN=NjDo)>XAJ;L;hxcA(zQ~Gu%+h`Slh0!*EP|0(-RufDD zwb7jY1i%n4ifxeXotymUd~YRTBZ`+%jXpb)gzmX%nknVGOg1b?~R zTC9$%63%Ad+UTxV1gq|{ZWgdCcqqKxa{M9{298(gy-5ECI8g-Oed!b7TyspTl&@keULT0zv~u%dGlAGhvRZvfcJy}Knw6gUc?TksO9gP*B;?RVA_ea?q-SIE9ixYncm z$qr<8ALxFuvb_%VH8niZbUM`F{kAR&q_jKOCvAL~Nlhxw>m8~}Nm@9$m4R@3Pt($$ zIl$1Sbs&sY8t}1P$vDX*i9}_a)C>o?9m`vY9M4PN{&;z>jANqP7*`2^Zx7a6LJ*}m zO-~XKtOVlRT!;tT$NQb6Bir%D^y{t` zP^V#(<=7-XY>Hh(klPO@r@w|ZXgDIK%}95ojp`N$?TFRbml4CVIY{CdD01))ha9VX zuIi5qr9SW=)(d6TqFAN!CJ;}-I*X*@HhLkxn}(BI>u{-44zcww2+y&!zb55%NKM#| z6|IPb-*Jo~;# zU4*H=tGX3v!}(|R`p1v{-OV3t5CpIuUXh$NtA(a0e2 zLAC??e$M;gWRnNm4KB*)fb1I>`M}Q=nJ%;3~N_3Zk7SpJw84JN8r(`2ll%Z97MuHPu-bjmMjfPe@P-pNNgT zfw@%QDO8(PYYF>{DLF^gH+TY>f;5Ckd5qJCki{OH<;P^7-X5xFk>|E8Z!2nMw;t~n zm8ruOGE(6e|Fz~-q16EN!zcR=f26*E;k~nPy9i9XlF7FWD++#J6#$v(n{5U#q^pM% zpJ6WlBLpcd^3w;!3NaH?40)PwISs8;+-BxpoX;`T(3p!Q(`36)Y_$b)l-D0n6jvR= z{t|Bsl{|uudw5fw2tzE(VIi0Y4^t&~u9tT3+L!0QdeiB_)~>+c(T-r!8 zc2pGs){gt4Zxqn<>;QpHe)mr#e97BhYW2Kd2Mce`D3`C&^W~gIpC-}#`~*+NyjWQ= z84=mre(7coxdcVoU=;pVI*3kWGV;C1*A|DA{8Viy_C$0`)yHHgM}8cqaMN zqCko~BZDclawJK}EwFugVgnJGEx2|g#_H~e_uZ+2z*-NVl;JQC2)bY zc%x`dL5txn&tWmWsdBEeTxYWD`=$dB^WEb7@s@&5f0Pw=*{LMr*PPjO&KUBMw`dSA z=9he!WyAuartYn2^pxm>@3!pA3`d%`n1qW4SVIZ$$`ob^vtPv8b7(lpEOp=aEkN7A zFmnhVfQ{0d+X#a(on&7KbFe*rKWARAY3&Y$&2u-b$K_f>;{?3>c0Hr z-Fp3GnoP;M#&t%ziy*yRnjuY3@wuepYXrHNgLe-zoBszwTAp%>-ijqr-pOw_Z9go0 zJnagji!_awGAmO3jVs*DJv>&W>fQ~oNA~iPPeuL0kXOFqxa~J>feWLaLhablBp8O*zSjGr-m)xTXv)Y-6wQ=tv0+SvCbge57L_WL*%&r95#3Z1 zGNTJY^arGkMXfa+=3X^nL<~l1tc&9-$V{K#sIaUDp15y!9&0I?Vi|NMqj?lt7rnoC z(h+0>zpn7OR6rq!KfuGa?}*zy8*8{o8k$Ob>g}*8N7?Wd4&06>v^Gb*?=ykFgwOie z>D?eoLW)lfT8(iljC+RU()HagdtsDpO4__zPSJdQheZmfgKfACnk;#zWGr(gG~Ya_ zDTpJT@zCGVil-;)I3yJbx)(WEbiq`w@;#Y1{FL;W5Tt?<62*J#>(gt)E~&3i%J zDkgh4GoU=Mc($tl+rDivC8PNR(XmzHm-n+oFT91!MPn4s1EGA`9e<1}PPKT^Mn5J3c4nFR6EAiNWmx5^ zAz|798g>#DP$VpZrTn++!ITt992VK*&XT$4*q(1+VcO7prA6s^WxuB(;Mf{=^wgYXn^m|Ul1_HXNpvO9$+cr;VIM?jaWB7ol{l3H=# z2QHB5guQle*{5@+P1H5lIAI0Bv5KfsHlY7VP8bCXi<8G$GNlM9w4Rp)vGJ7cK)(B6 z{a1HbbE2>KN57GZ)Oiz~uW8!RS}oG5zfK88zo>n>Q`qTf%Yv>}pH(fji!?i1MFlF9 zdM8uDIFY+I`3YG5`z z1RJCoY)v7_blCxKT*)F5?}Z+g^V#O;ZmmTmPdO$H^&F7c0^huU_YNF0l|U4wP$x{_zzj8Dn+EGmfMow5*~V8wHr^3wepx zWa)gp>_J2>QfLYsLl823Ab;4t<*iFjb$3zhIW#r-w*28PkPt^fWoKY`IurY_r**^>C&Sf9f9EO7a<@P`83{oWb8BJ>*eXP8YBcjG3-7BP+-x zChDQ!6Vup!6uT~pgCrR02I1%h!I$#)5f)bef*SCW9%)H^#G}3bpl3!G*VX^DGodWY zoUU?wPzL0a@{J`M0++f*$3gHyrWknr^BD*f7|+P%*_)OIbiui6!nJA^~Jpid@!NTHNcwjV}I z%$SV=7&1^BdtKg@o7%|rHtl7`t%P}baF{llmHXb6?^oQTu=VNd3*pc2Vg$!V433Sv zQiD+b82TTv^wyp~Ay2{F(>um|?S{?V=Y{Rd?e`t*@gHt)|GF2nR#M+mjF15(hQ_-0 zt$A{XzaahT2^Si%RE2Jp{EsIz>R%CPtM*_sQqy!If1}7;{Av|sl7^U82@TsBWkX|8 zfmK71O~$8I#h?BdhD*i7%$!whEmmB-3xD$CzGF&W$P&xvmxbk-GFIixbm?o1zlSAT z%}-?fg;URVnXsIvw!DXz)0LZg7ZPCX7uC+gQw+rJ73uxok2#IzqjdMpr~;3uUpK>- zenjw$)!t1$>6hm!Ju(1&;SK|k>p-;+kAzoV#P5Np4;PMRjZ3Tnc{>?I5#q))z4i||KLwO8bSlr3SL6Fyh+93`;wV1g^EcYov6!nU9n+w4 zxynU{kzKT714P#+%9QHK^=#8kOcrO! z-pEsy5;uzIW5)XXnNLnhxd~EGD+g7cR;x#FQq!$XNpZ2det`KSmv6>*c@R}42lGeQ zRiPlizqy}4DOYfQ8|NBobQ;{Dk2Gg7KZ@}agg775i}>k5@OCI+!ai~VcO%1u$y3H( z+NSR2s!!4oY8&0S@tN+bj|m4mBmfq5jhKn>lWWLM8}kmD2Z@^rpQGLZ8WZ0KlOMVe zAXBB|g8aRw4uYcHts_ZE4WeJ$FYRy)?}{pHHbCmK@y~!>2jwo*?cuo?;04;CfWWuj z@J}zAPvV$>fcnbYFiks+Y95xRv$32=XASmQ2`hm*<*Ni!gyZT&U%3UvXcGkl3KO~L z#HD@~w+R#uK=xoiE1G6FoM^UYzvDy*0r9NmibjZ=OLL5YlJ)E%PZhsj58ArDVv82Y zjgh89OTM$O0u|x%s;#s$j!Kz$#b$S8x3%Co&~X#ISDX;DUX~JgpzwolRFZ*rDtNVq z3_uc`k2On;m!uM$M^Y(ZG(UF|RrE*jyMZ(97S#Y5y}0U69Seg#1i(thKD4L*D~D;# zT#UM+7F+f;7d8tbiyLzpE{vWECE5=V&hQ`wt8`6TIoi#~TV`TrcI#!^O^jo;UAtFm^`H=U{ zGsGHI%9DTNnHqtGzSxYa2^sh~o)>C>5S_V?Y$7ptG|ehc;VN$aR{=jvto-ChnyOc= z)wK;@!8t;9s?Tm5R2b9wnMuw5xYQU_k6N)lMEz9KkxLle`nVzQxI2=CpR}_@Xjb1F z?j6*dzBVkK5Fu&-CWIqA$vI{J)jP!eD^k1j))E5Lt?z|1F^FI3c!t7%fjD=Wdp1D#&Q_TM3W@{`w?`y zbUFVTJ@%CG`Yjax+%hhgV7LCfWlO(^5)fqS0z6^Ryl6M;6Ve+NU!juh9jL{^($}ha zwm@#@XQ!!BJ8b=RM!rokaHt^gBh0GNv2}re8?gO z#zqCr{`$WS6525Z4SH6nK;WQEhkeUtr%J=qBOhY?(y4%5f+iulVjJun4%!RSk_QyD z`t_x;fIVm@PUf1*ZjJL#&9t~5yxsDQ|E0RexxoK{(J+La*F{UOiXdFYo!p1 z`$MK6@S`wJCu&v5R^x07InS@2_j~j&XV3+e95mIykJd874kNv#vsr_& z&G>SQsWKC`LHcBWTIOy0;EOO%Y`}~?Y*U}GLs~adDzW5BFf!;8 z5o}I&M3LJdXuFz}NOT?)F+Kj1*~D!d5+RbGIECD5USb$GwZ%+X^YwPXBt#zFbXoJ( znr#gRjZFZ(fE?1XO$OSkLeGtb)I)?32np>&#PIGgKR%!W8L05!%hfo*qy+z)SwT3q z>e#M-tk40suecFpJZtNmJyxctD0mnmFtpG1HnWL2FboswiV%|8IWz^1WIk)ApEfyi zxwLu0W<0ABu~l27ME<{DasrPJdtn{h5qkGmK8r?LkzO>&`m^q3@5EI`nu+5g6W_V2+3Y*&oD66O7Y z*mQ2UtBf;E8`fZI_&?~`ciMa%erFyIa6L$UvG;PJdzZD(EjvmIbrn@y}CJ1c*bJ@oa z&2EqssSXRA-!4L2#!MMal^mNe`MJL&spPqz*CN?Px9^k$N2Cva5cZcWSLZh`89u96 ztxi<6JH{k^(>R=OQFUY4Znq=|`d}+p(Z_khz-^f-)0^y3810r&(q1$H((hPXq#YRJ zOziqZfMd_OM)M|=j*kEW7zXLABFf6O^7|E`!lLB_!9DdkZfD7$XiW{K8&M^#CEd7w z?^qHn(rHmv9@=HiC%LQmy)i*y6ulc4Ou>fOa^aWTh7|`=9R0`JIt<$@ucL4iE-Jg^ zmI zHH!5vpUdW{jl$x_lab!_Wro3>zdn9Rqi(Pun4mzp-Ou@QzM!Y}@#0{MLBLE-sbsCK z<`-?A!-=9^zuhK69P2i9xWq-YY=ypVjAK8~s6eQra#c&VutV@eT^x;QC#U&Sh zni=(FYEU>VfArx6{!C^UA7Ktg2#~qzT}IaSk8DUzR+l}=mQ2DqVhzi%l9$3Z*dVm$ zsf%GR^a@lQnZroSZk0ojx=U>CE|ZB*0OU|^dUC;?cC*O~scOu+o6dc?JRS}@j#8`9 zzHAu5wH@|Z{t)6uE%&|F(FiVbKKvG8$@_HnftndOh-S5EEbjZ2$#}M*)*)K1^!Z|BS3gD~*r{9{QHUBrwokcpE>|vKXWlH48Hna8 z%zrzkESW^|{@}-tOV-rL?{XfOtsSTWb^QGUw#Smrc_vc`h<0*Vf1wsJ>q}_;Yj#&r zFdSp0)S`0=fp#-5(PyGxL&yT9vMc_Go(`{qDrXCw_llW?`L$t(F;uSBhnC=v`*^hz z{4k9ka=9lMOov;6fG^z;H|bf^l^F*5^zvY>zu|%jEx>#(WyK(`XzG)9Obr36u7VVH z=BvqK4`2y@8`@K&Z_ArU09aj@k10Wg69mJU0@|%bbUzFJ^bOrfoiHM6)BV}@$4}PM zbe#N@R_;IW4WxnpFValk?-J&evEJT+QVpHnFX#$?wijF=I1{)lkwJ_`$Ob`!&%_wOn9~sMcUEU?*WE_&H!6P%!B9sJyT5i*dlj{)dk8 z;L-G5&XYNQ4e&s4?_R^F=<2Yz=r^4M2E660S4dbP#aKw>cCBjMnO(q;C^!rwk)eE* zDN`BO>BkVq#Mq6w4(rg z)*Qm$6_BZ=FW2h`D+`tPlv(|_D)HZbZ{t*CmDP2dxE;vYuYGdICJ4<1I~=rCCue^^ z7djEaEogobc6c=IbnbRaJl5aFcdVX8t^Wvqg{fON@7-FM!20TI*#`@8c zlz)oMwIGZyilIAamv1n3%PGj`R5w(|1@4p`7EkOQ${68uSxPjbYaq2Z%nFIfAEbQH z45C^T_ZJ16e1VHHLsZ_cm$D!MGQ6@FY8M^EU{wmV@X`qBJx7A*DVa+c zxXhwu#2~mqahg}NL4+%HN<;ucQRcqEVZ9EY)sKEwy{NVP^v=0|YR=!w%FYt%4NFff zxQ8Ry*FD>z_%SR>{c8uG)Ek)el~JQw@?Bxxd+9yHCu4uN?_97lZhn6wgv2_jng++A zPjjx2C&x!j0;q(K%5}>~J(m;;$!}_8!UydBusv>}Cx%t-Ov)Ry*%g!w ztW!3kA$tC#iNwN7_r?~4Dz6YqY?p43KYw{Cb zNT>le58eu=2kFu0Ulz3IkjXOOH7vNJrfsVMv|*X|zt)kH9FO&U;G9&;o=BKvz*8;d zRBWV1<@qqG$k&sYO=r2_a;>MyPq-h|L5EVY4C?^C3wOU;5xQw+S<4~j7sM~CHu@X@ z$O_gv?C}2pdO3I!f`_qnrwc_!=D~}I)rg3jnb@TE@T*7tQs6@LGf)dw0idmBGQ86# z*=s5hb~t6!0f&QFt_K(uGf4{HKdW-2{QQfs+<S`rIzk5ZdR zkIFwoDxXOt8dCr@?v1XCkRk(p?@@z$OF6Vo;<>l*QLC)m8a|Wh^}~yve5ui*8pXhB zygJ|{0aW>HiRoc<>RrKh0ZzL=0cJRr7O6rsX(Jo8(KvV^sf4!pjA_g#To42pFOz8@bvsQ=EFLFz%C?y)& zTQYgbd%gbtD<}{V2N}8uu$umnV>!rxo z4<I%zWcOH@aC}n49*XUQFwg>``IZv{H5sup;{LS5_qL!pG=V zt~dLFsLgvJE9tChSGnopKe7F%N@Q7VKUr#vK9m~*5y}y5qd%BT%4=z2_fY&Q_!e9s zRfHTohjHuQ*f0y*-{khu~bda&UZhY553?5SQg!^ zlvGn4wZPVIjhEGjH5?UO?*!NiBFglC5zl3YTQ{y%LOw*!?Qvb6_h4a#g5htSKKi!h@B!W%D3B{sSufTpgDECu7x z$PaG(yLKRq4-Z4qA_8$J%;aQE*!8EUN{(CP#^p2`4gxcc^)s=|fH) zN3!c~xX#wy9c=sqjxK7sa(F6l?gP^{0q2NuHx<6*R;MWBCs%2QI<`S(!tlp)}IB|?6q$y|;%|Hd=FR3$VvpcJz*rjww>U zyUiLmLt=5punsCC9b?l33LVU<8@#$MW3eNa5mjNef1kdbP#@XQJpXgk~L^(AT< z)Nx?zjzZJ8db4?ASCKvCN=9|US_(42AN#}gZ*NB~x5Aob&|Eitm~VoQAT=rhS2Mp< zZfDG>nm3+4y9mQLp4pvM7W9>0SUAO7fM?8ZzSQ*JYUFWuZnE|JHDW_P!P(WN1ur}J z28?}AcSq=?ITiP)zF1{6H)6UFq~x0!-Dd5Dfr3XQ8h__7Hf`c#^*`=M|54b$KJ z3V31r7rJHMy^IcHQJrLJnNGL#dprI~F$3UDme+RZvD(F0xDp5f>DrC)a>DB|u?QRM zDR0k;o-T^U-UEA9gto7WH$+#xk5fa-YfrcO6qB2LdqEa<16oV2+XLYT4wO_=Y!TIH z=T*eJd=XTpB!EkKCw1n&jV6cPt!Th*C2)rDRP}H+17qXt-qw#L7anih#3@3W_XOpV`W$ie;albcn>x_UaLE6Q8WWf>70&j5nxPfQuNfkI!qk5Tnx}D6 zMa~`o=G100wOISpv8JFGdh7xczf}53Vf0zXfEg6pa@)12cK{Pway5vB8ZSr<0=#@>`wj*zxb{!!^F?6k+&S zr;xTHcevq99phfu z!;|lx5uqMiWYvJT@|nVn<}Je{dC=!+1~Ls(X36;4A6uT@DxRB)v1v)|O9RH=0|gMG zKSEbSh@DY*%OdPRIYS{2dApP%^N{`=bwS zVn=w<3Nl#ZonUW47ww|F0UL}N z19xpm>WAvW*Z%p(=uZy!CU&ffs>#O&JU-zWmqOT{k?sph6cV!~Czwy2RTo=eM$SQ; z?;eg=L@4kI22BBqJAcUV0I{1HOp<2Dg~^g_*f0Yl)OdiMjm>8GD_5j=boVqwW&6AB zvgXZwXAkaJPBZb&CSH|H&uWq5s*KJmpQc)T*iBp%H1DHESw7%M&m@nw(;`MludZgx zcuQ=gzTrKr+fvTo?5S?1q7bg>u6*U3ozib|iH;W@bKls5Vt~AInt$WpWS`6X@`MFe zu5p;1QFn|{S59J@sDm(a*5Xgj$$rkiV6!1=%kG?hV6q)SWc+7;F+G+3&y&Kx4-Cv6 z{RQgAszA+u4H^ahvoSwqH404bY$b$+zs9A!bvHBR94+Uh36=QmDqU@VM*$AKsl^YO zF?hTS*wbIifT10PgvjRN05ktJ)wY|@D^S9!^8rP}`s1GEUZ95!gPRbC3g+K%k>OQ5 z;BAv({fQr!iJ+;yx(8|uEiYz-3Xb&n$EMBaSNTbk?wIm|h$?j=qi7)nN8=O2 z=NB5|!pE5}wf*i#j?&f5gykx{%pNjwx@K(HrOOo2@(U`g%!qRZ>Y)EmQ)b=SXPAUE zX>-Kdh}~LEW|C5*GWK$(u{JGqp7W9Afje@W3r1G z9>BNdoidvH{lJy+uSa80qY#b6X07E92<)(Y86fhul3Pr%1-B5SOB)nsqQxx;-Cqj% z*8~^1+lleoMSl^#UBkqhQN+68*dq2Uagkf{x8+HnsPu*}-h!W*@M#IG#jqZ} z=K1<#y{1LFGHNVmh80=g2WLBpg&15nMB>$UWy&Xzh7&Q4!kp71J?}G zHmlfN{ke4563{A-!v(Slc^0>p*j)|}!c^a{`U3OEUT#L|oeqAll&Vxk1e0-Q3xCA+ zzn7h#-bvVAS?6~5Yf8!b#O6Laq|Dr~ z1$kv5IgYtOc~o#8ns4@j_kA=#GN>sYQ{!0$Ud>sIl@7aDL6-bWiQT~ZQ(9yF}X zK5ueDpRCLHNcf{)T(a$OD@aHy=g#W;jRD?vx`lXbqg=(vx{tEc!@h^)_ESR^A77fx zUzRd&clU55NeYE}It|EiQRkgUT8LLi%-osAjPiAiQLqDC%1)5%P#OdEug(;Dbch(& zsc1z}w12Z9bksLMTo&Md>DELD@nE$-{jE=3UTZzIKY4NYRj4GSo8C1ySF4w@`8kt9 zE#aWfjnGffpVL*pyXI3%aqX^Zzq-FSjFNE!O>a?UoL59IGP5LC`H)+8;@uXM;5s%p zdly6CIiq|SgOtPnq>h;eBiM#ZGe($#p=UP^3KlK9e^V!?TdI1kDc$QfNUT7bW@5Ps zBB7x}8s@k%_2f#AA%V6uTz}u(^s!g&8@5oOV28;;$=zIu-&#=fN{``SYyBRx+30NL zc)VO)j1dzJT_3E!lBDIvH={?hj_KUO2Kr4JGVbX#Nh+jDjE>S9I?y|F=trSjFS-rl z0tB_6b~hFCX(vQf_z!x0UljVKD^0ohB!!XZeEdEdKa>I=QN%+7G$D`-$reNw{f7YkRjjz zlp6_c{XS*23zMvPd;tM?NGMJK#X+&ds8ZtWw0~*w1dk5(B4_PGHcuo#uvt&jG~RZR zkiIb?!Z7x9RzMN|$B(BFUrx3zykiJ?7GL9(Dp-}v-+}Ukm$kY-3v}W4&H%|HQD_c5 z@^9u%ISMlS(E*Ca8t<^id$AB^s!gfwVho>q$uNpOniLwxKz^?iH$y@_Ud^z2rai@V zy84k2fXi-d%cq>e_iQhlkXLEny<+#{VboyOeC=&h>ES*SGdng#zWp=4$!x(J2_G46 z(ha}FzVb0_Fc+o4ZpM5%8oBl8y0=)#ZmLjR{NCSwfEkelMhPm%0{|V6i`y*5Z%WJc zWUIlJvhQI`&s@%A{r-Xayfh*tR>1WP^X{FyTA%U>H6|fCN|^0uOCxlLT@D0=`sCbG zo)*s?SC65viRR6cSDs?DzxuCx4!=e)e=+7Mk>N6rRFZg-c=bpFo91p9W}&K4@1vI+ z0M~TBd*4wb1|G%8n7nH;CZx4~e-?G)*EZYUn$S|k!)PT}*1&Q*Nl}b42Web+dWK7H zh~V0s7reHJE4`sP*L%yEXH$xvsxdO~$D6CoO(mcA+S}mTzH49o!-Ky^^8dU~_|Myg zPe`Cb@Z|)N6D^daz)?l&Ea4l^2km8HR{D|Uur*%G#`O_RFvsU=ZzJv_!6ncEM;N|P zIJsJj*L7!-4|A8lt9>U!X1u(V=k@uih`Azb?sWA#L!{g3pdJ2x+~Xh9AwsV19nxj{ z1|h7-9xRDE#fR;kt2y6w=rDbFIdbt%HJgl**P(7xUnA{AlN`{zK6I~{L*vyw>~#tD%>_~g zGulL)yUs!8G5WoJ<9G8E~Qtufr|oh&<6rbFn@#%e*V!vy*OyZipt(@e6yM|m>NiU5%Pjp0Xp^a|g$(B{q5 zsF@wlBJ7DIdfk5Iu)D9Ij-Hodb8@zy^pt9-RqwbfJ*j5&fn3*`nTE}jpy6sq+e^iBjzmb-IYliXA*&-(*>pW*yYx2HtmIh{z7 zfguKbMhK2$nm*kIhrQ<%f0HYTad4L!g^-B0GYvTaFUZY~P1p;j zGb+nshcn5fRg2v`Lo58T>^>&Ep4~9(uAB86nR$nX2-UNT*XJM$Jnav_U!FX(+EmvZ z9KdBZ9{_x1BYZzD$$#+Sc;b8j%=i_qR}+>$io?8;?O70c?|^uKr5vc0WO%_hN_{EN zU?4t<_I)<8-Ltny5(rE!l!kv=X$rPXHEAm|$MV%^UH zi*~grQif;${UiAOvS6QOVDW>-z>D$Zso~`pYLYdf?8RWv!s*YNaaq!+EUKX$ANBru zp`g2VC3ARnKH!D}&C_J5;pde+gW><1iPle-=uUN2Q8vaDWGKXIsHc|^9c=dv^_~7q zg01)OP{yP7j!Q!hO4fgJ&+$4s?Nxz#TxZ4Blp$Sy^}y15r9<)LTKjhsu8!NpiKIlwWjaq$fkS?!<{U!OTlK9 z2ZKcmWKc|l5UBNJQ^I6>#0wBiy1RnIdh#~DH{Mx|WvDS2`SyJW`t~imjJL*T-fg|M z?WJ@Pa?6{bkrsgwW7VO-()3|U0`Fr*R&43*<<}@X;vcso$fghyNA9nH zj}e;To;6cLzp@u>7N-~khqs=Q-GkrD6LkeXbAG(^KtX%vcDI^7`)mKs%9&67&CCD* zYqW_s?GU9U5@7T2K8Jz>Hnj{K7Qqzy?VP~PtQ(_hOxc&msx?}fi#dQzlB|})31~-A zkT(>Z%LgYD6^3XTHAwH(&2oI*6(ZHCF7H84%+~8gVO9Xkubxr5;HNWEudRy56Ohp= zp?vIU?hKnc72GutA4CXZ+Z*BZl@9j-57O$0pot9r2HeZB>))dYS4?%GE^`|(b08@g z)T}DZ!OGrw`CgSD7d^D`dvv;3-$#Q^hKle0g#O}Cy62zGNr8Fm z-OQ|Z*Xa)OT_C3af<`f^)K$NsrjTiC=af>VX`p7edmnebAlnudlxgZbh=%qL^33Lc zArqw)ZUre-LPqu@W8r=?r2nZvPK67q?&3^$x!@ci4rhTPIN#Kq<8?7?FdFK@`NP$h zwSZ|fr~U(mC#+l;uPn^>x<0Vww*D_Sz2C)|hbft=ivc@m07d4Q4#oI;pUlifL$WCN zW7hL2$p?|i{@XWg;I1>95fVwaBP-GNA>#(4QZ}N<;11n00+qIx$xW&?Mq1aWtyXi2 zgrqL#>Fr*$=DCKaXV4aDE?Kn-fKWlVOPq}w0K!RA=ZxUhh`P$+5QGdQT=axH%!n2t zDTpZ|HuM^}lbFwJ7{Mfz=LO|q^Pu@}Mk4wLW0gN!*@a}*>j6XPt4Pl1j{;Nh)3T*k z{ebmiqY)S@vf~&Bf%es$D&#@5pP+Y5lkzRu&1(s}8g9u+YIh$MXdig{`<79{ddL#GS9WOL7yf?sC=$ zY4q79lRv1#;-!QC!krCV!joB-o!w&&PQWL0mZQ1UyZmq8yb1T*VlLog!0WQoK=Moj z@Q+KxheX(AQ#O<|9INZ@Lg%3N>WvaAl;P9A{bhd_*8h*K-1o*{cLRU= z_RaS#ZuG1VZX(14y?y)$HI+(lpsihD-q)}37j3}yxv%N#->*RlunBca9FWUJu~ruE zUmS3>86O~EnbrA+lP-5*#t6O!c1>*{as|@W&++w++}UyE{Wh=rGu&I{I`HSF+Lvmu z;-#61kH?qmrLf9R^30uArPW>HAT26ftv~zIF^4Y`J4B&7&`uwwTJ4Y`&?Ei?c_2Nj zQe9y=W#bW3^~oGVdprk2)5t>)P{7M`=<_rIJG@m_IMamsB;83r_ZL--x>{q#FR_j+ zjRBKQx|0Wz0eile0gU`mbEy*0bxu*^MYYVA@m&a*>N^Y^!9qedmFWDxElh@7UHJ2oWUjEPomPpxDd%0*6DI2?^8&Rs^&`D@==%w z>Ziu!&`5cv9(o?%({)})DtoU1`qcP~RZj#yO|^esm!+|*{W||tMd7>cbk`bDMq%jM zycorJ^@6AHFc~$~kZxr0>N?!)mHuwva3+$Btqz1+A1E|_4MraghpE|CCm4*uGiu%H5YNA&NyazuH}M^OlMr4c1EZC0JW8gz zLUk1fB%$;u{fn+sPnH~UQygKqT)*|AeS&FA!7iaH`r00@wH%j@cZX)7MZU&Pgr_?h zBD0rlU}mLbd2DS7FN$6wa|;4*)9gn^!VvmgAR1s0v)#`)VE+=)ui%90QOShtnoO;x zofcB>E)HD!XKjfCpEF%?=Zj8?nrboItTQ^Qw^Q$=@8#c^8Bn^W8 zfH+s;UP&2zaCkdi$;w)h-J*3$?F9ZW0MSbNTE~pfyVTo^)ll!I%1837z51=}Zn)rm7E?Ry zPXyemZ)!gY-L(o&JZ@HswbNBBVqLss-l>1^a*5Y*yt)7%pHEmjKC?cb=7Ex?U*Wr1W?Jn~Flmv#M?VvrVhSrJ$`49XG ziE00a#d&Gw@uPt>^xP0)+v*_x8%GQ{G>@v@klsG@T$<+b=`1G!;!fXT^mv7FDf6XB z>+9fi*@JP^Z2yf@z(@Y}GhMf+2mf!!ZA^!h>OS=Z!3t;|tT7Rdwi0IeFelu zXLbq%IwWqNmC3*38@#ve@=w-!9BP*p=oNbcnp9GyBrOfyd$Ov-B#-B<_{PZ#z01+}qbdlSz=QBFvcf|9V37nGg&&j{In{RE{K0m=i7meZm_q*S=5w^o8<}b_ zM>0qw2e{-dk{bKFA`hv;M}A?`tP=i3R#<2sdfQnvN`-A*^Jq)?ylWKfsyikDCh})C zpQCMFy1^XDnA-s^d5ffQSM|Any^U3#sJyVhomFc6s_s96AN_-oL)ePrLE{fL{zvem ze=u?gTX8(-<&1v?Kl%rwJhm%nl)@G?N?{8crLYB!QrLnv4M>Z50>TxRWH_im<043RY6gkNL7*D|AR3IcuGPdJ1Bw;ieQ5x z*q{hDD1r^D66^)O8N}5VgUy-*ZY9mK&vX*FHK|EK<}UWD)m%BuqrfTCRI3`#tV_vE z0000000000000000N|>g|3*%__urdrecoMDUs?yw9vvIE&O0d8AG?h;U&C+N%cYsU zGka|!io*B>^;##)>H-;)A)LKU=7Eugp)PhhXRjZX;f~JbrfWcZf z1Va@oDsJ_`AXG%efd-4U_~75-IXCxY5|Yp-9|H5y_BQ99o;LaQE`8|vjO)9haiRLZ z!N!Ie$#-lWV=dSMu^ia^Nka=Cud4=j_03>)u;h189c+a%TN7H%g55ckaYn|q{|z?n zg53&WD+(LaP8wQL9qjVC)xnY`0b5?CX2C8(gJIErv}5QL4XBm~=Q?8vAQCebBlkOE z;uGE*;S&JX8RI;zG3I1BA1+Sf_S7u5!;olkTVpYM%;NPd%{fmw*#Y>P$8Ell?L7ls1)5H-1;b@tHGuX`FoFMqwC*f<5-*Ed}Zb#2NU2{5+d zXhUeW48hRR-OOeT>|b%R9jpzWUpyBL3Nz(4uxqxIyv+cBm7CVuFAsESB_PUx)$+32 z8rfF2Jq^{K$3V~3SFOTUWtX!3L7f~Rko=iqF|NDJ%rHbnXm7NRrA^IA*bufgrASSF5VGS%TuI2|7a*s z1{ONlBUovset>P>qGDTmG!l?tDYO|rm0RudHJUUcK(MRPH-u~k@?eeiyTn#ZRsv84 z=RdxiO<*^4XKM2Qn~dvM+Gj0W3R)!xhOfN%P|OU3d=V79;VnpyiFI6(B*5B6j$4*x zmVkA#R0rAVh z$YucNaYle8D*-Iiw(-gLcMAw?;9ei>>oq9fw)tS?z(8`Sv|>}0SFFD>SWHB@U~xu8 zipfeVmcUY<|6;J@H&6x^mnVq8f+YxrXvLO+-62*i*$m)3S_{yMr80pTyWjvOu=u>c z!PnK4j7I~l&b}-4)8F%c_l(8Ev?WpiiwC2VC_Q7RJyR&j1&fJn+6@8=ks!{r zL~MAdtL_==F9l0|{)@qq-vDqy0x1HE2de7(Q~*h$|zR3Sg(tfipHsHUq#8 zw5WTN@5Ni43{U zzkj;7;$)WdQ$b21u=38!Qv?>v)Wdsx%!UkZhTU6nDOmCtCWsjT*+azq%{Nkip*`(c7HsucypKPoQqhQzoRyJe~>u9ze4uFk~l@(KH6byMV dnmva-007(xQPj2mpCkYP002ovPDHLkV1k}UE0X{K literal 18525 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 From 25d0df8244201a15900ab5d76aefae6aaa202de1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Tue, 21 Dec 2021 22:41:44 +0100 Subject: [PATCH 08/10] Add how to increase PHP memory to FAQ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- docs/main/faq.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/main/faq.md b/docs/main/faq.md index 2e2c26f..6a10a5d 100644 --- a/docs/main/faq.md +++ b/docs/main/faq.md @@ -54,4 +54,32 @@ Ask the list maintainer to convert the IDNs to their punycode representation. Internationalizing Domain Names in Applications (IDNA) was conceived to allow client-side use of language-specific characters in domain names without requiring any existing infrastructure (DNS servers, mall servers, etc., including associated protocols) to change. Accordingly, the corresponding original [RFC 3490](https://tools.ietf.org/html/rfc3490) clearly states that IDNA is employed at application level, not on the server side. Hence, DNS servers never see any IDN domain name, which means DNS records do not store IDN domain names at all, only their [Punycode](https://en.wikipedia.org/wiki/Punycode) representations. +### While loading data from the long-term database you encountered an error + +If requesting a lot of data from the long-term database you get this error + +```code +An unknown error occurred while loading the data. +Check the server's log files (/var/log/lighttpd/error.log when you're using the default Pi-hole web server) for details. You may need to increase the memory available for Pi-hole in case you requested a lot of data. +``` + +**Solution:** + +Increase PHP's memory and restart the server. + +Replace `*` with your installed PHP version (e.g. `.../php/7.3/cgi/...`) + +```bash +sudo nano /etc/php/*/cgi/php.ini +[..] +; Maximum amount of memory a script may consume (128MB) +; http://php.net/memory-limit +memory_limit = 128M +[..] +``` + +```bash +sudo service lighttpd restart +``` + {!abbreviations.md!} From 639f835fa8525fda66274adcded1b63b44127bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Wed, 22 Dec 2021 22:04:56 +0100 Subject: [PATCH 09/10] Be more explicte about memory increase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- docs/main/faq.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/main/faq.md b/docs/main/faq.md index 6a10a5d..cec7e26 100644 --- a/docs/main/faq.md +++ b/docs/main/faq.md @@ -67,7 +67,8 @@ Check the server's log files (/var/log/lighttpd/error.log when you're using the Increase PHP's memory and restart the server. -Replace `*` with your installed PHP version (e.g. `.../php/7.3/cgi/...`) +Replace `*` with your installed PHP version (e.g. `.../php/7.3/cgi/...`) to edit the file. Increase the `memory_limit`. You can use common abbreviation (M= megabyte, G= gigabyte). The amount of memory needed depends on many factors, e.g. availabe system RAM, other processes running on your device, the amount of data you want to process. Do not assign all availabe memory as this can freeze your system. One approache would be to double the limit and check if it might be already sufficient to retrieve the data. If not, add another 128M. +Please consider the possibility that your system does not have enought memory at all to load all the needed data. ```bash sudo nano /etc/php/*/cgi/php.ini From 6eecda90384a2f2a013ee1033e37a16a8adce1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Date: Wed, 22 Dec 2021 22:07:09 +0100 Subject: [PATCH 10/10] Step-by-step approach MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Christian König --- docs/main/faq.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/main/faq.md b/docs/main/faq.md index cec7e26..803f9da 100644 --- a/docs/main/faq.md +++ b/docs/main/faq.md @@ -67,8 +67,8 @@ Check the server's log files (/var/log/lighttpd/error.log when you're using the Increase PHP's memory and restart the server. -Replace `*` with your installed PHP version (e.g. `.../php/7.3/cgi/...`) to edit the file. Increase the `memory_limit`. You can use common abbreviation (M= megabyte, G= gigabyte). The amount of memory needed depends on many factors, e.g. availabe system RAM, other processes running on your device, the amount of data you want to process. Do not assign all availabe memory as this can freeze your system. One approache would be to double the limit and check if it might be already sufficient to retrieve the data. If not, add another 128M. -Please consider the possibility that your system does not have enought memory at all to load all the needed data. +Replace `*` with your installed PHP version (e.g. `.../php/7.3/cgi/...`) to edit the file. Increase the `memory_limit`. You can use common abbreviation (M= megabyte, G= gigabyte). The amount of memory needed depends on many factors, e.g. availabe system RAM, other processes running on your device, the amount of data you want to process. Do not assign all availabe memory as this can freeze your system. One approache would be to double the limit and check if it might be already sufficient to retrieve the data. If not, add another 128M, check again, add another 128M,.... +Please consider the possibility that your system does not have enough memory at all to load all the needed data. ```bash sudo nano /etc/php/*/cgi/php.ini