From ec3d5f2968b64cb4b06481f9c3db61417c1c43ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Wed, 29 Oct 2025 04:43:18 +0300 Subject: [PATCH 01/14] range min max tree baseline --- CMakeLists.txt | 15 + README.md | 48 +- include/rmm_tree.h | 1942 ++++++++++++++++++++++ misc/include/naive_rmm_tree.h | 274 +++ misc/plot_rmm.py | 77 + misc/rmM-tree plots (B=64)/bwdsearch.png | Bin 0 -> 65160 bytes misc/rmM-tree plots (B=64)/excess.png | Bin 0 -> 58598 bytes misc/rmM-tree plots (B=64)/fwdsearch.png | Bin 0 -> 66942 bytes misc/rmM-tree plots (B=64)/mincount.png | Bin 0 -> 59531 bytes misc/rmM-tree plots (B=64)/minselect.png | Bin 0 -> 67902 bytes misc/rmM-tree plots (B=64)/rMq_pos.png | Bin 0 -> 64818 bytes misc/rmM-tree plots (B=64)/rMq_val.png | Bin 0 -> 62847 bytes misc/rmM-tree plots (B=64)/rank0.png | Bin 0 -> 64979 bytes misc/rmM-tree plots (B=64)/rank1.png | Bin 0 -> 56521 bytes misc/rmM-tree plots (B=64)/rank10.png | Bin 0 -> 59948 bytes misc/rmM-tree plots (B=64)/rmq_pos.png | Bin 0 -> 68229 bytes misc/rmM-tree plots (B=64)/rmq_val.png | Bin 0 -> 65838 bytes misc/rmM-tree plots (B=64)/select0.png | Bin 0 -> 59930 bytes misc/rmM-tree plots (B=64)/select1.png | Bin 0 -> 61518 bytes misc/rmM-tree plots (B=64)/select10.png | Bin 0 -> 64350 bytes src/bench_rmm.cpp | 496 ++++++ src/fuzzer.cpp | 385 +++++ 22 files changed, 3235 insertions(+), 2 deletions(-) create mode 100644 include/rmm_tree.h create mode 100644 misc/include/naive_rmm_tree.h create mode 100644 misc/plot_rmm.py create mode 100644 misc/rmM-tree plots (B=64)/bwdsearch.png create mode 100644 misc/rmM-tree plots (B=64)/excess.png create mode 100644 misc/rmM-tree plots (B=64)/fwdsearch.png create mode 100644 misc/rmM-tree plots (B=64)/mincount.png create mode 100644 misc/rmM-tree plots (B=64)/minselect.png create mode 100644 misc/rmM-tree plots (B=64)/rMq_pos.png create mode 100644 misc/rmM-tree plots (B=64)/rMq_val.png create mode 100644 misc/rmM-tree plots (B=64)/rank0.png create mode 100644 misc/rmM-tree plots (B=64)/rank1.png create mode 100644 misc/rmM-tree plots (B=64)/rank10.png create mode 100644 misc/rmM-tree plots (B=64)/rmq_pos.png create mode 100644 misc/rmM-tree plots (B=64)/rmq_val.png create mode 100644 misc/rmM-tree plots (B=64)/select0.png create mode 100644 misc/rmM-tree plots (B=64)/select1.png create mode 100644 misc/rmM-tree plots (B=64)/select10.png create mode 100644 src/bench_rmm.cpp create mode 100644 src/fuzzer.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 634a22d..fe1eb74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,4 +45,19 @@ target_link_libraries(unittests gtest gtest_main) +add_executable(bench_rmm + src/bench_rmm.cpp) +target_include_directories(bench_rmm + PUBLIC include +) +set_property(TARGET bench_rmm PROPERTY CXX_STANDARD 20) + +add_executable(fuzzer + src/fuzzer.cpp) +target_include_directories(fuzzer + PUBLIC include + PUBLIC misc/include +) +set_property(TARGET fuzzer PROPERTY CXX_STANDARD 20) + enable_testing() \ No newline at end of file diff --git a/README.md b/README.md index 658114b..471494a 100644 --- a/README.md +++ b/README.md @@ -40,20 +40,40 @@ This will build the library along with benchmarks and tests. After building: +### BitVector + +```bash +./unittests +``` + +### RmM Tree + ```bash -/unittests +./fuzzer ``` +The fuzzer runs indefinitely; press `Ctrl+C` to stop. + --- ## Running Benchmarks -Bencharks are random 50/50 0-1 bitvectors up to $2^34$ bits. +### BitVector + +Benchmarks are random 50/50 0-1 bitvectors up to $2^34$ bits. ```bash ./benchmarks ``` +### RmM Tree + +```bash +./bench_rmm +``` + +Results print to stdout as CSV. Redirect to a file (e.g. `> rmm_bench.csv`) and visualize it with `python3 ../misc/plot_rmm.py rmm_bench.csv --save-dir=plots --logx`. + --- ## Example Usage @@ -75,6 +95,30 @@ int main() { } ``` +```cpp +#include "rmm_tree.h" +#include +#include + +using namespace pixie; + +int main() { + // root + // ├─ A + // │ ├─ a1 + // │ └─ a2 + // ├─ B + // └─ C + // └─ c1 + std::string bits = "11101001011000"; + RmMTree t(bits); + + std::cout << "close(1): " << t.close(1) << "\n"; // expected 6 (A) + std::cout << "open(3): " << t.open(3) << "\n"; // expected 2 (a1) + std::cout << "enclose(1): " << t.enclose(1) << "\n"; // expected 0 (root) +} +``` + --- ## References diff --git a/include/rmm_tree.h b/include/rmm_tree.h new file mode 100644 index 0000000..cde5d1f --- /dev/null +++ b/include/rmm_tree.h @@ -0,0 +1,1942 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace pixie +{ + +#ifdef __GNUC__ +#define POPCNT __builtin_popcountll +#else +#include + static inline int POPCNT(unsigned long long x) { return __popcnt64(x); } +#endif + + // Range min max tree for balanced-parentheses bitvector. + // Implements: fwdsearch, bwdsearch, rmq_pos/rmq_val, rMq_pos/rMq_val, mincount, minselect, + // rank1/rank0, select1/select0, rank10/select10, excess, open/close, enclose. + struct RmMTree + { + using u64 = uint64_t; + static constexpr size_t npos = std::numeric_limits::max(); + + // ------------ bitvector ------------ + std::vector bits; // LSB-first + size_t N = 0; // number of bits + + // ------------ blocking ------------ + size_t B = 64; // block size (bits), leaf covers <= B bits + size_t L = 0; // #leaves = ceil(N/B) +#ifdef DEBUG + float built_overhead = 0.0; +#endif + + private: + // ------------ tree arrays (heap order: 1 is root) ------------ + // size of segment (in bits) covered by node + // needed for: rank1/rank0, select1/select0, select10, + // excess, fwdsearch/bwdsearch/close/open/enclose, + // rmq/rMq, minselect. + std::vector seglen; + + // e = total excess (+1 for '1', -1 for '0') on the node + // needed for: rank1/rank0, select1/select0, excess, + // fwdsearch/bwdsearch/close/open/enclose, + // rmq/rMq, mincount/minselect. + std::vector e; + + // m = minimum pref-excess on the node (from 0) + // needed for: fwdsearch/bwdsearch/close/open/enclose, rmq, mincount/minselect. + std::vector m; + + // Mx = maximum pref-excess on the node (from 0) + // needed for: fwdsearch/bwdsearch/close/open/enclose, rMq. + std::vector Mx; + + // nmin = number of positions where the minimum is attained + // needed for: mincount/minselect. + std::vector nmin; + + // rr = # of "10" pattern occurrences inside the node + // needed for: rank10, select10. + std::vector rr; + + // fb = first bit (0/1), lb = last bit (0/1) of the segment (to handle "10" crossing) + // both needed for: rank10, select10. + std::vector fb, lb; + + public: + // --------- construction ---------- + RmMTree() = default; + + // priorities for B: + // 1) honor max_overhead + // 2) honor an explicit request of B + // 3) B := log N + explicit RmMTree(const std::string &bp, + const size_t &leaf_block_bits /*0=auto*/ = 0, + const float &max_overhead /*<0=off*/ = -1.0) + { + build_from_string(bp, leaf_block_bits, max_overhead); + } + + // priorities for B: + // 1) honor max_overhead + // 2) honor an explicit request of B + // 3) B := log N + explicit RmMTree(const std::vector &words, size_t Nbits, + const size_t &leaf_block_bits /*0=auto*/ = 0, + const float &max_overhead /*<0=off*/ = -1.0) + { + build_from_words(words, Nbits, leaf_block_bits, max_overhead); + } + + // --------- queries: rank/select/excess ---------- + // #ones in [0,i) + size_t rank1(const size_t &i) const + { + if (i == 0) + return 0; + const size_t blk = block_of(i - 1); + size_t ans = 0; + if (blk > 0) + { + const auto nodes = cover_blocks(0, blk - 1); + for (const size_t &v : nodes) + ans += ones_in_node(v); + } + const size_t Lb = blk * B; + const size_t Rb = std::min(N, Lb + B); + ans += rank1_in_block(Lb, std::min(i, Rb)); + return ans; + } + size_t rank0(const size_t &i) const + { + return i - rank1(i); + } + + // ones/zeros select (1-based k). Returns npos if not found. + size_t select1(size_t k) const + { + if (k == 0) + return npos; + size_t v = 1; + if (ones_in_node(v) < k) + return npos; + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1, Rc = Lc | 1; + const uint32_t o_l = ones_in_node(Lc); + if (o_l >= k) + { + v = Lc; + } + else + { + k -= o_l; + base += seglen[Lc]; + v = Rc; + } + } + return select1_in_block(base, std::min(base + seglen[v], N), k); + } + // 1-based + size_t select0(size_t k) const + { + if (k == 0) + return npos; + size_t v = 1; + const auto zeros = [&](const size_t &x) noexcept + { + return seglen[x] - ones_in_node(x); + }; + if (zeros(v) < k) + return npos; + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1, Rc = Lc | 1; + const size_t z_l = zeros(Lc); + if (z_l >= k) + { + v = Lc; + } + else + { + k -= z_l; + base += seglen[Lc]; + v = Rc; + } + } + return select0_in_block(base, std::min(base + seglen[v], N), k); + } + + // pattern "10": rank/select on starts of "10" + size_t rank10(const size_t &i) const + { + if (i <= 1) + return 0; + const size_t blk = block_of(i - 1); + size_t ans = 0; + int prev_last = -1; + + if (blk > 0) + { + const auto nodes = cover_blocks(0, blk - 1); + for (const size_t &v : nodes) + { + ans += rr[v]; + if (prev_last != -1 && prev_last == 1 && fb[v] == 0) + ++ans; + prev_last = lb[v]; + } + } + const size_t Lb = blk * B; + ans += rr_in_block(Lb, i); + // boundary between the last full node and the leaf tail + if (blk > 0 && i > Lb && prev_last == 1 && bit(Lb) == 0) + ++ans; + return ans; + } + + size_t select10(size_t k) const + { + if (k == 0) + return npos; + size_t ind = 1; + if (rr[ind] < k) + return npos; + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (ind < leaf0) + { + const size_t Lc = ind << 1, Rc = Lc | 1; + const size_t cross = (lb[Lc] == 1 && fb[Rc] == 0) ? 1u : 0u; + if (rr[Lc] >= k) + { + ind = Lc; + continue; + } + size_t rem = k - rr[Lc]; + if (cross) + { + if (rem == 1) + return base + seglen[Lc] - 1; + --rem; + } + base += seglen[Lc]; + ind = Rc; + k = rem; + } + return select10_in_block(base, std::min(base + seglen[ind], N), k); + } + + // prefix excess over [0, i): +1 for '1', -1 for '0' + inline int excess(const size_t &i) const + { + return int64_t(rank1(i)) * 2 - int64_t(i); + } + + size_t fwdsearch(const size_t &i, const int &d) const + { + if (i >= N) + return npos; + + const int start_excess = excess(i); + const int target = start_excess + d; + + // 1) scan the remainder of the current leaf + const size_t blk = block_of(i); + const size_t Lb = blk * B; + const size_t Rb = std::min(N, Lb + B); + int cur = start_excess; + for (size_t p = i; p < Rb; ++p) + { + cur += bit(p) ? +1 : -1; + if (cur == target) + return p; + } + + // 2) suffix after the leaf: cover full blocks [blk+1 .. L-1] + const int excess_at_Rb = excess(Rb); + int need = target - excess_at_Rb; // target expressed in coordinates of the current node start + if (blk + 1 <= (L ? L - 1 : 0)) + { + const auto nodes = cover_blocks(blk + 1, L - 1); + size_t base = (blk + 1) * B; + for (const size_t &v : nodes) + { + if (need == 0) + return base; + if (m[v] <= need && need <= Mx[v]) + return descend_fwd(v, need, base); + need -= e[v]; + base += seglen[v]; + } + } + return npos; + } + + // ---- bwdsearch: climb & check left siblings ---- + size_t bwdsearch(const size_t &i, const int &d) const + { + if (i > N || i == 0) + return npos; + const int start_excess = excess(i); + const int target = start_excess + d; + + // 1) scan inside the block + const size_t blk = block_of(i - 1); + const size_t Lb = blk * B; + int cur = start_excess; + for (size_t p = i; p > Lb;) + { + --p; + cur += bit(p) ? -1 : +1; + if (cur == target) + return p; + if (p == 0) + break; + } + const int excess_at_Lb = excess(Lb); + if (Lb < i && excess_at_Lb == target) + return Lb; + + // 2) climb up + int need = target - excess_at_Lb; + size_t v = leaf_index_of(Lb); + size_t base = Lb; + while (v > 1) + { + if (v & 1) + { // v is the right child + const size_t sib = v ^ 1; // left sibling + const size_t border = base; // right border of the sibling (== start(v)) + const int need_node = need + e[sib]; // target in coordinates relative to the start of sib + const bool allow_rb = (border != i); // j must be < i + + // try inside the sibling, but return only if a position is found + if (need_node == 0 || (m[sib] <= need_node && need_node <= Mx[sib])) + { + const size_t ans = descend_bwd(sib, border - seglen[sib], need_node, border, allow_rb); + if (ans != npos) + return ans; + } + // junction between children is a separate branch (allowed only if < i) + if (need_node == e[sib] && border < i) + return border; + + // stepped over the sibling, shifted the zero point of the coordinates + need += e[sib]; + base -= seglen[sib]; + } + v >>= 1; + } + return npos; + } + + // position of first minimum of excess on [i, j] (inclusive) + size_t rmq_pos(const size_t &i, const size_t &j) const + { + if (i > j || j >= N) + return npos; + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * B; + const size_t Rbi = std::min(N, Lbi + B); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * B; + + int best_val = INT_MAX; + size_t best_pos = npos; + size_t chosen_node = 0; + int pref = 0, pref_at_choice = 0; + + // prefix + int mn_first = INT_MAX; + size_t first_pos = npos; + const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); + if (i <= end_first) + { + first_min_value_pos8(i, end_first, mn_first, first_pos); + pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - int64_t(end_first + 1 - i); + best_val = mn_first; + best_pos = first_pos; + chosen_node = 0; + } + + // middle + const size_t leaf0 = first_leaf_index(); + if (blk_i + 1 <= blk_j - 1) + { + size_t l = leaf0 + (blk_i + 1); + size_t r = leaf0 + (blk_j - 1); + size_t Rnodes[64]; + int rn = 0; + + while (l <= r) + { + if (l & 1) + { + const size_t v = l++; + const int cand = pref + m[v]; + if (cand < best_val) + { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += e[v]; + } + if ((r & 1) == 0) + Rnodes[rn++] = r--; + l >>= 1; + r >>= 1; + } + while (rn--) + { + const size_t v = Rnodes[rn]; + const int cand = pref + m[v]; + if (cand < best_val) + { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += e[v]; + } + } + + // tail + if (blk_j != blk_i) + { + int mn_last; + size_t last_pos; + first_min_value_pos8(Lbj, j, mn_last, last_pos); + const int cand = pref + mn_last; + if (cand < best_val) + { + best_val = cand; + best_pos = last_pos; + chosen_node = 0; + } + } + + if (best_pos != npos) + return best_pos; + + return descend_first_min(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); + } + + // value of that minimum (absolute relative to start i, i.e., minimum of partial sums) + int rmq_val(const size_t &i, const size_t &j) const + { + if (i > j || j >= N) + return 0; + size_t p = rmq_pos(i, j); + if (p == npos) + return 0; + return excess(p + 1) - excess(i); + } + + size_t rMq_pos(const size_t &i, const size_t &j) const + { + if (i > j || j >= N) + return npos; + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * B; + const size_t Rbi = std::min(N, Lbi + B); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * B; + + int best_val = INT_MIN; + size_t best_pos = npos; + size_t chosen_node = 0; + int pref = 0, pref_at_choice = 0; + + // prefix + int mx_first = INT_MIN; + size_t first_pos = npos; + const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); + if (i <= end_first) + { + first_max_value_pos8(i, end_first, mx_first, first_pos); + pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - int64_t(end_first + 1 - i); + best_val = mx_first; + best_pos = first_pos; + chosen_node = 0; + } + + // middle + const size_t leaf0 = first_leaf_index(); + if (blk_i + 1 <= blk_j - 1) + { + size_t l = leaf0 + (blk_i + 1); + size_t r = leaf0 + (blk_j - 1); + size_t Rnodes[64]; + int rn = 0; + + while (l <= r) + { + if (l & 1) + { + const size_t v = l++; + const int cand = pref + Mx[v]; + if (cand > best_val) + { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += e[v]; + } + if ((r & 1) == 0) + Rnodes[rn++] = r--; + l >>= 1; + r >>= 1; + } + while (rn--) + { + const size_t v = Rnodes[rn]; + const int cand = pref + Mx[v]; + if (cand > best_val) + { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += e[v]; + } + } + + // tail + if (blk_j != blk_i) + { + int mx_last; + size_t last_pos; + first_max_value_pos8(Lbj, j, mx_last, last_pos); + const int cand = pref + mx_last; + if (cand > best_val) + { + best_val = cand; + best_pos = last_pos; + chosen_node = 0; + } + } + + if (best_pos != npos) + return best_pos; + + return descend_first_max(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); + } + + int rMq_val(const size_t &i, const size_t &j) const + { + if (i > j || j >= N) + return 0; + size_t p = rMq_pos(i, j); + if (p == npos) + return 0; + return excess(p + 1) - excess(i); + } + + // how many times min occurs on [i, j] + size_t mincount(const size_t &i, const size_t &j) const + { + if (i > j || j >= N) + return 0; + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * B; + const size_t Rbi = std::min(N, Lbi + B); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * B; + + int best_val = INT_MAX; + size_t cnt = 0; + int pref = 0; + + // first chunk + { + int cur = 0, mn = INT_MAX, c = 0; + const size_t end = std::min(j, Rbi - 1); + for (size_t p = i; p <= end; ++p) + { + cur += bit(p) ? +1 : -1; + if (cur < mn) + { + mn = cur; + c = 1; + } + else if (cur == mn) + { + ++c; + } + } + best_val = mn; + cnt = c; + pref = cur; // offset toward the middle + } + + // middle + if (blk_i + 1 <= blk_j - 1) + { + const auto mids = cover_blocks(blk_i + 1, blk_j - 1); + for (const size_t &v : mids) + { + const int cand = pref + m[v]; + if (cand < best_val) + { + best_val = cand; + cnt = nmin[v]; + } + else if (cand == best_val) + { + cnt += nmin[v]; + } + pref += e[v]; + } + } + + // last chunk + if (blk_j != blk_i) + { + int cur = 0, mn = INT_MAX, c = 0; + for (size_t p = Lbj; p <= j; ++p) + { + cur += bit(p) ? +1 : -1; + if (cur < mn) + { + mn = cur; + c = 1; + } + else if (cur == mn) + { + ++c; + } + } + const int cand = pref + mn; + if (cand < best_val) + { + best_val = cand; + cnt = c; + } + else if (cand == best_val) + { + cnt += c; + } + } + return cnt; + } + + // position of the q-th occurrence (1-based) of the minimum on [i, j] + size_t minselect(const size_t &i, const size_t &j, size_t q) const + { + if (i > j || j >= N || q == 0) + return npos; + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * B; + const size_t Rbi = std::min(N, Lbi + B); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * B; + + // prefix + const size_t end_first = std::min(j, Rbi - 1); + int cur_first = 0, mn_first = 0; + uint32_t c_first = 0; + + if (i <= end_first) + { + scan_range_min_count8(i, end_first, cur_first, mn_first, c_first); + } + else + { + cur_first = 0; + mn_first = INT_MAX; + c_first = 0; + } + + int best_val = (mn_first == INT_MAX ? INT_MAX : mn_first); + size_t total_cnt = (mn_first == INT_MAX ? 0u : (size_t)c_first); + int pref = cur_first; // offset for middle + + const size_t leaf0 = first_leaf_index(); + size_t l = leaf0 + blk_i + 1; + size_t r = leaf0 + blk_j - 1; + size_t Rnodes[64]; + int rn = 0; + + // middle + if (blk_i + 1 <= blk_j - 1) + { + while (l <= r) + { + if (l & 1) + { + const int cand = pref + m[l]; + if (cand < best_val) + { + best_val = cand; + total_cnt = nmin[l]; + } + else if (cand == best_val) + { + total_cnt += nmin[l]; + } + pref += e[l++]; + } + if ((r & 1) == 0) + Rnodes[rn++] = r--; + l >>= 1; + r >>= 1; + } + while (rn--) + { + const size_t v = Rnodes[rn]; + const int cand = pref + m[v]; + if (cand < best_val) + { + best_val = cand; + total_cnt = nmin[v]; + } + else if (cand == best_val) + { + total_cnt += nmin[v]; + } + pref += e[v]; + } + } + + // tail + int cur_last = 0, mn_last = INT_MAX; + uint32_t c_last = 0; + if (blk_j != blk_i) + { + scan_range_min_count8(Lbj, j, cur_last, mn_last, c_last); + const int cand = pref + mn_last; + if (cand < best_val) + { + best_val = cand; + total_cnt = c_last; + } + else if (cand == best_val) + { + total_cnt += c_last; + } + } + + if (q > total_cnt) + return npos; + + // prefix + if (mn_first == best_val && c_first) + { + if (q <= c_first) + return qth_min_in_block(i, end_first, q); + q -= c_first; + } + + // middle + pref = cur_first; + if (blk_i + 1 <= blk_j - 1) + { + l = leaf0 + (blk_i + 1); + r = leaf0 + (blk_j - 1); + rn = 0; + while (l <= r) + { + if (l & 1) + { + const size_t v = l++; + const int cand = pref + m[v]; + if (cand == best_val) + { + if (q <= nmin[v]) + { + return descend_qth_min(v, best_val - pref, q, node_base(v)); + } + q -= nmin[v]; + } + pref += e[v]; + } + if (!(r & 1)) + Rnodes[rn++] = r--; + l >>= 1; + r >>= 1; + } + while (rn--) + { + const size_t v = Rnodes[rn]; + const int cand = pref + m[v]; + if (cand == best_val) + { + if (q <= nmin[v]) + { + return descend_qth_min(v, best_val - pref, q, node_base(v)); + } + q -= nmin[v]; + } + pref += e[v]; + } + } + + // tail + if (blk_j != blk_i && (pref + mn_last) == best_val) + { + return qth_min_in_block(Lbj, j, q); + } + + return npos; + } + + // ----- parentheses navigation (BP) ----- + // close(i): matching ')' for '(' at i (or npos) + inline size_t close(const size_t &i) const + { + if (i >= N) + return npos; + return fwdsearch(i, -1); + } + + // open(i): matching '(' for ')' at i (or npos) + inline size_t open(const size_t &i) const + { + // bwdsearch allows i in [1..N] + if (i == 0 || i > N) + return npos; + const size_t r = bwdsearch(i, 0); + return (r == npos ? npos : r + 1); + } + + // enclose(i): opening '(' that *encloses* position i (or npos) + inline size_t enclose(const size_t &i) const + { + if (i == 0 || i > N) + return npos; + const size_t r = bwdsearch(i, -2); + return (r == npos ? npos : r + 1); + } + + private: + static inline size_t pop10_in_slice64(const u64 &slice, const int &len) noexcept + { + if (len <= 1) + return 0; + u64 P = slice & ~(slice >> 1); // candidates for "10" + if (len < 64) + P &= ((u64(1) << (len - 1)) - 1); + else + P &= 0x7FFFFFFFFFFFFFFFull; + return (size_t)POPCNT(P); + } + + // fast rank of ones in [L,R) + size_t rank1_in_block(const size_t &Lb, const size_t &Rb) const noexcept + { + if (Rb <= Lb) + return 0; + size_t w_l = Lb >> 6; + const size_t w_r = Rb >> 6; + size_t off_l = Lb & 63; + const size_t off_r = Rb & 63; + size_t cnt = 0; + if (w_l == w_r) + { + const u64 mask = ((off_r == 0) ? 0 : ((u64(1) << off_r) - 1)) & (~u64(0) << off_l); + return (size_t)POPCNT(bits[w_l] & mask); + } + if (off_l) + { + cnt += (size_t)POPCNT(bits[w_l] & (~u64(0) << off_l)); + ++w_l; + } + while (w_l < w_r) + { + cnt += (size_t)POPCNT(bits[w_l]); + ++w_l; + } + if (off_r) + cnt += (size_t)POPCNT(bits[w_r] & ((u64(1) << off_r) - 1)); + return cnt; + } + + size_t rr_in_block(const size_t &Lb, const size_t &Rb) const noexcept + { + if (Rb <= Lb + 1) + return 0; + size_t w_l = Lb >> 6; + const size_t w_r = (Rb - 1) >> 6; + const int off_l = Lb & 63; + const int off_r = (Rb - 1) & 63; + size_t cnt = 0; + + if (w_l == w_r) + { + const int len = off_r - off_l + 1; + const u64 slice = bits[w_l] >> off_l; + return pop10_in_slice64(slice, len); + } + + // prefix word + { + const int len = 64 - off_l; + const u64 slice = bits[w_l] >> off_l; + cnt += pop10_in_slice64(slice, len); + } + // full interior words + for (size_t w = w_l + 1; w < w_r; ++w) + { + const u64 x = bits[w]; + cnt += pop10_in_slice64(x, 64); + } + // suffix word + { + const int len = off_r + 1; + const u64 mask = (len == 64) ? ~u64(0) : ((u64(1) << len) - 1); + const u64 slice = bits[w_r] & mask; + cnt += pop10_in_slice64(slice, len); + } + // cross-word boundaries (bit 63 of w and bit 0 of w+1) + for (size_t w = w_l; w < w_r; ++w) + { + if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) + ++cnt; + } + return cnt; + } + + // 1-based + size_t select10_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept + { + if (Rb <= Lb + 1) + return npos; + size_t w_l = Lb >> 6; + const size_t w_r = (Rb - 1) >> 6; + const int off_l = Lb & 63; + const int off_r = (Rb - 1) & 63; + + const auto select_in_masked_slice = [&](const u64 &slice, const int &len, const size_t &kk) noexcept -> int + { + if (len <= 1) + return -1; + u64 P = slice & ~(slice >> 1); + if (len < 64) + P &= ((u64(1) << (len - 1)) - 1); + else + P &= 0x7FFFFFFFFFFFFFFFull; + return select_in_word(P, kk); + }; + + if (w_l == w_r) + { + const int len = off_r - off_l + 1; + const u64 slice = bits[w_l] >> off_l; + const int off = select_in_masked_slice(slice, len, k); + return off >= 0 ? (Lb + (size_t)off) : npos; + } + + // prefix word + { + const int len = 64 - off_l; + const u64 slice = bits[w_l] >> off_l; + u64 P = slice & ~(slice >> 1); + P &= ((u64(1) << (len - 1)) - 1); + const int c = POPCNT(P); + if (k <= (size_t)c) + { + const int off = select_in_masked_slice(slice, len, k); + return Lb + (size_t)off; + } + k -= c; + } + + // walk interior boundaries and words + for (size_t w = w_l; w + 1 < w_r; ++w) + { + // boundary between w and w+1 + if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) + { + if (--k == 0) + return (w << 6) + 63; + } + // full word w+1 (positions 0..62) + const u64 x = bits[w + 1]; + const u64 P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; + const int c = POPCNT(P); + if (k <= (size_t)c) + { + const int off = select_in_word(P, k); + if (off == -1) + return npos; + return ((w + 1) << 6) + (size_t)off; + } + k -= c; + } + + // boundary (w_r-1, w_r) + if (((bits[w_r - 1] >> 63) & 1u) && ((bits[w_r] & 1u) == 0)) + { + if (--k == 0) + return ((w_r - 1) << 6) + 63; + } + + // suffix word w_r: [0..off_r] + { + const int len = off_r + 1; + const u64 mask = (len == 64) ? ~u64(0) : ((u64(1) << len) - 1); + const u64 slice = bits[w_r] & mask; + const int off = select_in_masked_slice(slice, len, k); + if (off >= 0) + return (w_r << 6) + (size_t)off; + } + return npos; + } + + struct ByteAgg + { + int8_t e; // total excess for the byte + int8_t m; // minimum prefix within the byte (from 0) + int8_t Mx; // maximum prefix within the byte (from 0) + uint8_t nmin; // number of positions attaining the minimum in the byte + uint8_t rr; // number of "10" patterns inside the byte + uint8_t fb; // first bit (LSB) + uint8_t lb; // last bit (MSB) + uint8_t pm; // pos of first minimum in this byte + uint8_t pM; // pos of first maximum in this byte + }; + + static inline const std::array &LUT8() noexcept + { + static const std::array T = [] + { + std::array t{}; + for (int b = 0; b < 256; ++b) + { + int cur = 0, mn = INT_MAX, mx = INT_MIN, cnt = 0, rrc = 0; + int pm = 0, pM = 0; + const auto get = [&](const int &k) + { return (b >> k) & 1; }; // LSB-first + for (int k = 0; k < 8; ++k) + { + int bit = get(k); + if (k + 1 < 8 && bit && get(k + 1) == 0) + ++rrc; + cur += bit ? +1 : -1; + if (cur < mn) + { + mn = cur; + cnt = 1; + pm = k; + } + else if (cur == mn) + { + ++cnt; + } + if (cur > mx) + { + mx = cur; + pM = k; + } + } + ByteAgg a{}; + a.e = cur; + a.m = (mn == INT_MAX ? 0 : mn); + a.Mx = (mx == INT_MIN ? 0 : mx); + a.nmin = cnt; + a.rr = rrc; + a.fb = get(0); + a.lb = get(7); + a.pm = pm; + a.pM = pM; + t[b] = a; + } + return t; + }(); + return T; + } + + // Extract 8 bits starting from position pos (LSB-first, may cross word boundaries) + inline uint8_t get_byte(const size_t &pos) const noexcept + { + const size_t w = pos >> 6; + const size_t off = pos & 63; + const u64 lo = bits[w] >> off; + if (off <= 56) + return uint8_t(lo & 0xFFu); + const u64 hi = (w + 1 < bits.size()) ? bits[w + 1] : 0; + const u64 x = (lo | (hi << (64 - off))) & 0xFFu; + return uint8_t(x); + } + + // Descend to the first (leftmost) maximum where the node-relative prefix equals d + size_t descend_first_max(size_t v, int d, size_t base) const noexcept + { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1, Rc = Lc | 1; + const int leftX = Mx[Lc]; + const int rightX = e[Lc] + Mx[Rc]; + if (leftX >= rightX && leftX == d) + { + v = Lc; + } + else if (rightX == d) + { + base += seglen[Lc]; + d -= e[Lc]; + v = Rc; + } + else + { + return npos; + } + } + + const size_t Lb = base; + const size_t Rb = std::min(base + seglen[v], N); + int mx; + size_t pos; + + first_max_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mx, pos); + return (mx == d ? pos : npos); + } + + inline size_t first_leaf_index() const noexcept + { + return std::bit_ceil(std::max(1, L)); + } + + size_t block_of(const size_t &i) const noexcept { return i / B; } + + // index in heap array of the leaf whose segment starts at 'block_start' + size_t leaf_index_of(const size_t &block_start) const noexcept + { + return first_leaf_index() + block_of(block_start); + } + + // starting global position for node v (0-indexed) + size_t node_base(size_t v) const noexcept + { + const size_t leaf0 = first_leaf_index(); + if (v >= leaf0) + return (v - leaf0) * B; + + size_t base = 0; + for (; v > 1; v >>= 1) + if (v & 1) + base += seglen[v - 1]; + return base; + } + + // cover a range of whole blocks [a..b] (inclusive) with O(log) maximal nodes (left-to-right) + std::vector cover_blocks(const size_t &a, const size_t &b) const + { + const size_t leaf0 = first_leaf_index(); + size_t l = leaf0 + a; + size_t r = leaf0 + b; + std::vector Lnodes, Rnodes; + while (l <= r) + { + if ((l & 1) == 1) + Lnodes.push_back(l++); + if ((r & 1) == 0) + Rnodes.push_back(r--); + l >>= 1; + r >>= 1; + } + std::reverse(Rnodes.begin(), Rnodes.end()); + Lnodes.insert(Lnodes.end(), Rnodes.begin(), Rnodes.end()); + return Lnodes; + } + + // descend for fwdsearch: find first position where relative prefix equals 'need' + size_t descend_fwd(size_t v, int need, size_t base) const noexcept + { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + if (m[Lc] <= need && need <= Mx[Lc]) + v = Lc; + else + { + need -= e[Lc]; + base += seglen[Lc]; + v = Rc; + } + } + const size_t Rb = std::min(base + seglen[v], N); + int cur = 0; + for (size_t p = base; p < Rb; ++p) + { + cur += bit(p) ? +1 : -1; + if (cur == need) + return p; + } + return npos; + } + + // descend_bwd: go for the rightmost solution + size_t descend_bwd(size_t v, const size_t &base, const int &need, const size_t &right_border, const bool &allow_rb) const noexcept + { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const int need_r = need - e[Lc]; + + // 1) try the right child first (to capture the rightmost j) + if (m[Rc] <= need_r && need_r <= Mx[Rc]) + { + const size_t ans = descend_bwd(Rc, base + seglen[Lc], need_r, right_border, allow_rb); + if (ans != npos) + return ans; + } + + // 2) junction between children (end of the left child) + const size_t j_border = base + seglen[Lc]; + if (need == e[Lc] && (j_border < right_border || allow_rb)) + { + return j_border; + } + + // 3) can we move left within the range? + if (m[Lc] <= need && need <= Mx[Lc]) + { + v = Lc; + continue; + } + + // None of (1)-(3) worked. The only possible point is the left border of the node. + if (need == 0 && (base < right_border || allow_rb)) + { + return base; + } + + return npos; + } + + const size_t Lb = base; + const size_t Rb = std::min(base + seglen[v], N); + const size_t RB = std::min(right_border, Rb); + + int cur = 0; + for (size_t p = Lb; p < RB; ++p) + cur += bit(p) ? +1 : -1; + + if (allow_rb && cur == need) + return RB; + + for (size_t p = RB; p > Lb;) + { + --p; + cur += bit(p) ? -1 : +1; + if (cur == need) + return p; + if (p == 0) + break; + } + + if ((Lb < right_border || allow_rb) && cur == need) + return Lb; + + return npos; + } + + // descend to find first position where node-relative prefix equals d + size_t descend_first_min(size_t v, int d, size_t base) const noexcept + { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1, Rc = Lc | 1; + const int leftm = m[Lc]; + const int rightm = e[Lc] + m[Rc]; + if (leftm <= rightm && leftm == d) + { + v = Lc; + } + else if (rightm == d) + { + base += seglen[Lc]; + d -= e[Lc]; + v = Rc; + } + else + { + return npos; + } + } + + const size_t Lb = base; + const size_t Rb = std::min(base + seglen[v], N); + int mn; + size_t pos; + + first_min_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mn, pos); + return (mn == d ? pos : npos); + } + + size_t descend_qth_min(size_t v, int d, size_t q, size_t base) const noexcept + { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) + { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const int leftm = m[Lc]; + const int rightm = e[Lc] + m[Rc]; + if (leftm == d) + { + if (nmin[Lc] >= q) + { + v = Lc; + continue; + } + q -= nmin[Lc]; + } + if (rightm == d) + { + base += seglen[Lc]; + d -= e[Lc]; + v = Rc; + continue; + } + return npos; + } + return qth_min_in_block(base, std::min(base + seglen[v], N) - 1, q); + } + + // 1-based + size_t select1_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept + { + size_t w_l = Lb >> 6; + const size_t w_r = (Rb >> 6); + const size_t off_l = Lb & 63; + const u64 mask_l = (off_l ? (~u64(0) << off_l) : ~u64(0)); + if (w_l == w_r) + { + const u64 w = bits[w_l] & mask_l & ((Rb & 63) ? ((u64(1) << (Rb & 63)) - 1) : ~u64(0)); + return Lb + select_in_word(w, k); + } + // prefix + if (off_l) + { + const u64 w = bits[w_l] & mask_l; + const int c = POPCNT(w); + if (k <= (size_t)c) + return Lb + select_in_word(w, k); + k -= c; + w_l++; + } + // full words + while (w_l < w_r) + { + const u64 w = bits[w_l]; + const int c = POPCNT(w); + if (k <= (size_t)c) + return (w_l << 6) + select_in_word(w, k); + k -= c; + ++w_l; + } + // tail + const size_t off_r = Rb & 63; + if (off_r) + { + const u64 w = bits[w_l] & ((u64(1) << off_r) - 1); + const int c = POPCNT(w); + if (k <= (size_t)c) + return (w_l << 6) + select_in_word(w, k); + } + return npos; + } + + // 1-based + size_t select0_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept + { + if (Rb <= Lb) + return npos; + + size_t w_l = Lb >> 6; + const size_t w_r = Rb >> 6; + const size_t off_l = Lb & 63; + + if (w_l == w_r) + { + const u64 mask_l = (off_l ? (~u64(0) << off_l) : ~u64(0)); + const u64 mask_r = ((Rb & 63) ? ((u64(1) << (Rb & 63)) - 1) : ~u64(0)); + const u64 w = (~bits[w_l]) & mask_l & mask_r; + const int off = select_in_word(w, k); + return (off >= 0) ? (Lb + (size_t)off) : npos; + } + + // prefix + if (off_l) + { + const u64 w = (~bits[w_l]) & (~u64(0) << off_l); + const int c = POPCNT(w); + if (k <= (size_t)c) + { + const int off = select_in_word(w, k); + return (off >= 0) ? (Lb + (size_t)off) : npos; + } + k -= c; + ++w_l; + } + + // full words + while (w_l < w_r) + { + const u64 w = ~bits[w_l]; + const int c = POPCNT(w); + if (k <= (size_t)c) + { + const int off = select_in_word(w, k); + return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; + } + k -= c; + ++w_l; + } + + // tail + const size_t off_r = Rb & 63; + if (off_r) + { + const u64 w = (~bits[w_l]) & ((u64(1) << off_r) - 1); + const int c = POPCNT(w); + if (k <= (size_t)c) + { + const int off = select_in_word(w, k); + return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; + } + } + return npos; + } + + static inline int select_in_word(u64 w, size_t k) noexcept + { +#ifdef __GNUC__ + while (w) + { + if (--k == 0) + return __builtin_ctzll(w); + w &= (w - 1); + } + return -1; +#else + for (int i = 0; i < 64; ++i) + if ((w >> i) & 1u) + if (--k == 0) + return i; + return -1; +#endif + } + + static inline size_t ceil_div(const size_t &a, const size_t &b) noexcept + { + return (a + b - 1) / b; + } + + static inline size_t nodeslots_for(const size_t &Nbits, const size_t &Bpow2) noexcept + { + if (Nbits == 0) + return 0; + size_t L = ceil_div(Nbits, Bpow2); + return std::bit_ceil(std::max(1, L)) + L; + } + + static inline float overhead_for(const size_t &Nbits, const size_t &Bpow2) noexcept + { + static constexpr size_t AUX_SLOT_BYTES = sizeof(uint32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t); + + size_t bb = ceil_div(Nbits, 64) * 8; + if (bb == 0) + return 0; + size_t slots = nodeslots_for(Nbits, Bpow2); + size_t aux = slots * AUX_SLOT_BYTES; + return ((float)aux) / ((float)bb); + } + + // Returns the minimal B (power-of-two) that keeps overhead ≤ cap. + static inline size_t choose_block_bits_for_overhead(const size_t &Nbits, const float &cap) noexcept + { + if (cap < 0.f) + return 64; + + const size_t Bmax = std::min(Nbits, 16384); + size_t B = 64; + while (B < Bmax) + { + if (overhead_for(Nbits, B) <= cap) + break; + B <<= 1; + } + return B; + } + + void build_from_string(const std::string &s, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) + { + N = s.size(); + bits.assign((N + 63) / 64, 0); + for (size_t i = 0; i < N; ++i) + if (s[i] == '1') + set1(i); + build(leaf_block_bits, max_overhead); + } + void build_from_words(const std::vector &w, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) + { + bits = w; + N = Nbits; + if (bits.size() * 64 < N) + bits.resize((N + 63) / 64); + build(leaf_block_bits, max_overhead); + } + + inline int bit(const size_t &i) const noexcept + { + return (bits[i >> 6] >> (i & 63)) & 1u; + } + + inline void set1(const size_t &i) noexcept + { + bits[i >> 6] |= (u64(1) << (i & 63)); + } + + inline uint32_t ones_in_node(const size_t &v) const noexcept + { + return ((int64_t)seglen[v] + (int64_t)e[v]) >> 1; + } + + // Passing through the range [l..r] (inclusive): counts mn and cnt (how many times the minimum is reached), + // and returns cur at the end of the range. + inline void scan_range_min_count8(size_t l, const size_t &r, int &cur, int &mn, uint32_t &cnt) const noexcept + { + cur = 0; + mn = INT_MAX; + cnt = 0; + if (r < l) + { + mn = 0; + return; + } + // to byte alignment + while (l <= r && (l & 7)) + { + cur += bit(l) ? +1 : -1; + if (cur < mn) + { + mn = cur; + cnt = 1; + } + else if (cur == mn) + { + ++cnt; + } + ++l; + } + // full bytes + const auto &T = LUT8(); + while (l + 7 <= r) + { + const auto &a = T[get_byte(l)]; + const int cand = cur + a.m; + if (cand < mn) + { + mn = cand; + cnt = a.nmin; + } + else if (cand == mn) + { + cnt += a.nmin; + } + cur += a.e; + l += 8; + } + // tail + while (l <= r) + { + cur += bit(l) ? +1 : -1; + if (cur < mn) + { + mn = cur; + cnt = 1; + } + else if (cur == mn) + { + ++cnt; + } + ++l; + } + if (mn == INT_MAX) + { + mn = cnt = 0; + } + } + + // Selecting the qth minimum position inside [l..r] (inclusive) in two passes of 8 bits each. + // We find the global mn; then we go again and select the qth minimum. + inline size_t qth_min_in_block(const size_t &l, const size_t &r, size_t q) const noexcept + { + if (r < l || q == 0) + return npos; + + const auto &T = LUT8(); + + int cur = 0, mn = INT_MAX; + size_t p = l; + + while (p <= r && (p & 7)) + { + cur += bit(p) ? +1 : -1; + if (cur < mn) + mn = cur; + ++p; + } + while (p + 7 <= r) + { + const auto &a = T[get_byte(p)]; + mn = std::min(mn, cur + a.m); + cur += a.e; + p += 8; + } + while (p <= r) + { + cur += bit(p) ? +1 : -1; + if (cur < mn) + mn = cur; + ++p; + } + + cur = 0; + p = l; + + // to byte alignment + while (p <= r && (p & 7)) + { + cur += bit(p) ? +1 : -1; + if (cur == mn) + { + if (--q == 0) + return p; + } + ++p; + } + + // full bytes + while (p + 7 <= r) + { + const uint8_t b = get_byte(p); + const auto &a = T[b]; + const int cand = cur + a.m; + if (cand == mn) + { + int s = 0; + for (int k = 0; k < 8; ++k) + { + s += ((b >> k) & 1u) ? +1 : -1; + if (s == a.m) + { + if (--q == 0) + return p + k; + } + } + } + cur += a.e; + p += 8; + } + + // tail + while (p <= r) + { + cur += bit(p) ? +1 : -1; + if (cur == mn) + { + if (--q == 0) + return p; + } + ++p; + } + + return npos; + } + + inline void first_min_value_pos8(size_t l, const size_t &r, int &mn_out, size_t &first_pos) const noexcept + { + const auto &T = LUT8(); + int cur = 0; + int mn = INT_MAX; + first_pos = npos; + + // to byte allignment + while (l <= r && (l & 7)) + { + cur += bit(l) ? +1 : -1; + if (cur < mn) + { + mn = cur; + first_pos = l; + } + ++l; + } + + // full bytes + while (l + 7 <= r) + { + const auto &a = T[get_byte(l)]; + const int cand = cur + a.m; + if (cand < mn) + { + mn = cand; + first_pos = l + a.pm; + } + cur += a.e; + l += 8; + } + + // tail + while (l <= r) + { + cur += bit(l) ? +1 : -1; + if (cur < mn) + { + mn = cur; + first_pos = l; + } + ++l; + } + + mn_out = (mn == INT_MAX ? 0 : mn); + } + + inline void first_max_value_pos8(size_t l, const size_t &r, int &mx_out, size_t &first_pos) const noexcept + { + const auto &T = LUT8(); + int cur = 0; + int mx = INT_MIN; + first_pos = npos; + + while (l <= r && (l & 7)) + { + cur += bit(l) ? +1 : -1; + if (cur > mx) + { + mx = cur; + first_pos = l; + } + ++l; + } + + while (l + 7 <= r) + { + const auto &a = T[get_byte(l)]; + const int cand = cur + a.Mx; + if (cand > mx) + { + mx = cand; + first_pos = l + a.pM; + } + cur += a.e; + l += 8; + } + + while (l <= r) + { + cur += bit(l) ? +1 : -1; + if (cur > mx) + { + mx = cur; + first_pos = l; + } + ++l; + } + + mx_out = (mx == INT_MIN ? 0 : mx); + } + + void build(const size_t &leaf_block_bits, const float &max_overhead) + { + // the lower clamp depends on the desired overhead fraction; otherwise use 64 + const size_t clamp_by_overhead = (max_overhead >= 0.0 ? choose_block_bits_for_overhead(N, max_overhead) : size_t(64)); + + // chosen B: honor an explicit request, but not below clamp_by_overhead + if (leaf_block_bits == 0) + B = std::max(clamp_by_overhead, std::bit_ceil((N <= 1) ? 1 : std::bit_width(N - 1))); + else + B = std::max(clamp_by_overhead, std::bit_ceil(std::max(1, leaf_block_bits))); + +#ifdef DEBUG + // finalizes the achieved overhead percentage + built_overhead = overhead_for(N, B); +#endif + + L = ceil_div(N, B); + const size_t leaf0 = first_leaf_index(); + const size_t tree_size = leaf0 + L - 1; + seglen.assign(tree_size + 1, 0); + e.assign(tree_size + 1, 0); + m.assign(tree_size + 1, 0); + Mx.assign(tree_size + 1, 0); + nmin.assign(tree_size + 1, 0); + rr.assign(tree_size + 1, 0); + fb.assign(tree_size + 1, 0); + lb.assign(tree_size + 1, 0); + + // leaves + for (size_t k = 0; k < L; ++k) + { + const size_t v = leaf0 + k; + const size_t Lb = k * B; + const size_t Rb = std::min(N, Lb + B); + seglen[v] = Rb - Lb; + + if (Lb < Rb) + { + fb[v] = bit(Lb); + } + + const auto &T = LUT8(); + + int cur = 0, mn = INT_MAX, mx = INT_MIN; + uint32_t mn_cnt = 0; + uint32_t rrc = 0; + + uint8_t prev_bit = 0; + + size_t p = Lb; + + // Full bytes + while (p + 8 <= Rb) + { + const uint8_t b = get_byte(p); + const auto &a = T[b]; + + // internal "10" inside the byte + rrc += a.rr; + // stitching across the boundary between the previous and current byte (within the segment) + if (prev_bit == 1 && a.fb == 0) + rrc++; + + // prefix min/max accounting for the current offset + const int cand_min = cur + a.m; + if (cand_min < mn) + { + mn = cand_min; + mn_cnt = a.nmin; + } + else if (cand_min == mn) + { + mn_cnt += a.nmin; + } + + mx = std::max(mx, cur + a.Mx); + cur += a.e; + prev_bit = a.lb; + p += 8; + } + + // Tail < 8 bits + while (p < Rb) + { + const uint8_t b = bit(p); + if (prev_bit == 1 && b == 0) + rrc++; + const int step = b ? +1 : -1; + cur += step; + if (cur < mn) + { + mn = cur; + mn_cnt = 1; + } + else if (cur == mn) + { + ++mn_cnt; + } + if (cur > mx) + mx = cur; + + prev_bit = b; + ++p; + } + + if (Lb < Rb) + lb[v] = prev_bit; + + e[v] = cur; + m[v] = (seglen[v] == 0 ? 0 : mn); + Mx[v] = (seglen[v] == 0 ? 0 : mx); + nmin[v] = mn_cnt; + rr[v] = (uint32_t)rrc; + } + // internal nodes + for (size_t v = leaf0 - 1; v >= 1; --v) + { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const bool has_l = (Lc <= tree_size) && seglen[Lc]; + const bool has_r = (Rc <= tree_size) && seglen[Rc]; + if (!has_l && !has_r) + { + seglen[v] = 0; + continue; + } + if (has_l && !has_r) + { + seglen[v] = seglen[Lc]; + e[v] = e[Lc]; + m[v] = m[Lc]; + Mx[v] = Mx[Lc]; + nmin[v] = nmin[Lc]; + rr[v] = rr[Lc]; + fb[v] = fb[Lc]; + lb[v] = lb[Lc]; + } + else if (!has_l && has_r) + { + seglen[v] = seglen[Rc]; + e[v] = e[Rc]; + m[v] = m[Rc]; + Mx[v] = Mx[Rc]; + nmin[v] = nmin[Rc]; + rr[v] = rr[Rc]; + fb[v] = fb[Rc]; + lb[v] = lb[Rc]; + } + else + { + seglen[v] = seglen[Lc] + seglen[Rc]; + e[v] = e[Lc] + e[Rc]; + const int m_r = e[Lc] + m[Rc]; + const int M_R = e[Lc] + Mx[Rc]; + m[v] = std::min(m[Lc], m_r); + Mx[v] = std::max(Mx[Lc], M_R); + nmin[v] = (m[Lc] == m[v] ? nmin[Lc] : 0) + (m_r == m[v] ? nmin[Rc] : 0); + rr[v] = rr[Lc] + rr[Rc] + ((lb[Lc] == 1 && fb[Rc] == 0) ? 1u : 0u); + fb[v] = fb[Lc]; + lb[v] = lb[Rc]; + } + if (v == 1) + break; + } + } + }; + +} // namespace pixie diff --git a/misc/include/naive_rmm_tree.h b/misc/include/naive_rmm_tree.h new file mode 100644 index 0000000..d0d67fd --- /dev/null +++ b/misc/include/naive_rmm_tree.h @@ -0,0 +1,274 @@ +#pragma once +#include +#include +#include +#include +#include + +struct NaiveRmM +{ + using u64 = std::uint64_t; + static constexpr std::size_t npos = std::numeric_limits::max(); + + std::vector b; + std::size_t N = 0; + + NaiveRmM() = default; + explicit NaiveRmM(const std::string &s) { build_from_string(s); } + NaiveRmM(const std::vector &words, std::size_t nbits) { build_from_words(words, nbits); } + + void build_from_string(const std::string &s) + { + N = s.size(); + b.resize(N); + for (std::size_t i = 0; i < N; i++) + b[i] = (s[i] == '1'); + } + void build_from_words(const std::vector &words, std::size_t nbits) + { + N = nbits; + b.assign(N, 0); + for (std::size_t i = 0; i < N; i++) + b[i] = ((words[i >> 6] >> (i & 63)) & 1u); + } + + inline int bit(std::size_t i) const { return b[i]; } + inline std::size_t size() const { return N; } + + std::size_t rank1(std::size_t i) const + { + if (i > N) + i = N; + std::size_t c = 0; + for (std::size_t p = 0; p < i; p++) + c += (b[p] != 0); + return c; + } + std::size_t rank0(std::size_t i) const { return i - rank1(i); } + + // 1-based + std::size_t select1(std::size_t k) const + { + if (k == 0) + return npos; + for (std::size_t p = 0; p < N; p++) + if (b[p]) + { + if (--k == 0) + return p; + } + return npos; + } + + // 1-based + std::size_t select0(std::size_t k) const + { + if (k == 0) + return npos; + for (std::size_t p = 0; p < N; p++) + if (!b[p]) + { + if (--k == 0) + return p; + } + return npos; + } + + std::size_t rank10(std::size_t i) const + { + if (i <= 1) + return 0; + std::size_t c = 0; + for (std::size_t p = 0; p + 1 < i; ++p) + if (b[p] == 1 && b[p + 1] == 0) + ++c; + return c; + } + + // 1-based + std::size_t select10(std::size_t k) const + { + if (k == 0) + return npos; + for (std::size_t p = 0; p + 1 < N; ++p) + if (b[p] == 1 && b[p + 1] == 0) + { + if (--k == 0) + return p; + } + return npos; + } + + int excess(std::size_t i) const + { + + return int(2 * static_cast(rank1(i)) - static_cast(i)); + } + + std::size_t fwdsearch(std::size_t i, int d) const + { + if (i >= N) + return npos; + int target = excess(i) + d; + int cur = excess(i); + for (std::size_t p = i; p < N; ++p) + { + cur += b[p] ? +1 : -1; + if (cur == target) + return p; + } + return npos; + } + + std::size_t bwdsearch(std::size_t i, int d) const + { + + if (i > N) + return npos; + if (i == 0) + return npos; + int target = excess(i) + d; + + int cur = excess(i); + for (std::size_t p = i; p > 0;) + { + --p; + cur += b[p] ? -1 : +1; + if (cur == target) + return p; + } + return npos; + } + + std::size_t rmq_pos(std::size_t i, std::size_t j) const + { + if (i > j || j >= N) + return npos; + int cur = 0, mn = std::numeric_limits::max(); + std::size_t pos = npos; + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur < mn) + { + mn = cur; + pos = p; + } + } + return pos; + } + + int rmq_val(std::size_t i, std::size_t j) const + { + if (i > j || j >= N) + return 0; + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur < mn) + mn = cur; + } + return mn; + } + + std::size_t rMq_pos(std::size_t i, std::size_t j) const + { + if (i > j || j >= N) + return npos; + int cur = 0, mx = std::numeric_limits::min(); + std::size_t pos = npos; + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur > mx) + { + mx = cur; + pos = p; + } + } + return pos; + } + + int rMq_val(std::size_t i, std::size_t j) const + { + if (i > j || j >= N) + return 0; + int cur = 0, mx = std::numeric_limits::min(); + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur > mx) + mx = cur; + } + return mx; + } + + std::size_t mincount(std::size_t i, std::size_t j) const + { + if (i > j || j >= N) + return 0; + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur < mn) + mn = cur; + } + std::size_t cnt = 0; + cur = 0; + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur == mn) + ++cnt; + } + return cnt; + } + + // (1-based q) + std::size_t minselect(std::size_t i, std::size_t j, std::size_t q) const + { + if (i > j || j >= N || q == 0) + return npos; + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur < mn) + mn = cur; + } + cur = 0; + for (std::size_t p = i; p <= j; ++p) + { + cur += b[p] ? +1 : -1; + if (cur == mn) + { + if (--q == 0) + return p; + } + } + return npos; + } + + std::size_t close(std::size_t i) const + { + if (i >= N) + return npos; + return fwdsearch(i, -1); + } + std::size_t open(std::size_t i) const + { + if (i == 0 || i > N) + return npos; + auto r = bwdsearch(i, 0); + return (r == npos ? npos : r + 1); + } + std::size_t enclose(std::size_t i) const + { + if (i == 0 || i > N) + return npos; + auto r = bwdsearch(i, -2); + return (r == npos ? npos : r + 1); + } +}; diff --git a/misc/plot_rmm.py b/misc/plot_rmm.py new file mode 100644 index 0000000..86b7a30 --- /dev/null +++ b/misc/plot_rmm.py @@ -0,0 +1,77 @@ +# Usage: python3 plot_rmm.py rmm_bench.csv --save-dir=plots --logx --smooth 3 +import argparse +import os +import pandas as pd +import matplotlib.pyplot as plt + +OPS_ORDER = [ + "rank1", + "rank0", + "select1", + "select0", + "rank10", + "select10", + "excess", + "fwdsearch", + "bwdsearch", + "rmq_pos", + "rmq_val", + "rMq_pos", + "rMq_val", + "mincount", + "minselect", +] + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("csv") + ap.add_argument("--save-dir", default="plots") + ap.add_argument("--show", action="store_true") + ap.add_argument("--logx", action="store_true") + ap.add_argument("--smooth", type=int, default=0) + args = ap.parse_args() + + os.makedirs(args.save_dir, exist_ok=True) + df = pd.read_csv(args.csv) + df = df.dropna(subset=["ns_per_op"]) + + for op in OPS_ORDER: + d = df[df["op"] == op].copy() + if d.empty: + continue + + d = d.groupby("N", as_index=False)["ns_per_op"].median().sort_values("N") + + if args.smooth and args.smooth > 1: + d["ns_smooth"] = ( + d["ns_per_op"] + .rolling(window=args.smooth, center=True, min_periods=1) + .median() + ) + yplot = d["ns_smooth"] + else: + yplot = d["ns_per_op"] + + plt.figure() + plt.scatter(d["N"], d["ns_per_op"], s=8, alpha=0.3, linewidths=0) + plt.plot(d["N"], yplot, linewidth=1.5) + + if args.logx: + plt.xscale("log", base=2) + plt.xlabel("Размер последовательности N (бит)") + plt.ylabel("Время на операцию, нс") + plt.title(f"RmMTree: {op}") + plt.grid(True, which="both", linestyle="--", alpha=0.4) + out = os.path.join(args.save_dir, f"{op}.png") + plt.savefig(out, bbox_inches="tight", dpi=160) + if not args.show: + plt.close() + print(f"[saved] {out}") + + if args.show: + plt.show() + + +if __name__ == "__main__": + main() diff --git a/misc/rmM-tree plots (B=64)/bwdsearch.png b/misc/rmM-tree plots (B=64)/bwdsearch.png new file mode 100644 index 0000000000000000000000000000000000000000..be98ce403d32702fa59bf8d6a7b6b3f2ef185c82 GIT binary patch literal 65160 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
TRhyrbv3;kQULW3m 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 z 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 literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/fwdsearch.png b/misc/rmM-tree plots (B=64)/fwdsearch.png new file mode 100644 index 0000000000000000000000000000000000000000..b07e54f6b560c1395b03989173ff938d09d4d816 GIT binary patch literal 66942 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

Ed@tV( z&s^`~KbY}y`jvbc!+vl2a(-h$vzguOffF~y%FcG%?@8yH>JmnAWT(?5Dfk;vU06+| z9iJm;NZt{HMWA)t9NyS1@gR9jRQ3TKN82|`Pn04rSgk7WNIZ=FprO6B*J}D=6-UFi z@cP=6umAK`DmYZNX{fVyTpUhGMpaHg)|$`XznjN-`xICNBgSuuA{-O$9pY< z(Hw6QiDSV#(f_Lm{8#y5NZtu_sM5{&}eot?MZJ>GJ|?qc26h zX2|W34N?|CvdwEGg=e4BRFiW3X5E+4wxMb#Gp30M$?)^J;vfA>zJD;1yj(hT|Io#% z0S!A(@*zUY$%lMaG|nHWl*e-^%X5nRD5JCdn90SqoG)fEo35*KB?NgEHY20K%fG)% zpg!DLU>7DJ8~XCRnD3otiQSj|gnP|m_W7}gCw-{vG@h}_VR~o8%5+lIh5W`x;f4Sq zO6m&qO$D_)?cO$vY1r%dE*qDx{VtQP-FgQ{|JT$(KWd86aRU=c6%R{S-C&y)y;Or%)#>&b0RZ?Cn!Z(w9p= zNLvSMUQQ93uwYD;`deZ7Cskv2b^?pz%a97A=UpmW{T1x)RjyD15^>C*qiguv2FD$b zRS<5$AN5*d@7!@AkC^smMy( zM>1=gRjc{Fwy!F?A3Txro5t{G7vYa|c)?@#dVtXNT5H2n4S!*qMg7(5IgkRFWybMe zx1m$GZGM1p>iBWB()UhNem*R+%3{@W>%JBi~x!QI|NnD!qYxp-1RIWoXyZD+Tz6*%Ck>R74ld*+dt54yuR)x+7r!O)*s;JVO(6=;jkjE$l6-C^c0#c^De9C}= z1$E2A2S5%-ILIQrMGB5_Lw=T#kmiNt$`Vr!njAL%zN3i=U6vo-;rH08Es&&&&UYz1D3Kf`8P&b>JH|WtfR@P8e(dxEvcJ%G&$HOZr zIBD3)0)|3rP`Xc~@ZRpv?R+LucfIsfitTOuR~RMMco#bh+vqhrCNXuLkm{ozi{0#8 zx{BXlve`9NvZYe6T)mpxI$)dH{OiLnlwSRspWE`WcK5xLsrCy<|L-W)Ei!)u-n7=F z`9-YSVF?MbXIWWU;;Bg#>Z78f683dpW7qaL5@Gc7H6~9*T}y%15at$GYC~gV^03b{ zfa%oAEhijCBGRJ3G{`S3Ot;yYqitsrwyx>nwwjeY)MK;jwg^2hP~Y%DO|biv zAH()f&5irL`nc_~6O``L$X-BJdkc@3lx&>TZwLn{4amyu;|zk0Uh7ZlWoHe&pk zXneHU9*~vgGHcCq-4~ZLas(^;=RorsBIgOAg+$QTV$>3;(IwBva6!`)%MDIt!(AQs zOt%czeAojl+)h3x#(7Ws`x*5ZVct!AOrgAsERvqEP!ifFmjCo++)pYu-~I_zY%0Ag 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�qX4Gp@aG)@dF%HPL1Oer*i|`ZA2hDwbX8StFH#R3N6!`n}4;8Yt2mSTS|2wJifA8!4olRbCk{{wru790Qo literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/mincount.png b/misc/rmM-tree plots (B=64)/mincount.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a94ababf88647fa198a95d91377775fe1515c0 GIT binary patch literal 59531 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 literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/rMq_pos.png b/misc/rmM-tree plots (B=64)/rMq_pos.png new file mode 100644 index 0000000000000000000000000000000000000000..22b183042c84352ff570486d6bd778e6ba90b3d8 GIT binary patch literal 64818 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

  • 0*M6xtK<*1*@-H55`94mP6QR( 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

      +!?Qz*M&Ti7I;9?db+=8Z2`QD#iudOk@d(}=8f zX1aTQ3$7)&f9MlFr*C;O0QWAa|KVC;eUH8MzTV!iQ4a8Vk%JaQx(jawJu3PKRk6hRS9!gN!YnAkO|qjhBuckg!Dyj#T?@T-^B;XpxcLQ+Kq zqQNMVjh&P!#m2qMwzwm)o%k4_R9hOJcA(%Vu`eJ8GJ1qxKCBLc|MhEJ15_}Jz$r5y zdrs7=6LWsP>-b3yQX-4(V@wLgS2LqRcv44FQ#CCz7NUkNE-uamA80Ak@Swn;Ad{C3 z)&N;Pn9!mfk;QmuBovY$q+hT!?#MROxTZa}MMh|cky3}5o!tw_#m>qcWc&u79v|B2 zIwJ|AZ=+qiO`jni%tBfy{(3eN4FL08h|6j9j(!5Dfr`-0zJcL%oVoO9MnpTV7SbV3 zT2!UIQX6282qw_ppBGX zRsNHt)zv_Y>m*Ygp_RVK)xo-w^qxtjidexeb16$T&A1#}-3r0A4H>b$jB8I@d;3+K zp-3<8m$lZMN&z1(cLDyl#c-Lg6J10ID$uf0yb4k64bU* zUZe|w^fPW0ZFB(<4nN~;axtjjujBYx0?vy`38{@xSSYmRRdMY|u@JN?^4uyYDCSqt z-O|DbS*mTMrEQVX&L#{ukrw=n@(pbp2j6JKl(Mkn@EL;Fw+svjQC{#xIO*4D#JLv240);k0I^hI2vT_GEY93*g?A-w zI()$$SV_qv%egONe2ZP&A_St<%;xM8q*}rIPfI$3Xp_fluKP%V<}0(7b2oO}WM7 z6jUt(wzLAgnK*V)lRMozNg`fqjtM6yvMjA|LcOvIU3K{Hd^Z|Qi4$&*TYP%5q{s=5XfuTYgXrRawbXgdj0fMM|ru=E5 zIB&BDGqUp)XxX{JrznyXzsO(VEcuL?P>}W!8n`)}c8-(gIl7NaL5~KA%!_s&A2(Wt zR^Pi+_&k{5tg@0U7bNFwt}{QLG@4h9pVdmN@d2oG919pkxW%C2$R9j7cdg`Epz6AU zT8m9i%gKE0Wa2Z_eo0U%`-s8>aO&0c^mIUNuN=Cg0tu2(HQaF}E_iliY>bVx0TCTn zqIanFEh;+tI$RF5k!&p?m&U^*M2r;!?%r+x@NJ8H+tQm5h2GbI@{V6xS_i1`Qb=}v zj5@N~YNS-$2PZ`Cadw_vwg>V1-l&7T@#=#9F^(;~rL(BTQONLFyzJgccrKplXDdHU zjsZ5(2X08VI0|SMcJ@t#rcq(&DTR#`_X4HiKCE@P0P^qLc@iuabxEA#t?0bl*O;2k z`vDOU=tT*rV3*4S0=&&o441T)wzhSEz7nKm`~WHu4Yn5`)$9XrfV|Jfjr$v{inv;F zx{jvR=jZR`l)2Pkk^{YKaQ(V-L2wDV9CfzcK75wYI`^(>)^B{bgIxEXXYlI#(#H1tnQ`#P92mLWNmuY3l!n?5MC z1ghoIm_enNR)2fFiZdHzRPW(_S8;lPB6XYpAApG1gV zo8ynFXcpjzp8La@2L*|_zy05cmH+>`c)xq++2!0RcbKk9y1G&Lb7-HU{4+Vd%l`*H CIr~rm literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/rank0.png b/misc/rmM-tree plots (B=64)/rank0.png new file mode 100644 index 0000000000000000000000000000000000000000..f78ef3054724db6a1bb054725c806b2daac30364 GIT binary patch literal 64979 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 W5i_*@Kr@9u$BvwkPLkBU_WuBMp*?N@ literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/rank1.png b/misc/rmM-tree plots (B=64)/rank1.png new file mode 100644 index 0000000000000000000000000000000000000000..3354fc37f49a71f0613bd7b17316341d6dc0c7f0 GIT binary patch literal 56521 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 RWlvFm?meiLp=o*PzW`zHXqEr~ literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/rank10.png b/misc/rmM-tree plots (B=64)/rank10.png new file mode 100644 index 0000000000000000000000000000000000000000..254d69ac0531aecf6e0cc145a39dff297069a4bc GIT binary patch literal 59948 zcmd43by!yG)-}EW0SQ5rl9mt=1W`g7l~fT>>BgYD8$|_4K@pS&6$B~i77ziElJ1u7 z?%!PCKJPh4-|zR|cYV)w?Y-IJ^Q`sU_q^vEbBr<9bA?;d$MC7}5d=9VDcHsHFM$#fS!1{EVgp`!zIDut+QY2D_@})U|4;msbW-EyVJ2@#%9bW{uGz=W}IcWrKAhL|k&~2zz%gJ^Vr0SfXYe_URMH=73S< zvttIuC4J`AbA3gN<+${^bG-$Wmn|7qoJ)!uFZFe7&zA)$CPP~X8hS|L`u_jv1+zoUP+0JvuNg`X@7A+)t0|M;r;vfbr*-LHkRtR zxb0^;?dkn|YFZqzVf_(gz++z|IXPKDN$Kg*lJ(Bs_WZ`U*gjrD^HJ~0N31cfCv@Ca zL-UH*2=MSQke&6i{ipR0O>&~(+a<=hck4&|>i5`p+jNWBGH6XwL_FbJDEI6vR1(uU zI*ghW+D$*3PA{YL!Z{{5VrG#)gah|Cr_X1)x0?ExKzu!xL8eJXZEWxX1XCnl{me&Epjq)a+2cW$knS?FE}pf3U7|SJj=x;Hp@+bkH64)FKDROrcu(-@iHL} zR>;ejRwDuY`aQX3_+^!^Z|yqds;4?`j)euke*J7=!P1b2ibL(Qgt?Boy6=O!*XT-L z3!)P_PDyz*q1k72^#08VzGEpW>E_Fha#&|Xc2`;us{JU|o8g`l6NZ!lQY&+P)IlO^ zl;_yl8@EKvx;|sWnl>5oQ1Y2l`uh4dIO`-Pr>06eI}0MZ-(Rt%x<9h&v+KYx+;MeV z?{n~_jq#~rVrFEV$|mR1=D>J?$V_*nTjcbGs%W$2WvO!9N~agHzv;dkVNn{~AT%%R zRImwYg8jTk?#&Qp*)2GYOq<)=MW+0ggW?|x3%eia6xz?8!+2p1F<(1mDf98;#}mk; z7qO_NagpWFRXoquR1JRF5a!8e)aGz8ts;9n_833T!le2&x%9@jyf>U@GOHu|t0gJ4 znDcVfQ-8|w_l+*?^6fqk2nfx!80a_lDBTz)sJ(wNry$56+UY~vY{X}q_1&1{&9db% z9e1{4G?$wuH~c8LUiT2w3Fp_BV!kjh+g)o}TmP6C9Wqz8zo)#;ZP>){5e|R-UZG%F z+2${5HUUEJ8xm3hy*x4mt%>#KgIjC!gvCPSagd`V&- z7fCSxB0ikcsP=L%TnwbI$U$uOlE?ahhuGfEvV8H*Qr%_i(WBR|U(a}0PlfIfkvEpZ zfE$1NCp9k(^8)My>7Z|rBNQ|>{eS$pxk+9ICm3sgtE22z4_APcSA=;X-j`Ypr3e%C zj@EB?ezvqM?kqQs__C*cX%yS%D2wsf8KJk1P|JF#*Y){9)AVZoeCc+E-L&$nSFaej zxQKOJ7qPciCcP>uu4+1sg`Pco)>7~r++EOgS`iU1FE1spF=^@66no@lE6n%r-*@Jk zQJWVpN+AJ_UFWrnI}_$9kh!9HQAnSIG5b5LL^PK@LqblN_T(NLk8+6a{Qw8aaWq(Z zVK#3-AF9IHbLXzw+w-~aZ5s4i*PU-N&T*VCSzmyZn&j zWF!a2ZFqP%GWRs&l5BsP?sK0Sm)-)*%_<6=8Z&K|S>7p!}leRx$iDp`VHN{;E zkxB?gWSmR13x|E#nIr0dwVK1KoIuz_Mf=Ax-|9Si#VjjmJ?e8r{HGz$?S~IP^m1Oh zbVsxwaw3cDQZJbd^3$$Ei&cPzC~Q_aO_NRM(e98py=E?VMEz~}+APS=K8Jz6;hgSn zbv8b}+^SF&mA$pRGFjwZcsS+9+}!p_JC<~D%onBGb46L*@-H3wouuc2Qr25rb&#Jn zjUwaL^e@lIg&;CkR#s+fd7GQN6$D&0)3BH3wdQ$6edCwl`)y69*O{%)_4PdLIeqP! z4Dt?&Utu2wBcsJ2nG7Q%X46KovYj1oa!LxCnIRHKx(s4MV`w8q-2~?f#-m&2#=A|@ ztDaJ5Ph^*>q-!s^2Jl53OD|b_EBxKarX^7x7a1KNANl(HWTJ>RT*qo}bNpJ!J94i{ z$lQb>%tMa}I1QJlf=<{9((difd*lfg>_BNFid`&`i@eta8wD>mB*>`xoPql4{15pQ@>;y6`1rg!z*YzX8A0H&mlp{QO|L#x&<7_{vE7wB zVb}v70VjM`)|u`v5%T=jv-wuaUPKA9?r7Qg_;^v<`Ul4KR?N?vCeb{Q-I`13aVn2N%eDmhblIU9;{Zj(g%(jABDLq0oL@SdmxZ)!| z1<|%uWGeY>a}bP%su?mHXGjV1jhE_EIbcGDIw zx3-*b#)#5dly07Z6&KwY#1dZodeXcEmnBwPl|2&f z+tAPuL4LfsglqHbhm}c8RaKRBdEbg=FI4(I_gm@t`JJiu26a&>g%FaQXhzuF&8uoV zTPW8psDp`xHCCp<@mjg3&v`nvrlH|kv*A~OM!qR&g;UvX#_7MXmnIv=K6H3Jek|P0 z${4>kd=Rh5C!I375auf(%y(5(?o|iUhI8M;K^XY?DO9xV$UZ4g8?BEtC|!5xMhvZ} z4Kyk$E3L*tRWJ>UmpXYI8{WyjJWfvj3;haCBsR&p_zAf@ja#N`Lk(q0F4?Qm7=wT% zDzzN?o<4hqLr8P^IKBJEY5V#907!**m6hWm=~t~#^F^e#xv^Q5^2i0pw@h~PrjNYw z@%0VacQ2g0f=@tzfdmH!)6JeFQFO`lgxbh@<|W>Evqhks+mtEz-$1U?jrb}-3uAZ5Nwik_t+ebKiF)5}5&dv0YHDq*e*E6bGe`iqAfe&c#d*&b3?9^QczHckWBa~y0dU?Wx9hH(sVx5kxT#_LG)RhvpLd1 zbY?kGZN{M%9p;7DZ+vQ0(3^|rD_QF{@d*mTMSjGH(LZ?bKzlCOBuvZxRD42$qPBJ* zfLjS^>AX$h4`8(%%H$cfW}f>hJ(sgZp48#1mp7B11? zmq%ERkfKWZXuANH97Q?{?b!EL(>-#!ltY*kNn|ac6n_2o?P>_~k7$wY>`eebpW5^# zUwugV0NLYZUFj#SB60v2Ht95lqgS+=8w~- zPxsFS&P=7Ge>=wCiy)3G&C*toP6i>ouH3psbne_a%i*th=*^&uzO^>XP7x^w$1?MN z?THCnLDPX!TIfG2;QK$_-Cj>9E~b%`l-$@|A3%FEbZf<-h$$*5jkN~BLIDoltV84r z=L)A0Pvd+)bkvZ4*iLyxTMt7s?pk) zS`86+NRj<)g+S0269be?=4&SP`}8ARJSrXb@sF5s%fs975KYnc4ATT~izrTSC*>E<8{e>K4 z*5K&qz~u%ZV&xRFJ0EVA6N~M{ZdgGGEkKEKR+ z)#uzb85!l9Wae&tmXtVnMNy@TpFsOLl3)$h{|i5@^v@v$4==uHg8mQSmW9L916JiO z+7H9AO8WRwAZ1ofd@BhGLFcT!g@f1O@86a1;tds{_ie3sJ||8IY<^))YU^J&I| zS6&8MG|<;yf3iGIYwZ^k6O&ie#0FOg&!POGM)-^4Ul&%?Xs3b($-?1rB=52GY4#S! z1LjDvx}#svD=*`J);L6igPeea+%K;v&iQ}2r)$V#ko(CAr9{xzzfn>@;|OYC>Cp57adF}2&!13uam2*LfDX`G8m-*`JP?^{b(yB~ z^8vvm zz=d2C?VNHLJK7y_F^_g2*tnr}N5nNXX`}+EuwT|bfxLCEEm;YrB!1OLc*AKXhRz&$ z@#f8Q0?vHofHTmme0CbL0l*mg(8m>wY9j4o40=xs9LuebuxuBoZ{f)W&fPJV=Qk7TP{fGh+rLB@c0!^Q@{pQ&aW zl5iG`o_Lp-Sd>$bmN3?6M@*>O)xk{C>c!A*>>gVlZ>-L@8i8K(EqS_Fmxt~~^5YLmWx6Xd9{~pSYfdJ8G z>3kl_`%6}N9K?0CO~s&BMaO`L%I()Xl}o=kh_e3u)Ifk;Hm*}|!yX-~^u|DdHw6FQ|qAz-?gU0ZsLk<_iY6QPnH|65hSg2%Q!DLQ!&Aah!&R5IM`q`I;+}AJ9FncO?dLl$aQJrRQ~SlG4(318JjUW98;~LOFOx zkBUR=9^e;PK+bhCdV1m#ZDL>qdwVs*%+O8(4gqqOo&B1eT)-Xb04b(%O&y&e*uSuC zUmqXO+WVLYDH&N@T3W-$fU+_%hR1EFalP6CQ!^os|{mjcb(BR6*$RJIQ)RIDmwQ)9saB1jf{g5`rze60#7LsO^EX2t zM!;j@BNR8~_U#jm1;bcmjaQX}FNuWpY~A$s_GW_k5T72mZZT{VA89Q4fEOq~)?iS$ zSuitosqa;tz<4B9)UA$R27=7YN8;k*5OuMz9QE@+tzjT`c6OZ7P%v_2!o)rm;5N$Dws;d`kVPRnb%wcD2Gi6XXS=V@{as1b~wMmSTL*v-5 zn926JnZwbfB z!VRc7i`?^+U-^E|^MqU*^-!+~o@3D`0Z##;77N{ZV&5-l->Y8Aivknvv$A6AlpJ(M zBiA&zgO`U#Jl!F!qys1duE5v8;PP@Wsd3xi!H&GsA}Mok_aV(GL==jobqt7VqzFgF{=Cu1%_ z#`_Ae^Ep71PueBwbc#9WElO6&>0B4CY;13j0Py(=_(Lmqx;rOjXMJYI6v&uTEg4x^ zf#rsi2be%Uql>nNGe=j)9Q*T)^BG-jcGSi$Ngq6SdIt8MdF*cw96ffdYN{CYoDyigZC4BF_-2&_Jx2h4}wDkz#PZO$Osm=WWB!rSHIX2m`?)$!$9Z>wM)&~qK2)8DxT)g=JpIi^08k$%0qOr7f5wg4sus0 zB>AiD8W=o*`gV}(?mPKO(ZCbn0CvMb2&wr9cehq;x;W3B!%r_>!bfz0&7l;uJH{-w-9V2vnBt z$T#%Vh`YK9rxh<WzDZ3=HWAM#C&ttJmIVPlP*+%D z_e{IC;ZS?CvvrPACd*54etb?!j|E*>M#jc_7y!`Gm$}|wei}OaN%VV%lwMBHEP_Pc z8Xt>JqW&`!)M#|--X>&(951!5NTL1P?{gm1YpB+q2O5~jyRxTGLF8{o)wu30Hgf?B zP$2~c1^si+rnvtO4}b5CPt8HAi*D2Z-%pXaA-yL~oEZM!;cJc*Pk3u3o5xx6WWDV9`5WYck$Cu z6u#pk7bpp}=bjh-ZD9`*RGLI+4#rUV8RjRa;yUbROdM&8)|qcADw2SdQrvf}?Jod2 zFNRt6Y+ABc<YOn0CHmyUA8Mcb zKB|7o=F9KRO>S7-3Ve*ph45-VrJB#3RkaiyiQl_eJ8x)c?_%uJ3`MjYr(;?OAEg`6 zm${&(>eE$k->CNe5Ji7!<(<=FC*K@@_@uVU`p4~;SAw2gNOQ6hqra{{0=~d=Z6A+#E>QYLH3RF4M_v-KiH6P6Fwl>Gn6Q)2p{wPyF8Y zc;y*k?ZBw&y0I~Vgxm5$VF}79PN2~=)UW!?;YpJTBwXpV66>}l3~AkPC{gx`Xp|Qj zakI_-B=7yZ*AA9Xf#asBqcrYZa^kzm)M8a2jg!+-?2)fesYL9H(Gytk{=)|xK>2^o z+0D(?MBG~in)IfYCE9o~rXqpeI7P+64l7-KzTM5AMQQshuA8&5vtuFQH_vdbOZ5G1 zC0L)F3N}eIv!YI^jg`I{Zjg4gy=zAG^H_edaG?QdgX~eG=5G%j7#d9_-{)YQmJ);f zr6n5Fg?{|+qd(emcxZzSa^sWJFv_2`6Y#O@45SIay4z7(m#FQw(jF^X>iIjqHib)W zO*doMyoF>%%pVn5nBZV~fpg|mTYNws&gvre6lc(3r`qu4nZN#hQf25>q!X_uG-n%* z1YB`*#r`Lh_SH7(YEy!^%W-bfMGm%pqxRa`_*XVU*2a`|>zZ#nIjv!{U6`=DHG87M z|H3JC(PI;}@F938eF03Ya}hz*Us8Wp&Qof6Z8x6HY0JumG|rx=+E~%U5?Te|_^&ag z+t6TLpR=(Rn74)a#Ja!p%Xd&b5z zq!Z8OS^!31KTOlDMr}Pbs>K2~wCS49V`9CmC~l|Mss3F+1XGnLc_+jI_v#P z7TtcAiljRs%pa>-X+`uOU-+QnPvJ7U{ri9_CT1^M;t`SGt*y%oy!BK$Wl=xKl^zJI zJP5h}%HG|f{0&VQ87uymb^WqeeBD%7laXt{^$I?rbJTD(@K{iG z4={va6mf)>8{tCB(6gah?HRf1ax|;+Mdw6ytlie8e1kE z_&)cOns|uDp=ZZ#>sc%3A285%Ei%ls;c@+G3?!RMw*mVjozUy<&%Z7muIf8{z9KBZ z?B`OC9p&CSefr1IlC&}2taBzDn-d@M+T8Nrk>~$i9Q^}d zE#DBM`&vXD_`QyP;3CcVd#TGgkf=MIifMT3qb+z&tz6DC$!`%CR6iEk?&O>PpbrQ} z6-b_cN3pal;}zH0$t^_BaOrfiQzbY{6_`$^cj(_=m-!d)UOoFM-tN_>J^(wt`dPg0 zFB3YJUoA5K0d@tiH&}cUAvE#2roGqmzNE)Ay~9Xeh{apzj@#Lf3HN6?0lSTI120k2 z*tl-be>dpQZ}(z3Gla^uboWWIu#p1h7VEQIlNi|Fo~-Y|imFc^JcDi0?377~IgF?Kg<->K;BN8*AlWE1Z?nw>`)4Pi>R$in#M= ze($nV+uYW2Ap^_z*126}b!yGD^kkco=*WMC%F>cN?pPV_#-!zZXSDAO|JR9eYqyN@ zRcC8}FbAi=_1iBdmQKff3GL`h=dig?OG&Op9YU`Q)CbV(!P>y7q4xrc60<&yI zomh177A4i7w-bfEis`;{6j}g9`P-zWLEr8@LDgMKl3pY7$2r(AZV;Pe{{mRhX*12Q zh>1tMtLH}Fo2hHErEgce^f6@3@$m2#?I{GY|JWHP#b&GLQKWN?zmk_ai zrN}ZT)=oKWnbI{fFX6ta;$2$W9dWLhNLtArl7^z@gR1rIr7^pYif2~j6*|6LGXBS8Sseef+Y^wl z-p9PU=`^~xK2y#S6fTlx|8#xYLy2wr^?O&H3ZT+$eSON%89UQT`;O+H@<}#*$yY(k zVaa$T6l+B9;zaQAhb#K&N#|)KynEwYtd2e)`J-+xJdI2}W)HaTruN)P3jbQK6E7&~ zV&7ueA_Fz*vj33$EG)c48j%O*`Jhc@vzUC%A-q~2v$QlE(PC*ePsz2GWMgO%6&L+8 z`Y@e7agM;6-*vsKJr_gyn7bstq?5^-0&0|BoAJ{&eS`UN6=BawH)Kdl1MUzQ>*Z&h0b1xRwwwRWz^Uj`3qdX4A#pX8P`k1 zy|kan=$H`K90qN=sQuaBrL1Ozh6s~lOXlKe%VgPQBnT*oYQ6l zx5!}PJ%OLihfN}w|Nh=6Gz;7ad6L&o`#Nmos(=1guSA^N0(nkU3knr6FfjfK6`xH+ zdI)Gf7PCG#I@ZHEh2y2onoZmvpKJ5B!~X#L)ZBv;s$l{U#2L z6oWF|^c9p6)7Y(}JD3p-szy-$33^78W4 zs8X7gboR)RBeC)^qK;tmQ_#}t`(+Q#l=7Lbtl(F#j(C-OzI%tN?$n^>TrU+lNQ5!j z&K?-rTZ@B6e$`0~9)#ENtH`j17uTP=9iK>-&M22x;Ho_-xI$JFpyw1E{}#X zGk7642E%R^Z&Y64DU;=`iIu+XhyYW^c%Fr(WcYFO`R`A#HkFb-X4TH##1R3MJ1lg| zcd`llAGHZqi5N_Q=8N5^mxS6pAA{a?0fRGt5c5Z*z#Vt9jx;StpbO(#CNqrN&S~0r zJwOn@s>ii2S?_`WAb)qQCsV)5mwY>0l_MWyU%gD#g&>a|EUw~($2;8#L888>c#i(Y zYNF|MTm8B|&ypACpP1UXWP;i=N)-R4! zH-iE6G7WeNEfKe^m0%qg@Dy5hXgS0I{e9VT5XtU-$y!!9BtB5;26EyfRP)R0v)3rv ziiQY5YHDi*7JRNUk*fop-OX>9#ITsk88ycus5$a! zKgI!b?Lfoh5#MGiV4Jf(ehdQn$Oqfojd>!Dl9EzVa`MvO(zAcdm}!>K3oYaF>N2`&o&J9R zk@w`AIp)o0T;0a8DVxvVmQWEAhKxnKb*d&8@{4Y52n*r~W(IX_kC{$xL|j#s667f@ z^Bxd8$ju&o^VsEdeidrDWN^R@aE>M%Sq9%rhHi9DQ|)={!y?D+0o*! zbLmE=u{@pf%#TM2U04>Du)db(|dyk41*zf8eR-&?{uP;6f3&d6}`^dF< zXjEw_C>%$%v!6yqxw&TDX+}LQWH02_>5D?Z?j9ZL(MW7@adDfG^jrLH zkeK1yzu@HLeAZ@cXFM|Qu!JiCPEhdAf=neSsO~Ov8C1U&KL^;(g65D#1phW2+%~n1A)$Tr#&q`{;Fultv&;Nea39{^E38BOG`_dbX+_< zq@e#Godvg6n8tA!_rxM@QzyUX;J8F)Lu=Y_$u=W4h$W|{oKMlIx>at!a~7Mp_9Mq5Y6{GF_% z9Ge28LZ(*iqHt1&791G^shpb)CEP2D{ZsQpK4#GAEd7hGo}%>nBrv%eq~-C*chIn^$vev!M5;9Op0`V;@xn-}1__hgUcQSdv8E6Q-ut#= zAm9wr1hqas2X_I(AmL&jqF1k7%LE%e*f(;z+Xn{dQ8(0UE}cN|8@GP+6n5XaoNL;J ziR6Qfr(SH|rlfLOM1(fRZS7RF^VCOjn=67eM5xyS@%(rv@!V>=t5geC{ixc1H%$gy z|HTV_1xABI)q_%OhW*P&;!NyQE8z}${69{G`Z8R*_gwd)fOf_JT|T(*mX4|!)OAE3asvaoTzQz-WDN<$%5A)ZMPm3b+`l+w z>i|1{N!qq5ieg>-$#X1udz{(SOMQBTLs%Q~;K?dlgUcGT;se%EY$T=YwGGMh{9d)DW=Q zRQr%Hb?^2c_Q=g|K-gtSSQvf9$cv^;J?}=f*k1E5i5L_f zW;KfXffi0mLBRwL1W*+#K_Gt)Q)YSN=WAV4Jy&v?6Iy-$iz6toOFj1D4oI_BO0-Mt z#)}#cPx+op?X;`#_rh*iR-xL>&d+xs#34@XCPR7?r=-Oueuv;LkItf{6wpZ0C|yqbB=G2)eLnuZ88Q{HdJ6B)ib zTJy9WPl%~|WdB%T_*}vBL*O1v3{;Qfd69&w)a1%LOvfqoB^o<*SDq6{*=Argm*Yra zpBhZJ*j4-X#o}4pL+Pug8N!sr!9uFQ%z?@9Z{1hH`+TQtYjR0BiptuhnrCyi`uKX6kM4(VW17l#8GL@8v?0a|*8aRh2sg|wxb z^)MjB`wTHV7nih?Q^DVSa{;f-Yp-rSVszRB)-BxTim(2*LBlZ6!;%CwU^~4B)@P9D zO>*j;#-qGbHS+WUhFzz7EBvXjkP5s5e-i+(wyoJ0D%Nqw#yXE<{gS6X5+Ie(2?7>s zk!r@Y1_wN9(gf_LVRn*+#vg_}bm1!Sq3G93s!aKqHPpX9cNJ7nq{+~;BaPbs=*zM& z7pYd6X3UFVfvT;o1s(qV4GI|JV0SV+?3wN#g2~ce{QF_*y4yNd6W{L)>^%PwLglnM z=jSrGGpEQ{C_73nnYaixIcX)OHlrSJj$KO`+YmvM_dD}{lD7dCLV8yf#D~yvi)3!jaY-f(tKnU>&$bzcLUXav8-vnu^7y0Oy&55S?wXVLF( z-dD)>&#k=#0pdf$GcWAW4Ur!I@7*|eJGvAMY+^s>VvN0ZzN~pO*d`>zH-Cs4NlDPG!Z~IDFD@{hRWOe!P?QS!{`dxcQSRN^0gW9f< zFEGxv2(w6f&~N$p`BlPL27G#4Yn)PI$w^n#dKtX_AWVJX3q?`pNWM$U<%t|BO>PFd zmpCj8qCb4x@gmoQU$ylMUTfA+t*oe60Go*(R7BKtoe9u_JRN8V=y1V0!Oua5k_a-Z zG$B|*S@PsTwIq*#RDJ>siw_YW!^IkU`=TfKCRkVf-7lQ7ZQ8f^^g`DwCa+Mg^_(Pu z3_{6cc$|n%*aw}Cg`tZI=&LXgh=g#Mr}@m2#M-)c)hX{Y;DbbIC|+6_)OO=rsl+KTvL1al4Le?j9=0){nd50sEwH}I+lIrX%s ziGy#GmS8%au@N%np`sCSzFS*)U@_W!Lcd1F(4ooBHE_|_CibP^S#|M;4;~csyC8*eO+(6b`N~YBauR zJyZMfMcBCJ3;d|p6!J2(q~{sH={{xc1_K)@>5A3pJj$QG3WaM81gPf0J!Ms2AgetS zU}9WTkf5N^P6Jki6Erk4f4*g6LV%ttwR~z929o`UwDc}+^m`NtIXBQg2My!wr^Dq? zD;6M-%lb5(L-j*2#$hP95H(~#VN8Hwoj=88+tEmNj$<48)p$-$KS8nd#&OJ)PMxk1 zaNsen>t0Vwd@27~J@rre%Rex3IkD$6%9YmT`Cnhvx9DyUwwW_TqXB!=V{e&0Y&wWW zV0bA9EcNG{91oICdQzT1#{Ih5Q+QIge&YLI6<~pDF2QmcG)B)_yI0Fa@aci6{noVF zfjvB!%C(H2{%NS)(o$+dky9qWM0A27h5#7%!+w`Ab=i6*ED12G-ZeOx&j#Og~Z+b`AFw_Fk(!6I(uaAYR9{Eyd%1Jc&wO8=IR> ze+r4NENIIMo(=&ObxD$Nu8_@6|ke1I~-W-@L`es{Q zd2-uljx)HYTf<-h9U=wu1{-Kn;JUFUa0kZmQwUY$*}T~D{;eDeU^SrTfi;EG!j9!O z)^C~|fiBqM*0U7y|2)(Sp^?}8-Bn#;k6WaPU=~sH&zxFO*A)6huw$zZoDFE*q)l~M zVxw<l$o;;HLZh$DB}IPh?v6)(|S)Jvg7*J(!}b7Sy>P1G+T`JvZ6uR@NB)~KZn~T} zBC_B2R50S2_WD$g*Kxfi3p;9%xR=wRyV>H@8a!c7$oEEuZV897bEae4FR zNNU0z?m~lX3Kxk{mnS-pZpz7FBPgPWc`rsBLP~~00$cL`w>JyKtOvA z56xJGp?5p7~V=kkhF-8}EruUPMS3b&xrY`*0Mdfx#bW$rrlN{hn$3Vau_9s;h z{P+IywAClEyBu6P-CX1?jd!Y_%$p5uas(daqfzprzPUfMm;xhup#JGPHDc696t0j( z@9%jQ(@^Vw@w=lX-xbGqxC)1xBg1QIkDF@{n((0koYhGguF6m#H{_O~|L_8usWTEZl`})E2tne5|Rj$3~dXoEZ+e!C4L- zPd`z&Eyv*uG;Oxlj=f2>UR3SSl~(?U4TQI&K_v;C$+(Qq4P*8;((i{K(FaA9J?4&`WZI zDG{^!y2)UJD^_3p&HM}l9#eboIt{Jo6U>mY(9LPruy_j3j)3m#IXVCi27X-R{=NA(E&=j32!sC2dXX^N2iHM<6?hKwY$eZ-f2F6?x@H; zuM36Jq*JB=+j3xHSrB5F>V#Z7-WY@0)xnc|6gn95MRk}f;&xiP&!JUFiat{T9Is@q zFp6}YE?W331H+d;<@{!4RG%n&@Ons9mKQ|SOx9|Dtj$ovj6AnD++XCqPuJ>EzNHB) z*Q(H6X{qQQv@}*x>S&tVb0Ga!Y>!uzx`3~ngq|M4(>}Y)941s@2>tSOExVA{+N}jt z{%LLIDJ!I$NcXCr6Mras3@&7qpG4*HOPQhQ2WCXV?0zY9Xy}FFYV|I2v7BHkl>9Ov z&sr9(Wqd_SFSNxTY-cdHayK0up7AOSH?Ci|T&$vq$<+d{Ylg*uC=0P1x{S2ppgN|% zdA~8Wt_d#TYgeAGW{j4*w zMAV~r>~~Y;^!G9dg8@IGqT-+ zpFKl-{cDw5d|z~#VtNaz2!IJ8d5Y?|si9k%OwRDZfl|))q`9Drfc^FfuSvV^&c-5V z4{BKk?|1owFs%=xakZ5|c_K;UU)PoXBkhYwhcFj^-cm@Zx@YQx0jtt1B6!p}3P zj6WU1as!=nL6EtUb?txFvUPgWdlCBkC2OB6er(qY8BYK3A#jmO(9uuYQHSO^YW4f+ z;5=vp8epb)z-^rtrskicqkAw?`Roq0Y{o>bA`$tYXSK+{Sk5r*}?&?1rBLn27H@!P0B>Qj} zkLRH}1{AY`n%Z-v6lFaaz`0I;pwtV7+u;%{HZ6%Peb!DXFXE5%YwoLjK}qfj6diex zglJ7d%ykbB4@6u-;_E4~&YS4fr?N#-2pwE^T>Oj#wM*=ebIzR{snRA179#b)`Ha#j zMViD2j9d7TpTE7dFnR@sV*Z3(r?!{RaU0ayw|3Di6?)v7^9JP;V zJNlXO^d7ccfD~3yUm7$ftp8&NLGyl248(ixy$AWrEdzSFJn%FD`i_(9LDOSZ(Ij@9 z&^H5iE^u7bXK|1g{W@g0^LpWCDRbv$eyEA4s&U z23SNivJDOf;{XW`FN=o=j{W+Di4@vS4*wzguLIofWBsvVrGw$#sp2_v(eF;g&_|N| z2X~WOE}uG>d4oa%agX|5;v1?#+l14j5frNLqAb8i&vwQAX-?Z3*2}9_%h+t-=fs;~ zAz}ONe~jXV8pFFyu-Is^o)8-l->j2f_2sJqA@m4Mqn3ueR7a?Hj;y`%c@=Aju?aDk z->00=Joub7TH!FcGOL2&mdifUQcW1=)Jpz43qnp2R`N$UBBpCE@A1DqXn-W`Lw!im z_rq9M-FjvoUw(>I!Xswc!>V)0|Puc9Y<0A0elg-_v>5Q&e3euw&} zWOwW+-^PK>=oYP)?{T{`bOld&1q4p<_t~Db6^vrFKadVZ_4~>hTlphe7KiXknpqf+ z!wDXPnhkEf5GJgWW=Y1|F937LOZqJUBTHKyL|=^#y`m!$P?}Vhj*qgGmzVz$OI>PF z^?~UQW3_c|BVO>a8CrRX7f}l~N;@#+*r!jbU5uzlXNu8jU<3h9?qTu9updk$-Ceqn z+|iFGiuR|%W>pO|!r87t#XF6)yQmqVKl=J;B|z7+d$mLa1eHSb#a_UJ3`0v^1^3tl z9AZK2!Hx#XhcLV5bKe2N=H!z%Oht?W7hhB{1^YV9w79{8DTdKOeR!G*E|NbIC_z(YH@6U>W>d`W3?9F@M2PGue>d?{8 z1I7opxwfIfd^HChxI1~~<`)O86O_|TpoNDN1&Hm(GT*OxCx5t!gr2z6!+e~b7xEpRFgFR!YgR< zGq=9X?3z6}+DeOc;u^OwZw2&fj1~$j!*yXR11cy1j_smvLJv{fqHUI6w5c7*~ zeCRM3uu{47xmL$}y77kc=M;(7N0wB?=tqV^kBWMi-U?D9v9T4tnl`9)9-JGeWl!w= zNcsA9_bI@;<6ZAxE3ZFrkby*3S4XktD-|2lFf#wh$Mxi)lO`10O=H8EvXW*Z%CoiA z(KMI901kL%&3`?m8KGG9m4b{0_33@#4GG$#zuyC#7=lbu&2)yTJcm@=`SRYg_g$f1 zv#j(Q4S@hwQ0j=4;D4Tkg*w8X`wR-pGya=qCFT8H4YRaA$}b1kSD~lLxp@Md`8xVX zx4zL2*R#z{_u+)VIUl}2FPhX%VLO1-7({8DbpUKW}-3}?!f^Dzc9WYio3u+3So5Zy!5 zRj13uQGpbUe?nr))-@KTN@cP?zjcOubMi*s{T#}L53>5I$eFdE%J;j&mgXIn6WLV2 ztBYTG+V;_Gx#!O6!2rX*ywF+n^`SnkSDG<_T+HhMUI`EnoiaKY4vOufwR~&9zcF5} zY~vr;1aH04Sb(l%!`UINZk(EHhAd#4bMjGK?a;0Lb$sx9b1=x4h$yAE;L~2H4zpH< zA=$%fXM33j4zsI_mR8h%O@Kd39|aGD(m=R`V<(+&lus zZM#6D0ToN;?2;@5%ta22qX0K8igf^}AC1257%n*`ow;cUlWh04zYg}_aMrgB%V?SN z&PzPe+;!-GY<{d3C6-n(hHWB6HOuI@Ji3@Gto6{2J%Z6mUBHx=Z6}VS4|M}w ztFTaTrYDa$NOHII@1O<5()}8c!UY z%M@ukw09)4(P2b4#>1&VnJ*QFFpwP~Te`yILttJpbetMwvq~6j^+N46m-ly;7sJYS zu(5CmzwmZwCX5cDCG;*hz`@QZYAT|9CY`$P5`K_QbBA9EK%Se;=_&9qK(zM3gZwZ( zHO0GUSy^+VfbM=qci zq=5!w4_fTTf8a)QdOBDgz{~+)FSOXTH~xvrrP3tyzmPKI_8-Sq)gR^kF1_X$e$QVrVSj z5sxEKm>xjGhBLC_awW$k zmF$u}ifumF9#L7TN{UweZWrz|!2wN-Haxgw10MK=&htmYqkAYXJtTyOXwaaJG8oc^ zG3+m(4?r59D_*{J*dmSc!t4d<-T#lVw*bp3TjRbTP(f*w5+wvI(gFcVDM6)_ZctFV zI|T(nz#xePaOKqQ9ovfX?U#v1A+zuR_kVX4=@Cd0e4XZyqzExfs@;!nSU(?x+g#8fU@Gln*a^KTTepz z8$i08IVH-I?rd~S-z8@z)wfQ-qOxG8gk4(c(o>*wwy-=0Z9xH4t5j2`THCe6BQTNh3x7u0YMFD^q!KlC~8Ch z+aCJh3l#^5xlM|7Yw-~C3aseh(1i@N7Ni83z)4}%Dmw|W!*%Gpk~x^cN@=tByUM3> zn+CFkTFPrO1NQH0->1RZ+rl4D3Sw#ccv{uQPo2z0Cg<|o4xnS{0@NUvRoNa9PSSFF z`|uJ$*p&xZKD7mx)wzB;1m#389FWz9;F2po+;8aa9rM7Y71GqCO)nV2L-GMOagkpG zp2W!hJ@`U`wh|wL(YnC>GmRn^FzXO!>oLT?TrN@pnpF$ih_I1gPwZ6JcDVuq&wO^(tWezS(N#|d!$ zLzMlj!!qw0Q)+LppOO;Y^)kP4`eM<819|wxdiGKW144647`|VTH?q7(?;fIbDFu}| z=0&c*mTO-Ui1HmrebHw*t#D?Ek!$!7d&iH{Id1n1ks36-h-=2 zH>oI^rK^e8{67X&KDET6(zV_`$rx>B{Pg!dOPgRzrE}Z5s0m*kM6?4yv-CTfwH-KP^AbT_iq7-yy@(~qmb8W5;@RQzTj5?=gLrC>14lSh@6) zY(3Wg1U3EaGoB5&HH9aMA?5W^w=zj|Eo-6q`|QE5N5DSN$N}n-Q9O_qxQW0N8${eB zc%m19B+ROuS;2DX9x|bWnf%&p!2$GjK|p+MBbQyHNE`A)ARn1#-BwTt-dej89d3M- zjO-vLDK*u4qll$3I*U)i)m1=OR~KQiLhJB|iE%MOp`r0WB^?zA^Zg?=JVrtB1P*bG z5QyGW6~_&(Zf!}sURG68^8*nZ$o2vPLd-~;8X7!*nA#ZvGnc-fRvl_YAa;cR7#QfS znc-bM_+aHkID80bv#>CqKYy0JGt75B8+eme=@}UkIy$jH<`5OF-^~NbO;U;#?H2GF z=(4i>m(0;=p893Qd>Vu|i>0$jx9IlZAP&ywcv7Xick9O+-*4W6I+tP!l#3-aHKQ7a z0cFPk$PA%jGR{Oz6IGLf@~rSLxn8ChP+zqN@SFCM4pyl(~T8DeOvB z0*VAE?t|=+lJacyHE1e4m)?%1pca&YDiH>g{k?Z6yF*=G{wP$zjJZ%CqmgGZuHG@V zf?#rA?FDjHzr%OF4yZNvkIiw7`c{T|SExs$$ziPnvzUFY-I^V`+0gw8HECK_H=Vjn z1N5m~KEoOHRX_j%!v_QY?-=ljkCydr+yd#KhD${m!<{$m0FQKWDZLX8Xb-jMpRhXsWa7Ys-NN4GH>OkSrtlNz&kLKF zq}>U>BiNd@Qo2#t+ilSO!>Vw@pu2tUOvN>j2sYi9*>Q!u^dxiYM_-K%WxHOyp7Vko zBL2KzXes>8Z!-=gX2*hIpuO4pk>+&=mjkI>*Nz^2`5YWM)uz=?`TBRZt(nnBwC^@8 zZ@y2nQu)*`V_Qta8=2m^<7&t-w0397s+-bPkaN2ynoZ11=LZ0*0b4YBmyfG+`4_|| zL3}wqs7H?!9k8?7Bb_s>Ou)Tp11a0b-@g`B6c99Q^eNiOB4uMGGx{*KLd(;DG4zF~K`~=C;%S1JrRt{mjhqCt@bEIu zGtGZ{y}w(f658I{9k@Eps}s`s5c6!B_9=Lms$cg_Qb+Yu&O0Mc&^~EMcG)NcbR3j! zTMKm$d$s{qltv^zEUA`nS_{eyoeNYKY$op}c2-wcj|$rY0(W!;w3flUQIU}|mi@QS zic3lPKH^7NyV?7+{Na#yaI6KkoZ*iuSv>irke>WU+@q3C9tH*uxg2+A5Y?FvRA3=6 zZ(80P&=f)l>MlX&a`%%+@w@ly_yh#TD`ou&DSnL^0Z+WVVjy_IAPQVTZ~7i=gnTN4 z;|KvkP&7Y%v(Defc83th6JxC30~#fy1w6@*jdPp@5C$-oO%W_!ao#4itaa zf<7BE)4DbAZQQps3_6mbe)+Jt8-ziwHx6H3+z=y%W**dy_L~6#``Bwx%mS|qDOS`< z`j!hu5%vWdN7*2gXH<6h2FKlt*ROp*B8^1-NNOwb9$bhBXuSYfSZqv!Omv@a51`)Z zfCb0}&n*kim|j4HVyGoDi-0xv28NCOGC!28UyQf4eK%ivIn!l3eQ%+Qt=p^F zl*Z#ViKYb;gS<6KWCHf0ahg{7&a>`a&{Y<|Cyb7QRU!_0*TAY+Y!{EQa1T$2ebJew z<}LZ^Or>rXJ?xfH8Pkpf+k(3R_4qD7fDq7BLMJJjHgc@>d7~g z(APf$tfs7ot!FkAJ69KTg{{M$2-tGElbrvD*yTP*mCTohOuC|MEPr`}g>B2O?{Lk* z6K}HV_v_hv9!e32luvLO%UaqcDyXQO@3-t$mzI|H6AEj-eA#wddHP2&vyX8HVvm%@v_@{fCK44j zOt8n|v71##kv2epgg^k%%9a3mN0mXe%f}uebipY*W_Ij=F5uC>?)8a|_}SEB?RYv^ z>zdQYVXA<9j{DZgE17vvcg4Ex?m(Pd%r_)!1&w17I0RkS2XX&O;qqJx$?ZoP1V`?> zMN-&l^&U8d1rn^~8;6I3XhcQR&++;+;nF#~1DW3$dS*~`yqPisLI8I_i=K0Mu$Vd4 z8uxts?>d^ZzHiFpg*m}%+9u}pQ?#We9N*-tN%vx6Qpd<8yXoKbzx}sx_IoxitX;Eg z`-AR4(tu=;89wwvT1WgaTg&d>A3I$J9zZ+S562wH6&-&3pj@k%#+R2aX8Y$;E(?c3 zNdDN>^I)uyPQ0`DbwmdaFtAblJ0AV9wwx@O#h;?CNedP*;%9TC9eMx0s558IM6Gt* zm3)Z|Rc{j#&?RL;-UHk;hkpZJoCJ1excBVTYd%M+j5-OSTh-^2^6!t+1kO4)AW`># z`|Vti0gHgS9*BV%BYUerHJ3A+OvY^~vE-y~o8I6Tox@y~ISLGMmt&zD^HqenQu~57 zBv$s@E1hb0y8(HNaO381yjI=2GzcCqg~hLMoQg^#UBUejoxTr|nLN~q6s?Bt`T7K6 zhC!biN*Ng@?a63F6G57!Tx5M7>PAoDp^_lUJ;XyH>>9pcqrt{(ZEelNBm{aM9+gk1 z=`VLyZ(r2bD^E=5F62g&JZYSiWFjPHa^SNe`06r_ss)6^#pMb2&6*wC9Ej6w>6_vv zmBUSVfOP~-KM(;0^#Zg?2H`vw1rrN~o}L~9p0&C=GW?GrPB^!xKbaJTD=*vPr_6X~ z5EJv=CpqzQoZ3N96OUI$k&?a-A3DT@S%$n7Y1{$s^zh+%;EF*gbN8wj8w7U_5{gd` zWkl;Nygqu|=MAI0tcKZ=b~BKC8W|7WI|k)3aN)_&K00V&;7DO8_&c_5Ic}wy!*guI zge*{%kmTOi>WM@VXl*UTVik<_GObVL9_EVpQNa^=(ZFmUjR_So3H%%KfzO|l{3}C@ zWE+20#mw6Of|0}S2ysP@RWbe77?E8s+2z}Zg)@bTy_s~N!Dl!rt!V)kbU28j+AXfB zHT6MN{;x6>em$tb_F8t@Addj0f)82S74E;u7O|ZRT-FSW?8PEgj9NP_x}xn+wTm%& zdjyn1)$&!N(F&>$o`)O__}zq?H#iO`=Z8#^FN3<@Kwu4Rylcg653T@XPl`s>=C|l3 z@!@%KxR)6EOP9Vi@XKA*`UHNzST`Z*;g;_)w{|LrG8GN`{JG`gr=2&^0fI9`T z6VN)zIq031Cp>`uf4)?W;b_vg?g2{|g~+KDQPC)nq=5E{GUV4QJC1FmNsJEczoeY< zb)^qP-zJg7Pm$s^+m2iZ822xI8CtHB%psu}Cpr#|+l}9t6BUg^X7;lnqkB!jW+wZf zx&E=J=!~4=oj^A(r&+{;kl>h`f~FLyjb_A0PoD^=#RRC|5EU5y4qez(@MXK|O9^`6 zECw8gpbU!5rY%3$pFKSc&Tq{`g+_Ot^mX|T!;cZQvQ|weh{$zD)72dus(7*rQr#ky ze#MPNxE%S%S4>Gsc>$rGVh<#(@1Vu=^7-?Df2xf{(s(-CzR!1kc3HH{6b>{?3+FE~+ zM7y8gYSF^`{Yruc4-s%0S*ur5FO4W%(d1d~{Q31X1BTaRnDWagbY0TZJ(-YddL%rp zJ|#)4@ZE}o{`QLM7CiX}xqaI&yOk^zukEpA;dHUuqshsO>RS+kotA#5K26rTJYW5} zZ#wBDO`D%j663xXent^kCYyr&{@WYDGu?sGDZ*0s=oxO~h~l33%6R7R_Oa`TY6T#I z2x&NV8~EgfLPA1x2df?{m%H*?TAlFjlfHGU2FT7A;lPI4pW~hgYvfR^g3ardmOP5u zc;O7O7`NfCD_{Zmwfn=B84Hx7^pZzGb~7a6KSBMl3P3}kI6Qd%#TleMms4&ZqT1*6 zBu8n2D4tQa#9h7AkrRb++208yUyiImi371;5$q4mA%K3Z>@Rc*Fm*k>gm0>vL$30U z!a?KuYf?9wPW(ZS9XQdYm59P|y5H{+;~ZilrBbHGPo+$%x=Diwq((N!oeu(U$a?U= zXA3g3A#jL^15pnP1Kwn1aIqk&JUEI_trlE7iTmwf4~V}86U2HDpQV#<@~H24B7wU& zerWBful8ae(paAE)rXZMJ8(~I1x@k61QBwmMS`7*6sk{f;a3nzH?b4WGflqD>1_MS z_lfi0ZgLEQxB4!Ujg-tN|Dik%`bXGBU(j0}GP!W|1i#JQz;h*Tt%VnkcdzyP?YlY_ z@6zpe&BlJ5ns*S`=NF=mk$>BkK&!2kq@*yU_oy7NUknLrTwY#Ct831we<@0GbAFm1 z8Ds0gx>>5BX}96dU1Iw~n`)U?EWo0uM;%D((>Y+ZT|R383FH$Z8pm#1G>J!8*kiAy z8fUwQRr{O!NWri-h61I_js9bkA;z|JWaU-M!s2|{EVZ$l^ZdLW{ zo!W=_m05M}uphTCL-bqoer8q8j2V!slZ29jf#@c@Y-M^~{O2Ly5h9~zJG-X7k30^7e;|6Z_i=GEqBr_}=VnvZ0++Pame5}TGM zITZ)|c(I@D0!tc&+hzYT@Va65}%(XzOK~O6~&L!%a23A1(iCAw`2|vFVukhX^JtN4vIm7MR zbk26eG4M70E$Y|qkRDNOOA`el3l`8-#v%eh)X45j`5c3^X2ZZ$mM}GCx3sdt!k})- zty{}AgOCDDu+o4Ceui#007Qpu9Y&lLr(N_eZf=o9^z$Ee8&imjseEW6PGU>;<4V6 zNtnzE7ATXWnnCnza{+W!e2#k%ZReYkHZ-%_bL_@Es_;jE3bD}k)=HIcxGO?4QA|~e z8;oCf+d1jG2E5@N^^;(TlYW8#Vh^Q4Afx!F4*TOzggt?VSk{X2d9-0mB~OiZ5;(F& zZQgXdb)sW5r>M zIj^JQjqcI+l@6*$ydq&p&7e8{k5{4*@oH|=S~eJEL06)K&X7l}?ht?6d=nvflGWkX;!g@UiB(Vg2(5j?GTkOpTG#`sjFq+FigX@0ZF`%2hbDgC$?NFk)lL7XxZ z_d+#gw&@!bBc3=cjSWI`&^Q-(1+W#M@Q+qi0UmYYx4(=s&YB-zfkbMLNh-b+p(WE? z0g}hjPPq2<=7^;Wtf#Bge%vAabHn$8J$MQAVbUCEHi0@{2^A7Kpcn%jcn~^zbx>o- z0=FHw<(=SAO~)hP z-$xb1Oc=@VjFz7ogYpt&6zj@0qQoJleFjORUge`hdmYcDJ5F}hawQ*lMKrm7JD<&N#upojsc&29;S5Otc$EpK*XCTOT`jTCk+!T_L@_F;+wJY@p#C#7e7cR9>9R+ zr(tSnc-W#vjB*f~weo0heaV!|OLg>5mBj!W4BC(%fF2kj{{ZR>(s1w$+uaWxPM2}3 zd(`N#$P0-%-ItS3$+Q9>o;uH?wCC2)U9|n0&68`#wgIvHA0g{aiw9L6TBVMbuGJIfFQmazVWd+|>?+ zdsRU#w`~P>`qPqC(CrI=*$8`8gSX7V9Zx74pd83W%U;=hy!KpjvX$XnMyqz^vskL0 zvx;{qpZX*ngBk?1jkpDNx2&Ma!~nS;^t%pXwqW?kV-OizT3&*INhaWFA_K25oIDV} zBp=mX2GKG(1W!mNbb>fErfF=8;NElLz?((h+Um_D;OX>eoCVV~SgtREs0occLJ2Ia zcnXwqLd$-`{{54JOI3UW-C@|3){epK?^e%uY>~U+ zPl^np5h!m>*{VU_4K`Hh$SuYsCo>~n$7{Q5ah89H)olAA#Q(C{EZx>46Oi+3TI-kI z8Xg)_b@7K2!vqdXbh@dYAkkem zTFLu1Est-yZqD+V?QCL2n2ReOEmi-`dv;K&>-{LF41Xg7mnupnICqQVl>hKOGrLc6 z%js7_*d7qtq1`gZN~X~MsYes=05X~mM088w4vyY~>D~|q9sLI>L-V9eyvMy*XVEgkKt#Y#NJ0vJH`0L9~#s0Bnj{< z0J3B5x_0BOIF4|<2`ioq&Eu6e4_iR??ime6AEYJ5Cq%d$|NV;>a#MRiFszD$8XL*Q zq9E6g3z>` z)`dU)KxHlkxp(AlyM`PcG^~bM0^ddgk5|8H;Se|oStV$wo9*Yp;N_$U1~2&8SG=Y* zfCQ260#w<2P3LArLLYMfClE=Bx|f4uJ1r45LNjX!U2bsiVa;}-(3c7Iyd^hYFMkOs z)e?$h#uYb}h-)UINK zkrarp25XVhpv81UAj}!dGV_C+lXtIevgBJY7b&w zf;qhO4*+@M9I6T+KpdNIU8STBkOq{NpRR4MeU-DEo%qez27MgB#NgNW8T~xo6|Hri zBM>b7Jd|&R;#(m290xl99}~9u|jL5`Xm8;u7@^!-Kj&d`l`hNvT^ySp5ok z^t@jVr_h`-;N08U{t7k`EK)J0{cjJER&!y}XJ16Oe%V$qozXd@r9>!nD=AjQKXY=5 zC*{!Z6#)qmlG7&L`EZSCYh~%jx%cUzo%{}?JOu@204{~r`A83JFmBLQx@_n+_?U9v zW13%DJa`yHKf#Ey>V4wLS*I+78YzHjezh#q+yM| zd}zcSC-By^Czz#5I?o?kS8Xzc?dQ+oP}E20aLd`b^gI0gD}$Zr8cB~bGFH_rvCn$x4SO^8S7koa|D1@>H61`PV|y=n z5CGnv8!S$Vms~O-$x#(pgBvx%4n+u1Gu$&U$XB-8TDJiI2e7<`&@5UIiNEw_5{B_+ za%yT*Gp0$jd(FjD4C8xY6kB;o>ig_d&As;FhM?w+T6d&NciC0C(shE)xy{i1YC0Xl z6-aEJ!TX(I{3YJZai4BYBt~!m@C9RG(9k&q9T};AQ2>QgG@XZlmX8Wp0*Z^7OhS^9 zN5HD{w|HN4ME#+Od10TrS|Efjb+s9$6(9No8a&4^6+orbvCqE|xO($HZ`1=U2WS~o zo8}M4`LSPzsRVm7Z^UfFp*|-v%=a9` zdOEO-`m-CA3t4dccV6@lZG0R{hz$4gKD#P@E0a`c>cGt1_CihMf=NfGGYr%F+n^mQ zisY?omm7d54RSldv+q@Iv)Zq|4(xQIfUx5tl{=IJ(n=mp}A^$(zJMnt6d{~ z<_mOI_r@pveHa^rEu~LemSnA7;3_zG(nggK=gebWQA4IP%YL=bN9He2`a!9E#+~PP z2>K_;u!P|vXrL0}G$A8COk+faA~e1FG_i;#pvI*8eY*E$?)%bW2(BRY8uWv}eMR}r zofBYNx%sO`8^no+xwr(fsUBXke_KvN{$KaK1Qep?)r40E0IFAu^w}^0SO+jEXy`C9 z6QVTutD!?N9Lrek9XQT8JoqWQtQBP?Qi+`)HwWbGBe0l$<#L)9zTM0YmU5dbV4Sjn zjR94npkA~9r6WBkHzS-OP$Rv-V}g^d-?&(#13P$~%A`q`c@kCsTw`7L0Wk=EVXPCB z6hh?QgY%5J>h{i}f|LMg(M3mGXd^!|Uc5+(n(Rm@$p_{VG_P?UG-)586Eb-a0$QjF z%jrK9a$LQ*6{6xBec4yX#Js@RY`Jylr9f7Jh3F-5Tfq&2(y(X^Fg;B^;M*aeg()@` zjhvm@J6juYB2Dz#)H5aFVH4KPD!-X)CV z0dF8;*Yp8nMlrvq(CTc$?eHg{f`T!8(0m<&9Yh%XN4j%RvX4(O%N+L9y0p+XY23Sd z|IALIp`h!p?63D1sDSS!d0=>9sLcZ{?4#AntZ*+km;=>401}A`*c7bF?og|R$-ILB z*JdmD*LpoQOC8VKMu1e15*(W!kDDpMNMT@14nu@048zr%1b3Z5@pcNf9`KQ0hXy8+ zJ}1s7rYd{m7r|I`!o!7>e14&=rLH|$r? zE|mP5OnH6TfC$DG2Jyk@E~qx3>g0uc^&|u|ykzL%hOnu1jB&w^j7GVG#D=ohw#URC zriqe}kujBP!u&2!CsaQy{%<8O25LmF`JK3sOb6}lAWl*kJsApmjX#FF&xk^KRxMEP zQ^+ucF;?Htu($buXXB#LJ-lBvhd`%2zajqkPe%Kv#R=OrHU?!}2>l7-+;=aF?Jn8P z_EI#=KASHBhb9^!2Zf*W(9q^j?A+eoz6it95?B6Tl)KBUeT1ZPbuD+-X_!-M)|~L? zhs&@-4-9$XtPfU2$=$g5ROq@g2E4KP_E9gIucCL174kq(zk-Vn4i#|LYJ|hq>8~^< z>HwPt76#k_^T$o{L9l_T07-L%CjPz>Hw%i+XdGNJD?JPq!(hOQ_SfBVRD{d5)8rt9hZ@7z zpVr7*@dBp)f%^;_>~M$Sw}UDF;{DHLAPvm#N>5J415g+iCRFKccn1dzu7>rwxV|}$ z1MMLp{iUf!Y;;%mZ1gllog&$rz6k~=7#SHCz!)$D&Ph=b5fMKwxM$TcDDR^AfRKZR zqGHI_8gwl~H)p@S!^aH3%Ye5Q=2L(5BowwGEQIowgWn368phv=YJZ$(hXX=R69DKW z$J^E)t5fzRK(zT5k2VtbTj$>FMv#}9LqljN%qYDQ=>%X{D{{A>X`FecKYSr$M@|Sd zO3r-o!(}u@B6QP~+9we}oHIL2r%&hpQvH9`#h!6HA+N4ZkkUTc_OZEHX2kZFuxO9XgJ@hQP8Ln=FEM{FGbV9jfa~GQ#+>sW^hWmHhOCBa7H%3d}o*|dO!TnSiACl$2l%Xq!%m_D?kYbqf)x z-F_Xw=NhdtytXlygk^5gd_kS-+;QkmP8>a$7_D-9+!_K#m?<6}{S#Cc$RqS%TfM_D z_r@(_R{5#PN!7^f?|`KZfoMh^kZjSYT9By`>7#BV(Ije;7d-c#t3uKEU?LnxB!WrXaw=Cuq#I} znJ};nq+<>58%2ouy_B?E$f3}3%5`VM0E0X{qiU*+`q>Sx8Q?RxlPE0)65SLfyC%`r zt2}8gj7+NkBzoFRK~w;h%Z0`$sHxsOlRTyBTFq~DPl@kJEaex9o`;G3zf)w$&rq_n zFA7{xQ-)HsFI3t!%2?A{9;m86$p=_7c%PAF2kas&F6&%i+Grf@*T{Y7dg40tl}F1B z3=H(Z*(2S<8A%1>yQQpyed<}@0uTXxQ;@E9uV`KCO}((lc>pjq!)bD-uy)v2flL6B zIZ#W%uhRhs5VGDN888AqB6V5I7|MWv_^Ozudb-4Yx;=#wY7BCKftxHHy*(8^+k!(q z=QIm0A2fU!31M03?WVi1FfdOp3DD}z1bu93=V3aH|^js)d9&(1=r%YGxw z<1pd8(fym9zl#xYeE+qJy5KBAboB&^Kj1f+2Q3!_42>J^s%)r*0n=Wg`;b4e;HJ@lYSpj;FN?_!;2D@zdgCEn`K5*q$^5qT;`D=LcAY&`{ZPcX1lt4W9v@ znkvov&#g!<3cx5G2s6!|jBPJm zB}n7Z3_q_U$Gl32TYy&axi>PB5M9!>9vCFSVHb7MBmE{+BY57^Jvrme*kwNUKdE(-))x$^plAt&dU>WFfePbyg!axz0mTV^Ung{sVf(lpF$(g zK>@1+CX~f1w7A5yUebxx#dBp-*5QV*k%X|SJc1}q4{Y+vFjZDwULFx`p{)z9ND3H# zc>W6Y?c)AW4nxQK4kg+h1s0@3F@4`RR#DBeTCr2EWzOr5W5s?$?1nqtJ|V>*SL=7B zYHwolo^2iueiy1) z1!;JeK{G9~iFM~ZMA2J>sg}v5|6dI(LtMbv%!-70=D-M_!Bzih-=!k49G)s>sBGB? zKs>`J{;UGl$UGp`S*xwa4XAVj!j>&3!wuO9UNtcGS{yS!wSob;@s@!X-M1 zzypvCs`jF?Utf#1S&2>i*m{3jiYg(@1Vc(#Qqn^B!z9T5$~Rwe0Kp2t!{-N4Hw0b- zh~rnWYc^L_9iIB@s(ZhRNzocT8x8CCV)sYxagQeOA04<#&s@gLUD>(vXvrp)fm;si zEVHjK!%ZwP((g{ed0&O`tuu0NTe`X}hkkvYbGv8xt>kR8&B`}Ema}%zLC#iD;}LzO zEh$PIkQ)=gi&X_ap@@w(NYx4E%y@R0SG+QeX!h!lxL3XK1K%2v^iFSZ52}2lg+iY`!0p^ zWA{y^V7!6$sb3XJX_k{q_D)S7E*S8<&OZ4?g=ma5F!6pGNz|3|PjR1uVFi=Ya_^~6 z#OM$Ix`oBb>X5ot3G0esC0i>UKS-@_JPGMIp4Lrs&PxbFAukg6SMKtkgpWhbgKfq7 zc%QOc+hT#pT?}nesvo`@Y@VXCaSF@;1nfXq7>G8n!&F^3!br);ye{f})NTypOj`(Q z`wV_Gpa2d`>f7_d1?B5&DCpH3(3-uTTX_&8d(K@cV~Q~CV_|4|n1fN%hl~HZ_L*hc zdXVr9f?X^BO>`FUgwPBH_?7eEIn#xAw8_=bPz?0{7#wyJ+Ou;uXQb zFSX2hxWf<_&YrFB6zZ8%MfHUbNmJY%$Qa(>HlOTGN>N(%5sO~`s%Z4;>{u_wfBfn; z>_s>YszGf6LrJ{>!a)iBMsa9AV(1we4Y%;d;V zh-QNtB7pAvXO;|Y!0Do79)Mc)AU3F%42Wj0^GhL$6*V(|;Pe>#wWZuq=XT~G#r7P_ zDR@@(cer!id&}Jfq28i@hp*$lW;u9r4FotzUnp(r$k=+;#s^A0eXXr^a1)~F2|tgg zIul3lTuZfoo*}My8C^{yTuqx{E@Tq^riraT2Zo1-za*Z4uXN^B#b^;q9MgStpIjU^00rA+JJ9~uF>ZKmB^pLl)` zk_{1^ocNNMpqL>9KHHGL5;~ zkwfw?tDfI^EAdc)@R2j;*T;rzQ)-@PM|(s5{ixDN#)(6_vB3me1tTryq3)*(5sz)Y z12WG-B~T9@5ZuYP*-_oYIo6M47#3;sT?@#=?=)j$7!J714~}>oURyI+8F~)4u~+8i z6hY#u5HlHGuiNgnJs58m01`cr*JGOftSSsDLl8O*DA!5 zr=c=p^dSr*e@|Nv;t8i-&a%5KP;tO~Epu`D{T`f}%D%6loOP{d(O!3VolAiaJL*OD zHSH$L-x~z2OhY$3B{*6l9k^j5tDsbqiR;$>z*naC;N=vx2s}njk9Zam(!y9~Pts^( z9vuh1xSM3WVz`Bw(0&jdAw+QN!r185h^p@&m>Y(#Jvm*R$%+08TZH406n=O!*TGL< z4)Zi14A4a@`qI4{MuKdlFY1n7ABb=K8B!M+f8b(?)!Y3Yr7y0Q|2ZJNk%Jm)Umg(A zqXGp;Q}HqMFqfWE-5d)A6(umt1KDXVT2IKrb4aWugjY||Es=a+;Qi6P>#)LHhQ0Y^ zoEZP}Lx&C_(ztXa@BKG%dZ45)7z;DXv=|oWTOaU*YPK+#13};X90q9s4h|v4>tG#m z&&8iOfI*rI)J(yYcPnULFIxs)*6wx05d_#KzB&Udw5Q z6LO^(tMMijKOnYOVw5AE)Vrg|K%HmSAAm?X4h|0MaNs@<4fWpL8W$wFJ^)rCyAC7z zBaq6GQc+F(wOJPHM_S~aoFX1oq3yrKO{(hu`7xW}>*BF#)889BEQY$)4~mDaI(05D z&-742T?s-fD0t`G->7j;jTR4|GzIFk7;DNiSsI>ltFxJp??24GT=F7gs78;&tr)0@3fYN1L z$6CYAoqG1<9KI+^xj1|^wBGxY#X>W&bFKJYf&X_~H8d=&`&;5^hDAJw(~i!?jQDh> z0#|J$?!^#a-*VQz5Ei4j;3S0BSz_&>5#-w!+}&!`FT5U`WEV;DD75e>X}gG)UQO76 z!gX5%E-t!j2U;EU?gvg%dw!;7wDeuR;WKY{n-OikEV)VUw{G0fJ~eUr3blVq_yGCq zY(A6o=qQ`6k}{TTs2gj`?y?^t_?%2&o9|E9F*MYadmt!SvAy0{KRf4L1po2h`+|1U zqP=PdTNv(3RpN0ErbQx797atICo&e>`@^^1Z_9O)VT$tbtHfv+FVdeP5SZ+4P%N%F zn1u_9HlMJ!?`*{VIAD}<+!&8Wa-C;`?J%5|ww-p*@G5d)q)sS*fA~Xkgkq^d1or1X`7>t|Ss%_30IOGRpt_h40ONa@_d2sB6s=tvoj-PKjq>wgfsJY8l+MP#7oLn&k3wE z654pP;eShB=v|L0NLFH%CRZx_G5Q|uc`j%-Rm|JE-!IcLeW8XNu zCJ|iefnH)atAupGjBA%ka&<| z%b8@;N-8WTTKrwbbPJ_+cP5c6GY^c;gdmv`{n%~mty{+v-0}`2`mWsW&Tx56H(OG0 zfW44DY(J7d4KUp2U}aIdTFC<2SXlUq)_VhsW`k?8aaY@l{pGRNH{Be^sHUtjZ?g739Iw&>E2%x@~n-#-*GNr?v2f zc~LHYmH&BYBqWiH&3XFqKCbSUAbfn?OCWi`i%0r94|^C*BvyvVHJlmeaIJ&wqKx8V-jS z*FaxMcq#CTiZd56CWgpY$X4z&L=4KJd5=JwhjEuqw6eI#7agw>s&st5;=>PRw{y)O zZpC7vijuF*QiUCS9Jk|iyqy{S8CZvF-RF7#=atDyzbMOFd)qW(Gpc|CYl3G+h~)yc zf4b?T&IhdM{rvGp>~*O#$G4`a@JH~KA0N89Qk`Uak%&J~_1*I18s7g}hJ?&5J#^F6 z;W${Q=JYOv&9~>>Dk&N}?91F7IhA!v)tQgy&<~qRc4Hc}2~XKK+uUtqtyJCgbg^%x zryp@qoNKPl7Np5xrhUb*wb0bKjRfHk=%G9E?Xe;0fYA@RMq#1)SKE;xffAu}!oijI zRJiCb5@d^OVYCQ$@1dWz8$O-dM!!T)znS6}bCoLA@5o{i{28aMH;xpoA*P;XW9kd` z4r^5Eg7mafk00@a`$cqQMOjEbzK!{Gw}dxDPbKyjNRDr9zsX=7H`v~6xm+;yYDSSi zP|xY3F1+LC$naK6t{(fZ@2_}R&cOb*;bo9HVqu_C&2D<+#dweT$dv@Qq66(VzIB@% zKfR`KYvNP82ZCG8(6cr$d>C0tdxK%ou$=aDb-7^AQ^VoHp@rCnq5+Qv-r`IJxHeG} z;DA})fHpXWp8GYUY#wYvGVo8X*DNWr%LJcM4;SKJ)b}sLtZ97v^q6gll`rwnDui?i zq9ITQ^Sp)XnfrLex(T_J>G6Lg5?s#Te-dAl(Vgu+meji7QlwmMXEoI8%M=Ti-cuWwPLMr15z0(gfO1CYu&44H10^M^W>L zBJ3eABp^vp^OeY6WIh0A1msAZxRzOtZtS)ZtTh`V-i_NzcDIg)v1a9>FFlKfSvYtd zb@3nFeM|y>QqMsD)are5#u;OW(oKG670O;-COPqAaLD-d(t?(F@o=Roq5RV4%!P@E z#ynAhCEt>9@@0sYDkqvwO{C+0gv~4brUv@)dXVKXSUR0uY{;5eyW*V9h_7HXW|?~P z-CeYAf@({Ia?)E{@9F)>4f#&5!_8q6q3BP2C%Ycuc9kUe5L@Ix>vsU^V1(Yu7Z#k3 z^5?nQ7;x;d^0E_k$H_0bg&Cw6=Qb&Vxsy*@_;oE*@~ONIt!um4UbOUEAxY@IekV3{ z#>SX3S&Uf2=gXMWp{UkBkt?LOGHMM)?`&|KU_&w)^;)z3Qs_E%o)?cLIqPZ)6&!Us zi z>z(p^@%JPAx@k{&dJN$GlySsz<#(nQoc&aJ{My>p7#vX~7Wgb3upa6+|eLO>$SAF8}+QAsq*G+{u?v?ZQ0hFDvy^8~Xk_+of*t^M&0` zy{<55F|*%D`Pk@r?80aqQx5)u(Xuk^#^)tzc^%*+YyA!9+(0SvsPdyUqPuM=vdZJ&b$csbfquuMA9-K#isNn!HJ;cUiVJwbZhQ*%K2j_=afB-?S7iKz znuh&(PQXhAu~3RpfVP=pR(lbtM%;zDCjveM%QnB39Q8WVA+7vn6t3vDoy%DC6#PE`2$V?t^quW7Z87N$>lM9kc2CK+=NR)rqbC^z)8;n%@m2JQG zhz@Mki2L)tzVnFAF6v|6mrLrGzk2mNVJd=&C<)1gXL@%>*;6)YqstS{^41+J+~0sl z&QUyXOEOTTt>{?B#t4}U(c;%DzP;~{SqpUeN_{M@?qk~qa zsfbPI@2qye>;=;bF68>^L^81LYN_beG#wL5HzLTDgd;p?!f1MjEJR7C^~GiTktwS+ z{$HC(^Q&yzgX7g446uRu^d51de=i3GK9b2qVY&N+7;US``I@h(}Is8#}yObu)D)w)Q15e%HbCQR9QH-Tzoo^6_`24*mMM zl{IL85i<~|XK>Ld$M3{wtaP-%?`=Uh<>P~@j+{r`aSPh)i&Dv9HW7o7j4xh}{NkYR zw(N-V`X9H=@`lv)n0M~Ip&HMs77bx5EhtcE3xi99DnM7HiWjWlg{j!qb34156JwJk z$K6ldIV!8#{$Uu-SJD?oFeAhJZB2BzzVP9J=3xU18?#8r$=P%+grOjP@~3>zBw^Ae zDvRU-yzgSYRq-DTynLnlB(){Ba+QXrrNnou*sxtVQgO4^eul=&-fq%tb87 zD#62xf$&_oEUd%D1ML-U%rFi~MAy^ht3Vs>8?knbdt;rlP!S89xGUb$!~QlB7EBpA zpEf0Mehnz2W#Y3SBcT;4l9vsCOI-ODx;#IP@w@;xd&Mcw6%JJ*O@eT5j z`%pN6?f0J7#%7FB@xU2!$JxH(t}vBWp8v7rUW$OQi-ZKTEOWRP&UZ}ip^*{4m+Czi zh=JYomAQ_MHREF=ooVf0uT^M-tuJ29fp}h#6gke#GEuu(4db-bPt<>Bmv9O@@Ua=e ztIkx-E2aWN=vo)$^sWdGpW&D8OHPWT&UY>#_m&P;4q1U;=XcDp@|;)C%1H=0A(Wjz z#>m42EpjM<6cpTidtXH*7_0cQpL*vx;(JZsRld{?SMt{Cm3zsumgh9##MCC&j4{V{zS^}Ao)9(Q)Q9dXV}M%ifOv%Img zeKO=r-MiW%$oF~FHCaxH4=@fPDsD!$sV z3xW7C=`ke~n!w*Gw6A>skzVitC*P%neDi}JTf?s$;@Y#VIHz9!bygmO?c>uEn}C|h z1BDoO{x@Rh(vyUJ1pQuiKsh3lE&l5z6LHflT37%#B=I~|-=V_vjwAc^txSQg=>Nv`GRCN@YSK*r6W5Q&knsM5DRYS zj!=74-invWQA|}E%;`V-ifk|tg$x+2U@wZjhn5I&0@1?CO0J``#rO^9vK1!xZtRy4 z!&?zp1M6=trFOmXH?zIRknuLTMX%=Zuh^Tn=!-t$#G7r(o|Ely`kB7OnMdKI@@nZH zW!wFu59Rhx0|N3K)$`r?;21i#F?!?Ke5$1U{mWFhzouZL^jlN$VqWyQinU^^%tVj( z@?>~162;mCvm_psp9T*vE5t)FC|l#9!f~iyRJ<%Q#5Z2nty}O@DgZUjT<`t(bH9s_@`Jb;Z zG*K|h(d(3U0UyYoyU_~bd$t_R^}XZAC1G)&v#c-V{vAGBBT6qdZ>FJ1OJ!2tT>6bEJO0?kQn``9sx3svhgy{_2F|8dL{wX z@ki*k-hS{ z&llBp7Q1vv}JQJ)Uxuj zMA+!UV;TnY#u#bYbIL-WW&3$M<=&liUoy zb>`NaONZcQ0QB9-vuA8%M0;`M6AbjV-`!qYfIBn*mcuF-_iX__YzEk-p}%DnFP2oi zxUk?67#P@S3H2PmYtd7Wd!3&h_{lxFk}DCLaZ!a{gS~|M8-l%X{y> zH&*561Dyc$Rp{)&<9wp@;0p9tK-YYTy?FW(LV$&gG6&;^K$ux_O#*3LO;iW+Ttq9d4$ zZ7;WxdQzlYhf(AQcedx;t`=?klCxki2-wwFR8b-H?8H?f3>rhnlOJm$s;Ec-6E~;R zPXwKOQbeh-lf!`vaR!7z)21>NH_J~x`nh{8#pSLPN*vsuSe+Ty?f7R}y1%ile#ZXx z;EFEXTiJ7D>oB;Kx^z4hG+0oc$G8J1q5H?j5@!&vG?^HmIOUbJw%GgG@YvC*Tk395 z_S-Kr-REph+X{B1I1vyLzBsaqf2>8Igsc3C<^S;)E+W`8%yL|S$*3{lto1jIe(^$Q zV;5k8#XYEvjDdOMrgo)gSz0<{irKps*Ue4Ody$+=8w#Qwzx?K)=GN%*QHxAP|4ojS zFCHk9_o-hhSmA%(m<2>5=(6BaYFLv31?cBjfp_oTh3pa^KAc&68>Tm7V&1;38O*Dx ztLrSDZF_$Q2$bUb`U!hCcMtxEhmS9(sHne2H5Qkbkbna`N89`(goI*f7WM#q^4BR7 zCqj@?j_$Isuvo07t_blw`Cw>`$Ges$1@VDO;v&gA0?~vPUSdH(K~eDzqM|$U@{eGE zbn%Q~XF5%rA?K|#$3A3d&zK&A<}(cB#Rvgu0rYDod2;8-z{Lifl+aLvHRZv7wZ7T8`ebZuEH2^W>P?K6mX@f5#DP6Prn2&bHDyo`gjk(r zVQHAXYKDb{br>N!$;io7N;@YJS@U|Vd!=>-KsBaKhwBSd6;oQ$HLhWD$3(nOfO$m$k28P#C(@Cr3> zzp*i(76t&d*_tvijK3P@VhnMQUZ(cv>H+yEBgp>Tx7TtuB07FrL;r}dEYZ``ll16O z?3f)ZmG^fU*x89Nvj1OmUmi~N+P1w^N}5O`5{gvHkZBnrL=#P-mJE^1gpe^6rHFO| znX*w*=6NQ{R+&;}7D-X&A@k6C-rCRc?&o-V-{brK`Hs(V>}Ri@t+jsZ_q*@=x~}s& zuk%EwW?;6*zU?EjyO@N8jK=8x?3VW~()|2?iB9Z0TxB%kk`rN<-S0Am;}Ik3X^ovT zYT%~H@#h%)8`iZSEj(&JIWcis z#mS<-@aP46P)SM2sC$BG#g*{h^tO;WH?wbN9Xbn-szkBwc=*ozr<>^gp@EZhyPRD! z)92^tl7U*I3b-}Iwi+!tNLbk1Uqa`ZE}jwp#?^5%=i~b5^%^|odMAIXTfIEL`hbkK zUyFg*U5c z30FR3v`ThlIh-baKn>rB)?x-t5^689BjtM@Nm#P)of%Y$wVxjAQvx%Up+>X6)0(@R zmTbVtuO8|R+KaP`V{q||n!0v&d)>ZEqZ2$~YU+7sJWK7KJ9J*=1Ce6FZs_Gx;e zcqqwJWSgxy(Z}J5sFVx8P_kBBxNgKjbc5Q&p#LS;W5%telG{d0#AiRpWta;Z+j3p_ zC$dj6`X;oD;`iiruhtwn@M5P{!fUXC;_8A1>}Jpq6|wztfbtTJ;&~m4fIjudvbVs< zY2<8nH2`~-npthB>=xJ`{QT6Rvn|vQClsv81Uy+Hs~K)LrL4}Mb&;wn%pB2IUwYw6 zZfW<2n!mQHF4niGIvw)$&etQAuj2j*+5BC;pJIH{2%YF2oxqR~bGtqV=oBJKde+ov zShN+;tr)V2(YV6Txqf<&=H`*~k1IB|@Nf?N)NOthpdDHI_8Rk6m8<~{{&~2s&y9Is zLD%kzS!Wmi$8+xTFP5w2#@QPbN_`2?X#8nwn?jy}@ zA``T37tNCpf)x6gG>P^ltmg0DyLWA8LRN9fF3U}wta;^IY#P}gZ0){Zk`{zF9I@{q zRNY!h@^*`?K(j@}e&l@L)6q zxyx8EWr16ioe}*BjbiP$%M!8I%WD| zJRKH{eqp=!d-$^-FWP&oIfz3;&#)M+otGKQdzRj^-WclfEU|xOeDu(*(^Ug+2{OlP zt7@gAaH5%w^_x#+^;Ic{oaK~3M_RKW_X-s@&3>wv@fB&0;@iGR$=F_y3~QI`~;wwzFy`=~N-{fNA_Uw!>1Q`?~io*k5dR#D3O*Nf9nl#yf2yJ>f; z=YIV5WQ$Q;Y1M-ciy*uHefH5#J$}5YNgvw#)-vn6>TPn*yRrcqE%+Ix^KatY0)*zjQ22vSy}ll=G@#~Z{}gk z(F}1uW3!F_aWKt84PRKEh7}ogvvEZ3H}I5K|59J+))2t_ro;H%;A_WeLH~4izW$BX ztRh9UMH4SjJ=A@vK91V~d`h6Yp8Irj3ae(wy*=s6f3wZeeYEv1Iwo^7g4WlteUHF) z+#4%3A(M0m@%={WtmAG4Y+q|t%2Ku^^xh~~8d33>)-glnvhx`Q24&(%qXojOnR*XAxpG*5 z1WCqzD*I>mr^3weq+N8U;cxaMs^@rvi(ywUdB%jT`tVS*_g!&{Wl%tAeuvWF>r-@^ zYYUFv;;giHql|k8)+6Eo2FXmUM^M8%>S>p+JX;jfl&91`r?%LYLEz^_g8g-$$14C$E|LK-hc+xL% zS^Or~X9)z0b5OBGD;+D<5vW7$@)vu;O6NjXKL~S7)Hg>+k_yth8l=}>T%9LcHf;Lp zo=A>r+{eeN@h5oswl7Bq|NU+apWPz+D!3Gg`+|2&{D^OaM~oV~##@m0TB zboR~temt3y0^hNarzceVbRT6)$a*16{{ zOZxy69e+KN(xbIC-HYpkR@s)`QqR&9$m;%~hEj{4%pnzlkLsD0G=H;y5i1Kx+8UOQBq=d=ch@8X)EN<;IU zk^bvvL4}%=a zGeqx1bU^13zu!Gwg3>{3bU6`|>Ya6~-SOivQ@X6~4^{TP^m`0$cdAnapB?ZY-f_Lw zeZF)Jb9rT1Ch&68;f(fKHPZki9mDH`Z`SGr(=#%jJf+_6c$EInjw`4j=(9Pk+In!$ z6D0sGv74@nCq7|5`tu^iIzj%%_Vs-2W6SOzi%d+;)k`j5?^zk}IbW?bxkEXkR(f;# zYU|d9^#x{C*&;#Ysm8=3zI|u`SFW(PtmKcp6J;qg!)E2$j%x<2r2S%D(qFxNa?x|i z1SKZ_iM_cqg9In_j_(X}NXO)hhnK(Rw4%)**e6aJBCJk(*4^Ezrg2wDQ|_XOd*c=6 z0ZVDW*~YH^b8#^epL;f)A&joYj!de#EW6xgT-m+WX5`;Py7Jff9rP7M4lu3qC^ET5 zD~U}eu$MQDW7&awhn{MD>TZ=jTN}G+?np(cONgJLU3az<=N(0mlE=Dk`L3ul=zhQT zlHbZ}2bsQ^9|3LVHkuV+#3p;shki37v>*5oI|;g+RQX3k;3?m6cX>a(v9N0g8?2hQ zOS62u>G*P@z$T#jOpoZQwEHaWLeEF%S4b;}0@SUdqA9h0^qqSbk<)&oF*^JH^PTMyV*8} zO|dUBmop#aAR&#{8clA_$l45x;N|F5S#I`Xt?%E$l4P*r0-V49iJXvRrBH=hWA9#nwPoq9uj-gFP< z#Q0)>T?BTe_wBo+k)&zp=yW%6_G{~l|7A;2pTxv4Q82+<6E|x=Pf?)tUtQ!e-!6M> zuXg!xx|p#o=Wp%~a-w^Rzv3}sBsk{WZvvx|NHc&nn*;me4(;g|k9iJ(vXw7g{?|SG z!ZNS+fbI}Du3AL7y1MF%u@h)WOOla-mkbmDA|<0d5in1zP|0g>~#v>C&%;592n9MgvqM10$URi8{M;r;BX7?Cvj9s0E`i*uhxKdyqY z(%Qu<*cZXy*z@L1!%4rU=ps105Q_uoO&mLWRxmNy%4%}>>m%WF3y{2$ z=|?U(XJXz8^~B^x2~gpI@a_lp3QsE=3_eHZ<+U)zJIMQWwuDxBT=I*eN`B3A6i<)k zQ0Q-ed3E6gDqLZc_uNc8$4;Ma__lYXtBN3!Thl7-#KgNWxy~Zz{3A(rY<%3hkKfrd z`im@NQe@{QI_BMPA^aKz!OX&+b22}i^Ixya-KJ{i4xztnmykb3BUTyM z%4Fce28jI(YGz>P_&s-BaOwdvwZj*FAG$PiQ$0emqctaq6fHC%%o-EG*drnUm!vlp zOm=dtS+nL72G3RCOICo{*7XGo#_<>{CYK-Rk_t|ZYEEBz?G1xURQ2%BkI#;-hpg%f ztMH(p?bohddkvogM#>O|FEebH$z6}4T0=*R!UB8oKWap)KATjQ`fXxkzoU|eCel4x z=b7Ls$EXBMnqyilQPbpMmyKB0_LI@xa6CIF8YEcew^@ES#k<63eWvYBdUzC74_*gUP0qyfye1=TO)JHk6X}eYP!$}or`T0;u%tw0=V#uNji-{)@LqMIs+m+(bQeZ zS&_|mrR?oc=q7r?u1|b%D2Y={pS>ggIFQ9SH!;{AU&C8fQxp2!iL+v|!(aY}zyB(z zV${9cHGHH(E*v)VH_%OKuhX`+xAl>|9|djj8g60X_b-+R!VH80V?5eZ%g3*)Lo+ck zPb_zKbOCExKpDhvLZ-?`S#=GK2Nfx>)gw!4)rbOu8wjt}@6ho3~41ditXMdV#m;R&;3w1qur?na?j`6IM&M zT)a+nu#G11Z7l7-S4^_!xJIO;oWQ#t&x2HpA`=hXVDg7o*VR=z0c#^NgRH<8*T5@< zMJWHrJ*K5gS>;^D);Q-EJk&ka{IQ9ucd>|(S6KL1nt8ptD~1*fFn9O4J2r8hSvsw^ zt+4R#Ukgvff${m?;oUYTdgwQOL*Xc-ib=imR9(oo!?E-IkGaElDqnq}j}f=yy*#Tb;8R%6X(pVT|7UDrgd z|5_24^sYR6dvo@JWe0>t0KDDCc%bK4Uc^%x4T^ncGa$y~;?$=r)&|6Fh#e&-5q(*h4NKU9J< z@HIYQKNK{)&=J7NWM5ZyaarY?DFD8aK=C5A5_Kcv;>yi7Eqg{}_`ApgaFz0a?<8i%9fg_HE)Jyl&$JUNOp;P~0Iy|33f z-w5cG#ZnZ3HBPJ%dLF!DVj8kz4ThB#FSN}~EBWsqB!4O{Emftk?09&nJd}EJ`3B*a zJ6-BHKAf(DP6KhO!bUj`^|IzT|J%1$!}ry@Vi*IeKA484=I8e#kHmvxJZ~8K(C(!B z=7eH|^FxL1vlOD`uGT7v8E&+9h)gyMyy23PgnxYh_zMw-Eg>~MzCVtSDtSZcb@;~* zp*`w^^%6~ zK(Rm7GNY6R3N zGdWtY9b{KA*kzR-2e&00bLj6|*-XoNrB-%9tr`xR9LP;cPNhh& z-^qdtXfkFriB~EH+pf}Q@lAbJa7di4pyoqG29mMuI5o`jZ{!A%+T7H%vj4~QvD_Sn z8iy~Pod(d0qIh6q)tTv_dydnXkwRv_@EU}Jl@t)+_Zb-QDk>?F?oI40?ihtaB#qIy zXnE1+xPDi~Mv7JbsOHvf+lYPw(TgGNV-oD4R7Bx-7EypKnzETznE?-wuLndLhPbGpc{Skd%3{`$9?(lgXT*uO=> z`i56P;6O~R8AP|!Z@^a=oDrWK$HvCiQ{hZjZ!D==IcoS9nAQ4d&$0un_ZU~Mp(sOuvmx8= zS!_s0@;_#<0CWAS!Y-Rv3UcSSz-B>^;*BOdS-V=2rH21b>-trJ4R(f}QE*O1v|mbr zF{3g>v*i=4{7Mb}jd1s?%xUkVrh5E1;V(D#NGp6I<=+X?|0?M4$sdS)-*?;bIySw< zzxyiX*#U^33c4LI4tkBnz(9fBlrj?MUaR#m0Ib(_QM>R_mf7x~oxXpSV`p#1?mT_Z zeCTt@Xr;)>@ogd^)wOE&=Ks#c`n&oWp`y+4s}#E_phKtpU6p|u`rl>g|I1fqT9Tj@ zczeqRf@Xk(FUhV;oy?#j>jq%(ts!{}T$=f`B>laEz2(5WKLPndb8gn~!81tx_KwL#qvcAdAwnZYdAZQN-yBp{vD5 zWrr4FOr4~YL2Tttn4Y*=jdthi0e{csRqO}{IeMr8%awRqGUu% z>JinBA8auln($*Gh?Enh2<+$~NVeqUP?fEs`tp2kd3S?GL0C?#;NF5H0#Z|Dts3ff znLQWEJx)A-t!Dl#Z1)E*Kuo4E%?oxkC<1qXDM?*S8B`UeK3uUOlyaFQ9+QIR0;!l|4 zIN(S07hqqLnS0c*uQ|&ms$wt5bTIMcQSsxvg;Q{1YKoUi-AFtGk=HlsON{luil0t} zq*3nlS`>u0wmnwBNk9r|1ZCt#l*GJY<{dkCT4uD7w@a=y6Nj#iuvv`&k!o`YH-=~c zR8AL9jrI8uS`FSG=7LDlNH05h#<_dWmy`P8!cR!uuZ2LpGCIi+Ot_Bn{s`CsC>d?c z{OqgjRMmn+pBA;qDqyl~_`F}%nOR%^=wV7vb5ig#y-MP#0q2!rE+LZ+V-q!r)ej5&HA@~XFj}KVV zr{y@NsXtqglomsj%?3iZ@O{qldd}js#IN{}vSo1g#Su_}1+^hq#dY};1G2ve=nG-6 zp9xoRJzhKWv;5D=Rm3b1>U>3J;V9Z%Au0O}`bp$T!+U@vFC(256DSM@5lud!c1Ui% z0c9=13cNg6v?M+NrRk?I$5zv%**4da6=aJ-@#s=t(>&|}PhukK22SIO!r3tnB0QKo zop3sN0YrwB!KxE+{$YXxP#>R>1ug}#mOvg^^#@Zt$yrhFrRQ3~w8bINx;bNo;a|SQ z*A*zsMF>(7?JOWZukl#D;KBY0=b|TgkG1Z4u0xFdC?GXXoq|yU1M*ekMu4-2NDqR* z6@^q`G{YW@KTUs>40n*bhV;Q-M#QQ`%AzHU_3G8D8-(>K;A16Ox9!ctRwKt`5(-4@ z!^9#Bk{&@LfyQMG{hd<(&6&BDc=O%)KTd>7*%S{mq=7ewBJic5zub+)f+=RAl#6&> zQ2@?p09QzGFguaG1g-NGaq&PQ(E-(*)TTKigbCkHXPBX(NL7s2?0_cV1oGM;l%VGT zb7_u;BNwxmav6)O6)7)l9@zuBWo&H+Ibm@Fuj7;geq;mMMh85o=S_5wn+np>nDEqL zZYDa5GoF+Mf7bWd6fv$R@&Hn9Q(_X9O`dJ;(jQ2X9+6HRrZ6bF7drLS%E<=9i z|L)x(a@p{SSHkWjeBI?766F{4MyN7)h9IR$WLMzZ?ts^QU0l6(J<;bPQmKg3m%sd> zYT-UmF$8pCA%$>9L+mk2O7Xx7G(h$a*np@$02Bh*_9m#UoOq_<>x6WDwXL#CBD!J$ zNPui=>`2Epw_tt+8BSnaEuF5uzP@RVKamBOB8&7u3d@Bc^;D^kXV~nT_ZzR(Y;25_ zWN1%@*n?!tdg$p13JZv2$wre!*O!!_y0yp<5)fd)3Ft-PCZ0gC_VAiU6l&QXZ#*CEfM?I1Eu--A@a((PU2~B91G%4AH{_km7!-Wj#Sc+fpg5C3D|8&tZSU#X znMR8zu{XZX==^zakgt|f46ukbdsKWk@KBg2pOJ&6(K2xW)r-N%KMI=q&|4V*}-{-09NN zQe426Ew9X++^BWq(-sGm3fXun^R1Cb#|LzEcHV}v2!jGKyVV@{3RLVC5_tv%SDZbX z)3Z2~7I+|Xf5sO~aVkI-=?ww&x@KKf-Hy*CK7Dhu2aX)(0F=A?&Pil8S9i6b0LPin49J~4 zBqmUg;~A=Ejcl3y1dA`(Gv=|Y0=^Z<-YgZwjg}4eqMSqmkQa@xzMS_k5 zTs?*bc7uqQ#BYYn%wzW{Q*49|f^fR{M$h%1r$M#lwvUg9{!0oWjcW#8hxHrF(Y=$H zdEqL|DGzid*^on97bK05BTm*+fAy>^?iHB|F|?N026x zZV=Kx5&5Nj0zb_me4C662N8&bJ&hl7)+ik0Qb@9`a=u49%QHbIXDuS4rdKP_fMoj~ zP1M))&JSvTjxEg2)(;Xhy+;R*D#e0`24AH>`m_WhjzjKrkdP9dlHK+3&C=H=_dbED zb#?bW{ZvS=@(KzrMz@J{o01-NO1e1oEzW2bHa5dlcK{XNpox!Fj{sBiDH%>ZD>v`8c>BD-j&Iwx zB|htR6>ssEy#{SAHu4o8Y(Gg%%_*bd1Aa|#fdX*-KG{$;*GumGWk0o9`rGq!VPRL6 zCN`#-exy*a$x@e#-46-z!P8ZGu0g9S8^!{jFDRkUY+2xHmVjiFU~LrrNo%_xAwGX^ zZ<9;SQ@foCps-1K86hN3ijD_?fkZ-3GcZcp2kFDttg+qqxAB_iL1U%K6H7i4x16HC zG0PCU6%7zywW@Y3c3~VGWjBpox~JD=Cnde_)|H1L4oPWOs7G!Bv7I<6VpmH+CmZ+h z2JFpWm6k5SbM~iST@M}fU6vRscgrtL$aRBgYi$bjb#t481GO|YdFAEXqU$Syz>(*$ z@KKCVfQ}g;@LkRDp3=T8I>LRx?_E{Z5=yR|)!37#PZ=o0z#(@$vDO~tM2OM;{rh2S z??H=Kxp*;2sjBfbKZV>yWR|5VmO2pLO4-O#f_xTyXWysW;u473IM$ou^^uzNwEEYf z9YYx}$<;xW z0?|pJ$93SaT&R#guyKUC286Hy2~7Mf@=$U4j`#2(PV?}NEV(1udU}9zXxCb_=n$fS z-DbQSx+S|5Jy$cf^86isB*P&qiKrP8wQEw8ps<2#JUGoYPN?cmL+Oo_$=kwRSC<6}m9CI%IX3WegT2uHxWxLXgwC-hrd1pc ztuy=do_(aIKRkkIju?#>(PHV1-76yvMT3Zj6p_6I63>Yl z&%rla{7+}hq6!rT)trcK5fS(w9}Y)A(5%;BCn#{ggcrWg;y$cQgv(p!tgGG`X2gZ+zLa9JHzjadt?2pTz2d?V72n zDKX)EkNE$LtGTLb71E6&q}oHT*^cV>HY8U_t3yWBW2!J~aAd^XiY*?u3~Bd9bbuhq z8FA9@%x1gez25@0lv~NfdiF!&(?;Z){rvvIs7~*gx-=5kD8v;aNPZC|i7VPnJzRaA;`HBi>P+?QV8>;BE^h_iDJ{cGoTH6&9? zfp^nAv$bkkl#Kkd!#XW7;y}tnfbpE@;THX&S>-tRX&>_YoCS9@#h# zDM{I?u{?g~4Rjsd6Ge~741b@@7ies31mIc($xc!bKY8+m;$h@`3#e&P|JRq58zR`G z0u9l+PIbNf9=BmvJuZ~2yy;LP+cG9HA}UIbaIW^VnOn6TX?uC<=|Wgl+6VIKgXm1!_{7qWl7 zW0z_qGYypHCr4Jk`EYj$*JTR)!^!F;0<@^-Yjfj4xr z`z|iQ?`DeTNb2Mg-igPDhO9dWQu7 zPfws_A=U-o({%Gjo@?yL1Kx{?m#pV6UYHG|g8asStnIv!QAAo=&4qmRXQ^i+iQ;^2 z=>*b4h^Xs2Kc|mwQxBczlOwjz0I;&O}m5+L<%U@2dK5my-hQ!SS{l2ncOmP7SY_x6EIgB|ZGG?L31PG<*LqHD6 zWTyKhLs(_WQBBY(DzCIcaLJm#VHEON8>G5YgNb3ofafJW= z)Ac`HJDu#pVFVa5K82k3rnq^XLTv5lt4p|&a(@z;c^npbNHQg^$52C@^kb%OpW&7E z@43Lj!)tb#>&+AquwCGBY{x?bD13j84zWrp&mV_xPGi`fKD-GFxCA&Uym7m|i9R=a zMa?OF*r%4_TIbwG-Zq|WleJQ08p2auhQyaa0TXsU$QKn`Y|D0iMz)j&Si|(g)>yal zkv}WY^AmV@2s?b0%||uKTdZ4DPIs2L!nlXC^00Sj)k4hrq1^GuJXz)!5&SLEOa#z` zdIhC6=HZM|+ptn${GQwkJfQv-*2Qf^AZ9PcbEahgy_Avd3XT+q$s2c0W{1klpG7%i zv|Al3^pAV@cu4_b1DJ=vwCx=oTPWT*u9xz7BC+%(dAJuXKBIhA0=Q#HII4MOiUAH( ziNa_%YDdcA;Noq~$WfH@dR=GMZl_PVG7a6pL=A`xfH3 ztnBPNDBf9FQZ_i;i8IJ8)O3XLWK+7yQA+Hlo*TdnG{ehMEP*YMh5(830sst6O-rHp zyc4wfGCSmx0pp*6sTz$xx>K>xiQKwUE|()D$1^~TG61h4Kq6FL)y%Hz>Ka9FY+ssf zKM<0v@6jQzp%W?CRfLhpKCTfoZ&)BSkOZ5I@Y2=ukqIxQ6d1l@CBabCG>@|nM^Dc zBDy@9!Qqhw8)nNo$sgkx3DM;XsR)1!3g{rdsJ6UyfQiWJoT%8&t;T7MA0OTSxWA~%-B5z#+#LHsO+q_if10%^Km90i% z1NfR75flEyYoJ`eh7b`dmi(2oSsFA9EfHX*7zE^Si9M~bOxIu`n-arFxleQe7J8!}!c%9v5 zdGbnSV0gF?QM<2(7YdfVS7Bk{xBA3zVq}9(oL9w|{Wh({>5hQ`A?ML*I>O%^D4~~4eTyPx@AZXItkqOf z8{sF|0w^-miWMb*`g*#f#SR0@CMepa?;jXRDWpT^3p zxvl>F2`(FZQ|@cIOt;`Fhi&C=J0Qr3X!Kt!1*Zqk5iA5zxOCx`Ys^f)i|5VpJ^TeF z+35VcJ&sCOy0wgN-MT@BtNgKU{9J(V=m@>~_jsa)RnbLJ+dx*~;&bqkzd&}Bi{?%? z_M^Fox%`t8>vBzZFMcDR{QOLCw_J}~Z*7JpK91khq1lZ-f?0t);MYg-BHbk3Q8M(S zy!`)ntH_vSH|Fce$;b+Baxgv)5Iw38e&hD-$FX8ABfIN^ zawaBc9%ajGA-)O)vv}bveK^D-`ifA zmRzhFuJy-3zO}bU>zIBHKjZD{bm`KiSsEhw(}|47si^z{0tnz6AMTtt82WI}b?Gz9 zVz+7h=jpGn1lWB!9fi!lvtGJ<`E^BJy#b@uqg$H=2&Yvf@v$KN-q43^aRWF(?wCeTy{EQ{ZVWPQp%5k!!tE*8G9)f;HPGUd%d?=|cfQY-iHMRHQ`doh?yayvZ zAKWTd)T!qC+nc!#6N+#>Zi(HM_9u6Sd$1^xv9YnCtg^X_m@J*wnCY<4P~XMT2BZE` zCzgKo>(_~Oy*G_xJmyLQ9zVXPm?~p#e(vnGC|{V_lscC8W2&kDt) zXJ)QycyBBixNVY3?J&l|GGEG{_AxKe+*)Z@I-?Mt3@iQ;Au;i4>A*?Tm{Y3i>K;~C zCz@l=Am50E`WQuMN#4R@BS)qlkV-CSxHQLzkRxv`Fj?Wu3I{)c6)Ng7H*-_+xUQ=~ z;IvqzQmm+|`_5v6gl@y5{R1y!v$OXvWmQesRBpkb~pe7X11+X7Bq=rPxjjsjz7e z)Al#lRjysTmN&68)14RH-;$+Mmb|jELgkYxG~k-_y|r~H*Gg42!m(LoBEOguxjS6* z=t;TB>BO7W?4g$~(RB?}cwiwgabi<^KCoV;oM(F;Me2E<#3!Y{q@Zy4{rmUm+z8W> z^m(oKfBN#JhO?;e{&I^HL)G3E`;)-Hu-MojIeNE4$ihUt&j^f;@ZGXo=P0eq7iEzF z4rcztY3yS9}w{yIA-Jd^y z&dAM8s^_&z>ApS}R8w^zzIoD;mX}LEm|?>BPl5< zT{#9gXO-fPAP3bD%`shp3xav3wj~gl~_lao)hi39xoVDgZ+`}ne z?bPD++_2qr@tSNsB@zvh*r+q(cJcTNtsJjyX9!S4=qTL1%Z83Zo~e?2_(NFK4bvU- z6&~v&rPEn5US1L-BO?pd_zXi`xkm7qA7JbrCnq!axsC?uX5U~pu6cMEUT( zKjrFibR<3ID>N!SOB$Swjg3!8xbxfF+b6V7Eqvu`(I2ezVr65iey5slJCzcNZB~AH z`yM|1Lf2kOq;3raVJYN;j!XX|cn?M?DF*b_OB`6xJp#K&(fdVYfP9*?dd{Uw$>Mrh z(%!HjmqfEG)?Q(pw6m|><)@y4(O=gvg}a2q0z>3AGu5cYoHOp^b&GdK3)>|glD?v- zxaQ7*VGo5x3UB{BTgBMav~e2!PlK4_WGJ)3UK#db>C(BlU{J# z9&w_}>*iRUY?Hxe?1!QMxOHW_c$Qq-RN4_aZ z?S7vrZDtQek{h|ozE02gY;MC~g{!4Uz&woRHp8rq4UTTlSIy^o_7&TaBMRA=t70y5 zD;jap(d?%9QabmJkdj6^&kyvELpn}(SNE-RDwL0DZ zf|8PQI5plI8|kxapqs>G$2Y98v9Z}_?b*X`d~P``OaS6>B{vMGR8j zAyRvxJ_ET%{(ZN<55gWZDN?$AJ%VVuBVE0WQw-8Ef-v~(@JjCQEDN^FoF^kgL1bF( zd(BMO$=Ck2Lm#l>J8h=S1C}=x^g6Mqv!85@%=_$%If~Me(2EDaZ4GC83WQx37#&4* z0{4a0uUu6Z&dbX)DA2@0ga$qHw39uyx%v2R4rCPME;`9~9d z@AiXibtkV~o$dDnk0%~XN8GYeM|9TdC@G!Zzljsn3z_X1NRkWrBDFr-TU56zR;3}l z_+_zONh;{mC;9K4orX(ep92B|YXKt!LyV^1hxOc-Wq6G2as9!3?XLCOgfbrvXMSB; zN*yg|Rg{X)DCs(k?%jY2wV$SfKlOjtabrLOCC<^!ii+_G8+chwF#B$9~Ua%p=` zE)RYZXU9n!g`_qQu;Z|u zJ4YzvPlDUp75#I{)|qD+R)!&3T=F!U30Qo> z5Pr#JxAyBoSO^ujE(fXH$d_T;p*WAZF#qX|2C2Q_!oKbj6^9u03<2sOJu$M=rQn%PHSixNVL{zHXnop|0*9$W=;NHa{APzI^$z(7@m`gu>};>jA)KlY>=Ny=z|EYjtNLweLd;!;coSkyTbE z1B{nz+(;$9@Bs(b9VvpKiJ&Exo{Ws`%)&YX<&^aGm*;W0%NMZGa0jRpXMblxN~y<# zSzvQxG=z+fE~se0ok(hbhtGR&bHW6(Dwt6l#cQ+xRjSdK=WN36E39)B>jNf57&Cs! zb?=^m)wzBeJvCyZYUp}Ky1JO0duZ z)8SZ`0g*cOOP9X8qk!Oh_1ywZ@y)Sk2sM7G&va%Hc3_j|3&h@rOkgL=x-Q#`BW2X)5nJUm$WN_o9&v%SY*G1Xt?u6XFsEP{Xb*KD^lF3>n20mXsX?r`M1q17KxC2}XYG7_a+^+1HnR_%wo+ z(uRhKQhJhPVe01|C$#~?pez;<7IqJk%*fl+xEe?;{XcgBEh~BZh3#L0jq?$$CD6~< zF{*#Ra!!l20Ri`kvLR-YDYtF_7}w{gR@$tB_#@eR zo#nLoaWrnApD?8^BKCu?$TlCU1H*xSKCz$??!Uj9t@Pd5S#IGq{z4Js_T#0zyu38L zRAOSHErgg+C`zQAoSgD{x%4V&0iTNiWIqbT1e89bP%GHj(IDuacym444+`Z;N73Yz z6g233YHn8B8vpeK1t(`KkHrGhVFbB+5{Ls)r=Jg_qE1jyQ5iz@l$M?@1JQF4peoau zGj&#F7+nuyQt<@@N}*<{eNX1IXAM_>c0hq3ovmAuW70(Zv98XIb{?R|2goPNT3UhL zyIZe)_V-Xc4>cGrq_*+K$k7;wX0p|#UvK>I?mF%mptrUpIns|GKNdG}b8^-Jzzq_x z=p2Hm+yJ{<&#k*NQ;XMiK|ig-oI|(#M5K=MNhG1LkP1zVXjDQY7esL9UQ;V8PWP3` zdl1OQwQIK#4>HBEwT!xmv{oe3=kL^ z`X~F#ippnT>s6!G48VLt_~woD=sCn$m=+ygNHrl4;7N=6owd??=&7j*%ldI(}pK@F(_w&Qsfyx^3Rd{yR&9c43!So1?;1To@ z6E6oYOeTeVX{6%RJcJYjM(%$ihulc-D28%o0oEeQd09DOO_eXX0;{ApE5~;E@@3=$ zd!l!JOr1feA&)6_Th*B6cn=S)gH#;K>A9S-;(CX=#zWco7>={Eu9Y)2Fc^_MoYH$;2bbsj$Jk zATc4~!?b9Y2*lc2!(7*lW8~zg_q8G8gol%7Z$AkM@z>49M!Jv3 z1r#lW+1pSs`l+Qq0vK*>orQ6FD$4{x5lP6%_&V*?cP`>ebII%1SU~9Mu2UX6#|1Z@6RQ_m{LPHtUQUH75Vx+b4sJw469^d>k-l&N zD?=^4K~ywWaStyO;4OeF-Svp)&za-J8bTQSi^|4{@gD5#yzjP@1(F2g1qJnm6qRa| zyi-zAgVUmwF^y0mS8|p^?CM?*&NDShSgbHZi{-ZIRba31TQ}CLEd@RLBbT*bFu&~< zBUD_~ww{upgPaE#3~7pQMC0(4E7+|YmPON?ds&`tN@a140|V{N4x(qy;8F*@sato1 z7lBxX@cVG3cbF%?d4p}XBkk;+?r|Ek?r31}8q@2j-7@}SpdE5NL{Qw;Er;&SIO{2G zXD_A5=g$+evYL%zj}5jr74*a1=OkvQOJ=s>*4DZY9s05S*^Mi3!}AOPzbcE1TcHm1K-fJnOgimra_=iC0oQEg7%fGF7;+IkwXupOwJI=rTVLw7EP{ z))dWummI~ro5x9{_i$QO>?XuZboR|k_lC`^wI-aKt(4S$2kiou3z)~j9p;x66-g@h z_dIr>*zmiOQUg2Bwi@?1f>3d2_|jMxV?mZ{^6otkvEf?0Bpo2akCk5A2)}pP@Q&Ir zkTa7|8#XxOlh8^-WEfx7YR3v*j*cl@I+DEHYcf$(KgRI&HmwOK?81LG4Qx)k9?j0o zOup|ddMREIur3r?_XBJp)dyM{Ab7*r=V#+uzA;5d^S@hVF2A6eusWXATaceQohh2t z`zz_-K1g6^)FGx5r9hz&B=elR?Pn2b0DZnM=1pC^uMTM+H{)Q8T_>Fw8_O@&(bm>( z?XRRJCm&hkVBW-cpz^={YYYDyDq{2-Mbn7n5o^*o95nck`RBx59)BFOj89BGCO9bK z^{yB90We0JuT7R1esGZF{qGloXd_(x!s*8G&@*SwbX9tZA)i{#`uX`8&UED>)bak} zZIBFdoo6+X4+0qN(Za7HyLHF)TvxPz0EZ6+A2wR;YU1kQ9t3XX-qtLlPyJ;sXvMVN zL$|cIyUlA*bLcw;gC?44Uo4z4;}G#B0?1k@r^KOCdMi#3a+8*I39fS)-DpFI9KhiI zH4&>GeyIBO_xE%7qz6ZQ)2!D{jdbRdB+f54ZlzZx0TGIuMhALElACgiX(oyAG zw;lq@A1&;)u7w#7d+`F^3=e|5J|H;TgFF!8Y213ZHQ~YmA&*b*ilFJ6t9;=iGc&V3 zB-Bq3*IhdefE~)QEn7Sx+j2hj}7|lOPoG^8qGC^(3DuxuVJAUv^;_0M_|_>HXa%D zTqXt(&I5?WaA|DEJ^22vxhD&E}~q$qQ~}Cu98EM+V-E>Y%mobF3`o< z&kwnJfVRHV7r;**e0hnP1ezfSpQXe9ex*?6jTip$aYzWM<1x`ge_vbzMDk0Ib+i9p zKVf5V=GUd;b9|ZOArGA5=H_l~B5?oP7QD}CF;H_wGPig3p7lll4}VFUEM4z^Q2zO_ zhyS^ay+NK>sA*xsH^a-xl84yNO5{`Pdf@y63qM;r;|tQW$z87?MsD0NxR6ys^73RG z$LVV9a8C+)diu$;js$-`*Tj$Umz?&Clecc#$i#KuU+KEp!rArS1WQ5kaZnKP-$%z` z`5dQO_Hz2qiWaGt`i-wJ`oD149{F3+MbW{uWyz`}1GvK5jEqabf`2Z*or!QOFxt=zR!N|_5clodHw1yaPil*{K?4F< zHS!Cahd48S?I5&v8GH8an+hOUywZ~wLjIf+G&nTDI#Yp|*wfP^EyOg*Yibu&@Gm0# zm5UA+X59X_i1}yThAI8+tNeS`NCBz2K$XSOd;fjEr}|CZCN7LEmKRd$p2&LpCXn`}bbhZj2Iww8#x*i#i#iqNITzA9`d` zCL<{BRmU1(xAi%*7iXo04??0yLQ(7Aw*Dcb<_M~E%%C4k~@K*nl+L0Fak}OC(4_9?n?SxYt6kCzsT`h|o z)v?x&tGzZ&R9+P9o*{XzCX~=@?oXlHd)EDtRpwg1`@yzKtTGcYPj2u_(z`xX+tFfrWY$f1Wc=qH2k&03ho)5Xvd#*`lG}PDTpnHm5Y8O5 zQd4vddij2r&lD^6U(EGg2FVNc+JKuOGzT5O-^pgN4 zw)iEDLioZ0#wRhkwA$#U4EDg*EaTqVoaUY5>WvjO?`lsckOYQe9A+sCB@AI7^PV^Y z+4P>ZY^zc82#>}8u8ESEe$0qIl+%7l0u$QDn<%zdN^m$@re?dU$dhs@Z&hT&$)-J& zHgfIi$I;033u%pcFM31N^=D=TG@KGn48NvMlUcdp&p*KBVVIpWOZGe55xQs5O*#hI zaKx2;JjpZnmBMZBI8Dgwv~SydPw)fZE%qsujZb})r_(K8JF+u+KWk$y%V09B)iENs z*}UP{;Os{^A6nV_%Kmqr(Muc)`t&uxggfIqFBI>IIXOIkU6C+UI{pijRD+JIt671i zjZ#8gv>Ucf1|e27mLz@q<7yfi*Co;_&ktX_L~{`f@w$0BcOz~%%30U1*ST?>V)#vn z(9nn6i`f-5g>tj|l%YqVQZ+MMD91!Uulw%+DJ%E2dzSEyc6&!n++*3NQ<2O{K5JD; ztm$?wKRPmYyIyLsDGi=4Cu*K2n=cHOy!0S7d&b{Q$oTX?+OvtsPEEW0L>yPQDcw5V ztBkq-EI&2fcHgC*Hv>v#^<`4~Q|^@S3#)@e0JIa9%-vuc(Cb*Syfe?tL|>Y(p4UL# z#*TG$UW_4W>uhP$JT*hxSE^Z}f5zUt`%H&*I}4Qq&bLIKMD=#cIyWEM3zuUlVeN}A zbO_4(1nrT%QymSO#=pprcz4k?mrT^tc2vLIb{3f|IH&!clW=lpZIrLU`?a5ciZEYsP`}xd?3~^)R&d35vfCnL{*G1QqNqE{h{5; zH<0;^HoE^F1ceAH_S37UhMXG=9m;4x=24Bmm+aEn- zog<0lF(bV7N1v$gIs181wwbu-kA~Sp@I(+?N~*C})8!=XWWPckpwmO8hv~5Yz`k^x zrZz^>?he*P8b_`O8C(tSw%QBCkVs!l){SfC(;6FTd;4a<51w->ci4LQ0jI?;5)Ejy zM#u!I8ESEJRG1w~d61Ko$vL}33&E&7bw2q62LY(!dQ)}Y%bVu_l0aE~{d&`9^<*`J zKX>T3XGS@RS{buaks~fS!u2!4H@)Qw7827dK*g6mIhw1OEctP|P&RgA2T)HDB!57v z2!bcmXd`S+_Xmm;RcX#D%Eo442vJT^87`P^uHjQ(^;b@Pq&eH|Vg5uRMB5>@*DB*z z%x)vL>?pOJAvOb!ZuU7Z@b6$bok{ zNYWSB%RZ*y#0rmRVVet>hmbgk-gnkHt(6JHRxUQF#LCh0e0&DyUmgVtA4)21xABM# zPyoH^FU-%U2$9@k#XE8W0cNeW^#;oEL2q88z+5%3p}*XX4^^l@vwCvX-Erz0F7T?P zz*Ic?}YxIv^5Vr+o65}a8Cz#{IIUuI3-#c)cTV)6kv1%f$BvGH+5}0TflUoX015PM zEga|iP6EkJ`Q2P#zFUg26~i+YC0PT5Qy?lDQ_eXk znZsORPhEL8JwBDid1UxPrLw{W?b$x}>C7lG7cQ>K4MPsSO6@oserjcCv!l8NKE8IN zGNAlMpyu0v-lJWU0Or#&G&T%S#RWRDAh+l%e4CXetEov1vcDW4u(jQ%QZmgw;2Vf5 zMeee>Um|@&;Wzh_6l6?%MO-p3X;peuXce zNk;tv_u7>0o#|?1GA~MtRsimMQ0gmgJA@#NA|kN0p$mbBpsKnXPz@JaLc?4b{t_0U zFLYegr0%>LbfSJWX+x6VbxILOH05E2np z%(0(6D@)&300IY4r_oP8^z%Cn{XYa)W+qZXk3?wt0X2^R%g9Ab;@==TJUko_6oiX_ zYy*S=D&BO>Ylt)`&0yEeIE%pwE~n>)CMT+1r1m&2xpVqh-)JlhM#P;ak6+xV+<%f|({` zU?5FcBs!bdJyW35>~K3g*~ErYq{E>kW!=%yk^l5*>iBuHIc?`PHDUzx53HP=tEJp} z1MOK8?~B&+mt*DztEBj;uLsUgL1!OClUQbZ+G^WdbbOvJxX(OZd7`G zikL3x`{p6a%d5Qiqqtz={jx;=Hz$(tiD?wcw5F9M)?(Xit?I{{2B^9r@!*NKobK>UJiTC00N+kX` zz`_HWcVTyP3~-0K1KH&HyLCzz`-diE8oMy!5aeJ z$3ZJDDk>m?U40~2Z0>_;yw?xGJ~>#XJoaPqn?Vy}TmH41SEa(1uebFv^saFPFhrz~ zJelApizV5cP0&B3pyDqauahnPCfX6pQelDMi=typ?8L|VdQ@>S*`1f#y97!tLy!)! za&gsz#?co93#h0QnsIfY{R_ArEoksPO&PlBkF{g7b;_tfe23GzG5ch?Lm@RIgX1Z^ z1T}EKx>c$olvbI?=q8E;nr(tUOZ^#g2t>qa$+yHyC{_#W(`Q?B+8Kn7%yN{|S)n=H z;r{kq87YWHFT*rLbQ6Cf7v1ECc4CIAA4Kt)lFSv4l0Zg69}P5zr$7ba2l?xcvGMRT zCCRWNhXHrw!}PcZvXm*>+$(SpB3OCso1E+y32X^SQx2(Oi5S%%`5Grd1Fb(`&z^Z0 zI2Awx5e@DjSQ}QJka?d)njtGIo9MAV zhxo!+y7f1U_yAp(x_Uw=rY#kC#Dd6&~^m?eXpiQ1=%`U z2h%O4;^tN&{P@p_)Z*Ya;CrZ z|Ux-SY$smkE=gkO$^^zyF8$bq=liA%0~V(=zQ2iNWB{TD-LuGH*hfV;#_-O%r;e@m&)!!86VO0zPvifzkkxaa64YX@@CCdp`M zGMW})+mC$;Ly-c??4$U}qBG+jM6=)BWmFi3DzGtL*Fi}QiKPxm;}Fn98G(jNUQw|g z?c4$H`vqqck7j}~zq$I(U-kvTT8ssaB`j0^ff{O7pt8%j7*nCq3S#Kk&O-F6S~e9< zn!O+$I02k!(_O1xT@e0Y5yTy<$~63M=*raP;OwPSGjILK(s39$q+00PhEXW5n$Z&S`a>=pZiy|PS!A;__t;{r9e(n z2AV=`e9`JOo%Nb4BhZb(`zw;Kj&U$BmN2KDS#nIUF(5`6pKzt`=DHbFf8lYOy9;pW z7#GwTA8<|&xeJU52}TnOMsxnP@I2(u?62*&(CVKSM*Egj-{L;E1?P!x2N zB#!t0t+ff|u3DT@xZYm=NY(A1B8xRf_@UhKftq*1!8pK~Lg(+Voaudm3CqY+;^a(D zJU?XsxyT-%{Urs6F$vMFr=UagpJW+Xh6saw33j(YmX-MaiG$+lfIJaw`GfeHQyQ}) zAl-*&mjtCE76J`)+`loWPYa(rTzzD4Ig=7UFx@UEjnIdd<1!F6!By^`+tO46cpqNO zRQbH!qjiIAzfa9w-|FgZ_ItR@o5@*Ob7Snv>3u9Fn(sC4*Kzb4MkRdmu+(X z-N~RpcNTsRRpoSLCJ909JIfSpYVXwup_ia=<;s=6&UKrby{=0dg-_5IENGHvJWnWl z*9E_G#dg>EU^AxmYdGX+?3Gx=V7+~lgB1FC0#iA5EU*q6X`NohvR1JDlWfWyEB~SY zcxO3h&hBFH-T!GD4D7e46h>r3)W8*7_TY)<({@!E5-StO-ESWS&ZiFAH= zAN$*{svao4i?C+4iPCcxw?DFbaP5uMT|xj17C}!9Sz|j z#Qdk#CqAtm?-|Hizv9co?b`9R4!&>K0tkr~w|UwBX(zBK{hkqd)-stIU|N?}Y%jD( z$^NW3{#G`2KM?ajSLlgQ$8xZ0SCt}bk;0aKqConfxq?CYfnp%VOCTx%2y_whA z9(u$?ZTkA93ZLu>s0GgduX)|C$ibsQgGjM3?;xR*;~zZ7AyHGz1VhUlIZmt^(@d9U z5H;`*HNnRxGa^7E>Pb#je?jLm$P)gO>SGEO(aLbP6j$L=isznO>ySQN=|K;kHW5?xlfxVWHzA#mioPyYuqa_?*R>SjZ6z>SqF{CLT9iHCYc znzS@Nv#7B*)RX-gQl)>)Z0(G~wBJZq#j*$_sCHIdCj1rp4=by+`|7wwEb-guS^4}X z-NTMrkVZ&{zk1`J=WFTm?>B+Ca1Ih;tfSDDcUCnpVVcyu-kQRC^^XGsa6)7Vbe65Bx;TS|Y z;3rK0<5l##iXJSH+;=r$IhI&+5xa|8R0ka|NQ7zc-Vy$Fyb>J>#h7>Oa&E=V$+t-1 z{T?j|npcfhHO8Vi=;pz)AX?b1(~P{VIB>5Ju(3Uq`HxJA`{;TSrCZ!=&=*Vn-P>_GT1nvz+=uR_F@xmppt3yqQ6NFH$olQJ z1F~B03M`2Z-0Bc&=1#x+0a_|Xbpxl}ZU@LdTK4$3J!%{#jZSbwFdYu!`13p42hPLR z|Gg{s#yNH@BZ7(|%$aDi3Di2Y0G)XEgoXHU4g@8>b9alzi^j?391NK+niv^WUvF^h zA36G#^umQlbw>NLIs~0`=jwL#tS=iFw@cnSH}p8yD~uv#eWKCg+5Op=-vHtJ1%CAn z)sAkS+0md4FCV+SUX$Y({cka=&>c9pXLF7FgrjCr`pd1O#Fc$f4_v&Z4k?)TaPg}6 zW3p)i9Lnm>ZE3Rd{N7AXN1;;-B}v+bMURQgP|D=c`=a{aO$Gxo00Om)5<0Q|;H|E~cwpdOSMhMcM4=$iU$!f#GW(Ph8yH{U(3( z_v)g1_=^^F7L3Z}%%)yeo39J|rdi}Pa{A(8*SHstumm;G$K@h+jA}D%AEz5h6W&yl zAUqh&#jeCyApGkiOyB5ta&Oc+jp1_nc!m&-7kmp9DWb5g{I-^IT zBm^y94x7T99FtgWiMXzxLbVavi%)+>Pv!>arK(|i zHHbwyRj$S18e%pG9D~-qA2t0-w{B9u81&GWWKE~v)7@MVDgw^$DXj=OxXdi_rqSvI zc&tlmYA?e5&q}d_oZiiC^Kb0-T6RYNqotPD)RbJ4C+E@Ic0x;qIeKOCrI~nUB6o}B z;ueQ-T(<-57kw(riTp&|G0;Ij{l!b>bvrdnZd+#PRndb?_U2OSm}y5xM_N{vLCMJ|WYzO9uUV8xHYv9o zmB*oiVYpxZmMh3A+0`;W$dF1r{QC7;)U~q@A3kJcV>^sWHNC+XM^)q^OdBQTBgs`V zM*gv(K?dk45s{NH5+9)|ZJ%)liFWw6|OZ+n_EPOwt(sotD7l>^8-$H8pE+Xy z>T+oFbyau>fr9>NUEpz4VqO#-@RO&)jL6+xs`?z25J_fU0wfjKNrX#=3YI z59PW~fX?R4wU?*4pD`a+*Ygrk%hY^?N~g2Sm!4>?mqHhA1L|0b;7DM?-`-4x2O9<* zdc(?8I~D>pHq^(pKtuU~bktyXYn2}NK!L2xXgq68U74hG@x;iHy$bS4&ll&REw5TZ zDNE;JK#ccfZw*z_O6_gn0B_fnbrbXf=pUfIwOU=24W@kz{C-c8>mgs%zX%Fr$$kJNQ%LtU{Uxwlc12har}UZ{mDEi)6<m)v;Rex;C_SQ;yMM&7XPdKW{1T}6h2$m-^D-=(}dE5Z< z4LFG_pJhA*4(wo{aqIg58aoSY&nem0%Sh5d|&>T*U;t% z4-AiG_xrjeusR;Td-v|fus_4mW5<%lUP}Pi{z>K$G*)!u<~<8}1qG>4--XH7D6I63 z3ie^pF&nleUKR#N@0gohFm0HRqLR|O`?ZPBc3?`5?}-9Y@XULt*r5;Tsx5&_o$V|u zCx>H3tNy0M`d;j8u4X3S;DyrQ&v(K-nmD<*{OU$TxI*$wwGdQD{tv4zlWpV43dbvu zI+yhu#X_SRN?t4kq?|yY4m;_=@PSzpNUTpyO{=BBZDtQY-@!(nM?}1S^QPX2F5=3W ziN4lWUl`yJCxj7v5g_D7Zh+=)Ys)>v36@z{RF`mQ3Gko7+B5u6B1xF2lv~RsMn0w+qxIwFKm``a3{|}wsWU{OwmyKbPthAc};q^IK z<=NZzagE{3!{`+;|8na2o?6}x6Yqf)2L(Kcd+Dc<%8FE-12rwM2+$DVtW0HMVj`pL zaJ{MuKdG513q1rRp|Y~Fdmvk9upN}kaHhb5M#F)yHx|s^K5x5v{uJQS=?wx;{~tuU zFKB9aJk3A0q{>)}%|*%OuY9>K z^Ppkqu_#{ob``Z7t$-B8fLHuVFM>=3vkRkm`hEd^=7@B9>Kn1k~o`kkZ8zq*}% z5fL$r?nG5}okw(H&IwREz!s^6U4*){!M;`;o1f()98oNiMfEyL!Eqidx6Uaw*TBsSIXB9(&J zGSoutGN=8&DEIQ2s{P&Uog z-z*%pbl)K#n-I{oGHTw#bT&_QcAmU|A^wIMz)Kt^PD5+!_U+rK)M=9n8?jbDs}rdd zCw>yi@!Yh}?sY5kB$cjIZE!2YL$Od8HwX*?spaw&VFNXg(=B1cD@g}7w35c<5GIc^ zIV`u#BN9YCAR653&NHorb1k~x8{2bdWNG`8-nC{WoAAVVbc0EmV?XBEvr#9pi6SD9 zr=|8eqt(#Qs9*BMhP|3|6t^^Ts&WVcMzX71qGx?q-}dc|>6+~7b<0)Bw?;SfkHy|R z*^BnnVFI7fZ9{mfPtUG=0vaj~t-_4%I2DhznZs~)19Y2A7;ZQ>yU;PfaUtZO?`;5A zWG)DoVR3vgDg$C33&A6%{@xRbI&v=2T>=H4RI}OsNB%hU#kO{Fuqht5_l#S{z42 zFK06-<0qS8xk2zkG5-sS6W^X7?5yt7eBUz0n;>PeJ7?QlN}<_n&I8r2a4t`b3{QHu|B ztUYwNxwuGBL?I4?ZG*a|z|O~4A4KDSO2&_oi3ta$|0CqT*S~VMd*7Q^;o4aBc;0=$zAg&C8=YB$YBudoj+}7G` zAOMWRr~?L^Vr1ZsfYVTh;Lw7VVy}+7pn?EMCBlcy+J#KU7OkgQN2PQ>XEWu`b!h$>#0tGNQ5gmYF*j4e#8%&_m`x@?5{MXMPk_ zDqM>eBxdkh36ml{=GfCCe4t$Z?hOhWo`r4>{w`_{d#}lFy2aCpb6D1t1-PK>djJzo+H&zCVt;IutAYJDs^;Wvk5}$`*Fz4=g*+rE8vlA5 zborWX*h|n~TNK@gHk@uG*cdN=u04jX4kuUOEUMz zXAvEH78)A*H<)8RP-tXwZO>N1Quj&2j}@h$iw6Q{+oH{bmwW}>HZz**{$e$%0Fd0m zG2nEi&PXEwZ&&5CvZ~Fh1}K65N5NWPH)zvX+ew=z-p_OjTiIYvy%1{p?*d&|h{0>> zr*qK+UIBQrI<`7kNgq&Y;M??c90U%V`5QOiebedzF*jE?yHe_x&0OiNxnpF4+WyF#0hJ!lamjD`QdM3!?l%xFEXrYmef!8!Wy?-DF7t@Qh)wi z@?8QUQ9gBx&l2B(5cqd#YMvAvi5b~d?Os|5ZEic^B5R*FZE+wcf-?+$3+k=D6J1>c z5i5eE-TH8Ibjz;KiIDa8?=RK-S9c=2=)qQ_U#;=RREwvZd(9C45&6;LUC5vY2Sctpp0BYnX!`v5g17hHXZ3^XnJ`p5uP#&Q zCK#lOPPJIxH6b$gs@Oc?Jg)ks-6dou_)wCm&AUs9hpVu=;ZPCe1L_O|TY}*SU#!Gv z=~VEY|HWGd4189;Mn!Y>yLCxD1yw3`lil}9adWgZ!O?!ktnN<>!yV*~THYqA!e&z- z2M#p+%vBz!5w5}MH;%_9`9T^rxw_NYIQXB*7_J)p-QP9V=DS;bc5;!oL_qjYJh!dI z#%<};RocQNfu1YPbQf}rId=%hz(5IFkQ}#V6F97b8$ASN^6Ww9xq!7USuU%jc~(#j z<+h*s5Z$XiBd{?UQoFR0Gnad!L#QpgfmxLD931W=Ep%TTupAZwsto#}7yMru8*vb@ zqa6CP9c0C3YRa8)paeE_H>hyhJIgV6lK>olzGv2Td_h}S7t;R1p2XRTa~d$i4CvSm zi+cY;^}=;Pjla@mYtW$Om7u{zk2U1?Iu^`>XZ$JeUKPPF1EJin&ZDyL?O77>?NMtt z(Q_P!NT2>>Q^I%GAUn-c6=MbYx*Co#3f8S~KLs{C*!Ytj>Br~FmlbFF%P-!jsMfroW_9rk$e7?rEu0O=guJMc zDo*_Nl*~c=DiG7N67}1h4*t?Eag2#)Gp5;k`j9<5hWZoTdwrmG+gl9rNdRLWoS0FE zx+1|ZGlCXwE`whFppkf8SxH~iXHQgU-T!Xv^#P;b6PqbA?rPYk=q7qGwN6avi0r4s zMJagyTr>s*Nwg&RsQ(-_tJBRF*B=suI7QH_B{PlFnn6TJtaXKs>}eoDAkUfGRY1B; zfKSsAw8x!Sjw~uA*2julJCl1{tBGmHCMfur;E` zPqFA^1Ni{G@CgMB6AI1)vW$frQfOPZvNE(^$E_7m1`^Jd@J8e82}_({Kwk&twqOoth{--Sr-7P+A^+ z1dO`=85tQSn9pDx0z7O7W@UCav!y(M^`L4x^k=WPI&S$#lCkSg|2JZbPu)2sqs|{9 z6V0v7!}n;mQphpRG{X`B*&ZAVgQ^Zt`!P6}@(4nd#Vq}J61(sG=|Q$F)dsYTM-^tEjH`k3uI_=kzt)Hjq~h5= zyC_^&TWUp7-6gB=rnwJc;hKG`gPg2c?;lAOYK1fIy`PG@4Dn4yD{S;P`@_v9H7-LR@@P89lk_kG^)2#Mlg6Yo(WN z!@ix@ElxSL?sA1hylIA2&g=KhcnGxi?Ud&aeWZaV`Nf9?nCP`oha7^!4At=DJ`96- z!F+7#yIbeFW}Q<==p0ec%7=}eL*zzb?j_9K+I0bsG4{yB`q*H_c(`{lUVhRH3lSD45`0GL=R4f+%3k-9E+y>K8AM0X_a7#tCIaP5+kpuzV}f9+l6LhqVIEjLol5`OMF)RE^?`hY2oWDLr^WL}zVgHZR zS2YWDD-Nw}Zx-F^(IoDo`cD#fXb~r8tK%-pd6SwtT2Ev1P&R3?VeTNhQWOo_o*dX& zMbsEr7d2kc9}C`Bl)``ehR01erS7Mbl zWYX|%HaC9YtSw{Yx`?s#&=RFm*81KfDzk|F?Jm&o#mmiNxpt$naMHmLoK%T2w7Yg` z3FsM90Rf`qdV#qB5Q^>Q+-bS9A6&uxC^s2uNhtG9A!IC#=iwtWeFtImNz!D4083Nc z(!9~DFK3W~>;EKO**MqD0vlme$*yavEz^e{5YHojI3&`dZ27n3JomVo`F4*b)?xku zaJs$T5PHRCrnUAzFiLl!{ zE&oooNk68MJD=jsH?rSmk=6e)F>kIf`NB#AKX#h?wp$lyquMg=9s`Wu@h$*@!N*w{ ziM*x@EWG&la$A91xqpcxCbjDb@18OdJY`ZS(A!Rb!>jgwr%-p2(Hv5ZF!3F3B^Y}^ zojqq3+1&wgG{uP7w;g*7ZPcMSNHqmI$Bk~TV{Nx ze|+ki!@UN=B>S_7=2^~t;c2B$E%gL_%zTaQ*;LyZyk-(wPpwB+Y-D{! zVB}-e%>2OkyDt|gaFnVh(pD6rUdU&7)ByXa^8UR?@R+c&!Z2dzFFF5i=g1pbYJl8q zU?Q-07k-e+!_#fn%GKks!bl{lkh7BL-Au-kMVBga_lBU;XX=KN=S!z@#Yd(-G8z*V z#vR3b6NPu%$th2Ew=#RivTLZEyvI?dmwxhegD=?0s_n@8hhjDcm!itVW*ffO-0_#h z_Zz6I5mJ9f9xG=39Z4>5HxFnVs_yVR`J@SuayrS?<;jwF}B4hWTcH_FRKsbi9tcBh*xBgPC zwcd#d>y~(pJ(o$9*_Cf1`FR1IQ9Dx095~|ugFs4p!#+n+QnJj5)6eWmXiLk(xfAf_ z9gX>_SN>q7Mb})k$=Yw_$>fv$S61+K5`8_zLTM|adD)9r8S-q#7`9iS_r5QRa_8z+ zz>&0Tp*PvAd?4qd{A|6P;Ls3yTwkl-4{KCwn|v~CCn4_kc9b;+gt;Mjc1m`SdASRr zp7@7gP7E{I;RXLV-`%AqD*FR82;vo(Gcu${tb(NQ^1D;MM|#Pq=X)=KMiJv76VCTP zkCg6EF_4E$mv0msRxdP0mCbf*mK`CF-1BX7mKuCsH0zEPO(k#{vx045Fe#BLA_P<{ zq2z4n`z2}SD^=|j%X0h%_E%r6{ggSU5^=Kr;&{fYgIX-~6-3a&yOH2Dv+(GuBM#FE zRoZ$wfV@kZoYad{_b4QxgE;} zj&53qWoKL{oEM^HyjoMn{a{e*loX-YSoYSscuRMusk2d-EdJehV8_S!%mNN)X5qyL zCx}9-7WyCa6bv`hA5;X>*IhdEPs;;020Y^=eEJsD zeJ*RNx0D7ymN>;qGf5c9nN}!-@r;WnyUUr~JwD+p+1y8_MR1JFpb+%|dbd zzQO2a7Y*9jZ-QMFv{E=6~gxN2XVJ{PQtG|RoC(v7|MihSKq3(Fdf@_(YrVH zX!snehY5by-PgX~)5#U1mM=Hp-m?1XZ*i14D51GBT`d`GJfy*Fntn)04ksc+6#;EO z8s>J{b((@5B1v|`2?k6SKsUs}AZ(NijC*QR^5G;}u-fmB{yaEMo`!`5u%zVRUNo!| zhc;uPwz4`Z#4(~9>mB%iXvd69>!3dbjoawho_(0J@gGjKYWUOyjB=}suXhYXFQ-2y z#yO3va&n<)BkoFnZsLAuP6$K*X#jbg{m7mY`iNC^hkpm(%@eukD>#_v&!2MuiIn2- zKBU-2tbzV=|MRZvHU$8|VI@m~CZPj-V1WC|sO@$CxzzgVk|hHS0idVZ0Ox;TLLWp} zMlv=HU+7M~1wFQ3QC${HF}D7r6QOs(TQft7qq_Sy9+p{%w!kBtetMy=W!m~U0V#YQU*LCT?fuQs8 zH+ojS!{JfXhwel_$xb<%$upJb0cW*SFn1lZZMSXJgj3eJns9!Q0M1`a#~VZ^8PGAK z$|;zgoo57ynTXYchU~cxd#NIRy1-}|Db7)Q7Qw^->)^D`9ssMpCs^b5LMJD1%{13{ zzGYZAFm$dqSYzxCqWPu=J& z=+mPA?LV5B2h2zxoGTDl*q0w{0Pi-`GmMBaI*sqH(N@FyZUJX#Tnw;oJDW@|z^jAz ze%AzTzY?b|4o2p|mo0jRW_U2L&`sYMInU6_O|GQIvC+Ec)z1mh!2Y@M^jouItYS#C z@tMlT_aIS_zvNrX$qG0kEMDhiXn!YJFRmZzw*12PP24K!)x>5$7-}GN6Hxf*VAfce z5_jvpPI`L*oBY>bQ(M|}Y3`RghYTt%*fC~H zpBKV0Oj6f6XN9zZ{q#{;tp;+!gJ%=(8l?%UJjG>iTEa6f zzL6hGTeA7nC*^!D0@@PbDhNb8F5q zI3gktY(}Zdvd|7VLessfd+UEOL^T}1KxZ1pwvHw@fHVffR2&Q-#sJ+rmzN4gz|p10 zy-~vmn6%<@h5^9d(8J!LF~V}<(5(#pbs(rhy9D$Sg(>=+RNz^}V8Ckw3)h^AWX!E9 zUO1k@!0a0gQuXu(&pRP%lF;OFDk?wlC}KqZ8ro_Os3-xhQ;ReMj*dP2XOZy&a6_24V2A{%0__A?1fg|?!JH#I1m|aPVZpGwukSJ4G>A1n zs0l{6HjLR=vFpJw2bG+8sbEWa@PM-?*cOa}sWXn?h$2cc;SL3m{E)3S3~%Q{WPpaN z)jBt%(PErwrhQgXNy*7I5V%bAa2Z4foEthrG@S}*fp3DLD%QCWTC3GLBoG2vKCr_S zrdTJ8SV_-}fmHB2m#{*!hs!x88rR0R)(sbJC-z-m$7!(CitoTSAtT_-RXus zI{+nmDk>_07E8epbthTIGiScK?@@PVg!S^hLCK#tUJn54kz1gZy4YoDiPCn(k*?fFe&8leSo_aALDcR-e^$I zYOW)5gltdU$iHBwE7AA=0W(4O-fi2(N-(aobmYat#WfqIb*^T#iXpb_;%EbURYCKD z3$G*0_9we?k8Q8GZ|@J6@d1CvdS;~(n2iv%9;(Pa`wo9H&F&t~a)AMn!}$9+iyp@j zG&Eki8v&!?H`Ir}uf-ZoCzv<~!>F5Fc2F1$bo0W;tBL`d_bL-35C@x>9#Bix3#r|% zJ^wIl(NuiWZdkFzvQ)8{FL6c2WV4wv(8T#W^N%-MX{)vscsaU8hDP5L?sUpGSvc9h znR6in)8YN?tYfE;9_`(am`|X6Le^3^dcf0JdV{C?0f1LOPpRJr#nHfcVrm6qY8U^U zGMA$1s0GfeADZdHV+s^u2?U2S05=8bn98TS^V3W_xfjQqrL~sfsE)wjb9{t@JELZm z0Ui&~Td5_Flz0AX>`I{rk394k@~KvpLs)nSOOXFQk)?p;JsexfPDC4J=Oq{8kCa@geDgx)FTM zLtmhox|4gbP|Fh}kTD4~_cCZ6At)w%ifphXp~)i1Q1I#n76R1g94^$U6M@8KXC%$| zsz}!&;r;u&%eF79{%E?3iPsfRFBPyl+haGvZ%ElySYPN23>|`R#x{vWZ;exZYlu$= zpdF<}N?6mGd#wpXiX=OiUgKa;%Nc0hQG<~d@P}A+hXgE)0N)>|9lVSXX(lpD%Y%G%uxNKhf z@g;UqpTmUpo@6^Qbs{QD0*;!%`74JdF-^B@ALf%U@yT!5=Gw?#4l*1H0S6ACo#I`4 zZUHqdvsDcv)&ZBjaPjE%Gfmh0D_ipZuQs;c4s=;c?w0q&b}Dm?$IiX?PZ*ceXwIu! zlc~%Ti}{ehh;eo!svn_y6h9!hNY(;+IC^ewrD<_VXuJaZstkce0jmxO4Zv{!K&q3B zyG=K?e9k8ER2VW*ja8Nw}WP@7J|@l#KlyEzxL!|bXsPcVTZ*g zN2kSneleftaH+wb=jv^jd3TQu8JS7y>V{{X@aDw<)D4^W^HXp?$c!`RyQN=Hm<~N4 zvin0d(3cu^`kIyV)?8H2K`=;wE|rP=Y5oH9rq$$dl3lK=Vlr;s#F>;mG}wATpCLq2 zv4Rb#I4CaOISdNbqsNXtd-)Q@f`De|2fPGxmGr1f*%34Ooa#7ha!?%mG&speLywMS z$(VZ8>Z`k}PR$DpQ{Fuz?(K7cpPM+-)Q|ir;xSYNPiQ#2< zM7_{g*rmn6!FCPC8t@wEj5Wr*f`SvEb3|Sx2s8mu*FN}ZD;i^@;p~QVuS`3mmngfq zs1`pEQxA2bsL3CyZBBfPpowGW1N7iX6! zswTBP*AI@XC*RyWNu22lAH-`vQ3dP`j*Uy`>Oz?>{?B(|f%7oS3XkSgevZ9oCErgC z{4Y+SdnBbyHalW%eWbcmd_Q`eiaN%mCIXVzfwpu*BFKmty3_g^F4yv8yH_Qx^YtpR z7ZKh*J|N!__>VI((xy(`ss_aTaJjVbzx1$Wf56>xC$xe!e1uN^hVJN5LnB?&ZD?ce z?s_fExfc;4Wu}N4Q9sbJ7|JDLkRJm`3DBt#uFI6%<~;!r#6b?lG0-!tI=4IzvEBU0 z`|fR9TibuTBQe%mY1w1T&G8?O9G*Ttl_v8*#y_CV;`o|L*q3g{Af&LD=eMv%6j#sD^FV_J*LJ7rYeW(_W9Fd& zD^HZjdb7dm6XL@DNYmK#H$_a(Zs5J6<8S0uQt~f5eIxq|mfc~MkO4H@tS8uWet3Gg z$V+S~%gNzjV1LB_Pe1PLYip44BPo7UkD0dZI7rkZ>`5?2ul-Dbvurfo)Dp=%+-qsp zs`9{i?d36I$GA~#9~iYC2PG6S!c#t`=J_f}m^p%Y_49qtif=9mlK7KHX~Z-F(4&YXe!nEaqV0`}BMEc4 z2PTgidI*UV_-D=~3{Mx}m&3}~#}DJVQ8M$Jw~OQaM-Yj5N5-WrudO}Pw0Z_knINZ? zqJ6VjW0qZJmi=G5wAxokZQavuwz*u*C1#AIzh(okg*@Rw^r( zBFx?|G5+2fp=}%+8;f0RQGmDCdBqIyKoV%F0zwGRr)#Nf@)LhwLv|JS!^_2HdlVC? zD(w_R@uIc-Ey72Hv-v=WPB&sN7&EYP1v+#&$QXi$>-HUS7NvkC>#;{mBD!2u_nwfY>aeLqcvX^3%{p!~bM`QY?f?J_ zxNe+|IuSeCDorG`3UMVg!1;Lq77opnEF45F1?d1SlB+S>FZ6^{hkr{Vu{w zdL8^sM~z8;Omf&lb+(>E5|o17(j`xTVYm&5{lZp_qMO+wdsa*a;Np&J7?fPW-RzeH`}5%7ocOU!80Lo`4!X_-AA@pKD6mOsuSU7?7|3m%DE;0I);=P!z!9a68+VeBCj|y!KfEQo+>qNJs9FL8E;E~2NG0@-G?U=K; z9h&%{TZT@9XA9NwKXi1cVM?t3rpzJkf0)&wt^B@M0yFbC*C<}nvS!e@zBnnTqI&qP z<=H@egG>jm#4*Pjv$=f$Qw;sa&GhK^vNwnO5zbhk@J(pUM}S`ZoRt>RPg||7QEHj^ zMA{wd4%F+h;{DmKkMRa!{S<%^*LT&>6yG9?DN69CmUc>r)9m4I04Z7&AsF#~gGLv` zR5xEMdo}xnnjH&wkukjenNpmaRAk^Lt&Agp?s6CNoLuiP!rFhuA=Ed1Kxc<0K@$wG z#{abCCi}iTb#NxBHYDz(jat{mkNLC9xYL4Zd4B!}%A-S;p2fMc20ZeW!Q1u&5ssWs zkYU!B@@RQr`+^U*vj8d;9cA5Q0oO`jGhb6(7YTQ%z=J;Y-xtW5Un?(4C^#JOh%I$+ z*ChoXFwEM$!E+AmU~!%hU(dq`Ym8cGWg|?R|KfE=nw0ORIfZL0_Hq`(L+`$wp^lXa z_}(|HtGU^eH5}i}yvW+fp3{vHw*1tE@@T2>nu3HFvjranUA* zNY)J|H&*jO@y-9XXM|jVd`Y6D`O4kI6> z6Xx;2Ik&}1V#oGxZ08ZsbM%hWD;F6)w>Ip4Ytud0!USQy@(1~>D={2r82D(Qeg{-o z>AuF(Y3G6~i0BKo=zaw6<@t9dkcBt;FZ7-*_W%f)HuGubKhV${lVS@B3`1A5Wmfi{ zY}xFU0E;Qb5>}$G3V$Fg;P+GcdrIE%w70cj&F@;eE8U9h<@fYRmzhe7|>K!U5D0xSZ+JcN#!*bB&F#*TlWzxK0^%4dbjG?Gegf}{a# zQ+OCq6Y2p52jx@{Q+INk{X{eMG&L%%sALURb--2hnpMGZcOv2e@GelsAI?2eV!6(@ z4mi2cF+*S;u-rdCRkeUv`3M^Xa3hrA2J(sIMI@Yze{3>QCe7J)+@T*XV+Or~7h~lT zfewVAbdbSnge08ckC1@*Q{AP3!$@8;iXzfZK!yy6V9LOiX#r7H$m#~nKA-14j7YX8 zQ`L8RbMD+wSabU&1&x!k!W?N+_uBv|qxxZ}AE+Tys3fA7scRoiHKS zsw1gpqv9`Sfo4w2etYI^dIzsw7tBrYoG(JC#ME~+1Kl>P_+y<9iuj+|Q*G9P#r~q6p85}?c-YkK*3^Fia z3oLhEY#3cWH}ut2VzrVnR3}sVDwlU(ztBO7c7B9Y@D>t3naX(WsM(urVwM#yyX@3k zIK4fVwEJQuS=Jh5zqYnYh}-0;?X*xnzI}@UjJxod6Lbhm;avmEAG%ZFm)d8K!r&dd zYQ~skchKWOoO_#h(tfrFSGsMMzJ(YvO+BeFrC!+s)4tiNyy(^2-Etr_;z)81)3|BI ztHuT8s-Dd+@xNX z#E}lGjXm=j3t5eRA1iR>O?;O-O=F~lPIhSFb*^olK(DIJj%Sy|-DJp-c z$!tRz=d&7L6tclVTOL}Q5Qal59el0?;t>5HXKp{BKLfiafD^#vQDMF}?)qy_Fzw3h z^f~1Cv-wkx_L`ZFf7hM#xSb@d;rD#JqEoe3)A7K_iqZJ>xEMpGUd?u!rSoi;eGYn2 z^FM}Oz$mQvTkqv^W}bt|>!Z$4ksfe6_Uh78ZT7zEp%u*ZD@tCxUGIC881H$%wqb3A zFdYQ25rSw37pg)CErkgc^rFFZ+7Gdo<?cDD{k52?84T*np}IFM)4Dr=smSX$k9D&sJ)e&4}zlhT*_fm2dh zr_>{84>{pAj=`E(iR9_KEje7wEqVE8Z{9dPXGJf^$#qxvv`*Fp9-;|P1$l}y5lxgc zDFP41iz_5tMzXzDb-q3&TUna^>NQ_~C7g^W>_tyP7Oy!=ce~ER@;j1JQ4QvWFx}6z zg*7-_g>xTKc%5_Ho_FVduR1-5XHqb`pykNNC$QIE>pKDF2q~Fo)rd`nb1_fP^SpcZ z^n_%Jk?x6P7`ri7*Ja)s#gBZT# zjw!OX7ULP-Z1P`9mRe_abj;E*roQK3&@SZ2car<~i-&f0>Wn4vA^asc9y8fP46Pa? zX{k`Yt?D{s1%9s3hac&!`9LEsZsVi^pfEt%bw4zq-~K%=nc^KGQl`5ir&uWP^NT?t zal+E(NR=tMjn{f=ot!D*L2D%g=cJ2{qD z>@)445gh;YOI>lU&CN-moyqUA;(KS!$u<=-Xxj}|1`W$AegZ$sD~qYr*Ojp_sNjpvIrU-W8RY3m%0C(7UJRDrt+`e3 zmI}?Q;$>d}LGvly@7qfOr!ZY^x;#gSpUv;EL7rIvqI=f6nzXEX|0!LIkx{bju@}c5 z`8$250ez&L37 zsC6UDYq)#sn@S=uW*~<#gP4HcH!@Y3l%W!_i3{IWF+j5S6oqcZLPXrIr_- zbPj8@gik^MVKcaxY+4PRA9cho%g=njM3Atb*oHJjU0^D-Wtu3bPh5SzH%O`+_an_U zxB@J+O#Z(bZW%#g+NyTO;9mvk2RS%G;xcL_3Xgu{uktO#Q#4!HI3w9#ik&lCa4C#w zAvZleq66@s-&!Lyk&Ks%29By1P-n@((0s{dl>=q#9lvCO0dIg;w^=3lHod-l`JzNu zZ=9*uoS>+ZXTzkFqVWjoled7tOG`_;1cifTr)jn>M9-LYLX7by1W%ShV|xx3P!!)4 z4>1^E3P*Sg5ccSTfQ5A#H~ar8up)uC^Uv&tXx71k+mb@TGfdCnI7(?@7eav%DUkCS zwWw!EbH2P6An5jAD{sA5$k7+)=~^l0&R(+*7#&_-GySE3r;Z3b_gj+H#LUonxsC?s z*Mpq+Zg`qqkN}xm5PYEkRK__VuCaumNW|K_-`&$Du>xx?N@h_3uC#hK;XW_(dVWsB zwfP~mHF;Egb({TB@(&opZo2Cr201!m0w%b&X9$dhP^Zl)y@n(-q=JE{Er^k;0Ba}? z29cqmsHcAL(8;aM_5Ud1`o|3VhRftzq4NY?kF2!x9t=RH3z|3J`I?Ud=_H%0D=G7M z62=2~O<3Aia)7N<*mN{8x5?NIeS=2Bpu3wSw2?3;U{zwd6X0>BTR~(P3O0A$pvofW zGgQxL6DKL2iHlE3AW5Xp+$t>j-ypUasfx8iRv`8U$Q36cTl4|YB2tP#r?S#S&FUDgULnS#;oiU^(7vMqL4fGiP}s25L)4`MsLT*n75cw=;2=+S zGc^TSwWumZHrKCF9uU^t7b|slFkeM?bePSkdhmYUiUPy7n_9Nt@N3q2(>NK3{D9@r zYyphppC4ATm8`=*r(KT;E+2cp;@0^}&fY2e#co&P_cWrcwDfH=x1iEpPHw_}brqG- zEG-ZPK|b6*cj`+PCoo}+X=)vJ0CBOKp?3~WD+u;-5aUNu2`4er?&$)lf&!ZefpBB| zGN8SiEV;=Jebt4x)FHZVVjYgDhxt~fX?ISk>q^L_Az`(mGZ=944ew!#I*+l*pHq#Q)3eoG@ME81SO&P7B9p+ zO)LW@2N%tc+TsRy>2#LP2n*9e%9vK_1HjjO!EXRv&pM4FZ+MV)_d;E#m34Cr_$s~K0vd8 z011QfFZTqJBIE%A_}jrjzw+p=LacbI6%=CTWq&Hf*1CAzHgj6ldB8TOr$^;{mov0B zK4E@x64%Hj6;=rV%LB~RS+g?4S~aoxt2QAQCnx7d&!hh%;UmZ6FTw}c#%9@jY&C0P zTy%6al)*S}*Q|L@of4nERq!|C!@zvz?g(%A^XIsauQc^L^MObNz$utF!XY4Jh1wPe z1Dx@*%*^vD`z_pM$;rs_1f}{0o!GJ$u`<`MzvNdmnaZ7Xfs6#U{GvE%DJh8H9Z9Qu zG&45bG3~_0vw~e-LJ53y5aw#0R9C)L8oTmsQ1sv^ZS&$`J=e31IwMWBPi6 z?#VEqVTzdEZ0JL~o8)lIh(h0laOjq9D?j~V9s?&KFNeJE#-#h+U8zzgY>F!T##M*O z%v+<+0@o$lOJ*w|Vj1MLm8IT?

      i3c0TTNUNkRgF)O>wmyUz?1TaU8U{tyEl##C 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 literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/rmq_val.png b/misc/rmM-tree plots (B=64)/rmq_val.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1aab804f75447b687e4541383e81ea8c107959 GIT binary patch literal 65838 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 GxBm~$)cq*{ literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/select0.png b/misc/rmM-tree plots (B=64)/select0.png new file mode 100644 index 0000000000000000000000000000000000000000..fd62101f2c0de0cdb6903d10585ddb3891df0668 GIT binary patch literal 59930 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

      w^)iJ%o^iXe-~fKzi7I_Zjb()JDdU z!YB){tMYMX%r`daVB*Eq*JadFQzG`Z_NxKY9MA|3C$nL+?d@q9iId-Fxd`!MrI?*s z@QrUL-Gx*2$;r&GXap%?-_#xnfyuhzRwTy9$A8OX9=|7D1t<+z5)h(53cOh|1mvZ3 zjdDtG#3owv18%Q;BJzeH!NDIIBrpIGk>S&k%c1OvnsJ!S?T`C+oVnYRhfZ+2tw0|E)cWgv|gB>g`~Q4tbM zd8!$!yYtF3Gc&98&0bz!8vWZAY;zk9@by5=Puu6PbYu%s_6t{BODnF2C_(yS=-!@{ zv@|{#m-jdqx9Z*v>2vBH7H^%{{MiAGrPaz?#?g&f9%$+%R%mSkCzb8(i+h}Zt;U$x zvpG7-mbT7-N*gXDo1qTGR`SKuigQ^RmMUpo^bm4UZQ#!Y3zfNR_$!8ujqNs==cIA7 z9(^`2$)Jsa(Y9jwV?V}ZNzDZQ#+57Jj4qbOU00FRKkL|NS)8$zmpNt8xRqDfdXbJJ zR(26w2&Otrc_DJdS+Df6^HM*+zNl%`N>09^`dP&*C+DM$aP0jJ;wVZgtB-dQ86(>n z`S83jQG4D>}fO>^BDN8BaggRUBBMjIO z=g_^O!~NL%K0@c=+<^&+D9GPk_BS3vC-TeK1`unt!6YUb%*Nr)^UZDHJB83!Utf9v z?ks(Kw;Kf|o`5e1w^46foDfz&bNZsG>cG%J@LvW51AS$*o5T6E0IE)H$kyssm(YJt zt^>VMsKa8=KjxaF$J|vCXG6z{Z*Kr*HO#d;;Z{fMO0A-z0%R#KplzH7uEnjVPcOmz ziuP2y6T{g*2V0w(?x7ZjYKJR6)D0?0!+Ci=nfUPfe}HO1W6;LkP&&s-Q_3W+-Q61l zJZ_5_mO&CZ)i{DX@3VJLyAsLzu9Am7-3kc*)Xc$P$

      iaDV-AJGfAB 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 literal 0 HcmV?d00001 diff --git a/misc/rmM-tree plots (B=64)/select1.png b/misc/rmM-tree plots (B=64)/select1.png new file mode 100644 index 0000000000000000000000000000000000000000..d07118809880cfcc9eefd2da88b3b87144607b35 GIT binary patch literal 61518 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 +#include "rmm_tree.h" + +using namespace std; + +static volatile size_t BH_sz = 0; +static volatile int BH_i = 0; + +struct Args +{ + int min_exp = 14; + int max_exp = 22; + size_t Q = 200000; + double p1 = 0.5; + uint64_t seed = 42; + size_t block_bits = 64; + int per_octave = 10; + vector explicit_sizes; +}; + +static Args parse_args(int argc, char **argv) +{ + Args a; + auto getv = [&](string key) -> optional + { + string pref = "--" + key + "="; + for (int i = 1; i < argc; i++) + { + string s = argv[i]; + if (s.rfind(pref, 0) == 0) + return s.substr(pref.size()); + } + return nullopt; + }; + if (auto v = getv("min-exp")) + a.min_exp = stoi(*v); + if (auto v = getv("max-exp")) + a.max_exp = stoi(*v); + if (auto v = getv("q")) + a.Q = stoull(*v); + if (auto v = getv("p")) + a.p1 = stod(*v); + if (auto v = getv("seed")) + a.seed = stoull(*v); + if (auto v = getv("block")) + a.block_bits = stoull(*v); + if (auto v = getv("per-octave")) + a.per_octave = stoi(*v); + if (auto v = getv("sizes")) + { + string s = *v; + size_t pos = 0; + while (pos < s.size()) + { + while (pos < s.size() && (s[pos] == ',' || isspace((unsigned char)s[pos]))) + ++pos; + if (pos >= s.size()) + break; + size_t start = pos; + while (pos < s.size() && isdigit((unsigned char)s[pos])) + ++pos; + if (start < pos) + a.explicit_sizes.push_back(stoull(s.substr(start, pos - start))); + } + } + return a; +} + +static string make_random_bits(size_t N, double p1, mt19937_64 &rng) +{ + uniform_real_distribution U(0.0, 1.0); + string s; + s.resize(N); + for (size_t i = 0; i < N; i++) + s[i] = (U(rng) < p1 ? '1' : '0'); + return s; +} + +static vector build_size_grid(const Args &args) +{ + if (!args.explicit_sizes.empty()) + { + vector v = args.explicit_sizes; + sort(v.begin(), v.end()); + v.erase(unique(v.begin(), v.end()), v.end()); + v.erase(remove(v.begin(), v.end(), 0), v.end()); + return v; + } + + const int lo = args.min_exp, hi = args.max_exp; + if (args.per_octave <= 0) + { + vector v; + for (int e = lo; e <= hi; ++e) + v.push_back(size_t(1) << e); + return v; + } + + int per_octave_steps = args.per_octave; + set N_cands; + for (int e = lo; e <= hi; ++e) + { + for (int t = 0; t <= per_octave_steps; ++t) + { + double x = e + double(t) / double(per_octave_steps); + long double size_float = powl(2.0L, x); + size_t N = (size_t)llround(size_float); + if (N == 0) + continue; + size_t min_N = size_t(1) << lo; + size_t max_N = size_t(1) << hi; + if (N < min_N) + N = min_N; + if (N > max_N) + N = max_N; + N_cands.insert(N); + } + } + vector v(N_cands.begin(), N_cands.end()); + + size_t min_N = size_t(1) << lo, max_N = size_t(1) << hi; + if (v.front() != min_N) + v.insert(v.begin(), min_N); + if (v.back() != max_N) + v.push_back(max_N); + return v; +} + +template +static double time_ns_per_call(F &&f, size_t q) +{ + using clk = std::chrono::steady_clock; + auto t0 = clk::now(); + for (size_t i = 0; i < q; i++) + f(i); + auto t1 = clk::now(); + double ns = std::chrono::duration_cast(t1 - t0).count(); + return ns / (double)q; +} + +int main(int argc, char **argv) +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + Args args = parse_args(argc, argv); + mt19937_64 rng(args.seed); + + vector Ns = build_size_grid(args); + + cout << "N,op,ns_per_op,queries,hits,misses,seed,block_bits\n"; + + for (size_t N : Ns) + { + + string bits = make_random_bits(N, args.p1, rng); + pixie::RmMTree t(bits, args.block_bits); + // pixie::RmMTree t(bits, 0, 0.15f); + + uniform_int_distribution ind_dist_incl(0, N ? N : 0); + uniform_int_distribution ind_dist(0, N ? (N - 1) : 0); + auto rand_i_any = [&]() + { return (N ? ind_dist_incl(rng) : 0); }; + auto rand_i = [&]() + { return (N ? ind_dist(rng) : 0); }; + auto rand_ij = [&]() + { + if (N == 0) + return pair(0, 0); + size_t a = ind_dist(rng), b = ind_dist(rng); + if (a > b) + swap(a, b); + return pair(a, b); + }; + uniform_int_distribution d_dist(-8, +8); + + size_t cnt1 = t.rank1(N); + size_t cnt0 = N - cnt1; + + size_t cnt10 = 0; + for (size_t p = 0; p + 1 < N; ++p) + if (bits[p] == '1' && bits[p + 1] == '0') + ++cnt10; + + // rank1 + { + vector inds(args.Q); + for (size_t k = 0; k < args.Q; k++) + inds[k] = rand_i_any(); + auto fn = [&](size_t it) + { BH_sz += t.rank1(inds[it]); }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rank1," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // rank0 + { + vector inds(args.Q); + for (size_t k = 0; k < args.Q; k++) + inds[k] = rand_i_any(); + auto fn = [&](size_t it) + { BH_sz += t.rank0(inds[it]); }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rank0," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // select1 + { + size_t q = min(args.Q, max(cnt1, (size_t)1)); + vector ks; + ks.reserve(q); + if (cnt1 > 0) + { + uniform_int_distribution select_dist(1, cnt1); + for (size_t i = 0; i < q; i++) + ks.push_back(select_dist(rng)); + } + size_t hits = 0; + auto fn = [&](size_t it) + { + size_t k = (cnt1 ? ks[it] : (size_t)1); + auto r = t.select1(k); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",select1," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // select0 + { + size_t q = min(args.Q, max(cnt0, (size_t)1)); + vector ks; + ks.reserve(q); + if (cnt0 > 0) + { + uniform_int_distribution select_dist(1, cnt0); + for (size_t i = 0; i < q; i++) + ks.push_back(select_dist(rng)); + } + size_t hits = 0; + auto fn = [&](size_t it) + { + size_t k = (cnt0 ? ks[it] : (size_t)1); + auto r = t.select0(k); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",select0," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // rank10 + { + vector inds(args.Q); + for (size_t k = 0; k < args.Q; k++) + inds[k] = rand_i_any(); + auto fn = [&](size_t it) + { BH_sz += t.rank10(inds[it]); }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rank10," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // select10 + { + size_t q = min(args.Q, max(cnt10, (size_t)1)); + vector ks; + ks.reserve(q); + if (cnt10 > 0) + { + uniform_int_distribution select_dist(1, cnt10); + for (size_t i = 0; i < q; i++) + ks.push_back(select_dist(rng)); + } + size_t hits = 0; + auto fn = [&](size_t it) + { + size_t k = (cnt10 ? ks[it] : (size_t)1); + auto r = t.select10(k); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",select10," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // excess + { + vector inds(args.Q); + for (size_t k = 0; k < args.Q; k++) + inds[k] = rand_i_any(); + auto fn = [&](size_t it) + { BH_i += t.excess(inds[it]); }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",excess," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // fwdsearch + { + size_t q = args.Q; + vector inds(q); + vector ds(q); + for (size_t k = 0; k < q; k++) + { + inds[k] = (N ? ind_dist(rng) : 0); + ds[k] = d_dist(rng); + } + size_t hits = 0; + auto fn = [&](size_t it) + { + auto r = t.fwdsearch(inds[it], ds[it]); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",fwdsearch," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // bwdsearch + { + size_t q = args.Q; + vector inds(q); + vector ds(q); + for (size_t k = 0; k < q; k++) + { + inds[k] = (N ? ind_dist(rng) : 0); + ds[k] = d_dist(rng); + } + size_t hits = 0; + auto fn = [&](size_t it) + { + auto r = t.bwdsearch(inds[it], ds[it]); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",bwdsearch," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // rmq_pos / rmq_val / mincount / minselect + vector> segs(args.Q); + for (size_t k = 0; k < args.Q; k++) + segs[k] = rand_ij(); + + // rmq_pos + { + auto fn = [&](size_t it) + { + auto [i, j] = segs[it]; + BH_sz += t.rmq_pos(i, j); + }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rmq_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // rmq_val + { + auto fn = [&](size_t it) + { + auto [i, j] = segs[it]; + BH_i += t.rmq_val(i, j); + }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rmq_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // rMq_pos + { + auto fn = [&](size_t it) + { + auto [i, j] = segs[it]; + BH_sz += t.rMq_pos(i, j); + }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rMq_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // rMq_val + { + auto fn = [&](size_t it) + { + auto [i, j] = segs[it]; + BH_i += t.rMq_val(i, j); + }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",rMq_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // mincount + vector seg_counts(args.Q, 0); + { + auto fn = [&](size_t it) + { + auto [i, j] = segs[it]; + auto c = t.mincount(i, j); + seg_counts[it] = c; + BH_sz += c; + }; + double ns = time_ns_per_call(fn, args.Q); + cout << N << ",mincount," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + } + + // minselect + { + vector good_inds; + good_inds.reserve(args.Q); + for (size_t it = 0; it < args.Q; ++it) + if (seg_counts[it] > 0) + good_inds.push_back(it); + + size_t q = good_inds.size(); + vector qs; + qs.reserve(q); + for (size_t k = 0; k < q; k++) + { + size_t it = good_inds[k]; + uniform_int_distribution query_dist(1, seg_counts[it]); + qs.push_back(query_dist(rng)); + } + + size_t hits = 0; + auto fn = [&](size_t r) + { + size_t it = good_inds[r]; + auto [i, j] = segs[it]; + auto pos = t.minselect(i, j, qs[r]); + hits += (pos != pixie::RmMTree::npos); + BH_sz += pos; + }; + double ns = (q ? time_ns_per_call(fn, q) : numeric_limits::quiet_NaN()); + cout << N << ",minselect," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // close + { + if (N > 0) + { + size_t q = args.Q; + vector inds(q); + for (size_t k = 0; k < q; k++) + inds[k] = (N ? ind_dist(rng) : 0); // i in [0..N-1] + size_t hits = 0; + auto fn = [&](size_t it) + { + auto r = t.close(inds[it]); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",close," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + else + { + cout << N << ",close," << std::numeric_limits::quiet_NaN() + << ",0,0,0," << args.seed << "," << args.block_bits << "\n"; + } + } + + // open + { + size_t q = args.Q; + vector inds(q); + for (size_t k = 0; k < q; k++) + inds[k] = (N ? ind_dist_incl(rng) : 0); // i in [0..N] + size_t hits = 0; + auto fn = [&](size_t it) + { + auto r = t.open(inds[it]); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",open," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + + // enclose + { + size_t q = args.Q; + vector inds(q); + for (size_t k = 0; k < q; k++) + inds[k] = (N ? ind_dist_incl(rng) : 0); // i in [0..N] + size_t hits = 0; + auto fn = [&](size_t it) + { + auto r = t.enclose(inds[it]); + hits += (r != pixie::RmMTree::npos); + BH_sz += r; + }; + double ns = time_ns_per_call(fn, q); + cout << N << ",enclose," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + } + } + + cerr << "blackholes: " << BH_sz << " / " << BH_i << "\n"; + return 0; +} diff --git a/src/fuzzer.cpp b/src/fuzzer.cpp new file mode 100644 index 0000000..4cd5aa2 --- /dev/null +++ b/src/fuzzer.cpp @@ -0,0 +1,385 @@ +#include +#include "rmm_tree.h" +#include "naive_rmm_tree.h" + +using std::size_t; +static constexpr size_t NPOS = std::numeric_limits::max(); + +static std::string bits_to_parens(const std::string &bits) +{ + std::string s; + s.reserve(bits.size()); + for (char c : bits) + s.push_back(c == '1' ? '(' : ')'); + return s; +} +static std::string vecbits_to_string(const std::vector &v) +{ + std::string s; + s.resize(v.size()); + for (size_t i = 0; i < v.size(); ++i) + s[i] = v[i] ? '1' : '0'; + return s; +} + +static std::string random_bits(std::mt19937_64 &rng, size_t n) +{ + std::uniform_int_distribution b01(0, 1); + std::string s; + s.resize(n); + for (size_t i = 0; i < n; i++) + s[i] = char('0' + b01(rng)); + return s; +} + +static std::string random_dyck_bits(std::mt19937_64 &rng, size_t m) +{ + std::string s; + s.resize(2 * m); + std::bernoulli_distribution coin(0.5); + int h = 0; + for (size_t pos = 0; pos < 2 * m; ++pos) + { + size_t rem = 2 * m - pos; + if (h == 0) + { + s[pos] = '1'; + ++h; + continue; + } + if ((size_t)h == rem - 1) + { + s[pos] = '0'; + --h; + continue; + } + s[pos] = coin(rng) ? '1' : '0'; + if (s[pos] == '1') + ++h; + else + --h; + if (h < 0) + { + s[pos] = '1'; + h += 2; + } + } + + if (h > 0) + { + for (size_t i = s.size(); i > 0 && h > 0; --i) + { + if (s[i - 1] == '1') + { + s[i - 1] = '0'; + --h; + } + } + } + return s; +} + +template +static std::string show_sz_or_npos(T x) +{ + if constexpr (std::is_same_v) + return (x == NPOS ? std::string("npos") : std::to_string(x)); + else + return std::to_string(x); +} + +[[noreturn]] static void die_mismatch( + const std::string &seed_info, + const std::string &bits, + const char *op_name, + const std::vector &args, + const std::string &want, + const std::string &got) +{ + std::cerr << "\n=== MISMATCH DETECTED ===\n"; + std::cerr << seed_info << "\n"; + std::cerr << "bits: " << bits << "\n"; + std::cerr << "parens: " << bits_to_parens(bits) << "\n"; + std::cerr << "op: " << op_name << "("; + for (size_t i = 0; i < args.size(); ++i) + { + if (i) + std::cerr << ", "; + std::cerr << args[i]; + } + std::cerr << ")\n"; + std::cerr << "expected: " << want << "\n"; + std::cerr << "got: " << got << "\n"; + std::cerr << "=========================\n"; + std::exit(1); +} + +int main() +{ + std::random_device rd; + uint64_t seed = ((uint64_t)rd() << 32) ^ (uint64_t)rd() ^ (uint64_t)std::chrono::high_resolution_clock::now().time_since_epoch().count(); + // seed = 4436852161472814998ull; + std::mt19937_64 rng(seed); + std::ostringstream oss; + oss << "seed = " << seed; + std::string seed_info = oss.str(); + std::cerr << seed_info << "\n"; + + const size_t LOG_EVERY = 50; + const size_t OPS_PER_CASE = 2000; + const size_t MAX_N = 40960; + const size_t B = 64; + + size_t iter = 0; + size_t total_ops = 0; + + for (;;) + { + ++iter; + + std::uniform_int_distribution coin(0, 1); + std::uniform_int_distribution len_u(1, (int)MAX_N); + std::uniform_int_distribution len_even(0, (int)(MAX_N / 2)); + + std::string bits; + if (coin(rng) == 0) + { + + bits = random_bits(rng, len_u(rng)); + } + else + { + + size_t m = 1 + (size_t)len_even(rng); + bits = random_dyck_bits(rng, m); + if (bits.size() == 0) + bits = "10"; + } + + pixie::RmMTree rm(bits, B); + // std::cerr << "N=" << rm.N << " B=" << rm.B << " overhead=" << rm.built_overhead << "\n"; + NaiveRmM nv(bits); + + const size_t N = bits.size(); + const size_t ones = nv.rank1(N); + const size_t zeros = N - ones; + const size_t pairs10 = (N >= 2 ? nv.rank10(N) : 0); + + std::uniform_int_distribution pos_i(0, N); + std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); + std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); + + for (size_t q = 0; q < OPS_PER_CASE; ++q) + { + ++total_ops; + int which = std::uniform_int_distribution(0, 17)(rng); + + size_t i = 0, j = 0; + if (N > 0) + { + i = pos_i_nz(rng); + j = pos_i_nz(rng); + if (i > j) + std::swap(i, j); + } + + switch (which) + { + case 0: + { // rank1 + size_t x = pos_i(rng); + auto a = nv.rank1(x); + auto b = rm.rank1(x); + if (a != b) + die_mismatch(seed_info, bits, "rank1", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 1: + { // rank0 + size_t x = pos_i(rng); + auto a = nv.rank0(x); + auto b = rm.rank0(x); + if (a != b) + die_mismatch(seed_info, bits, "rank0", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 2: + { // select1 + size_t k = std::uniform_int_distribution(0, ones + 3)(rng); + auto a = nv.select1(k); + auto b = rm.select1(k); + if (a != b) + die_mismatch(seed_info, bits, "select1", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 3: + { // select0 + size_t k = std::uniform_int_distribution(0, zeros + 3)(rng); + auto a = nv.select0(k); + auto b = rm.select0(k); + if (a != b) + die_mismatch(seed_info, bits, "select0", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 4: + { // rank10 + size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); + auto a = nv.rank10(x); + auto b = (N >= 2 ? rm.rank10(x) : 0); + if (a != b) + die_mismatch(seed_info, bits, "rank10", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 5: + { // select10 + size_t k = std::uniform_int_distribution(0, pairs10 + 3)(rng); + auto a = nv.select10(k); + auto b = rm.select10(k); + if (a != b) + die_mismatch(seed_info, bits, "select10", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 6: + { // excess + size_t x = pos_i(rng); + auto a = nv.excess(x); + auto b = rm.excess(x); + if (a != b) + die_mismatch(seed_info, bits, "excess", {std::to_string(x)}, std::to_string(a), std::to_string(b)); + } + break; + case 7: + { // fwdsearch + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.fwdsearch(start, d); + auto b = rm.fwdsearch(start, d); + if (a != b) + die_mismatch(seed_info, bits, "fwdsearch", {std::to_string(start), std::to_string(d)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 8: + { // bwdsearch + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.bwdsearch(start, d); + auto b = rm.bwdsearch(start, d); + if (a != b) + die_mismatch(seed_info, bits, "bwdsearch", {std::to_string(start), std::to_string(d)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 9: + { // rmq_pos + if (N == 0) + break; + auto a = nv.rmq_pos(i, j); + auto b = rm.rmq_pos(i, j); + if (a != b) + die_mismatch(seed_info, bits, "rmq_pos", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 10: + { // rmq_val + if (N == 0) + break; + auto a = nv.rmq_val(i, j); + auto b = rm.rmq_val(i, j); + if (a != b) + die_mismatch(seed_info, bits, "rmq_val", {std::to_string(i), std::to_string(j)}, std::to_string(a), std::to_string(b)); + } + break; + case 11: + { // mincount + if (N == 0) + break; + auto a = nv.mincount(i, j); + auto b = rm.mincount(i, j); + if (a != b) + die_mismatch(seed_info, bits, "mincount", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 12: + { // minselect + if (N == 0) + break; + size_t cnt = nv.mincount(i, j); + size_t k = cnt == 0 ? 1 : std::uniform_int_distribution(1, cnt + 1)(rng); + auto a = nv.minselect(i, j, k); + auto b = rm.minselect(i, j, k); + if (a != b) + die_mismatch(seed_info, bits, "minselect", {std::to_string(i), std::to_string(j), std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 13: + { // rMq_pos + if (N == 0) + break; + auto a = nv.rMq_pos(i, j); + auto b = rm.rMq_pos(i, j); + if (a != b) + die_mismatch(seed_info, bits, "rMq_pos", + {std::to_string(i), std::to_string(j)}, + show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 14: + { // rMq_val + if (N == 0) + break; + auto a = nv.rMq_val(i, j); + auto b = rm.rMq_val(i, j); + if (a != b) + die_mismatch(seed_info, bits, "rMq_val", + {std::to_string(i), std::to_string(j)}, + std::to_string(a), std::to_string(b)); + } + break; + case 15: + { // close + if (N == 0) + break; + size_t x = pos_i_nz(rng); // i in [0..N-1] + auto a = nv.close(x); + auto b = rm.close(x); + if (a != b) + die_mismatch(seed_info, bits, "close", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 16: + { // open + if (N == 0) + break; + size_t x = pos_i(rng); + auto a = nv.open(x); + auto b = rm.open(x); + if (a != b) + die_mismatch(seed_info, bits, "open", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + case 17: + { // enclose + if (N == 0) + break; + size_t x = pos_i(rng); + auto a = nv.enclose(x); + auto b = rm.enclose(x); + if (a != b) + die_mismatch(seed_info, bits, "enclose", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + } + break; + } + } + + if (iter % LOG_EVERY == 0) + { + std::cerr << "iter=" << iter + << " total_ops=" << total_ops + << " last_N=" << bits.size() + << " ok\n"; + } + } +} From 6c886487754d80136239b9b4cf60c733868ab910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 12:10:31 +0300 Subject: [PATCH 02/14] added descriptions to plot_rmm.py --- misc/plot_rmm.py | 75 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/misc/plot_rmm.py b/misc/plot_rmm.py index 86b7a30..01dd65b 100644 --- a/misc/plot_rmm.py +++ b/misc/plot_rmm.py @@ -1,4 +1,16 @@ -# Usage: python3 plot_rmm.py rmm_bench.csv --save-dir=plots --logx --smooth 3 +""" +Plot RmMTree benchmark results. + +This script reads a CSV produced by `bench_rmm.cpp` (with at least columns: +N, op, ns_per_op) and, for each operation, draws a scatter plot of +individual points and a trend line (optionally median-smoothed). +Plots are saved as PNG files and can also be shown interactively. + +Examples: + python3 plot_rmm.py rmm_bench.csv --save-dir plots --logx --smooth 3 + python3 plot_rmm.py rmm_bench.csv --show +""" + import argparse import os import pandas as pd @@ -24,12 +36,57 @@ def main(): - ap = argparse.ArgumentParser() - ap.add_argument("csv") - ap.add_argument("--save-dir", default="plots") - ap.add_argument("--show", action="store_true") - ap.add_argument("--logx", action="store_true") - ap.add_argument("--smooth", type=int, default=0) + ap = argparse.ArgumentParser( + description=( + "Read a CSV with RmMTree benchmark results and plot time per operation " + "versus sequence size N for each operation." + ), + epilog=( + "Examples:\n" + " python3 plot_rmm.py rmm_bench.csv --save-dir plots --logx --smooth 3\n" + " python3 plot_rmm.py rmm_bench.csv --show" + ), + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + ap.add_argument( + "csv", + metavar="CSV", + help="Path to the CSV file with results (output of bench_rmm.cpp).", + ) + ap.add_argument( + "--save-dir", + default="plots", + metavar="DIR", + help=( + "Directory to save PNG plots. Will be created if it doesn't exist. " + "Default: %(default)s" + ), + ) + ap.add_argument( + "--show", + action="store_true", + help=( + "Show plot windows after saving. " + "By default, plots are only written to disk." + ), + ) + ap.add_argument( + "--logx", + action="store_true", + help=( + "Use a logarithmic X axis (base 2). " "Handy when N grows in powers of two." + ), + ) + ap.add_argument( + "--smooth", + type=int, + default=0, + metavar="W", + help=( + "Median smoothing window size for the trend line. " + "0 or 1 means no smoothing. Default: %(default)s" + ), + ) args = ap.parse_args() os.makedirs(args.save_dir, exist_ok=True) @@ -59,8 +116,8 @@ def main(): if args.logx: plt.xscale("log", base=2) - plt.xlabel("Размер последовательности N (бит)") - plt.ylabel("Время на операцию, нс") + plt.xlabel("Sequence size N (bits)") + plt.ylabel("Time per operation, ns") plt.title(f"RmMTree: {op}") plt.grid(True, which="both", linestyle="--", alpha=0.4) out = os.path.join(args.save_dir, f"{op}.png") From 29ec53aeeb9d3e7e692a053f6ced2b0dfd4526a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 12:37:37 +0300 Subject: [PATCH 03/14] removed alias and made better field names --- include/rmm_tree.h | 597 +++++++++++++++++----------------- misc/include/naive_rmm_tree.h | 93 +++--- 2 files changed, 344 insertions(+), 346 deletions(-) diff --git a/include/rmm_tree.h b/include/rmm_tree.h index cde5d1f..645444f 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -24,16 +24,15 @@ namespace pixie // rank1/rank0, select1/select0, rank10/select10, excess, open/close, enclose. struct RmMTree { - using u64 = uint64_t; static constexpr size_t npos = std::numeric_limits::max(); // ------------ bitvector ------------ - std::vector bits; // LSB-first - size_t N = 0; // number of bits + std::vector bits; // LSB-first + size_t num_bits = 0; // number of bits // ------------ blocking ------------ - size_t B = 64; // block size (bits), leaf covers <= B bits - size_t L = 0; // #leaves = ceil(N/B) + size_t block_bits = 64; // block size (bits), leaf covers <= block_bits bits + size_t leaf_count = 0; // #leaves = ceil(num_bits/block_bits) #ifdef DEBUG float built_overhead = 0.0; #endif @@ -44,42 +43,42 @@ namespace pixie // needed for: rank1/rank0, select1/select0, select10, // excess, fwdsearch/bwdsearch/close/open/enclose, // rmq/rMq, minselect. - std::vector seglen; + std::vector segment_size_bits; - // e = total excess (+1 for '1', -1 for '0') on the node + // node_total_excess = total excess (+1 for '1', -1 for '0') on the node // needed for: rank1/rank0, select1/select0, excess, // fwdsearch/bwdsearch/close/open/enclose, // rmq/rMq, mincount/minselect. - std::vector e; + std::vector node_total_excess; - // m = minimum pref-excess on the node (from 0) + // node_min_prefix_excess = minimum pref-excess on the node (from 0) // needed for: fwdsearch/bwdsearch/close/open/enclose, rmq, mincount/minselect. - std::vector m; + std::vector node_min_prefix_excess; - // Mx = maximum pref-excess on the node (from 0) + // node_max_prefix_excess = maximum pref-excess on the node (from 0) // needed for: fwdsearch/bwdsearch/close/open/enclose, rMq. - std::vector Mx; + std::vector node_max_prefix_excess; - // nmin = number of positions where the minimum is attained + // node_min_count = number of positions where the minimum is attained // needed for: mincount/minselect. - std::vector nmin; + std::vector node_min_count; - // rr = # of "10" pattern occurrences inside the node + // node_pattern10_count = # of "10" pattern occurrences inside the node // needed for: rank10, select10. - std::vector rr; + std::vector node_pattern10_count; - // fb = first bit (0/1), lb = last bit (0/1) of the segment (to handle "10" crossing) + // node_first_bit = first bit (0/1), node_last_bit = last bit (0/1) of the segment (to handle "10" crossing) // both needed for: rank10, select10. - std::vector fb, lb; + std::vector node_first_bit, node_last_bit; public: // --------- construction ---------- RmMTree() = default; - // priorities for B: + // priorities for block_bits: // 1) honor max_overhead - // 2) honor an explicit request of B - // 3) B := log N + // 2) honor an explicit request of block_bits + // 3) block_bits := log num_bits explicit RmMTree(const std::string &bp, const size_t &leaf_block_bits /*0=auto*/ = 0, const float &max_overhead /*<0=off*/ = -1.0) @@ -87,11 +86,11 @@ namespace pixie build_from_string(bp, leaf_block_bits, max_overhead); } - // priorities for B: + // priorities for block_bits: // 1) honor max_overhead - // 2) honor an explicit request of B - // 3) B := log N - explicit RmMTree(const std::vector &words, size_t Nbits, + // 2) honor an explicit request of block_bits + // 3) block_bits := log num_bits + explicit RmMTree(const std::vector &words, size_t Nbits, const size_t &leaf_block_bits /*0=auto*/ = 0, const float &max_overhead /*<0=off*/ = -1.0) { @@ -112,8 +111,8 @@ namespace pixie for (const size_t &v : nodes) ans += ones_in_node(v); } - const size_t Lb = blk * B; - const size_t Rb = std::min(N, Lb + B); + const size_t Lb = blk * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); ans += rank1_in_block(Lb, std::min(i, Rb)); return ans; } @@ -143,11 +142,11 @@ namespace pixie else { k -= o_l; - base += seglen[Lc]; + base += segment_size_bits[Lc]; v = Rc; } } - return select1_in_block(base, std::min(base + seglen[v], N), k); + return select1_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); } // 1-based size_t select0(size_t k) const @@ -157,7 +156,7 @@ namespace pixie size_t v = 1; const auto zeros = [&](const size_t &x) noexcept { - return seglen[x] - ones_in_node(x); + return segment_size_bits[x] - ones_in_node(x); }; if (zeros(v) < k) return npos; @@ -174,11 +173,11 @@ namespace pixie else { k -= z_l; - base += seglen[Lc]; + base += segment_size_bits[Lc]; v = Rc; } } - return select0_in_block(base, std::min(base + seglen[v], N), k); + return select0_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); } // pattern "10": rank/select on starts of "10" @@ -195,13 +194,13 @@ namespace pixie const auto nodes = cover_blocks(0, blk - 1); for (const size_t &v : nodes) { - ans += rr[v]; - if (prev_last != -1 && prev_last == 1 && fb[v] == 0) + ans += node_pattern10_count[v]; + if (prev_last != -1 && prev_last == 1 && node_first_bit[v] == 0) ++ans; - prev_last = lb[v]; + prev_last = node_last_bit[v]; } } - const size_t Lb = blk * B; + const size_t Lb = blk * block_bits; ans += rr_in_block(Lb, i); // boundary between the last full node and the leaf tail if (blk > 0 && i > Lb && prev_last == 1 && bit(Lb) == 0) @@ -214,31 +213,31 @@ namespace pixie if (k == 0) return npos; size_t ind = 1; - if (rr[ind] < k) + if (node_pattern10_count[ind] < k) return npos; size_t base = 0; const size_t leaf0 = first_leaf_index(); while (ind < leaf0) { const size_t Lc = ind << 1, Rc = Lc | 1; - const size_t cross = (lb[Lc] == 1 && fb[Rc] == 0) ? 1u : 0u; - if (rr[Lc] >= k) + const size_t cross = (node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u; + if (node_pattern10_count[Lc] >= k) { ind = Lc; continue; } - size_t rem = k - rr[Lc]; + size_t rem = k - node_pattern10_count[Lc]; if (cross) { if (rem == 1) - return base + seglen[Lc] - 1; + return base + segment_size_bits[Lc] - 1; --rem; } - base += seglen[Lc]; + base += segment_size_bits[Lc]; ind = Rc; k = rem; } - return select10_in_block(base, std::min(base + seglen[ind], N), k); + return select10_in_block(base, std::min(base + segment_size_bits[ind], num_bits), k); } // prefix excess over [0, i): +1 for '1', -1 for '0' @@ -249,7 +248,7 @@ namespace pixie size_t fwdsearch(const size_t &i, const int &d) const { - if (i >= N) + if (i >= num_bits) return npos; const int start_excess = excess(i); @@ -257,8 +256,8 @@ namespace pixie // 1) scan the remainder of the current leaf const size_t blk = block_of(i); - const size_t Lb = blk * B; - const size_t Rb = std::min(N, Lb + B); + const size_t Lb = blk * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); int cur = start_excess; for (size_t p = i; p < Rb; ++p) { @@ -267,21 +266,21 @@ namespace pixie return p; } - // 2) suffix after the leaf: cover full blocks [blk+1 .. L-1] + // 2) suffix after the leaf: cover full blocks [blk+1 .. leaf_count-1] const int excess_at_Rb = excess(Rb); int need = target - excess_at_Rb; // target expressed in coordinates of the current node start - if (blk + 1 <= (L ? L - 1 : 0)) + if (blk + 1 <= (leaf_count ? leaf_count - 1 : 0)) { - const auto nodes = cover_blocks(blk + 1, L - 1); - size_t base = (blk + 1) * B; + const auto nodes = cover_blocks(blk + 1, leaf_count - 1); + size_t base = (blk + 1) * block_bits; for (const size_t &v : nodes) { if (need == 0) return base; - if (m[v] <= need && need <= Mx[v]) + if (node_min_prefix_excess[v] <= need && need <= node_max_prefix_excess[v]) return descend_fwd(v, need, base); - need -= e[v]; - base += seglen[v]; + need -= node_total_excess[v]; + base += segment_size_bits[v]; } } return npos; @@ -290,14 +289,14 @@ namespace pixie // ---- bwdsearch: climb & check left siblings ---- size_t bwdsearch(const size_t &i, const int &d) const { - if (i > N || i == 0) + if (i > num_bits || i == 0) return npos; const int start_excess = excess(i); const int target = start_excess + d; // 1) scan inside the block const size_t blk = block_of(i - 1); - const size_t Lb = blk * B; + const size_t Lb = blk * block_bits; int cur = start_excess; for (size_t p = i; p > Lb;) { @@ -319,26 +318,26 @@ namespace pixie while (v > 1) { if (v & 1) - { // v is the right child - const size_t sib = v ^ 1; // left sibling - const size_t border = base; // right border of the sibling (== start(v)) - const int need_node = need + e[sib]; // target in coordinates relative to the start of sib - const bool allow_rb = (border != i); // j must be < i + { // v is the right child + const size_t sib = v ^ 1; // left sibling + const size_t border = base; // right border of the sibling (== start(v)) + const int need_node = need + node_total_excess[sib]; // target in coordinates relative to the start of sib + const bool allow_rb = (border != i); // j must be < i // try inside the sibling, but return only if a position is found - if (need_node == 0 || (m[sib] <= need_node && need_node <= Mx[sib])) + if (need_node == 0 || (node_min_prefix_excess[sib] <= need_node && need_node <= node_max_prefix_excess[sib])) { - const size_t ans = descend_bwd(sib, border - seglen[sib], need_node, border, allow_rb); + const size_t ans = descend_bwd(sib, border - segment_size_bits[sib], need_node, border, allow_rb); if (ans != npos) return ans; } // junction between children is a separate branch (allowed only if < i) - if (need_node == e[sib] && border < i) + if (need_node == node_total_excess[sib] && border < i) return border; // stepped over the sibling, shifted the zero point of the coordinates - need += e[sib]; - base -= seglen[sib]; + need += node_total_excess[sib]; + base -= segment_size_bits[sib]; } v >>= 1; } @@ -348,14 +347,14 @@ namespace pixie // position of first minimum of excess on [i, j] (inclusive) size_t rmq_pos(const size_t &i, const size_t &j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return npos; const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * B; - const size_t Rbi = std::min(N, Lbi + B); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * B; + const size_t Lbj = blk_j * block_bits; int best_val = INT_MAX; size_t best_pos = npos; @@ -389,7 +388,7 @@ namespace pixie if (l & 1) { const size_t v = l++; - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand < best_val) { best_val = cand; @@ -397,7 +396,7 @@ namespace pixie chosen_node = v; pref_at_choice = pref; } - pref += e[v]; + pref += node_total_excess[v]; } if ((r & 1) == 0) Rnodes[rn++] = r--; @@ -407,7 +406,7 @@ namespace pixie while (rn--) { const size_t v = Rnodes[rn]; - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand < best_val) { best_val = cand; @@ -415,7 +414,7 @@ namespace pixie chosen_node = v; pref_at_choice = pref; } - pref += e[v]; + pref += node_total_excess[v]; } } @@ -440,10 +439,10 @@ namespace pixie return descend_first_min(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); } - // value of that minimum (absolute relative to start i, i.e., minimum of partial sums) + // value of that minimum (absolute relative to start i, i.excess_total., minimum of partial sums) int rmq_val(const size_t &i, const size_t &j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; size_t p = rmq_pos(i, j); if (p == npos) @@ -453,14 +452,14 @@ namespace pixie size_t rMq_pos(const size_t &i, const size_t &j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return npos; const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * B; - const size_t Rbi = std::min(N, Lbi + B); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * B; + const size_t Lbj = blk_j * block_bits; int best_val = INT_MIN; size_t best_pos = npos; @@ -494,7 +493,7 @@ namespace pixie if (l & 1) { const size_t v = l++; - const int cand = pref + Mx[v]; + const int cand = pref + node_max_prefix_excess[v]; if (cand > best_val) { best_val = cand; @@ -502,7 +501,7 @@ namespace pixie chosen_node = v; pref_at_choice = pref; } - pref += e[v]; + pref += node_total_excess[v]; } if ((r & 1) == 0) Rnodes[rn++] = r--; @@ -512,7 +511,7 @@ namespace pixie while (rn--) { const size_t v = Rnodes[rn]; - const int cand = pref + Mx[v]; + const int cand = pref + node_max_prefix_excess[v]; if (cand > best_val) { best_val = cand; @@ -520,7 +519,7 @@ namespace pixie chosen_node = v; pref_at_choice = pref; } - pref += e[v]; + pref += node_total_excess[v]; } } @@ -547,7 +546,7 @@ namespace pixie int rMq_val(const size_t &i, const size_t &j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; size_t p = rMq_pos(i, j); if (p == npos) @@ -558,14 +557,14 @@ namespace pixie // how many times min occurs on [i, j] size_t mincount(const size_t &i, const size_t &j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * B; - const size_t Rbi = std::min(N, Lbi + B); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * B; + const size_t Lbj = blk_j * block_bits; int best_val = INT_MAX; size_t cnt = 0; @@ -599,17 +598,17 @@ namespace pixie const auto mids = cover_blocks(blk_i + 1, blk_j - 1); for (const size_t &v : mids) { - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand < best_val) { best_val = cand; - cnt = nmin[v]; + cnt = node_min_count[v]; } else if (cand == best_val) { - cnt += nmin[v]; + cnt += node_min_count[v]; } - pref += e[v]; + pref += node_total_excess[v]; } } @@ -647,14 +646,14 @@ namespace pixie // position of the q-th occurrence (1-based) of the minimum on [i, j] size_t minselect(const size_t &i, const size_t &j, size_t q) const { - if (i > j || j >= N || q == 0) + if (i > j || j >= num_bits || q == 0) return npos; const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * B; - const size_t Rbi = std::min(N, Lbi + B); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * B; + const size_t Lbj = blk_j * block_bits; // prefix const size_t end_first = std::min(j, Rbi - 1); @@ -689,17 +688,17 @@ namespace pixie { if (l & 1) { - const int cand = pref + m[l]; + const int cand = pref + node_min_prefix_excess[l]; if (cand < best_val) { best_val = cand; - total_cnt = nmin[l]; + total_cnt = node_min_count[l]; } else if (cand == best_val) { - total_cnt += nmin[l]; + total_cnt += node_min_count[l]; } - pref += e[l++]; + pref += node_total_excess[l++]; } if ((r & 1) == 0) Rnodes[rn++] = r--; @@ -709,17 +708,17 @@ namespace pixie while (rn--) { const size_t v = Rnodes[rn]; - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand < best_val) { best_val = cand; - total_cnt = nmin[v]; + total_cnt = node_min_count[v]; } else if (cand == best_val) { - total_cnt += nmin[v]; + total_cnt += node_min_count[v]; } - pref += e[v]; + pref += node_total_excess[v]; } } @@ -764,16 +763,16 @@ namespace pixie if (l & 1) { const size_t v = l++; - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand == best_val) { - if (q <= nmin[v]) + if (q <= node_min_count[v]) { return descend_qth_min(v, best_val - pref, q, node_base(v)); } - q -= nmin[v]; + q -= node_min_count[v]; } - pref += e[v]; + pref += node_total_excess[v]; } if (!(r & 1)) Rnodes[rn++] = r--; @@ -783,16 +782,16 @@ namespace pixie while (rn--) { const size_t v = Rnodes[rn]; - const int cand = pref + m[v]; + const int cand = pref + node_min_prefix_excess[v]; if (cand == best_val) { - if (q <= nmin[v]) + if (q <= node_min_count[v]) { return descend_qth_min(v, best_val - pref, q, node_base(v)); } - q -= nmin[v]; + q -= node_min_count[v]; } - pref += e[v]; + pref += node_total_excess[v]; } } @@ -809,7 +808,7 @@ namespace pixie // close(i): matching ')' for '(' at i (or npos) inline size_t close(const size_t &i) const { - if (i >= N) + if (i >= num_bits) return npos; return fwdsearch(i, -1); } @@ -817,8 +816,8 @@ namespace pixie // open(i): matching '(' for ')' at i (or npos) inline size_t open(const size_t &i) const { - // bwdsearch allows i in [1..N] - if (i == 0 || i > N) + // bwdsearch allows i in [1..num_bits] + if (i == 0 || i > num_bits) return npos; const size_t r = bwdsearch(i, 0); return (r == npos ? npos : r + 1); @@ -827,26 +826,26 @@ namespace pixie // enclose(i): opening '(' that *encloses* position i (or npos) inline size_t enclose(const size_t &i) const { - if (i == 0 || i > N) + if (i == 0 || i > num_bits) return npos; const size_t r = bwdsearch(i, -2); return (r == npos ? npos : r + 1); } private: - static inline size_t pop10_in_slice64(const u64 &slice, const int &len) noexcept + static inline size_t pop10_in_slice64(const std::uint64_t &slice, const int &len) noexcept { if (len <= 1) return 0; - u64 P = slice & ~(slice >> 1); // candidates for "10" + std::uint64_t P = slice & ~(slice >> 1); // candidates for "10" if (len < 64) - P &= ((u64(1) << (len - 1)) - 1); + P &= ((std::uint64_t(1) << (len - 1)) - 1); else P &= 0x7FFFFFFFFFFFFFFFull; return (size_t)POPCNT(P); } - // fast rank of ones in [L,R) + // fast rank of ones in [leaf_count,R) size_t rank1_in_block(const size_t &Lb, const size_t &Rb) const noexcept { if (Rb <= Lb) @@ -858,12 +857,12 @@ namespace pixie size_t cnt = 0; if (w_l == w_r) { - const u64 mask = ((off_r == 0) ? 0 : ((u64(1) << off_r) - 1)) & (~u64(0) << off_l); + const std::uint64_t mask = ((off_r == 0) ? 0 : ((std::uint64_t(1) << off_r) - 1)) & (~std::uint64_t(0) << off_l); return (size_t)POPCNT(bits[w_l] & mask); } if (off_l) { - cnt += (size_t)POPCNT(bits[w_l] & (~u64(0) << off_l)); + cnt += (size_t)POPCNT(bits[w_l] & (~std::uint64_t(0) << off_l)); ++w_l; } while (w_l < w_r) @@ -872,7 +871,7 @@ namespace pixie ++w_l; } if (off_r) - cnt += (size_t)POPCNT(bits[w_r] & ((u64(1) << off_r) - 1)); + cnt += (size_t)POPCNT(bits[w_r] & ((std::uint64_t(1) << off_r) - 1)); return cnt; } @@ -889,27 +888,27 @@ namespace pixie if (w_l == w_r) { const int len = off_r - off_l + 1; - const u64 slice = bits[w_l] >> off_l; + const std::uint64_t slice = bits[w_l] >> off_l; return pop10_in_slice64(slice, len); } // prefix word { const int len = 64 - off_l; - const u64 slice = bits[w_l] >> off_l; + const std::uint64_t slice = bits[w_l] >> off_l; cnt += pop10_in_slice64(slice, len); } // full interior words for (size_t w = w_l + 1; w < w_r; ++w) { - const u64 x = bits[w]; + const std::uint64_t x = bits[w]; cnt += pop10_in_slice64(x, 64); } // suffix word { const int len = off_r + 1; - const u64 mask = (len == 64) ? ~u64(0) : ((u64(1) << len) - 1); - const u64 slice = bits[w_r] & mask; + const std::uint64_t mask = (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); + const std::uint64_t slice = bits[w_r] & mask; cnt += pop10_in_slice64(slice, len); } // cross-word boundaries (bit 63 of w and bit 0 of w+1) @@ -931,13 +930,13 @@ namespace pixie const int off_l = Lb & 63; const int off_r = (Rb - 1) & 63; - const auto select_in_masked_slice = [&](const u64 &slice, const int &len, const size_t &kk) noexcept -> int + const auto select_in_masked_slice = [&](const std::uint64_t &slice, const int &len, const size_t &kk) noexcept -> int { if (len <= 1) return -1; - u64 P = slice & ~(slice >> 1); + std::uint64_t P = slice & ~(slice >> 1); if (len < 64) - P &= ((u64(1) << (len - 1)) - 1); + P &= ((std::uint64_t(1) << (len - 1)) - 1); else P &= 0x7FFFFFFFFFFFFFFFull; return select_in_word(P, kk); @@ -946,7 +945,7 @@ namespace pixie if (w_l == w_r) { const int len = off_r - off_l + 1; - const u64 slice = bits[w_l] >> off_l; + const std::uint64_t slice = bits[w_l] >> off_l; const int off = select_in_masked_slice(slice, len, k); return off >= 0 ? (Lb + (size_t)off) : npos; } @@ -954,9 +953,9 @@ namespace pixie // prefix word { const int len = 64 - off_l; - const u64 slice = bits[w_l] >> off_l; - u64 P = slice & ~(slice >> 1); - P &= ((u64(1) << (len - 1)) - 1); + const std::uint64_t slice = bits[w_l] >> off_l; + std::uint64_t P = slice & ~(slice >> 1); + P &= ((std::uint64_t(1) << (len - 1)) - 1); const int c = POPCNT(P); if (k <= (size_t)c) { @@ -976,8 +975,8 @@ namespace pixie return (w << 6) + 63; } // full word w+1 (positions 0..62) - const u64 x = bits[w + 1]; - const u64 P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; + const std::uint64_t x = bits[w + 1]; + const std::uint64_t P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; const int c = POPCNT(P); if (k <= (size_t)c) { @@ -999,8 +998,8 @@ namespace pixie // suffix word w_r: [0..off_r] { const int len = off_r + 1; - const u64 mask = (len == 64) ? ~u64(0) : ((u64(1) << len) - 1); - const u64 slice = bits[w_r] & mask; + const std::uint64_t mask = (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); + const std::uint64_t slice = bits[w_r] & mask; const int off = select_in_masked_slice(slice, len, k); if (off >= 0) return (w_r << 6) + (size_t)off; @@ -1010,15 +1009,15 @@ namespace pixie struct ByteAgg { - int8_t e; // total excess for the byte - int8_t m; // minimum prefix within the byte (from 0) - int8_t Mx; // maximum prefix within the byte (from 0) - uint8_t nmin; // number of positions attaining the minimum in the byte - uint8_t rr; // number of "10" patterns inside the byte - uint8_t fb; // first bit (LSB) - uint8_t lb; // last bit (MSB) - uint8_t pm; // pos of first minimum in this byte - uint8_t pM; // pos of first maximum in this byte + int8_t excess_total; // total excess for the byte + int8_t min_prefix; // minimum prefix within the byte (from 0) + int8_t max_prefix; // maximum prefix within the byte (from 0) + uint8_t min_count; // number of positions attaining the minimum in the byte + uint8_t pattern10_count; // number of "10" patterns inside the byte + uint8_t first_bit; // first bit (LSB) + uint8_t last_bit; // last bit (MSB) + uint8_t pos_first_min; // pos of first minimum in this byte + uint8_t pos_first_max; // pos of first maximum in this byte }; static inline const std::array &LUT8() noexcept @@ -1055,15 +1054,15 @@ namespace pixie } } ByteAgg a{}; - a.e = cur; - a.m = (mn == INT_MAX ? 0 : mn); - a.Mx = (mx == INT_MIN ? 0 : mx); - a.nmin = cnt; - a.rr = rrc; - a.fb = get(0); - a.lb = get(7); - a.pm = pm; - a.pM = pM; + a.excess_total = cur; + a.min_prefix = (mn == INT_MAX ? 0 : mn); + a.max_prefix = (mx == INT_MIN ? 0 : mx); + a.min_count = cnt; + a.pattern10_count = rrc; + a.first_bit = get(0); + a.last_bit = get(7); + a.pos_first_min = pm; + a.pos_first_max = pM; t[b] = a; } return t; @@ -1076,11 +1075,11 @@ namespace pixie { const size_t w = pos >> 6; const size_t off = pos & 63; - const u64 lo = bits[w] >> off; + const std::uint64_t lo = bits[w] >> off; if (off <= 56) return uint8_t(lo & 0xFFu); - const u64 hi = (w + 1 < bits.size()) ? bits[w + 1] : 0; - const u64 x = (lo | (hi << (64 - off))) & 0xFFu; + const std::uint64_t hi = (w + 1 < bits.size()) ? bits[w + 1] : 0; + const std::uint64_t x = (lo | (hi << (64 - off))) & 0xFFu; return uint8_t(x); } @@ -1091,16 +1090,16 @@ namespace pixie while (v < leaf0) { const size_t Lc = v << 1, Rc = Lc | 1; - const int leftX = Mx[Lc]; - const int rightX = e[Lc] + Mx[Rc]; + const int leftX = node_max_prefix_excess[Lc]; + const int rightX = node_total_excess[Lc] + node_max_prefix_excess[Rc]; if (leftX >= rightX && leftX == d) { v = Lc; } else if (rightX == d) { - base += seglen[Lc]; - d -= e[Lc]; + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; v = Rc; } else @@ -1110,7 +1109,7 @@ namespace pixie } const size_t Lb = base; - const size_t Rb = std::min(base + seglen[v], N); + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); int mx; size_t pos; @@ -1120,10 +1119,10 @@ namespace pixie inline size_t first_leaf_index() const noexcept { - return std::bit_ceil(std::max(1, L)); + return std::bit_ceil(std::max(1, leaf_count)); } - size_t block_of(const size_t &i) const noexcept { return i / B; } + size_t block_of(const size_t &i) const noexcept { return i / block_bits; } // index in heap array of the leaf whose segment starts at 'block_start' size_t leaf_index_of(const size_t &block_start) const noexcept @@ -1136,12 +1135,12 @@ namespace pixie { const size_t leaf0 = first_leaf_index(); if (v >= leaf0) - return (v - leaf0) * B; + return (v - leaf0) * block_bits; size_t base = 0; for (; v > 1; v >>= 1) if (v & 1) - base += seglen[v - 1]; + base += segment_size_bits[v - 1]; return base; } @@ -1174,16 +1173,16 @@ namespace pixie { const size_t Lc = v << 1; const size_t Rc = Lc | 1; - if (m[Lc] <= need && need <= Mx[Lc]) + if (node_min_prefix_excess[Lc] <= need && need <= node_max_prefix_excess[Lc]) v = Lc; else { - need -= e[Lc]; - base += seglen[Lc]; + need -= node_total_excess[Lc]; + base += segment_size_bits[Lc]; v = Rc; } } - const size_t Rb = std::min(base + seglen[v], N); + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); int cur = 0; for (size_t p = base; p < Rb; ++p) { @@ -1202,25 +1201,25 @@ namespace pixie { const size_t Lc = v << 1; const size_t Rc = Lc | 1; - const int need_r = need - e[Lc]; + const int need_r = need - node_total_excess[Lc]; // 1) try the right child first (to capture the rightmost j) - if (m[Rc] <= need_r && need_r <= Mx[Rc]) + if (node_min_prefix_excess[Rc] <= need_r && need_r <= node_max_prefix_excess[Rc]) { - const size_t ans = descend_bwd(Rc, base + seglen[Lc], need_r, right_border, allow_rb); + const size_t ans = descend_bwd(Rc, base + segment_size_bits[Lc], need_r, right_border, allow_rb); if (ans != npos) return ans; } // 2) junction between children (end of the left child) - const size_t j_border = base + seglen[Lc]; - if (need == e[Lc] && (j_border < right_border || allow_rb)) + const size_t j_border = base + segment_size_bits[Lc]; + if (need == node_total_excess[Lc] && (j_border < right_border || allow_rb)) { return j_border; } // 3) can we move left within the range? - if (m[Lc] <= need && need <= Mx[Lc]) + if (node_min_prefix_excess[Lc] <= need && need <= node_max_prefix_excess[Lc]) { v = Lc; continue; @@ -1236,7 +1235,7 @@ namespace pixie } const size_t Lb = base; - const size_t Rb = std::min(base + seglen[v], N); + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); const size_t RB = std::min(right_border, Rb); int cur = 0; @@ -1269,16 +1268,16 @@ namespace pixie while (v < leaf0) { const size_t Lc = v << 1, Rc = Lc | 1; - const int leftm = m[Lc]; - const int rightm = e[Lc] + m[Rc]; + const int leftm = node_min_prefix_excess[Lc]; + const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; if (leftm <= rightm && leftm == d) { v = Lc; } else if (rightm == d) { - base += seglen[Lc]; - d -= e[Lc]; + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; v = Rc; } else @@ -1288,7 +1287,7 @@ namespace pixie } const size_t Lb = base; - const size_t Rb = std::min(base + seglen[v], N); + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); int mn; size_t pos; @@ -1303,27 +1302,27 @@ namespace pixie { const size_t Lc = v << 1; const size_t Rc = Lc | 1; - const int leftm = m[Lc]; - const int rightm = e[Lc] + m[Rc]; + const int leftm = node_min_prefix_excess[Lc]; + const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; if (leftm == d) { - if (nmin[Lc] >= q) + if (node_min_count[Lc] >= q) { v = Lc; continue; } - q -= nmin[Lc]; + q -= node_min_count[Lc]; } if (rightm == d) { - base += seglen[Lc]; - d -= e[Lc]; + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; v = Rc; continue; } return npos; } - return qth_min_in_block(base, std::min(base + seglen[v], N) - 1, q); + return qth_min_in_block(base, std::min(base + segment_size_bits[v], num_bits) - 1, q); } // 1-based @@ -1332,16 +1331,16 @@ namespace pixie size_t w_l = Lb >> 6; const size_t w_r = (Rb >> 6); const size_t off_l = Lb & 63; - const u64 mask_l = (off_l ? (~u64(0) << off_l) : ~u64(0)); + const std::uint64_t mask_l = (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); if (w_l == w_r) { - const u64 w = bits[w_l] & mask_l & ((Rb & 63) ? ((u64(1) << (Rb & 63)) - 1) : ~u64(0)); + const std::uint64_t w = bits[w_l] & mask_l & ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) : ~std::uint64_t(0)); return Lb + select_in_word(w, k); } // prefix if (off_l) { - const u64 w = bits[w_l] & mask_l; + const std::uint64_t w = bits[w_l] & mask_l; const int c = POPCNT(w); if (k <= (size_t)c) return Lb + select_in_word(w, k); @@ -1351,7 +1350,7 @@ namespace pixie // full words while (w_l < w_r) { - const u64 w = bits[w_l]; + const std::uint64_t w = bits[w_l]; const int c = POPCNT(w); if (k <= (size_t)c) return (w_l << 6) + select_in_word(w, k); @@ -1362,7 +1361,7 @@ namespace pixie const size_t off_r = Rb & 63; if (off_r) { - const u64 w = bits[w_l] & ((u64(1) << off_r) - 1); + const std::uint64_t w = bits[w_l] & ((std::uint64_t(1) << off_r) - 1); const int c = POPCNT(w); if (k <= (size_t)c) return (w_l << 6) + select_in_word(w, k); @@ -1382,9 +1381,9 @@ namespace pixie if (w_l == w_r) { - const u64 mask_l = (off_l ? (~u64(0) << off_l) : ~u64(0)); - const u64 mask_r = ((Rb & 63) ? ((u64(1) << (Rb & 63)) - 1) : ~u64(0)); - const u64 w = (~bits[w_l]) & mask_l & mask_r; + const std::uint64_t mask_l = (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); + const std::uint64_t mask_r = ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) : ~std::uint64_t(0)); + const std::uint64_t w = (~bits[w_l]) & mask_l & mask_r; const int off = select_in_word(w, k); return (off >= 0) ? (Lb + (size_t)off) : npos; } @@ -1392,7 +1391,7 @@ namespace pixie // prefix if (off_l) { - const u64 w = (~bits[w_l]) & (~u64(0) << off_l); + const std::uint64_t w = (~bits[w_l]) & (~std::uint64_t(0) << off_l); const int c = POPCNT(w); if (k <= (size_t)c) { @@ -1406,7 +1405,7 @@ namespace pixie // full words while (w_l < w_r) { - const u64 w = ~bits[w_l]; + const std::uint64_t w = ~bits[w_l]; const int c = POPCNT(w); if (k <= (size_t)c) { @@ -1421,7 +1420,7 @@ namespace pixie const size_t off_r = Rb & 63; if (off_r) { - const u64 w = (~bits[w_l]) & ((u64(1) << off_r) - 1); + const std::uint64_t w = (~bits[w_l]) & ((std::uint64_t(1) << off_r) - 1); const int c = POPCNT(w); if (k <= (size_t)c) { @@ -1432,7 +1431,7 @@ namespace pixie return npos; } - static inline int select_in_word(u64 w, size_t k) noexcept + static inline int select_in_word(std::uint64_t w, size_t k) noexcept { #ifdef __GNUC__ while (w) @@ -1460,8 +1459,8 @@ namespace pixie { if (Nbits == 0) return 0; - size_t L = ceil_div(Nbits, Bpow2); - return std::bit_ceil(std::max(1, L)) + L; + size_t leaf_count = ceil_div(Nbits, Bpow2); + return std::bit_ceil(std::max(1, leaf_count)) + leaf_count; } static inline float overhead_for(const size_t &Nbits, const size_t &Bpow2) noexcept @@ -1476,38 +1475,38 @@ namespace pixie return ((float)aux) / ((float)bb); } - // Returns the minimal B (power-of-two) that keeps overhead ≤ cap. + // Returns the minimal block_bits (power-of-two) that keeps overhead ≤ cap. static inline size_t choose_block_bits_for_overhead(const size_t &Nbits, const float &cap) noexcept { if (cap < 0.f) return 64; const size_t Bmax = std::min(Nbits, 16384); - size_t B = 64; - while (B < Bmax) + size_t block_bits = 64; + while (block_bits < Bmax) { - if (overhead_for(Nbits, B) <= cap) + if (overhead_for(Nbits, block_bits) <= cap) break; - B <<= 1; + block_bits <<= 1; } - return B; + return block_bits; } void build_from_string(const std::string &s, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) { - N = s.size(); - bits.assign((N + 63) / 64, 0); - for (size_t i = 0; i < N; ++i) + num_bits = s.size(); + bits.assign((num_bits + 63) / 64, 0); + for (size_t i = 0; i < num_bits; ++i) if (s[i] == '1') set1(i); build(leaf_block_bits, max_overhead); } - void build_from_words(const std::vector &w, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) + void build_from_words(const std::vector &w, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) { bits = w; - N = Nbits; - if (bits.size() * 64 < N) - bits.resize((N + 63) / 64); + num_bits = Nbits; + if (bits.size() * 64 < num_bits) + bits.resize((num_bits + 63) / 64); build(leaf_block_bits, max_overhead); } @@ -1518,12 +1517,12 @@ namespace pixie inline void set1(const size_t &i) noexcept { - bits[i >> 6] |= (u64(1) << (i & 63)); + bits[i >> 6] |= (std::uint64_t(1) << (i & 63)); } inline uint32_t ones_in_node(const size_t &v) const noexcept { - return ((int64_t)seglen[v] + (int64_t)e[v]) >> 1; + return ((int64_t)segment_size_bits[v] + (int64_t)node_total_excess[v]) >> 1; } // Passing through the range [l..r] (inclusive): counts mn and cnt (how many times the minimum is reached), @@ -1558,17 +1557,17 @@ namespace pixie while (l + 7 <= r) { const auto &a = T[get_byte(l)]; - const int cand = cur + a.m; + const int cand = cur + a.min_prefix; if (cand < mn) { mn = cand; - cnt = a.nmin; + cnt = a.min_count; } else if (cand == mn) { - cnt += a.nmin; + cnt += a.min_count; } - cur += a.e; + cur += a.excess_total; l += 8; } // tail @@ -1614,8 +1613,8 @@ namespace pixie while (p + 7 <= r) { const auto &a = T[get_byte(p)]; - mn = std::min(mn, cur + a.m); - cur += a.e; + mn = std::min(mn, cur + a.min_prefix); + cur += a.excess_total; p += 8; } while (p <= r) @@ -1646,21 +1645,21 @@ namespace pixie { const uint8_t b = get_byte(p); const auto &a = T[b]; - const int cand = cur + a.m; + const int cand = cur + a.min_prefix; if (cand == mn) { int s = 0; for (int k = 0; k < 8; ++k) { s += ((b >> k) & 1u) ? +1 : -1; - if (s == a.m) + if (s == a.min_prefix) { if (--q == 0) return p + k; } } } - cur += a.e; + cur += a.excess_total; p += 8; } @@ -1702,13 +1701,13 @@ namespace pixie while (l + 7 <= r) { const auto &a = T[get_byte(l)]; - const int cand = cur + a.m; + const int cand = cur + a.min_prefix; if (cand < mn) { mn = cand; - first_pos = l + a.pm; + first_pos = l + a.pos_first_min; } - cur += a.e; + cur += a.excess_total; l += 8; } @@ -1748,13 +1747,13 @@ namespace pixie while (l + 7 <= r) { const auto &a = T[get_byte(l)]; - const int cand = cur + a.Mx; + const int cand = cur + a.max_prefix; if (cand > mx) { mx = cand; - first_pos = l + a.pM; + first_pos = l + a.pos_first_max; } - cur += a.e; + cur += a.excess_total; l += 8; } @@ -1775,42 +1774,42 @@ namespace pixie void build(const size_t &leaf_block_bits, const float &max_overhead) { // the lower clamp depends on the desired overhead fraction; otherwise use 64 - const size_t clamp_by_overhead = (max_overhead >= 0.0 ? choose_block_bits_for_overhead(N, max_overhead) : size_t(64)); + const size_t clamp_by_overhead = (max_overhead >= 0.0 ? choose_block_bits_for_overhead(num_bits, max_overhead) : size_t(64)); - // chosen B: honor an explicit request, but not below clamp_by_overhead + // chosen block_bits: honor an explicit request, but not below clamp_by_overhead if (leaf_block_bits == 0) - B = std::max(clamp_by_overhead, std::bit_ceil((N <= 1) ? 1 : std::bit_width(N - 1))); + block_bits = std::max(clamp_by_overhead, std::bit_ceil((num_bits <= 1) ? 1 : std::bit_width(num_bits - 1))); else - B = std::max(clamp_by_overhead, std::bit_ceil(std::max(1, leaf_block_bits))); + block_bits = std::max(clamp_by_overhead, std::bit_ceil(std::max(1, leaf_block_bits))); #ifdef DEBUG // finalizes the achieved overhead percentage - built_overhead = overhead_for(N, B); + built_overhead = overhead_for(num_bits, block_bits); #endif - L = ceil_div(N, B); + leaf_count = ceil_div(num_bits, block_bits); const size_t leaf0 = first_leaf_index(); - const size_t tree_size = leaf0 + L - 1; - seglen.assign(tree_size + 1, 0); - e.assign(tree_size + 1, 0); - m.assign(tree_size + 1, 0); - Mx.assign(tree_size + 1, 0); - nmin.assign(tree_size + 1, 0); - rr.assign(tree_size + 1, 0); - fb.assign(tree_size + 1, 0); - lb.assign(tree_size + 1, 0); + const size_t tree_size = leaf0 + leaf_count - 1; + segment_size_bits.assign(tree_size + 1, 0); + node_total_excess.assign(tree_size + 1, 0); + node_min_prefix_excess.assign(tree_size + 1, 0); + node_max_prefix_excess.assign(tree_size + 1, 0); + node_min_count.assign(tree_size + 1, 0); + node_pattern10_count.assign(tree_size + 1, 0); + node_first_bit.assign(tree_size + 1, 0); + node_last_bit.assign(tree_size + 1, 0); // leaves - for (size_t k = 0; k < L; ++k) + for (size_t k = 0; k < leaf_count; ++k) { const size_t v = leaf0 + k; - const size_t Lb = k * B; - const size_t Rb = std::min(N, Lb + B); - seglen[v] = Rb - Lb; + const size_t Lb = k * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); + segment_size_bits[v] = Rb - Lb; if (Lb < Rb) { - fb[v] = bit(Lb); + node_first_bit[v] = bit(Lb); } const auto &T = LUT8(); @@ -1830,26 +1829,26 @@ namespace pixie const auto &a = T[b]; // internal "10" inside the byte - rrc += a.rr; + rrc += a.pattern10_count; // stitching across the boundary between the previous and current byte (within the segment) - if (prev_bit == 1 && a.fb == 0) + if (prev_bit == 1 && a.first_bit == 0) rrc++; // prefix min/max accounting for the current offset - const int cand_min = cur + a.m; + const int cand_min = cur + a.min_prefix; if (cand_min < mn) { mn = cand_min; - mn_cnt = a.nmin; + mn_cnt = a.min_count; } else if (cand_min == mn) { - mn_cnt += a.nmin; + mn_cnt += a.min_count; } - mx = std::max(mx, cur + a.Mx); - cur += a.e; - prev_bit = a.lb; + mx = std::max(mx, cur + a.max_prefix); + cur += a.excess_total; + prev_bit = a.last_bit; p += 8; } @@ -1878,60 +1877,60 @@ namespace pixie } if (Lb < Rb) - lb[v] = prev_bit; + node_last_bit[v] = prev_bit; - e[v] = cur; - m[v] = (seglen[v] == 0 ? 0 : mn); - Mx[v] = (seglen[v] == 0 ? 0 : mx); - nmin[v] = mn_cnt; - rr[v] = (uint32_t)rrc; + node_total_excess[v] = cur; + node_min_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mn); + node_max_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mx); + node_min_count[v] = mn_cnt; + node_pattern10_count[v] = (uint32_t)rrc; } // internal nodes for (size_t v = leaf0 - 1; v >= 1; --v) { const size_t Lc = v << 1; const size_t Rc = Lc | 1; - const bool has_l = (Lc <= tree_size) && seglen[Lc]; - const bool has_r = (Rc <= tree_size) && seglen[Rc]; + const bool has_l = (Lc <= tree_size) && segment_size_bits[Lc]; + const bool has_r = (Rc <= tree_size) && segment_size_bits[Rc]; if (!has_l && !has_r) { - seglen[v] = 0; + segment_size_bits[v] = 0; continue; } if (has_l && !has_r) { - seglen[v] = seglen[Lc]; - e[v] = e[Lc]; - m[v] = m[Lc]; - Mx[v] = Mx[Lc]; - nmin[v] = nmin[Lc]; - rr[v] = rr[Lc]; - fb[v] = fb[Lc]; - lb[v] = lb[Lc]; + segment_size_bits[v] = segment_size_bits[Lc]; + node_total_excess[v] = node_total_excess[Lc]; + node_min_prefix_excess[v] = node_min_prefix_excess[Lc]; + node_max_prefix_excess[v] = node_max_prefix_excess[Lc]; + node_min_count[v] = node_min_count[Lc]; + node_pattern10_count[v] = node_pattern10_count[Lc]; + node_first_bit[v] = node_first_bit[Lc]; + node_last_bit[v] = node_last_bit[Lc]; } else if (!has_l && has_r) { - seglen[v] = seglen[Rc]; - e[v] = e[Rc]; - m[v] = m[Rc]; - Mx[v] = Mx[Rc]; - nmin[v] = nmin[Rc]; - rr[v] = rr[Rc]; - fb[v] = fb[Rc]; - lb[v] = lb[Rc]; + segment_size_bits[v] = segment_size_bits[Rc]; + node_total_excess[v] = node_total_excess[Rc]; + node_min_prefix_excess[v] = node_min_prefix_excess[Rc]; + node_max_prefix_excess[v] = node_max_prefix_excess[Rc]; + node_min_count[v] = node_min_count[Rc]; + node_pattern10_count[v] = node_pattern10_count[Rc]; + node_first_bit[v] = node_first_bit[Rc]; + node_last_bit[v] = node_last_bit[Rc]; } else { - seglen[v] = seglen[Lc] + seglen[Rc]; - e[v] = e[Lc] + e[Rc]; - const int m_r = e[Lc] + m[Rc]; - const int M_R = e[Lc] + Mx[Rc]; - m[v] = std::min(m[Lc], m_r); - Mx[v] = std::max(Mx[Lc], M_R); - nmin[v] = (m[Lc] == m[v] ? nmin[Lc] : 0) + (m_r == m[v] ? nmin[Rc] : 0); - rr[v] = rr[Lc] + rr[Rc] + ((lb[Lc] == 1 && fb[Rc] == 0) ? 1u : 0u); - fb[v] = fb[Lc]; - lb[v] = lb[Rc]; + segment_size_bits[v] = segment_size_bits[Lc] + segment_size_bits[Rc]; + node_total_excess[v] = node_total_excess[Lc] + node_total_excess[Rc]; + const int m_r = node_total_excess[Lc] + node_min_prefix_excess[Rc]; + const int M_R = node_total_excess[Lc] + node_max_prefix_excess[Rc]; + node_min_prefix_excess[v] = std::min(node_min_prefix_excess[Lc], m_r); + node_max_prefix_excess[v] = std::max(node_max_prefix_excess[Lc], M_R); + node_min_count[v] = (node_min_prefix_excess[Lc] == node_min_prefix_excess[v] ? node_min_count[Lc] : 0) + (m_r == node_min_prefix_excess[v] ? node_min_count[Rc] : 0); + node_pattern10_count[v] = node_pattern10_count[Lc] + node_pattern10_count[Rc] + ((node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u); + node_first_bit[v] = node_first_bit[Lc]; + node_last_bit[v] = node_last_bit[Rc]; } if (v == 1) break; diff --git a/misc/include/naive_rmm_tree.h b/misc/include/naive_rmm_tree.h index d0d67fd..ccd1b52 100644 --- a/misc/include/naive_rmm_tree.h +++ b/misc/include/naive_rmm_tree.h @@ -7,41 +7,40 @@ struct NaiveRmM { - using u64 = std::uint64_t; static constexpr std::size_t npos = std::numeric_limits::max(); - std::vector b; - std::size_t N = 0; + std::vector bits; + std::size_t num_bits = 0; NaiveRmM() = default; explicit NaiveRmM(const std::string &s) { build_from_string(s); } - NaiveRmM(const std::vector &words, std::size_t nbits) { build_from_words(words, nbits); } + NaiveRmM(const std::vector &words, std::size_t nbits) { build_from_words(words, nbits); } void build_from_string(const std::string &s) { - N = s.size(); - b.resize(N); - for (std::size_t i = 0; i < N; i++) - b[i] = (s[i] == '1'); + num_bits = s.size(); + bits.resize(num_bits); + for (std::size_t i = 0; i < num_bits; i++) + bits[i] = (s[i] == '1'); } - void build_from_words(const std::vector &words, std::size_t nbits) + void build_from_words(const std::vector &words, std::size_t nbits) { - N = nbits; - b.assign(N, 0); - for (std::size_t i = 0; i < N; i++) - b[i] = ((words[i >> 6] >> (i & 63)) & 1u); + num_bits = nbits; + bits.assign(num_bits, 0); + for (std::size_t i = 0; i < num_bits; i++) + bits[i] = ((words[i >> 6] >> (i & 63)) & 1u); } - inline int bit(std::size_t i) const { return b[i]; } - inline std::size_t size() const { return N; } + inline int bit(std::size_t i) const { return bits[i]; } + inline std::size_t size() const { return num_bits; } std::size_t rank1(std::size_t i) const { - if (i > N) - i = N; + if (i > num_bits) + i = num_bits; std::size_t c = 0; for (std::size_t p = 0; p < i; p++) - c += (b[p] != 0); + c += (bits[p] != 0); return c; } std::size_t rank0(std::size_t i) const { return i - rank1(i); } @@ -51,8 +50,8 @@ struct NaiveRmM { if (k == 0) return npos; - for (std::size_t p = 0; p < N; p++) - if (b[p]) + for (std::size_t p = 0; p < num_bits; p++) + if (bits[p]) { if (--k == 0) return p; @@ -65,8 +64,8 @@ struct NaiveRmM { if (k == 0) return npos; - for (std::size_t p = 0; p < N; p++) - if (!b[p]) + for (std::size_t p = 0; p < num_bits; p++) + if (!bits[p]) { if (--k == 0) return p; @@ -80,7 +79,7 @@ struct NaiveRmM return 0; std::size_t c = 0; for (std::size_t p = 0; p + 1 < i; ++p) - if (b[p] == 1 && b[p + 1] == 0) + if (bits[p] == 1 && bits[p + 1] == 0) ++c; return c; } @@ -90,8 +89,8 @@ struct NaiveRmM { if (k == 0) return npos; - for (std::size_t p = 0; p + 1 < N; ++p) - if (b[p] == 1 && b[p + 1] == 0) + for (std::size_t p = 0; p + 1 < num_bits; ++p) + if (bits[p] == 1 && bits[p + 1] == 0) { if (--k == 0) return p; @@ -107,13 +106,13 @@ struct NaiveRmM std::size_t fwdsearch(std::size_t i, int d) const { - if (i >= N) + if (i >= num_bits) return npos; int target = excess(i) + d; int cur = excess(i); - for (std::size_t p = i; p < N; ++p) + for (std::size_t p = i; p < num_bits; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur == target) return p; } @@ -123,7 +122,7 @@ struct NaiveRmM std::size_t bwdsearch(std::size_t i, int d) const { - if (i > N) + if (i > num_bits) return npos; if (i == 0) return npos; @@ -133,7 +132,7 @@ struct NaiveRmM for (std::size_t p = i; p > 0;) { --p; - cur += b[p] ? -1 : +1; + cur += bits[p] ? -1 : +1; if (cur == target) return p; } @@ -142,13 +141,13 @@ struct NaiveRmM std::size_t rmq_pos(std::size_t i, std::size_t j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return npos; int cur = 0, mn = std::numeric_limits::max(); std::size_t pos = npos; for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur < mn) { mn = cur; @@ -160,12 +159,12 @@ struct NaiveRmM int rmq_val(std::size_t i, std::size_t j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; int cur = 0, mn = std::numeric_limits::max(); for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur < mn) mn = cur; } @@ -174,13 +173,13 @@ struct NaiveRmM std::size_t rMq_pos(std::size_t i, std::size_t j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return npos; int cur = 0, mx = std::numeric_limits::min(); std::size_t pos = npos; for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur > mx) { mx = cur; @@ -192,12 +191,12 @@ struct NaiveRmM int rMq_val(std::size_t i, std::size_t j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; int cur = 0, mx = std::numeric_limits::min(); for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur > mx) mx = cur; } @@ -206,12 +205,12 @@ struct NaiveRmM std::size_t mincount(std::size_t i, std::size_t j) const { - if (i > j || j >= N) + if (i > j || j >= num_bits) return 0; int cur = 0, mn = std::numeric_limits::max(); for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur < mn) mn = cur; } @@ -219,7 +218,7 @@ struct NaiveRmM cur = 0; for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur == mn) ++cnt; } @@ -229,19 +228,19 @@ struct NaiveRmM // (1-based q) std::size_t minselect(std::size_t i, std::size_t j, std::size_t q) const { - if (i > j || j >= N || q == 0) + if (i > j || j >= num_bits || q == 0) return npos; int cur = 0, mn = std::numeric_limits::max(); for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur < mn) mn = cur; } cur = 0; for (std::size_t p = i; p <= j; ++p) { - cur += b[p] ? +1 : -1; + cur += bits[p] ? +1 : -1; if (cur == mn) { if (--q == 0) @@ -253,20 +252,20 @@ struct NaiveRmM std::size_t close(std::size_t i) const { - if (i >= N) + if (i >= num_bits) return npos; return fwdsearch(i, -1); } std::size_t open(std::size_t i) const { - if (i == 0 || i > N) + if (i == 0 || i > num_bits) return npos; auto r = bwdsearch(i, 0); return (r == npos ? npos : r + 1); } std::size_t enclose(std::size_t i) const { - if (i == 0 || i > N) + if (i == 0 || i > num_bits) return npos; auto r = bwdsearch(i, -2); return (r == npos ? npos : r + 1); From b5b794896a32d21cba68908d5364db558e5fb05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 12:45:40 +0300 Subject: [PATCH 04/14] replaced struct on class --- include/rmm_tree.h | 14 +++++++------- misc/include/naive_rmm_tree.h | 10 ++++++---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/include/rmm_tree.h b/include/rmm_tree.h index 645444f..39790c8 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -22,10 +22,8 @@ namespace pixie // Range min max tree for balanced-parentheses bitvector. // Implements: fwdsearch, bwdsearch, rmq_pos/rmq_val, rMq_pos/rMq_val, mincount, minselect, // rank1/rank0, select1/select0, rank10/select10, excess, open/close, enclose. - struct RmMTree + class RmMTree { - static constexpr size_t npos = std::numeric_limits::max(); - // ------------ bitvector ------------ std::vector bits; // LSB-first size_t num_bits = 0; // number of bits @@ -33,11 +31,7 @@ namespace pixie // ------------ blocking ------------ size_t block_bits = 64; // block size (bits), leaf covers <= block_bits bits size_t leaf_count = 0; // #leaves = ceil(num_bits/block_bits) -#ifdef DEBUG - float built_overhead = 0.0; -#endif - private: // ------------ tree arrays (heap order: 1 is root) ------------ // size of segment (in bits) covered by node // needed for: rank1/rank0, select1/select0, select10, @@ -72,6 +66,12 @@ namespace pixie std::vector node_first_bit, node_last_bit; public: + static constexpr size_t npos = std::numeric_limits::max(); + +#ifdef DEBUG + float built_overhead = 0.0; +#endif + // --------- construction ---------- RmMTree() = default; diff --git a/misc/include/naive_rmm_tree.h b/misc/include/naive_rmm_tree.h index ccd1b52..0948059 100644 --- a/misc/include/naive_rmm_tree.h +++ b/misc/include/naive_rmm_tree.h @@ -5,17 +5,19 @@ #include #include -struct NaiveRmM +class NaiveRmM { - static constexpr std::size_t npos = std::numeric_limits::max(); - std::vector bits; std::size_t num_bits = 0; +public: + static constexpr std::size_t npos = std::numeric_limits::max(); + NaiveRmM() = default; explicit NaiveRmM(const std::string &s) { build_from_string(s); } NaiveRmM(const std::vector &words, std::size_t nbits) { build_from_words(words, nbits); } +private: void build_from_string(const std::string &s) { num_bits = s.size(); @@ -32,8 +34,8 @@ struct NaiveRmM } inline int bit(std::size_t i) const { return bits[i]; } - inline std::size_t size() const { return num_bits; } +public: std::size_t rank1(std::size_t i) const { if (i > num_bits) From ed073dd41883559f313a59755120d1028333041f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 13:26:45 +0300 Subject: [PATCH 05/14] add descriptions for all methods --- include/rmm_tree.h | 293 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 250 insertions(+), 43 deletions(-) diff --git a/include/rmm_tree.h b/include/rmm_tree.h index 39790c8..23de2f8 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -19,9 +19,23 @@ namespace pixie static inline int POPCNT(unsigned long long x) { return __popcnt64(x); } #endif - // Range min max tree for balanced-parentheses bitvector. - // Implements: fwdsearch, bwdsearch, rmq_pos/rmq_val, rMq_pos/rMq_val, mincount, minselect, - // rank1/rank0, select1/select0, rank10/select10, excess, open/close, enclose. + /** + * @brief Range min–max tree over a bitvector (LSB-first) tailored for balanced-parentheses (BP). + * @details + * Implements the classic RMQ/rMq family and BP navigation in O(log n) + * using a perfectly balanced binary tree of blocks. Supported queries: + * - rank1 / rank0 + * - select1 / select0 + * - rank10 / select10 (starts of "10") + * - excess (prefix +1 for '1', −1 for '0') + * - fwdsearch / bwdsearch (prefix–sum search) + * - rmq_pos / rmq_val (first minimum within a range) + * - rMq_pos / rMq_val (first maximum within a range) + * - mincount / minselect (count/selection of minima) + * - close / open / enclose (BP navigation) + * + * The bitvector is LSB-first inside each 64-bit word. + */ class RmMTree { // ------------ bitvector ------------ @@ -66,6 +80,9 @@ namespace pixie std::vector node_first_bit, node_last_bit; public: + /** + * @brief Sentinel for "not found". + */ static constexpr size_t npos = std::numeric_limits::max(); #ifdef DEBUG @@ -73,12 +90,20 @@ namespace pixie #endif // --------- construction ---------- + + /** + * @brief Construct empty structure. + */ RmMTree() = default; - // priorities for block_bits: - // 1) honor max_overhead - // 2) honor an explicit request of block_bits - // 3) block_bits := log num_bits + /** + * @brief Build from a '0'/'1' string. + * @param bp Bitstring (characters '0' and '1'). + * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). + * @param max_overhead Max allowed overhead fraction (<0 to disable constraint). + * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p leaf_block_bits, + * (3) set to ceil_pow2(log2(num_bits)). + */ explicit RmMTree(const std::string &bp, const size_t &leaf_block_bits /*0=auto*/ = 0, const float &max_overhead /*<0=off*/ = -1.0) @@ -86,10 +111,15 @@ namespace pixie build_from_string(bp, leaf_block_bits, max_overhead); } - // priorities for block_bits: - // 1) honor max_overhead - // 2) honor an explicit request of block_bits - // 3) block_bits := log num_bits + /** + * @brief Build from 64-bit words (LSB-first). + * @param words Array of words holding bits LSB-first. + * @param Nbits Number of valid bits. + * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). + * @param max_overhead Max allowed overhead fraction (<0 to disable constraint). + * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p leaf_block_bits, + * (3) set to ceil_pow2(log2(num_bits)). + */ explicit RmMTree(const std::vector &words, size_t Nbits, const size_t &leaf_block_bits /*0=auto*/ = 0, const float &max_overhead /*<0=off*/ = -1.0) @@ -98,7 +128,11 @@ namespace pixie } // --------- queries: rank/select/excess ---------- - // #ones in [0,i) + + /** + * @brief Number of ones in prefix [0, i). + * @details Returns 0 for i==0. Complexity: O(log n) with small constants. + */ size_t rank1(const size_t &i) const { if (i == 0) @@ -116,12 +150,20 @@ namespace pixie ans += rank1_in_block(Lb, std::min(i, Rb)); return ans; } + + /** + * @brief Number of zeros in prefix [0, i). + * @details Computed as i - rank1(i). + */ size_t rank0(const size_t &i) const { return i - rank1(i); } - // ones/zeros select (1-based k). Returns npos if not found. + /** + * @brief 1-based select of the k-th one. + * @return Position of k-th '1' or npos if not found. + */ size_t select1(size_t k) const { if (k == 0) @@ -148,7 +190,11 @@ namespace pixie } return select1_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); } - // 1-based + + /** + * @brief 1-based select of the k-th zero. + * @return Position of k-th '0' or npos if not found. + */ size_t select0(size_t k) const { if (k == 0) @@ -180,7 +226,10 @@ namespace pixie return select0_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); } - // pattern "10": rank/select on starts of "10" + /** + * @brief Rank of the pattern "10" (starts) within [0, i). + * @details Counts p where bit[p]==1 and bit[p+1]==0 with p+1= num_bits) @@ -286,7 +346,11 @@ namespace pixie return npos; } - // ---- bwdsearch: climb & check left siblings ---- + /** + * @brief Backward search: last position p ≤ i where excess(p) = excess(i) + d. + * @details Scans inside the leaf to the left, then climbs to examine left siblings. + * Returns npos if no such position exists. + */ size_t bwdsearch(const size_t &i, const int &d) const { if (i > num_bits || i == 0) @@ -344,7 +408,10 @@ namespace pixie return npos; } - // position of first minimum of excess on [i, j] (inclusive) + /** + * @brief Position of the first minimum of excess on [i, j] (inclusive). + * @return Position of first occurrence of minimum, or npos on invalid range. + */ size_t rmq_pos(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) @@ -439,7 +506,10 @@ namespace pixie return descend_first_min(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); } - // value of that minimum (absolute relative to start i, i.excess_total., minimum of partial sums) + /** + * @brief Value of the minimum prefix excess on [i, j] relative to i. + * @details Equivalent to min_{t in [i..j]} (excess(t+1) - excess(i)). + */ int rmq_val(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) @@ -450,6 +520,10 @@ namespace pixie return excess(p + 1) - excess(i); } + /** + * @brief Position of the first maximum of excess on [i, j] (inclusive). + * @return Position of first occurrence of maximum, or npos on invalid range. + */ size_t rMq_pos(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) @@ -544,6 +618,9 @@ namespace pixie return descend_first_max(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); } + /** + * @brief Value of the maximum prefix excess on [i, j] relative to i. + */ int rMq_val(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) @@ -554,7 +631,9 @@ namespace pixie return excess(p + 1) - excess(i); } - // how many times min occurs on [i, j] + /** + * @brief How many times the minimum prefix excess occurs on [i, j]. + */ size_t mincount(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) @@ -643,7 +722,10 @@ namespace pixie return cnt; } - // position of the q-th occurrence (1-based) of the minimum on [i, j] + /** + * @brief Position of the q-th (1-based) occurrence of the minimum on [i, j]. + * @return Position or npos if q exceeds the number of minima. + */ size_t minselect(const size_t &i, const size_t &j, size_t q) const { if (i > j || j >= num_bits || q == 0) @@ -805,7 +887,11 @@ namespace pixie } // ----- parentheses navigation (BP) ----- - // close(i): matching ')' for '(' at i (or npos) + + /** + * @brief close(i): matching ')' for '(' at i. + * @return Position of matching ')', or npos. + */ inline size_t close(const size_t &i) const { if (i >= num_bits) @@ -813,7 +899,10 @@ namespace pixie return fwdsearch(i, -1); } - // open(i): matching '(' for ')' at i (or npos) + /** + * @brief open(i): matching '(' for ')' at i. + * @return Position of matching '(', or npos. + */ inline size_t open(const size_t &i) const { // bwdsearch allows i in [1..num_bits] @@ -823,7 +912,10 @@ namespace pixie return (r == npos ? npos : r + 1); } - // enclose(i): opening '(' that *encloses* position i (or npos) + /** + * @brief enclose(i): opening '(' that strictly encloses position i. + * @return Position of enclosing '(', or npos. + */ inline size_t enclose(const size_t &i) const { if (i == 0 || i > num_bits) @@ -833,6 +925,10 @@ namespace pixie } private: + /** + * @brief Count "10" occurrences inside a 64-bit slice of given logical length. + * @details Only positions fully inside the slice are counted. + */ static inline size_t pop10_in_slice64(const std::uint64_t &slice, const int &len) noexcept { if (len <= 1) @@ -845,7 +941,10 @@ namespace pixie return (size_t)POPCNT(P); } - // fast rank of ones in [leaf_count,R) + /** + * @brief Rank of ones within [Lb, Rb). + * @details Works on word boundaries; Rb may equal Lb. + */ size_t rank1_in_block(const size_t &Lb, const size_t &Rb) const noexcept { if (Rb <= Lb) @@ -875,6 +974,10 @@ namespace pixie return cnt; } + /** + * @brief Count "10" starts within [Lb, Rb). + * @details Accounts for cross-word boundaries. + */ size_t rr_in_block(const size_t &Lb, const size_t &Rb) const noexcept { if (Rb <= Lb + 1) @@ -920,7 +1023,10 @@ namespace pixie return cnt; } - // 1-based + /** + * @brief 1-based select of k-th "10" within [Lb, Rb). + * @return Position or npos. + */ size_t select10_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept { if (Rb <= Lb + 1) @@ -1020,6 +1126,9 @@ namespace pixie uint8_t pos_first_max; // pos of first maximum in this byte }; + /** + * @brief Returns the static lookup table of byte aggregates. + */ static inline const std::array &LUT8() noexcept { static const std::array T = [] @@ -1070,7 +1179,9 @@ namespace pixie return T; } - // Extract 8 bits starting from position pos (LSB-first, may cross word boundaries) + /** + * @brief Extract 8 bits starting at position pos (LSB-first across words). + */ inline uint8_t get_byte(const size_t &pos) const noexcept { const size_t w = pos >> 6; @@ -1083,7 +1194,13 @@ namespace pixie return uint8_t(x); } - // Descend to the first (leftmost) maximum where the node-relative prefix equals d + /** + * @brief Descend to the first (leftmost) maximum with node-relative prefix equal to d. + * @param v Node index. + * @param d Target prefix within node coordinates. + * @param base Starting global position of node. + * @return Position or npos. + */ size_t descend_first_max(size_t v, int d, size_t base) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1117,20 +1234,31 @@ namespace pixie return (mx == d ? pos : npos); } + /** + * @brief Heap index of the first leaf node. + */ inline size_t first_leaf_index() const noexcept { return std::bit_ceil(std::max(1, leaf_count)); } + /** + * @brief Block index containing position i. + */ size_t block_of(const size_t &i) const noexcept { return i / block_bits; } - // index in heap array of the leaf whose segment starts at 'block_start' + /** + * @brief Heap index of the leaf whose segment starts at block_start. + */ size_t leaf_index_of(const size_t &block_start) const noexcept { return first_leaf_index() + block_of(block_start); } - // starting global position for node v (0-indexed) + /** + * @brief Starting global position for node v (0-indexed). + * @details Walk up to compute base for internal nodes; direct for leaves. + */ size_t node_base(size_t v) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1144,7 +1272,10 @@ namespace pixie return base; } - // cover a range of whole blocks [a..b] (inclusive) with O(log) maximal nodes (left-to-right) + /** + * @brief Cover a range of whole blocks [a..b] (inclusive) with O(log n) maximal nodes. + * @details Returns node indices in left-to-right order. + */ std::vector cover_blocks(const size_t &a, const size_t &b) const { const size_t leaf0 = first_leaf_index(); @@ -1165,7 +1296,9 @@ namespace pixie return Lnodes; } - // descend for fwdsearch: find first position where relative prefix equals 'need' + /** + * @brief Descend for fwdsearch to find first position where relative prefix equals 'need'. + */ size_t descend_fwd(size_t v, int need, size_t base) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1193,7 +1326,14 @@ namespace pixie return npos; } - // descend_bwd: go for the rightmost solution + /** + * @brief Descend for bwdsearch to return the rightmost solution. + * @param v Current node. + * @param base Left border of node v. + * @param need Target relative prefix inside v. + * @param right_border Global right limit (exclusive if !allow_rb). + * @param allow_rb Whether right border is allowed to match. + */ size_t descend_bwd(size_t v, const size_t &base, const int &need, const size_t &right_border, const bool &allow_rb) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1261,7 +1401,9 @@ namespace pixie return npos; } - // descend to find first position where node-relative prefix equals d + /** + * @brief Descend to find first position where node-relative prefix equals d (minimum). + */ size_t descend_first_min(size_t v, int d, size_t base) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1295,6 +1437,9 @@ namespace pixie return (mn == d ? pos : npos); } + /** + * @brief Descend to find the q-th minimum (1-based) where node-relative prefix equals d. + */ size_t descend_qth_min(size_t v, int d, size_t q, size_t base) const noexcept { const size_t leaf0 = first_leaf_index(); @@ -1325,7 +1470,9 @@ namespace pixie return qth_min_in_block(base, std::min(base + segment_size_bits[v], num_bits) - 1, q); } - // 1-based + /** + * @brief 1-based select of k-th '1' within [Lb, Rb). + */ size_t select1_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept { size_t w_l = Lb >> 6; @@ -1369,7 +1516,9 @@ namespace pixie return npos; } - // 1-based + /** + * @brief 1-based select of k-th '0' within [Lb, Rb). + */ size_t select0_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept { if (Rb <= Lb) @@ -1431,6 +1580,10 @@ namespace pixie return npos; } + /** + * @brief 1-based select of k-th set bit inside a 64-bit word. + * @return Bit index [0..63] or −1 if not found. + */ static inline int select_in_word(std::uint64_t w, size_t k) noexcept { #ifdef __GNUC__ @@ -1450,11 +1603,18 @@ namespace pixie #endif } + /** + * @brief Ceil division of positive integers. + */ static inline size_t ceil_div(const size_t &a, const size_t &b) noexcept { return (a + b - 1) / b; } + /** + * @brief Number of node slots needed for @p Nbits with leaf size @p Bpow2. + * @details Includes internal node space (heap layout) plus leaves. + */ static inline size_t nodeslots_for(const size_t &Nbits, const size_t &Bpow2) noexcept { if (Nbits == 0) @@ -1463,6 +1623,9 @@ namespace pixie return std::bit_ceil(std::max(1, leaf_count)) + leaf_count; } + /** + * @brief Auxiliary overhead in bytes/bitvector bytes for given parameters. + */ static inline float overhead_for(const size_t &Nbits, const size_t &Bpow2) noexcept { static constexpr size_t AUX_SLOT_BYTES = sizeof(uint32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t); @@ -1475,7 +1638,10 @@ namespace pixie return ((float)aux) / ((float)bb); } - // Returns the minimal block_bits (power-of-two) that keeps overhead ≤ cap. + /** + * @brief Choose minimal block size (power of two) keeping overhead ≤ cap. + * @details Returns 64 if cap < 0 (no constraint). Clamped to ≤16384 or Nbits. + */ static inline size_t choose_block_bits_for_overhead(const size_t &Nbits, const float &cap) noexcept { if (cap < 0.f) @@ -1492,6 +1658,11 @@ namespace pixie return block_bits; } + /** + * @brief Build internal structures from a 0/1 string. + * @param leaf_block_bits Desired leaf size (0 = auto). + * @param max_overhead Overhead cap (<0 = no cap). + */ void build_from_string(const std::string &s, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) { num_bits = s.size(); @@ -1501,32 +1672,51 @@ namespace pixie set1(i); build(leaf_block_bits, max_overhead); } - void build_from_words(const std::vector &w, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) + + /** + * @brief Build internal structures from 64-bit words. + * @param words Words with LSB-first bits. + * @param Nbits Number of valid bits. + * @param leaf_block_bits Desired leaf size (0 = auto). + * @param max_overhead Overhead cap (<0 = no cap). + */ + void build_from_words(const std::vector &words, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) { - bits = w; + bits = words; num_bits = Nbits; if (bits.size() * 64 < num_bits) bits.resize((num_bits + 63) / 64); build(leaf_block_bits, max_overhead); } + /** + * @brief Read bit at position i (LSB-first across words). + */ inline int bit(const size_t &i) const noexcept { return (bits[i >> 6] >> (i & 63)) & 1u; } + /** + * @brief Set bit at position i to 1. + */ inline void set1(const size_t &i) noexcept { bits[i >> 6] |= (std::uint64_t(1) << (i & 63)); } + /** + * @brief Number of ones in node v computed from size and total excess. + */ inline uint32_t ones_in_node(const size_t &v) const noexcept { return ((int64_t)segment_size_bits[v] + (int64_t)node_total_excess[v]) >> 1; } - // Passing through the range [l..r] (inclusive): counts mn and cnt (how many times the minimum is reached), - // and returns cur at the end of the range. + /** + * @brief Scan [l..r] inclusive, computing minimum value and how many times it is attained. + * @details Uses 8-bit LUT for speed; outputs cur at end, mn, and count. + */ inline void scan_range_min_count8(size_t l, const size_t &r, int &cur, int &mn, uint32_t &cnt) const noexcept { cur = 0; @@ -1591,8 +1781,10 @@ namespace pixie } } - // Selecting the qth minimum position inside [l..r] (inclusive) in two passes of 8 bits each. - // We find the global mn; then we go again and select the qth minimum. + /** + * @brief Select q-th minimum (1-based) inside [l..r] inclusive in two 8-bit passes. + * @details First pass finds global minimum, second selects the q-th position. + */ inline size_t qth_min_in_block(const size_t &l, const size_t &r, size_t q) const noexcept { if (r < l || q == 0) @@ -1678,6 +1870,11 @@ namespace pixie return npos; } + /** + * @brief Find first minimum value and its first position in [l..r] inclusive using 8-bit LUT. + * @param mn_out Output minimum value (0 if empty). + * @param first_pos Output position of first minimum (npos if none). + */ inline void first_min_value_pos8(size_t l, const size_t &r, int &mn_out, size_t &first_pos) const noexcept { const auto &T = LUT8(); @@ -1726,6 +1923,11 @@ namespace pixie mn_out = (mn == INT_MAX ? 0 : mn); } + /** + * @brief Find first maximum value and its first position in [l..r] inclusive using 8-bit LUT. + * @param mx_out Output maximum value (0 if empty). + * @param first_pos Output position of first maximum (npos if none). + */ inline void first_max_value_pos8(size_t l, const size_t &r, int &mx_out, size_t &first_pos) const noexcept { const auto &T = LUT8(); @@ -1771,6 +1973,11 @@ namespace pixie mx_out = (mx == INT_MIN ? 0 : mx); } + /** + * @brief Build the tree arrays and per-node aggregates. + * @details Chooses block_bits honoring @p max_overhead or explicit @p leaf_block_bits, + * allocates arrays, fills leaves via LUT, and builds internal nodes bottom-up. + */ void build(const size_t &leaf_block_bits, const float &max_overhead) { // the lower clamp depends on the desired overhead fraction; otherwise use 64 From 71afb0491a651324c35852b57ed449db694671b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 13:35:15 +0300 Subject: [PATCH 06/14] some organizing --- .gitignore | 1 + CMakeLists.txt | 2 +- README.md | 2 +- {misc/include => include/misc}/naive_rmm_tree.h | 0 4 files changed, 3 insertions(+), 2 deletions(-) rename {misc/include => include/misc}/naive_rmm_tree.h (100%) diff --git a/.gitignore b/.gitignore index 83de66c..146ac41 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ build/ .vscode/ Testing/ +venv/ diff --git a/CMakeLists.txt b/CMakeLists.txt index fe1eb74..005ff25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,7 @@ add_executable(fuzzer src/fuzzer.cpp) target_include_directories(fuzzer PUBLIC include - PUBLIC misc/include + PUBLIC include/misc ) set_property(TARGET fuzzer PROPERTY CXX_STANDARD 20) diff --git a/README.md b/README.md index 471494a..8edbd47 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Benchmarks are random 50/50 0-1 bitvectors up to $2^34$ bits. ./bench_rmm ``` -Results print to stdout as CSV. Redirect to a file (e.g. `> rmm_bench.csv`) and visualize it with `python3 ../misc/plot_rmm.py rmm_bench.csv --save-dir=plots --logx`. +Results print to stdout as CSV. Redirect to a file (e.g. `./bench_rmm > rmm_bench.csv`) and visualize it with `misc/plot_rmm.py`. --- diff --git a/misc/include/naive_rmm_tree.h b/include/misc/naive_rmm_tree.h similarity index 100% rename from misc/include/naive_rmm_tree.h rename to include/misc/naive_rmm_tree.h From bc36bf0c8af5a77d83d40aaddb2a7e20488df3d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 13:37:35 +0300 Subject: [PATCH 07/14] started using std::popcount --- include/rmm_tree.h | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/include/rmm_tree.h b/include/rmm_tree.h index 23de2f8..f5c1c2f 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -11,14 +11,6 @@ namespace pixie { - -#ifdef __GNUC__ -#define POPCNT __builtin_popcountll -#else -#include - static inline int POPCNT(unsigned long long x) { return __popcnt64(x); } -#endif - /** * @brief Range min–max tree over a bitvector (LSB-first) tailored for balanced-parentheses (BP). * @details @@ -938,7 +930,7 @@ namespace pixie P &= ((std::uint64_t(1) << (len - 1)) - 1); else P &= 0x7FFFFFFFFFFFFFFFull; - return (size_t)POPCNT(P); + return (size_t)std::popcount(P); } /** @@ -957,20 +949,20 @@ namespace pixie if (w_l == w_r) { const std::uint64_t mask = ((off_r == 0) ? 0 : ((std::uint64_t(1) << off_r) - 1)) & (~std::uint64_t(0) << off_l); - return (size_t)POPCNT(bits[w_l] & mask); + return (size_t)std::popcount(bits[w_l] & mask); } if (off_l) { - cnt += (size_t)POPCNT(bits[w_l] & (~std::uint64_t(0) << off_l)); + cnt += (size_t)std::popcount(bits[w_l] & (~std::uint64_t(0) << off_l)); ++w_l; } while (w_l < w_r) { - cnt += (size_t)POPCNT(bits[w_l]); + cnt += (size_t)std::popcount(bits[w_l]); ++w_l; } if (off_r) - cnt += (size_t)POPCNT(bits[w_r] & ((std::uint64_t(1) << off_r) - 1)); + cnt += (size_t)std::popcount(bits[w_r] & ((std::uint64_t(1) << off_r) - 1)); return cnt; } @@ -1062,7 +1054,7 @@ namespace pixie const std::uint64_t slice = bits[w_l] >> off_l; std::uint64_t P = slice & ~(slice >> 1); P &= ((std::uint64_t(1) << (len - 1)) - 1); - const int c = POPCNT(P); + const int c = std::popcount(P); if (k <= (size_t)c) { const int off = select_in_masked_slice(slice, len, k); @@ -1083,7 +1075,7 @@ namespace pixie // full word w+1 (positions 0..62) const std::uint64_t x = bits[w + 1]; const std::uint64_t P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; - const int c = POPCNT(P); + const int c = std::popcount(P); if (k <= (size_t)c) { const int off = select_in_word(P, k); @@ -1488,7 +1480,7 @@ namespace pixie if (off_l) { const std::uint64_t w = bits[w_l] & mask_l; - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) return Lb + select_in_word(w, k); k -= c; @@ -1498,7 +1490,7 @@ namespace pixie while (w_l < w_r) { const std::uint64_t w = bits[w_l]; - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) return (w_l << 6) + select_in_word(w, k); k -= c; @@ -1509,7 +1501,7 @@ namespace pixie if (off_r) { const std::uint64_t w = bits[w_l] & ((std::uint64_t(1) << off_r) - 1); - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) return (w_l << 6) + select_in_word(w, k); } @@ -1541,7 +1533,7 @@ namespace pixie if (off_l) { const std::uint64_t w = (~bits[w_l]) & (~std::uint64_t(0) << off_l); - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) { const int off = select_in_word(w, k); @@ -1555,7 +1547,7 @@ namespace pixie while (w_l < w_r) { const std::uint64_t w = ~bits[w_l]; - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) { const int off = select_in_word(w, k); @@ -1570,7 +1562,7 @@ namespace pixie if (off_r) { const std::uint64_t w = (~bits[w_l]) & ((std::uint64_t(1) << off_r) - 1); - const int c = POPCNT(w); + const int c = std::popcount(w); if (k <= (size_t)c) { const int off = select_in_word(w, k); From 29420d04bf23d1b2588157b3957c4dbba0306678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 14:06:04 +0300 Subject: [PATCH 08/14] removed rmq/rMq shortcuts --- include/misc/naive_rmm_tree.h | 8 ++++---- include/rmm_tree.h | 26 +++++++++++++------------- misc/plot_rmm.py | 8 ++++---- src/bench_rmm.cpp | 26 +++++++++++++------------- src/fuzzer.cpp | 32 ++++++++++++++++---------------- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/include/misc/naive_rmm_tree.h b/include/misc/naive_rmm_tree.h index 0948059..6a2db63 100644 --- a/include/misc/naive_rmm_tree.h +++ b/include/misc/naive_rmm_tree.h @@ -141,7 +141,7 @@ class NaiveRmM return npos; } - std::size_t rmq_pos(std::size_t i, std::size_t j) const + std::size_t range_min_query_pos(std::size_t i, std::size_t j) const { if (i > j || j >= num_bits) return npos; @@ -159,7 +159,7 @@ class NaiveRmM return pos; } - int rmq_val(std::size_t i, std::size_t j) const + int range_min_query_val(std::size_t i, std::size_t j) const { if (i > j || j >= num_bits) return 0; @@ -173,7 +173,7 @@ class NaiveRmM return mn; } - std::size_t rMq_pos(std::size_t i, std::size_t j) const + std::size_t range_max_query_pos(std::size_t i, std::size_t j) const { if (i > j || j >= num_bits) return npos; @@ -191,7 +191,7 @@ class NaiveRmM return pos; } - int rMq_val(std::size_t i, std::size_t j) const + int range_max_query_val(std::size_t i, std::size_t j) const { if (i > j || j >= num_bits) return 0; diff --git a/include/rmm_tree.h b/include/rmm_tree.h index f5c1c2f..85d7895 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -14,15 +14,15 @@ namespace pixie /** * @brief Range min–max tree over a bitvector (LSB-first) tailored for balanced-parentheses (BP). * @details - * Implements the classic RMQ/rMq family and BP navigation in O(log n) + * Implements the classic rmq/rMq family and BP navigation in O(log n) * using a perfectly balanced binary tree of blocks. Supported queries: * - rank1 / rank0 * - select1 / select0 * - rank10 / select10 (starts of "10") * - excess (prefix +1 for '1', −1 for '0') * - fwdsearch / bwdsearch (prefix–sum search) - * - rmq_pos / rmq_val (first minimum within a range) - * - rMq_pos / rMq_val (first maximum within a range) + * - range_min_query_pos / range_min_query_val (first minimum within a range) + * - range_max_query_pos / range_max_query_val (first maximum within a range) * - mincount / minselect (count/selection of minima) * - close / open / enclose (BP navigation) * @@ -42,21 +42,21 @@ namespace pixie // size of segment (in bits) covered by node // needed for: rank1/rank0, select1/select0, select10, // excess, fwdsearch/bwdsearch/close/open/enclose, - // rmq/rMq, minselect. + // range_min_query/range_max_query, minselect. std::vector segment_size_bits; // node_total_excess = total excess (+1 for '1', -1 for '0') on the node // needed for: rank1/rank0, select1/select0, excess, // fwdsearch/bwdsearch/close/open/enclose, - // rmq/rMq, mincount/minselect. + // range_min_query/range_max_query, mincount/minselect. std::vector node_total_excess; // node_min_prefix_excess = minimum pref-excess on the node (from 0) - // needed for: fwdsearch/bwdsearch/close/open/enclose, rmq, mincount/minselect. + // needed for: fwdsearch/bwdsearch/close/open/enclose, range_min_query, mincount/minselect. std::vector node_min_prefix_excess; // node_max_prefix_excess = maximum pref-excess on the node (from 0) - // needed for: fwdsearch/bwdsearch/close/open/enclose, rMq. + // needed for: fwdsearch/bwdsearch/close/open/enclose, range_max_query. std::vector node_max_prefix_excess; // node_min_count = number of positions where the minimum is attained @@ -404,7 +404,7 @@ namespace pixie * @brief Position of the first minimum of excess on [i, j] (inclusive). * @return Position of first occurrence of minimum, or npos on invalid range. */ - size_t rmq_pos(const size_t &i, const size_t &j) const + size_t range_min_query_pos(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) return npos; @@ -502,11 +502,11 @@ namespace pixie * @brief Value of the minimum prefix excess on [i, j] relative to i. * @details Equivalent to min_{t in [i..j]} (excess(t+1) - excess(i)). */ - int rmq_val(const size_t &i, const size_t &j) const + int range_min_query_val(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) return 0; - size_t p = rmq_pos(i, j); + size_t p = range_min_query_pos(i, j); if (p == npos) return 0; return excess(p + 1) - excess(i); @@ -516,7 +516,7 @@ namespace pixie * @brief Position of the first maximum of excess on [i, j] (inclusive). * @return Position of first occurrence of maximum, or npos on invalid range. */ - size_t rMq_pos(const size_t &i, const size_t &j) const + size_t range_max_query_pos(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) return npos; @@ -613,11 +613,11 @@ namespace pixie /** * @brief Value of the maximum prefix excess on [i, j] relative to i. */ - int rMq_val(const size_t &i, const size_t &j) const + int range_max_query_val(const size_t &i, const size_t &j) const { if (i > j || j >= num_bits) return 0; - size_t p = rMq_pos(i, j); + size_t p = range_max_query_pos(i, j); if (p == npos) return 0; return excess(p + 1) - excess(i); diff --git a/misc/plot_rmm.py b/misc/plot_rmm.py index 01dd65b..c39b95d 100644 --- a/misc/plot_rmm.py +++ b/misc/plot_rmm.py @@ -26,10 +26,10 @@ "excess", "fwdsearch", "bwdsearch", - "rmq_pos", - "rmq_val", - "rMq_pos", - "rMq_val", + "range_min_query_pos", + "range_min_query_val", + "range_max_query_pos", + "range_max_query_val", "mincount", "minselect", ] diff --git a/src/bench_rmm.cpp b/src/bench_rmm.cpp index 8c73798..e597bf5 100644 --- a/src/bench_rmm.cpp +++ b/src/bench_rmm.cpp @@ -337,53 +337,53 @@ int main(int argc, char **argv) cout << N << ",bwdsearch," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; } - // rmq_pos / rmq_val / mincount / minselect + // range_min_query_pos / range_min_query_val / mincount / minselect vector> segs(args.Q); for (size_t k = 0; k < args.Q; k++) segs[k] = rand_ij(); - // rmq_pos + // range_min_query_pos { auto fn = [&](size_t it) { auto [i, j] = segs[it]; - BH_sz += t.rmq_pos(i, j); + BH_sz += t.range_min_query_pos(i, j); }; double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rmq_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + cout << N << ",range_min_query_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; } - // rmq_val + // range_min_query_val { auto fn = [&](size_t it) { auto [i, j] = segs[it]; - BH_i += t.rmq_val(i, j); + BH_i += t.range_min_query_val(i, j); }; double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rmq_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + cout << N << ",range_min_query_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; } - // rMq_pos + // range_max_query_pos { auto fn = [&](size_t it) { auto [i, j] = segs[it]; - BH_sz += t.rMq_pos(i, j); + BH_sz += t.range_max_query_pos(i, j); }; double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rMq_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + cout << N << ",range_max_query_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; } - // rMq_val + // range_max_query_val { auto fn = [&](size_t it) { auto [i, j] = segs[it]; - BH_i += t.rMq_val(i, j); + BH_i += t.range_max_query_val(i, j); }; double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rMq_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + cout << N << ",range_max_query_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; } // mincount diff --git a/src/fuzzer.cpp b/src/fuzzer.cpp index 4cd5aa2..9a0af60 100644 --- a/src/fuzzer.cpp +++ b/src/fuzzer.cpp @@ -273,23 +273,23 @@ int main() } break; case 9: - { // rmq_pos + { // range_min_query_pos if (N == 0) break; - auto a = nv.rmq_pos(i, j); - auto b = rm.rmq_pos(i, j); + auto a = nv.range_min_query_pos(i, j); + auto b = rm.range_min_query_pos(i, j); if (a != b) - die_mismatch(seed_info, bits, "rmq_pos", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); + die_mismatch(seed_info, bits, "range_min_query_pos", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); } break; case 10: - { // rmq_val + { // range_min_query_val if (N == 0) break; - auto a = nv.rmq_val(i, j); - auto b = rm.rmq_val(i, j); + auto a = nv.range_min_query_val(i, j); + auto b = rm.range_min_query_val(i, j); if (a != b) - die_mismatch(seed_info, bits, "rmq_val", {std::to_string(i), std::to_string(j)}, std::to_string(a), std::to_string(b)); + die_mismatch(seed_info, bits, "range_min_query_val", {std::to_string(i), std::to_string(j)}, std::to_string(a), std::to_string(b)); } break; case 11: @@ -315,25 +315,25 @@ int main() } break; case 13: - { // rMq_pos + { // range_max_query_pos if (N == 0) break; - auto a = nv.rMq_pos(i, j); - auto b = rm.rMq_pos(i, j); + auto a = nv.range_max_query_pos(i, j); + auto b = rm.range_max_query_pos(i, j); if (a != b) - die_mismatch(seed_info, bits, "rMq_pos", + die_mismatch(seed_info, bits, "range_max_query_pos", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); } break; case 14: - { // rMq_val + { // range_max_query_val if (N == 0) break; - auto a = nv.rMq_val(i, j); - auto b = rm.rMq_val(i, j); + auto a = nv.range_max_query_val(i, j); + auto b = rm.range_max_query_val(i, j); if (a != b) - die_mismatch(seed_info, bits, "rMq_val", + die_mismatch(seed_info, bits, "range_max_query_val", {std::to_string(i), std::to_string(j)}, std::to_string(a), std::to_string(b)); } From 9f17e6a7b77a721f02f92bb5a6a9e5aeb3e524be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Thu, 6 Nov 2025 14:14:31 +0300 Subject: [PATCH 09/14] renamed fuzzer --- CMakeLists.txt | 8 ++++---- README.md | 4 ++-- src/{fuzzer.cpp => test_rmm.cpp} | 0 3 files changed, 6 insertions(+), 6 deletions(-) rename src/{fuzzer.cpp => test_rmm.cpp} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 005ff25..819225c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,12 +52,12 @@ target_include_directories(bench_rmm ) set_property(TARGET bench_rmm PROPERTY CXX_STANDARD 20) -add_executable(fuzzer - src/fuzzer.cpp) -target_include_directories(fuzzer +add_executable(test_rmm + src/test_rmm.cpp) +target_include_directories(test_rmm PUBLIC include PUBLIC include/misc ) -set_property(TARGET fuzzer PROPERTY CXX_STANDARD 20) +set_property(TARGET test_rmm PROPERTY CXX_STANDARD 20) enable_testing() \ No newline at end of file diff --git a/README.md b/README.md index 8edbd47..73a3054 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,10 @@ After building: ### RmM Tree ```bash -./fuzzer +./test_rmm ``` -The fuzzer runs indefinitely; press `Ctrl+C` to stop. +The testing runs indefinitely; press `Ctrl+C` to stop. --- diff --git a/src/fuzzer.cpp b/src/test_rmm.cpp similarity index 100% rename from src/fuzzer.cpp rename to src/test_rmm.cpp From 9bd1a90e56e84f1de91ceb42086b440315390529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Fri, 7 Nov 2025 01:00:05 +0300 Subject: [PATCH 10/14] gtest and benchmark --- CMakeLists.txt | 5 + README.md | 2 - include/misc/naive_rmm_tree.h | 5 +- include/rmm_tree.h | 6 +- misc/plot_rmm.py | 23 +- misc/rmM-tree plots (B=64)/bwdsearch.png | Bin 65160 -> 0 bytes misc/rmM-tree plots (B=64)/excess.png | Bin 58598 -> 0 bytes misc/rmM-tree plots (B=64)/fwdsearch.png | Bin 66942 -> 0 bytes misc/rmM-tree plots (B=64)/mincount.png | Bin 59531 -> 0 bytes misc/rmM-tree plots (B=64)/minselect.png | Bin 67902 -> 0 bytes misc/rmM-tree plots (B=64)/rMq_pos.png | Bin 64818 -> 0 bytes misc/rmM-tree plots (B=64)/rMq_val.png | Bin 62847 -> 0 bytes misc/rmM-tree plots (B=64)/rank0.png | Bin 64979 -> 0 bytes misc/rmM-tree plots (B=64)/rank1.png | Bin 56521 -> 0 bytes misc/rmM-tree plots (B=64)/rank10.png | Bin 59948 -> 0 bytes misc/rmM-tree plots (B=64)/rmq_pos.png | Bin 68229 -> 0 bytes misc/rmM-tree plots (B=64)/rmq_val.png | Bin 65838 -> 0 bytes misc/rmM-tree plots (B=64)/select0.png | Bin 59930 -> 0 bytes misc/rmM-tree plots (B=64)/select1.png | Bin 61518 -> 0 bytes misc/rmM-tree plots (B=64)/select10.png | Bin 64350 -> 0 bytes src/bench_rmm.cpp | 672 +++++++++---------- src/test_rmm.cpp | 786 +++++++++++++++-------- 22 files changed, 835 insertions(+), 664 deletions(-) delete mode 100644 misc/rmM-tree plots (B=64)/bwdsearch.png delete mode 100644 misc/rmM-tree plots (B=64)/excess.png delete mode 100644 misc/rmM-tree plots (B=64)/fwdsearch.png delete mode 100644 misc/rmM-tree plots (B=64)/mincount.png delete mode 100644 misc/rmM-tree plots (B=64)/minselect.png delete mode 100644 misc/rmM-tree plots (B=64)/rMq_pos.png delete mode 100644 misc/rmM-tree plots (B=64)/rMq_val.png delete mode 100644 misc/rmM-tree plots (B=64)/rank0.png delete mode 100644 misc/rmM-tree plots (B=64)/rank1.png delete mode 100644 misc/rmM-tree plots (B=64)/rank10.png delete mode 100644 misc/rmM-tree plots (B=64)/rmq_pos.png delete mode 100644 misc/rmM-tree plots (B=64)/rmq_val.png delete mode 100644 misc/rmM-tree plots (B=64)/select0.png delete mode 100644 misc/rmM-tree plots (B=64)/select1.png delete mode 100644 misc/rmM-tree plots (B=64)/select10.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 819225c..691110b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,8 @@ target_include_directories(bench_rmm PUBLIC include ) set_property(TARGET bench_rmm PROPERTY CXX_STANDARD 20) +target_link_libraries(bench_rmm + benchmark) add_executable(test_rmm src/test_rmm.cpp) @@ -59,5 +61,8 @@ target_include_directories(test_rmm PUBLIC include/misc ) set_property(TARGET test_rmm PROPERTY CXX_STANDARD 20) +target_link_libraries(test_rmm + gtest + gtest_main) enable_testing() \ No newline at end of file diff --git a/README.md b/README.md index 73a3054..9e89df1 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,6 @@ After building: ./test_rmm ``` -The testing runs indefinitely; press `Ctrl+C` to stop. - --- ## Running Benchmarks diff --git a/include/misc/naive_rmm_tree.h b/include/misc/naive_rmm_tree.h index 6a2db63..ba7c0e2 100644 --- a/include/misc/naive_rmm_tree.h +++ b/include/misc/naive_rmm_tree.h @@ -30,7 +30,10 @@ class NaiveRmM num_bits = nbits; bits.assign(num_bits, 0); for (std::size_t i = 0; i < num_bits; i++) - bits[i] = ((words[i >> 6] >> (i & 63)) & 1u); + { + const std::size_t w = (i >> 6); + bits[i] = static_cast(((w < words.size() ? words[w] : 0ull) >> (i & 63)) & 1u); + } } inline int bit(std::size_t i) const { return bits[i]; } diff --git a/include/rmm_tree.h b/include/rmm_tree.h index 85d7895..df4f612 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -158,7 +158,7 @@ namespace pixie */ size_t select1(size_t k) const { - if (k == 0) + if (k == 0 || num_bits == 0) return npos; size_t v = 1; if (ones_in_node(v) < k) @@ -189,7 +189,7 @@ namespace pixie */ size_t select0(size_t k) const { - if (k == 0) + if (k == 0 || num_bits == 0) return npos; size_t v = 1; const auto zeros = [&](const size_t &x) noexcept @@ -255,7 +255,7 @@ namespace pixie */ size_t select10(size_t k) const { - if (k == 0) + if (k == 0 || num_bits == 0) return npos; size_t ind = 1; if (node_pattern10_count[ind] < k) diff --git a/misc/plot_rmm.py b/misc/plot_rmm.py index c39b95d..881d50c 100644 --- a/misc/plot_rmm.py +++ b/misc/plot_rmm.py @@ -1,9 +1,9 @@ """ Plot RmMTree benchmark results. -This script reads a CSV produced by `bench_rmm.cpp` (with at least columns: -N, op, ns_per_op) and, for each operation, draws a scatter plot of -individual points and a trend line (optionally median-smoothed). +This script reads a CSV produced by `bench_rmm.cpp` and, +for each operation, draws a scatter plot of individual points +and a trend line (optionally median-smoothed). Plots are saved as PNG files and can also be shown interactively. Examples: @@ -32,6 +32,9 @@ "range_max_query_val", "mincount", "minselect", + "close", + "open", + "enclose", ] @@ -91,27 +94,25 @@ def main(): os.makedirs(args.save_dir, exist_ok=True) df = pd.read_csv(args.csv) - df = df.dropna(subset=["ns_per_op"]) + df = df.dropna(subset=["cpu_time", "N"]) for op in OPS_ORDER: - d = df[df["op"] == op].copy() + d = df[df["name"] == op].copy() if d.empty: continue + d = d.groupby("N", as_index=False)["cpu_time"].median().sort_values("N") - d = d.groupby("N", as_index=False)["ns_per_op"].median().sort_values("N") - + yplot = d["cpu_time"] if args.smooth and args.smooth > 1: d["ns_smooth"] = ( - d["ns_per_op"] + d["cpu_time"] .rolling(window=args.smooth, center=True, min_periods=1) .median() ) yplot = d["ns_smooth"] - else: - yplot = d["ns_per_op"] plt.figure() - plt.scatter(d["N"], d["ns_per_op"], s=8, alpha=0.3, linewidths=0) + plt.scatter(d["N"], d["cpu_time"], s=8, alpha=0.3, linewidths=0) plt.plot(d["N"], yplot, linewidth=1.5) if args.logx: diff --git a/misc/rmM-tree plots (B=64)/bwdsearch.png b/misc/rmM-tree plots (B=64)/bwdsearch.png deleted file mode 100644 index be98ce403d32702fa59bf8d6a7b6b3f2ef185c82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65160 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

      TRhyrbv3;kQULW3m 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 z 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 diff --git a/misc/rmM-tree plots (B=64)/fwdsearch.png b/misc/rmM-tree plots (B=64)/fwdsearch.png deleted file mode 100644 index b07e54f6b560c1395b03989173ff938d09d4d816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66942 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

      Ed@tV( z&s^`~KbY}y`jvbc!+vl2a(-h$vzguOffF~y%FcG%?@8yH>JmnAWT(?5Dfk;vU06+| z9iJm;NZt{HMWA)t9NyS1@gR9jRQ3TKN82|`Pn04rSgk7WNIZ=FprO6B*J}D=6-UFi z@cP=6umAK`DmYZNX{fVyTpUhGMpaHg)|$`XznjN-`xICNBgSuuA{-O$9pY< z(Hw6QiDSV#(f_Lm{8#y5NZtu_sM5{&}eot?MZJ>GJ|?qc26h zX2|W34N?|CvdwEGg=e4BRFiW3X5E+4wxMb#Gp30M$?)^J;vfA>zJD;1yj(hT|Io#% z0S!A(@*zUY$%lMaG|nHWl*e-^%X5nRD5JCdn90SqoG)fEo35*KB?NgEHY20K%fG)% zpg!DLU>7DJ8~XCRnD3otiQSj|gnP|m_W7}gCw-{vG@h}_VR~o8%5+lIh5W`x;f4Sq zO6m&qO$D_)?cO$vY1r%dE*qDx{VtQP-FgQ{|JT$(KWd86aRU=c6%R{S-C&y)y;Or%)#>&b0RZ?Cn!Z(w9p= zNLvSMUQQ93uwYD;`deZ7Cskv2b^?pz%a97A=UpmW{T1x)RjyD15^>C*qiguv2FD$b zRS<5$AN5*d@7!@AkC^smMy( zM>1=gRjc{Fwy!F?A3Txro5t{G7vYa|c)?@#dVtXNT5H2n4S!*qMg7(5IgkRFWybMe zx1m$GZGM1p>iBWB()UhNem*R+%3{@W>%JBi~x!QI|NnD!qYxp-1RIWoXyZD+Tz6*%Ck>R74ld*+dt54yuR)x+7r!O)*s;JVO(6=;jkjE$l6-C^c0#c^De9C}= z1$E2A2S5%-ILIQrMGB5_Lw=T#kmiNt$`Vr!njAL%zN3i=U6vo-;rH08Es&&&&UYz1D3Kf`8P&b>JH|WtfR@P8e(dxEvcJ%G&$HOZr zIBD3)0)|3rP`Xc~@ZRpv?R+LucfIsfitTOuR~RMMco#bh+vqhrCNXuLkm{ozi{0#8 zx{BXlve`9NvZYe6T)mpxI$)dH{OiLnlwSRspWE`WcK5xLsrCy<|L-W)Ei!)u-n7=F z`9-YSVF?MbXIWWU;;Bg#>Z78f683dpW7qaL5@Gc7H6~9*T}y%15at$GYC~gV^03b{ zfa%oAEhijCBGRJ3G{`S3Ot;yYqitsrwyx>nwwjeY)MK;jwg^2hP~Y%DO|biv zAH()f&5irL`nc_~6O``L$X-BJdkc@3lx&>TZwLn{4amyu;|zk0Uh7ZlWoHe&pk zXneHU9*~vgGHcCq-4~ZLas(^;=RorsBIgOAg+$QTV$>3;(IwBva6!`)%MDIt!(AQs zOt%czeAojl+)h3x#(7Ws`x*5ZVct!AOrgAsERvqEP!ifFmjCo++)pYu-~I_zY%0Ag zuI0kwibiJ}ub#`r)Z=)puSu*?HsJClTfEjsKj-Wcwxu1Z7ISgOIhA=dI9^6bErFty zZ71*GkWn%Y?HNs&tJbBNt|5MQE|8?L>(<8KIJ8}3*K`wtO7>rLIEb#~B@Gg4Hlar2 z@4te}J2X0){k67=6P~&hii_*o_)Qo0Ji>zYP5L3exVN!(DTjUD_-L0)oa^dM4@XPZ zP43SAY~Y-r?Q`ks%AKNOF$EeMg!;K7lz8^8D=AFdn+~}tzDCPOsVW^q*X?h39_gyL z3_f1cuqOZ7k2_~i>sR_#S57E6e?BV`d(iix%nDs<;m`H&9i;!_X_@9xi-A(-)rj%9 z9hjBAg|T;x_*fKM3u@2V=8)5?M zj#wXw#z$X!`{}&4&JCLhV{-w+;!*tvN*f|$=!)Hn-@I~t#Pn|b;iaql+SAS-_MnRm z7Y^5vjVkH5ZuaWkfExYkUg@yy#^zNlvC92By93_*Th3^WMkKv3makYtgs^t2Z zW8r5YIb_-Kp$)wXTZd9&&IMV$n=-X#Gxi}TSbiprX40rpp4|}F%xm5u z%=+;Ukw1|}LR`$5`W9@r`_+r*&&i+kKe2fU3L0{N&o`BH3c zZ6S4I>2M4@p^EmP$B+Gg7){@Na-vp|Ip)B=6_u1cVV9b% zr^NT*t~ETk5%<<=^Gir*PC4R^Z@U^AJ2g4Uv-w4yF)o|%8hAcauRbfUmLr*bhuL)? zqW0Bou5UiCH!jh&kfq$EUb748Yo2eqB2`L|2 z+i}5|yu3Vbzc`)N#PD!xd}+HviVVmXI6Dy7+HIDss;vocxOfGVj}KM6`UDn%2ylN{ z!jU6KOj-qAQ=py{GPUc-r`6Oji@OlAWamR#LGW!0yNS%ojXy<6%&{fle} zMlZ&%iWNkiPO`JIQc+M2Kv9m<_2kl}OZi{Nhc*`*rK&%o%YE_U;A&MXq237_NdAGL z*YB5@7brM*Ndc3tUpvmsXZM5S$JEUru|zX3umh$OD$#3l196@(ad9oDKpja2bjRkM z-FcCr51M~z+l`0WjS(gtmFP_4;*`&=TZ(i0z7O8J#y^q7@BSFiAsd^N zT`^mB?_Oz;TtC2p&j;5HRLMR+D$W7@KX{6TYOTe`r=~ljX2K??7w?&u?7#8)q;GTa zz})m=iY#s9;3f09=?m*S2JekYHgnGXja65x!~=W9{SuR3uSP{jzkjsbFu`feh$x@I zA$=`zzP__Tfv>Oyt$n+0#&uF$5Kb$AyQ@FO_1d3$aliB3+Y&XS_)#oX{ThnF9lsWb zt4A?+MqhnZL`yp@eXQkRtV)}rS!yAlzm&SLQz6YWv~9(I1v5WcB{0psW^~P2yKr&g;kAh1xC{hT5QA^nNsC`Rd0&T z6zBE#+W5!Kna&dfgb+qmEk;s>cQ-k$_^^mQHoxIKQJ zE!JK$;kfE?%GP+1@RXvt#t0_qb&GpUU%!93yJmm1%2QPrQK2KW`zPvnzQ+`qI%;VS z#!fXfNH(kN{DZXfo6-9$wF_2#*K1Q`#CPHN`uU@p-iu-FJBZReC_1NysXJy!LH6~T z1S?*>a)k(iqrn;?X8qwjO-04by49=ejm((rFCC3n_?E=G@8l|iaX7eWGT!>ZR(;XY zgMQtjkE{1IM+!Dq{?*(2v#g6Z&r0Cl`<3qAr{_QKNZE_19PMq#2d@n?t~V3&Q$MJ8 z)HtItXm&-16fd>Q4v9_g1~`fvoPqs(S+C>|`a+1zby7h!Y>b~S4~ z^=kfXvHgCYU}&3F>hX+@j1awVU087wGg8DRMG)LU@jnNr;2psw-|LejD|XRVoxE#J zCUwo-r`If5&f$S9mq?I-J0@z^$3gi@7;oUfm`}KXz)0wYB&{SIH{9R-kEL8KhQ99S zl5k+6qM{-W%347&UJ{XR&2Ra#cY0YqbxN1=M?WxwNpeZ(Zbt?JS=>p#RLS}ghk8du zp!PdVlvu+5ystT%9R~|7BV!?&@jEV6Y$WopXGdwHbew@RY8?35b-0-cM#%z$g9aG}Y;;|M}?_Lw?~Z z&f)iM*W+kw$9=A<#~O7mCx8-$r@}puRG}p!ZzWDGLRwkpAfsE7wZt(X z(vTlm0r#sPoNTeS3KPl;zgZJ^+#h(+Hsf)9zWEb3=w#v<-U_O5l7HhBYp|i;_(`vM zMMf_F&Z_pv6ql}HPq$&kmra$f4;IL5|3c3G>XOoJ%-kq0o)zKq#mL2e$5PwPPbKUO zCzKZ$_`gR3{to`3eiptn))(#Cap23gT~BC^k`}PsMn(b(;uHnPJk4gOx~BG7VY`s6 zO57*Ecei}9CXAwgKu7xC9TD2b$45k>IDv@SZs(WC1t-g=5VJNq|ib;_6&lRh=v7caV2y;A0A zt<7y#B{+q*`aZwQ8?DNNTvxDuJeqZoSK>`1&Cw25baM%*MMcXCl?E2oMd2C01&~ho zJk8yYGz!*5mV44Q9s5dC*S*Xe$>>$u305k_1Bk)}aQZB)IQZ|78xl)PZpg!j4+Df` zebkes&rGGGFNyI2r%uNP<5Cp8;4c6`@diZ*{6ObUu}0&XU8|29RP|f|qh{%;i|3+~ zmM*ZA{!02u7Xci7MRjGb@w!WAXfLNuCqF18t-L4khArY!QvEy6KZ(gIZ5toqENpCk znrk3foEcj*^`Of{d7S5OTxf!sx)*%fG-x7zeHiVhN3xibk@Yb=GOMG5U!q zd~1s7&k1Z-Omj|B&XoK+0Ta+k{j~?2`n%|ZQyG(wMDHBadEH*T&kM~knPS!$W^`I5 z&U$ub?;a|wKmE|t!h%Ur%kWCQQJ^}_cUw*wedmh?mJdb-6J2$C{fC*_qGI|zeiOeg zJWzV}yFKvuS}N|=(FAQTJjt&i59?p`t^W5RAHd#KTYc59xwl9#*}EjIm43W+5vB9K zvR;GNzM%pgul1Yw60RMs<4KQ!e}S}5yuIPq`(9ZMC(!=&FE^^<4&LF_=|f))iZxw? zN~1*ct7BLuVOX7^fhZ1M>pb#gcN4w(*ss=|>$70=+Z0CkfcC@ zTOI7*d46hOxrtN|l%>=(t}M{l_J>@`-9MA1&iLAuhC2hHSe|F0$=BJbo>+Mh@K)RKaMZ{J!rw5Uz}#XF9`pOyLS9 z305Zz4zuPpIW8%-(|_{hUD|_$@DJW6-6eg=9~8hDwrVUa@7Ja)h6u#G+3Q@UTW`Ml z<2LJ@#WLXGym)Sx-&wUd-|JT>T;}ti3&tgM9t$gs`Q0M-5NrbvH4NFwKoK)fn zMP+6{eYM`zv5e=&8^z_900z7^*?)oAXl+bxl&q_MQr%aF+ziaXakQo{0-aB`aL2q# zxz!& zxdD`bbF*(vLO#Zu{G3we`<2eys6P zi0iw)wvc|fzO=H=Vk`T>Xt#JUq8^H8Y%t@z>+QM29npvfmMP!FYgYEB*p^ytp7^Ki z1-S!jIF*s3y4*%Z@XA}KP%Ro3$`uz|#g|HxM*|PdL>%2X zQuHbjEDyp5PU0>nH$$ocGFHm_25Qu`I~?|r#Dh7L9Efa2kaE=u>9cW1!~^fkuGjzo zkEx#zLrq6Zah7=Q2|d3DlL`LiCndocRcUgr>9W3AVB z$lpato};;q;ID277~T=wTWhQoU0>0Cc!3`OAB`5U;59#7eST4J zZ%(@2!X)GZkN$VNf{f;wiaFOtulL`{>AQo|w_Eyl(6#?^^pacwtFS8~#uFo1xwLh=Z8i z0MLGYM@@r?`Sw`he`7`r4->ah?rf3jN~0=pGp=7v-4rDf#KgWb-!hjw|8IRL3@4)o0XM?bTS*zDu#9c=eDE&hs}m=-@;EP z3$k6KP1rRc8lO@&yfU)p_Q$758YE}BhMe25j=LY&n11_?Ge#FE6l+t~&#B5q<2*WA zM_E7h{%xcDts;(>aURR~K^p-nVXf z0u^-n`Ta76|Fg=iDLjz8Mwu#y_KSz&)TJpk#TfL}S_<`{brVmv_G$W!45@fruu z=jsPLR8^^eGqA?uq()EwGukQnz^9tNaPuHj04{A${eB1yzGqr3xLBgS@c)UIL#&g-q1kme=Hz)LI zu9XO5R1WG+)aaQ&Go9eRMR}27PIScLl&C&IVc=a^S=rV2pqx7@&ko8xVWd3Su%#3v zWhh2PmFzWNzE->{ZiJSCRd;^F^^kY zgYEoZ4WLE@Ae=apBYDTAq~nUrvE5 z&Z4}@c6tmoN89~e=m-2W^fJptS& zsv1=4&0hERQ^_1UM2n-Bs>**h)n&i#f6R<~)e^If*Y2~E#rT$0)%EcQdU|_(u+J$( z?H>-T~c}`2YvT`XH)I83Te|5@(PZc#Y`NmG;$M=X5aMoVP|wzj zSwP)?4~egP+|=Y;KN4ovM<&SGSFL*T>Q&LeL+jSc?zw@4guKAe+(@llGC=Ovve#o` z-gVcbV@0E>>90?Ak94+fQJAoH{xw}ym)ke+`eb5aB9pAB>q+O))-67mVfUYRP0EYZ zcn`e1wUfT>JT|ZOqX()VNu>@Rz3f?K^kcQk)lMGXC?)UEj-hyXHE>+MC+BPU|;p zSd?u)xP-EC%a%nKbELDomYRsMMa9dg|6+VBX8odkVW|7nZ=8vl`D+*JA&SVNGO8!Q z)r)vcjz)}V2J|ELr_`G{HdT!-m<_Y(D>OG!XSp&gaM!pMn*8)=2;Kyy2(Y6HhQSZM6k>d|0K>(A7FoW38 z=L{+HJHUvMn1RsHToV7g9*OEo?a7S#zXN(N?zH$SBY+M(c`y(>@jvzK;CjeBXr!CT zBbH^^5BkC1^v%E&#)J|f`=aUC^#E;mDX6|&m2&;{6@#lplm`8-AM`9nKWmy5;Yk7C)~P8tAGqZV<70EuyH`r#eqx_vnDbM{1spL0NQpeD_4>s zaLgsw=XX8U-y!}-y0wvp^i|UV{Px|Ev4;Z%nIlF~$H>UWY3Q<2>8+meFCXLy%ASY>eDBN@GxL~WZGg&-91LR-9a=>{x+$YBU$(rQa= zjH%X{q!uhasEIDYp@Y+m#63Gl2#SF6-47`F(AwIEg(AT%&=B;_$TOUl| z6(}5TLI(sg{SQpxLdQ-aUQ!a8M+Uzd)etKJ(sMmt!><~*ijog{hoshLk?rsyGHXN= ziH36L-o0lg&bZxho@39<%q$W)T8hIb;B-ye=jxE)(d-b-vij-{^+k5)Hw8vjAJ10i zMjx6?)q+j-Q}IU5nKRZe=sS!`2~!I_0t(gK-K&%$wIjE9$9G8H^XtKLSVNjF|TxUr?zRPNfM{is<17ZwPqztID zlGHMwH;px{bP9TPL;{RBLTuc$X@7Jzv0tAYbf52iq54JSW7cCqsp-Dm$S<2*MoY|c z&5XNyLgtBd6;6w{8s@pz5S2kT`Ih@HSE<3O9lm}~R6xca`6-N(k%dAn7n zM=$nlR=nHmwa$%+vY5iWW(|K_-Y+9!Kw6GaqCXA!#Y>g_-!y$~bzl<6vTfV8c2tKL z7qcAc{A5>ut-4Zdus&IV6l1#m4XL`A8g55SVFnc_9NH=2Sy>GS;$Mvo+mu2QgdO)j z9PwTkW>@W~IoWG9tpS##w&M)tc2bV@kF=IjJ#yq`#?OkQ%}T%04je2+GnE-qA4Oy0 zwm&xdaZCQVtXi4nDBg?mbSIQ?f=%(QSSchaYnnQ(E^OZ^;K_t0JqyZ)cC7!@`nYN% zLfGo}TesWb77+$&`lYVE`((FCtfc+<2al}J_!%#YkxAPfEMm&Cx5?t_Br=r#am3SO z7}2GY!OqR^5$2rk8b-cxGfdL?CQ{<{a?`OgPU40NP}KS|@L`vucsJUxbQE2zkfJn@ zl~9}Wm}U2;83ewLz3nJHSeJN!!nDqP#?ty`(`LLHTa{GBJ28_&TC&7V{3aO_4u@)5 zteJ~%B)(z9(Lg#%I~Z21D6w?WnkM%Xa-QA@-Wk36DNX|)#bA$O)8C*>@+T!FrMf;n znxwEu>$I9M{@c5(?Zz?!fN9oe%#JtGP_oTW#EMOKS^lWn*4Eq0uM(rS9`%U4rDYH+8a=VA&l>nVWhKPVzY<(F-fi0sLkp~--~Z-K7JrEm@86XGJ0_v*P_EBfF~#vgyf4OnNU`fLj|+>WZ12QgdH%me2VQx@gSCF z!^6X7g2oy(At7a6mGAdnG%Kw+`dn?Lti@_Z{(-E=xS+gWKlm5Obqox43gtORtgWSN zzTe)p{;Ir%#SY~7R}h+nvt3%AXP(ul*&zr|G-&1#w<40b!Oj$-cp3PvFN6cEaSaeI z6b})%rE7Jcmqf(x^Xmbvpjk};tRB!9vJ>z0pS8B$T${0>J8fhXNV$ocl$_>Ar*j}` z5CLz~xoMmqR21R}k{#^ud}qn0`bVI>azmL0r@D7zTzw4~!U#(giil~$bCc+oFW*8a z6V-mh47JlT`{pw8$#isdqSLQd;>n1KtwxAWt5;D`xehk34cGzoU89=^vLZoVu|Prr z(1Y5CO;8rzTm~gUU4FbyG=^fq$2K1e7Fhw|oOeL1%5$CVy}B{e&KV%(pXV;ps|AHNzDdu#~`h>ghF(RM5dQ7Sp>;yMvACq`(pfm zEI}#?iL!U^-X#zNJdqni?6E#6GV$8E7N0f+I;6~)%3E76@jxVG4HdT~W_e7jR(Xc* zvnLxvetvFtCr}Z`?JroZ6-pt|^#%^DxAqNWEFu68(F3$-lU>EmPUNuyCv??!+IN}^ z!=sjbRVXMw=%#P^fCqpSfgMYk(V#5Mca2#F6>?m)gmY9VPKKa1pxokfsjKPE7$_>& zf#f`MpPxhDf#l*Xj@@f>a87-1%1q8-ue>Q7Fe*9Gbd_*fu#c~Oy6`Uk_1vqz-s5Rw=~fD^y#~( zz0F%pto!gZ3-G(wkg5U4V<$Nb_=zk!$9uctLbm_hea^WJd)TTqeGi&RwBIhrr7Vaua`YQvRsR;v!jOX%({*4N5pQk>681aGZgT-q>ad0*?b| zQWw}tqW^WVzgt!RBDbihXDvBuC8(bAv4?Ya&HScKn^J8MjTgipf4}B0xIL3fzDw+S=;^%*V!*J6cYEmBGnRo@~>yy&6o_LT*)968aB^sD; z1lC4*9U#QbEX<5+kCNZCWy=8+HZ$G8(em@JpXMTu@00km6OC$t3AQ)qDt68W(e$@MP# z%X%4*yIh4d0Ro*y%yKzXW|Vo*bpd;7x54K(uz<3tR#t_xupT68IfRW?wIF39S9&UV z459iN&d>hZlCm-a!Fph(pyT=)vxG)6c1ns9Ak_|7T9)nk%aGI4uIKT51KG5vD(OuM z<-`>msiOmg%M?{rYjwMLjEr#~!&Tb+_6@vgFYrl(jXm*EJ#_M9A#`J)R0q=mzm$}e z03lv{djgb219w&lRy;UO%gqma-5=Uu{*-}d3Y%PlH(i% zMS+4-x{alG!>yW8q0PKW;jlv=1U=nslSW9)j!nWg&Hvp_Hz%B4Xn#UJ^ zesZXd=+MyI`_%c^36eshw$>{+AGVG%p8k>il~eiUDrFzue&54MoER8(XlUKPYW z79hD@p?Q5$!9at0EE{qfq7Ft97q7BpB$7=~WBcCvS{n5>k~|-Riebax^fnslO`J2w zN85FqL!J)|Pg!KiUpqRkqMSb#BFYRoAPZx^nu*M4+_w7fW%(m{&^@)wn8)n`NX3RT z`YYZMLXp@AONs-xoBwolhif5f%C9F75QhX;N%3xVNhNPe`=7cekv;;^2^WlkkJ)4vMt6M=zOD z840;aUHE80No}oa{W!?Y9haAK%fOtRBy{KBUtf=@gnjk{`NRjhI$Bi^Zz<9ZEli?A z{k<`LJ6UEx=z+YPLkDUSH8s?l|lfT&NIf@c}*NMI0nuE^M1b zNQwfIeDi?Tl=RY&6WV8(gJ;Q*K8X1y_TTB$rQLS;Hjz$(RL=*!dS4g6z?>e_hszpndU)&Q+k|n&TsKc}|tqlg^4E~Zx z?S!)Xc7;f}s!vhW0j?uu>L5H-BCm?hCQ^~l15JQOA_`u_#WD2s^h_c-8%8`MMIbS0 zE*U0>7tAe4hmk~IEOb&0k8~B2she{Ey+k_7NQ#esW3aKBTUxh4!!rfO;6i_?Ut5Xb zA>tIyQ%$Q+n?$X@EhqYqsm8VK&-|s{!PC4c;Mp;VKfi~J-6<&jf>W&r92WXZ@5yn5 z8jYFc%_IxT9>vs^EzzSVq+m=ak<<+o;Pt?@h|amw#DFhw6y1DpX1i|nfqL=?MMTm* z>7&V6YYFv9dZ*kPZI@wrB14PJ`W@Prx)au~nP4R!nm6g}F)EDHcn-*|uPYaO5sR5E1U7L8*-#s{@%-C7+brHzEY zOeI5<8%3sX9elQc;dNs%^78Q=p)etsDWyG@a6C<6!eR=CS{nKD&P1d!WExpFEkzfh zfZ78jMH#?+(FNJAGv748`l^4hWHArQQvcXuNBXaU3%cE0Jl^%chbc z)icD{yyCM_+);aoI*vRq8HY)zXzpIbM?Q)-3M@!7)9E{FYllJd^a+KB%n}7#i!4BH zXcg3JAsp*ddjJMbXiPV%<|F8jMYc*bEApIo=XQv?n6j1bN*xE*NJk;JOczy)$TXQx zWL~vuBhW87b@ib4qiFptrjY6!tzRpf@llgwdeSS`bGD=d`4efhwz85tbjX{+L#E_L zwOdk+18M2$S5oo;++4J70dz}4A$J?QOn<_K03fi>wNuwt)$RbWhjWd5Gt339#IqBc zoe7bg0H=V@lc^n-#YV{ohrrY?8#zWiCdzGG3=;OK=rii- zH^+Kw$zH>5^7iq0583|vvq=BQz-3=4Jw5$)E&gH{ytzVLtzPCDz1V_xyhnXAy$KacknnZ_Y?zs3*QL}A+$A{4=BP11Zh zh3OF8_EIzz=`Wmd#oiQk{k4aHu<$Wj1hMk^TIlubJ9=R1rNL%x7`lK!0WAh|C;0Rd zVvt{-hvcVSnc<^l<-Z&`M}e=kqx(X-P^3X9r=ZZ-=Z*tlr`wDJ*FL+?m*|rtn&PCo zQHv*7cb}M?p6);;g8sNi(sn*RIt0)49={ID2?*}&*1J?-nezNCu;9UjO{16*C?v!S z%zv7+gSxcJiD6K3pTb77Rg9Q@A9Zs@g^Y2n$kbO>1peM$OBZy-Yyts2$HXjFl-7vg7kEVK3?%e+(@T-Ixy}AU(a?eY zX7p1X1RI=Xr>v~(;xFjyw~;f6kXi_2f!1a|8h)1FzpO_?-d?pIlOM>1u#GI$5|@@f z)*}!5teZi%U0W)F^r$ERgwJda`t<43TVzB}RH7fuCSi*(05W}x%DX?$B}=ibt<3@D zDn({${#ugFCVy{l(ZR&hEQxun9~w$v-poSLfxZVYtU4P7TXv*bU0HrvpH|)x1P3cz zh2*;5DCI%piL0lc37kl$#Cb8TJbpY!c}Z+ z4XIg~XABGsp6Q=@sYG;VfmJ@xLy&lI|$5=!m#vb={&RE0JctJ8ZK0dwzz7nJqFrg?X=UJ(TtwQ;l6Z?}i9d5GnTh!|Zo^MFGbYhF5 zQ5;Go0KZQ%GU_(eZW-B(!v0kBxl78H1xRnmO2Qio6VcIfY<@KM4n$TyO-oBFXSM(_c)8+lS9c1R;w=~5m4(Z&YiyZfCqylQ1LAKEO zvJ^qpp4y|CBlbha-5dI?n6HtU{T$hy7EVGcmN0Qz+F{jsXgRk82jza(CT*vlOd>CCZi9Zzpr>e@$UnUk=VRD=y64H;Lry^TGJzVV8vaBhV)oGk zu%@D-4uN$tf0~MdY2H)n>UIN0Xi&goL_I3*>I*vOT(mR|BxWoaxQ31KN;3 zeILMJXv{CN8HcOPtfzplBRSnpow|(UTo)UUfaR5X!kjDOGTP}VqJx~)rJ~M)$irwT zNVda2#Y!I6pE@@WI9ZG zty5}zYy8+`?LXYTk*qI2KF}O}D|C&R)$^mZxBUGJy_q)v-N7P{F-dP4MEYje-HFL; zz2m{gxZ@zR<>T3`>E|3ccE;VT+Zv;Y)E-G6bdfz7lm@&?6o{xyHCBzFUcF{b^euhc zv?{;sW>nfy0L-N4h8fdS+e42&D<@n=%8xA>Xqj9Z5k@Jp0+BmJ(wTs)cGK9A_k~`e z=CE?`b)TPZrFawzWq)p)gB5@tei1_+Z(zz$+qp~Rn*Q+yoTnL04??3PiR@;>eY57Q z{m;t3!Zjj6<066hPZ$a`rJFx~Z(a;&_ty5jNotwdTQ_|((M%(w{^Up(a(&_mW-FRI zS4sVkEZ14O`{IVx*y30;x1G*zByI_|Rj|*h% zMR^E9e9eM`*@IGmto2(-B773t49}eyXK!4ylv6Bz<~xwn9&6cYMS%A|_9$<_Ini`-!4FRFecK zl9|mv5O>R+=7$DPx@qH*H)%dm5!GEJg)=pcP0B@V1{$cC)hrx%BJw@jsf_Cvlaug% zK@jkM+_Q^&uXckefsAmSOl0LY*4N+EkuFdQS-a_nff=#lP^wEdWc*h4*xXtg)h9a; zheed^)l!1V2}JIlK|=(i*e)&G!!%Qo6_EoSxl|$X%L*_S-;D+^F!xoMoVENl9ZA@c z957A+d$HoCyHIf!!fI)%b392%CjsrDBp80Ph!GC}0S`mJZ{R*~Y444o?6aG%Td6$S z6mFf;M8_*9=NrGM=kp>)2_6c``eA&v$tW`<(={c* z;jSbv4q@4+A-yjs}1e6B)7>L@Cl2FMsXs{uF*eNvKnfBGEl_mVKZ}cz0PzSJPM< zj`91cqOLA3`9K+naVOz8Z(YL3Er0?HTnc3Mbn89gZNUy&+B3AIiyF-FoD-(EZ`veJ zVM1U{pRVVYcGJwXfA;JdIb93zM7DqmN<$(1vFy|}g2o*M`T1MREHN~E17{T9+3_FM z#RgiRaNdwM1eFX#a(u8r2@zsHSl`~rv%Tl#`7DJYcGGfLZoks>>v`)-E2Isj8?7b5 zKqyK?!pc^wWgiO1rXUV*c24_YBk9nddL7V>bpQTDJMz+wp`dP!r6X_wWg*>GlJ4cB zVA=u$xtI6bnuJepw^@5=y(f6mv3IS(MaU;N9QJC@nwBDUwsI&5)OI=yQSq)Ez{595 zy$d>F=!CuMnVQS_^EJW8PM%EP_o4dn<7eGzF^e4I&>G)bYum*wUW>)Fjp9w>bDJAF zM=wr<@-1|BiH(aT%5DDM)*m+Fgr_1dxRo(om-ZiDo(3N!+Oujr!0mZdFRmqv_*7sv@XTbY@dcv943LF`}y z^l@zx{J}o9NA{{T6;`o;)DHo=P*}WpF>S8)b`*yBI3x?O9(5-!m;XA@{o;6VKClW> zRFkq8VN@4RfOJ4RN{S z>WQ#n4vg2g%$w-PiB`~Hm>WL^CWH7Yrt6NWk3G=#j+ik={NiPtw zcqQ&f2I}yX%F!V8%Ps?%-CW!qH^`k|NWl1SqohE7C_^NiX6I4>84%8hZdKGN^4^%5 zAa7@uJEj63m$`$*{U8GnW%*l};cNIJm{F*QKQMoZCS%>;nZfIjPVG#@y zmq7$wyL�qX4Gp@aG)@dF%HPL1Oer*i|`ZA2hDwbX8StFH#R3N6!`n}4;8Yt2mSTS|2wJifA8!4olRbCk{{wru790Qo diff --git a/misc/rmM-tree plots (B=64)/mincount.png b/misc/rmM-tree plots (B=64)/mincount.png deleted file mode 100644 index e9a94ababf88647fa198a95d91377775fe1515c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59531 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 diff --git a/misc/rmM-tree plots (B=64)/rMq_pos.png b/misc/rmM-tree plots (B=64)/rMq_pos.png deleted file mode 100644 index 22b183042c84352ff570486d6bd778e6ba90b3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64818 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

    1. 0*M6xtK<*1*@-H55`94mP6QR( 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

        +!?Qz*M&Ti7I;9?db+=8Z2`QD#iudOk@d(}=8f zX1aTQ3$7)&f9MlFr*C;O0QWAa|KVC;eUH8MzTV!iQ4a8Vk%JaQx(jawJu3PKRk6hRS9!gN!YnAkO|qjhBuckg!Dyj#T?@T-^B;XpxcLQ+Kq zqQNMVjh&P!#m2qMwzwm)o%k4_R9hOJcA(%Vu`eJ8GJ1qxKCBLc|MhEJ15_}Jz$r5y zdrs7=6LWsP>-b3yQX-4(V@wLgS2LqRcv44FQ#CCz7NUkNE-uamA80Ak@Swn;Ad{C3 z)&N;Pn9!mfk;QmuBovY$q+hT!?#MROxTZa}MMh|cky3}5o!tw_#m>qcWc&u79v|B2 zIwJ|AZ=+qiO`jni%tBfy{(3eN4FL08h|6j9j(!5Dfr`-0zJcL%oVoO9MnpTV7SbV3 zT2!UIQX6282qw_ppBGX zRsNHt)zv_Y>m*Ygp_RVK)xo-w^qxtjidexeb16$T&A1#}-3r0A4H>b$jB8I@d;3+K zp-3<8m$lZMN&z1(cLDyl#c-Lg6J10ID$uf0yb4k64bU* zUZe|w^fPW0ZFB(<4nN~;axtjjujBYx0?vy`38{@xSSYmRRdMY|u@JN?^4uyYDCSqt z-O|DbS*mTMrEQVX&L#{ukrw=n@(pbp2j6JKl(Mkn@EL;Fw+svjQC{#xIO*4D#JLv240);k0I^hI2vT_GEY93*g?A-w zI()$$SV_qv%egONe2ZP&A_St<%;xM8q*}rIPfI$3Xp_fluKP%V<}0(7b2oO}WM7 z6jUt(wzLAgnK*V)lRMozNg`fqjtM6yvMjA|LcOvIU3K{Hd^Z|Qi4$&*TYP%5q{s=5XfuTYgXrRawbXgdj0fMM|ru=E5 zIB&BDGqUp)XxX{JrznyXzsO(VEcuL?P>}W!8n`)}c8-(gIl7NaL5~KA%!_s&A2(Wt zR^Pi+_&k{5tg@0U7bNFwt}{QLG@4h9pVdmN@d2oG919pkxW%C2$R9j7cdg`Epz6AU zT8m9i%gKE0Wa2Z_eo0U%`-s8>aO&0c^mIUNuN=Cg0tu2(HQaF}E_iliY>bVx0TCTn zqIanFEh;+tI$RF5k!&p?m&U^*M2r;!?%r+x@NJ8H+tQm5h2GbI@{V6xS_i1`Qb=}v zj5@N~YNS-$2PZ`Cadw_vwg>V1-l&7T@#=#9F^(;~rL(BTQONLFyzJgccrKplXDdHU zjsZ5(2X08VI0|SMcJ@t#rcq(&DTR#`_X4HiKCE@P0P^qLc@iuabxEA#t?0bl*O;2k z`vDOU=tT*rV3*4S0=&&o441T)wzhSEz7nKm`~WHu4Yn5`)$9XrfV|Jfjr$v{inv;F zx{jvR=jZR`l)2Pkk^{YKaQ(V-L2wDV9CfzcK75wYI`^(>)^B{bgIxEXXYlI#(#H1tnQ`#P92mLWNmuY3l!n?5MC z1ghoIm_enNR)2fFiZdHzRPW(_S8;lPB6XYpAApG1gV zo8ynFXcpjzp8La@2L*|_zy05cmH+>`c)xq++2!0RcbKk9y1G&Lb7-HU{4+Vd%l`*H CIr~rm diff --git a/misc/rmM-tree plots (B=64)/rank0.png b/misc/rmM-tree plots (B=64)/rank0.png deleted file mode 100644 index f78ef3054724db6a1bb054725c806b2daac30364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64979 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 W5i_*@Kr@9u$BvwkPLkBU_WuBMp*?N@ diff --git a/misc/rmM-tree plots (B=64)/rank1.png b/misc/rmM-tree plots (B=64)/rank1.png deleted file mode 100644 index 3354fc37f49a71f0613bd7b17316341d6dc0c7f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56521 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 RWlvFm?meiLp=o*PzW`zHXqEr~ diff --git a/misc/rmM-tree plots (B=64)/rank10.png b/misc/rmM-tree plots (B=64)/rank10.png deleted file mode 100644 index 254d69ac0531aecf6e0cc145a39dff297069a4bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59948 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%0D=G7M z62=2~O<3Aia)7N<*mN{8x5?NIeS=2Bpu3wSw2?3;U{zwd6X0>BTR~(P3O0A$pvofW zGgQxL6DKL2iHlE3AW5Xp+$t>j-ypUasfx8iRv`8U$Q36cTl4|YB2tP#r?S#S&FUDgULnS#;oiU^(7vMqL4fGiP}s25L)4`MsLT*n75cw=;2=+S zGc^TSwWumZHrKCF9uU^t7b|slFkeM?bePSkdhmYUiUPy7n_9Nt@N3q2(>NK3{D9@r zYyphppC4ATm8`=*r(KT;E+2cp;@0^}&fY2e#co&P_cWrcwDfH=x1iEpPHw_}brqG- zEG-ZPK|b6*cj`+PCoo}+X=)vJ0CBOKp?3~WD+u;-5aUNu2`4er?&$)lf&!ZefpBB| zGN8SiEV;=Jebt4x)FHZVVjYgDhxt~fX?ISk>q^L_Az`(mGZ=944ew!#I*+l*pHq#Q)3eoG@ME81SO&P7B9p+ zO)LW@2N%tc+TsRy>2#LP2n*9e%9vK_1HjjO!EXRv&pM4FZ+MV)_d;E#m34Cr_$s~K0vd8 z011QfFZTqJBIE%A_}jrjzw+p=LacbI6%=CTWq&Hf*1CAzHgj6ldB8TOr$^;{mov0B zK4E@x64%Hj6;=rV%LB~RS+g?4S~aoxt2QAQCnx7d&!hh%;UmZ6FTw}c#%9@jY&C0P zTy%6al)*S}*Q|L@of4nERq!|C!@zvz?g(%A^XIsauQc^L^MObNz$utF!XY4Jh1wPe z1Dx@*%*^vD`z_pM$;rs_1f}{0o!GJ$u`<`MzvNdmnaZ7Xfs6#U{GvE%DJh8H9Z9Qu zG&45bG3~_0vw~e-LJ53y5aw#0R9C)L8oTmsQ1sv^ZS&$`J=e31IwMWBPi6 z?#VEqVTzdEZ0JL~o8)lIh(h0laOjq9D?j~V9s?&KFNeJE#-#h+U8zzgY>F!T##M*O z%v+<+0@o$lOJ*w|Vj1MLm8IT?

        i3c0TTNUNkRgF)O>wmyUz?1TaU8U{tyEl##C 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 diff --git a/misc/rmM-tree plots (B=64)/rmq_val.png b/misc/rmM-tree plots (B=64)/rmq_val.png deleted file mode 100644 index 9d1aab804f75447b687e4541383e81ea8c107959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65838 zcmd43cRZGV`#*l#MU+C46-ptLl1M6$O+_TDoUWh*2rk&&J3O&Q6`b`gc_b=muS zoa%kwpZooGe;(i8j%hfU0X|23tQ8NdW`lDtZg1znDcO6;O4x- z!DwV_YiT3E#bx%dXK-3r8*<6yFe}2l9JG{FwLuW-DD*dul%4lW1P4K+Zd_G#jGi8F zay|B7hiG0dkaxmu@ZHOk_#;Q=5qwG^G1V#(E;75$0m?Z|%Hz77l*%5N$J5f%aNlw~ z`swwY_yE%zT7@GcXO$=1u9)>*G7DVaZfm;q@EdPy!wcT+Qf)3RE(7e>uP@|SA6ppy za#9Rskz!=pyNrGM2I+o3ew*nM2+)k9FeqN?j4GcQtQdR{_4TXFdLF;cFUPNy7|~;_vP%O|r;R^{pI0BT z;bvv68yq;rq=zGQqa#Kt^zrN0G_*pFM=Z*gslaStzL3CUq{Ow=bcS6JDn1%G8{iGylTG%#4HV zZqIq>=BcTh8Rqt8TaQXdm_?T@cd27H&DRb43#|}Oe}8`^OuBZ(ccQsK_y`kS^p=_) zKYq+8Bt-k;#}D7Yz*=8&=J}4hazDHeiv(jz*M9oBPsgVx&@W znhtau%Tq*1PnpXVnv*BD`xDN<*SOMeiHGQXeomQ@Z`1$NxrX$LSXMX5#7TIiLk;@M z``(14xUIH=Mh_mm!%Xq>^J6{f)$>igKI>K8;wpO_!Ysjb@#4{ig$1~gi{-mJE)g>; zGZ-I?c?qeo%gSTfEe-N$M9lgef<3o_1k02dh$#ns^?noHOA%kn%0tVm3p=% zNHCu{L&z3J+!%fyuT_XIgxR~yW%Xycy7^USXMtGYOFhSDu|rSxDHsnG8pyKd+B_K0}9K44}P zvb4%rkZ%}^ikYqz(cSeRe6h)ak^*?C?NmkqJP)4j9ME3TI(Vl22E)$|Q!V|HO%V29=OX{i#2IrBWxH07-D>gwvg{XOzP-D3S}HWLH`lQ7M7m1OHDY37Y|r3gv!LAj)YK3*HnzkZ{W@pU z1clVZ(Z+~^zN{9JO_^^Kw)6$02M>mnZ((n(mvLzn&ZmDb$-Oe@dUsY?R#rC3jBadf zxm$a#Yb@VA5J?;vxqptGy>Zz6ip6)10ztb;MW4ZAA*653fCMm)7WwkiFNbD0-t!)huRbQeTg5^@B(`1{tr)CQbfSgqKlyPGWg`LO5~ zV?`Wmtm8Fv9+wqU_};i`8B~Xb<`MhZ{%2UMH3b!w-tuH8HJ>G;w6wJ4a;I`aVPVe< zHN5|2^Wup!9i5%J5I$5&?9XGd*gNv_UYaHLKk_l=c&)adO(wp*6LG6R<}2|IGYSfx z^w`7_@6ObuhQ)EKM87WZM`p=vb)nVpNZj(XW2_^l?(3t+(dbeLqo3ok z>yAF=bKl~FNyyf%AzYdpWC&%^{a)%spXJWLZ;gLt!1fpo4b2e-h9LN=C!L&}&T?|r zN-(%RhVkxq-<+Y(x)Yai(xQ~Ss;VlO~ zlVI}AYTzdBXlZc=gu{Zeo15XSZ~y3K@{}#-YRNq&#e@PDl_6pYP&7pOEaTG zA1Z6wh1JF74Uffl8lTQkVmHI&H)S;asPP$%8-|THy0US(TZ0)Vc*(iUc7Et;K{p98 z@yPU>*1a2@XivU{BwqC<%oOaHNJ2D#ew$ z5ks0Kc9h(XXL)%!B_rdenc4aGX=ynYgCatUUwN>(-mp7(el(ob!f?3bpjDTMGjYgGFVrFJ9nDg;GR1?tEd-`tJps*F+Jbd_Yo&O0Q1UboTI<8~! z%-1ytK#u$so(EqjZrr#57^wOI&EYzs=j_UvODgyuZ9DHN=WVFLh#&}Lhj0mdvs8=0 za_per^XH|LB?|lnRrT2m zR=F>mJ%v`x$PmOB7{Z5kE+qqjUU)>fMl=_?Ba&oeChwI1sz~tI-J#dEi9U>2ex_9Z zSbVsSzYXi!lcP^GZ7+z_e-3Ab{2in0CVUJQ`%P0*4u~~~2ZRdj`GSmrYi4p>wI|&+GiM+tKc!7-^Zonr(z5qcGcA2l_UBuO#@JH> zLmsJ5T~}08bkP)MhB$#O$}{d{>oMhx=%!mtCZp!AoGH5VW@2(;eJm~rkburWv0Z&* zqsg+XGIsqo6O;CDz-0Qp^h78NtkaIJE2tq(W@Jht3SlQdj(I)I$6fdG- zK5TkRM&?jv`GzraTiKh|drZTo=`w(<6=McEavGYxNfX1(IFGUP76XQIddGJetJ7aG zad}r})M5|k<>g@qYiepR{rP3xEl-EP=t)UEYcxwD^uAi2m!Fpwgl2r0IN0k}yW6Y! zHBU+T>?SE7eCk}H(Y-`7di5QIq@QlAObRq4l1y*SIXE~Djm0?7i)_tb@3-sLL_7!G zH%WI_J$A>&V)L4<(k9Vh+L@+YlD^0~Rz2#+RUYiOw6eq3a%!RnUA(2=zh7X`XS8YV zDtfh)2sc#=@PTFU>6Giqsmac?w$@f8O!{fD4Exn4n{^s z`UV8tbadpauBp+z7)de5LmrZq?a9K#gj61Q_ z_jm5ydjb%ZH?EH2G!M@)W4re5Nr>Lf#tea&n=SU6VquYy=XST}f7E2;vvY7P^_sm2 z#9hd35qaUKST~af5m*A|Xdu70z#?wTq3(@*EG?g9_N{KGqJJ~LAt?f-JqO*`jl{e?tEN~ZGBVI=dKKO z%GvXfWcEg&m(HR8l=h4hfPKN4H}n8IILH`8{9$_!M;gX1I5^x762czvOnP{hic72C zKwT=dUwoi+CLa_0@+CfmNyFx7`$bW^$(Of6j;0(vc5Jjw2Q3DMAywL#+*MS3TmkDl$#GnxV(c2^v1_3$czsKYgq_`G2=Lht+s|-l6dnOMA4($Y1F@MyJ^v6*03pD)T1ffx8&g@st?}2P z%((_Zc4cV{{Z0 z6mOs;G3iRL0-Vv>+B(!;^^z8E)U@y8LA2IFboxF%%m~~PFzz^8MhD$TW6?IQU4~3d@78x?8JL(R6;Z7H+3)x;U^GXFd1y6p3PSea zz~senPR-}9UQu(Xe!xfZQu)rtloH07jW)9sEA6_oKKAOe36*S|NWkV?MMdY#WtxEQ zggARUJR-7BkfgY6e#yKH3;O|3t*mhhsv-2|-Bt&PysL&@i1gdG-*%j@B5LdD@hvSC zLd*^iCAJx5+fFEGIE{uuMd*lr2f$s0ADx!kB*>|#o>pwnScpu(#`@++0JW2bQJ$L6 za>rfd^_gPr5BHzNxpd?K*#7}&wQgs7b0JxD`{4Dbhpyhg&vJ=|^ld`I1-(xP`r!uF zrgK}=+?1>*J5u?auq;}x3pX{a8%|3~N_r}#-83>fyRkIkJ-9vV;0Se6a72U;3_;ag zt4C(pirO@$;4q3t6%-VX(9-%tjneNtmC;jVlPvVvFY8lnt=^ZH=djk-u07i7H#Xrc zU(=iJ%Ol}2Y`&qV$MopYqu}Uhe^_KR+V1P8(GQMWiS(6x$ku>qDDZ_#pa^R1Xc0FW z$myTn-t^lVpksRLS;HO-c@(Y@N~(W7B71useuC3zoL6ni8@FH&5&r-g*~--*U*BS0 zEiZ^XZ#|c*h!`OK{`B7!TJ5*lnH3KFihA}gEi?)I-#lvD zD8U<11=ztsMFM+rdw_C}^&mb1W%L1J;%l0k1FB{%xF248P~ph#HQkvd+~Yq8f&;s# zIT!`c)rHk4ni9$Z+^d;^v~m_{K?754n{6i z!6RW1Vmut;)peSGa+_RumHV%!`l$Mm8}Zv5q5Dm|V2RPdhhF75!PKS&!Qg-jnaEn!i|M(JgJSuMG`e((ka7EfC8F@&^HBB*{cRT3d63XsrWr z!4ccQDzC1N`DGQvAQ}kilu=li4zl^g#KbEeLoxux6KMsL4h;K(G~_EN9ChDX zkU)`rr6*2LzS+s2!@~nBMQ)q+8c=(1N6JtOIdVTebmEaW(cz!4Ua!MM@tXJhl5iHj zshMlKAbQI%lIZt3C@v4|I-yzYY1#rvG24CHd2462q7JIp^I0ulzEnGn#XxltU^mtE z1F{w_@=E3m3WTC~&8i{K`UHvY^gQr5^Wxz4#`1Mt-BYoSKM$g74QsME)>8NLvma0b zhoPRJICbh2-K2{lJLBy$#}LL#mpWR651M{er8PMJd$RW?0i9R@^=7&Zp5mqR>1OB7 zo~?wNCqd9UN>fX{)bRp~RCRxm&FD{ZqmB4-C?f8pb*_!Pkh2`ACy$r`M(SyG^)_goo+< zA!}%B4MLF0D&HVREE~@k6qvMQnVPYyUS5!^I>~ZQ9z>cB^sQ{2RFLH0hiz)moHy7$K>T@=nK~6o6+GJxqEiLc>9)# z<;)o-F0PhgD?L3u1i5$bUWTmT&$CA7sYsst`3dJ+aV9o?`J%%cHPFY`qIp+aI|$Zl z(55uRORX#-1S;%mgWRILgTNwqoPm!>$;@0S%mTy%0UAnuNL`Mm$H>XO#>b5iF(A6? z-fF&6XyCuX%L^>qr{Quvef`lmWe5XM0{8df6A>|=J9iMdqpa-n<%=|Yj*JWtU3jfa z9GL^=4kl12KL=U|5wo+)bIr`_H&j!jfpItGJxNSLB23Q(SOzF8(|5xRKJi27YnoCrRz9zz-g&)P!;gPhJE(z8RFU3rv_w~Q@^sc^#|A4k+HFwc1KNJ zU0ncm1PJvZ!ibj0+@&R3D9@n6qoAa8G97LzO7Aod2@S=4GvR79lRNyXkH~0)LoGw8 zfERKd3XU&LuC<7M4t9^nYghD_b3PxZT0dG?${1OyE=&!S|Kl;Rra zfAP$?a=L8D2sTeZ$z^ouHLqwpd=KB}&v9EfiU93~gohI%Mn*-IA7W z?dciss$JJGpW=ym`SS75kPbp88bKE~k>C7ati{&JiGOlxYM}4qmP|pH!xwvjZl-?tpsqB5>9o`#I9piLQU<62E@E1oD*10;*h@if?SseISKz{F9 zOD2U(d86vcGbL63+i*nI4nqRE0Xq~>6s8Q9&w50%bm`kIM}XNEpvaeb#f<~oXlHJTKF1>@qrUw;G@2#5~TqohSwx+?SGESbGX zNg;{*i#Sn#K3d(p=yRHnB7^hzDbt>89AynF0{87@WfXB90IuPfoRHT*i9<;f!vsp9 zOb=Et_`OdWHghUq8=W5cb$RJr_?>Q@oAFit z{)Id(9Ie&{I8s{A{QMRjju#W`v#Jd*8~D{N*Ali&VU8K`FVb-AeT%l;8Cw6RI8#3%n^3KpErT|GwS-+egiK zFo|e|xc?+ldxhsphq5#b#xOcSBt$&-ATJ1DaN*vRm^uVE|9kvU+^v)!K$L_U*(PM)7f1MDt8gpg8^z!>{bJ6_)|kT zvyQ`tH_0wePczAW+o~fju8~ro$@X0N&suNx?A5DjVP(fbcuO8<9i}MCOTC~jWNuQj#KS3--cWjU-CTrBMimd5=c)~(Ku;BJR*4N+;NpFi=_Qw2u+5Ba_ygD zZv4)RR}A|^GUKFQ(RN?=8yG${i52N1_U=gjei{<-6q zd)c{P^>=N%zW-(xqm=Np+4x3j(!-(XOf4Z?7(OjyQ`7&l%9ndhoCuC0?jjRAv@Ay) z`5m^8zS>*il8kZ$BjrMPU#X%PoSFCNC|EXcdF~9wdzyai3kfqhGI*j2eH8nmX7g(PYlq)`*c+5yeEL7Q6fX-GxbCWdn`hG)~ zTsh>tIk`ms5IeZ~ODVo;a)b8%o6)amEP+I|GkdLIpA|16xPGtct|Pul=PPG(;_rRV zN0C;YJbe$X%e70-!!WS@{#r*Pr^m=u+7qsG^Iaw;Fa9-UEvO#Z%zS4rAa{1gXJ$6< zzdfgNhlOxW)MO4^GNu$4)U?_v`Ya~k70zR!dpb)|iC6dtEfv+T{Uh>nuT>H5iDS4( z;Ts2za#00hWNp-zk|x6*-y|xtli)w@&5*HO{~8W5w)*@+r!7S=ng%ZFk1UH4&5H^A z>m7o}Y&Y4E#G5`}JRHgcmLuBlW%o>1Z=62*SLMycclgb*MEO$}uCa2(4VE~uDBVpU zB_e+RWaTzRAOvhFX=&{KF>^W6CbF7Y0N*%IT8sWQ)st2oQkei=q_X)%7o)xqJ8;|4OcX z@*4V2n;ssmU!q=BSMkovY`MDQ`awZ*@CIs{K(7umSbjJy1=+Zj1Z5g=-nN_qcsPHC z{;fShJ+rRKUbg667b!gth|- zZR7igy}VWF00R}%rgp2un+0wJ3Ji%=^Ym?4Y|Cy*%;h6{^fla_@%8cuSW!0R0d^j` zbkjH&8Cd=rZr%~)%P`>bX~9QFoya5&k1rY1C#ED-J)QnmS=e`yo8Z2_KC_m~%w_+R zSIA&|TBnvJ<>cz_DQi9n64|JKHv=pmxEK1iY)0xsl!ENG)~vop@}PB7>x3=(%xHca zR2A2*0Eq^!qv@3s#P_We0hw+-=b{`cV(p2GoGx z0u{Ynw-)M9i4BF)rw8fxBK3M(q|A>WM~?O{(T>bUvms*U58MRRZAmrDJ=3$Y>Odf| z0y>66?c)L9fF$nR3EnDhxPQ&wKEKW^3n*0hkNPS7NSQPJj>7>!RXP5A#ySrchK8)B zI8g@B{A&ZQeD?+Ai;3k^$uYmZR3cEo6Ior;%W!6;YVLU>H^=2e*Ed(OH@hECVF^Zn zWkNp?rFK;cE#om$P%B}_$C8Z^bHb~$_Z{8~ow>LnKhE{r5$=TFKuBo1GKi0Ct+#lrtS^Xc zFWp5dVd~jSM1ZqG>iafoxL%PF95*DR2O5{za{lwj*_I);{OLBTXP5^I7 zsp}btCteXY5$?w;b~e}%l+Ofqk59|-2Z5x*;uhQPTAe62Q0T5Jy@vJm^_CcS5D--g z%wrmhQ&P^BuJoCJ91z~Ac6TR~mi7;qA3b{XP4|_iXLnUp4n#Hm>N*21D)1K|uP?s; z-fL2^U)(*pwhk6dEH|(ZmIPgSyYNSz3C>0u12b%gdP(VDBS{^st zw>C-GhYx%Fly@LpUPI%M-{+rQ;>qo&E?gi-?x?H#y?@UJ^c#$LOAHh)5!$nSkDoj_ z#hd>ykOedxEWb^7Y%E!rG(lP?+b(l|=#{Y#pr1%f6MH5t#^<%jy1JGM9Z`~(57~;k zZn(#Z-EO%=9Uu;TTF|C-bYm#XDN)fu{iuJ^VyF1|Pl&Y-=>&S*Qpf%mW(<3vCnE;b z4>fm#)Uo=rFB+&ISkh z+Ko^t)md1pmFS&%J$&V^m-R$huHHY3br-{(WTI?qLrz3Tv4z@o%g3+TXtO!oMqZH^beaic!M!^Xx&*nEnQAM^{n$#n@d!@ZrIG#&Fi zqzIY>E!>478zu75Ijc~=Y;p0KSx&DhR`}a_34J>a&Hh}&pgJ?UDY}`x9Fbzum}Ttl zzABSEf8YkZSVmU17PL~ZrCc$$-4lL6K|v4@`)kwO+(EvD+;b;Y(Y)PGCQgJ7$%gSS zAZnSh7ZlkTXGSXFdCk)Swm9Gz#12u72>z3Pm|BqvouUmk6u@Oi%bp3`qX-qJ#sNeH zbPD&Kbwj7JPUFwaK|+tfr~=;$*JiAlpw)JB0_eLTEBtg2Ck{Cb*d0gqqLYM|HL4pa z+`StT6B9r{LRDCruTzD4-_Vd*Sa`sUI9LqWnscIf(&aV(tkuo6oy?eN(hWt4_6o3x ztG2YUZY!!BD%l9Q;lTZM)!O{i(g?=PmuIFW^3W z_%H?XHy{Vg>7ENn<>?5GN8o|19yZIu6j;=aMrf0P?tkj~Q=R(YQ+$r|jAZmezS-H_ zru~KF$2Bak`V8JRJbA+hos5){hA$b_OIPgc8>1Lve6g@>r^F#kLkRbF0)y~Mk3M+o4x!RADm+bPRfvNL3$>c0YZM)Y z`7~XQYyfDZx4W~AYS3)#>b`vz8yq#H31r!0H^4UzjpPye12tR}I`pYwz?zD4Pai1kWOP6xmZw>GVRlcT< z_ZE?~*?T9vpQsZOu8?mU5;~(4^vGW|Q4m&B{6BvXojgB8S%2oQvPvzOrD2qqg{1xr z4v#O{dbqgFufvDhBlk(#1sNYQ$(O03N~5XV>R5TNDk_wfy?@vHF3}-Ew7gkw+C=0X&`274?HpV`a9_qE%vp~I5z>P zoPgd(l5R(U1Z_3$&x*Vk#c`nX;gOLamn*O1^m-XG;-Qq^NLcWZovxes|DZ&0&zt;a zlu|YaGm@bsrl6j@Aiz`m&ezp>;8bbBHU-nNnuZ_~>6O4quTu}@IXA6i@hYtoHyxniAYM@JE{1Jk*xZ52V%_GHb_-(T4$jP3D zYTQXPp);^$m9p4$F4c2s#a{LIs@SVdHMM@TR1p}J8e6qQ@u`L3oQvt}r?s^_8a(k! zuNYpMq%m8Y?7rsuQSh*f4JrNV)C851g?R+2;-7tx(%5d?0i?S3HSZI(gd|M1w+q5} zRc0LZW^jr$Rk8^^;zTGw2mc{(-kc`JD@xpO$T5{XZFNL{=DX|5Zr(355)W#N>C(zD z5Agn4Ps9h*0{Ui%hXyM|rZ1jt9==O>sU}hmmO zqU8|`E);y|eff(s`->;+yIBu*q-XF7qPM0pb9*(@xPxtLxY$PcyB6Cuh$<*0Lg{Xto2STw(OX*zNPV^%bx>+>(9O> zKEOX}=QvSf>Qv-#jrx~npPW{H-*ivR-P1v_Y8qzZUh(uGI&9fL`H-gjn;7pHJs}g| zsB@2sCfy#IF9=F42Z~yW9**!nAOAt+mu`Empb%UTuLmzKJ4i1 zJ#L_1&_U$XFY&l} z(b>B054T#JD9j&LxYI;;_Pu#Ift^g2imPqQlLOsFgQk(d!K(Nz>k6EQ7$Y)g^5)JT z!kiO|CnPv7Zf-30QjW@N&M6{-g#w=PPk&F{vdS&aHStIL3#_xYzA_^k{Cp>}zS7QO z`}J=H%BuvBQr#GL6(u$?Y%EH!BaHK6$+8VUCer#3W~x0bS1XVG_@byVQquk|TfL>F zvc2LYZh%_nuY6$ePFTf@%@SywtYU?gO`Yg*;6m zg*phgStFyPIB50uV_!B>;BHqSM%o0OVc|g~a+#Ntr``;p89|7QK>=0X;-u`}}uZh|6^U(bt zZnMpQX#nfDZrG1T8@=C7tne+gDdrd{=m*Pr)|=NZ}3JC zX!nu~Hmbu&xY{=JiuluskCFjhcu4qMz1QciOWHot1pOECBj!aEcu>*l;Nioo`*N59 zx4QnOo;gtf|4GR(`!x(BOaJom*EMd@m6fk{;n88$khsAZ ztlk$vlN-MbPkDG)S%eHI+%Wv2da(3K*l%`(E=sey1S8wfSmS&{U$LcVCUVNB8B$1YEjKl2I}jd}HC-b$8{05><3% zeA;#;y5;3tf)VI6$$>5#e|q8KPF_HlRn0MiInYmb`tWTLC8!(0O|h@e)83owK34ZD zE$Cs}slpF_&FekAHX?VQQw6)MOjm)$m7Kh7BfA*3CiMk9eEXTccO&t8q3x{L{ZS>| zmWf|!_BM3}*V2BpJH&Xs6@3EMmHYSaf5c>h4;!pf3fR`Y6hy%ooh2eZ{;}|(?P1ZC zr_txs#0ZIqYK$)BV>0vesf;gsc#G{lF%!#nTg4-LU9Y`q%#iUK!$=){2+z&5LTFLY z-CUW0`XD3!LZnO&uw%}vv(DG&_u>WtF2I84ec~g^oy-N*_-ReEbDRy|G490nsS|T* zdBirHUzSWf>ce25pd|s%yUG)MN{2&Pipn^pjzSgZGdXFzHS17u_s{K)5bPsd3EU)C z)wHOZ9B{&7J8bR-)6o5_qnE$M)^PWoL--*=Jk;9-Umu0-4*ga{;Nw4lfGmIDyUU#L z{Ra=w0-A`7Rt(q#1s^iLziE%SQsz$%_MV;%idmL>E(UrRgLB7p27|25!Ui)I8?jic zE2;Jpl82*!nxRqHv<$Rop=|-EzZ*b0*M|=uG_)dE4#K;lioS}_-mt7+4e0%8RhCn= z=q%5{D;Pdg9}>YePS^M|=a|ArPkc}CcKoOhVP0$T*zvZg*ro#Bh7f`28$z2DG#v(> zKqc|+@GTL8oJ-r@M=3rLy>ff@H)Pkl%CvkH^u6mJRB;ft+jpgo#4lR>(%x1B{x`SO zwY#vAn&)(D^TW?1k_g!JKjR%1@+6{ntUO-ADhdrXgsqndNY=^zPCL!L6Q7dTNs+Kq zv_fBmNyHCZj*nToyO19nwj_ zF-Rj#l_G~=aXoEe@REyYT>7V~M>J0B%~oY^l+rZ%K*s!+s{rc~SHk`$CJy*3C5US{ zawBhi;)t4YJRRIk%QvV`Qu$AbCzX`WQuF6$#!uv9{)f*%fgAQUPb5bEodRm^m8Or~ zivY#1zR~cMi>k444ccFo8~47%X$IO~k)tgLo1kf~Y}V%t1iU4$weHuLLY+(e;B;Wbzogj8HxY>BE)r5 zJ!fl`T=;DW#e~SKApMb^@GW6$Q-?$&9N^pJf~LUQukIF5{1hBt`vRI|p8J}xy5(5e zMn)TnSY1rVsQJ6rd6hhZXs0rogL6aqe94?Z7O37=8l5<#YQe8YoTeEXk!AGG)7GC> z{V$uslz(;K32UXlbSNyz7)E)M^+|%Vt4f*~#8RTK6Ziri4YD!UR8>zvzuDG6fM?y` zlX751F0Z<2kM+m(wG2(S>B+5_T-0$~s>fR*`cdY~KkBi%K~)PuC9=B-x3$W*qANKV zx8Vg8=NX}=%`IpO?4h#@dC-}8&dG5v!Avrh3wF3}8mrkJc$#=~Bj?JDZ-m2d(#5ee^qT{^?INoj{~=RetK8Kx zl)>e?;k7ng>)sC!q-UWA7B1Z2#qqQY@mHx|oS3Tn-WoZ?C@>QC<_+V%(^99c3R6Dk z&JH{Gc!?Z@8<)H^|h>S;6&)4Ba9NIYJxB*0dY4;=Blf!5VTcrTMmh#4Xe<) zWwxk-_S=Aj5)4cwbgqK5hpH>AaY0d7N0=Gi!WS!^&!>LC{*`MO? zjHkg!5Z%CujEf6`jwvvw(^rDG^#T}>G+bu##(Q&F^UVjIUpDC~G+V?ra_M778qhuw zZpV2YG;o3`vKAUfedH6w^ER%3hm-=%kWayT#0>6E=$Mp%AREr59SF}kF1ovwn>EP! z8>B7`#Q(x5=NVIS(j8fYT7LrTJq}}tzCRl9sm`lCUSAw5@wdHyF)}zNX6D0f5CG_% zM#!OEIbFSg3~ik2w}9+(Uq^izb!f9PGVwi&WT#|Lqos)aGMz@ISx#* zKQ?1M7> zqKuj7-|k+!d;g;*@(!lS@KLf^>5eP6dtI)t5@f_8F%dR?=HQu9&*{!I-~-W&2=r4B zFmbWV<*4-y5d*s(>h>#zcG}=*_l$)gk1afAasNt?w4OpgHd2{-HyJ@dq=4C)FC3&7 zb}sx#fb3~8#7OXJXP^Cp2M7?L3B75e6{DW36G8LWACO5WJY60Y_ZFJ-f<`(gFJP z_ga;lV)RS$^X*K>dh*Nu7nLSYV8%D$O`Zw|r1zDc+M;04i@bYH?M;qRP(bf&lKLSq zz^c>5^PW0|(KJ-`sk@ANhdceS{s9dt^O@KfrYO8S`_{h$lJv-lX z1_)aiO~exT!n!6^j*{vvFeRR6=Yod4|KBF!*y2~U8yH+X;% z&t6k;Ald5NK7amv3SN)g*vDAksW%PQj!VoYx|LN@<-L0a{rR6-R(8fR};6xcPxpC|beh zG)2ZXnz<$E>*pG4$p!4q@5|?PR+4`@i5@m^w@WbokJtAZ7hF&I+(6iMg#mj+PT)^tQ{B( zT`gz>FWULEy}2p@3fh_5uOE}1Aay)aU_vL^F#p?4;X6B~_S@!n;yr=fvMBj4pR}&s$+WUdv*clm16B}rZ z8-^nQs?t?+vq5u5qc*g9UbnTiO{<7>ULTEEn6Ejk50Wl=x&){)LwxRj(EKfO=p^q~ zvy$|54u4wyqhjqA#~Exbk;oQZ#Mr@GNaY{me4hSQ2SYCB^fN{-bHmH(rhIdeq$wt*#R_Y6&)nuC z*oo}70&K}+W}?BM+4gSC3zXP`x(XNL;ld0?=wcLGJgp(ua#escS+EcHc0mFx#=ZzG__ew$Q`u33^BUC0{eMVfK(98vZ zgi})tq=utxVbbp54GS_)cE2u-=(Kx=;e|>xWOWeh2pYpD zIH$p~>2kMY8QosSFw7Pm^n6|n$(ZZQl2A&bQbO(cS8BlZ<1eTKdyhZ(S!R};-H^H_ zq^jftq-uUZ*jowrvpTOkV=m);qEfs2Kj7j3!AaauH3 z*X@92G7bCQ2Zd0rU$A_0F(UoNix(FF@@%aQ2caGekZOKli^2a5haSKoHz1IBCJ{9y zLl6bjp)>j=%$#5ZI^97RAww#cCfYT%qD0&T(6%3No9jXoC}+Djh{mqaPKS7&;4wIh z-9gu{@5`mKyExQG6Kk_Oy5?R3`C9Kw5*AUn5>S_~KkE3a@j9Q{H=*p-pt>&$!xvic zc0XQvD{)9B;C4Z+z+6-@+2_Wc2aVyV2Vt+agX0jY?q7soKOh&cLGxb#3YXx(l{?dp z(A9>IaA=iMqX?(;yK&yn5DEG!IDZ8O*sI89>`Rs~9R2{JoJz6nx$^a2C!NX~?pMb+ zd_M?s_Ecs`b4F{-e-+8-K>AUb-bUw&{M>`~AHQ&|WyBvVw{Q!b?B=4^9uOsK(GtYZ z(XE=XXsxb~Z9@=!?@h_#j>~7A39#T5sG9TGb%Azi4Y%b^wBe{NS&jjzgqvHKEt%5; zuLJtS3jpT|*q<5>e`w^a;b{@_2Bl7CYi$9YjnEe_avbKgMn*;$!2y7_sE+=~@Jdpb z(RQ9VEwnXX^XlRQVmRc(^V6pr=$ry&QSFI?HxHkSnNj)w0IP>h46sL2pH`Gv6p$HV_;U@ssT2M<gwPZFWSvZ0K_w2yr|G{{Y6mco-03TzZ$1J zXZQv`kl9Y_-@K&0ss)QRszSv!-WtCKy=2fS{1k{f=y?#dpAJs$e3KauzK+h$&i$N@ zE2LxVC-1&pqJDX_DxCm){gme!!T&-k6*^xsxJ?E@f_r6dkW0BAsH_^;f4*o-E8++EIt4iy&db?B`?b#9O&WsF ztwY6M;COz&mQUNQgDBNXKCbyf48Gm%=f{KLC@PPg#ki2DC_jMtCqU#uy&9>hRmFBw z+*UttygU5c|CnLvzGGz?=LkH9`!uPY-Sh9&eF~PA+z2BtZ&!rR?>?l%U;IgX;w*wA zxbCg3+^eGvx@ZL0BY0=)grp%T+N*{12mqt+ZmXK756g+X3=RGHPa1YSlYjI5 z5sdXmv{-OWZQlx_YXWs~zaEfpQg33~*`%yR-U*0jtnAzX#0Z_Q(sTktiOI=$2zGIC zyZ;zU0bt*SKcPk*Pkek%q35wSbUa;DR6| z3o80vR-5U0t$Bv4fYvQ9LACogQ!bP>mnqQBpMej%2Y4IyBEiWUaA**M2sCJrlU(RWnUW zMYY85HdUQ%*G$_(j;_yH=~hvP(+|XN=e-2|js2Vbuf|s$()T7H7YMBG zqdTi622Q+ot%7@yM6z|fLVZ}#5m$IzkKu8X_l-H5cHR7)lvZrw{1P3RTEJ_(U$#6z zK>Jahe5)yU{-S9XOuq z$JSztGWN&_n)?3fM~7*&Q7#j1*D?OYm7F#*8lI3P0BQi9>YLH@P_>foC5{t^2;m$p z24GTo5glkzbA;w7^5e&oM|5$uBv{u_!Tjy)M0?q~qtUXvlT&-m@dPxd^(|HBSs1%1I+QaB~rv+5KC`IGKG08V3 zrU`3l0|AS?E?pq@cun9oaR+sv9rwOPjmT;vdFWAqfhVc z%>C5s49siIrxot@tq*KFS2Qm09lR3Vjko=Rso%WrL6@Fwezf2KrKBN50yr<~3fMNS z;A9jX^i-0eMp?R)6d2dh2;|!8|Bdzp~Vca6``8X`ol3>ckAT+Xgbe2 zU;FErk?Do`rkC*zj@Dlod!}y}gpt`jNLL)N?L;V4 z>dYYfvPgt0g63TvPd8cBikiu8fZby2O1{lk8mJ44# z{O&gVS64O!zzCYA!tH?==!zS)Gp6KrFy#^wDiW=>RU1)yHS)79KC|liHShIw;@a8Q zc}CFkq)l88WiFgS*VqWQRbStsk))VN{X%W*`TrD;m)z8MBV(DMWl)J!LB@9p{~Cx;w?101IRDR0`= zMOW~v_$%mpm%5IvY0(pvN&OB&)+bFQ#8qYjRX4AryO2dn!PpQo7OYLPnQsfl((fKM z8Qh(0#i_GO6$D>ni}1tHhzKHN9GbS{T#okqXQ9(ZXH))TP%slqBL{Jl}hxxc3SuP-{Qw9>z|MuckVO?S2iGOpHLs5Cg9u-Yj^haa6bv8aJ%}e zlAnYpb9(6R`a91{QBA)!-V}_Bhs0uTP<$1QhKH68Y2h_5AD-ubq?&u0%pw?NMlLyq zkf$j}$b7HIoctqyimH^c9wt>PDHYm$E3<3&wEor~$rwMk_jLMN(K^I7m%4b5qhmLd zo8{UJVa9JLh zFCn|JuvnpXtKMwY{IF862agmI+Rhg3_1eDmv?={aB}&g85n)l1J*L_+D#`NtEkPoS z6dLi>;s&1z#6g!CBBu9tZ7|S|^*)0fdcwtt)pfh%m7(EBLJqah+9ne^68Qew|zhoDbcL9PR1xp7~Ie|a(=lhaKo1BPtViA?Cl%;vf-T#jXST3 zy;Bk>xEP`5UJI%P4a+J5AR4_OwX8{`jUHk`gK~!($Dozkj*Dv{nKG%=g1&`sbKu*1 z8rQGmah6P9+*)dvn+dFUKEs?Jx=TQ`Ird|A_UV5LXkM>!K~0E_W&^hiQ&!37)**b8 zZ5JLLMuUM9&_M*l0EZl~L7%c0duAanc=c&^;4BDzIKL9w=iyK*YB;ydOIgc_06na2 z9**j~je_0Nr%&&5mPWB&GgTDbCiaj~c43R8PA+wpr>KmcC!%tr*&1Mj6{WqHkws2PCOU#VNZ3e?vd7(XoSehx-xK@?cf@(_grJC#REFB_vG! z31M1OO>AF*vmCv-<5V&a8$Hg@H?L>hyeiF;ucUwSqwU-2QDoPW(_IB6r|` zPB8g8Z9^4^p1iTApZ_1)-aDS_{r~@e(V&nBm7P(tRrZdoLMXCDWo7S8B_ksw$_kM^ zviC|avXVWrSN7iHcYo69biVJ;zrV}nT+XE~=XiO&p0CHakK6rvQ&l~M!p6Z_`9A`% z_f{}ITzoRMp%{*EsMbJih-vU%POoELK%iou9kgUHk~QRW^%#eZfv+>hM;7=7TAUrQ z7Y?k8f95yeV;mZBJv9|^HUL}m`$dx(9Dz@@pnZgg4}}I8+@@pu^znv2vkd?akte>q z4FdA8)ZoK-KqiU9sr>U~;fUSG!jmgql$8S-&v(^8ud|WfSiMswr#H+wsbg+5V|D%Q zMY6?D_#3(^atRIFSXb6+U_-Qi-p}owt^1ZPp&3ssYD8=;N(#|0^h;xYlF=<+hf5FG ze8ZI<$Cj4?HwDZm1RAL`*PDmnJpko|6xDTMK1PP}up5E>k3h}%z7g~OHv2%2?P;!( z$sUw#RLU35OtYFsj*Iq>EZx3%&S+>2hUr(9F}aFb$gb?y*r=5{x0&A&`n2Yu$a?XD z-#-$wa+k{?bzMY)R+)t(r(uK!p*y170mL;DY1NFRAFtoOeTjrgAmx1t5zi>q!9R&1 zRP&J-mbAWAmv;U^IhmP>;4ejiMD&ZH78P6(#Ya}L24U`@{8kqA2PRcceR5UH75Z0H z7V2yK&GyC=1=i)TYxLbn`<^UeqmHCH7a~bL{R;1r1hyw2R~W)h)zF9(@D5N*|B6)m zp$>8e>FrBPp8~GYe8qt)w6r9Dr*xu!20tSiGi&+#e6;rA;25rsVvSFBV7RL<6A^X1gl)x`S8D@Z;SavAFHC{&bOm)z}X?Efdc zpqmUPy^bg|nB1B@vumZ&T4P1+M^Zcrhf68zGE*dx9BXG^ngHruwMeOJyJ7IP=7<`P z#O{IvTKb^mF=s(_`-CeWe{|bnC<=kIE`JpU293U*YpBg|Fch)zp74 zcndCGDmKoMx%4YbhRPVsTpPx;*Ci5%>#sf^6Se3iOSaLduy=Mjuy-!JejY?v{?m>) z+m~OCruVgo#k?>ta&g-EHES=2fQ@!Oy7vPq6}c9k_T}TPt;wEConCW9sHymZt7kJ{ z#cGouKKNpGP?Fqy-jh0cie9=py6wLGjMuqt`@(j;2nbf~4J_R>y3uP($(<5LHqj9Z zuvFG>y(`==wT@&+t>wKMWa_f?L|EKIVoCkM!S1B+Xw1Rx6}7%}nS^Sjd;r=Z>H3y+LFIK@!1>D4AnWf985d}K{k!9;^LhyU$Z2zaTJqu^EmC~gNYl67LK(%Mw zq53B%`qrYNOs#lN8g~?$KH>wpLwrV(!1PxX*5CIClTT#l%$JfmwS=>7X%(-LSA0V{{e!Qe0)tOf<5si)3iA}xs0S!q>F z>wm{o!FBmMiTs_5Uq*tY*l!72AdE!lCwAHP?LnRH0;kcNqi`~gwQ)&cxJu$!qcWLd z2+i2!DZE4pfpv?O0}iq0oSPM7FGb^(x3baVKSSbFs9}UonjCPTY^94gQ%w+z8S*z6 z_B*^np^%A%5{`GHRMb8FQC>`k};)&T2hLWq0z|xm<2x!!_V$arrs1qb9!^oOotJr-8#Uv_-z10g$ZF=@WgQWbK z|Ko?k!oqbj1+V|ABjX=8YwxRhv#p>1)^HAsPG@3@GOmR9_0iU1;=})_mi|&EA$ZdL zUb2Q6lYvQ@UQ~yXjryRbO}@h+0YIE7onv%aCBIt7h}4IZkq&!M(3&HdX3cf}qC!_k z@`MKh_Z1}ZYG1prqH+us7ZUcdrJ9Q=MZ-=3iTx-g5`QXu zQhd^m$b@0UG!xyWrgg#wnBDluS+tbb>G~Zs4ale|@Pu0dWrV0(5csOl{-z!> z`iTI266IrDZO!7&DWz_i7i0e?$!gKEm1c?F*=7gjjJnBnc3#YLC+T!<9vqMCx_*)` zedk~h4k}RpmcY0&0;PFxB^Heb_v=v_2A8>3lbNEja;K4kUH*LW3@gMolYaRZxlPGo zq;0~+36v!WSMu%K5h%T(L5VuPu>^lYMtPC`DKfc4cjZcqf;Jz2M7kl}jRZH-G2g$_ zpp~Ahu%YFdHb(9_L^W&!UqE8b4>pyeg~h>fx?5bt9s!Ypt^b`sAot9p{qr~z6B6>A zj8o{Od90_-I<8HFO4aiL$R0oz32-ZzUAC_orz-@_XSU;-5hA)pk}4pZ&Z46kGhvb! z)mv74hvGj|Tw9IfZ@PxpH*9G#KWk})ktd^PUpdCfJM)}O6feeeZPRK#ELAeR_dlUk9VA6TR&{Q~w9yR>p3?`$rk%Ed(_DfT2{N+5$Gw zG^YgwuIc5DWw6uqEs^?ErNl{S` zG#4CrKu`uG8jdeiGYhz&W!+o^Qj?CV2xM;ZS;c<@CvT3U5JeAy)N`S~eEC~NAxKx; zf6fd2&;W|*$jEz%x2YK!60)-XyF!sLAS;@#T=OKSzCbt^5O$t0frxEX6cy31U$QyTv>7YxMr&db0UfVYW4J+A`I(aO+icy!Rl%~DH; zCg*bZ*9a@s)D9YY`V&AO|K6*AMM#Jeo&)M%<%uNVkWrNeH>$zMqCad@<1O7OU~y3P zMgA)4@6_kJd|9GgEH2NAmw`dbRj%*Rwb;10>e2GjEkr01Ez}lZ#mC7>OzNN5)MEYU z(Z^kK7vss#YUyvWc#Z%6CFb>RyY^Z)y6baKR2iA=r`-{}LK&zPiJRW>J-7Ne(K`V* zVTWlqyKPsa84cy_ol^$eZpOwjzeM(3Ezd6PjXBHNy+q_Fow1V~#0PmTc-;N&KsFnF zNoFb{E`FR&`Wc-x03(pu{zWi;7%ra4P@1&|if;`tWPM?g#w8}6g!;=Sgi8orJ~k-{ z8?^77a5 z5zV23if+N}q$Cq@*ZYEuMr02QN)E1c43BCzEEOzRYWku}*yjCjDQ%0SD)>yX5^ROb zEZ<9Egb_XM4Ts6)_oM5_a0UZYvykS+p+_bbBf3e(GWinOBs>61H_q8yS~`rSJp$fn08CLH@a6+WiiV_b!#=a}GvGiEyVeA-_LW<39dhMuik=UJ2= zUeiny30d@BiUVl@NNooSP3TxJzP49J&j#@B;2dGRa@|Wu1Nci#Qx%gJVW}`W*mF1I z5AbDBM%UZ26kLQUYh*YW^pp1e&DrJJ6|R(@wtyQPH{bNv9OWdH&yB+nV?$J%#=7a) zY}s0kG|`3kSWb=;y_fVg1qc<8E=19hu}~l_DvvJCT?2%x?ujXGfT`6o$pLi)3^X4@ zK|ndW+zS$wC7=}!LHM)CBZ~%q0}RylCyi4EUHlZ13Ue2le4URdz(*WJzV}uQlc$bm zhn$?FvvQz*bkrRDsJH(Wni&JTv0I%T4+Y~m^u*P?0_sTcMSLk>0-eFE4S2Q4&|bj~6dalW3fsr-xM~o|XLA~$8_$$eYa!8MYtcqX(_=$T zD=!8J9hlOTq@`qJs-egl2_z9?@?uK~iHk zRS4Qt1knH){g2o^Xfr8nv<|GiIAiuy$m3ww9-1|pPru;16&)9q^L(gZNW5NAVrfyB zB%u{;XQ)jlG1b@o49I?y&bkp$3}C3_iM}!$L*((sKydrYtwK#s=IdNT>FHO-#;c94 zm-9ZD{Y*t~<|#-9W4l`0^GPsjB7|#&UMIACO0!(S>T)9Ziv=!;c=_M?pv+i*FT9^j z({C@6TPHr7{#sWmeDWZrbapO1t9*I+>(hJh-oNTNp%U|4C*87(&Rz(?Xd_i#Hfm#I z<8h3qy&*wCv8%)Nl7JfMGZUxyJ5w!h-m*7j*)L&gG1(i?IJQ1{k$u+fSi8LwQyLpN z3zu$f%ct@2+b8LUf<3-9Z`J+TVD=bWh`t-X6T^ZiXoPhbnG_(RIR(4LYHmrL9PXxs z^!uqF+ENrYDpG@P7sOOEU6;I3*4f-nT23QPxSv1IT@)xvN=%~R5+EN41}uRPZjF$HTIv8Am?{0^N}*nc1hw|<#W%X@21|fH*;#!;e&kt#g#=Qrm$aBA3>%InX@YQ?;E<%%Stser8G9B==Zikvx!>iDI=(C43ROxnP@8UBtM6aP{aM;&}_&)x_2NVh^fI~Ho2+7$;Mn;@19w3oA z>o~0cAf<=FVN~U%!Z)8qWU^~@^Pf2uLTmo98yjVB)_1kvT+6XUPcEE=YuE7c+Y!h? znTsdLlR7fc8|%ssXr{NJ>s7Hc&yT=S0GIqa(liW7tPt7ad2MF`@QnEado*J;7ExFf z<3b}&g_|NI42ur-Qx6_5} zg+8#$BQzjwwW)8SRc9Idp?8yCAm-6OlYQIkf0lD9U42cKhW=HM`$8noKIrZ%;!h1 zRXJmfKR!YS4WvTtA&wak_XF9WU<<{b9I)y8MAr)&S zYXeXRhvitEZJ$5rdqF0D)F7(M1o4U`(;c1%cm3f9)3{2|wvxWai%V=x2Nor^_C`o0 zgznZf$72KE(o#n|N+b1tuHwxZTGrZ8mP!51QYg~>9s!qh> zY;JDuPg}(100#$VILGt?o(caio1s;?Il$u)GFgotfH!#7xRMV4)VyZ5AyseHRj0lt?fgQW5|+wUDE-HsQRK z1>U^s5{{fo_?QhNO0+j|ur>9*`{{Wlt1q5ddaaz#35ZFpCD0{CQrCiM*BCN5j-eO}Lm_J+*1+{KP))lSYbp})+ zd5N|z4~Z-pGn@LqbD|5~RzBk5XFwH+LUc|e5N6&I6~#Ez=RxBIDG}BVBOQkq*}b!y zXl}_xs!tB&7(>+q7D$WhyTLsQN~uH^?!fv=~v069mN2c(5Pdw(@K&n3|OjTdm!YlmYEoW#p@C7BviAla$7d z(ULAVxUBbEssFt85koj{L|m0cs5jKh44=3J_suaB%$wVrH5=ec1sFUw9)#*K=xw6B zzx7H4su0m0jue-q2Y!$0`5-7R&Vmdn@+3Ywg+G}!^cS(g3eAJhbuPB8x?88p&P!&g zsfy-NSi58YME@#-0I$t!ZC^<*^C*&GzLtZ~+kX^8@STIOF=;-E^Uqd6kTXD5LwQ(@ z*eU;8JB<-U&n2T}{JJgTFrBPY?;1Td$SadLp&`gjtmKtQO@B>XN4^E-g?|qnz-i&k zmlXKpPk?v$(G?2r8?fv3WnU}JTcb;}t=Eg7_CNhxDW3g?*7Jw;vEFi0(}XH3xuiCq zsMx){izyGMOxsN;STmqCZPo898KvwG@!iO`OZA1;cWI#g%MX7>jh`ue+oDl^~I-+Tz%S5h?7M9#`0 zl#oZjkpC@NSv

        mFp)!>c8AEj6?)#YpwGF&bznEO9i0Tj4wCsRmdKtow*6j9ah>; zm;ksY1{g_X&@BxA% zgH{pTW6o(gk&7My|CX*7fL~O&@mzZhguPlthV~`3wA7a;rCeU4F|Xb1a&i4C5Q9Lx zkwW@F%;9_>h*)Mw9Hx<=8GytydG)4Yi;L4P z&=?QvYAVTPW4#zYh1M#P@$aO)Gr7I9m%;uRo4|$&Vvz`LGYQ1c5Y8n>XP3pHDkM3x zfGH}ZSbTWtKy4#x!nRlBujImRV0ZX97sXYWELrnMKM&b@D}rL{P?Oi;7Mt4FJ2SZ>NL24atBJHgC+n5ks%7;Vlp}yEQ2aojRM!_ z&A;_@s~y`&2K4PgiqJ4n$J^UXm>aY+W^PY*Y;+_a_T<{wfta^<^Gg6qAo?Z1 zTY@v#ui;gu%u+(sBG`2eLp87(%pMlKgm*En$VFCy<}g$M>C4&Bnlyz?J>3c*pXJr0 zXOkD?J^^?NqSjkr4h51`UZ{Zp&e9o1%uwz^F55$JK}#qo5FmAW2rNdyzEuKr^~i+o zQFHpI)KMrH>re(%^gea@Zw+PVsuu%inmuL4_pAb;Od!+hK&{^xeo6k#uf<>hYVnL>mL1zkvB zdE~ccVmQ-N3k&8AY13wfS)gtc+m`vR?+!lIY;705pX6&Lk6+-DKj+zN= z%sfL>50T}rg)S8dJc`qB;%RYQz(u(O2ccq}_7AtmFXN4saSN+*C+85zWH!4dMw3hw zbSR;0u}r~RXzXkjwid8OsQ$T+zBGI5MQJ4HL$8V{@%3-O@3siSroNHUTUo&zzL zN$* z{uRK~LM!wX)m(E;kZydRYhrZ7vxbwGM}|9gFi?4T${m_i zF{#hh0BRyjxP=;_*_a(SCXUMU^G;G%%5{%qfA|c&21TFrasX0_d&GX%`Re8>;A4Vr zXtD3xG^g0NtVMx-mako|Afh?u+S!ORVU_I$$4~-mTV|V<1BJ?F(tBNRfoTJSW#PPu z=!+Yka4Dg+>)`_g(EzC3@@uVLmW03Xo!RFsZqeRkk{iIA!l0&SJifv@cZH3LHKpoX z)F;7tW9?`R_^@>iR&3wI4cO5*bTo>D2lrty$DK*#Qq_nSY&Yz<@SfxZ%KJOkrF)+& z`YzKe2CANa;z%yt(GxZ5_^>HjAd)%r7^-x0PT|hQ_sOO# zdx9&h=2;I5;2?TXg$)YQkF~;buyP(XhB84m%z03KR*Sf7(`n?;+8g#ysr;p|6<0Xv z(wE+2%a$+XUa34eBWYyqJ%ZkzX}8K6H@FCcSW<+G?dL0o+k`ccVv6$;#KaznsWGPr zin-RUZ6Ulmv~W4RR?A<3BG54{11gs42*Z+f<{o1x`DGhd1ZnI}Dai9aitUg3#BE}? zz{U&0xYuFlHLL>UeI-#-5O@m9&AtlbesT;2#WhGsw_rrcea>yg!=Qt)-^Ic#hCF5x zake}1`$;pvZ~#y#R{OXrq!mU#3o3|5+tM%{wt_KE6%Gpw3e8xxycpQDH=|r;oWVf7 z>Y|ePd62jX=3g~RL6mLl9|Xk3t=A!SIg*$_xRex)T++S^Z--A0r((0|aeK$D zE?f!AH(GVsSMX%Me8D(nI+MwB<)X_u+Ofw+4Vt>YZ@4O>9GqWQ2o!$fAN3#YdC;U; zk>)=6@j<-t!n@0}o6w=b$-L+{M501?VDB^2fd-YP4PM45%TY41QwnFRhwq_)!=ctF zXS7S;7^NMl4Wi9yk)>jE#(kl+^pN%WxCS3P!DOOjNiG<64EZ2nB6x<{I)3!Gh0aq@ z%>6yWE*%kTxixfveM*iyJ*uFO&j>Ij^WBcscnSC>d($f-c z6Tj~#qB@rTULMHCf=&M)0DgJ1YA~I%Rn`Tw1AD@X36+K!$yM*K4i`Cu1Z~yZjfm$j zbftE5Dg8$gu|0cQE4l^DSP*Zkf7p4;budLdeD@T%QeZ;$Fs!TEMy(%EKkZz$1H4hc zqp06k5rrfm^`{w-JOgmmD3P1bc9QHqlK<0&h_!Bh@(Ry*gJdX*N`B;#LsZ{Pl^W+f zX%~*dB~g7B{v?J&9qPA69O$5ck0%z*ZZ|j z4)DdoGD?!Psu!?2pXw0C-F(Jp&2QkuH@fQ&vFVX-BUCL8lMakVj!pkj-pW6PMJV{^u|{k+P1q&W@}q>A57MI25*7Av>noG0y^w< zBRAM0OownCqu6l`Z_YK6S!hlGurZ6f0H($_nEVe5k_#_{5MPgH`znREyiVdQT>mcM z7Oz+kPe{<(qX0Jnk40S9ibyhI@fNjF9pp!j5@Dj0j!R z^G|gqwQ_TiKUbpVxWRHdx%CptJ#PABg~pPSMyY%5j7U7FycS7)7;P;Rw+*w$%g*U4Ov_?%=Q!(x?xs7;{+R*%=xVu-D-o zohIZD7G64Erl+s{oBJW5&g-^lmC;bigRj+z-xU@1k}~_@a&iCZ5H#iwZIxZVng4!y zw+`snS2g1G9H3_=L+J}A%I%#01jddR_HyI>p5OpA4=_R$;oewRHteoadL%NrKIH2f zyt=dF8w35is$>O_-L5$;Nr{Wg676;I0B-{T0jx6s{e=-$b1>W;258GoaQO@Nq7#J% zkplR_|3&I?ng~y%Df!|J3kYr^2nB39Z#^>R&Fp{oiqvX_&GvvNI}klbp|T6r2x@w@ zK+yR{UaL9w*Urj`8^lGtYQcFf+oTUXMgY#1jaXtV_;oLEhd| zcVND80Fqb4l$%-g*5p@GM z5$ltJ(RWff(+gaAuCm315c>G+og?buhEUDSH=sJD!)OV->4qRl0W}K-AoKiR9PeUF zvl#vQ5J1g{Bnq;UuK^UV%3XFGon_-KVvcWtvi~diDBz}c_ySHTUL{kjJ4YWMsTm?r z1HfTXZiE348#gTikZ1~-J>1^o?lZ_mN# z3nJ10XH)*LIi$!5EeCN)Nl4-c%!@udz??n;9uR}7D&jo;Z~+52YB^g5R|AO1 z#>bs5uX;!{rNRyQ(a%&>#1$sEQSOMJ-dr9~z7gkE6f)Qt*e45r1XY%4AK!YHWr+yl z6#~kv|IANLMhF$-UMMEA&Ou%hKqY(zg(!~EF8<*B$fTSmqO1&d5ok;GK8(sg8Zh?2 zx#BpGeE&zr9S~^;lN}&vU*0bHy7p3TM(7MGisC<8`NSBAUcg9&T3WHhB-Aw=NK%7# z>S4jb&)_V@hoPl}QdVg6?K??GyhOXKO|>3FnS<&JGOh9Te37LYCQ=!3?4PpRO_AJ*^^MPq#wctiS?U>>mV(JZJ@gvCB0i8-XpR(N!ToKa~ z7~QV~qsv7ACp;Ya;)8mhA;Ony>-pWn$q1BK@PYH^OePK0<$FmDl0dHmjt+GV4J-DM zzlCMQM#jd1^EC?J)tE`Z;MeKtIS>`XWE4sSVF6v02SU}D_GwrY1$+cXpqg6UP9!)E zsq{Zsqq<3?N|utE3c528Tmk>xwuIuui4&B4kl!FyvM3}K|65%~09&7OgP4qr=|JN) zh(5twyz??REJ;hl5e5GvI4U~!tLW;+Iggh>E6}#&XS(d6zH9`A0ye?&mM%L;;#{?% z-U0JEF!Ig-M)mfkU@p?_9)QCA`{SJ_Q9#rnAZousFY4-Aj@D)d`qm{bE@jt+<`{YX|65^} zV8|W>AcpwFM2Y5JRdAr#?W=|o5~v>#TUIT~$M813375PjpZp9taZAfa_r#r+@qD2+ z7*t)ZxCM?9Fn6{rq75c{&;bQUi6;HtEsgcnceZ1e&AgK$@vXUA?*jb%#P8iBa_?+; z4A#iGxryr6$Vf@mqHOE8u4{t47s^!N5OPRH`uLF!MEb|3Hj8FA?-bau^1CHA0CWzn zvd+YD{cRZNe;$J_p9X8V#`Lzs76L+=El}W zNR^JrojbU2ik1A_P`X_XIHN61Z0pP;AW}sPJXUJyV06pzv)zO8XFyIabnvek#R|`D z&jLsVRA7d$OUnrlA>4r8!+fQQTMsUQ3qsC?!Cn@K`+E_yq`0^aR4U#0Q4To z@r5?2;i8<(5wgaL-uIvxci6smWe`rwMs?H^=9fQB(eDS}A6R|tN-^Kds&p7g%mI>C z`o3hun;JLnFWGA8FjL>QyZHb?B-BUj$hLe3n8XVeZ5Lutrh0-I1z0th!=^=!^1G?E z{(U*Hor>(6nwo9}QVN;_e=QRHWKr)^%+Y4&B32ouK}6u0*j+f;YBM@&qdkIv|sYz}l(S3lw|_CAi_QWM<--T4jh1Rh#@r zJk+-8-RzFH1OL)N)6_HrJx4A)24?O@2MqM7S<%3ySSE(sGoi$He1t^0Lf_ZzAUi;#kh#DwtjaD+?3*6b`UFv-qe{@{SFTr-qG~pEbwy{NN8cE)hmOuiS0D!u9 zx$uDV&UClXk`#8A!&A8D+ZBYM(KQ5Swl(0o5U@7WC6=IAq(Quz2daDw14dFTU<71B z@s|%7`#{_nfSP5~lL%a0=t3StHHLH4jOT&6Zxqy4RgjqvTf7elWm0kMhiXq<2$aov ziEVh46<_HkNFX{LpC4+G%&B7WbB!_Y6flsnGk8}p9}>F24pD`Z&{f1Q98UI^U~4i2 zWliY0)==#)Vl_r^;{%vWWtIn`Gcf@7fjc{9dj3{=_uRqYfD4*ibCnuf3&F2FXyHMxrr&%cF#iM!csLgZ zTz5M%2+L_bQ!AF?_)n5ZXaJg-jukwAj_)aeuH|7(g1flwfe{3_kJ`1b#xB zL&uN_-o>@GT9C0vu9K>tZj(}J&kfHJXjD5h@pNz@xyXJfXRnSWo6;jQcKa*VrE4Ou z;w)zf7?U9lZK#SIf7oeRsNO6`A$|qU{o8Mut3VyEaQCh|z^PCP)`CVR4}0 z7DnW3B|8f+0Re&a7i4q@oRdJsiTrpqFc!_CL1rIgrR~e+D z8fNUeW@?l&-%=NXR+sM4UcH2E6k4j#;^SRslbeL8n0${KR%(>k~c!h;nX zhW7i_+B3V9725KX)N6`9TT4HWjYio%g*AHd{TN?3TR>71L9k9$T2{v4w(ks}KHOs` zakILgfHo2v8@m$NuMb3uUqk#iVR|#Q@@VfWHhUJ!L^QnmX2O=48S2zht&>LTp%IIk zpE7e=jC^UH5UF|5>g{vhhMKf-^Mc4IH4%U`rJlX117rv!c5O0wBSQ}ZDW2e+$G4K4 z?33J4s;PW(f*C*OZB3};U^T8zPKmHM3$Ps2 z^}V;tzLdXfgVE#JQTt0%j#2;}YH9npQT5ExJNRj7Ys3qP%D}?HVzzq3K?b~zugAQ9 z{{R4$s1J~kH1!j1eEsKH$nq}eHdR^m9(Q{90G%a4m2>%j-r$KxQc~Ek9F!();by-1 zh)yyZ(yq4&S0^;@l-+w4^(h4_q$I~p;Ejx@QVh@qq)0w#Rr3KJ81(4)P^8H&Y0A(n zfiapOJ~k_)YlL->+PX6ptEj76(f#Bp9xU@wo;-JF7(su?egVnc!MXgq(H<~-Je?NG z&Y$+ggbCc&@EIUysBOJZn&s$LytRa{Lqk0wdjy&72y~k( zYw(31L$9r8{pOsQp=G$6bV^^$f7RVFBeLN%ft3Bf^QSKQ(yzL62zIyR1n(GBJ z+@b0x5!5{vHIOmphe<9FX6EX=5xR7j;r)|E^5_;z_J5bD>ZN`|MM7>uGIh?nXNKL{ za96PK#-n;p@THDF4s~=c-eGo?Z%ALcAbm;aZxqpKPcd4!FOs~r)BLXQ_7U7T>D8Io3A7_jVJNw{M-0K4Sa2R zPMSTz^a)?))Eh%H$KFk#3swUjA{8*xSZPOUx7{Vl!vxZ9UL5e`D3R0-UAS58f!EAo z)XtzUoX}@zDEPXl=>Fgk78Vw_)$M+=!=w2Ut$v%}>syaQyB($p%lTe=j5M$s`k($j z@{WuzUgasZ@3%FE&RaDL()4N6 z@G5H+0KpEy?@&!rP*Xd7>G+GY;Nw^Wf8~HH72#_)yQ&%KLh1-WT*LV%g@T8>Tuh?5 zh@P0oCKfw$&z_vgm0wRmz%l8K{pR%g=5Y2U?2WdOF;Cq`=KV0a}==1uTKfckA5rUyDW}LqdI!D1Kq|gK7T2&1VILOdDM0?L5dBH^e`0)dYz)OM6 zfJhy_!@wfq1KRA2)cWb=w3)w7&`xG=8E~D6Y$_;f>WHddtZw@G`t0;`*j-#$y;px+ zG#`9z8}4`?lZ#3)Fwj-Hipn;i>#R`%ro8{`SneoP^f|dd0U_)>8_Wq;LtGOG!NG$x zh<3@48VuOPoviV~M+ej2MwBsmmX6N}-fi&_O*0N>c2M)(HMSAHgu395>2>||VolJ~ zr$WL0ZRh9QLdd8_{N4K7iD`?)!^4QD8BI*p?`h>}q$}#K5-VJAxkaSN7CNM8QPeco za(>F3wV>U|AwtJYygQumqf0p3GZ%r`d@%p0>wxnKF}ed?f4VRF{hb-`+M8+obeV?c zyi(V$KfIZWPZJ|Mv^|@{Qe4gFds(ONIOd)D(j*vf(dEu#z{&W^CJaAUZ)7q#Tdk9; z9m_<_h1}>mYSTW2Wg-$FVwU=Fe&wmL#Kp(Y^s_?sfRb`o;;nZQXAY;Eo~z-B&Utxs z`E`fx21pA$W?w5ZD7{sov9_t&~x6&19ASgnf zQm9IGOPg!vRp^!STN+{X6qsqlD0yM?91PU@fei;Qa*c6zjCDQoIlT6gSoGT-Clt#Z z3x>yu?r|n>uJg+HVPHoEO0SH0q5y@Tv>c^M7k2YH1-LkP)=0S)!O%alZ(S_ z$qcEv!l5r?l>N1`J*Li4y=V?{#a>-ESPJvwb2I~-ThLSg^y`tm$CB?dEY{HmB5*cj zW)?C#$`yt*$jUcob6T<>yKRi*Jtvbu2=$_@ZZ}BenxCEl8IFz-{VYkK0*0F3G>MOp zg~#`l`*#^rE6P}|cF|tf?iz8#kex0r2!ZcDls69xqRE@FcPp*y8cK}kSh!i*X4aG& z)KlMf9s?6co8)&Aqut}W?d(Ufp$V^W{xYguDBRGM{M?i$nbST07rocHP;igcUp&Eu zRpE2GJx<+Pq>Zzbpn2lW2n0{5<30qgvdXK=&Pd>Klw{=QMylV#AA{lQpYx>JDZx=u zcqjuHJG)-+rHn)0Av}+K-EzQ%4;^P;nk-2~GT7QTZ6@U+A#ZYZ`u(+!R~P?!DI{Nk z?xacIL?gJr1d*lOxUdvx7Tgr*B5==sKQV)=!ri)aD*0NGZYxkD#~5HE!Z~cCTFgXz zg^ehJO4wC1?&nn=4U1k}6=p|>{m5$(4#UTKMur+Pb-DLccD{=>Z&C@3etx2ti%=l@ z{Xcb#op=QJ6a;4kUbi@4M}Y8K!9=CIT^@c9%lBty2R99GttF+dnEg8APe!7gp}Y#s z9Nv^xx4gC=KM)utLJ+5>Mm;}?R}BSuEEF;$jl`q~KMt7@*K!yq#wERhjX)CO$>hYv zGajRTUUhHkzuj8e9N?H5SQ%?9vI8fTWhgi?j|Y&QXtyMjTG`((7! z8CaW$0Weg3yx{mHnQVzcFH{@^0OtXLx_X?&gul7!MZc$8Sz9yVxKhTicbH(@;dNWR zoq~W4K1tZ>E=`FG#Ek1S!<~(+jQO`#@s89^5Trs0{}SY>P=lTrN0L?8f=Jc)%^MjvD0RUI5)^b19DiYFNj5BL=sn+^w7hNcbEYpg^#&%Y_|}fz9_{m3Mauyl$Pjwo z=V2|wP+8%0N-8t7+mRu5)CZ6al7J`&ga|N9cMf(1b(h6(^$87diY|&6UOxup;T=#cF^(ZS6R6UMJ2jxwn~;X9e2KYCoy5B1^hV#H$_8oNa9 z3qkKP#bPrE_tpAV$fp_c>_@}ytc;@A@S@9Ob7m7^{RN%l+!BBtFs23R(t6@}>_-iJ z6r?$qXe)3bzL}s=#P$fQ;D6azJ)J5$p)q)>N{F)Q#}jxqmH`syUnAu!Ut*@|ymVXGwrMa2xsC*@}>E)67oCtF(Wt$AQaT~k`F{}g2^?;G;-9`XvG;S~@o zW(b+n-ZBxLE}408wzM(SyY3cpeX+7JW{Qid(o=3)3)_Ag3lDQjA+|T{Cno0sL(n?B z8!7I7uU_e0>XtFM@%~R#h&Ks$WQmA=Ua7c#W%|OtZ^(JyriN#w?VBy(XQn96QRn!i zpJ_pYy`${bt7N=C$$>igmpK##jFMR^un1Aj=cgCHz6~jSpdt7}qlBG`Iii;eK1WmQ z9eC59W3z2eVzpkPF}g*5QIHtrCxL;{T{?U3?;D7Qw+w~DweR^^=D9-zMO2t& zyasR>2k}3|kUn#jh2;dw-YMrw>{U44)bu(7{Gv~zjMqQu4HOH<-edUA(o3cC<>Uv+ zr>G3?Q{p9esTe{}C*7C%;%PtHHrPDmX%_r2&4Q&tRxoa{*F-Q@nbDk)7VFly-vY8tW%XNJ2f#l_QKRCKO0n7c;bZ@A60`e5BS#lfM#z|C)l;`#bRp(K+^6S$Ox zqJtl?QevQe?;}e{aMpv4#u6jojH^-vq>a~>S)5L~2y}R#X~#q<&k1^!{+Pxz8}QdO zzrS-AB@&cDD0vNMN#7CUj6Ttjxua0?*c%#%trz+`&_?giI4QY=AHA&X;fLUn#Ht{; zNiCR(i!neNQRW{O7(G3ys_Csv>bE%+Ha&ojHo>%bTyl0rPdNSLu|7{79skD=N!(ye zXbMu3tu+$$f6V#n@NNF{dM7I|+}+&laH(dcL_b!L9F(}BdcC&PC>m}!PLFeue-oE* zeYdsryrx%7q0c52l}j4>(-Zm(V!21g7XscD;H`F6wmUp{$Uc(X;bpW} zG$-4T#~}0x-xNnaZ_kNrrs03z>M~s2Npl4p0^ExYq3msD~t6eD;Xm_4Z`F$Ohw)YQf z6n`E?$^Iu18Y99y|6OSoF;PSMf$go2TNaa2!u`Dkc$5{a1amdcjSYj{mYC?zIO*%c zZ#BJR0yNo$qb=`aIty-<(Lm17gSbaNwR|)tZ=_{r#_zfNV>$+%6JH{da1RFOAGUtc znz*gXgoi2b>VO>@rul7qf1POMz?f6!P8p-9L=N(7J>l8XL`;)zg}m=7>Q`j$3w`1$ zaDxL^>|CnXsfCWqXYp~3Aup!OIlJ&w&?Ng{TdZS4@6K%3$xG$YvV8~@%F+QgMqOgD z#Qw*LwQn2fyGwR~af%p?WIt<-B2>F<#dTj~ZY_<($d5=p!9Wd-MkTXffGL`Udqew| z=IC+})}96h4m|3D0`AhXbgV_{Nh4|AF0SQI{07phU0qcAD@ZY7Wz=V{_k+^Mm=4=$ zBVv-Doj55KnU6cjPDHD@T$seMc~G>G=1>yhBpxek-u7tt8*d5WVZQn2DkQ#%-P-R@ zZHy2k+*emupO~H^$fLW7-M>Cyy3$TIK*{*j$%v-`FJImgn*V+}K%R<0Z4#VdzV|noJ3%O}s>+|ky^u55 zOwIDCcw@0XC~9bKxVzNB?;ad;xNPzjj!yT#%RL~qN2BM%_S@HVP} zg`DIwD;(lgP!L@WU5JUR+>wvrkZz1m<&%k59C@{arQ5V`ZH>E8d!OQFdj1kpXVm%G zSGOe$-v~A`_AzD+^_bGKHKOv(J?2%3NqlQT$kJX~;~IZ27m7BzQ^Z&`zkPTiG%&O3 zjqk=lkpBoFs?|xe5{HfcH2Jjj%S``nY-S0%RVn>Nf!FD1QsP`A`c(;!AHFHKH5(Z5 zxHgu+K(yaqGxDeP^|sxZf3i!Z=Tjo-eT@eQIo==nENT=`T8kVx{pLO?b?I#r5~;ru z_VhCEZ*1w6Sp14vvt2jdC_f-^J$=Ibe#u$*HfqpH{%5K1ai`Bd6QRPlPr1(%q2zmR z@>N++{#x2!#%*A#j&8<(oJK0;b8{7(EOu^LJC@;%V zwErh>BU9JU!U`t;p(tl>hmMRGFuPi0Z?twvgMrcP^W=pN7R*5HFz@D|eH+u6`7pob z$lpodQLVS1MSo-Sg<=g1;C;Bu0RLoxL4E2PSj5LUl$E)m11NGV#u$+x6T(XZGBO-_ zd3oSX=|TZrN?O|RTUf{Jp%d|B0F88KxK&%P%{1W?=lsliU-WQPb=H26sQp2->lxy} z%ZaxoN^W6MvwkV5s*S%s8EH)t-F8&;`x6JwDhs}b+>HqaVvj>HwK$^@`T$p;`u*5S zQ$)nQX&ebv!Eg+USH7k{iyy+2iWJmImd6{ipEQvo89qqAp3XKH1OX@rg)#w>-^ANO z?umYDp+PH>7Pk;wF@FVx`=`SvMei{Zx&NBJr(kn&W}G>ngG$W96>5o`akSg?$GPvX z%vf(FWWoA|77FK1Le~H6*B+D8b-*OP6U9di@*aeP060O-nRPHN!+~mTts{jS$V3oH z5s<>Np%}4JjHFu!fZpYRJd<45m0U|p3(uKYeC+AT_{wTow_!M`NgBN9Hb>SeFD>HY z<`hqUCtkSS2qNa%`6=Z_>;waKX2ND?CM`Fvf_A3P@OwS@77lkU?i@z;lKK@VJ0%7eNVHYqU8U4%JSLcy&rwf9P)*%9DV5ovm+n_7|8<~b~ z=u-gil8TW}dgmJ(oCWS}8psIubAP0`xhFtyZtC&>SKM32 zRhh0)!w(>03kE1D_81^if|Q6j1_mmiq+lQ^-C-ag?TjD|qI3vIr-a}jAW|x&s2c$( z>3-LZbLP~X_xt|(K7Z%@W{(4VKl^^}=en}*LeNSABFKBmQr1I|ES@~&}RMGH@QrWW{{T|Yx z#0;$J9{ydsWT9V4ZQ|prp$(lBE!W7mCj6Vhp`p0is!f}BAY-z&n!b@gT7T?3dpy&N zZXEPHr}|y@NuQ39RK^7~w8bz0^ndLC0tyyHeTxWp5HcEJc||%v-NXla;hjW62!4nZ zX_{LT3n}~v5#E3*Q#Lqnucsja6*%9aars+sum0RTq<&qO{aU{@ER(p$N=R^m?v_5O z7OgGD&%YXj)gnHZcj@ikz1uG|)X*%rxLC$4r586ivc5YpvrboNa6F|a11+6WFyaij zcS8;8lHmp8qt~uQ+q`WELTSv*&b};SR}7l3!4uk{DL9(Zd__u z*aes4pmkMW4lXDtU|F+pEI0EF?ensW;mBgLe4G@m}r9`uep%DX92l3Pi1Rn?wj_ z=?Yy4I2|1m)55v&eMJS+ix(HR1kk#=RP&ql?t6K;$VNJAq#Omkt=f>Dfx#s6joUWq z@U)%WziB({vr{=>KFQ{LAyNMP`QIlkAU51$?*mDuAf{6AcW!H>WPOl78%doRo$_3N zbze_>P0?`|)~*#Uw7!#FY0M@4cMC=(1N7}qGchsp@;&L1x@p&yCLeVO4rR{qbR{P> zebsCH#?7nE-Z$BOFh9kyVliB?E_Kw;&CSv5-t~o60oB2JP|iPom;wWNp~q4DL(*Yx z#s>0DDu(BV)sp)pA>Bc@di83`OFBSdp!-A3*Pwy!69IgIf{EQf#z(#u9XzQQRyEdM z4{q7z%a^J6xpwrJTMU$|$Db#SuLP|+9GB`@bQ->YG{Z|R9WhnHUpscFcBLoGJH$f> zDrq>Qq9cH^4@(m9cD@Eh=DojaMxG=!SPpH#l>@9;U^_xR7*N` z)OUQjXZoH#4Gc7NfsaCgj%ex)I+C&L#xyco23@R2m<`8Ydsgr`ab~qy22V1{Hl7Q9 zH?`?-O(}~#M^^&F#+}W|PMdP$%r+T)U#Deud=>Uzuv0$g`p({4vax&kHjXyzWcgBU zw@M$H-8el}ep>jIgS+h=zW`5C zil4ZFd^b(f7m(l`@GTAw1EG?l5cmW#4c_0zjs;aGtwskv*jsQdK*3mV zO-)Yng5`&xc))Hfv6}vE!zd3sdyoIPbPyl!KJ{fX3U|arTfKi{t48*$Rv*{%cC{VD zs{>o~>witU!c%+WCo1z#MEyPe8fwH=62^2!Ru1qtL~G{txOh{!*1kt6K85x|O&BoL z!pTF_G>Ereg2Q-U%k}meuE69`%Yd~-Pqk}SW@(Ra9G-Wbvi*2(_hyzaeK)d{eJ>K& zc>zHDD+PXkH6`PZ+FDoU5?T?wg(wQEy_$CsK9N(LHZ|HyI#w>Smxa|Uz$&9CXox(| z?QYc-(r%2uKskd;Ec)Xi%UOres=eh+pBqIJIwbdTOSUY+6crlyAP_`fa7Yuk8`~o_ z{ar9PO49*~xunlYQBXe#uvxV8H@F6FMl*!WS`rdTYCky76&Ma;=HSp5W?aG|Tu|$H zkfFY<6@4VDu`J0pfJta1d7scMxul5|&&Jjm1he=tm_Tms?uXFsBU0Kpqv@&S!YRFc zaHW-|ZSCwnSMe8>A&nt<0c1P{)O0_Hk)J+)z60uWUfa$Sa(hFQ-#TBIj(6oL zDzw{LGMfYs3>-|4U+Q0w^hIj(0^)IAbFNYdZ5X|k|h1RJF3~q;_aG&Z|uEr z6m2#&GkVWJbiekfX1><5K~rACaq_D?R~~*1&w@>q_ow^6|DiOhemMPd&FGf9#WBK* zYr8qSU6H1`j$Li~E4BOQW~!op5W>HGd-MXN+BGF+&Bx<(ZQUcD(}nx#mbsKfIs|4Q z6~xc~OmKfPBH9u-w?9^TdTk&IsJE)^QBfUzaywgjP{aOeVU5S%JzTT0#Y}f2Yu3()uo05V1FQ$%Dy%I=xUi*ky zFkxHxags9qYhtW`^{JB)Y{}i6?Vd?wUG*f!(uMk3oac{MME8T> zgq!;bP;kSSe<98!95Rn!)w@tySQIa2;p%$a{n+e>0||kseB{nEVI0W!uD!i|P~Os{+X-Lox5q5XD$L_3cVcthzUwKy z$%}Sfj-ESbP(sB%L_4_Tu(~=k&HwzS{SomKf*Tgi{lO=D(d9*cd(~kVK0n7Zaq;}8 z+Z;RB+}D#()>&L@l98wmK=fxX>aVf{tJ<&$SMHM}u6sd({zARM6OCPmdY(SmZa2rB zO82dC`?FWxU^mLiHL2k0YQm*gQ`i`~B;&vS<@@XDmHO!uUFQzm6zQ0GcOpvm;?oy% zt4>+g7Ej3c)tZ5R_vbeIi)4pcFJ1uu)opi`B2&c<+7|IrxZQi2zDv6X+sf&Dh*-39 zowv`G-1(E-tn>D7XR;k0tuAyhU-HN3;wNgjvhp?fhkVad{A16HZjbUw;JVDAQ{v4IzDn)z`^Oo)udqHo zqr8*{+=Lm)q{VN<%#*37!u_{K#?C}u52l7KqYZbB$WPea@U@Lw#CHD=L)HqikPSlE zn>l{6>QAe`9{K8D)%^XmYiu3w1RA8&$1^OGol{#51gq*f&Xie%zLDG>(c~Z@v}?qB zb-YDzEXDs9PptQZaV_n4*@Uw&E(i>Gzsnntfm>`hAQ{swbC*`8EjL#}b}vkuZ|3lv z=#jbCD8e)M0I~g6j;ML2s+`f3;BtMvlTiW@hWqA>br0@%&Uq%`_YBtC-hW=DxpfmVh{E6-6QWcRh}LrB&!%wMd6qD6cP@CE1+m)U_J@V73{DK~iAfbpxNsc!K%?z1y4Boe zvDDu7`~uPFy|Y}~oI0Gyd+($q&PDBbtGkYr+FB zWLN-O#psK_+ic4&CnVeoQa3QzLv50jEb!jz&KaP2>DCK|Sg66l#y$bN^Vb2< zc)a3KX7i)=>F6FbW10Nqy)OTGH~(<1NrBGb)Dw-gVB@gIWf~?Y$^FaFHwb;f{p(|; zE2WVq%|HTNJ9U1RzMF%`^XvFn#qX!%Ju1hoo>0rQ3~D#bbh&<}IcU=t4A!Q$eG!>4 zwrJZy@Dw=(56!mU4r2=GjH2RO0&XdUnpIaRPrqb}RDYB*X;O4Ie)HRkDBIub$FpLz z-cILLABj<<%Qvy(_n2k@0}V~)%^>RlFOEz(81)KYBW2jp&$LT8{eLjw4U3yuyB^zHQ`i23Go9#Xm45 zeM7_I*s$P*B%yWna;)CRA2~cJ1Kc;PF0F`&cT>}davK>v|9SLSK}1fXvY(kCax|6< zzWlonW7lWf_a9XaNYUW?g?B?oHT!KIpRkI-Q=eGJPXtZq3s>?z>o@$;>PeQhAMSH! zci)_B^-<1PZJ}Ep3UYc9d*ioYJ^osM~xOpcj{o?mK zb6L(t@)TWKN~hGx>4 z*Z%fy&_9TEL5)f%T!E za%}UBxGj6`|BAf!#mk~+-L-qbak%xq+3H?O%xqR_6h2h`Z$H$JuaZ}G$r9cmoZh60Ou^UNdQO3t1ZPk>Ait zx&Ed$UC)N}IcGbm5&4!5jlFFT?{RcYF*=1*3-arKYsKgl{){1l>CusPO3rr;`JZ8j zS@vUKhO1wg@->a|FBb0BpJ>U0=aq|G&hb6`*kt8Yp3uQl>atn=x9V9i!T?~ip>e54 z*RX3FR?SzK0eelH0##$yRRwTQ`%fx;P}HJ9ZSn6-3t zw9IM8*zF$!?PX(^3sodPAGaSou}ourXwj~f7Xq?bdq!vu2Gz5=?4ub^^7Zn*(}z}{ z)oi<{-X$dV7u5KV=jyu4%^2QWt!_6SY1Th0+WY=%`I0jhlUMb3$p^`rvq(zUF6y#P_i1$ z-BY%VWQ7{u3T4)OjIq-b8eX?f_+8NL+nhV@7Mu0X39DDUj5NNHfr?vWcdrpDthv9fJjgsT5Ue(qzQ2-$>CFuxsN<@cv}6e->LPTx!4A=IOZHn~T0#i;dgs5;OuBcF0fg3Y66T0|QUwJLtWt zK_u}LUu>pXP>Ab7yY^ow6v#{Ugjl!KL?sAyy71J{-&8_Dp{R4Kda<}3948gT=IXL;oSKsi^7e7kfoU4q}d-#BXMm+V- z7LaC0$gBDnJDo)g4N|TPytO_mxIFcfZt|o_t;nrMlJV)2CWd#`3t&DP%+p(pTN~pN zOPrnTomc~1zCO~7D>t0|e%`NPr~a7o>ZjkIp1u5vtKd^)a{t9IT2R)(J!`f0;%)5K z?BG6hJb9IPLGgEC*P*ibJ4%w58xA~Nyam+C%Z~P?>-}`s8oW=?)fc+pd`y_dcJKi&?Kb{GWyV_6KHI=`_?UOFdIGxxi!kJi^1C3mg zh0_05zBneMnDqN`Mq1mu^*jpwt}+8XVadOHY}+tB#y4YJyAgpV)n#Rj=mrz)J20bw z^e-!Tp)!6-;YuG*V?c^Lldixsb+<;5=ok0bY?)zRAA3amuI3%4H@p}hmyNq(sQ@a@ zKZ@3$te5oZ{55)trE3pAn~U6C$1hcxpD1fwmT&RO`ilp{&NMS8jT2Yd>qfx1Le_n= z)1Czfm+%ReK%Db?kMcj_@#$N?@~PrwGu3*nBW;fvnAtk3J5yOuZjab%+;406uOei) zen;am<9(Yazihm6<=UslrILfi&n#JcMY(HA6g;dtYe#Nh)4M#|DDpVYpo6P#oz4a#y=X)1*k`mwx}ZCLoF5U15$w>R`W`6)B4bz*PhAC zduFa2e?sl;hX?XPNj8&uSxbz|7>B|z+>UxCPz4MBeYC-1$#7}(#lttRdfAQcT1h|O zdUM@y(d-FJ!QP~&p1QVE+5(7UqSA$hX1=pt@7Pe2}{GH zJM~)AvPPQEhaAw{8t1ZdEmy2d?bWC%kqWoy-nrPY+|t8O%Y?b;pGZlQ{d3mgne&rN zjg9AG6n722%W$9QaA5d2H15nNOBv6aD_-I-jMKk+q24W;tJHyI<41SzPleyuc$Pd= zq~pCisrj_sSuo)E;C0)=`lEWn?2JuZv3#3S`q)=F?HzDhsI~n)!j=N+IxOgd%Nv2)U?G~>zHE;`RjL5yo)?X zvoF-+s$-2!WKX_HJX^IC+&;v39DAKK5A=!@^e)L@3YLKiUvFwlCtjtdFmZ zv>cP3A?umds|K9;9i?5D-KlF`p7W(f>TOF%nDV`Cs;4oL5?1eh@$x?H(ocKJ7TNG_ zf3qBc)Jux?fjuDQ-h{Q5uJ(pMj^F2SP%}L#L-Diu|0Ie0d(?^l?b1`Z7?DpFMr<1+ z3|R_%2aFE(HFTy%ug|O1(#rD%LkP1G_5o^=A;a%91m48{{$^rYG}HadCZ}tA8UO1s zM1FF9;gZL~4!ab_v;C+JKh=heIuXZBwK1!(leNlNC13!Slnm^&|5X@ug3_F9&X9oM6tmuQhe zmy>sV7UIv=<)o+wOifW3KFuIsq&#%?GwJtH#nIB~Hzo3xgl-NlWc$&4E@0nyf^@Zy zT&bszA|hu4 zWBlUUvomeGFNKH1K|bU!Wa6(@JBsuAKwDmglLfvC+hVdg>-}fFWkcKZ4cfo)W$SB6 zDLii(ATn^%B4c8lIE1UlIcu9y-%tSPq0#B<}S*Nnj8uYQOwVt`?bKE z_ipirS;W*;3M&q0hiCdrlBeD6(kfQphOL`ta34tBWID<_VvlJ-nMRB`3>@<@hy*f@x%K>=t{;A;ab+{vdVeOQ%`o8%^1Q(R<#bKAO9O`|Y1v*c z6!-LUO^7M^1^{ZC)tJ%X*Ld$UzpS@*P~@M`PpAmDwQLLjwRX3K?mUJbCT=ulC+pv> zZ&^sm8qO2=0G{FJcU>qL%gJXmjarMv+!E#ZT#!+-KY{OMiM`~|P{Y=V8^T`Vgp;0Try0>V#&QCroq%0HRIxYhZ`9Ozz2(HRJr!SHze-z-`%VAvTh%wM-|iE zypnRC3oKNAs+q$s;wx+{cB3SxioKNOKK13Xi|{{TrUxDEbE&2xj*e8D9M?9LK;Nzs`w ze-A;i3jryPKta&{UNZPYM%GOfy}s#vMe!z+diHLj7+E}K$iEQ3bV#9qh70Aaq&hF# z7x}4gsC?l1**PozFRId^&s&zq{Y8eg!VB?Q*rO&FoB`Bu{V#-i+tl^TO?f@ zU1UCL3i^PA-C;I~ks@g=W_o$L#Mv#Skq#B(-Wg(VPV1OPPhl!@VO-?rvp`0n+Du8c zlY@c9g{h;_cF|T%kAqBQm%EdNs0#(YS=>d=-za{Mz7_IYz%xI4DY8QI;*oduLL4?v zA1YNWAAI}q1K+0&{u>q>uNJl^^fiMp(JLo?*HEFgAn zc44mXuSfAOknk67&L-~gfw+E`kW6#q0v{HRFD@HPKj^5X=zj4(|9ByLW6vAs{NrOv z(NWJ6m zQEz4u9d{F9yI;6QUe!Vl;2@5YY<(Gtes<>75j}642(@an=d`9-dWCURy1s_)ja`Hqi5mfWm#ihM`UA9ugyxn{AXQ)qPS&?UXbmRe^OCj z$5)aQakE}Go)#gnk>33%+ZXccms@o&zYEyj+1J4k*BHzECFxd*(jBlaTYg2~tklM}!o!LF<0ZLRIm?Aqzn`t~4u=|Pt$RZnU0BU5=t z_|+q8Y{Bc^xhtz6jEqsbN^_vo3V61r`MyI0f-K$?J zaVtb7w@WC0`I8Xa+SITm&2;;Mf%*t~XV6p8x5`5c z=_6*v?_xv+K3+t{hKM>IaF`Mz{tuYZ{d|jw`(GO2 z=s^=FLmWy$Kdy>!@bmLq+hlw{aZEM-=X_sLLaONKl7(@je`L1*Y{!7%0L}EyFRy+h zaw!;~)w0TSnxF2#Y$A9SL~-VI693IzmXvYhaph&>8V83tQzgm zZqoi<_4Mt2k*A985U8f3$mry~B45@$2M=<<@C^BGz|~x#ELC%=Q#QYk)n{R1;=fDU z0RBzT95;dTDKgnxjN>X)=h={n9rJ$g|Nb1oN!cai3=6UKnRtjBn-`{>?pkT9= zU{Qo|B>1>3l9JkM)-FpPw#|?4nRe5g4%4cwp`u^{b-K@Rj*T;$hWZ5+n~@EUJ|hK| z+oe9`mcr=SlhfjgGB01g{Gc9yIYCIngdDW0p_v8V|C*mKk$2AL(fto_qRDHc343(o zvt(n^x%ZxrisRn<99BXBeCla7iEsqe&A7l&3i>Bpn^X)xfBkxu+dUo*XHXjv@c}%} zm~m-kRGk~#M}k`>&~4nekD2lf4)y?%KEZI^G8eI~`}dcHNISLDQenVREuD_%Cn7(; zRgVMRXT%|j0vPo1AcI1WD#}c$`y*s@=N%4tFeNgEZIgA`Ll)3$QbCv^ZsCfF#Aeq&C;D;$$V|<_IFe7{22YP zs?7HKXftti8KK|QH2%D(sA!Vg63u?aI5~)bP*^BVHa@jyHi_uYgDU~0+!DRupe|Fx zfo@PFFu6?W&g2-_o^H0}YqmeFnQQ)v_R%1qD5fu?fR`F_Ym!fk9`M~Z&=)6>5<;3*);Si&xPT?ySGe82d zT1UL(D*xrZJ9idi{DOs*m2iJVt;|UHMEfmFwn5~w_Ht}wAv6eABq$}7l)10n+oS+S zR8;_f#mwaJP^(#OV1V(vXLLF*Jr8MVMYI_|J!vL4*4w-q6EKWtM*FTrjt@3D^f3dF51|OLl$+fpr$K`crzL7D2&9`bYBhe z6BN7mpP9I~zrUGI?}~teyB2M^7SOIC9twl7BvMHfRCqz6l@1~l_HP-yiTr$hsfgU^ zrX~m9Xr5;`R3qZ2rT(pb{#;X6H&(TMUN`q-MC3o_GxB>BJ$??^9tbVJ${s8z=KY^n zL1wM5F8`H+(HC*1Ya9J3?~WcCrdJT;2gkqub42T&fHUw8 z=OFnn!N!H}Kh3tfbYGgf_s8qzK#!xpJusETL_Nmej2cqgj_H_fuMqf~Ze^Z9^Jzy% zsk_V~^9q6c8L533S6{-5VWY(nJ==#ljPuc8KyzD_YZ$%b2{`!BQ5ZK*SGjJRZ~FCk zLU4_j{1&C8ON?aNCVyDt3CAxD@40icV_O~W31JEmJx?n>RT+^6!CDChv~5s$b;7wq zl%F4bH*A(a=c>*7TiorgSuj;RkVVMD0N?z50oE3?G zF$DhVm3@C3@JvJwQYFuH>oyZFSuoLrFnE6t(QXDpXi&kHMW!$aW&MkNU5F=8hgd`O zQ%YQxr^1che4w2R!mwZs-t+NUt(2l+$bIR3+oOBVnW9eD)B){QR`RE3dp3d>`b}m$ zcYA*7|GK?7jiWO3#h-noy+O!ef$d=lWaWmSdRE-r%!Z@59J(6S!!qhdZz2v6?-SB- zZ*5geRL^6@1Nlh8Wb zF)asY^16uG_YCi4ZwLjknmwQ^{*%A(zb+m(O)2g?+;La7hfAVg^zNMsC1Y!A`_Ey{ z|5~~C7{vR}?ece9=jT`@AL-VuTUV){xLg(9)kwx&v$GFa+u21yu~_A~F3YanyOS~{ zF)WJmWu>O3CJ|_ebmf+X+M3|=52FWQh%3dQD16i`xz?tmwV}F=GF=I+iWlI{dVs=n zc*!knMe%VPFj!57I*%+(GUFMoo{aL5lFc$|d+mcXJ2=*DTMh_b*nZPr`cXj z%=o`RSQOAMTLO38ExUFdH?30liMj|+Ixeu8C5a$E#GY8d8YOl{l?8%Z3A8$y)z^gv!3|pupKp%vib1@d%Y7if?vb_am9`f4q>c|`|jlI$4f7L zb;NIgzqc8FtsA`LhtohbTuu?OCxzDI;~#aKaFJf$-lxYLX#zKDJynL&Bq%qKZvac9 zR0R$iKjj83q2V+v_YvKUOD3RI4(~r#1Bt5N-YO~6bZfjO)lYeMeg9^;myZAPHrJgG zM-N`$w)-wXR0KelGJMRM6Ej6Sx$?7a4NTUTN=QiT!}i{8ejv6YG@|veXRi2durgSv0n5+^+^rl*cLrf-+Ej{ zC=3n`%HVcXR}s1$pL(u}L5xxY1XQh0tMy=_9BB zAn$h%*{#O}_DMNRH@5*;Y3}S#xuK^JI*KXgMbywAyHngyoZgq7n>dVYO&v4dbvb6& zuNQc-)@~Hj%(p&^k@mA{CgtlNLnvOGYkB1^T#Z6fj`QzO)b51qiBrq z`{}QK{{Guh3YNpKLQX>?3|nli>ng7OP8(j=)*6@i=lQ?RB<#A<*|c0@G_b2wGNF zRzADL!^*ln%>Ku*gs%t>ERZENwY5{fphIpPo3Dk5QqAb3jSyQq!!cH<@UEmtepN6I zSm6j*kVXZgN{bj7F{Q8s3WAF$VmX8A`IKS8ZvB%r7N5W;Vh=W}{zXx5jqFW!ANCLn zsoqgrB7aEyMM2dLtrN<6`z{2bMVs6AMOjA&50v1Fk)U(5Nm;#pm#AR&NF&#LDORq8 zgm7fvArdxgfX0|!JEwlhPz>9TxX;7F3j2J9m}4Xu=9+hFTckumFb@b-V!xL`HA$vl zZWPP=qxKHt){FZb+;l7LwF+!UO8}GXopXTZH{}dh`@+VR5{khuzZj79c1G5WbG_q6 zg}H@SwGG4wA%NgG^(sFR#qvSO>R=7oJ7h#ZB@RzQd$}0Z$bqSNF0X1aUS2vpzv(JU zDk^TMxgrf)GQEt#51KTI^>uZ*a!cB7!l*wu@GkH!hOAsjom`d{|MfdBoFV?pg%Y(K zmML%I&g}@EhFT>%p7e}IX0{-t@8siqiLmj`e5I8DDOBp;g{XITMH=-lK2wER3a_hG z{&W;hPf$$&%Rxq$o`RB61YQFnq@y4k$O|Ov)~#DapR?Q%r6Ht})bofgkirK?<+^tv zbPJ{}5K69tcnVOK%e7&W)?Xhg6CvkTcpUxEIJunW8B*c7@eVPJA*y6^u<6;dfBzah zJMtPD+z>S0GEn|ptETe(m-Jex!{F~40kexX&h{{ouURlycbvG4#bj8!{iKYEi2yMn z#Dh%apUAs+c_!kOl|ftXdfXpOFjSxf8EjHD{)BVqDCV%f6g*;0%nX6H#ASO>sfpDt zfCF5c=x{E+Oi;=hqUA|=`(Uki68UIcRhV_>Qctdf{+d5#5xJVjt!(tac!qGbB_Gl4 z*Vm1^3S@2F7I{x*stf{JyrA~(Z3&q86u=m|Da1hz3R}L7r3_rWAFv!0uP>gN;`lZIk#zTNJkCXi4 zq8KdF2_oQuT5UPfHlQ5a<-ORqk#F%TCHAYSQWHjrn2FHv;PCKTOl)aGG?74^4>T33 zE-2R^Pq8#>&$UP>&#ds_VM7(T2I=SK0|!*FvWGE^bIe|NZ$P@K(YNcxO(hq_n!ECi zjR5B_IqUG*7~+cwoNv`x|DA~Xv#*gP07d<+*J?t3q1^CYaE(qvR%WfN|K4t0C|SIl zf&`aWD)l3~Vx~w0dI!BEGtmme1>Luwl^QxEKiRdq)ne(+2Ibdk!w{dHov9&GxBt&K z4kK^e1Ct}8#vO%w{=H`Sle|xU;s#U|X?){Nww+Z_z57>I|DRt?8HMMf*hZBiM@f=8 zP~VzUcrZJ5%`6X4e?COc_6O6H{=NSC6OZm<56Zi}EytfvUC+upFlZjyu)%q8eE&hk z`18t=UlLi#1$+W*KMt9n1x+&eETjhfS(^TT_)4y=btNHnZytYI-%b3wuuXX|tt5vz zCjh^1aPUL=v8uXFVsrcs6i#Q;kN^5Bnh(z=y1KjFQDB@55?Wd`^W%h>sGnQq*A+Zc ztuqHlp_HDU*9JK(CLk|J&r=W84x^HRV2~E}r4sZzNI` z3Z#n@lv6OGW$@ht!dTy9`HofLmi`4mIl_u4yx*U@##= zNPah`MsDnUSUrAr1Zw~#;zis}GbYfW7EwLurnVAloO&#cSjD7G{WNyQJscA;TJ65I_uN5&PZntbc|H8V=g+AE36A$oTmy zSnK=j#tcG$=VRK#$V}9=^6K*tD*=|XD*@#aQ6KySO7TGyGQw7vj#jHd-L(uYg{*el z<$-~Lrw$qcOGEU#_vq0EHK*B8rCzj!t`ZeV0E}+;@0)%Y7H>hD1gSF#kcTk$Ud?N| z6mURn`H#`jBfz653PGOsm5pDcj7$v@QG6UmgFk-UE-I47Y>O+Y<-|j4dQ=EDwEyZd zqO%Vy9v`v^F`eiUL7UJO$ht=#q>5gTuZ9_0;+DFSY6G z4TSFnLT)`$ceE~5=jgEh28@pozlsej7U$L4!46JhTc)eW_4V~|(U^iBOacq9Z?&!To1f^^nn zoUXt`?}dl+OpWz<5D94vnklsyw`5lLyn_h>l9>$x+KYfnULCd}<4?q$6DN}_gp>%- z&%xn=77#IF8+DWvo?nTFMQ@&zHfWO_MMn+A12Z?bH*{++Lrv{ebt=uKKNi?z)0Ch< zf$`ckYYdX5Ex&IdCTS>KtZi+{65%K+hT84L-r;_T&7O-sc?d@`&J`9;PR}q&JEHD* zz>Ma3q@`zCihP~64ju@O{(ACc;%LFe0J0gw?E1+ZkOtf*7IT&QBR3%(9x~o`Aw?V0 zx&#AENX}gbS?e<5fq*=e+;b5TRuqJyz$0{rvok{3NbWH?ok^PwvzX1BX(fWm7y&iG zLuHS~kk?6KOfh?K|;^yC+0W)@XmU|EvhA%f&tLg^Wi0@em{>hzX(?ja-|9}9qaF6cD~WAEupvo#c7)sChJ4j)ZJVoC zx3$}Jg+5-K9tQ>pX%50Q`e&{VB7PgvJp%t;S z82f7wBG%e?^vH2SYQnK;pc15e_ZSJGiHQk;gb}$E6%`2#Oy*uum}RvzVW><+Vs37F zfRykFeF(w(uD#x1(2}_lQ`?$wU?;wJ#%tEm^iK?E}m!N?LVDk&Wl`6W;nI zSrXEm4VUiFo+dySz?H+mc=qYO*@VK76Q0!wF5A$^+>PPBx1Dq8h!^WgZ|=ao?(23o z(OBk8>zRggr!QmGP)L)b^xle%w^6}&qF?X==*5B~BwDnms?J7xafo&zCLzN;j4-s% zamE_+p>#wfk6a1aB|wEz8y$&C-r#G&TJ+&I3kb02RCpi3wk2pBk(I|{mty>1zW#od6HUzMf9Q#)eAz5Ug09jv3us~R$ z$krhK9~fAMxa~fiQbT0H(N^Xm2hAS!T;fF@aJW_(YleXSj+Tp?-5$SB4X_*fhKV&5 z$QTl4Q&85DO-$-Y6NqmgXyAUVq`=G~9EFFMP6qGOpw||8*!8Yr+&ZcZ8&_Myapc?C zRJ(Dbgg!GfvvN$|F;YXARKJu6b-l-FX>awyA^Yuym`f)EG%PqECOUctfC95`mrENj`wS#wKYp&u!W33v< zA3jAVLk0mm(S~E~)o_}%ppzkGGoaMqlsq6S^v=I3C}gNe;jqu^qB+wsETRPPFq~CW zGthASRKi#nbD9Tlfrp%R8a2QLiWzlJx_CQ!W{ec3v9&XxzhJRhRJ5693MEP4v~o9Y z#8o$6)8?-aBD&}JJgga~xOt^^8?M_WJUkpQ4Ks!-pXE3i7$j1gFxa`rzon|Ky*6DW zWA^0TSjUc+6&0#`YHMo9(M9j9@=WVixt$H-z~-Ghf2EkA2YsvD5i!Y&+C-K+L+@eZ zFqfFA9H*phgOMGVjTdS;gvl+!!WY0FAsLjbqvKfEG#*Pd2GA@zjT_OLZNl235H3|v z)3GvO_ujqhxw*MzBH(z++Yve;F!8S6;25lfhANA7@C5!T8s}0@%CI zI$mY|$PMWpZ~8i*uR1sJc{QC34&1^TLwAfwmK>McdkQ`|1ck#$YAGHkG<(9)s1fRBXr4L4jJgQ3C0!}o;lP;jVd}9*P?f>Tek5cB`s&29_Ac8bsyr9P`C6C* zuo@W%VLv&Ol>U3ZC0&uw=#;rBfS z`-?~>dW-@%EyoltWcilm&(BSZ_?+zs4?T&1#S5I}4XR?81=Mz$z5zXh*d0;vwljMB z)qhOBJ;DFpKHRGB!+P~x^BWIDYT+G@Ou`z;aHwg%%`lA@JRou$A@ggB)xq{5Vt;O! z?+*{xOlq0?%rh?oKw*!+dTMT9elA6$_Ij?>nvW|ZMWd0({q3hb{)Jj5Gf5h3JaQax<_qsqP-6Jt-x%Xpx|0^ z_Xxn%irnUrxW%sMQ=#|Ko28yP6&~yXzlPLC0Bj6d$7I^Xn#Qm1_^tc8<>a>f?O0(Z z3V737i8m*ao**q+@>KDL27eWyMWL&UoZ^q3s+fDr(D%W^zLKKNi~QcL_`}!NS3E1j z>eVp9?P_Y314KGM`$XZ&!TL(e=4`x(^x<_yhDD$R%f(Jf%$sf|;+_D$C~CNvi`a1L^}d;9j@M zlZ(h=jaY85Djy^t9iziQg1&R-(Z-O=vQ{A**9Y_e2i*Md6sU~mik*{}mrpW0yK|jx zOXl7mKYqM!p@Hb)vA=%Puik&WdPPSCOB!VYNTMjIxe1-%@svh$^okO$q7;D8j0@B^ zKqom|dr^5iMQTeDd-DwyaMowBGnXR=pP%WHu9mzkJUbjdUj~<_^Su%lUVXv>U#$Uf ziZkh_KGZ>Cw`}?H$n(2cn3>O{bP+yP^?VAbFra_H1VUo!Ta?H^3Pb$;2f6*_iE+u{ z7qzrDf#yS!w2={WC~1EF{yv>@h6cWEQS?jLM3GVq`FXYS`2$rXa=`LK3()ZdwxCJ9 zf~fGf10WVrTH}&B;;uMFz8lr!(y7?=07tN%RB-B(EQ>&1mP}{#_Bc5?p(DG6pFic8 z_vtUE&_z7!q1AK2qzvaF*-9UY0|Y|en+$zr^z{x$)kQph{J4qR7rFT1C3LVyBY6_Z z?~3L|`Qd3n4rxni32A&Wm3(UfVo`<|ak)B37{s~9ZMOvUH16xBG)G0>8~djt!9&PK^M<|ZW_ z`t@XiC6qZt_}8Z>RMTBUHgprY2hk5eAEG$zYL&rQS@TRuTr@-gz%t0xsO@-5@CC>; zy)dhlboJ&sC_efQ7#3;~Hc}=^On*;Du55nCd+mk|ON!^%*oY*N;bRxXTym$;Q^V!C zpYy)q6SvcHq-yu$CQm>qIlm)2{Ddld$?DZa0mxwNl(=k?Qj~h0r8W8(3q=V~?`)h* zB&7&$vHJFg4(A?D=4bimP^2tYSh}d#zVS}?{aaPw zU<5U{RMiOWPr0G0I)`WSBM4NF1h1d^txbQ~d4&M&T)mQ}tKD)}+{cMvfPh1#hqrg; z`})hqM&%!%JxLeK?)y}P6nO-_1YazOpLy;MYv80~xN_$5dp(^1H` zZx-0u^;C_#aD-xp$UwbXmJt^TGiICU{ZnQE+b1>;8@A_fqzq2EYkAzLoP|+Pi-D&4 z$?|(i?r-`8u43NA4?*$KKq!Z}dFlX;MhE2`2_Lu^xW^lIgE`Pay_Vss#3pzo^W3ZcO^w8^iYtNrh5N8=; z2(`HUO`B=h}*tlVcwuYCX6Dxp`AF75=n1(1CPT9 z3-vKbKRGpL4%8-x>8BS||AB1o) zh;3FI|E}fvjkPE=?g2{3yVLw`KZ>>$8}?C1f(RfFd8F!I^hob+6ugGq%(~KVTJu&s zcO~jd`e*ra4Gq0NkhLLdmgMK7gO3_VK-02Wh23j0`ObHl$pz%>72ddFG2sFzZLv1O zjzR6sjlv{nP(Km11>H0C1EOW*$VIp&m?v&SWcj2u5)$IbLnX>j2zix=8@EdYO9ta1 zP8#;uadZ|wNyvG(5dJqB2I5~Ijd}7&bHiYz7_J3Gqcwh1_Uw zMI%bJpt-|tfaGec(UyB8tnXhv8*bMx_Pf7-Czb=mYrUFl>>K{j5I7+haHDXe9K;X9 zncjxMY-lM((tZdGxgYG$E|nN>N07X3R`Z;nJfa{Cz0mb6C+ zZ`$omGv5VQC@kS6CF`fYJ|O8J*a*O?%LLoRox>>mg@keYlViW_855|!BVtB7i39Zr ziu^Jzt5#kVgxA8@%-}=1s%x8EY1gfFvThwt^XdS~f`^H5Btr6Yd>49W;;RUM(yR~0 zIHY8w>K={fA*Pm341GQVkFvXv)XKVw;^;A|9-7T3zHq_eA8LHzJjs9sCD>xnbc8J3 z8k8REh-eadjeLaOc>)FXU1nLxVx4WZY%xUS4(@Uc-hcIeV-e~!Fe3m1DZ#id=5%mv z8(4KFy-8X3aYvTnX41(ZovqO8m#=TN29QqcB9b>{Km%T11gE1>TjLd!zF9VG*h#qo zD-{50LQVkW5}R-em*Lp$eZ%QE=9n1}ENPc%(}EJx9q)V}?KX9SZnt_PF;rf1Ryg1~ zGRf+Jav-o(G=bhArXSu1`E z2X5wJ(kQp*hB0O}O@QE|k!NmAFItEIHyg6XHvr&7@MN}k$l-wL0jK%hlpAIg-l-W2v6th9E}|k8f!S!5m> zD10^0YE~x!)Y9idi>t|<7n`Jjkq|!->=0f=g(XXuvJhqj%mmh=@LG#}zRpP^!g)r6+w>XiRZ>ICkpmEWPq>N070I+G)yUC)L4=n1rVGAp9D@dx( zdPLMJfvsBQu^79v_Y(IwJb7L?kQ!s# z2~vgWg-*@+DP=R!r-#USgY%Ang>aG7T4<|a%p6uk+k}MHAtaUW&1&s@Gll~{yv=W` z`=xY1YxxtM9z-b&!LPoxIxY*9Bp0%UVuYksUI;2^n=G(2V_iONOGNjsL6OKMFZ^*G zT%+{!mFW^ZO`9KvAJ(EM%KMnyAtGeI`RCvM|N5$Ooe!J}a>=q< GxBm~$)cq*{ diff --git a/misc/rmM-tree plots (B=64)/select0.png b/misc/rmM-tree plots (B=64)/select0.png deleted file mode 100644 index fd62101f2c0de0cdb6903d10585ddb3891df0668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59930 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

        w^)iJ%o^iXe-~fKzi7I_Zjb()JDdU z!YB){tMYMX%r`daVB*Eq*JadFQzG`Z_NxKY9MA|3C$nL+?d@q9iId-Fxd`!MrI?*s z@QrUL-Gx*2$;r&GXap%?-_#xnfyuhzRwTy9$A8OX9=|7D1t<+z5)h(53cOh|1mvZ3 zjdDtG#3owv18%Q;BJzeH!NDIIBrpIGk>S&k%c1OvnsJ!S?T`C+oVnYRhfZ+2tw0|E)cWgv|gB>g`~Q4tbM zd8!$!yYtF3Gc&98&0bz!8vWZAY;zk9@by5=Puu6PbYu%s_6t{BODnF2C_(yS=-!@{ zv@|{#m-jdqx9Z*v>2vBH7H^%{{MiAGrPaz?#?g&f9%$+%R%mSkCzb8(i+h}Zt;U$x zvpG7-mbT7-N*gXDo1qTGR`SKuigQ^RmMUpo^bm4UZQ#!Y3zfNR_$!8ujqNs==cIA7 z9(^`2$)Jsa(Y9jwV?V}ZNzDZQ#+57Jj4qbOU00FRKkL|NS)8$zmpNt8xRqDfdXbJJ zR(26w2&Otrc_DJdS+Df6^HM*+zNl%`N>09^`dP&*C+DM$aP0jJ;wVZgtB-dQ86(>n z`S83jQG4D>}fO>^BDN8BaggRUBBMjIO z=g_^O!~NL%K0@c=+<^&+D9GPk_BS3vC-TeK1`unt!6YUb%*Nr)^UZDHJB83!Utf9v z?ks(Kw;Kf|o`5e1w^46foDfz&bNZsG>cG%J@LvW51AS$*o5T6E0IE)H$kyssm(YJt zt^>VMsKa8=KjxaF$J|vCXG6z{Z*Kr*HO#d;;Z{fMO0A-z0%R#KplzH7uEnjVPcOmz ziuP2y6T{g*2V0w(?x7ZjYKJR6)D0?0!+Ci=nfUPfe}HO1W6;LkP&&s-Q_3W+-Q61l zJZ_5_mO&CZ)i{DX@3VJLyAsLzu9Am7-3kc*)Xc$P$

        iaDV-AJGfAB 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 diff --git a/misc/rmM-tree plots (B=64)/select1.png b/misc/rmM-tree plots (B=64)/select1.png deleted file mode 100644 index d07118809880cfcc9eefd2da88b3b87144607b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61518 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "rmm_tree.h" using namespace std; - -static volatile size_t BH_sz = 0; -static volatile int BH_i = 0; +using pixie::RmMTree; struct Args { @@ -18,13 +27,14 @@ struct Args vector explicit_sizes; }; -static Args parse_args(int argc, char **argv) +static Args args; + +static void parse_args_and_strip(int &argc, char **&argv) { - Args a; - auto getv = [&](string key) -> optional + auto getv = [&](const string &key) -> optional { string pref = "--" + key + "="; - for (int i = 1; i < argc; i++) + for (int i = 1; i < argc; ++i) { string s = argv[i]; if (s.rfind(pref, 0) == 0) @@ -32,38 +42,52 @@ static Args parse_args(int argc, char **argv) } return nullopt; }; + auto strip = [&](const string &key) + { + string pref = "--" + key + "="; + int w = 0; + for (int i = 0; i < argc; ++i) + { + if (i > 0 && string(argv[i]).rfind(pref, 0) == 0) + continue; + argv[w++] = argv[i]; + } + argc = w; + }; + if (auto v = getv("min-exp")) - a.min_exp = stoi(*v); + args.min_exp = stoi(*v), strip("min-exp"); if (auto v = getv("max-exp")) - a.max_exp = stoi(*v); + args.max_exp = stoi(*v), strip("max-exp"); if (auto v = getv("q")) - a.Q = stoull(*v); + args.Q = stoull(*v), strip("q"); if (auto v = getv("p")) - a.p1 = stod(*v); + args.p1 = stod(*v), strip("p"); if (auto v = getv("seed")) - a.seed = stoull(*v); + args.seed = stoull(*v), strip("seed"); if (auto v = getv("block")) - a.block_bits = stoull(*v); + args.block_bits = stoull(*v), strip("block"); if (auto v = getv("per-octave")) - a.per_octave = stoi(*v); + args.per_octave = stoi(*v), strip("per-octave"); + if (auto v = getv("sizes")) { string s = *v; + strip("sizes"); size_t pos = 0; while (pos < s.size()) { while (pos < s.size() && (s[pos] == ',' || isspace((unsigned char)s[pos]))) ++pos; - if (pos >= s.size()) - break; size_t start = pos; while (pos < s.size() && isdigit((unsigned char)s[pos])) ++pos; if (start < pos) - a.explicit_sizes.push_back(stoull(s.substr(start, pos - start))); + args.explicit_sizes.push_back(stoull(s.substr(start, pos - start))); } + sort(args.explicit_sizes.begin(), args.explicit_sizes.end()); + args.explicit_sizes.erase(unique(args.explicit_sizes.begin(), args.explicit_sizes.end()), args.explicit_sizes.end()); } - return a; } static string make_random_bits(size_t N, double p1, mt19937_64 &rng) @@ -71,18 +95,16 @@ static string make_random_bits(size_t N, double p1, mt19937_64 &rng) uniform_real_distribution U(0.0, 1.0); string s; s.resize(N); - for (size_t i = 0; i < N; i++) + for (size_t i = 0; i < N; ++i) s[i] = (U(rng) < p1 ? '1' : '0'); return s; } -static vector build_size_grid(const Args &args) +static vector build_size_grid() { if (!args.explicit_sizes.empty()) { vector v = args.explicit_sizes; - sort(v.begin(), v.end()); - v.erase(unique(v.begin(), v.end()), v.end()); v.erase(remove(v.begin(), v.end(), 0), v.end()); return v; } @@ -98,27 +120,24 @@ static vector build_size_grid(const Args &args) int per_octave_steps = args.per_octave; set N_cands; + size_t min_N = size_t(1) << lo, max_N = size_t(1) << hi; + for (int e = lo; e <= hi; ++e) { for (int t = 0; t <= per_octave_steps; ++t) { - double x = e + double(t) / double(per_octave_steps); - long double size_float = powl(2.0L, x); - size_t N = (size_t)llround(size_float); - if (N == 0) - continue; - size_t min_N = size_t(1) << lo; - size_t max_N = size_t(1) << hi; + long double x = e + (long double)t / (long double)per_octave_steps; + size_t N = (size_t)llround(powl(2.0L, x)); if (N < min_N) N = min_N; if (N > max_N) N = max_N; - N_cands.insert(N); + if (N) + N_cands.insert(N); } } - vector v(N_cands.begin(), N_cands.end()); - size_t min_N = size_t(1) << lo, max_N = size_t(1) << hi; + vector v(N_cands.begin(), N_cands.end()); if (v.front() != min_N) v.insert(v.begin(), min_N); if (v.back() != max_N) @@ -126,371 +145,290 @@ static vector build_size_grid(const Args &args) return v; } -template -static double time_ns_per_call(F &&f, size_t q) +struct Pools { - using clk = std::chrono::steady_clock; - auto t0 = clk::now(); - for (size_t i = 0; i < q; i++) - f(i); - auto t1 = clk::now(); - double ns = std::chrono::duration_cast(t1 - t0).count(); - return ns / (double)q; -} + vector inds_any; + vector inds; + vector inds_1N; + vector deltas; + vector> segs; + + vector ks1, ks0, ks10; + vector minselect_q; +}; -int main(int argc, char **argv) +struct Dataset { - ios::sync_with_stdio(false); - cin.tie(nullptr); - - Args args = parse_args(argc, argv); - mt19937_64 rng(args.seed); + size_t N{}; + string bits; + RmMTree t; - vector Ns = build_size_grid(args); + size_t cnt1{}, cnt0{}, cnt10{}; + Pools pool; +}; - cout << "N,op,ns_per_op,queries,hits,misses,seed,block_bits\n"; +static vector> keepalive; - for (size_t N : Ns) - { +static size_t count10(const string &s) +{ + size_t c = 0; + if (s.size() < 2) + return 0; + for (size_t i = 0; i + 1 < s.size(); ++i) + if (s[i] == '1' && s[i + 1] == '0') + ++c; + return c; +} - string bits = make_random_bits(N, args.p1, rng); - pixie::RmMTree t(bits, args.block_bits); - // pixie::RmMTree t(bits, 0, 0.15f); - - uniform_int_distribution ind_dist_incl(0, N ? N : 0); - uniform_int_distribution ind_dist(0, N ? (N - 1) : 0); - auto rand_i_any = [&]() - { return (N ? ind_dist_incl(rng) : 0); }; - auto rand_i = [&]() - { return (N ? ind_dist(rng) : 0); }; - auto rand_ij = [&]() - { - if (N == 0) - return pair(0, 0); - size_t a = ind_dist(rng), b = ind_dist(rng); - if (a > b) - swap(a, b); - return pair(a, b); - }; - uniform_int_distribution d_dist(-8, +8); - - size_t cnt1 = t.rank1(N); - size_t cnt0 = N - cnt1; - - size_t cnt10 = 0; - for (size_t p = 0; p + 1 < N; ++p) - if (bits[p] == '1' && bits[p + 1] == '0') - ++cnt10; - - // rank1 - { - vector inds(args.Q); - for (size_t k = 0; k < args.Q; k++) - inds[k] = rand_i_any(); - auto fn = [&](size_t it) - { BH_sz += t.rank1(inds[it]); }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rank1," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } +static Dataset build_dataset(size_t N) +{ + mt19937_64 rng(args.seed ^ (uint64_t)N * 0x9E3779B185EBCA87ull); - // rank0 - { - vector inds(args.Q); - for (size_t k = 0; k < args.Q; k++) - inds[k] = rand_i_any(); - auto fn = [&](size_t it) - { BH_sz += t.rank0(inds[it]); }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rank0," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + Dataset d; + d.N = N; + d.bits = make_random_bits(N, args.p1, rng); - // select1 - { - size_t q = min(args.Q, max(cnt1, (size_t)1)); - vector ks; - ks.reserve(q); - if (cnt1 > 0) - { - uniform_int_distribution select_dist(1, cnt1); - for (size_t i = 0; i < q; i++) - ks.push_back(select_dist(rng)); - } - size_t hits = 0; - auto fn = [&](size_t it) - { - size_t k = (cnt1 ? ks[it] : (size_t)1); - auto r = t.select1(k); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",select1," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } + if (args.block_bits == 0) + d.t = RmMTree(d.bits, 0, -1.0f); + else + d.t = RmMTree(d.bits, args.block_bits); - // select0 - { - size_t q = min(args.Q, max(cnt0, (size_t)1)); - vector ks; - ks.reserve(q); - if (cnt0 > 0) - { - uniform_int_distribution select_dist(1, cnt0); - for (size_t i = 0; i < q; i++) - ks.push_back(select_dist(rng)); - } - size_t hits = 0; - auto fn = [&](size_t it) - { - size_t k = (cnt0 ? ks[it] : (size_t)1); - auto r = t.select0(k); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",select0," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } + d.cnt1 = d.t.rank1(N); + d.cnt0 = N - d.cnt1; + d.cnt10 = count10(d.bits); - // rank10 - { - vector inds(args.Q); - for (size_t k = 0; k < args.Q; k++) - inds[k] = rand_i_any(); - auto fn = [&](size_t it) - { BH_sz += t.rank10(inds[it]); }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",rank10," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + const size_t L = min(args.Q, 32768); - // select10 - { - size_t q = min(args.Q, max(cnt10, (size_t)1)); - vector ks; - ks.reserve(q); - if (cnt10 > 0) - { - uniform_int_distribution select_dist(1, cnt10); - for (size_t i = 0; i < q; i++) - ks.push_back(select_dist(rng)); - } - size_t hits = 0; - auto fn = [&](size_t it) - { - size_t k = (cnt10 ? ks[it] : (size_t)1); - auto r = t.select10(k); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",select10," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } + uniform_int_distribution ind_dist_incl(0, N ? N : 0); + uniform_int_distribution ind_dist(0, N ? (N - 1) : 0); + uniform_int_distribution ind_dist_1N(1, N ? N : 1); + uniform_int_distribution d_dist(-8, +8); - // excess - { - vector inds(args.Q); - for (size_t k = 0; k < args.Q; k++) - inds[k] = rand_i_any(); - auto fn = [&](size_t it) - { BH_i += t.excess(inds[it]); }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",excess," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + d.pool.inds_any.resize(L); + d.pool.inds.resize(L); + d.pool.inds_1N.resize(L); + d.pool.deltas.resize(L); + d.pool.segs.resize(L); - // fwdsearch - { - size_t q = args.Q; - vector inds(q); - vector ds(q); - for (size_t k = 0; k < q; k++) - { - inds[k] = (N ? ind_dist(rng) : 0); - ds[k] = d_dist(rng); - } - size_t hits = 0; - auto fn = [&](size_t it) - { - auto r = t.fwdsearch(inds[it], ds[it]); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",fwdsearch," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } - - // bwdsearch - { - size_t q = args.Q; - vector inds(q); - vector ds(q); - for (size_t k = 0; k < q; k++) - { - inds[k] = (N ? ind_dist(rng) : 0); - ds[k] = d_dist(rng); - } - size_t hits = 0; - auto fn = [&](size_t it) - { - auto r = t.bwdsearch(inds[it], ds[it]); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",bwdsearch," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } - - // range_min_query_pos / range_min_query_val / mincount / minselect - vector> segs(args.Q); - for (size_t k = 0; k < args.Q; k++) - segs[k] = rand_ij(); + auto rand_ij = [&]() -> pair + { + if (N == 0) + return {0, 0}; + size_t a = ind_dist(rng), b = ind_dist(rng); + if (a > b) + swap(a, b); + return {a, b}; + }; - // range_min_query_pos - { - auto fn = [&](size_t it) - { - auto [i, j] = segs[it]; - BH_sz += t.range_min_query_pos(i, j); - }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",range_min_query_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + for (size_t i = 0; i < L; ++i) + { + d.pool.inds_any[i] = ind_dist_incl(rng); + d.pool.inds[i] = (N ? ind_dist(rng) : 0); + d.pool.inds_1N[i] = (N ? ind_dist_1N(rng) : 0); + d.pool.deltas[i] = d_dist(rng); + d.pool.segs[i] = rand_ij(); + } - // range_min_query_val + auto fill_ks = [&](size_t total, vector &out) + { + out.resize(L); + if (total == 0) { - auto fn = [&](size_t it) - { - auto [i, j] = segs[it]; - BH_i += t.range_min_query_val(i, j); - }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",range_min_query_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; + fill(out.begin(), out.end(), 1); + return; } + uniform_int_distribution dist(1, total); + for (size_t i = 0; i < L; ++i) + out[i] = dist(rng); + }; + fill_ks(d.cnt1, d.pool.ks1); + fill_ks(d.cnt0, d.pool.ks0); + fill_ks(d.cnt10, d.pool.ks10); - // range_max_query_pos - { - auto fn = [&](size_t it) - { - auto [i, j] = segs[it]; - BH_sz += t.range_max_query_pos(i, j); - }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",range_max_query_pos," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + d.pool.minselect_q.resize(L); + for (size_t i = 0; i < L; ++i) + { + auto [l, r] = d.pool.segs[i]; + size_t c = d.t.mincount(l, r); + if (c == 0) + c = 1; + uniform_int_distribution uq(1, c); + d.pool.minselect_q[i] = uq(rng); + } - // range_max_query_val - { - auto fn = [&](size_t it) - { - auto [i, j] = segs[it]; - BH_i += t.range_max_query_val(i, j); - }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",range_max_query_val," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } + return d; +} - // mincount - vector seg_counts(args.Q, 0); - { - auto fn = [&](size_t it) - { - auto [i, j] = segs[it]; - auto c = t.mincount(i, j); - seg_counts[it] = c; - BH_sz += c; - }; - double ns = time_ns_per_call(fn, args.Q); - cout << N << ",mincount," << ns << "," << args.Q << ",0,0," << args.seed << "," << args.block_bits << "\n"; - } +template +static void register_op(const string &op, shared_ptr data, Fn &&body) +{ + auto idx_ptr = make_shared(0); - // minselect + auto *b = benchmark::RegisterBenchmark( + op.c_str(), + [data, idx_ptr, body](benchmark::State &state) { - vector good_inds; - good_inds.reserve(args.Q); - for (size_t it = 0; it < args.Q; ++it) - if (seg_counts[it] > 0) - good_inds.push_back(it); - - size_t q = good_inds.size(); - vector qs; - qs.reserve(q); - for (size_t k = 0; k < q; k++) + const Dataset &D = *data; + for (auto _ : state) { - size_t it = good_inds[k]; - uniform_int_distribution query_dist(1, seg_counts[it]); - qs.push_back(query_dist(rng)); + size_t i = (*idx_ptr)++; + body(state, D, i); } + state.counters["N"] = static_cast(D.N); + state.counters["seed"] = static_cast(args.seed); + state.counters["block_bits"] = static_cast(args.block_bits); + }); - size_t hits = 0; - auto fn = [&](size_t r) - { - size_t it = good_inds[r]; - auto [i, j] = segs[it]; - auto pos = t.minselect(i, j, qs[r]); - hits += (pos != pixie::RmMTree::npos); - BH_sz += pos; - }; - double ns = (q ? time_ns_per_call(fn, q) : numeric_limits::quiet_NaN()); - cout << N << ",minselect," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } + b->Unit(benchmark::kNanosecond); +} - // close - { - if (N > 0) - { - size_t q = args.Q; - vector inds(q); - for (size_t k = 0; k < q; k++) - inds[k] = (N ? ind_dist(rng) : 0); // i in [0..N-1] - size_t hits = 0; - auto fn = [&](size_t it) - { - auto r = t.close(inds[it]); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",close," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } - else - { - cout << N << ",close," << std::numeric_limits::quiet_NaN() - << ",0,0,0," << args.seed << "," << args.block_bits << "\n"; - } - } +static void register_all() +{ + auto Ns = build_size_grid(); + for (size_t N : Ns) + { + auto data = make_shared(build_dataset(N)); + keepalive.push_back(data); + + const auto &P = data->pool; + + register_op("rank1", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.rank1(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("rank0", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.rank0(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("select1", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.select1(P.ks1[k % P.ks1.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("select0", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.select0(P.ks0[k % P.ks0.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("rank10", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.rank10(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("select10", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.select10(P.ks10[k % P.ks10.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("excess", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.excess(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("fwdsearch", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.fwdsearch(P.inds[k % P.inds.size()], P.deltas[k % P.deltas.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("bwdsearch", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.bwdsearch(P.inds_1N[k % P.inds_1N.size()], P.deltas[k % P.deltas.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("range_min_query_pos", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_min_query_pos(i, j); + benchmark::DoNotOptimize(r); }); + + register_op("range_min_query_val", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_min_query_val(i, j); + benchmark::DoNotOptimize(r); }); + + register_op("range_max_query_pos", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_max_query_pos(i, j); + benchmark::DoNotOptimize(r); }); + + register_op("range_max_query_val", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_max_query_val(i, j); + benchmark::DoNotOptimize(r); }); + + register_op("mincount", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.mincount(i, j); + benchmark::DoNotOptimize(r); }); + + register_op("minselect", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + const size_t idx = k % P.segs.size(); + auto [i, j] = P.segs[idx]; + auto q = P.minselect_q[idx]; + auto r = D.t.minselect(i, j, q); + benchmark::DoNotOptimize(r); }); + + register_op("close", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + if (D.N == 0) { benchmark::DoNotOptimize(0); return; } + auto i = P.inds[k % P.inds.size()]; + auto r = D.t.close(i); + benchmark::DoNotOptimize(r); }); + + register_op("open", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.open(P.inds_1N[k % P.inds_1N.size()]); + benchmark::DoNotOptimize(r); }); + + register_op("enclose", data, [&](benchmark::State &, const Dataset &D, size_t k) + { + auto r = D.t.enclose(P.inds_1N[k % P.inds_1N.size()]); + benchmark::DoNotOptimize(r); }); + } +} - // open - { - size_t q = args.Q; - vector inds(q); - for (size_t k = 0; k < q; k++) - inds[k] = (N ? ind_dist_incl(rng) : 0); // i in [0..N] - size_t hits = 0; - auto fn = [&](size_t it) - { - auto r = t.open(inds[it]); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",open," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; - } +int main(int argc, char **argv) +{ + parse_args_and_strip(argc, argv); - // enclose + auto has = [&](const char *key) + { + string p1 = string(key) + "="; + for (int i = 1; i < argc; ++i) { - size_t q = args.Q; - vector inds(q); - for (size_t k = 0; k < q; k++) - inds[k] = (N ? ind_dist_incl(rng) : 0); // i in [0..N] - size_t hits = 0; - auto fn = [&](size_t it) - { - auto r = t.enclose(inds[it]); - hits += (r != pixie::RmMTree::npos); - BH_sz += r; - }; - double ns = time_ns_per_call(fn, q); - cout << N << ",enclose," << ns << "," << q << "," << hits << "," << (q - hits) << "," << args.seed << "," << args.block_bits << "\n"; + string s = argv[i]; + if (s == key || s.rfind(p1, 0) == 0) + return true; } - } + return false; + }; - cerr << "blackholes: " << BH_sz << " / " << BH_i << "\n"; + static vector extra; + if (!has("--benchmark_format")) + extra.emplace_back("--benchmark_format=csv"); + if (!has("--benchmark_counters_tabular")) + extra.emplace_back("--benchmark_counters_tabular=true"); + if (!has("--benchmark_time_unit")) + extra.emplace_back("--benchmark_time_unit=ns"); + + static vector argv_vec; + argv_vec.assign(argv, argv + argc); + for (auto &s : extra) + argv_vec.push_back(s.data()); + argv_vec.push_back(nullptr); + argc = (int)argv_vec.size() - 1; + argv = argv_vec.data(); + + benchmark::Initialize(&argc, argv); + register_all(); + benchmark::RunSpecifiedBenchmarks(); + benchmark::Shutdown(); return 0; } diff --git a/src/test_rmm.cpp b/src/test_rmm.cpp index 9a0af60..7b75808 100644 --- a/src/test_rmm.cpp +++ b/src/test_rmm.cpp @@ -1,9 +1,19 @@ -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "rmm_tree.h" #include "naive_rmm_tree.h" using std::size_t; -static constexpr size_t NPOS = std::numeric_limits::max(); static std::string bits_to_parens(const std::string &bits) { @@ -13,6 +23,7 @@ static std::string bits_to_parens(const std::string &bits) s.push_back(c == '1' ? '(' : ')'); return s; } + static std::string vecbits_to_string(const std::vector &v) { std::string s; @@ -22,6 +33,16 @@ static std::string vecbits_to_string(const std::vector &v) return s; } +static std::vector pack_words_lsb_first(const std::string &bits) +{ + const size_t n = bits.size(); + std::vector w((n + 63) / 64, 0); + for (size_t i = 0; i < n; ++i) + if (bits[i] == '1') + w[i >> 6] |= (std::uint64_t(1) << (i & 63)); + return w; +} + static std::string random_bits(std::mt19937_64 &rng, size_t n) { std::uniform_int_distribution b01(0, 1); @@ -34,349 +55,554 @@ static std::string random_bits(std::mt19937_64 &rng, size_t n) static std::string random_dyck_bits(std::mt19937_64 &rng, size_t m) { - std::string s; - s.resize(2 * m); - std::bernoulli_distribution coin(0.5); + std::string s(2 * m, '0'); + if (m == 0) + return s; + size_t opens_left = m; + size_t closes_left = m; int h = 0; + std::bernoulli_distribution coin(0.5); for (size_t pos = 0; pos < 2 * m; ++pos) { - size_t rem = 2 * m - pos; + if (opens_left == 0) + { + s[pos] = '0'; + --closes_left; + --h; + continue; + } + if (closes_left == 0) + { + s[pos] = '1'; + --opens_left; + ++h; + continue; + } if (h == 0) { s[pos] = '1'; + --opens_left; ++h; continue; } - if ((size_t)h == rem - 1) + if ((size_t)h == closes_left) { s[pos] = '0'; + --closes_left; --h; continue; } - s[pos] = coin(rng) ? '1' : '0'; - if (s[pos] == '1') - ++h; - else - --h; - if (h < 0) + if (coin(rng)) { s[pos] = '1'; - h += 2; + --opens_left; + ++h; } - } - - if (h > 0) - { - for (size_t i = s.size(); i > 0 && h > 0; --i) + else { - if (s[i - 1] == '1') - { - s[i - 1] = '0'; - --h; - } + s[pos] = '0'; + --closes_left; + --h; } } return s; } -template -static std::string show_sz_or_npos(T x) +struct Limits { - if constexpr (std::is_same_v) - return (x == NPOS ? std::string("npos") : std::to_string(x)); - else - return std::to_string(x); -} + size_t CASES = 150; + size_t OPS_PER_CASE = 600; + size_t MAX_N = 20000; +}; -[[noreturn]] static void die_mismatch( - const std::string &seed_info, - const std::string &bits, - const char *op_name, - const std::vector &args, - const std::string &want, - const std::string &got) +static Limits load_limits_from_env() { - std::cerr << "\n=== MISMATCH DETECTED ===\n"; - std::cerr << seed_info << "\n"; - std::cerr << "bits: " << bits << "\n"; - std::cerr << "parens: " << bits_to_parens(bits) << "\n"; - std::cerr << "op: " << op_name << "("; - for (size_t i = 0; i < args.size(); ++i) - { - if (i) - std::cerr << ", "; - std::cerr << args[i]; - } - std::cerr << ")\n"; - std::cerr << "expected: " << want << "\n"; - std::cerr << "got: " << got << "\n"; - std::cerr << "=========================\n"; - std::exit(1); + Limits L; + if (const char *s = std::getenv("RMM_CASES")) + L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); + if (const char *s = std::getenv("RMM_OPS")) + L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); + if (const char *s = std::getenv("RMM_MAX_N")) + L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); + return L; } -int main() +static uint64_t choose_seed() { + if (const char *s = std::getenv("RMM_SEED")) + return std::strtoull(s, nullptr, 10); std::random_device rd; - uint64_t seed = ((uint64_t)rd() << 32) ^ (uint64_t)rd() ^ (uint64_t)std::chrono::high_resolution_clock::now().time_since_epoch().count(); - // seed = 4436852161472814998ull; - std::mt19937_64 rng(seed); - std::ostringstream oss; - oss << "seed = " << seed; - std::string seed_info = oss.str(); - std::cerr << seed_info << "\n"; + return ((uint64_t)rd() << 32) ^ (uint64_t)rd() ^ + (uint64_t)std::chrono::high_resolution_clock::now().time_since_epoch().count(); +} + +static void run_case_and_compare(const std::string &bits, std::mt19937_64 &rng, size_t ops_per_case, uint64_t seed) +{ + const bool use_words = std::uniform_int_distribution(0, 1)(rng); + pixie::RmMTree rm; + NaiveRmM nv; + if (use_words) + { + auto words = pack_words_lsb_first(bits); + rm = pixie::RmMTree(words, bits.size()); + nv = NaiveRmM(words, bits.size()); + } + else + { + rm = pixie::RmMTree(bits); + nv = NaiveRmM(bits); + } - const size_t LOG_EVERY = 50; - const size_t OPS_PER_CASE = 2000; - const size_t MAX_N = 40960; - const size_t B = 64; + const size_t N = bits.size(); + const size_t ones = nv.rank1(N); + const size_t zeros = N - ones; + const size_t pairs10 = (N >= 2 ? nv.rank10(N) : 0); - size_t iter = 0; - size_t total_ops = 0; + std::uniform_int_distribution pos_i(0, N); + std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); + std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); - for (;;) + for (size_t q = 0; q < ops_per_case; ++q) { - ++iter; + int which = std::uniform_int_distribution(0, 17)(rng); - std::uniform_int_distribution coin(0, 1); - std::uniform_int_distribution len_u(1, (int)MAX_N); - std::uniform_int_distribution len_even(0, (int)(MAX_N / 2)); + size_t i = 0, j = 0; + if (N > 0) + { + i = pos_i_nz(rng); + j = pos_i_nz(rng); + if (i > j) + std::swap(i, j); + } - std::string bits; - if (coin(rng) == 0) + auto trace_header = ::testing::Message() + << "\nseed=" << seed + << " | N=" << N + << " | use_words=" << (use_words ? 1 : 0) + << "\nbits: " << bits + << "\nparens: " << bits_to_parens(bits) + << "\nwhich=" << which << " (0..17)\n"; + + switch (which) { + case 0: + { // rank1 + size_t x = pos_i(rng); + auto a = nv.rank1(x), b = rm.rank1(x); + EXPECT_EQ(a, b) << trace_header << "op=rank1(" << x << ")"; + } + break; - bits = random_bits(rng, len_u(rng)); + case 1: + { // rank0 + size_t x = pos_i(rng); + auto a = nv.rank0(x), b = rm.rank0(x); + EXPECT_EQ(a, b) << trace_header << "op=rank0(" << x << ")"; } - else - { + break; - size_t m = 1 + (size_t)len_even(rng); - bits = random_dyck_bits(rng, m); - if (bits.size() == 0) - bits = "10"; + case 2: + { // select1 + size_t k = std::uniform_int_distribution(0, ones + 3)(rng); + auto a = nv.select1(k), b = rm.select1(k); + EXPECT_EQ(a, b) << trace_header << "op=select1(" << k << ")"; } + break; - pixie::RmMTree rm(bits, B); - // std::cerr << "N=" << rm.N << " B=" << rm.B << " overhead=" << rm.built_overhead << "\n"; - NaiveRmM nv(bits); + case 3: + { // select0 + size_t k = std::uniform_int_distribution(0, zeros + 3)(rng); + auto a = nv.select0(k), b = rm.select0(k); + EXPECT_EQ(a, b) << trace_header << "op=select0(" << k << ")"; + } + break; - const size_t N = bits.size(); - const size_t ones = nv.rank1(N); - const size_t zeros = N - ones; - const size_t pairs10 = (N >= 2 ? nv.rank10(N) : 0); + case 4: + { // rank10 + size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); + auto a = nv.rank10(x), b = rm.rank10(x); + EXPECT_EQ(a, b) << trace_header << "op=rank10(" << x << ")"; + } + break; - std::uniform_int_distribution pos_i(0, N); - std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); - std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); + case 5: + { // select10 + size_t k = std::uniform_int_distribution(0, pairs10 + 3)(rng); + auto a = nv.select10(k), b = rm.select10(k); + EXPECT_EQ(a, b) << trace_header << "op=select10(" << k << ")"; + } + break; - for (size_t q = 0; q < OPS_PER_CASE; ++q) - { - ++total_ops; - int which = std::uniform_int_distribution(0, 17)(rng); + case 6: + { // excess + size_t x = pos_i(rng); + auto a = nv.excess(x), b = rm.excess(x); + EXPECT_EQ(a, b) << trace_header << "op=excess(" << x << ")"; + } + break; - size_t i = 0, j = 0; - if (N > 0) - { - i = pos_i_nz(rng); - j = pos_i_nz(rng); - if (i > j) - std::swap(i, j); - } + case 7: + { // fwdsearch + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.fwdsearch(start, d), b = rm.fwdsearch(start, d); + EXPECT_EQ(a, b) << trace_header << "op=fwdsearch(" << start << "," << d << ")"; + } + break; + + case 8: + { // bwdsearch + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.bwdsearch(start, d), b = rm.bwdsearch(start, d); + EXPECT_EQ(a, b) << trace_header << "op=bwdsearch(" << start << "," << d << ")"; + } + break; + + case 9: + { // range_min_query_pos + if (N == 0) + break; + auto a = nv.range_min_query_pos(i, j), b = rm.range_min_query_pos(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_min_query_pos(" << i << "," << j << ")"; + } + break; + + case 10: + { // range_min_query_val + if (N == 0) + break; + auto a = nv.range_min_query_val(i, j), b = rm.range_min_query_val(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_min_query_val(" << i << "," << j << ")"; + } + break; + + case 11: + { // mincount + if (N == 0) + break; + auto a = nv.mincount(i, j), b = rm.mincount(i, j); + EXPECT_EQ(a, b) << trace_header << "op=mincount(" << i << "," << j << ")"; + } + break; + + case 12: + { // minselect + if (N == 0) + break; + size_t cnt = nv.mincount(i, j); + size_t k = cnt == 0 ? 1 : std::uniform_int_distribution(1, cnt + 1)(rng); + auto a = nv.minselect(i, j, k), b = rm.minselect(i, j, k); + EXPECT_EQ(a, b) << trace_header << "op=minselect(" << i << "," << j << "," << k << ")"; + } + break; + + case 13: + { // range_max_query_pos + if (N == 0) + break; + auto a = nv.range_max_query_pos(i, j), b = rm.range_max_query_pos(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_max_query_pos(" << i << "," << j << ")"; + } + break; + + case 14: + { // range_max_query_val + if (N == 0) + break; + auto a = nv.range_max_query_val(i, j), b = rm.range_max_query_val(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_max_query_val(" << i << "," << j << ")"; + } + break; + + case 15: + { // close + if (N == 0) + break; + size_t x = pos_i_nz(rng); + auto a = nv.close(x), b = rm.close(x); + EXPECT_EQ(a, b) << trace_header << "op=close(" << x << ")"; + } + break; + + case 16: + { // open + if (N == 0) + break; + size_t x = pos_i(rng); + auto a = nv.open(x), b = rm.open(x); + EXPECT_EQ(a, b) << trace_header << "op=open(" << x << ")"; + } + break; + + case 17: + { // enclose + if (N == 0) + break; + size_t x = pos_i(rng); + auto a = nv.enclose(x), b = rm.enclose(x); + EXPECT_EQ(a, b) << trace_header << "op=enclose(" << x << ")"; + } + break; + } + } +} + +class RmMRandomTest : public ::testing::Test +{ +protected: + uint64_t seed{}; + std::mt19937_64 rng; + Limits L; + void SetUp() override + { + L = load_limits_from_env(); + seed = choose_seed(); + rng.seed(seed); + std::cerr << "[ RmMRandomTest ] seed=" << seed + << " CASES=" << L.CASES + << " OPS=" << L.OPS_PER_CASE + << " MAX_N=" << L.MAX_N + << "\n"; + } +}; + +TEST_F(RmMRandomTest, RandomMixedBits) +{ + std::uniform_int_distribution len_u(1, (int)L.MAX_N); + for (size_t t = 0; t < L.CASES; ++t) + { + const size_t n = (size_t)len_u(rng); + const std::string bits = random_bits(rng, n); + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + } +} + +TEST_F(RmMRandomTest, RandomDyckBits) +{ + std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); + for (size_t t = 0; t < L.CASES; ++t) + { + size_t m = 1 + (size_t)len_even(rng); + std::string bits = random_dyck_bits(rng, m); + if (bits.empty()) + bits = "10"; + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + } +} - switch (which) +TEST_F(RmMRandomTest, ShortInputs) +{ + for (size_t n = 1; n <= 8; ++n) + { + const size_t total = (n ? (1ull << n) : 1ull); + for (size_t mask = 0; mask < total; ++mask) + { + std::string bits; + bits.resize(n); + for (size_t i = 0; i < n; ++i) + bits[i] = ((mask >> i) & 1ull) ? '1' : '0'; { - case 0: - { // rank1 - size_t x = pos_i(rng); - auto a = nv.rank1(x); - auto b = rm.rank1(x); - if (a != b) - die_mismatch(seed_info, bits, "rank1", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } - break; - case 1: - { // rank0 - size_t x = pos_i(rng); - auto a = nv.rank0(x); - auto b = rm.rank0(x); - if (a != b) - die_mismatch(seed_info, bits, "rank0", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } - break; - case 2: - { // select1 - size_t k = std::uniform_int_distribution(0, ones + 3)(rng); - auto a = nv.select1(k); - auto b = rm.select1(k); - if (a != b) - die_mismatch(seed_info, bits, "select1", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } - break; - case 3: - { // select0 - size_t k = std::uniform_int_distribution(0, zeros + 3)(rng); - auto a = nv.select0(k); - auto b = rm.select0(k); - if (a != b) - die_mismatch(seed_info, bits, "select0", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } - break; - case 4: - { // rank10 - size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); - auto a = nv.rank10(x); - auto b = (N >= 2 ? rm.rank10(x) : 0); - if (a != b) - die_mismatch(seed_info, bits, "rank10", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); + SCOPED_TRACE(::testing::Message() << "short-inputs:string bits=" << bits); + run_case_and_compare(bits, rng, /*ops_per_case=*/200, /*seed=*/0xC0FFEEull); } - break; - case 5: - { // select10 - size_t k = std::uniform_int_distribution(0, pairs10 + 3)(rng); - auto a = nv.select10(k); - auto b = rm.select10(k); - if (a != b) - die_mismatch(seed_info, bits, "select10", {std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } - break; - case 6: - { // excess - size_t x = pos_i(rng); - auto a = nv.excess(x); - auto b = rm.excess(x); - if (a != b) - die_mismatch(seed_info, bits, "excess", {std::to_string(x)}, std::to_string(a), std::to_string(b)); - } - break; - case 7: - { // fwdsearch - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - auto a = nv.fwdsearch(start, d); - auto b = rm.fwdsearch(start, d); - if (a != b) - die_mismatch(seed_info, bits, "fwdsearch", {std::to_string(start), std::to_string(d)}, show_sz_or_npos(a), show_sz_or_npos(b)); + { + SCOPED_TRACE(::testing::Message() << "short-inputs:words bits=" << bits); + run_case_and_compare(bits, rng, /*ops_per_case=*/200, /*seed=*/0xC0FFEEull); } + } + } +} + +static void run_case_string_vs_words(const std::string &bits, std::mt19937_64 &rng) +{ + const size_t N = bits.size(); + pixie::RmMTree rm_s(bits); + auto words = pack_words_lsb_first(bits); + pixie::RmMTree rm_w(words, N); + + std::uniform_int_distribution pos_i(0, N); + std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); + std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); + + for (int t = 0; t < 128; ++t) + { + int which = std::uniform_int_distribution(0, 10)(rng); + size_t i = 0, j = 0; + if (N > 0) + { + i = pos_i_nz(rng); + j = pos_i_nz(rng); + if (i > j) + std::swap(i, j); + } + switch (which) + { + case 0: + { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.rank1(x), rm_w.rank1(x)); break; - case 8: - { // bwdsearch - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - auto a = nv.bwdsearch(start, d); - auto b = rm.bwdsearch(start, d); - if (a != b) - die_mismatch(seed_info, bits, "bwdsearch", {std::to_string(start), std::to_string(d)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 1: + { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.rank0(x), rm_w.rank0(x)); break; - case 9: - { // range_min_query_pos - if (N == 0) - break; - auto a = nv.range_min_query_pos(i, j); - auto b = rm.range_min_query_pos(i, j); - if (a != b) - die_mismatch(seed_info, bits, "range_min_query_pos", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 2: + { + size_t k = std::uniform_int_distribution(0, N + 3)(rng); + EXPECT_EQ(rm_s.select1(k), rm_w.select1(k)); break; - case 10: - { // range_min_query_val - if (N == 0) - break; - auto a = nv.range_min_query_val(i, j); - auto b = rm.range_min_query_val(i, j); - if (a != b) - die_mismatch(seed_info, bits, "range_min_query_val", {std::to_string(i), std::to_string(j)}, std::to_string(a), std::to_string(b)); - } + } + case 3: + { + size_t k = std::uniform_int_distribution(0, N + 3)(rng); + EXPECT_EQ(rm_s.select0(k), rm_w.select0(k)); break; - case 11: - { // mincount - if (N == 0) - break; - auto a = nv.mincount(i, j); - auto b = rm.mincount(i, j); - if (a != b) - die_mismatch(seed_info, bits, "mincount", {std::to_string(i), std::to_string(j)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 4: + { + size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); + EXPECT_EQ(rm_s.rank10(x), rm_w.rank10(x)); break; - case 12: - { // minselect - if (N == 0) - break; - size_t cnt = nv.mincount(i, j); - size_t k = cnt == 0 ? 1 : std::uniform_int_distribution(1, cnt + 1)(rng); - auto a = nv.minselect(i, j, k); - auto b = rm.minselect(i, j, k); - if (a != b) - die_mismatch(seed_info, bits, "minselect", {std::to_string(i), std::to_string(j), std::to_string(k)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 5: + { + size_t k = std::uniform_int_distribution(0, N)(rng); + EXPECT_EQ(rm_s.select10(k), rm_w.select10(k)); break; - case 13: - { // range_max_query_pos - if (N == 0) - break; - auto a = nv.range_max_query_pos(i, j); - auto b = rm.range_max_query_pos(i, j); - if (a != b) - die_mismatch(seed_info, bits, "range_max_query_pos", - {std::to_string(i), std::to_string(j)}, - show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 6: + { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.excess(x), rm_w.excess(x)); break; - case 14: - { // range_max_query_val - if (N == 0) - break; - auto a = nv.range_max_query_val(i, j); - auto b = rm.range_max_query_val(i, j); - if (a != b) - die_mismatch(seed_info, bits, "range_max_query_val", - {std::to_string(i), std::to_string(j)}, - std::to_string(a), std::to_string(b)); - } + } + case 7: + { + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + EXPECT_EQ(rm_s.fwdsearch(start, d), rm_w.fwdsearch(start, d)); break; - case 15: - { // close - if (N == 0) - break; - size_t x = pos_i_nz(rng); // i in [0..N-1] - auto a = nv.close(x); - auto b = rm.close(x); - if (a != b) - die_mismatch(seed_info, bits, "close", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 8: + { + if (N == 0) + break; + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + EXPECT_EQ(rm_s.bwdsearch(start, d), rm_w.bwdsearch(start, d)); break; - case 16: - { // open - if (N == 0) - break; - size_t x = pos_i(rng); - auto a = nv.open(x); - auto b = rm.open(x); - if (a != b) - die_mismatch(seed_info, bits, "open", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 9: + { + if (N == 0) + break; + EXPECT_EQ(rm_s.range_min_query_pos(i, j), rm_w.range_min_query_pos(i, j)); break; - case 17: - { // enclose - if (N == 0) - break; - size_t x = pos_i(rng); - auto a = nv.enclose(x); - auto b = rm.enclose(x); - if (a != b) - die_mismatch(seed_info, bits, "enclose", {std::to_string(x)}, show_sz_or_npos(a), show_sz_or_npos(b)); - } + } + case 10: + { + if (N == 0) + break; + EXPECT_EQ(rm_s.range_max_query_pos(i, j), rm_w.range_max_query_pos(i, j)); break; - } } + } + } +} + +TEST_F(RmMRandomTest, WordsVsString) +{ + std::uniform_int_distribution len_u(0, (int)L.MAX_N); + for (size_t t = 0; t < L.CASES; ++t) + { + const size_t n = (size_t)len_u(rng); + const std::string bits = random_bits(rng, n); + run_case_string_vs_words(bits, rng); + } +} + +TEST(RmMEdgeCases, EmptyInput) +{ + pixie::RmMTree rm(std::string{}); + NaiveRmM nv(std::string{}); + EXPECT_EQ(rm.rank1(0), nv.rank1(0)); + EXPECT_EQ(rm.rank0(0), nv.rank0(0)); + EXPECT_EQ(rm.rank10(0), nv.rank10(0)); + EXPECT_EQ(rm.select1(1), nv.select1(1)); + EXPECT_EQ(rm.select0(1), nv.select0(1)); + EXPECT_EQ(rm.fwdsearch(0, 0), nv.fwdsearch(0, 0)); + EXPECT_EQ(rm.bwdsearch(0, 0), nv.bwdsearch(0, 0)); + EXPECT_EQ(rm.range_min_query_pos(0, 0), nv.range_min_query_pos(0, 0)); + EXPECT_EQ(rm.range_max_query_pos(0, 0), nv.range_max_query_pos(0, 0)); +} + +TEST(RmMTreeStress, LongRandom) +{ + Limits L; + L.OPS_PER_CASE = 2000; + L.MAX_N = 65536; + + if (const char *s = std::getenv("RMM_CASES")) + L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); + if (const char *s = std::getenv("RMM_OPS")) + L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); + if (const char *s = std::getenv("RMM_MAX_N")) + L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); + + const uint64_t seed = choose_seed(); + std::mt19937_64 rng(seed); + size_t LOG_EVERY = 10; + if (const char *s = std::getenv("RMM_LOG_EVERY")) + { + size_t v = std::strtoull(s, nullptr, 10); + if (v) + LOG_EVERY = v; + } + + std::cerr << "[ LongRandom ] seed=" << seed + << " CASES=" << L.CASES + << " OPS=" << L.OPS_PER_CASE + << " MAX_N=" << L.MAX_N + << " LOG_EVERY=" << LOG_EVERY + << "\n"; + + std::uniform_int_distribution coin(0, 1); + std::uniform_int_distribution len_u(1, (int)L.MAX_N); + std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); + + size_t total_ops = 0; + + for (size_t iter = 1; iter <= L.CASES; ++iter) + { + std::string bits; + if (coin(rng) == 0) + { + bits = random_bits(rng, (size_t)len_u(rng)); + } + else + { + size_t m = 1 + (size_t)len_even(rng); + bits = random_dyck_bits(rng, m); + if (bits.empty()) + bits = "10"; + } + + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + total_ops += L.OPS_PER_CASE; if (iter % LOG_EVERY == 0) { - std::cerr << "iter=" << iter + std::cerr << "[ LongRandom ] iter=" << iter << " total_ops=" << total_ops << " last_N=" << bits.size() << " ok\n"; From 1e73689849c5a1cc201394e6ab37a8f01cb9b087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Fri, 7 Nov 2025 01:02:05 +0300 Subject: [PATCH 11/14] resolved merge conflict with gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 146ac41..f0a51cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build/ .vscode/ Testing/ +plans/* venv/ From 626de262bbdc14efae001c26afe7e9b3870ce11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=B1=D0=B5=D1=80=D1=82=20=D0=A1=D0=BC=D0=B0?= =?UTF-8?q?=D0=B9=D1=82?= Date: Fri, 7 Nov 2025 01:18:48 +0300 Subject: [PATCH 12/14] clang formatting --- include/misc/naive_rmm_tree.h | 475 ++-- include/rmm_tree.h | 4109 ++++++++++++++++----------------- src/bench_rmm.cpp | 806 +++---- src/test_rmm.cpp | 1053 ++++----- 4 files changed, 3191 insertions(+), 3252 deletions(-) diff --git a/include/misc/naive_rmm_tree.h b/include/misc/naive_rmm_tree.h index ba7c0e2..79ecfe9 100644 --- a/include/misc/naive_rmm_tree.h +++ b/include/misc/naive_rmm_tree.h @@ -1,278 +1,279 @@ #pragma once -#include -#include +#include #include #include -#include +#include +#include -class NaiveRmM -{ - std::vector bits; - std::size_t num_bits = 0; +class NaiveRmM { + std::vector bits; + std::size_t num_bits = 0; -public: - static constexpr std::size_t npos = std::numeric_limits::max(); + public: + static constexpr std::size_t npos = std::numeric_limits::max(); - NaiveRmM() = default; - explicit NaiveRmM(const std::string &s) { build_from_string(s); } - NaiveRmM(const std::vector &words, std::size_t nbits) { build_from_words(words, nbits); } + NaiveRmM() = default; + explicit NaiveRmM(const std::string& s) { build_from_string(s); } + NaiveRmM(const std::vector& words, std::size_t nbits) { + build_from_words(words, nbits); + } -private: - void build_from_string(const std::string &s) - { - num_bits = s.size(); - bits.resize(num_bits); - for (std::size_t i = 0; i < num_bits; i++) - bits[i] = (s[i] == '1'); - } - void build_from_words(const std::vector &words, std::size_t nbits) - { - num_bits = nbits; - bits.assign(num_bits, 0); - for (std::size_t i = 0; i < num_bits; i++) - { - const std::size_t w = (i >> 6); - bits[i] = static_cast(((w < words.size() ? words[w] : 0ull) >> (i & 63)) & 1u); - } + private: + void build_from_string(const std::string& s) { + num_bits = s.size(); + bits.resize(num_bits); + for (std::size_t i = 0; i < num_bits; i++) { + bits[i] = (s[i] == '1'); } + } + void build_from_words(const std::vector& words, + std::size_t nbits) { + num_bits = nbits; + bits.assign(num_bits, 0); + for (std::size_t i = 0; i < num_bits; i++) { + const std::size_t w = (i >> 6); + bits[i] = static_cast( + ((w < words.size() ? words[w] : 0ull) >> (i & 63)) & 1u); + } + } - inline int bit(std::size_t i) const { return bits[i]; } - -public: - std::size_t rank1(std::size_t i) const - { - if (i > num_bits) - i = num_bits; - std::size_t c = 0; - for (std::size_t p = 0; p < i; p++) - c += (bits[p] != 0); - return c; - } - std::size_t rank0(std::size_t i) const { return i - rank1(i); } + inline int bit(std::size_t i) const { return bits[i]; } - // 1-based - std::size_t select1(std::size_t k) const - { - if (k == 0) - return npos; - for (std::size_t p = 0; p < num_bits; p++) - if (bits[p]) - { - if (--k == 0) - return p; - } - return npos; + public: + std::size_t rank1(std::size_t i) const { + if (i > num_bits) { + i = num_bits; } - - // 1-based - std::size_t select0(std::size_t k) const - { - if (k == 0) - return npos; - for (std::size_t p = 0; p < num_bits; p++) - if (!bits[p]) - { - if (--k == 0) - return p; - } - return npos; + std::size_t c = 0; + for (std::size_t p = 0; p < i; p++) { + c += (bits[p] != 0); } + return c; + } + std::size_t rank0(std::size_t i) const { return i - rank1(i); } - std::size_t rank10(std::size_t i) const - { - if (i <= 1) - return 0; - std::size_t c = 0; - for (std::size_t p = 0; p + 1 < i; ++p) - if (bits[p] == 1 && bits[p + 1] == 0) - ++c; - return c; + // 1-based + std::size_t select1(std::size_t k) const { + if (k == 0) { + return npos; } - - // 1-based - std::size_t select10(std::size_t k) const - { - if (k == 0) - return npos; - for (std::size_t p = 0; p + 1 < num_bits; ++p) - if (bits[p] == 1 && bits[p + 1] == 0) - { - if (--k == 0) - return p; - } - return npos; + for (std::size_t p = 0; p < num_bits; p++) { + if (bits[p]) { + if (--k == 0) { + return p; + } + } } + return npos; + } - int excess(std::size_t i) const - { + // 1-based + std::size_t select0(std::size_t k) const { + if (k == 0) { + return npos; + } + for (std::size_t p = 0; p < num_bits; p++) { + if (!bits[p]) { + if (--k == 0) { + return p; + } + } + } + return npos; + } - return int(2 * static_cast(rank1(i)) - static_cast(i)); + std::size_t rank10(std::size_t i) const { + if (i <= 1) { + return 0; } + std::size_t c = 0; + for (std::size_t p = 0; p + 1 < i; ++p) { + if (bits[p] == 1 && bits[p + 1] == 0) { + ++c; + } + } + return c; + } - std::size_t fwdsearch(std::size_t i, int d) const - { - if (i >= num_bits) - return npos; - int target = excess(i) + d; - int cur = excess(i); - for (std::size_t p = i; p < num_bits; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur == target) - return p; + // 1-based + std::size_t select10(std::size_t k) const { + if (k == 0) { + return npos; + } + for (std::size_t p = 0; p + 1 < num_bits; ++p) { + if (bits[p] == 1 && bits[p + 1] == 0) { + if (--k == 0) { + return p; } - return npos; + } } + return npos; + } - std::size_t bwdsearch(std::size_t i, int d) const - { + int excess(std::size_t i) const { + return int(2 * static_cast(rank1(i)) - + static_cast(i)); + } - if (i > num_bits) - return npos; - if (i == 0) - return npos; - int target = excess(i) + d; + std::size_t fwdsearch(std::size_t i, int d) const { + if (i >= num_bits) { + return npos; + } + int target = excess(i) + d; + int cur = excess(i); + for (std::size_t p = i; p < num_bits; ++p) { + cur += bits[p] ? +1 : -1; + if (cur == target) { + return p; + } + } + return npos; + } - int cur = excess(i); - for (std::size_t p = i; p > 0;) - { - --p; - cur += bits[p] ? -1 : +1; - if (cur == target) - return p; - } - return npos; + std::size_t bwdsearch(std::size_t i, int d) const { + if (i > num_bits) { + return npos; } + if (i == 0) { + return npos; + } + int target = excess(i) + d; - std::size_t range_min_query_pos(std::size_t i, std::size_t j) const - { - if (i > j || j >= num_bits) - return npos; - int cur = 0, mn = std::numeric_limits::max(); - std::size_t pos = npos; - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur < mn) - { - mn = cur; - pos = p; - } - } - return pos; + int cur = excess(i); + for (std::size_t p = i; p > 0;) { + --p; + cur += bits[p] ? -1 : +1; + if (cur == target) { + return p; + } } + return npos; + } - int range_min_query_val(std::size_t i, std::size_t j) const - { - if (i > j || j >= num_bits) - return 0; - int cur = 0, mn = std::numeric_limits::max(); - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur < mn) - mn = cur; - } - return mn; + std::size_t range_min_query_pos(std::size_t i, std::size_t j) const { + if (i > j || j >= num_bits) { + return npos; } + int cur = 0, mn = std::numeric_limits::max(); + std::size_t pos = npos; + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur < mn) { + mn = cur; + pos = p; + } + } + return pos; + } - std::size_t range_max_query_pos(std::size_t i, std::size_t j) const - { - if (i > j || j >= num_bits) - return npos; - int cur = 0, mx = std::numeric_limits::min(); - std::size_t pos = npos; - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur > mx) - { - mx = cur; - pos = p; - } - } - return pos; + int range_min_query_val(std::size_t i, std::size_t j) const { + if (i > j || j >= num_bits) { + return 0; } + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur < mn) { + mn = cur; + } + } + return mn; + } - int range_max_query_val(std::size_t i, std::size_t j) const - { - if (i > j || j >= num_bits) - return 0; - int cur = 0, mx = std::numeric_limits::min(); - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur > mx) - mx = cur; - } - return mx; + std::size_t range_max_query_pos(std::size_t i, std::size_t j) const { + if (i > j || j >= num_bits) { + return npos; + } + int cur = 0, mx = std::numeric_limits::min(); + std::size_t pos = npos; + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur > mx) { + mx = cur; + pos = p; + } } + return pos; + } - std::size_t mincount(std::size_t i, std::size_t j) const - { - if (i > j || j >= num_bits) - return 0; - int cur = 0, mn = std::numeric_limits::max(); - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur < mn) - mn = cur; - } - std::size_t cnt = 0; - cur = 0; - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur == mn) - ++cnt; - } - return cnt; + int range_max_query_val(std::size_t i, std::size_t j) const { + if (i > j || j >= num_bits) { + return 0; } + int cur = 0, mx = std::numeric_limits::min(); + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur > mx) { + mx = cur; + } + } + return mx; + } - // (1-based q) - std::size_t minselect(std::size_t i, std::size_t j, std::size_t q) const - { - if (i > j || j >= num_bits || q == 0) - return npos; - int cur = 0, mn = std::numeric_limits::max(); - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur < mn) - mn = cur; - } - cur = 0; - for (std::size_t p = i; p <= j; ++p) - { - cur += bits[p] ? +1 : -1; - if (cur == mn) - { - if (--q == 0) - return p; - } + std::size_t mincount(std::size_t i, std::size_t j) const { + if (i > j || j >= num_bits) { + return 0; + } + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur < mn) { + mn = cur; + } + } + std::size_t cnt = 0; + cur = 0; + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur == mn) { + ++cnt; + } + } + return cnt; + } + + // (1-based q) + std::size_t minselect(std::size_t i, std::size_t j, std::size_t q) const { + if (i > j || j >= num_bits || q == 0) { + return npos; + } + int cur = 0, mn = std::numeric_limits::max(); + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur < mn) { + mn = cur; + } + } + cur = 0; + for (std::size_t p = i; p <= j; ++p) { + cur += bits[p] ? +1 : -1; + if (cur == mn) { + if (--q == 0) { + return p; } - return npos; + } } + return npos; + } - std::size_t close(std::size_t i) const - { - if (i >= num_bits) - return npos; - return fwdsearch(i, -1); - } - std::size_t open(std::size_t i) const - { - if (i == 0 || i > num_bits) - return npos; - auto r = bwdsearch(i, 0); - return (r == npos ? npos : r + 1); - } - std::size_t enclose(std::size_t i) const - { - if (i == 0 || i > num_bits) - return npos; - auto r = bwdsearch(i, -2); - return (r == npos ? npos : r + 1); + std::size_t close(std::size_t i) const { + if (i >= num_bits) { + return npos; + } + return fwdsearch(i, -1); + } + std::size_t open(std::size_t i) const { + if (i == 0 || i > num_bits) { + return npos; + } + auto r = bwdsearch(i, 0); + return (r == npos ? npos : r + 1); + } + std::size_t enclose(std::size_t i) const { + if (i == 0 || i > num_bits) { + return npos; } + auto r = bwdsearch(i, -2); + return (r == npos ? npos : r + 1); + } }; diff --git a/include/rmm_tree.h b/include/rmm_tree.h index df4f612..263b668 100644 --- a/include/rmm_tree.h +++ b/include/rmm_tree.h @@ -2,2139 +2,2088 @@ #include #include #include +#include #include #include -#include #include #include #include -namespace pixie -{ - /** - * @brief Range min–max tree over a bitvector (LSB-first) tailored for balanced-parentheses (BP). - * @details - * Implements the classic rmq/rMq family and BP navigation in O(log n) - * using a perfectly balanced binary tree of blocks. Supported queries: - * - rank1 / rank0 - * - select1 / select0 - * - rank10 / select10 (starts of "10") - * - excess (prefix +1 for '1', −1 for '0') - * - fwdsearch / bwdsearch (prefix–sum search) - * - range_min_query_pos / range_min_query_val (first minimum within a range) - * - range_max_query_pos / range_max_query_val (first maximum within a range) - * - mincount / minselect (count/selection of minima) - * - close / open / enclose (BP navigation) - * - * The bitvector is LSB-first inside each 64-bit word. - */ - class RmMTree - { - // ------------ bitvector ------------ - std::vector bits; // LSB-first - size_t num_bits = 0; // number of bits - - // ------------ blocking ------------ - size_t block_bits = 64; // block size (bits), leaf covers <= block_bits bits - size_t leaf_count = 0; // #leaves = ceil(num_bits/block_bits) - - // ------------ tree arrays (heap order: 1 is root) ------------ - // size of segment (in bits) covered by node - // needed for: rank1/rank0, select1/select0, select10, - // excess, fwdsearch/bwdsearch/close/open/enclose, - // range_min_query/range_max_query, minselect. - std::vector segment_size_bits; - - // node_total_excess = total excess (+1 for '1', -1 for '0') on the node - // needed for: rank1/rank0, select1/select0, excess, - // fwdsearch/bwdsearch/close/open/enclose, - // range_min_query/range_max_query, mincount/minselect. - std::vector node_total_excess; - - // node_min_prefix_excess = minimum pref-excess on the node (from 0) - // needed for: fwdsearch/bwdsearch/close/open/enclose, range_min_query, mincount/minselect. - std::vector node_min_prefix_excess; - - // node_max_prefix_excess = maximum pref-excess on the node (from 0) - // needed for: fwdsearch/bwdsearch/close/open/enclose, range_max_query. - std::vector node_max_prefix_excess; - - // node_min_count = number of positions where the minimum is attained - // needed for: mincount/minselect. - std::vector node_min_count; - - // node_pattern10_count = # of "10" pattern occurrences inside the node - // needed for: rank10, select10. - std::vector node_pattern10_count; - - // node_first_bit = first bit (0/1), node_last_bit = last bit (0/1) of the segment (to handle "10" crossing) - // both needed for: rank10, select10. - std::vector node_first_bit, node_last_bit; - - public: - /** - * @brief Sentinel for "not found". - */ - static constexpr size_t npos = std::numeric_limits::max(); +namespace pixie { +/** + * @brief Range min–max tree over a bitvector (LSB-first) tailored for + * balanced-parentheses (BP). + * @details + * Implements the classic rmq/rMq family and BP navigation in O(log n) + * using a perfectly balanced binary tree of blocks. Supported queries: + * - rank1 / rank0 + * - select1 / select0 + * - rank10 / select10 (starts of "10") + * - excess (prefix +1 for '1', −1 for '0') + * - fwdsearch / bwdsearch (prefix–sum search) + * - range_min_query_pos / range_min_query_val (first minimum within a range) + * - range_max_query_pos / range_max_query_val (first maximum within a range) + * - mincount / minselect (count/selection of minima) + * - close / open / enclose (BP navigation) + * + * The bitvector is LSB-first inside each 64-bit word. + */ +class RmMTree { + // ------------ bitvector ------------ + std::vector bits; // LSB-first + size_t num_bits = 0; // number of bits + + // ------------ blocking ------------ + size_t block_bits = 64; // block size (bits), leaf covers <= block_bits bits + size_t leaf_count = 0; // #leaves = ceil(num_bits/block_bits) + + // ------------ tree arrays (heap order: 1 is root) ------------ + // size of segment (in bits) covered by node + // needed for: rank1/rank0, select1/select0, select10, + // excess, fwdsearch/bwdsearch/close/open/enclose, + // range_min_query/range_max_query, minselect. + std::vector segment_size_bits; + + // node_total_excess = total excess (+1 for '1', -1 for '0') on the node + // needed for: rank1/rank0, select1/select0, excess, + // fwdsearch/bwdsearch/close/open/enclose, + // range_min_query/range_max_query, mincount/minselect. + std::vector node_total_excess; + + // node_min_prefix_excess = minimum pref-excess on the node (from 0) + // needed for: fwdsearch/bwdsearch/close/open/enclose, range_min_query, + // mincount/minselect. + std::vector node_min_prefix_excess; + + // node_max_prefix_excess = maximum pref-excess on the node (from 0) + // needed for: fwdsearch/bwdsearch/close/open/enclose, range_max_query. + std::vector node_max_prefix_excess; + + // node_min_count = number of positions where the minimum is attained + // needed for: mincount/minselect. + std::vector node_min_count; + + // node_pattern10_count = # of "10" pattern occurrences inside the node + // needed for: rank10, select10. + std::vector node_pattern10_count; + + // node_first_bit = first bit (0/1), node_last_bit = last bit (0/1) of the + // segment (to handle "10" crossing) both needed for: rank10, select10. + std::vector node_first_bit, node_last_bit; + + public: + /** + * @brief Sentinel for "not found". + */ + static constexpr size_t npos = std::numeric_limits::max(); #ifdef DEBUG - float built_overhead = 0.0; + float built_overhead = 0.0; #endif - // --------- construction ---------- - - /** - * @brief Construct empty structure. - */ - RmMTree() = default; - - /** - * @brief Build from a '0'/'1' string. - * @param bp Bitstring (characters '0' and '1'). - * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). - * @param max_overhead Max allowed overhead fraction (<0 to disable constraint). - * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p leaf_block_bits, - * (3) set to ceil_pow2(log2(num_bits)). - */ - explicit RmMTree(const std::string &bp, - const size_t &leaf_block_bits /*0=auto*/ = 0, - const float &max_overhead /*<0=off*/ = -1.0) - { - build_from_string(bp, leaf_block_bits, max_overhead); + // --------- construction ---------- + + /** + * @brief Construct empty structure. + */ + RmMTree() = default; + + /** + * @brief Build from a '0'/'1' string. + * @param bp Bitstring (characters '0' and '1'). + * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). + * @param max_overhead Max allowed overhead fraction (<0 to disable + * constraint). + * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p + * leaf_block_bits, (3) set to ceil_pow2(log2(num_bits)). + */ + explicit RmMTree(const std::string& bp, + const size_t& leaf_block_bits /*0=auto*/ = 0, + const float& max_overhead /*<0=off*/ = -1.0) { + build_from_string(bp, leaf_block_bits, max_overhead); + } + + /** + * @brief Build from 64-bit words (LSB-first). + * @param words Array of words holding bits LSB-first. + * @param Nbits Number of valid bits. + * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). + * @param max_overhead Max allowed overhead fraction (<0 to disable + * constraint). + * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p + * leaf_block_bits, (3) set to ceil_pow2(log2(num_bits)). + */ + explicit RmMTree(const std::vector& words, + size_t Nbits, + const size_t& leaf_block_bits /*0=auto*/ = 0, + const float& max_overhead /*<0=off*/ = -1.0) { + build_from_words(words, Nbits, leaf_block_bits, max_overhead); + } + + // --------- queries: rank/select/excess ---------- + + /** + * @brief Number of ones in prefix [0, i). + * @details Returns 0 for i==0. Complexity: O(log n) with small constants. + */ + size_t rank1(const size_t& i) const { + if (i == 0) { + return 0; + } + const size_t blk = block_of(i - 1); + size_t ans = 0; + if (blk > 0) { + const auto nodes = cover_blocks(0, blk - 1); + for (const size_t& v : nodes) { + ans += ones_in_node(v); + } + } + const size_t Lb = blk * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); + ans += rank1_in_block(Lb, std::min(i, Rb)); + return ans; + } + + /** + * @brief Number of zeros in prefix [0, i). + * @details Computed as i - rank1(i). + */ + size_t rank0(const size_t& i) const { return i - rank1(i); } + + /** + * @brief 1-based select of the k-th one. + * @return Position of k-th '1' or npos if not found. + */ + size_t select1(size_t k) const { + if (k == 0 || num_bits == 0) { + return npos; + } + size_t v = 1; + if (ones_in_node(v) < k) { + return npos; + } + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1, Rc = Lc | 1; + const uint32_t o_l = ones_in_node(Lc); + if (o_l >= k) { + v = Lc; + } else { + k -= o_l; + base += segment_size_bits[Lc]; + v = Rc; + } + } + return select1_in_block(base, + std::min(base + segment_size_bits[v], num_bits), k); + } + + /** + * @brief 1-based select of the k-th zero. + * @return Position of k-th '0' or npos if not found. + */ + size_t select0(size_t k) const { + if (k == 0 || num_bits == 0) { + return npos; + } + size_t v = 1; + const auto zeros = [&](const size_t& x) noexcept { + return segment_size_bits[x] - ones_in_node(x); + }; + if (zeros(v) < k) { + return npos; + } + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1, Rc = Lc | 1; + const size_t z_l = zeros(Lc); + if (z_l >= k) { + v = Lc; + } else { + k -= z_l; + base += segment_size_bits[Lc]; + v = Rc; + } + } + return select0_in_block(base, + std::min(base + segment_size_bits[v], num_bits), k); + } + + /** + * @brief Rank of the pattern "10" (starts) within [0, i). + * @details Counts p where bit[p]==1 and bit[p+1]==0 with p+1 0) { + const auto nodes = cover_blocks(0, blk - 1); + for (const size_t& v : nodes) { + ans += node_pattern10_count[v]; + if (prev_last != -1 && prev_last == 1 && node_first_bit[v] == 0) { + ++ans; } - - /** - * @brief Build from 64-bit words (LSB-first). - * @param words Array of words holding bits LSB-first. - * @param Nbits Number of valid bits. - * @param leaf_block_bits Desired leaf size (power of two, 0 = auto). - * @param max_overhead Max allowed overhead fraction (<0 to disable constraint). - * @details Block size priority: (1) respect @p max_overhead, (2) explicit @p leaf_block_bits, - * (3) set to ceil_pow2(log2(num_bits)). - */ - explicit RmMTree(const std::vector &words, size_t Nbits, - const size_t &leaf_block_bits /*0=auto*/ = 0, - const float &max_overhead /*<0=off*/ = -1.0) - { - build_from_words(words, Nbits, leaf_block_bits, max_overhead); + prev_last = node_last_bit[v]; + } + } + const size_t Lb = blk * block_bits; + ans += rr_in_block(Lb, i); + // boundary between the last full node and the leaf tail + if (blk > 0 && i > Lb && prev_last == 1 && bit(Lb) == 0) { + ++ans; + } + return ans; + } + + /** + * @brief 1-based select of the k-th "10" start. + * @return Position p such that bits[p..p+1]=="10", or npos if not found. + */ + size_t select10(size_t k) const { + if (k == 0 || num_bits == 0) { + return npos; + } + size_t ind = 1; + if (node_pattern10_count[ind] < k) { + return npos; + } + size_t base = 0; + const size_t leaf0 = first_leaf_index(); + while (ind < leaf0) { + const size_t Lc = ind << 1, Rc = Lc | 1; + const size_t cross = + (node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u; + if (node_pattern10_count[Lc] >= k) { + ind = Lc; + continue; + } + size_t rem = k - node_pattern10_count[Lc]; + if (cross) { + if (rem == 1) { + return base + segment_size_bits[Lc] - 1; } - - // --------- queries: rank/select/excess ---------- - - /** - * @brief Number of ones in prefix [0, i). - * @details Returns 0 for i==0. Complexity: O(log n) with small constants. - */ - size_t rank1(const size_t &i) const - { - if (i == 0) - return 0; - const size_t blk = block_of(i - 1); - size_t ans = 0; - if (blk > 0) - { - const auto nodes = cover_blocks(0, blk - 1); - for (const size_t &v : nodes) - ans += ones_in_node(v); - } - const size_t Lb = blk * block_bits; - const size_t Rb = std::min(num_bits, Lb + block_bits); - ans += rank1_in_block(Lb, std::min(i, Rb)); - return ans; - } - - /** - * @brief Number of zeros in prefix [0, i). - * @details Computed as i - rank1(i). - */ - size_t rank0(const size_t &i) const - { - return i - rank1(i); + --rem; + } + base += segment_size_bits[Lc]; + ind = Rc; + k = rem; + } + return select10_in_block( + base, std::min(base + segment_size_bits[ind], num_bits), k); + } + + /** + * @brief Prefix excess on [0, i): +1 for '1', −1 for '0'. + */ + inline int excess(const size_t& i) const { + return int64_t(rank1(i)) * 2 - int64_t(i); + } + + /** + * @brief Forward search: first position p ≥ i where excess(p) = excess(i) + + * d. + * @details Scans remainder of current leaf, then descends using precomputed + * bounds. Returns npos if no such position exists. + */ + size_t fwdsearch(const size_t& i, const int& d) const { + if (i >= num_bits) { + return npos; + } + + const int start_excess = excess(i); + const int target = start_excess + d; + + // 1) scan the remainder of the current leaf + const size_t blk = block_of(i); + const size_t Lb = blk * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); + int cur = start_excess; + for (size_t p = i; p < Rb; ++p) { + cur += bit(p) ? +1 : -1; + if (cur == target) { + return p; + } + } + + // 2) suffix after the leaf: cover full blocks [blk+1 .. leaf_count-1] + const int excess_at_Rb = excess(Rb); + int need = target - excess_at_Rb; // target expressed in coordinates of the + // current node start + if (blk + 1 <= (leaf_count ? leaf_count - 1 : 0)) { + const auto nodes = cover_blocks(blk + 1, leaf_count - 1); + size_t base = (blk + 1) * block_bits; + for (const size_t& v : nodes) { + if (need == 0) { + return base; } - - /** - * @brief 1-based select of the k-th one. - * @return Position of k-th '1' or npos if not found. - */ - size_t select1(size_t k) const - { - if (k == 0 || num_bits == 0) - return npos; - size_t v = 1; - if (ones_in_node(v) < k) - return npos; - size_t base = 0; - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1, Rc = Lc | 1; - const uint32_t o_l = ones_in_node(Lc); - if (o_l >= k) - { - v = Lc; - } - else - { - k -= o_l; - base += segment_size_bits[Lc]; - v = Rc; - } - } - return select1_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); + if (node_min_prefix_excess[v] <= need && + need <= node_max_prefix_excess[v]) { + return descend_fwd(v, need, base); } - - /** - * @brief 1-based select of the k-th zero. - * @return Position of k-th '0' or npos if not found. - */ - size_t select0(size_t k) const - { - if (k == 0 || num_bits == 0) - return npos; - size_t v = 1; - const auto zeros = [&](const size_t &x) noexcept - { - return segment_size_bits[x] - ones_in_node(x); - }; - if (zeros(v) < k) - return npos; - size_t base = 0; - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1, Rc = Lc | 1; - const size_t z_l = zeros(Lc); - if (z_l >= k) - { - v = Lc; - } - else - { - k -= z_l; - base += segment_size_bits[Lc]; - v = Rc; - } - } - return select0_in_block(base, std::min(base + segment_size_bits[v], num_bits), k); - } - - /** - * @brief Rank of the pattern "10" (starts) within [0, i). - * @details Counts p where bit[p]==1 and bit[p+1]==0 with p+1 0) - { - const auto nodes = cover_blocks(0, blk - 1); - for (const size_t &v : nodes) - { - ans += node_pattern10_count[v]; - if (prev_last != -1 && prev_last == 1 && node_first_bit[v] == 0) - ++ans; - prev_last = node_last_bit[v]; - } - } - const size_t Lb = blk * block_bits; - ans += rr_in_block(Lb, i); - // boundary between the last full node and the leaf tail - if (blk > 0 && i > Lb && prev_last == 1 && bit(Lb) == 0) - ++ans; + need -= node_total_excess[v]; + base += segment_size_bits[v]; + } + } + return npos; + } + + /** + * @brief Backward search: last position p ≤ i where excess(p) = excess(i) + + * d. + * @details Scans inside the leaf to the left, then climbs to examine left + * siblings. Returns npos if no such position exists. + */ + size_t bwdsearch(const size_t& i, const int& d) const { + if (i > num_bits || i == 0) { + return npos; + } + const int start_excess = excess(i); + const int target = start_excess + d; + + // 1) scan inside the block + const size_t blk = block_of(i - 1); + const size_t Lb = blk * block_bits; + int cur = start_excess; + for (size_t p = i; p > Lb;) { + --p; + cur += bit(p) ? -1 : +1; + if (cur == target) { + return p; + } + if (p == 0) { + break; + } + } + const int excess_at_Lb = excess(Lb); + if (Lb < i && excess_at_Lb == target) { + return Lb; + } + + // 2) climb up + int need = target - excess_at_Lb; + size_t v = leaf_index_of(Lb); + size_t base = Lb; + while (v > 1) { + if (v & 1) { // v is the right child + const size_t sib = v ^ 1; // left sibling + const size_t border = + base; // right border of the sibling (== start(v)) + const int need_node = + need + node_total_excess[sib]; // target in coordinates relative to + // the start of sib + const bool allow_rb = (border != i); // j must be < i + + // try inside the sibling, but return only if a position is found + if (need_node == 0 || (node_min_prefix_excess[sib] <= need_node && + need_node <= node_max_prefix_excess[sib])) { + const size_t ans = descend_bwd(sib, border - segment_size_bits[sib], + need_node, border, allow_rb); + if (ans != npos) { return ans; + } } - - /** - * @brief 1-based select of the k-th "10" start. - * @return Position p such that bits[p..p+1]=="10", or npos if not found. - */ - size_t select10(size_t k) const - { - if (k == 0 || num_bits == 0) - return npos; - size_t ind = 1; - if (node_pattern10_count[ind] < k) - return npos; - size_t base = 0; - const size_t leaf0 = first_leaf_index(); - while (ind < leaf0) - { - const size_t Lc = ind << 1, Rc = Lc | 1; - const size_t cross = (node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u; - if (node_pattern10_count[Lc] >= k) - { - ind = Lc; - continue; - } - size_t rem = k - node_pattern10_count[Lc]; - if (cross) - { - if (rem == 1) - return base + segment_size_bits[Lc] - 1; - --rem; - } - base += segment_size_bits[Lc]; - ind = Rc; - k = rem; - } - return select10_in_block(base, std::min(base + segment_size_bits[ind], num_bits), k); - } - - /** - * @brief Prefix excess on [0, i): +1 for '1', −1 for '0'. - */ - inline int excess(const size_t &i) const - { - return int64_t(rank1(i)) * 2 - int64_t(i); - } - - /** - * @brief Forward search: first position p ≥ i where excess(p) = excess(i) + d. - * @details Scans remainder of current leaf, then descends using precomputed bounds. - * Returns npos if no such position exists. - */ - size_t fwdsearch(const size_t &i, const int &d) const - { - if (i >= num_bits) - return npos; - - const int start_excess = excess(i); - const int target = start_excess + d; - - // 1) scan the remainder of the current leaf - const size_t blk = block_of(i); - const size_t Lb = blk * block_bits; - const size_t Rb = std::min(num_bits, Lb + block_bits); - int cur = start_excess; - for (size_t p = i; p < Rb; ++p) - { - cur += bit(p) ? +1 : -1; - if (cur == target) - return p; - } - - // 2) suffix after the leaf: cover full blocks [blk+1 .. leaf_count-1] - const int excess_at_Rb = excess(Rb); - int need = target - excess_at_Rb; // target expressed in coordinates of the current node start - if (blk + 1 <= (leaf_count ? leaf_count - 1 : 0)) - { - const auto nodes = cover_blocks(blk + 1, leaf_count - 1); - size_t base = (blk + 1) * block_bits; - for (const size_t &v : nodes) - { - if (need == 0) - return base; - if (node_min_prefix_excess[v] <= need && need <= node_max_prefix_excess[v]) - return descend_fwd(v, need, base); - need -= node_total_excess[v]; - base += segment_size_bits[v]; - } - } - return npos; - } - - /** - * @brief Backward search: last position p ≤ i where excess(p) = excess(i) + d. - * @details Scans inside the leaf to the left, then climbs to examine left siblings. - * Returns npos if no such position exists. - */ - size_t bwdsearch(const size_t &i, const int &d) const - { - if (i > num_bits || i == 0) - return npos; - const int start_excess = excess(i); - const int target = start_excess + d; - - // 1) scan inside the block - const size_t blk = block_of(i - 1); - const size_t Lb = blk * block_bits; - int cur = start_excess; - for (size_t p = i; p > Lb;) - { - --p; - cur += bit(p) ? -1 : +1; - if (cur == target) - return p; - if (p == 0) - break; - } - const int excess_at_Lb = excess(Lb); - if (Lb < i && excess_at_Lb == target) - return Lb; - - // 2) climb up - int need = target - excess_at_Lb; - size_t v = leaf_index_of(Lb); - size_t base = Lb; - while (v > 1) - { - if (v & 1) - { // v is the right child - const size_t sib = v ^ 1; // left sibling - const size_t border = base; // right border of the sibling (== start(v)) - const int need_node = need + node_total_excess[sib]; // target in coordinates relative to the start of sib - const bool allow_rb = (border != i); // j must be < i - - // try inside the sibling, but return only if a position is found - if (need_node == 0 || (node_min_prefix_excess[sib] <= need_node && need_node <= node_max_prefix_excess[sib])) - { - const size_t ans = descend_bwd(sib, border - segment_size_bits[sib], need_node, border, allow_rb); - if (ans != npos) - return ans; - } - // junction between children is a separate branch (allowed only if < i) - if (need_node == node_total_excess[sib] && border < i) - return border; - - // stepped over the sibling, shifted the zero point of the coordinates - need += node_total_excess[sib]; - base -= segment_size_bits[sib]; - } - v >>= 1; - } - return npos; + // junction between children is a separate branch (allowed only if < i) + if (need_node == node_total_excess[sib] && border < i) { + return border; } - /** - * @brief Position of the first minimum of excess on [i, j] (inclusive). - * @return Position of first occurrence of minimum, or npos on invalid range. - */ - size_t range_min_query_pos(const size_t &i, const size_t &j) const - { - if (i > j || j >= num_bits) - return npos; - - const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * block_bits; - const size_t Rbi = std::min(num_bits, Lbi + block_bits); - const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * block_bits; - - int best_val = INT_MAX; - size_t best_pos = npos; - size_t chosen_node = 0; - int pref = 0, pref_at_choice = 0; - - // prefix - int mn_first = INT_MAX; - size_t first_pos = npos; - const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); - if (i <= end_first) - { - first_min_value_pos8(i, end_first, mn_first, first_pos); - pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - int64_t(end_first + 1 - i); - best_val = mn_first; - best_pos = first_pos; - chosen_node = 0; - } - - // middle - const size_t leaf0 = first_leaf_index(); - if (blk_i + 1 <= blk_j - 1) - { - size_t l = leaf0 + (blk_i + 1); - size_t r = leaf0 + (blk_j - 1); - size_t Rnodes[64]; - int rn = 0; - - while (l <= r) - { - if (l & 1) - { - const size_t v = l++; - const int cand = pref + node_min_prefix_excess[v]; - if (cand < best_val) - { - best_val = cand; - best_pos = npos; - chosen_node = v; - pref_at_choice = pref; - } - pref += node_total_excess[v]; - } - if ((r & 1) == 0) - Rnodes[rn++] = r--; - l >>= 1; - r >>= 1; - } - while (rn--) - { - const size_t v = Rnodes[rn]; - const int cand = pref + node_min_prefix_excess[v]; - if (cand < best_val) - { - best_val = cand; - best_pos = npos; - chosen_node = v; - pref_at_choice = pref; - } - pref += node_total_excess[v]; - } - } - - // tail - if (blk_j != blk_i) - { - int mn_last; - size_t last_pos; - first_min_value_pos8(Lbj, j, mn_last, last_pos); - const int cand = pref + mn_last; - if (cand < best_val) - { - best_val = cand; - best_pos = last_pos; - chosen_node = 0; - } - } - - if (best_pos != npos) - return best_pos; - - return descend_first_min(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); + // stepped over the sibling, shifted the zero point of the coordinates + need += node_total_excess[sib]; + base -= segment_size_bits[sib]; + } + v >>= 1; + } + return npos; + } + + /** + * @brief Position of the first minimum of excess on [i, j] (inclusive). + * @return Position of first occurrence of minimum, or npos on invalid range. + */ + size_t range_min_query_pos(const size_t& i, const size_t& j) const { + if (i > j || j >= num_bits) { + return npos; + } + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * block_bits; + + int best_val = INT_MAX; + size_t best_pos = npos; + size_t chosen_node = 0; + int pref = 0, pref_at_choice = 0; + + // prefix + int mn_first = INT_MAX; + size_t first_pos = npos; + const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); + if (i <= end_first) { + first_min_value_pos8(i, end_first, mn_first, first_pos); + pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - + int64_t(end_first + 1 - i); + best_val = mn_first; + best_pos = first_pos; + chosen_node = 0; + } + + // middle + const size_t leaf0 = first_leaf_index(); + if (blk_i + 1 <= blk_j - 1) { + size_t l = leaf0 + (blk_i + 1); + size_t r = leaf0 + (blk_j - 1); + size_t Rnodes[64]; + int rn = 0; + + while (l <= r) { + if (l & 1) { + const size_t v = l++; + const int cand = pref + node_min_prefix_excess[v]; + if (cand < best_val) { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += node_total_excess[v]; } - - /** - * @brief Value of the minimum prefix excess on [i, j] relative to i. - * @details Equivalent to min_{t in [i..j]} (excess(t+1) - excess(i)). - */ - int range_min_query_val(const size_t &i, const size_t &j) const - { - if (i > j || j >= num_bits) - return 0; - size_t p = range_min_query_pos(i, j); - if (p == npos) - return 0; - return excess(p + 1) - excess(i); + if ((r & 1) == 0) { + Rnodes[rn++] = r--; } - - /** - * @brief Position of the first maximum of excess on [i, j] (inclusive). - * @return Position of first occurrence of maximum, or npos on invalid range. - */ - size_t range_max_query_pos(const size_t &i, const size_t &j) const - { - if (i > j || j >= num_bits) - return npos; - - const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * block_bits; - const size_t Rbi = std::min(num_bits, Lbi + block_bits); - const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * block_bits; - - int best_val = INT_MIN; - size_t best_pos = npos; - size_t chosen_node = 0; - int pref = 0, pref_at_choice = 0; - - // prefix - int mx_first = INT_MIN; - size_t first_pos = npos; - const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); - if (i <= end_first) - { - first_max_value_pos8(i, end_first, mx_first, first_pos); - pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - int64_t(end_first + 1 - i); - best_val = mx_first; - best_pos = first_pos; - chosen_node = 0; - } - - // middle - const size_t leaf0 = first_leaf_index(); - if (blk_i + 1 <= blk_j - 1) - { - size_t l = leaf0 + (blk_i + 1); - size_t r = leaf0 + (blk_j - 1); - size_t Rnodes[64]; - int rn = 0; - - while (l <= r) - { - if (l & 1) - { - const size_t v = l++; - const int cand = pref + node_max_prefix_excess[v]; - if (cand > best_val) - { - best_val = cand; - best_pos = npos; - chosen_node = v; - pref_at_choice = pref; - } - pref += node_total_excess[v]; - } - if ((r & 1) == 0) - Rnodes[rn++] = r--; - l >>= 1; - r >>= 1; - } - while (rn--) - { - const size_t v = Rnodes[rn]; - const int cand = pref + node_max_prefix_excess[v]; - if (cand > best_val) - { - best_val = cand; - best_pos = npos; - chosen_node = v; - pref_at_choice = pref; - } - pref += node_total_excess[v]; - } - } - - // tail - if (blk_j != blk_i) - { - int mx_last; - size_t last_pos; - first_max_value_pos8(Lbj, j, mx_last, last_pos); - const int cand = pref + mx_last; - if (cand > best_val) - { - best_val = cand; - best_pos = last_pos; - chosen_node = 0; - } - } - - if (best_pos != npos) - return best_pos; - - return descend_first_max(chosen_node, best_val - pref_at_choice, node_base(chosen_node)); + l >>= 1; + r >>= 1; + } + while (rn--) { + const size_t v = Rnodes[rn]; + const int cand = pref + node_min_prefix_excess[v]; + if (cand < best_val) { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; } - - /** - * @brief Value of the maximum prefix excess on [i, j] relative to i. - */ - int range_max_query_val(const size_t &i, const size_t &j) const - { - if (i > j || j >= num_bits) - return 0; - size_t p = range_max_query_pos(i, j); - if (p == npos) - return 0; - return excess(p + 1) - excess(i); + pref += node_total_excess[v]; + } + } + + // tail + if (blk_j != blk_i) { + int mn_last; + size_t last_pos; + first_min_value_pos8(Lbj, j, mn_last, last_pos); + const int cand = pref + mn_last; + if (cand < best_val) { + best_val = cand; + best_pos = last_pos; + chosen_node = 0; + } + } + + if (best_pos != npos) { + return best_pos; + } + + return descend_first_min(chosen_node, best_val - pref_at_choice, + node_base(chosen_node)); + } + + /** + * @brief Value of the minimum prefix excess on [i, j] relative to i. + * @details Equivalent to min_{t in [i..j]} (excess(t+1) - excess(i)). + */ + int range_min_query_val(const size_t& i, const size_t& j) const { + if (i > j || j >= num_bits) { + return 0; + } + size_t p = range_min_query_pos(i, j); + if (p == npos) { + return 0; + } + return excess(p + 1) - excess(i); + } + + /** + * @brief Position of the first maximum of excess on [i, j] (inclusive). + * @return Position of first occurrence of maximum, or npos on invalid range. + */ + size_t range_max_query_pos(const size_t& i, const size_t& j) const { + if (i > j || j >= num_bits) { + return npos; + } + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * block_bits; + + int best_val = INT_MIN; + size_t best_pos = npos; + size_t chosen_node = 0; + int pref = 0, pref_at_choice = 0; + + // prefix + int mx_first = INT_MIN; + size_t first_pos = npos; + const size_t end_first = std::min(j, (size_t)(Rbi ? Rbi - 1 : 0)); + if (i <= end_first) { + first_max_value_pos8(i, end_first, mx_first, first_pos); + pref = (int64_t)rank1_in_block(i, end_first + 1) * 2 - + int64_t(end_first + 1 - i); + best_val = mx_first; + best_pos = first_pos; + chosen_node = 0; + } + + // middle + const size_t leaf0 = first_leaf_index(); + if (blk_i + 1 <= blk_j - 1) { + size_t l = leaf0 + (blk_i + 1); + size_t r = leaf0 + (blk_j - 1); + size_t Rnodes[64]; + int rn = 0; + + while (l <= r) { + if (l & 1) { + const size_t v = l++; + const int cand = pref + node_max_prefix_excess[v]; + if (cand > best_val) { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; + } + pref += node_total_excess[v]; } - - /** - * @brief How many times the minimum prefix excess occurs on [i, j]. - */ - size_t mincount(const size_t &i, const size_t &j) const - { - if (i > j || j >= num_bits) - return 0; - - const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * block_bits; - const size_t Rbi = std::min(num_bits, Lbi + block_bits); - const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * block_bits; - - int best_val = INT_MAX; - size_t cnt = 0; - int pref = 0; - - // first chunk - { - int cur = 0, mn = INT_MAX, c = 0; - const size_t end = std::min(j, Rbi - 1); - for (size_t p = i; p <= end; ++p) - { - cur += bit(p) ? +1 : -1; - if (cur < mn) - { - mn = cur; - c = 1; - } - else if (cur == mn) - { - ++c; - } - } - best_val = mn; - cnt = c; - pref = cur; // offset toward the middle - } - - // middle - if (blk_i + 1 <= blk_j - 1) - { - const auto mids = cover_blocks(blk_i + 1, blk_j - 1); - for (const size_t &v : mids) - { - const int cand = pref + node_min_prefix_excess[v]; - if (cand < best_val) - { - best_val = cand; - cnt = node_min_count[v]; - } - else if (cand == best_val) - { - cnt += node_min_count[v]; - } - pref += node_total_excess[v]; - } - } - - // last chunk - if (blk_j != blk_i) - { - int cur = 0, mn = INT_MAX, c = 0; - for (size_t p = Lbj; p <= j; ++p) - { - cur += bit(p) ? +1 : -1; - if (cur < mn) - { - mn = cur; - c = 1; - } - else if (cur == mn) - { - ++c; - } - } - const int cand = pref + mn; - if (cand < best_val) - { - best_val = cand; - cnt = c; - } - else if (cand == best_val) - { - cnt += c; - } - } - return cnt; + if ((r & 1) == 0) { + Rnodes[rn++] = r--; } - - /** - * @brief Position of the q-th (1-based) occurrence of the minimum on [i, j]. - * @return Position or npos if q exceeds the number of minima. - */ - size_t minselect(const size_t &i, const size_t &j, size_t q) const - { - if (i > j || j >= num_bits || q == 0) - return npos; - - const size_t blk_i = block_of(i); - const size_t Lbi = blk_i * block_bits; - const size_t Rbi = std::min(num_bits, Lbi + block_bits); - const size_t blk_j = block_of(j); - const size_t Lbj = blk_j * block_bits; - - // prefix - const size_t end_first = std::min(j, Rbi - 1); - int cur_first = 0, mn_first = 0; - uint32_t c_first = 0; - - if (i <= end_first) - { - scan_range_min_count8(i, end_first, cur_first, mn_first, c_first); - } - else - { - cur_first = 0; - mn_first = INT_MAX; - c_first = 0; - } - - int best_val = (mn_first == INT_MAX ? INT_MAX : mn_first); - size_t total_cnt = (mn_first == INT_MAX ? 0u : (size_t)c_first); - int pref = cur_first; // offset for middle - - const size_t leaf0 = first_leaf_index(); - size_t l = leaf0 + blk_i + 1; - size_t r = leaf0 + blk_j - 1; - size_t Rnodes[64]; - int rn = 0; - - // middle - if (blk_i + 1 <= blk_j - 1) - { - while (l <= r) - { - if (l & 1) - { - const int cand = pref + node_min_prefix_excess[l]; - if (cand < best_val) - { - best_val = cand; - total_cnt = node_min_count[l]; - } - else if (cand == best_val) - { - total_cnt += node_min_count[l]; - } - pref += node_total_excess[l++]; - } - if ((r & 1) == 0) - Rnodes[rn++] = r--; - l >>= 1; - r >>= 1; - } - while (rn--) - { - const size_t v = Rnodes[rn]; - const int cand = pref + node_min_prefix_excess[v]; - if (cand < best_val) - { - best_val = cand; - total_cnt = node_min_count[v]; - } - else if (cand == best_val) - { - total_cnt += node_min_count[v]; - } - pref += node_total_excess[v]; - } - } - - // tail - int cur_last = 0, mn_last = INT_MAX; - uint32_t c_last = 0; - if (blk_j != blk_i) - { - scan_range_min_count8(Lbj, j, cur_last, mn_last, c_last); - const int cand = pref + mn_last; - if (cand < best_val) - { - best_val = cand; - total_cnt = c_last; - } - else if (cand == best_val) - { - total_cnt += c_last; - } - } - - if (q > total_cnt) - return npos; - - // prefix - if (mn_first == best_val && c_first) - { - if (q <= c_first) - return qth_min_in_block(i, end_first, q); - q -= c_first; - } - - // middle - pref = cur_first; - if (blk_i + 1 <= blk_j - 1) - { - l = leaf0 + (blk_i + 1); - r = leaf0 + (blk_j - 1); - rn = 0; - while (l <= r) - { - if (l & 1) - { - const size_t v = l++; - const int cand = pref + node_min_prefix_excess[v]; - if (cand == best_val) - { - if (q <= node_min_count[v]) - { - return descend_qth_min(v, best_val - pref, q, node_base(v)); - } - q -= node_min_count[v]; - } - pref += node_total_excess[v]; - } - if (!(r & 1)) - Rnodes[rn++] = r--; - l >>= 1; - r >>= 1; - } - while (rn--) - { - const size_t v = Rnodes[rn]; - const int cand = pref + node_min_prefix_excess[v]; - if (cand == best_val) - { - if (q <= node_min_count[v]) - { - return descend_qth_min(v, best_val - pref, q, node_base(v)); - } - q -= node_min_count[v]; - } - pref += node_total_excess[v]; - } - } - - // tail - if (blk_j != blk_i && (pref + mn_last) == best_val) - { - return qth_min_in_block(Lbj, j, q); - } - - return npos; + l >>= 1; + r >>= 1; + } + while (rn--) { + const size_t v = Rnodes[rn]; + const int cand = pref + node_max_prefix_excess[v]; + if (cand > best_val) { + best_val = cand; + best_pos = npos; + chosen_node = v; + pref_at_choice = pref; } - - // ----- parentheses navigation (BP) ----- - - /** - * @brief close(i): matching ')' for '(' at i. - * @return Position of matching ')', or npos. - */ - inline size_t close(const size_t &i) const - { - if (i >= num_bits) - return npos; - return fwdsearch(i, -1); + pref += node_total_excess[v]; + } + } + + // tail + if (blk_j != blk_i) { + int mx_last; + size_t last_pos; + first_max_value_pos8(Lbj, j, mx_last, last_pos); + const int cand = pref + mx_last; + if (cand > best_val) { + best_val = cand; + best_pos = last_pos; + chosen_node = 0; + } + } + + if (best_pos != npos) { + return best_pos; + } + + return descend_first_max(chosen_node, best_val - pref_at_choice, + node_base(chosen_node)); + } + + /** + * @brief Value of the maximum prefix excess on [i, j] relative to i. + */ + int range_max_query_val(const size_t& i, const size_t& j) const { + if (i > j || j >= num_bits) { + return 0; + } + size_t p = range_max_query_pos(i, j); + if (p == npos) { + return 0; + } + return excess(p + 1) - excess(i); + } + + /** + * @brief How many times the minimum prefix excess occurs on [i, j]. + */ + size_t mincount(const size_t& i, const size_t& j) const { + if (i > j || j >= num_bits) { + return 0; + } + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * block_bits; + + int best_val = INT_MAX; + size_t cnt = 0; + int pref = 0; + + // first chunk + { + int cur = 0, mn = INT_MAX, c = 0; + const size_t end = std::min(j, Rbi - 1); + for (size_t p = i; p <= end; ++p) { + cur += bit(p) ? +1 : -1; + if (cur < mn) { + mn = cur; + c = 1; + } else if (cur == mn) { + ++c; } - - /** - * @brief open(i): matching '(' for ')' at i. - * @return Position of matching '(', or npos. - */ - inline size_t open(const size_t &i) const - { - // bwdsearch allows i in [1..num_bits] - if (i == 0 || i > num_bits) - return npos; - const size_t r = bwdsearch(i, 0); - return (r == npos ? npos : r + 1); + } + best_val = mn; + cnt = c; + pref = cur; // offset toward the middle + } + + // middle + if (blk_i + 1 <= blk_j - 1) { + const auto mids = cover_blocks(blk_i + 1, blk_j - 1); + for (const size_t& v : mids) { + const int cand = pref + node_min_prefix_excess[v]; + if (cand < best_val) { + best_val = cand; + cnt = node_min_count[v]; + } else if (cand == best_val) { + cnt += node_min_count[v]; } - - /** - * @brief enclose(i): opening '(' that strictly encloses position i. - * @return Position of enclosing '(', or npos. - */ - inline size_t enclose(const size_t &i) const - { - if (i == 0 || i > num_bits) - return npos; - const size_t r = bwdsearch(i, -2); - return (r == npos ? npos : r + 1); + pref += node_total_excess[v]; + } + } + + // last chunk + if (blk_j != blk_i) { + int cur = 0, mn = INT_MAX, c = 0; + for (size_t p = Lbj; p <= j; ++p) { + cur += bit(p) ? +1 : -1; + if (cur < mn) { + mn = cur; + c = 1; + } else if (cur == mn) { + ++c; } - - private: - /** - * @brief Count "10" occurrences inside a 64-bit slice of given logical length. - * @details Only positions fully inside the slice are counted. - */ - static inline size_t pop10_in_slice64(const std::uint64_t &slice, const int &len) noexcept - { - if (len <= 1) - return 0; - std::uint64_t P = slice & ~(slice >> 1); // candidates for "10" - if (len < 64) - P &= ((std::uint64_t(1) << (len - 1)) - 1); - else - P &= 0x7FFFFFFFFFFFFFFFull; - return (size_t)std::popcount(P); + } + const int cand = pref + mn; + if (cand < best_val) { + best_val = cand; + cnt = c; + } else if (cand == best_val) { + cnt += c; + } + } + return cnt; + } + + /** + * @brief Position of the q-th (1-based) occurrence of the minimum on [i, j]. + * @return Position or npos if q exceeds the number of minima. + */ + size_t minselect(const size_t& i, const size_t& j, size_t q) const { + if (i > j || j >= num_bits || q == 0) { + return npos; + } + + const size_t blk_i = block_of(i); + const size_t Lbi = blk_i * block_bits; + const size_t Rbi = std::min(num_bits, Lbi + block_bits); + const size_t blk_j = block_of(j); + const size_t Lbj = blk_j * block_bits; + + // prefix + const size_t end_first = std::min(j, Rbi - 1); + int cur_first = 0, mn_first = 0; + uint32_t c_first = 0; + + if (i <= end_first) { + scan_range_min_count8(i, end_first, cur_first, mn_first, c_first); + } else { + cur_first = 0; + mn_first = INT_MAX; + c_first = 0; + } + + int best_val = (mn_first == INT_MAX ? INT_MAX : mn_first); + size_t total_cnt = (mn_first == INT_MAX ? 0u : (size_t)c_first); + int pref = cur_first; // offset for middle + + const size_t leaf0 = first_leaf_index(); + size_t l = leaf0 + blk_i + 1; + size_t r = leaf0 + blk_j - 1; + size_t Rnodes[64]; + int rn = 0; + + // middle + if (blk_i + 1 <= blk_j - 1) { + while (l <= r) { + if (l & 1) { + const int cand = pref + node_min_prefix_excess[l]; + if (cand < best_val) { + best_val = cand; + total_cnt = node_min_count[l]; + } else if (cand == best_val) { + total_cnt += node_min_count[l]; + } + pref += node_total_excess[l++]; } - - /** - * @brief Rank of ones within [Lb, Rb). - * @details Works on word boundaries; Rb may equal Lb. - */ - size_t rank1_in_block(const size_t &Lb, const size_t &Rb) const noexcept - { - if (Rb <= Lb) - return 0; - size_t w_l = Lb >> 6; - const size_t w_r = Rb >> 6; - size_t off_l = Lb & 63; - const size_t off_r = Rb & 63; - size_t cnt = 0; - if (w_l == w_r) - { - const std::uint64_t mask = ((off_r == 0) ? 0 : ((std::uint64_t(1) << off_r) - 1)) & (~std::uint64_t(0) << off_l); - return (size_t)std::popcount(bits[w_l] & mask); - } - if (off_l) - { - cnt += (size_t)std::popcount(bits[w_l] & (~std::uint64_t(0) << off_l)); - ++w_l; - } - while (w_l < w_r) - { - cnt += (size_t)std::popcount(bits[w_l]); - ++w_l; - } - if (off_r) - cnt += (size_t)std::popcount(bits[w_r] & ((std::uint64_t(1) << off_r) - 1)); - return cnt; + if ((r & 1) == 0) { + Rnodes[rn++] = r--; } - - /** - * @brief Count "10" starts within [Lb, Rb). - * @details Accounts for cross-word boundaries. - */ - size_t rr_in_block(const size_t &Lb, const size_t &Rb) const noexcept - { - if (Rb <= Lb + 1) - return 0; - size_t w_l = Lb >> 6; - const size_t w_r = (Rb - 1) >> 6; - const int off_l = Lb & 63; - const int off_r = (Rb - 1) & 63; - size_t cnt = 0; - - if (w_l == w_r) - { - const int len = off_r - off_l + 1; - const std::uint64_t slice = bits[w_l] >> off_l; - return pop10_in_slice64(slice, len); - } - - // prefix word - { - const int len = 64 - off_l; - const std::uint64_t slice = bits[w_l] >> off_l; - cnt += pop10_in_slice64(slice, len); - } - // full interior words - for (size_t w = w_l + 1; w < w_r; ++w) - { - const std::uint64_t x = bits[w]; - cnt += pop10_in_slice64(x, 64); - } - // suffix word - { - const int len = off_r + 1; - const std::uint64_t mask = (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); - const std::uint64_t slice = bits[w_r] & mask; - cnt += pop10_in_slice64(slice, len); - } - // cross-word boundaries (bit 63 of w and bit 0 of w+1) - for (size_t w = w_l; w < w_r; ++w) - { - if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) - ++cnt; - } - return cnt; + l >>= 1; + r >>= 1; + } + while (rn--) { + const size_t v = Rnodes[rn]; + const int cand = pref + node_min_prefix_excess[v]; + if (cand < best_val) { + best_val = cand; + total_cnt = node_min_count[v]; + } else if (cand == best_val) { + total_cnt += node_min_count[v]; } - - /** - * @brief 1-based select of k-th "10" within [Lb, Rb). - * @return Position or npos. - */ - size_t select10_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept - { - if (Rb <= Lb + 1) - return npos; - size_t w_l = Lb >> 6; - const size_t w_r = (Rb - 1) >> 6; - const int off_l = Lb & 63; - const int off_r = (Rb - 1) & 63; - - const auto select_in_masked_slice = [&](const std::uint64_t &slice, const int &len, const size_t &kk) noexcept -> int - { - if (len <= 1) - return -1; - std::uint64_t P = slice & ~(slice >> 1); - if (len < 64) - P &= ((std::uint64_t(1) << (len - 1)) - 1); - else - P &= 0x7FFFFFFFFFFFFFFFull; - return select_in_word(P, kk); - }; - - if (w_l == w_r) - { - const int len = off_r - off_l + 1; - const std::uint64_t slice = bits[w_l] >> off_l; - const int off = select_in_masked_slice(slice, len, k); - return off >= 0 ? (Lb + (size_t)off) : npos; - } - - // prefix word - { - const int len = 64 - off_l; - const std::uint64_t slice = bits[w_l] >> off_l; - std::uint64_t P = slice & ~(slice >> 1); - P &= ((std::uint64_t(1) << (len - 1)) - 1); - const int c = std::popcount(P); - if (k <= (size_t)c) - { - const int off = select_in_masked_slice(slice, len, k); - return Lb + (size_t)off; - } - k -= c; - } - - // walk interior boundaries and words - for (size_t w = w_l; w + 1 < w_r; ++w) - { - // boundary between w and w+1 - if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) - { - if (--k == 0) - return (w << 6) + 63; - } - // full word w+1 (positions 0..62) - const std::uint64_t x = bits[w + 1]; - const std::uint64_t P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; - const int c = std::popcount(P); - if (k <= (size_t)c) - { - const int off = select_in_word(P, k); - if (off == -1) - return npos; - return ((w + 1) << 6) + (size_t)off; - } - k -= c; - } - - // boundary (w_r-1, w_r) - if (((bits[w_r - 1] >> 63) & 1u) && ((bits[w_r] & 1u) == 0)) - { - if (--k == 0) - return ((w_r - 1) << 6) + 63; - } - - // suffix word w_r: [0..off_r] - { - const int len = off_r + 1; - const std::uint64_t mask = (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); - const std::uint64_t slice = bits[w_r] & mask; - const int off = select_in_masked_slice(slice, len, k); - if (off >= 0) - return (w_r << 6) + (size_t)off; - } - return npos; + pref += node_total_excess[v]; + } + } + + // tail + int cur_last = 0, mn_last = INT_MAX; + uint32_t c_last = 0; + if (blk_j != blk_i) { + scan_range_min_count8(Lbj, j, cur_last, mn_last, c_last); + const int cand = pref + mn_last; + if (cand < best_val) { + best_val = cand; + total_cnt = c_last; + } else if (cand == best_val) { + total_cnt += c_last; + } + } + + if (q > total_cnt) { + return npos; + } + + // prefix + if (mn_first == best_val && c_first) { + if (q <= c_first) { + return qth_min_in_block(i, end_first, q); + } + q -= c_first; + } + + // middle + pref = cur_first; + if (blk_i + 1 <= blk_j - 1) { + l = leaf0 + (blk_i + 1); + r = leaf0 + (blk_j - 1); + rn = 0; + while (l <= r) { + if (l & 1) { + const size_t v = l++; + const int cand = pref + node_min_prefix_excess[v]; + if (cand == best_val) { + if (q <= node_min_count[v]) { + return descend_qth_min(v, best_val - pref, q, node_base(v)); + } + q -= node_min_count[v]; + } + pref += node_total_excess[v]; } - - struct ByteAgg - { - int8_t excess_total; // total excess for the byte - int8_t min_prefix; // minimum prefix within the byte (from 0) - int8_t max_prefix; // maximum prefix within the byte (from 0) - uint8_t min_count; // number of positions attaining the minimum in the byte - uint8_t pattern10_count; // number of "10" patterns inside the byte - uint8_t first_bit; // first bit (LSB) - uint8_t last_bit; // last bit (MSB) - uint8_t pos_first_min; // pos of first minimum in this byte - uint8_t pos_first_max; // pos of first maximum in this byte - }; - - /** - * @brief Returns the static lookup table of byte aggregates. - */ - static inline const std::array &LUT8() noexcept - { - static const std::array T = [] - { - std::array t{}; - for (int b = 0; b < 256; ++b) - { - int cur = 0, mn = INT_MAX, mx = INT_MIN, cnt = 0, rrc = 0; - int pm = 0, pM = 0; - const auto get = [&](const int &k) - { return (b >> k) & 1; }; // LSB-first - for (int k = 0; k < 8; ++k) - { - int bit = get(k); - if (k + 1 < 8 && bit && get(k + 1) == 0) - ++rrc; - cur += bit ? +1 : -1; - if (cur < mn) - { - mn = cur; - cnt = 1; - pm = k; - } - else if (cur == mn) - { - ++cnt; - } - if (cur > mx) - { - mx = cur; - pM = k; - } - } - ByteAgg a{}; - a.excess_total = cur; - a.min_prefix = (mn == INT_MAX ? 0 : mn); - a.max_prefix = (mx == INT_MIN ? 0 : mx); - a.min_count = cnt; - a.pattern10_count = rrc; - a.first_bit = get(0); - a.last_bit = get(7); - a.pos_first_min = pm; - a.pos_first_max = pM; - t[b] = a; - } - return t; - }(); - return T; + if (!(r & 1)) { + Rnodes[rn++] = r--; } - - /** - * @brief Extract 8 bits starting at position pos (LSB-first across words). - */ - inline uint8_t get_byte(const size_t &pos) const noexcept - { - const size_t w = pos >> 6; - const size_t off = pos & 63; - const std::uint64_t lo = bits[w] >> off; - if (off <= 56) - return uint8_t(lo & 0xFFu); - const std::uint64_t hi = (w + 1 < bits.size()) ? bits[w + 1] : 0; - const std::uint64_t x = (lo | (hi << (64 - off))) & 0xFFu; - return uint8_t(x); + l >>= 1; + r >>= 1; + } + while (rn--) { + const size_t v = Rnodes[rn]; + const int cand = pref + node_min_prefix_excess[v]; + if (cand == best_val) { + if (q <= node_min_count[v]) { + return descend_qth_min(v, best_val - pref, q, node_base(v)); + } + q -= node_min_count[v]; } + pref += node_total_excess[v]; + } + } + + // tail + if (blk_j != blk_i && (pref + mn_last) == best_val) { + return qth_min_in_block(Lbj, j, q); + } + + return npos; + } + + // ----- parentheses navigation (BP) ----- + + /** + * @brief close(i): matching ')' for '(' at i. + * @return Position of matching ')', or npos. + */ + inline size_t close(const size_t& i) const { + if (i >= num_bits) { + return npos; + } + return fwdsearch(i, -1); + } + + /** + * @brief open(i): matching '(' for ')' at i. + * @return Position of matching '(', or npos. + */ + inline size_t open(const size_t& i) const { + // bwdsearch allows i in [1..num_bits] + if (i == 0 || i > num_bits) { + return npos; + } + const size_t r = bwdsearch(i, 0); + return (r == npos ? npos : r + 1); + } + + /** + * @brief enclose(i): opening '(' that strictly encloses position i. + * @return Position of enclosing '(', or npos. + */ + inline size_t enclose(const size_t& i) const { + if (i == 0 || i > num_bits) { + return npos; + } + const size_t r = bwdsearch(i, -2); + return (r == npos ? npos : r + 1); + } + + private: + /** + * @brief Count "10" occurrences inside a 64-bit slice of given logical + * length. + * @details Only positions fully inside the slice are counted. + */ + static inline size_t pop10_in_slice64(const std::uint64_t& slice, + const int& len) noexcept { + if (len <= 1) { + return 0; + } + std::uint64_t P = slice & ~(slice >> 1); // candidates for "10" + if (len < 64) { + P &= ((std::uint64_t(1) << (len - 1)) - 1); + } else { + P &= 0x7FFFFFFFFFFFFFFFull; + } + return (size_t)std::popcount(P); + } + + /** + * @brief Rank of ones within [Lb, Rb). + * @details Works on word boundaries; Rb may equal Lb. + */ + size_t rank1_in_block(const size_t& Lb, const size_t& Rb) const noexcept { + if (Rb <= Lb) { + return 0; + } + size_t w_l = Lb >> 6; + const size_t w_r = Rb >> 6; + size_t off_l = Lb & 63; + const size_t off_r = Rb & 63; + size_t cnt = 0; + if (w_l == w_r) { + const std::uint64_t mask = + ((off_r == 0) ? 0 : ((std::uint64_t(1) << off_r) - 1)) & + (~std::uint64_t(0) << off_l); + return (size_t)std::popcount(bits[w_l] & mask); + } + if (off_l) { + cnt += (size_t)std::popcount(bits[w_l] & (~std::uint64_t(0) << off_l)); + ++w_l; + } + while (w_l < w_r) { + cnt += (size_t)std::popcount(bits[w_l]); + ++w_l; + } + if (off_r) { + cnt += + (size_t)std::popcount(bits[w_r] & ((std::uint64_t(1) << off_r) - 1)); + } + return cnt; + } + + /** + * @brief Count "10" starts within [Lb, Rb). + * @details Accounts for cross-word boundaries. + */ + size_t rr_in_block(const size_t& Lb, const size_t& Rb) const noexcept { + if (Rb <= Lb + 1) { + return 0; + } + size_t w_l = Lb >> 6; + const size_t w_r = (Rb - 1) >> 6; + const int off_l = Lb & 63; + const int off_r = (Rb - 1) & 63; + size_t cnt = 0; + + if (w_l == w_r) { + const int len = off_r - off_l + 1; + const std::uint64_t slice = bits[w_l] >> off_l; + return pop10_in_slice64(slice, len); + } + + // prefix word + { + const int len = 64 - off_l; + const std::uint64_t slice = bits[w_l] >> off_l; + cnt += pop10_in_slice64(slice, len); + } + // full interior words + for (size_t w = w_l + 1; w < w_r; ++w) { + const std::uint64_t x = bits[w]; + cnt += pop10_in_slice64(x, 64); + } + // suffix word + { + const int len = off_r + 1; + const std::uint64_t mask = + (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); + const std::uint64_t slice = bits[w_r] & mask; + cnt += pop10_in_slice64(slice, len); + } + // cross-word boundaries (bit 63 of w and bit 0 of w+1) + for (size_t w = w_l; w < w_r; ++w) { + if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) { + ++cnt; + } + } + return cnt; + } + + /** + * @brief 1-based select of k-th "10" within [Lb, Rb). + * @return Position or npos. + */ + size_t select10_in_block(const size_t& Lb, + const size_t& Rb, + size_t k) const noexcept { + if (Rb <= Lb + 1) { + return npos; + } + size_t w_l = Lb >> 6; + const size_t w_r = (Rb - 1) >> 6; + const int off_l = Lb & 63; + const int off_r = (Rb - 1) & 63; + + const auto select_in_masked_slice = [&](const std::uint64_t& slice, + const int& len, + const size_t& kk) noexcept -> int { + if (len <= 1) { + return -1; + } + std::uint64_t P = slice & ~(slice >> 1); + if (len < 64) { + P &= ((std::uint64_t(1) << (len - 1)) - 1); + } else { + P &= 0x7FFFFFFFFFFFFFFFull; + } + return select_in_word(P, kk); + }; - /** - * @brief Descend to the first (leftmost) maximum with node-relative prefix equal to d. - * @param v Node index. - * @param d Target prefix within node coordinates. - * @param base Starting global position of node. - * @return Position or npos. - */ - size_t descend_first_max(size_t v, int d, size_t base) const noexcept - { - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1, Rc = Lc | 1; - const int leftX = node_max_prefix_excess[Lc]; - const int rightX = node_total_excess[Lc] + node_max_prefix_excess[Rc]; - if (leftX >= rightX && leftX == d) - { - v = Lc; - } - else if (rightX == d) - { - base += segment_size_bits[Lc]; - d -= node_total_excess[Lc]; - v = Rc; - } - else - { - return npos; - } - } - - const size_t Lb = base; - const size_t Rb = std::min(base + segment_size_bits[v], num_bits); - int mx; - size_t pos; - - first_max_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mx, pos); - return (mx == d ? pos : npos); - } - - /** - * @brief Heap index of the first leaf node. - */ - inline size_t first_leaf_index() const noexcept - { - return std::bit_ceil(std::max(1, leaf_count)); - } - - /** - * @brief Block index containing position i. - */ - size_t block_of(const size_t &i) const noexcept { return i / block_bits; } - - /** - * @brief Heap index of the leaf whose segment starts at block_start. - */ - size_t leaf_index_of(const size_t &block_start) const noexcept - { - return first_leaf_index() + block_of(block_start); - } - - /** - * @brief Starting global position for node v (0-indexed). - * @details Walk up to compute base for internal nodes; direct for leaves. - */ - size_t node_base(size_t v) const noexcept - { - const size_t leaf0 = first_leaf_index(); - if (v >= leaf0) - return (v - leaf0) * block_bits; - - size_t base = 0; - for (; v > 1; v >>= 1) - if (v & 1) - base += segment_size_bits[v - 1]; - return base; - } - - /** - * @brief Cover a range of whole blocks [a..b] (inclusive) with O(log n) maximal nodes. - * @details Returns node indices in left-to-right order. - */ - std::vector cover_blocks(const size_t &a, const size_t &b) const - { - const size_t leaf0 = first_leaf_index(); - size_t l = leaf0 + a; - size_t r = leaf0 + b; - std::vector Lnodes, Rnodes; - while (l <= r) - { - if ((l & 1) == 1) - Lnodes.push_back(l++); - if ((r & 1) == 0) - Rnodes.push_back(r--); - l >>= 1; - r >>= 1; - } - std::reverse(Rnodes.begin(), Rnodes.end()); - Lnodes.insert(Lnodes.end(), Rnodes.begin(), Rnodes.end()); - return Lnodes; - } - - /** - * @brief Descend for fwdsearch to find first position where relative prefix equals 'need'. - */ - size_t descend_fwd(size_t v, int need, size_t base) const noexcept - { - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1; - const size_t Rc = Lc | 1; - if (node_min_prefix_excess[Lc] <= need && need <= node_max_prefix_excess[Lc]) - v = Lc; - else - { - need -= node_total_excess[Lc]; - base += segment_size_bits[Lc]; - v = Rc; - } - } - const size_t Rb = std::min(base + segment_size_bits[v], num_bits); - int cur = 0; - for (size_t p = base; p < Rb; ++p) - { - cur += bit(p) ? +1 : -1; - if (cur == need) - return p; - } - return npos; - } - - /** - * @brief Descend for bwdsearch to return the rightmost solution. - * @param v Current node. - * @param base Left border of node v. - * @param need Target relative prefix inside v. - * @param right_border Global right limit (exclusive if !allow_rb). - * @param allow_rb Whether right border is allowed to match. - */ - size_t descend_bwd(size_t v, const size_t &base, const int &need, const size_t &right_border, const bool &allow_rb) const noexcept - { - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1; - const size_t Rc = Lc | 1; - const int need_r = need - node_total_excess[Lc]; - - // 1) try the right child first (to capture the rightmost j) - if (node_min_prefix_excess[Rc] <= need_r && need_r <= node_max_prefix_excess[Rc]) - { - const size_t ans = descend_bwd(Rc, base + segment_size_bits[Lc], need_r, right_border, allow_rb); - if (ans != npos) - return ans; - } - - // 2) junction between children (end of the left child) - const size_t j_border = base + segment_size_bits[Lc]; - if (need == node_total_excess[Lc] && (j_border < right_border || allow_rb)) - { - return j_border; - } - - // 3) can we move left within the range? - if (node_min_prefix_excess[Lc] <= need && need <= node_max_prefix_excess[Lc]) - { - v = Lc; - continue; - } - - // None of (1)-(3) worked. The only possible point is the left border of the node. - if (need == 0 && (base < right_border || allow_rb)) - { - return base; - } - - return npos; - } - - const size_t Lb = base; - const size_t Rb = std::min(base + segment_size_bits[v], num_bits); - const size_t RB = std::min(right_border, Rb); - - int cur = 0; - for (size_t p = Lb; p < RB; ++p) - cur += bit(p) ? +1 : -1; - - if (allow_rb && cur == need) - return RB; - - for (size_t p = RB; p > Lb;) - { - --p; - cur += bit(p) ? -1 : +1; - if (cur == need) - return p; - if (p == 0) - break; - } - - if ((Lb < right_border || allow_rb) && cur == need) - return Lb; + if (w_l == w_r) { + const int len = off_r - off_l + 1; + const std::uint64_t slice = bits[w_l] >> off_l; + const int off = select_in_masked_slice(slice, len, k); + return off >= 0 ? (Lb + (size_t)off) : npos; + } - return npos; + // prefix word + { + const int len = 64 - off_l; + const std::uint64_t slice = bits[w_l] >> off_l; + std::uint64_t P = slice & ~(slice >> 1); + P &= ((std::uint64_t(1) << (len - 1)) - 1); + const int c = std::popcount(P); + if (k <= (size_t)c) { + const int off = select_in_masked_slice(slice, len, k); + return Lb + (size_t)off; + } + k -= c; + } + + // walk interior boundaries and words + for (size_t w = w_l; w + 1 < w_r; ++w) { + // boundary between w and w+1 + if (((bits[w] >> 63) & 1u) && ((bits[w + 1] & 1u) == 0)) { + if (--k == 0) { + return (w << 6) + 63; } - - /** - * @brief Descend to find first position where node-relative prefix equals d (minimum). - */ - size_t descend_first_min(size_t v, int d, size_t base) const noexcept - { - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1, Rc = Lc | 1; - const int leftm = node_min_prefix_excess[Lc]; - const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; - if (leftm <= rightm && leftm == d) - { - v = Lc; - } - else if (rightm == d) - { - base += segment_size_bits[Lc]; - d -= node_total_excess[Lc]; - v = Rc; - } - else - { - return npos; - } - } - - const size_t Lb = base; - const size_t Rb = std::min(base + segment_size_bits[v], num_bits); - int mn; - size_t pos; - - first_min_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mn, pos); - return (mn == d ? pos : npos); + } + // full word w+1 (positions 0..62) + const std::uint64_t x = bits[w + 1]; + const std::uint64_t P = (x & ~(x >> 1)) & 0x7FFFFFFFFFFFFFFFull; + const int c = std::popcount(P); + if (k <= (size_t)c) { + const int off = select_in_word(P, k); + if (off == -1) { + return npos; } - - /** - * @brief Descend to find the q-th minimum (1-based) where node-relative prefix equals d. - */ - size_t descend_qth_min(size_t v, int d, size_t q, size_t base) const noexcept - { - const size_t leaf0 = first_leaf_index(); - while (v < leaf0) - { - const size_t Lc = v << 1; - const size_t Rc = Lc | 1; - const int leftm = node_min_prefix_excess[Lc]; - const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; - if (leftm == d) - { - if (node_min_count[Lc] >= q) - { - v = Lc; - continue; - } - q -= node_min_count[Lc]; - } - if (rightm == d) - { - base += segment_size_bits[Lc]; - d -= node_total_excess[Lc]; - v = Rc; - continue; - } - return npos; - } - return qth_min_in_block(base, std::min(base + segment_size_bits[v], num_bits) - 1, q); + return ((w + 1) << 6) + (size_t)off; + } + k -= c; + } + + // boundary (w_r-1, w_r) + if (((bits[w_r - 1] >> 63) & 1u) && ((bits[w_r] & 1u) == 0)) { + if (--k == 0) { + return ((w_r - 1) << 6) + 63; + } + } + + // suffix word w_r: [0..off_r] + { + const int len = off_r + 1; + const std::uint64_t mask = + (len == 64) ? ~std::uint64_t(0) : ((std::uint64_t(1) << len) - 1); + const std::uint64_t slice = bits[w_r] & mask; + const int off = select_in_masked_slice(slice, len, k); + if (off >= 0) { + return (w_r << 6) + (size_t)off; + } + } + return npos; + } + + struct ByteAgg { + int8_t excess_total; // total excess for the byte + int8_t min_prefix; // minimum prefix within the byte (from 0) + int8_t max_prefix; // maximum prefix within the byte (from 0) + uint8_t min_count; // number of positions attaining the minimum in the byte + uint8_t pattern10_count; // number of "10" patterns inside the byte + uint8_t first_bit; // first bit (LSB) + uint8_t last_bit; // last bit (MSB) + uint8_t pos_first_min; // pos of first minimum in this byte + uint8_t pos_first_max; // pos of first maximum in this byte + }; + + /** + * @brief Returns the static lookup table of byte aggregates. + */ + static inline const std::array& LUT8() noexcept { + static const std::array T = [] { + std::array t{}; + for (int b = 0; b < 256; ++b) { + int cur = 0, mn = INT_MAX, mx = INT_MIN, cnt = 0, rrc = 0; + int pm = 0, pM = 0; + const auto get = [&](const int& k) { + return (b >> k) & 1; + }; // LSB-first + for (int k = 0; k < 8; ++k) { + int bit = get(k); + if (k + 1 < 8 && bit && get(k + 1) == 0) { + ++rrc; + } + cur += bit ? +1 : -1; + if (cur < mn) { + mn = cur; + cnt = 1; + pm = k; + } else if (cur == mn) { + ++cnt; + } + if (cur > mx) { + mx = cur; + pM = k; + } } - - /** - * @brief 1-based select of k-th '1' within [Lb, Rb). - */ - size_t select1_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept - { - size_t w_l = Lb >> 6; - const size_t w_r = (Rb >> 6); - const size_t off_l = Lb & 63; - const std::uint64_t mask_l = (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); - if (w_l == w_r) - { - const std::uint64_t w = bits[w_l] & mask_l & ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) : ~std::uint64_t(0)); - return Lb + select_in_word(w, k); - } - // prefix - if (off_l) - { - const std::uint64_t w = bits[w_l] & mask_l; - const int c = std::popcount(w); - if (k <= (size_t)c) - return Lb + select_in_word(w, k); - k -= c; - w_l++; - } - // full words - while (w_l < w_r) - { - const std::uint64_t w = bits[w_l]; - const int c = std::popcount(w); - if (k <= (size_t)c) - return (w_l << 6) + select_in_word(w, k); - k -= c; - ++w_l; - } - // tail - const size_t off_r = Rb & 63; - if (off_r) - { - const std::uint64_t w = bits[w_l] & ((std::uint64_t(1) << off_r) - 1); - const int c = std::popcount(w); - if (k <= (size_t)c) - return (w_l << 6) + select_in_word(w, k); - } - return npos; + ByteAgg a{}; + a.excess_total = cur; + a.min_prefix = (mn == INT_MAX ? 0 : mn); + a.max_prefix = (mx == INT_MIN ? 0 : mx); + a.min_count = cnt; + a.pattern10_count = rrc; + a.first_bit = get(0); + a.last_bit = get(7); + a.pos_first_min = pm; + a.pos_first_max = pM; + t[b] = a; + } + return t; + }(); + return T; + } + + /** + * @brief Extract 8 bits starting at position pos (LSB-first across words). + */ + inline uint8_t get_byte(const size_t& pos) const noexcept { + const size_t w = pos >> 6; + const size_t off = pos & 63; + const std::uint64_t lo = bits[w] >> off; + if (off <= 56) { + return uint8_t(lo & 0xFFu); + } + const std::uint64_t hi = (w + 1 < bits.size()) ? bits[w + 1] : 0; + const std::uint64_t x = (lo | (hi << (64 - off))) & 0xFFu; + return uint8_t(x); + } + + /** + * @brief Descend to the first (leftmost) maximum with node-relative prefix + * equal to d. + * @param v Node index. + * @param d Target prefix within node coordinates. + * @param base Starting global position of node. + * @return Position or npos. + */ + size_t descend_first_max(size_t v, int d, size_t base) const noexcept { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1, Rc = Lc | 1; + const int leftX = node_max_prefix_excess[Lc]; + const int rightX = node_total_excess[Lc] + node_max_prefix_excess[Rc]; + if (leftX >= rightX && leftX == d) { + v = Lc; + } else if (rightX == d) { + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; + v = Rc; + } else { + return npos; + } + } + + const size_t Lb = base; + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); + int mx; + size_t pos; + + first_max_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mx, pos); + return (mx == d ? pos : npos); + } + + /** + * @brief Heap index of the first leaf node. + */ + inline size_t first_leaf_index() const noexcept { + return std::bit_ceil(std::max(1, leaf_count)); + } + + /** + * @brief Block index containing position i. + */ + size_t block_of(const size_t& i) const noexcept { return i / block_bits; } + + /** + * @brief Heap index of the leaf whose segment starts at block_start. + */ + size_t leaf_index_of(const size_t& block_start) const noexcept { + return first_leaf_index() + block_of(block_start); + } + + /** + * @brief Starting global position for node v (0-indexed). + * @details Walk up to compute base for internal nodes; direct for leaves. + */ + size_t node_base(size_t v) const noexcept { + const size_t leaf0 = first_leaf_index(); + if (v >= leaf0) { + return (v - leaf0) * block_bits; + } + + size_t base = 0; + for (; v > 1; v >>= 1) { + if (v & 1) { + base += segment_size_bits[v - 1]; + } + } + return base; + } + + /** + * @brief Cover a range of whole blocks [a..b] (inclusive) with O(log n) + * maximal nodes. + * @details Returns node indices in left-to-right order. + */ + std::vector cover_blocks(const size_t& a, const size_t& b) const { + const size_t leaf0 = first_leaf_index(); + size_t l = leaf0 + a; + size_t r = leaf0 + b; + std::vector Lnodes, Rnodes; + while (l <= r) { + if ((l & 1) == 1) { + Lnodes.push_back(l++); + } + if ((r & 1) == 0) { + Rnodes.push_back(r--); + } + l >>= 1; + r >>= 1; + } + std::reverse(Rnodes.begin(), Rnodes.end()); + Lnodes.insert(Lnodes.end(), Rnodes.begin(), Rnodes.end()); + return Lnodes; + } + + /** + * @brief Descend for fwdsearch to find first position where relative prefix + * equals 'need'. + */ + size_t descend_fwd(size_t v, int need, size_t base) const noexcept { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + if (node_min_prefix_excess[Lc] <= need && + need <= node_max_prefix_excess[Lc]) { + v = Lc; + } else { + need -= node_total_excess[Lc]; + base += segment_size_bits[Lc]; + v = Rc; + } + } + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); + int cur = 0; + for (size_t p = base; p < Rb; ++p) { + cur += bit(p) ? +1 : -1; + if (cur == need) { + return p; + } + } + return npos; + } + + /** + * @brief Descend for bwdsearch to return the rightmost solution. + * @param v Current node. + * @param base Left border of node v. + * @param need Target relative prefix inside v. + * @param right_border Global right limit (exclusive if !allow_rb). + * @param allow_rb Whether right border is allowed to match. + */ + size_t descend_bwd(size_t v, + const size_t& base, + const int& need, + const size_t& right_border, + const bool& allow_rb) const noexcept { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const int need_r = need - node_total_excess[Lc]; + + // 1) try the right child first (to capture the rightmost j) + if (node_min_prefix_excess[Rc] <= need_r && + need_r <= node_max_prefix_excess[Rc]) { + const size_t ans = descend_bwd(Rc, base + segment_size_bits[Lc], need_r, + right_border, allow_rb); + if (ans != npos) { + return ans; } - - /** - * @brief 1-based select of k-th '0' within [Lb, Rb). - */ - size_t select0_in_block(const size_t &Lb, const size_t &Rb, size_t k) const noexcept - { - if (Rb <= Lb) - return npos; - - size_t w_l = Lb >> 6; - const size_t w_r = Rb >> 6; - const size_t off_l = Lb & 63; - - if (w_l == w_r) - { - const std::uint64_t mask_l = (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); - const std::uint64_t mask_r = ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) : ~std::uint64_t(0)); - const std::uint64_t w = (~bits[w_l]) & mask_l & mask_r; - const int off = select_in_word(w, k); - return (off >= 0) ? (Lb + (size_t)off) : npos; - } - - // prefix - if (off_l) - { - const std::uint64_t w = (~bits[w_l]) & (~std::uint64_t(0) << off_l); - const int c = std::popcount(w); - if (k <= (size_t)c) - { - const int off = select_in_word(w, k); - return (off >= 0) ? (Lb + (size_t)off) : npos; - } - k -= c; - ++w_l; - } - - // full words - while (w_l < w_r) - { - const std::uint64_t w = ~bits[w_l]; - const int c = std::popcount(w); - if (k <= (size_t)c) - { - const int off = select_in_word(w, k); - return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; - } - k -= c; - ++w_l; - } - - // tail - const size_t off_r = Rb & 63; - if (off_r) - { - const std::uint64_t w = (~bits[w_l]) & ((std::uint64_t(1) << off_r) - 1); - const int c = std::popcount(w); - if (k <= (size_t)c) - { - const int off = select_in_word(w, k); - return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; - } - } - return npos; + } + + // 2) junction between children (end of the left child) + const size_t j_border = base + segment_size_bits[Lc]; + if (need == node_total_excess[Lc] && + (j_border < right_border || allow_rb)) { + return j_border; + } + + // 3) can we move left within the range? + if (node_min_prefix_excess[Lc] <= need && + need <= node_max_prefix_excess[Lc]) { + v = Lc; + continue; + } + + // None of (1)-(3) worked. The only possible point is the left border of + // the node. + if (need == 0 && (base < right_border || allow_rb)) { + return base; + } + + return npos; + } + + const size_t Lb = base; + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); + const size_t RB = std::min(right_border, Rb); + + int cur = 0; + for (size_t p = Lb; p < RB; ++p) { + cur += bit(p) ? +1 : -1; + } + + if (allow_rb && cur == need) { + return RB; + } + + for (size_t p = RB; p > Lb;) { + --p; + cur += bit(p) ? -1 : +1; + if (cur == need) { + return p; + } + if (p == 0) { + break; + } + } + + if ((Lb < right_border || allow_rb) && cur == need) { + return Lb; + } + + return npos; + } + + /** + * @brief Descend to find first position where node-relative prefix equals d + * (minimum). + */ + size_t descend_first_min(size_t v, int d, size_t base) const noexcept { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1, Rc = Lc | 1; + const int leftm = node_min_prefix_excess[Lc]; + const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; + if (leftm <= rightm && leftm == d) { + v = Lc; + } else if (rightm == d) { + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; + v = Rc; + } else { + return npos; + } + } + + const size_t Lb = base; + const size_t Rb = std::min(base + segment_size_bits[v], num_bits); + int mn; + size_t pos; + + first_min_value_pos8(Lb, Rb ? (Rb - 1) : Lb, mn, pos); + return (mn == d ? pos : npos); + } + + /** + * @brief Descend to find the q-th minimum (1-based) where node-relative + * prefix equals d. + */ + size_t descend_qth_min(size_t v, + int d, + size_t q, + size_t base) const noexcept { + const size_t leaf0 = first_leaf_index(); + while (v < leaf0) { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const int leftm = node_min_prefix_excess[Lc]; + const int rightm = node_total_excess[Lc] + node_min_prefix_excess[Rc]; + if (leftm == d) { + if (node_min_count[Lc] >= q) { + v = Lc; + continue; } - - /** - * @brief 1-based select of k-th set bit inside a 64-bit word. - * @return Bit index [0..63] or −1 if not found. - */ - static inline int select_in_word(std::uint64_t w, size_t k) noexcept - { + q -= node_min_count[Lc]; + } + if (rightm == d) { + base += segment_size_bits[Lc]; + d -= node_total_excess[Lc]; + v = Rc; + continue; + } + return npos; + } + return qth_min_in_block( + base, std::min(base + segment_size_bits[v], num_bits) - 1, q); + } + + /** + * @brief 1-based select of k-th '1' within [Lb, Rb). + */ + size_t select1_in_block(const size_t& Lb, + const size_t& Rb, + size_t k) const noexcept { + size_t w_l = Lb >> 6; + const size_t w_r = (Rb >> 6); + const size_t off_l = Lb & 63; + const std::uint64_t mask_l = + (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); + if (w_l == w_r) { + const std::uint64_t w = bits[w_l] & mask_l & + ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) + : ~std::uint64_t(0)); + return Lb + select_in_word(w, k); + } + // prefix + if (off_l) { + const std::uint64_t w = bits[w_l] & mask_l; + const int c = std::popcount(w); + if (k <= (size_t)c) { + return Lb + select_in_word(w, k); + } + k -= c; + w_l++; + } + // full words + while (w_l < w_r) { + const std::uint64_t w = bits[w_l]; + const int c = std::popcount(w); + if (k <= (size_t)c) { + return (w_l << 6) + select_in_word(w, k); + } + k -= c; + ++w_l; + } + // tail + const size_t off_r = Rb & 63; + if (off_r) { + const std::uint64_t w = bits[w_l] & ((std::uint64_t(1) << off_r) - 1); + const int c = std::popcount(w); + if (k <= (size_t)c) { + return (w_l << 6) + select_in_word(w, k); + } + } + return npos; + } + + /** + * @brief 1-based select of k-th '0' within [Lb, Rb). + */ + size_t select0_in_block(const size_t& Lb, + const size_t& Rb, + size_t k) const noexcept { + if (Rb <= Lb) { + return npos; + } + + size_t w_l = Lb >> 6; + const size_t w_r = Rb >> 6; + const size_t off_l = Lb & 63; + + if (w_l == w_r) { + const std::uint64_t mask_l = + (off_l ? (~std::uint64_t(0) << off_l) : ~std::uint64_t(0)); + const std::uint64_t mask_r = + ((Rb & 63) ? ((std::uint64_t(1) << (Rb & 63)) - 1) + : ~std::uint64_t(0)); + const std::uint64_t w = (~bits[w_l]) & mask_l & mask_r; + const int off = select_in_word(w, k); + return (off >= 0) ? (Lb + (size_t)off) : npos; + } + + // prefix + if (off_l) { + const std::uint64_t w = (~bits[w_l]) & (~std::uint64_t(0) << off_l); + const int c = std::popcount(w); + if (k <= (size_t)c) { + const int off = select_in_word(w, k); + return (off >= 0) ? (Lb + (size_t)off) : npos; + } + k -= c; + ++w_l; + } + + // full words + while (w_l < w_r) { + const std::uint64_t w = ~bits[w_l]; + const int c = std::popcount(w); + if (k <= (size_t)c) { + const int off = select_in_word(w, k); + return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; + } + k -= c; + ++w_l; + } + + // tail + const size_t off_r = Rb & 63; + if (off_r) { + const std::uint64_t w = (~bits[w_l]) & ((std::uint64_t(1) << off_r) - 1); + const int c = std::popcount(w); + if (k <= (size_t)c) { + const int off = select_in_word(w, k); + return (off >= 0) ? ((w_l << 6) + (size_t)off) : npos; + } + } + return npos; + } + + /** + * @brief 1-based select of k-th set bit inside a 64-bit word. + * @return Bit index [0..63] or −1 if not found. + */ + static inline int select_in_word(std::uint64_t w, size_t k) noexcept { #ifdef __GNUC__ - while (w) - { - if (--k == 0) - return __builtin_ctzll(w); - w &= (w - 1); - } - return -1; + while (w) { + if (--k == 0) { + return __builtin_ctzll(w); + } + w &= (w - 1); + } + return -1; #else - for (int i = 0; i < 64; ++i) - if ((w >> i) & 1u) - if (--k == 0) - return i; - return -1; -#endif - } - - /** - * @brief Ceil division of positive integers. - */ - static inline size_t ceil_div(const size_t &a, const size_t &b) noexcept - { - return (a + b - 1) / b; + for (int i = 0; i < 64; ++i) { + if ((w >> i) & 1u) { + if (--k == 0) { + return i; } - - /** - * @brief Number of node slots needed for @p Nbits with leaf size @p Bpow2. - * @details Includes internal node space (heap layout) plus leaves. - */ - static inline size_t nodeslots_for(const size_t &Nbits, const size_t &Bpow2) noexcept - { - if (Nbits == 0) - return 0; - size_t leaf_count = ceil_div(Nbits, Bpow2); - return std::bit_ceil(std::max(1, leaf_count)) + leaf_count; - } - - /** - * @brief Auxiliary overhead in bytes/bitvector bytes for given parameters. - */ - static inline float overhead_for(const size_t &Nbits, const size_t &Bpow2) noexcept - { - static constexpr size_t AUX_SLOT_BYTES = sizeof(uint32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t); - - size_t bb = ceil_div(Nbits, 64) * 8; - if (bb == 0) - return 0; - size_t slots = nodeslots_for(Nbits, Bpow2); - size_t aux = slots * AUX_SLOT_BYTES; - return ((float)aux) / ((float)bb); + } + } + return -1; +#endif + } + + /** + * @brief Ceil division of positive integers. + */ + static inline size_t ceil_div(const size_t& a, const size_t& b) noexcept { + return (a + b - 1) / b; + } + + /** + * @brief Number of node slots needed for @p Nbits with leaf size @p Bpow2. + * @details Includes internal node space (heap layout) plus leaves. + */ + static inline size_t nodeslots_for(const size_t& Nbits, + const size_t& Bpow2) noexcept { + if (Nbits == 0) { + return 0; + } + size_t leaf_count = ceil_div(Nbits, Bpow2); + return std::bit_ceil(std::max(1, leaf_count)) + leaf_count; + } + + /** + * @brief Auxiliary overhead in bytes/bitvector bytes for given parameters. + */ + static inline float overhead_for(const size_t& Nbits, + const size_t& Bpow2) noexcept { + static constexpr size_t AUX_SLOT_BYTES = + sizeof(uint32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + + sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t); + + size_t bb = ceil_div(Nbits, 64) * 8; + if (bb == 0) { + return 0; + } + size_t slots = nodeslots_for(Nbits, Bpow2); + size_t aux = slots * AUX_SLOT_BYTES; + return ((float)aux) / ((float)bb); + } + + /** + * @brief Choose minimal block size (power of two) keeping overhead ≤ cap. + * @details Returns 64 if cap < 0 (no constraint). Clamped to ≤16384 or Nbits. + */ + static inline size_t choose_block_bits_for_overhead( + const size_t& Nbits, + const float& cap) noexcept { + if (cap < 0.f) { + return 64; + } + + const size_t Bmax = std::min(Nbits, 16384); + size_t block_bits = 64; + while (block_bits < Bmax) { + if (overhead_for(Nbits, block_bits) <= cap) { + break; + } + block_bits <<= 1; + } + return block_bits; + } + + /** + * @brief Build internal structures from a 0/1 string. + * @param leaf_block_bits Desired leaf size (0 = auto). + * @param max_overhead Overhead cap (<0 = no cap). + */ + void build_from_string(const std::string& s, + const size_t& leaf_block_bits = 0, + const float& max_overhead = -1.0) { + num_bits = s.size(); + bits.assign((num_bits + 63) / 64, 0); + for (size_t i = 0; i < num_bits; ++i) { + if (s[i] == '1') { + set1(i); + } + } + build(leaf_block_bits, max_overhead); + } + + /** + * @brief Build internal structures from 64-bit words. + * @param words Words with LSB-first bits. + * @param Nbits Number of valid bits. + * @param leaf_block_bits Desired leaf size (0 = auto). + * @param max_overhead Overhead cap (<0 = no cap). + */ + void build_from_words(const std::vector& words, + const size_t& Nbits, + const size_t& leaf_block_bits = 0, + const float& max_overhead = -1.0) { + bits = words; + num_bits = Nbits; + if (bits.size() * 64 < num_bits) { + bits.resize((num_bits + 63) / 64); + } + build(leaf_block_bits, max_overhead); + } + + /** + * @brief Read bit at position i (LSB-first across words). + */ + inline int bit(const size_t& i) const noexcept { + return (bits[i >> 6] >> (i & 63)) & 1u; + } + + /** + * @brief Set bit at position i to 1. + */ + inline void set1(const size_t& i) noexcept { + bits[i >> 6] |= (std::uint64_t(1) << (i & 63)); + } + + /** + * @brief Number of ones in node v computed from size and total excess. + */ + inline uint32_t ones_in_node(const size_t& v) const noexcept { + return ((int64_t)segment_size_bits[v] + (int64_t)node_total_excess[v]) >> 1; + } + + /** + * @brief Scan [l..r] inclusive, computing minimum value and how many times it + * is attained. + * @details Uses 8-bit LUT for speed; outputs cur at end, mn, and count. + */ + inline void scan_range_min_count8(size_t l, + const size_t& r, + int& cur, + int& mn, + uint32_t& cnt) const noexcept { + cur = 0; + mn = INT_MAX; + cnt = 0; + if (r < l) { + mn = 0; + return; + } + // to byte alignment + while (l <= r && (l & 7)) { + cur += bit(l) ? +1 : -1; + if (cur < mn) { + mn = cur; + cnt = 1; + } else if (cur == mn) { + ++cnt; + } + ++l; + } + // full bytes + const auto& T = LUT8(); + while (l + 7 <= r) { + const auto& a = T[get_byte(l)]; + const int cand = cur + a.min_prefix; + if (cand < mn) { + mn = cand; + cnt = a.min_count; + } else if (cand == mn) { + cnt += a.min_count; + } + cur += a.excess_total; + l += 8; + } + // tail + while (l <= r) { + cur += bit(l) ? +1 : -1; + if (cur < mn) { + mn = cur; + cnt = 1; + } else if (cur == mn) { + ++cnt; + } + ++l; + } + if (mn == INT_MAX) { + mn = cnt = 0; + } + } + + /** + * @brief Select q-th minimum (1-based) inside [l..r] inclusive in two 8-bit + * passes. + * @details First pass finds global minimum, second selects the q-th position. + */ + inline size_t qth_min_in_block(const size_t& l, + const size_t& r, + size_t q) const noexcept { + if (r < l || q == 0) { + return npos; + } + + const auto& T = LUT8(); + + int cur = 0, mn = INT_MAX; + size_t p = l; + + while (p <= r && (p & 7)) { + cur += bit(p) ? +1 : -1; + if (cur < mn) { + mn = cur; + } + ++p; + } + while (p + 7 <= r) { + const auto& a = T[get_byte(p)]; + mn = std::min(mn, cur + a.min_prefix); + cur += a.excess_total; + p += 8; + } + while (p <= r) { + cur += bit(p) ? +1 : -1; + if (cur < mn) { + mn = cur; + } + ++p; + } + + cur = 0; + p = l; + + // to byte alignment + while (p <= r && (p & 7)) { + cur += bit(p) ? +1 : -1; + if (cur == mn) { + if (--q == 0) { + return p; } - - /** - * @brief Choose minimal block size (power of two) keeping overhead ≤ cap. - * @details Returns 64 if cap < 0 (no constraint). Clamped to ≤16384 or Nbits. - */ - static inline size_t choose_block_bits_for_overhead(const size_t &Nbits, const float &cap) noexcept - { - if (cap < 0.f) - return 64; - - const size_t Bmax = std::min(Nbits, 16384); - size_t block_bits = 64; - while (block_bits < Bmax) - { - if (overhead_for(Nbits, block_bits) <= cap) - break; - block_bits <<= 1; - } - return block_bits; + } + ++p; + } + + // full bytes + while (p + 7 <= r) { + const uint8_t b = get_byte(p); + const auto& a = T[b]; + const int cand = cur + a.min_prefix; + if (cand == mn) { + int s = 0; + for (int k = 0; k < 8; ++k) { + s += ((b >> k) & 1u) ? +1 : -1; + if (s == a.min_prefix) { + if (--q == 0) { + return p + k; + } + } } - - /** - * @brief Build internal structures from a 0/1 string. - * @param leaf_block_bits Desired leaf size (0 = auto). - * @param max_overhead Overhead cap (<0 = no cap). - */ - void build_from_string(const std::string &s, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) - { - num_bits = s.size(); - bits.assign((num_bits + 63) / 64, 0); - for (size_t i = 0; i < num_bits; ++i) - if (s[i] == '1') - set1(i); - build(leaf_block_bits, max_overhead); + } + cur += a.excess_total; + p += 8; + } + + // tail + while (p <= r) { + cur += bit(p) ? +1 : -1; + if (cur == mn) { + if (--q == 0) { + return p; } + } + ++p; + } + + return npos; + } + + /** + * @brief Find first minimum value and its first position in [l..r] inclusive + * using 8-bit LUT. + * @param mn_out Output minimum value (0 if empty). + * @param first_pos Output position of first minimum (npos if none). + */ + inline void first_min_value_pos8(size_t l, + const size_t& r, + int& mn_out, + size_t& first_pos) const noexcept { + const auto& T = LUT8(); + int cur = 0; + int mn = INT_MAX; + first_pos = npos; + + // to byte allignment + while (l <= r && (l & 7)) { + cur += bit(l) ? +1 : -1; + if (cur < mn) { + mn = cur; + first_pos = l; + } + ++l; + } + + // full bytes + while (l + 7 <= r) { + const auto& a = T[get_byte(l)]; + const int cand = cur + a.min_prefix; + if (cand < mn) { + mn = cand; + first_pos = l + a.pos_first_min; + } + cur += a.excess_total; + l += 8; + } + + // tail + while (l <= r) { + cur += bit(l) ? +1 : -1; + if (cur < mn) { + mn = cur; + first_pos = l; + } + ++l; + } + + mn_out = (mn == INT_MAX ? 0 : mn); + } + + /** + * @brief Find first maximum value and its first position in [l..r] inclusive + * using 8-bit LUT. + * @param mx_out Output maximum value (0 if empty). + * @param first_pos Output position of first maximum (npos if none). + */ + inline void first_max_value_pos8(size_t l, + const size_t& r, + int& mx_out, + size_t& first_pos) const noexcept { + const auto& T = LUT8(); + int cur = 0; + int mx = INT_MIN; + first_pos = npos; + + while (l <= r && (l & 7)) { + cur += bit(l) ? +1 : -1; + if (cur > mx) { + mx = cur; + first_pos = l; + } + ++l; + } + + while (l + 7 <= r) { + const auto& a = T[get_byte(l)]; + const int cand = cur + a.max_prefix; + if (cand > mx) { + mx = cand; + first_pos = l + a.pos_first_max; + } + cur += a.excess_total; + l += 8; + } + + while (l <= r) { + cur += bit(l) ? +1 : -1; + if (cur > mx) { + mx = cur; + first_pos = l; + } + ++l; + } + + mx_out = (mx == INT_MIN ? 0 : mx); + } + + /** + * @brief Build the tree arrays and per-node aggregates. + * @details Chooses block_bits honoring @p max_overhead or explicit @p + * leaf_block_bits, allocates arrays, fills leaves via LUT, and builds + * internal nodes bottom-up. + */ + void build(const size_t& leaf_block_bits, const float& max_overhead) { + // the lower clamp depends on the desired overhead fraction; otherwise use + // 64 + const size_t clamp_by_overhead = + (max_overhead >= 0.0 + ? choose_block_bits_for_overhead(num_bits, max_overhead) + : size_t(64)); + + // chosen block_bits: honor an explicit request, but not below + // clamp_by_overhead + if (leaf_block_bits == 0) { + block_bits = + std::max(clamp_by_overhead, + std::bit_ceil( + (num_bits <= 1) ? 1 : std::bit_width(num_bits - 1))); + } else { + block_bits = + std::max(clamp_by_overhead, + std::bit_ceil(std::max(1, leaf_block_bits))); + } - /** - * @brief Build internal structures from 64-bit words. - * @param words Words with LSB-first bits. - * @param Nbits Number of valid bits. - * @param leaf_block_bits Desired leaf size (0 = auto). - * @param max_overhead Overhead cap (<0 = no cap). - */ - void build_from_words(const std::vector &words, const size_t &Nbits, const size_t &leaf_block_bits = 0, const float &max_overhead = -1.0) - { - bits = words; - num_bits = Nbits; - if (bits.size() * 64 < num_bits) - bits.resize((num_bits + 63) / 64); - build(leaf_block_bits, max_overhead); - } +#ifdef DEBUG + // finalizes the achieved overhead percentage + built_overhead = overhead_for(num_bits, block_bits); +#endif - /** - * @brief Read bit at position i (LSB-first across words). - */ - inline int bit(const size_t &i) const noexcept - { - return (bits[i >> 6] >> (i & 63)) & 1u; + leaf_count = ceil_div(num_bits, block_bits); + const size_t leaf0 = first_leaf_index(); + const size_t tree_size = leaf0 + leaf_count - 1; + segment_size_bits.assign(tree_size + 1, 0); + node_total_excess.assign(tree_size + 1, 0); + node_min_prefix_excess.assign(tree_size + 1, 0); + node_max_prefix_excess.assign(tree_size + 1, 0); + node_min_count.assign(tree_size + 1, 0); + node_pattern10_count.assign(tree_size + 1, 0); + node_first_bit.assign(tree_size + 1, 0); + node_last_bit.assign(tree_size + 1, 0); + + // leaves + for (size_t k = 0; k < leaf_count; ++k) { + const size_t v = leaf0 + k; + const size_t Lb = k * block_bits; + const size_t Rb = std::min(num_bits, Lb + block_bits); + segment_size_bits[v] = Rb - Lb; + + if (Lb < Rb) { + node_first_bit[v] = bit(Lb); + } + + const auto& T = LUT8(); + + int cur = 0, mn = INT_MAX, mx = INT_MIN; + uint32_t mn_cnt = 0; + uint32_t rrc = 0; + + uint8_t prev_bit = 0; + + size_t p = Lb; + + // Full bytes + while (p + 8 <= Rb) { + const uint8_t b = get_byte(p); + const auto& a = T[b]; + + // internal "10" inside the byte + rrc += a.pattern10_count; + // stitching across the boundary between the previous and current byte + // (within the segment) + if (prev_bit == 1 && a.first_bit == 0) { + rrc++; } - /** - * @brief Set bit at position i to 1. - */ - inline void set1(const size_t &i) noexcept - { - bits[i >> 6] |= (std::uint64_t(1) << (i & 63)); + // prefix min/max accounting for the current offset + const int cand_min = cur + a.min_prefix; + if (cand_min < mn) { + mn = cand_min; + mn_cnt = a.min_count; + } else if (cand_min == mn) { + mn_cnt += a.min_count; } - /** - * @brief Number of ones in node v computed from size and total excess. - */ - inline uint32_t ones_in_node(const size_t &v) const noexcept - { - return ((int64_t)segment_size_bits[v] + (int64_t)node_total_excess[v]) >> 1; + mx = std::max(mx, cur + a.max_prefix); + cur += a.excess_total; + prev_bit = a.last_bit; + p += 8; + } + + // Tail < 8 bits + while (p < Rb) { + const uint8_t b = bit(p); + if (prev_bit == 1 && b == 0) { + rrc++; } - - /** - * @brief Scan [l..r] inclusive, computing minimum value and how many times it is attained. - * @details Uses 8-bit LUT for speed; outputs cur at end, mn, and count. - */ - inline void scan_range_min_count8(size_t l, const size_t &r, int &cur, int &mn, uint32_t &cnt) const noexcept - { - cur = 0; - mn = INT_MAX; - cnt = 0; - if (r < l) - { - mn = 0; - return; - } - // to byte alignment - while (l <= r && (l & 7)) - { - cur += bit(l) ? +1 : -1; - if (cur < mn) - { - mn = cur; - cnt = 1; - } - else if (cur == mn) - { - ++cnt; - } - ++l; - } - // full bytes - const auto &T = LUT8(); - while (l + 7 <= r) - { - const auto &a = T[get_byte(l)]; - const int cand = cur + a.min_prefix; - if (cand < mn) - { - mn = cand; - cnt = a.min_count; - } - else if (cand == mn) - { - cnt += a.min_count; - } - cur += a.excess_total; - l += 8; - } - // tail - while (l <= r) - { - cur += bit(l) ? +1 : -1; - if (cur < mn) - { - mn = cur; - cnt = 1; - } - else if (cur == mn) - { - ++cnt; - } - ++l; - } - if (mn == INT_MAX) - { - mn = cnt = 0; - } + const int step = b ? +1 : -1; + cur += step; + if (cur < mn) { + mn = cur; + mn_cnt = 1; + } else if (cur == mn) { + ++mn_cnt; } - - /** - * @brief Select q-th minimum (1-based) inside [l..r] inclusive in two 8-bit passes. - * @details First pass finds global minimum, second selects the q-th position. - */ - inline size_t qth_min_in_block(const size_t &l, const size_t &r, size_t q) const noexcept - { - if (r < l || q == 0) - return npos; - - const auto &T = LUT8(); - - int cur = 0, mn = INT_MAX; - size_t p = l; - - while (p <= r && (p & 7)) - { - cur += bit(p) ? +1 : -1; - if (cur < mn) - mn = cur; - ++p; - } - while (p + 7 <= r) - { - const auto &a = T[get_byte(p)]; - mn = std::min(mn, cur + a.min_prefix); - cur += a.excess_total; - p += 8; - } - while (p <= r) - { - cur += bit(p) ? +1 : -1; - if (cur < mn) - mn = cur; - ++p; - } - - cur = 0; - p = l; - - // to byte alignment - while (p <= r && (p & 7)) - { - cur += bit(p) ? +1 : -1; - if (cur == mn) - { - if (--q == 0) - return p; - } - ++p; - } - - // full bytes - while (p + 7 <= r) - { - const uint8_t b = get_byte(p); - const auto &a = T[b]; - const int cand = cur + a.min_prefix; - if (cand == mn) - { - int s = 0; - for (int k = 0; k < 8; ++k) - { - s += ((b >> k) & 1u) ? +1 : -1; - if (s == a.min_prefix) - { - if (--q == 0) - return p + k; - } - } - } - cur += a.excess_total; - p += 8; - } - - // tail - while (p <= r) - { - cur += bit(p) ? +1 : -1; - if (cur == mn) - { - if (--q == 0) - return p; - } - ++p; - } - - return npos; + if (cur > mx) { + mx = cur; } - /** - * @brief Find first minimum value and its first position in [l..r] inclusive using 8-bit LUT. - * @param mn_out Output minimum value (0 if empty). - * @param first_pos Output position of first minimum (npos if none). - */ - inline void first_min_value_pos8(size_t l, const size_t &r, int &mn_out, size_t &first_pos) const noexcept - { - const auto &T = LUT8(); - int cur = 0; - int mn = INT_MAX; - first_pos = npos; - - // to byte allignment - while (l <= r && (l & 7)) - { - cur += bit(l) ? +1 : -1; - if (cur < mn) - { - mn = cur; - first_pos = l; - } - ++l; - } - - // full bytes - while (l + 7 <= r) - { - const auto &a = T[get_byte(l)]; - const int cand = cur + a.min_prefix; - if (cand < mn) - { - mn = cand; - first_pos = l + a.pos_first_min; - } - cur += a.excess_total; - l += 8; - } - - // tail - while (l <= r) - { - cur += bit(l) ? +1 : -1; - if (cur < mn) - { - mn = cur; - first_pos = l; - } - ++l; - } - - mn_out = (mn == INT_MAX ? 0 : mn); - } - - /** - * @brief Find first maximum value and its first position in [l..r] inclusive using 8-bit LUT. - * @param mx_out Output maximum value (0 if empty). - * @param first_pos Output position of first maximum (npos if none). - */ - inline void first_max_value_pos8(size_t l, const size_t &r, int &mx_out, size_t &first_pos) const noexcept - { - const auto &T = LUT8(); - int cur = 0; - int mx = INT_MIN; - first_pos = npos; - - while (l <= r && (l & 7)) - { - cur += bit(l) ? +1 : -1; - if (cur > mx) - { - mx = cur; - first_pos = l; - } - ++l; - } - - while (l + 7 <= r) - { - const auto &a = T[get_byte(l)]; - const int cand = cur + a.max_prefix; - if (cand > mx) - { - mx = cand; - first_pos = l + a.pos_first_max; - } - cur += a.excess_total; - l += 8; - } - - while (l <= r) - { - cur += bit(l) ? +1 : -1; - if (cur > mx) - { - mx = cur; - first_pos = l; - } - ++l; - } - - mx_out = (mx == INT_MIN ? 0 : mx); - } - - /** - * @brief Build the tree arrays and per-node aggregates. - * @details Chooses block_bits honoring @p max_overhead or explicit @p leaf_block_bits, - * allocates arrays, fills leaves via LUT, and builds internal nodes bottom-up. - */ - void build(const size_t &leaf_block_bits, const float &max_overhead) - { - // the lower clamp depends on the desired overhead fraction; otherwise use 64 - const size_t clamp_by_overhead = (max_overhead >= 0.0 ? choose_block_bits_for_overhead(num_bits, max_overhead) : size_t(64)); - - // chosen block_bits: honor an explicit request, but not below clamp_by_overhead - if (leaf_block_bits == 0) - block_bits = std::max(clamp_by_overhead, std::bit_ceil((num_bits <= 1) ? 1 : std::bit_width(num_bits - 1))); - else - block_bits = std::max(clamp_by_overhead, std::bit_ceil(std::max(1, leaf_block_bits))); - -#ifdef DEBUG - // finalizes the achieved overhead percentage - built_overhead = overhead_for(num_bits, block_bits); -#endif - - leaf_count = ceil_div(num_bits, block_bits); - const size_t leaf0 = first_leaf_index(); - const size_t tree_size = leaf0 + leaf_count - 1; - segment_size_bits.assign(tree_size + 1, 0); - node_total_excess.assign(tree_size + 1, 0); - node_min_prefix_excess.assign(tree_size + 1, 0); - node_max_prefix_excess.assign(tree_size + 1, 0); - node_min_count.assign(tree_size + 1, 0); - node_pattern10_count.assign(tree_size + 1, 0); - node_first_bit.assign(tree_size + 1, 0); - node_last_bit.assign(tree_size + 1, 0); - - // leaves - for (size_t k = 0; k < leaf_count; ++k) - { - const size_t v = leaf0 + k; - const size_t Lb = k * block_bits; - const size_t Rb = std::min(num_bits, Lb + block_bits); - segment_size_bits[v] = Rb - Lb; - - if (Lb < Rb) - { - node_first_bit[v] = bit(Lb); - } - - const auto &T = LUT8(); - - int cur = 0, mn = INT_MAX, mx = INT_MIN; - uint32_t mn_cnt = 0; - uint32_t rrc = 0; - - uint8_t prev_bit = 0; - - size_t p = Lb; - - // Full bytes - while (p + 8 <= Rb) - { - const uint8_t b = get_byte(p); - const auto &a = T[b]; - - // internal "10" inside the byte - rrc += a.pattern10_count; - // stitching across the boundary between the previous and current byte (within the segment) - if (prev_bit == 1 && a.first_bit == 0) - rrc++; - - // prefix min/max accounting for the current offset - const int cand_min = cur + a.min_prefix; - if (cand_min < mn) - { - mn = cand_min; - mn_cnt = a.min_count; - } - else if (cand_min == mn) - { - mn_cnt += a.min_count; - } - - mx = std::max(mx, cur + a.max_prefix); - cur += a.excess_total; - prev_bit = a.last_bit; - p += 8; - } - - // Tail < 8 bits - while (p < Rb) - { - const uint8_t b = bit(p); - if (prev_bit == 1 && b == 0) - rrc++; - const int step = b ? +1 : -1; - cur += step; - if (cur < mn) - { - mn = cur; - mn_cnt = 1; - } - else if (cur == mn) - { - ++mn_cnt; - } - if (cur > mx) - mx = cur; - - prev_bit = b; - ++p; - } - - if (Lb < Rb) - node_last_bit[v] = prev_bit; - - node_total_excess[v] = cur; - node_min_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mn); - node_max_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mx); - node_min_count[v] = mn_cnt; - node_pattern10_count[v] = (uint32_t)rrc; - } - // internal nodes - for (size_t v = leaf0 - 1; v >= 1; --v) - { - const size_t Lc = v << 1; - const size_t Rc = Lc | 1; - const bool has_l = (Lc <= tree_size) && segment_size_bits[Lc]; - const bool has_r = (Rc <= tree_size) && segment_size_bits[Rc]; - if (!has_l && !has_r) - { - segment_size_bits[v] = 0; - continue; - } - if (has_l && !has_r) - { - segment_size_bits[v] = segment_size_bits[Lc]; - node_total_excess[v] = node_total_excess[Lc]; - node_min_prefix_excess[v] = node_min_prefix_excess[Lc]; - node_max_prefix_excess[v] = node_max_prefix_excess[Lc]; - node_min_count[v] = node_min_count[Lc]; - node_pattern10_count[v] = node_pattern10_count[Lc]; - node_first_bit[v] = node_first_bit[Lc]; - node_last_bit[v] = node_last_bit[Lc]; - } - else if (!has_l && has_r) - { - segment_size_bits[v] = segment_size_bits[Rc]; - node_total_excess[v] = node_total_excess[Rc]; - node_min_prefix_excess[v] = node_min_prefix_excess[Rc]; - node_max_prefix_excess[v] = node_max_prefix_excess[Rc]; - node_min_count[v] = node_min_count[Rc]; - node_pattern10_count[v] = node_pattern10_count[Rc]; - node_first_bit[v] = node_first_bit[Rc]; - node_last_bit[v] = node_last_bit[Rc]; - } - else - { - segment_size_bits[v] = segment_size_bits[Lc] + segment_size_bits[Rc]; - node_total_excess[v] = node_total_excess[Lc] + node_total_excess[Rc]; - const int m_r = node_total_excess[Lc] + node_min_prefix_excess[Rc]; - const int M_R = node_total_excess[Lc] + node_max_prefix_excess[Rc]; - node_min_prefix_excess[v] = std::min(node_min_prefix_excess[Lc], m_r); - node_max_prefix_excess[v] = std::max(node_max_prefix_excess[Lc], M_R); - node_min_count[v] = (node_min_prefix_excess[Lc] == node_min_prefix_excess[v] ? node_min_count[Lc] : 0) + (m_r == node_min_prefix_excess[v] ? node_min_count[Rc] : 0); - node_pattern10_count[v] = node_pattern10_count[Lc] + node_pattern10_count[Rc] + ((node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u); - node_first_bit[v] = node_first_bit[Lc]; - node_last_bit[v] = node_last_bit[Rc]; - } - if (v == 1) - break; - } - } - }; - -} // namespace pixie + prev_bit = b; + ++p; + } + + if (Lb < Rb) { + node_last_bit[v] = prev_bit; + } + + node_total_excess[v] = cur; + node_min_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mn); + node_max_prefix_excess[v] = (segment_size_bits[v] == 0 ? 0 : mx); + node_min_count[v] = mn_cnt; + node_pattern10_count[v] = (uint32_t)rrc; + } + // internal nodes + for (size_t v = leaf0 - 1; v >= 1; --v) { + const size_t Lc = v << 1; + const size_t Rc = Lc | 1; + const bool has_l = (Lc <= tree_size) && segment_size_bits[Lc]; + const bool has_r = (Rc <= tree_size) && segment_size_bits[Rc]; + if (!has_l && !has_r) { + segment_size_bits[v] = 0; + continue; + } + if (has_l && !has_r) { + segment_size_bits[v] = segment_size_bits[Lc]; + node_total_excess[v] = node_total_excess[Lc]; + node_min_prefix_excess[v] = node_min_prefix_excess[Lc]; + node_max_prefix_excess[v] = node_max_prefix_excess[Lc]; + node_min_count[v] = node_min_count[Lc]; + node_pattern10_count[v] = node_pattern10_count[Lc]; + node_first_bit[v] = node_first_bit[Lc]; + node_last_bit[v] = node_last_bit[Lc]; + } else if (!has_l && has_r) { + segment_size_bits[v] = segment_size_bits[Rc]; + node_total_excess[v] = node_total_excess[Rc]; + node_min_prefix_excess[v] = node_min_prefix_excess[Rc]; + node_max_prefix_excess[v] = node_max_prefix_excess[Rc]; + node_min_count[v] = node_min_count[Rc]; + node_pattern10_count[v] = node_pattern10_count[Rc]; + node_first_bit[v] = node_first_bit[Rc]; + node_last_bit[v] = node_last_bit[Rc]; + } else { + segment_size_bits[v] = segment_size_bits[Lc] + segment_size_bits[Rc]; + node_total_excess[v] = node_total_excess[Lc] + node_total_excess[Rc]; + const int m_r = node_total_excess[Lc] + node_min_prefix_excess[Rc]; + const int M_R = node_total_excess[Lc] + node_max_prefix_excess[Rc]; + node_min_prefix_excess[v] = std::min(node_min_prefix_excess[Lc], m_r); + node_max_prefix_excess[v] = std::max(node_max_prefix_excess[Lc], M_R); + node_min_count[v] = + (node_min_prefix_excess[Lc] == node_min_prefix_excess[v] + ? node_min_count[Lc] + : 0) + + (m_r == node_min_prefix_excess[v] ? node_min_count[Rc] : 0); + node_pattern10_count[v] = + node_pattern10_count[Lc] + node_pattern10_count[Rc] + + ((node_last_bit[Lc] == 1 && node_first_bit[Rc] == 0) ? 1u : 0u); + node_first_bit[v] = node_first_bit[Lc]; + node_last_bit[v] = node_last_bit[Rc]; + } + if (v == 1) { + break; + } + } + } +}; + +} // namespace pixie diff --git a/src/bench_rmm.cpp b/src/bench_rmm.cpp index aba993f..568ad68 100644 --- a/src/bench_rmm.cpp +++ b/src/bench_rmm.cpp @@ -1,434 +1,462 @@ #include -#include -#include -#include -#include + #include -#include -#include #include +#include +#include #include -#include #include +#include +#include +#include +#include +#include + #include "rmm_tree.h" using namespace std; using pixie::RmMTree; -struct Args -{ - int min_exp = 14; - int max_exp = 22; - size_t Q = 200000; - double p1 = 0.5; - uint64_t seed = 42; - size_t block_bits = 64; - int per_octave = 10; - vector explicit_sizes; +struct Args { + int min_exp = 14; + int max_exp = 22; + size_t Q = 200000; + double p1 = 0.5; + uint64_t seed = 42; + size_t block_bits = 64; + int per_octave = 10; + vector explicit_sizes; }; static Args args; -static void parse_args_and_strip(int &argc, char **&argv) -{ - auto getv = [&](const string &key) -> optional - { - string pref = "--" + key + "="; - for (int i = 1; i < argc; ++i) - { - string s = argv[i]; - if (s.rfind(pref, 0) == 0) - return s.substr(pref.size()); - } - return nullopt; - }; - auto strip = [&](const string &key) - { - string pref = "--" + key + "="; - int w = 0; - for (int i = 0; i < argc; ++i) - { - if (i > 0 && string(argv[i]).rfind(pref, 0) == 0) - continue; - argv[w++] = argv[i]; - } - argc = w; - }; - - if (auto v = getv("min-exp")) - args.min_exp = stoi(*v), strip("min-exp"); - if (auto v = getv("max-exp")) - args.max_exp = stoi(*v), strip("max-exp"); - if (auto v = getv("q")) - args.Q = stoull(*v), strip("q"); - if (auto v = getv("p")) - args.p1 = stod(*v), strip("p"); - if (auto v = getv("seed")) - args.seed = stoull(*v), strip("seed"); - if (auto v = getv("block")) - args.block_bits = stoull(*v), strip("block"); - if (auto v = getv("per-octave")) - args.per_octave = stoi(*v), strip("per-octave"); - - if (auto v = getv("sizes")) - { - string s = *v; - strip("sizes"); - size_t pos = 0; - while (pos < s.size()) - { - while (pos < s.size() && (s[pos] == ',' || isspace((unsigned char)s[pos]))) - ++pos; - size_t start = pos; - while (pos < s.size() && isdigit((unsigned char)s[pos])) - ++pos; - if (start < pos) - args.explicit_sizes.push_back(stoull(s.substr(start, pos - start))); - } - sort(args.explicit_sizes.begin(), args.explicit_sizes.end()); - args.explicit_sizes.erase(unique(args.explicit_sizes.begin(), args.explicit_sizes.end()), args.explicit_sizes.end()); +static void parse_args_and_strip(int& argc, char**& argv) { + auto getv = [&](const string& key) -> optional { + string pref = "--" + key + "="; + for (int i = 1; i < argc; ++i) { + string s = argv[i]; + if (s.rfind(pref, 0) == 0) { + return s.substr(pref.size()); + } } + return nullopt; + }; + auto strip = [&](const string& key) { + string pref = "--" + key + "="; + int w = 0; + for (int i = 0; i < argc; ++i) { + if (i > 0 && string(argv[i]).rfind(pref, 0) == 0) { + continue; + } + argv[w++] = argv[i]; + } + argc = w; + }; + + if (auto v = getv("min-exp")) { + args.min_exp = stoi(*v), strip("min-exp"); + } + if (auto v = getv("max-exp")) { + args.max_exp = stoi(*v), strip("max-exp"); + } + if (auto v = getv("q")) { + args.Q = stoull(*v), strip("q"); + } + if (auto v = getv("p")) { + args.p1 = stod(*v), strip("p"); + } + if (auto v = getv("seed")) { + args.seed = stoull(*v), strip("seed"); + } + if (auto v = getv("block")) { + args.block_bits = stoull(*v), strip("block"); + } + if (auto v = getv("per-octave")) { + args.per_octave = stoi(*v), strip("per-octave"); + } + + if (auto v = getv("sizes")) { + string s = *v; + strip("sizes"); + size_t pos = 0; + while (pos < s.size()) { + while (pos < s.size() && + (s[pos] == ',' || isspace((unsigned char)s[pos]))) { + ++pos; + } + size_t start = pos; + while (pos < s.size() && isdigit((unsigned char)s[pos])) { + ++pos; + } + if (start < pos) { + args.explicit_sizes.push_back(stoull(s.substr(start, pos - start))); + } + } + sort(args.explicit_sizes.begin(), args.explicit_sizes.end()); + args.explicit_sizes.erase( + unique(args.explicit_sizes.begin(), args.explicit_sizes.end()), + args.explicit_sizes.end()); + } } -static string make_random_bits(size_t N, double p1, mt19937_64 &rng) -{ - uniform_real_distribution U(0.0, 1.0); - string s; - s.resize(N); - for (size_t i = 0; i < N; ++i) - s[i] = (U(rng) < p1 ? '1' : '0'); - return s; +static string make_random_bits(size_t N, double p1, mt19937_64& rng) { + uniform_real_distribution U(0.0, 1.0); + string s; + s.resize(N); + for (size_t i = 0; i < N; ++i) { + s[i] = (U(rng) < p1 ? '1' : '0'); + } + return s; } -static vector build_size_grid() -{ - if (!args.explicit_sizes.empty()) - { - vector v = args.explicit_sizes; - v.erase(remove(v.begin(), v.end(), 0), v.end()); - return v; - } +static vector build_size_grid() { + if (!args.explicit_sizes.empty()) { + vector v = args.explicit_sizes; + v.erase(remove(v.begin(), v.end(), 0), v.end()); + return v; + } - const int lo = args.min_exp, hi = args.max_exp; - if (args.per_octave <= 0) - { - vector v; - for (int e = lo; e <= hi; ++e) - v.push_back(size_t(1) << e); - return v; + const int lo = args.min_exp, hi = args.max_exp; + if (args.per_octave <= 0) { + vector v; + for (int e = lo; e <= hi; ++e) { + v.push_back(size_t(1) << e); } - - int per_octave_steps = args.per_octave; - set N_cands; - size_t min_N = size_t(1) << lo, max_N = size_t(1) << hi; - - for (int e = lo; e <= hi; ++e) - { - for (int t = 0; t <= per_octave_steps; ++t) - { - long double x = e + (long double)t / (long double)per_octave_steps; - size_t N = (size_t)llround(powl(2.0L, x)); - if (N < min_N) - N = min_N; - if (N > max_N) - N = max_N; - if (N) - N_cands.insert(N); - } - } - - vector v(N_cands.begin(), N_cands.end()); - if (v.front() != min_N) - v.insert(v.begin(), min_N); - if (v.back() != max_N) - v.push_back(max_N); return v; + } + + int per_octave_steps = args.per_octave; + set N_cands; + size_t min_N = size_t(1) << lo, max_N = size_t(1) << hi; + + for (int e = lo; e <= hi; ++e) { + for (int t = 0; t <= per_octave_steps; ++t) { + long double x = e + (long double)t / (long double)per_octave_steps; + size_t N = (size_t)llround(powl(2.0L, x)); + if (N < min_N) { + N = min_N; + } + if (N > max_N) { + N = max_N; + } + if (N) { + N_cands.insert(N); + } + } + } + + vector v(N_cands.begin(), N_cands.end()); + if (v.front() != min_N) { + v.insert(v.begin(), min_N); + } + if (v.back() != max_N) { + v.push_back(max_N); + } + return v; } -struct Pools -{ - vector inds_any; - vector inds; - vector inds_1N; - vector deltas; - vector> segs; +struct Pools { + vector inds_any; + vector inds; + vector inds_1N; + vector deltas; + vector> segs; - vector ks1, ks0, ks10; - vector minselect_q; + vector ks1, ks0, ks10; + vector minselect_q; }; -struct Dataset -{ - size_t N{}; - string bits; - RmMTree t; +struct Dataset { + size_t N{}; + string bits; + RmMTree t; - size_t cnt1{}, cnt0{}, cnt10{}; - Pools pool; + size_t cnt1{}, cnt0{}, cnt10{}; + Pools pool; }; static vector> keepalive; -static size_t count10(const string &s) -{ - size_t c = 0; - if (s.size() < 2) - return 0; - for (size_t i = 0; i + 1 < s.size(); ++i) - if (s[i] == '1' && s[i + 1] == '0') - ++c; - return c; +static size_t count10(const string& s) { + size_t c = 0; + if (s.size() < 2) { + return 0; + } + for (size_t i = 0; i + 1 < s.size(); ++i) { + if (s[i] == '1' && s[i + 1] == '0') { + ++c; + } + } + return c; } -static Dataset build_dataset(size_t N) -{ - mt19937_64 rng(args.seed ^ (uint64_t)N * 0x9E3779B185EBCA87ull); - - Dataset d; - d.N = N; - d.bits = make_random_bits(N, args.p1, rng); - - if (args.block_bits == 0) - d.t = RmMTree(d.bits, 0, -1.0f); - else - d.t = RmMTree(d.bits, args.block_bits); - - d.cnt1 = d.t.rank1(N); - d.cnt0 = N - d.cnt1; - d.cnt10 = count10(d.bits); - - const size_t L = min(args.Q, 32768); - - uniform_int_distribution ind_dist_incl(0, N ? N : 0); - uniform_int_distribution ind_dist(0, N ? (N - 1) : 0); - uniform_int_distribution ind_dist_1N(1, N ? N : 1); - uniform_int_distribution d_dist(-8, +8); - - d.pool.inds_any.resize(L); - d.pool.inds.resize(L); - d.pool.inds_1N.resize(L); - d.pool.deltas.resize(L); - d.pool.segs.resize(L); - - auto rand_ij = [&]() -> pair - { - if (N == 0) - return {0, 0}; - size_t a = ind_dist(rng), b = ind_dist(rng); - if (a > b) - swap(a, b); - return {a, b}; - }; - - for (size_t i = 0; i < L; ++i) - { - d.pool.inds_any[i] = ind_dist_incl(rng); - d.pool.inds[i] = (N ? ind_dist(rng) : 0); - d.pool.inds_1N[i] = (N ? ind_dist_1N(rng) : 0); - d.pool.deltas[i] = d_dist(rng); - d.pool.segs[i] = rand_ij(); - } +static Dataset build_dataset(size_t N) { + mt19937_64 rng(args.seed ^ (uint64_t)N * 0x9E3779B185EBCA87ull); - auto fill_ks = [&](size_t total, vector &out) - { - out.resize(L); - if (total == 0) - { - fill(out.begin(), out.end(), 1); - return; - } - uniform_int_distribution dist(1, total); - for (size_t i = 0; i < L; ++i) - out[i] = dist(rng); - }; - fill_ks(d.cnt1, d.pool.ks1); - fill_ks(d.cnt0, d.pool.ks0); - fill_ks(d.cnt10, d.pool.ks10); - - d.pool.minselect_q.resize(L); - for (size_t i = 0; i < L; ++i) - { - auto [l, r] = d.pool.segs[i]; - size_t c = d.t.mincount(l, r); - if (c == 0) - c = 1; - uniform_int_distribution uq(1, c); - d.pool.minselect_q[i] = uq(rng); + Dataset d; + d.N = N; + d.bits = make_random_bits(N, args.p1, rng); + + if (args.block_bits == 0) { + d.t = RmMTree(d.bits, 0, -1.0f); + } else { + d.t = RmMTree(d.bits, args.block_bits); + } + + d.cnt1 = d.t.rank1(N); + d.cnt0 = N - d.cnt1; + d.cnt10 = count10(d.bits); + + const size_t L = min(args.Q, 32768); + + uniform_int_distribution ind_dist_incl(0, N ? N : 0); + uniform_int_distribution ind_dist(0, N ? (N - 1) : 0); + uniform_int_distribution ind_dist_1N(1, N ? N : 1); + uniform_int_distribution d_dist(-8, +8); + + d.pool.inds_any.resize(L); + d.pool.inds.resize(L); + d.pool.inds_1N.resize(L); + d.pool.deltas.resize(L); + d.pool.segs.resize(L); + + auto rand_ij = [&]() -> pair { + if (N == 0) { + return {0, 0}; + } + size_t a = ind_dist(rng), b = ind_dist(rng); + if (a > b) { + swap(a, b); + } + return {a, b}; + }; + + for (size_t i = 0; i < L; ++i) { + d.pool.inds_any[i] = ind_dist_incl(rng); + d.pool.inds[i] = (N ? ind_dist(rng) : 0); + d.pool.inds_1N[i] = (N ? ind_dist_1N(rng) : 0); + d.pool.deltas[i] = d_dist(rng); + d.pool.segs[i] = rand_ij(); + } + + auto fill_ks = [&](size_t total, vector& out) { + out.resize(L); + if (total == 0) { + fill(out.begin(), out.end(), 1); + return; } + uniform_int_distribution dist(1, total); + for (size_t i = 0; i < L; ++i) { + out[i] = dist(rng); + } + }; + fill_ks(d.cnt1, d.pool.ks1); + fill_ks(d.cnt0, d.pool.ks0); + fill_ks(d.cnt10, d.pool.ks10); + + d.pool.minselect_q.resize(L); + for (size_t i = 0; i < L; ++i) { + auto [l, r] = d.pool.segs[i]; + size_t c = d.t.mincount(l, r); + if (c == 0) { + c = 1; + } + uniform_int_distribution uq(1, c); + d.pool.minselect_q[i] = uq(rng); + } - return d; + return d; } template -static void register_op(const string &op, shared_ptr data, Fn &&body) -{ - auto idx_ptr = make_shared(0); - - auto *b = benchmark::RegisterBenchmark( - op.c_str(), - [data, idx_ptr, body](benchmark::State &state) - { - const Dataset &D = *data; - for (auto _ : state) - { - size_t i = (*idx_ptr)++; - body(state, D, i); - } - state.counters["N"] = static_cast(D.N); - state.counters["seed"] = static_cast(args.seed); - state.counters["block_bits"] = static_cast(args.block_bits); - }); - - b->Unit(benchmark::kNanosecond); +static void register_op(const string& op, shared_ptr data, Fn&& body) { + auto idx_ptr = make_shared(0); + + auto* b = benchmark::RegisterBenchmark( + op.c_str(), [data, idx_ptr, body](benchmark::State& state) { + const Dataset& D = *data; + for (auto _ : state) { + size_t i = (*idx_ptr)++; + body(state, D, i); + } + state.counters["N"] = static_cast(D.N); + state.counters["seed"] = static_cast(args.seed); + state.counters["block_bits"] = static_cast(args.block_bits); + }); + + b->Unit(benchmark::kNanosecond); } -static void register_all() -{ - auto Ns = build_size_grid(); - for (size_t N : Ns) - { - auto data = make_shared(build_dataset(N)); - keepalive.push_back(data); - - const auto &P = data->pool; - - register_op("rank1", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.rank1(P.inds_any[k % P.inds_any.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("rank0", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.rank0(P.inds_any[k % P.inds_any.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("select1", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.select1(P.ks1[k % P.ks1.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("select0", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.select0(P.ks0[k % P.ks0.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("rank10", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.rank10(P.inds_any[k % P.inds_any.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("select10", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.select10(P.ks10[k % P.ks10.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("excess", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.excess(P.inds_any[k % P.inds_any.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("fwdsearch", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.fwdsearch(P.inds[k % P.inds.size()], P.deltas[k % P.deltas.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("bwdsearch", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.bwdsearch(P.inds_1N[k % P.inds_1N.size()], P.deltas[k % P.deltas.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("range_min_query_pos", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto [i, j] = P.segs[k % P.segs.size()]; - auto r = D.t.range_min_query_pos(i, j); - benchmark::DoNotOptimize(r); }); - - register_op("range_min_query_val", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto [i, j] = P.segs[k % P.segs.size()]; - auto r = D.t.range_min_query_val(i, j); - benchmark::DoNotOptimize(r); }); - - register_op("range_max_query_pos", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto [i, j] = P.segs[k % P.segs.size()]; - auto r = D.t.range_max_query_pos(i, j); - benchmark::DoNotOptimize(r); }); - - register_op("range_max_query_val", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto [i, j] = P.segs[k % P.segs.size()]; - auto r = D.t.range_max_query_val(i, j); - benchmark::DoNotOptimize(r); }); - - register_op("mincount", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto [i, j] = P.segs[k % P.segs.size()]; - auto r = D.t.mincount(i, j); - benchmark::DoNotOptimize(r); }); - - register_op("minselect", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - const size_t idx = k % P.segs.size(); - auto [i, j] = P.segs[idx]; - auto q = P.minselect_q[idx]; - auto r = D.t.minselect(i, j, q); - benchmark::DoNotOptimize(r); }); - - register_op("close", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - if (D.N == 0) { benchmark::DoNotOptimize(0); return; } - auto i = P.inds[k % P.inds.size()]; - auto r = D.t.close(i); - benchmark::DoNotOptimize(r); }); - - register_op("open", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.open(P.inds_1N[k % P.inds_1N.size()]); - benchmark::DoNotOptimize(r); }); - - register_op("enclose", data, [&](benchmark::State &, const Dataset &D, size_t k) - { - auto r = D.t.enclose(P.inds_1N[k % P.inds_1N.size()]); - benchmark::DoNotOptimize(r); }); - } +static void register_all() { + auto Ns = build_size_grid(); + for (size_t N : Ns) { + auto data = make_shared(build_dataset(N)); + keepalive.push_back(data); + + const auto& P = data->pool; + + register_op("rank1", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.rank1(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("rank0", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.rank0(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("select1", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.select1(P.ks1[k % P.ks1.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("select0", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.select0(P.ks0[k % P.ks0.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("rank10", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.rank10(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("select10", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.select10(P.ks10[k % P.ks10.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("excess", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.excess(P.inds_any[k % P.inds_any.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("fwdsearch", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.fwdsearch(P.inds[k % P.inds.size()], + P.deltas[k % P.deltas.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("bwdsearch", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.bwdsearch(P.inds_1N[k % P.inds_1N.size()], + P.deltas[k % P.deltas.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("range_min_query_pos", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_min_query_pos(i, j); + benchmark::DoNotOptimize(r); + }); + + register_op("range_min_query_val", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_min_query_val(i, j); + benchmark::DoNotOptimize(r); + }); + + register_op("range_max_query_pos", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_max_query_pos(i, j); + benchmark::DoNotOptimize(r); + }); + + register_op("range_max_query_val", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.range_max_query_val(i, j); + benchmark::DoNotOptimize(r); + }); + + register_op("mincount", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto [i, j] = P.segs[k % P.segs.size()]; + auto r = D.t.mincount(i, j); + benchmark::DoNotOptimize(r); + }); + + register_op("minselect", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + const size_t idx = k % P.segs.size(); + auto [i, j] = P.segs[idx]; + auto q = P.minselect_q[idx]; + auto r = D.t.minselect(i, j, q); + benchmark::DoNotOptimize(r); + }); + + register_op("close", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + if (D.N == 0) { + benchmark::DoNotOptimize(0); + return; + } + auto i = P.inds[k % P.inds.size()]; + auto r = D.t.close(i); + benchmark::DoNotOptimize(r); + }); + + register_op("open", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.open(P.inds_1N[k % P.inds_1N.size()]); + benchmark::DoNotOptimize(r); + }); + + register_op("enclose", data, + [&](benchmark::State&, const Dataset& D, size_t k) { + auto r = D.t.enclose(P.inds_1N[k % P.inds_1N.size()]); + benchmark::DoNotOptimize(r); + }); + } } -int main(int argc, char **argv) -{ - parse_args_and_strip(argc, argv); - - auto has = [&](const char *key) - { - string p1 = string(key) + "="; - for (int i = 1; i < argc; ++i) - { - string s = argv[i]; - if (s == key || s.rfind(p1, 0) == 0) - return true; - } - return false; - }; - - static vector extra; - if (!has("--benchmark_format")) - extra.emplace_back("--benchmark_format=csv"); - if (!has("--benchmark_counters_tabular")) - extra.emplace_back("--benchmark_counters_tabular=true"); - if (!has("--benchmark_time_unit")) - extra.emplace_back("--benchmark_time_unit=ns"); - - static vector argv_vec; - argv_vec.assign(argv, argv + argc); - for (auto &s : extra) - argv_vec.push_back(s.data()); - argv_vec.push_back(nullptr); - argc = (int)argv_vec.size() - 1; - argv = argv_vec.data(); - - benchmark::Initialize(&argc, argv); - register_all(); - benchmark::RunSpecifiedBenchmarks(); - benchmark::Shutdown(); - return 0; +int main(int argc, char** argv) { + parse_args_and_strip(argc, argv); + + auto has = [&](const char* key) { + string p1 = string(key) + "="; + for (int i = 1; i < argc; ++i) { + string s = argv[i]; + if (s == key || s.rfind(p1, 0) == 0) { + return true; + } + } + return false; + }; + + static vector extra; + if (!has("--benchmark_format")) { + extra.emplace_back("--benchmark_format=csv"); + } + if (!has("--benchmark_counters_tabular")) { + extra.emplace_back("--benchmark_counters_tabular=true"); + } + if (!has("--benchmark_time_unit")) { + extra.emplace_back("--benchmark_time_unit=ns"); + } + + static vector argv_vec; + argv_vec.assign(argv, argv + argc); + for (auto& s : extra) { + argv_vec.push_back(s.data()); + } + argv_vec.push_back(nullptr); + argc = (int)argv_vec.size() - 1; + argv = argv_vec.data(); + + benchmark::Initialize(&argc, argv); + register_all(); + benchmark::RunSpecifiedBenchmarks(); + benchmark::Shutdown(); + return 0; } diff --git a/src/test_rmm.cpp b/src/test_rmm.cpp index 7b75808..6fe165d 100644 --- a/src/test_rmm.cpp +++ b/src/test_rmm.cpp @@ -1,611 +1,572 @@ #include + #include #include #include #include #include +#include #include #include #include -#include #include #include -#include "rmm_tree.h" + #include "naive_rmm_tree.h" +#include "rmm_tree.h" using std::size_t; -static std::string bits_to_parens(const std::string &bits) -{ - std::string s; - s.reserve(bits.size()); - for (char c : bits) - s.push_back(c == '1' ? '(' : ')'); - return s; +static std::string bits_to_parens(const std::string& bits) { + std::string s; + s.reserve(bits.size()); + for (char c : bits) { + s.push_back(c == '1' ? '(' : ')'); + } + return s; } -static std::string vecbits_to_string(const std::vector &v) -{ - std::string s; - s.resize(v.size()); - for (size_t i = 0; i < v.size(); ++i) - s[i] = v[i] ? '1' : '0'; - return s; +static std::string vecbits_to_string(const std::vector& v) { + std::string s; + s.resize(v.size()); + for (size_t i = 0; i < v.size(); ++i) { + s[i] = v[i] ? '1' : '0'; + } + return s; } -static std::vector pack_words_lsb_first(const std::string &bits) -{ - const size_t n = bits.size(); - std::vector w((n + 63) / 64, 0); - for (size_t i = 0; i < n; ++i) - if (bits[i] == '1') - w[i >> 6] |= (std::uint64_t(1) << (i & 63)); - return w; +static std::vector pack_words_lsb_first( + const std::string& bits) { + const size_t n = bits.size(); + std::vector w((n + 63) / 64, 0); + for (size_t i = 0; i < n; ++i) { + if (bits[i] == '1') { + w[i >> 6] |= (std::uint64_t(1) << (i & 63)); + } + } + return w; } -static std::string random_bits(std::mt19937_64 &rng, size_t n) -{ - std::uniform_int_distribution b01(0, 1); - std::string s; - s.resize(n); - for (size_t i = 0; i < n; i++) - s[i] = char('0' + b01(rng)); - return s; +static std::string random_bits(std::mt19937_64& rng, size_t n) { + std::uniform_int_distribution b01(0, 1); + std::string s; + s.resize(n); + for (size_t i = 0; i < n; i++) { + s[i] = char('0' + b01(rng)); + } + return s; } -static std::string random_dyck_bits(std::mt19937_64 &rng, size_t m) -{ - std::string s(2 * m, '0'); - if (m == 0) - return s; - size_t opens_left = m; - size_t closes_left = m; - int h = 0; - std::bernoulli_distribution coin(0.5); - for (size_t pos = 0; pos < 2 * m; ++pos) - { - if (opens_left == 0) - { - s[pos] = '0'; - --closes_left; - --h; - continue; - } - if (closes_left == 0) - { - s[pos] = '1'; - --opens_left; - ++h; - continue; - } - if (h == 0) - { - s[pos] = '1'; - --opens_left; - ++h; - continue; - } - if ((size_t)h == closes_left) - { - s[pos] = '0'; - --closes_left; - --h; - continue; - } - if (coin(rng)) - { - s[pos] = '1'; - --opens_left; - ++h; - } - else - { - s[pos] = '0'; - --closes_left; - --h; - } - } +static std::string random_dyck_bits(std::mt19937_64& rng, size_t m) { + std::string s(2 * m, '0'); + if (m == 0) { return s; + } + size_t opens_left = m; + size_t closes_left = m; + int h = 0; + std::bernoulli_distribution coin(0.5); + for (size_t pos = 0; pos < 2 * m; ++pos) { + if (opens_left == 0) { + s[pos] = '0'; + --closes_left; + --h; + continue; + } + if (closes_left == 0) { + s[pos] = '1'; + --opens_left; + ++h; + continue; + } + if (h == 0) { + s[pos] = '1'; + --opens_left; + ++h; + continue; + } + if ((size_t)h == closes_left) { + s[pos] = '0'; + --closes_left; + --h; + continue; + } + if (coin(rng)) { + s[pos] = '1'; + --opens_left; + ++h; + } else { + s[pos] = '0'; + --closes_left; + --h; + } + } + return s; } -struct Limits -{ - size_t CASES = 150; - size_t OPS_PER_CASE = 600; - size_t MAX_N = 20000; +struct Limits { + size_t CASES = 150; + size_t OPS_PER_CASE = 600; + size_t MAX_N = 20000; }; -static Limits load_limits_from_env() -{ - Limits L; - if (const char *s = std::getenv("RMM_CASES")) - L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); - if (const char *s = std::getenv("RMM_OPS")) - L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); - if (const char *s = std::getenv("RMM_MAX_N")) - L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); - return L; +static Limits load_limits_from_env() { + Limits L; + if (const char* s = std::getenv("RMM_CASES")) { + L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); + } + if (const char* s = std::getenv("RMM_OPS")) { + L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); + } + if (const char* s = std::getenv("RMM_MAX_N")) { + L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); + } + return L; } -static uint64_t choose_seed() -{ - if (const char *s = std::getenv("RMM_SEED")) - return std::strtoull(s, nullptr, 10); - std::random_device rd; - return ((uint64_t)rd() << 32) ^ (uint64_t)rd() ^ - (uint64_t)std::chrono::high_resolution_clock::now().time_since_epoch().count(); +static uint64_t choose_seed() { + if (const char* s = std::getenv("RMM_SEED")) { + return std::strtoull(s, nullptr, 10); + } + std::random_device rd; + return ((uint64_t)rd() << 32) ^ (uint64_t)rd() ^ + (uint64_t)std::chrono::high_resolution_clock::now() + .time_since_epoch() + .count(); } -static void run_case_and_compare(const std::string &bits, std::mt19937_64 &rng, size_t ops_per_case, uint64_t seed) -{ - const bool use_words = std::uniform_int_distribution(0, 1)(rng); - pixie::RmMTree rm; - NaiveRmM nv; - if (use_words) - { - auto words = pack_words_lsb_first(bits); - rm = pixie::RmMTree(words, bits.size()); - nv = NaiveRmM(words, bits.size()); +static void run_case_and_compare(const std::string& bits, + std::mt19937_64& rng, + size_t ops_per_case, + uint64_t seed) { + const bool use_words = std::uniform_int_distribution(0, 1)(rng); + pixie::RmMTree rm; + NaiveRmM nv; + if (use_words) { + auto words = pack_words_lsb_first(bits); + rm = pixie::RmMTree(words, bits.size()); + nv = NaiveRmM(words, bits.size()); + } else { + rm = pixie::RmMTree(bits); + nv = NaiveRmM(bits); + } + + const size_t N = bits.size(); + const size_t ones = nv.rank1(N); + const size_t zeros = N - ones; + const size_t pairs10 = (N >= 2 ? nv.rank10(N) : 0); + + std::uniform_int_distribution pos_i(0, N); + std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); + std::uniform_int_distribution d_dist(-(int)std::min(N, 200), + (int)std::min(N, 200)); + + for (size_t q = 0; q < ops_per_case; ++q) { + int which = std::uniform_int_distribution(0, 17)(rng); + + size_t i = 0, j = 0; + if (N > 0) { + i = pos_i_nz(rng); + j = pos_i_nz(rng); + if (i > j) { + std::swap(i, j); + } } - else - { - rm = pixie::RmMTree(bits); - nv = NaiveRmM(bits); + + auto trace_header = ::testing::Message() + << "\nseed=" << seed << " | N=" << N + << " | use_words=" << (use_words ? 1 : 0) + << "\nbits: " << bits + << "\nparens: " << bits_to_parens(bits) + << "\nwhich=" << which << " (0..17)\n"; + + switch (which) { + case 0: { // rank1 + size_t x = pos_i(rng); + auto a = nv.rank1(x), b = rm.rank1(x); + EXPECT_EQ(a, b) << trace_header << "op=rank1(" << x << ")"; + } break; + + case 1: { // rank0 + size_t x = pos_i(rng); + auto a = nv.rank0(x), b = rm.rank0(x); + EXPECT_EQ(a, b) << trace_header << "op=rank0(" << x << ")"; + } break; + + case 2: { // select1 + size_t k = std::uniform_int_distribution(0, ones + 3)(rng); + auto a = nv.select1(k), b = rm.select1(k); + EXPECT_EQ(a, b) << trace_header << "op=select1(" << k << ")"; + } break; + + case 3: { // select0 + size_t k = std::uniform_int_distribution(0, zeros + 3)(rng); + auto a = nv.select0(k), b = rm.select0(k); + EXPECT_EQ(a, b) << trace_header << "op=select0(" << k << ")"; + } break; + + case 4: { // rank10 + size_t x = + (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); + auto a = nv.rank10(x), b = rm.rank10(x); + EXPECT_EQ(a, b) << trace_header << "op=rank10(" << x << ")"; + } break; + + case 5: { // select10 + size_t k = std::uniform_int_distribution(0, pairs10 + 3)(rng); + auto a = nv.select10(k), b = rm.select10(k); + EXPECT_EQ(a, b) << trace_header << "op=select10(" << k << ")"; + } break; + + case 6: { // excess + size_t x = pos_i(rng); + auto a = nv.excess(x), b = rm.excess(x); + EXPECT_EQ(a, b) << trace_header << "op=excess(" << x << ")"; + } break; + + case 7: { // fwdsearch + if (N == 0) { + break; + } + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.fwdsearch(start, d), b = rm.fwdsearch(start, d); + EXPECT_EQ(a, b) << trace_header << "op=fwdsearch(" << start << "," << d + << ")"; + } break; + + case 8: { // bwdsearch + if (N == 0) { + break; + } + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + auto a = nv.bwdsearch(start, d), b = rm.bwdsearch(start, d); + EXPECT_EQ(a, b) << trace_header << "op=bwdsearch(" << start << "," << d + << ")"; + } break; + + case 9: { // range_min_query_pos + if (N == 0) { + break; + } + auto a = nv.range_min_query_pos(i, j), b = rm.range_min_query_pos(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_min_query_pos(" << i << "," + << j << ")"; + } break; + + case 10: { // range_min_query_val + if (N == 0) { + break; + } + auto a = nv.range_min_query_val(i, j), b = rm.range_min_query_val(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_min_query_val(" << i << "," + << j << ")"; + } break; + + case 11: { // mincount + if (N == 0) { + break; + } + auto a = nv.mincount(i, j), b = rm.mincount(i, j); + EXPECT_EQ(a, b) << trace_header << "op=mincount(" << i << "," << j + << ")"; + } break; + + case 12: { // minselect + if (N == 0) { + break; + } + size_t cnt = nv.mincount(i, j); + size_t k = cnt == 0 + ? 1 + : std::uniform_int_distribution(1, cnt + 1)(rng); + auto a = nv.minselect(i, j, k), b = rm.minselect(i, j, k); + EXPECT_EQ(a, b) << trace_header << "op=minselect(" << i << "," << j + << "," << k << ")"; + } break; + + case 13: { // range_max_query_pos + if (N == 0) { + break; + } + auto a = nv.range_max_query_pos(i, j), b = rm.range_max_query_pos(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_max_query_pos(" << i << "," + << j << ")"; + } break; + + case 14: { // range_max_query_val + if (N == 0) { + break; + } + auto a = nv.range_max_query_val(i, j), b = rm.range_max_query_val(i, j); + EXPECT_EQ(a, b) << trace_header << "op=range_max_query_val(" << i << "," + << j << ")"; + } break; + + case 15: { // close + if (N == 0) { + break; + } + size_t x = pos_i_nz(rng); + auto a = nv.close(x), b = rm.close(x); + EXPECT_EQ(a, b) << trace_header << "op=close(" << x << ")"; + } break; + + case 16: { // open + if (N == 0) { + break; + } + size_t x = pos_i(rng); + auto a = nv.open(x), b = rm.open(x); + EXPECT_EQ(a, b) << trace_header << "op=open(" << x << ")"; + } break; + + case 17: { // enclose + if (N == 0) { + break; + } + size_t x = pos_i(rng); + auto a = nv.enclose(x), b = rm.enclose(x); + EXPECT_EQ(a, b) << trace_header << "op=enclose(" << x << ")"; + } break; } + } +} - const size_t N = bits.size(); - const size_t ones = nv.rank1(N); - const size_t zeros = N - ones; - const size_t pairs10 = (N >= 2 ? nv.rank10(N) : 0); - - std::uniform_int_distribution pos_i(0, N); - std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); - std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); - - for (size_t q = 0; q < ops_per_case; ++q) - { - int which = std::uniform_int_distribution(0, 17)(rng); - - size_t i = 0, j = 0; - if (N > 0) - { - i = pos_i_nz(rng); - j = pos_i_nz(rng); - if (i > j) - std::swap(i, j); - } +class RmMRandomTest : public ::testing::Test { + protected: + uint64_t seed{}; + std::mt19937_64 rng; + Limits L; + void SetUp() override { + L = load_limits_from_env(); + seed = choose_seed(); + rng.seed(seed); + std::cerr << "[ RmMRandomTest ] seed=" << seed << " CASES=" << L.CASES + << " OPS=" << L.OPS_PER_CASE << " MAX_N=" << L.MAX_N << "\n"; + } +}; - auto trace_header = ::testing::Message() - << "\nseed=" << seed - << " | N=" << N - << " | use_words=" << (use_words ? 1 : 0) - << "\nbits: " << bits - << "\nparens: " << bits_to_parens(bits) - << "\nwhich=" << which << " (0..17)\n"; - - switch (which) - { - case 0: - { // rank1 - size_t x = pos_i(rng); - auto a = nv.rank1(x), b = rm.rank1(x); - EXPECT_EQ(a, b) << trace_header << "op=rank1(" << x << ")"; - } - break; +TEST_F(RmMRandomTest, RandomMixedBits) { + std::uniform_int_distribution len_u(1, (int)L.MAX_N); + for (size_t t = 0; t < L.CASES; ++t) { + const size_t n = (size_t)len_u(rng); + const std::string bits = random_bits(rng, n); + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + } +} - case 1: - { // rank0 - size_t x = pos_i(rng); - auto a = nv.rank0(x), b = rm.rank0(x); - EXPECT_EQ(a, b) << trace_header << "op=rank0(" << x << ")"; - } - break; +TEST_F(RmMRandomTest, RandomDyckBits) { + std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); + for (size_t t = 0; t < L.CASES; ++t) { + size_t m = 1 + (size_t)len_even(rng); + std::string bits = random_dyck_bits(rng, m); + if (bits.empty()) { + bits = "10"; + } + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + } +} - case 2: - { // select1 - size_t k = std::uniform_int_distribution(0, ones + 3)(rng); - auto a = nv.select1(k), b = rm.select1(k); - EXPECT_EQ(a, b) << trace_header << "op=select1(" << k << ")"; - } - break; +TEST_F(RmMRandomTest, ShortInputs) { + for (size_t n = 1; n <= 8; ++n) { + const size_t total = (n ? (1ull << n) : 1ull); + for (size_t mask = 0; mask < total; ++mask) { + std::string bits; + bits.resize(n); + for (size_t i = 0; i < n; ++i) { + bits[i] = ((mask >> i) & 1ull) ? '1' : '0'; + } + { + SCOPED_TRACE(::testing::Message() + << "short-inputs:string bits=" << bits); + run_case_and_compare(bits, rng, /*ops_per_case=*/200, + /*seed=*/0xC0FFEEull); + } + { + SCOPED_TRACE(::testing::Message() + << "short-inputs:words bits=" << bits); + run_case_and_compare(bits, rng, /*ops_per_case=*/200, + /*seed=*/0xC0FFEEull); + } + } + } +} - case 3: - { // select0 - size_t k = std::uniform_int_distribution(0, zeros + 3)(rng); - auto a = nv.select0(k), b = rm.select0(k); - EXPECT_EQ(a, b) << trace_header << "op=select0(" << k << ")"; - } +static void run_case_string_vs_words(const std::string& bits, + std::mt19937_64& rng) { + const size_t N = bits.size(); + pixie::RmMTree rm_s(bits); + auto words = pack_words_lsb_first(bits); + pixie::RmMTree rm_w(words, N); + + std::uniform_int_distribution pos_i(0, N); + std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); + std::uniform_int_distribution d_dist(-(int)std::min(N, 200), + (int)std::min(N, 200)); + + for (int t = 0; t < 128; ++t) { + int which = std::uniform_int_distribution(0, 10)(rng); + size_t i = 0, j = 0; + if (N > 0) { + i = pos_i_nz(rng); + j = pos_i_nz(rng); + if (i > j) { + std::swap(i, j); + } + } + switch (which) { + case 0: { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.rank1(x), rm_w.rank1(x)); break; - - case 4: - { // rank10 - size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); - auto a = nv.rank10(x), b = rm.rank10(x); - EXPECT_EQ(a, b) << trace_header << "op=rank10(" << x << ")"; - } + } + case 1: { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.rank0(x), rm_w.rank0(x)); break; - - case 5: - { // select10 - size_t k = std::uniform_int_distribution(0, pairs10 + 3)(rng); - auto a = nv.select10(k), b = rm.select10(k); - EXPECT_EQ(a, b) << trace_header << "op=select10(" << k << ")"; - } + } + case 2: { + size_t k = std::uniform_int_distribution(0, N + 3)(rng); + EXPECT_EQ(rm_s.select1(k), rm_w.select1(k)); break; - - case 6: - { // excess - size_t x = pos_i(rng); - auto a = nv.excess(x), b = rm.excess(x); - EXPECT_EQ(a, b) << trace_header << "op=excess(" << x << ")"; - } + } + case 3: { + size_t k = std::uniform_int_distribution(0, N + 3)(rng); + EXPECT_EQ(rm_s.select0(k), rm_w.select0(k)); break; - - case 7: - { // fwdsearch - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - auto a = nv.fwdsearch(start, d), b = rm.fwdsearch(start, d); - EXPECT_EQ(a, b) << trace_header << "op=fwdsearch(" << start << "," << d << ")"; - } + } + case 4: { + size_t x = + (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); + EXPECT_EQ(rm_s.rank10(x), rm_w.rank10(x)); break; - - case 8: - { // bwdsearch - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - auto a = nv.bwdsearch(start, d), b = rm.bwdsearch(start, d); - EXPECT_EQ(a, b) << trace_header << "op=bwdsearch(" << start << "," << d << ")"; - } + } + case 5: { + size_t k = std::uniform_int_distribution(0, N)(rng); + EXPECT_EQ(rm_s.select10(k), rm_w.select10(k)); break; - - case 9: - { // range_min_query_pos - if (N == 0) - break; - auto a = nv.range_min_query_pos(i, j), b = rm.range_min_query_pos(i, j); - EXPECT_EQ(a, b) << trace_header << "op=range_min_query_pos(" << i << "," << j << ")"; - } + } + case 6: { + size_t x = pos_i(rng); + EXPECT_EQ(rm_s.excess(x), rm_w.excess(x)); break; - - case 10: - { // range_min_query_val - if (N == 0) - break; - auto a = nv.range_min_query_val(i, j), b = rm.range_min_query_val(i, j); - EXPECT_EQ(a, b) << trace_header << "op=range_min_query_val(" << i << "," << j << ")"; - } - break; - - case 11: - { // mincount - if (N == 0) - break; - auto a = nv.mincount(i, j), b = rm.mincount(i, j); - EXPECT_EQ(a, b) << trace_header << "op=mincount(" << i << "," << j << ")"; - } - break; - - case 12: - { // minselect - if (N == 0) - break; - size_t cnt = nv.mincount(i, j); - size_t k = cnt == 0 ? 1 : std::uniform_int_distribution(1, cnt + 1)(rng); - auto a = nv.minselect(i, j, k), b = rm.minselect(i, j, k); - EXPECT_EQ(a, b) << trace_header << "op=minselect(" << i << "," << j << "," << k << ")"; - } - break; - - case 13: - { // range_max_query_pos - if (N == 0) - break; - auto a = nv.range_max_query_pos(i, j), b = rm.range_max_query_pos(i, j); - EXPECT_EQ(a, b) << trace_header << "op=range_max_query_pos(" << i << "," << j << ")"; - } - break; - - case 14: - { // range_max_query_val - if (N == 0) - break; - auto a = nv.range_max_query_val(i, j), b = rm.range_max_query_val(i, j); - EXPECT_EQ(a, b) << trace_header << "op=range_max_query_val(" << i << "," << j << ")"; - } + } + case 7: { + if (N == 0) { + break; + } + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + EXPECT_EQ(rm_s.fwdsearch(start, d), rm_w.fwdsearch(start, d)); break; - - case 15: - { // close - if (N == 0) - break; - size_t x = pos_i_nz(rng); - auto a = nv.close(x), b = rm.close(x); - EXPECT_EQ(a, b) << trace_header << "op=close(" << x << ")"; - } + } + case 8: { + if (N == 0) { + break; + } + size_t start = pos_i_nz(rng); + int d = d_dist(rng); + EXPECT_EQ(rm_s.bwdsearch(start, d), rm_w.bwdsearch(start, d)); break; - - case 16: - { // open - if (N == 0) - break; - size_t x = pos_i(rng); - auto a = nv.open(x), b = rm.open(x); - EXPECT_EQ(a, b) << trace_header << "op=open(" << x << ")"; + } + case 9: { + if (N == 0) { + break; } + EXPECT_EQ(rm_s.range_min_query_pos(i, j), + rm_w.range_min_query_pos(i, j)); break; - - case 17: - { // enclose - if (N == 0) - break; - size_t x = pos_i(rng); - auto a = nv.enclose(x), b = rm.enclose(x); - EXPECT_EQ(a, b) << trace_header << "op=enclose(" << x << ")"; + } + case 10: { + if (N == 0) { + break; } + EXPECT_EQ(rm_s.range_max_query_pos(i, j), + rm_w.range_max_query_pos(i, j)); break; - } - } -} - -class RmMRandomTest : public ::testing::Test -{ -protected: - uint64_t seed{}; - std::mt19937_64 rng; - Limits L; - void SetUp() override - { - L = load_limits_from_env(); - seed = choose_seed(); - rng.seed(seed); - std::cerr << "[ RmMRandomTest ] seed=" << seed - << " CASES=" << L.CASES - << " OPS=" << L.OPS_PER_CASE - << " MAX_N=" << L.MAX_N - << "\n"; - } -}; - -TEST_F(RmMRandomTest, RandomMixedBits) -{ - std::uniform_int_distribution len_u(1, (int)L.MAX_N); - for (size_t t = 0; t < L.CASES; ++t) - { - const size_t n = (size_t)len_u(rng); - const std::string bits = random_bits(rng, n); - run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); - } -} - -TEST_F(RmMRandomTest, RandomDyckBits) -{ - std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); - for (size_t t = 0; t < L.CASES; ++t) - { - size_t m = 1 + (size_t)len_even(rng); - std::string bits = random_dyck_bits(rng, m); - if (bits.empty()) - bits = "10"; - run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + } } + } } -TEST_F(RmMRandomTest, ShortInputs) -{ - for (size_t n = 1; n <= 8; ++n) - { - const size_t total = (n ? (1ull << n) : 1ull); - for (size_t mask = 0; mask < total; ++mask) - { - std::string bits; - bits.resize(n); - for (size_t i = 0; i < n; ++i) - bits[i] = ((mask >> i) & 1ull) ? '1' : '0'; - { - SCOPED_TRACE(::testing::Message() << "short-inputs:string bits=" << bits); - run_case_and_compare(bits, rng, /*ops_per_case=*/200, /*seed=*/0xC0FFEEull); - } - { - SCOPED_TRACE(::testing::Message() << "short-inputs:words bits=" << bits); - run_case_and_compare(bits, rng, /*ops_per_case=*/200, /*seed=*/0xC0FFEEull); - } - } - } +TEST_F(RmMRandomTest, WordsVsString) { + std::uniform_int_distribution len_u(0, (int)L.MAX_N); + for (size_t t = 0; t < L.CASES; ++t) { + const size_t n = (size_t)len_u(rng); + const std::string bits = random_bits(rng, n); + run_case_string_vs_words(bits, rng); + } } -static void run_case_string_vs_words(const std::string &bits, std::mt19937_64 &rng) -{ - const size_t N = bits.size(); - pixie::RmMTree rm_s(bits); - auto words = pack_words_lsb_first(bits); - pixie::RmMTree rm_w(words, N); - - std::uniform_int_distribution pos_i(0, N); - std::uniform_int_distribution pos_i_nz(0, N ? N - 1 : 0); - std::uniform_int_distribution d_dist(-(int)std::min(N, 200), (int)std::min(N, 200)); - - for (int t = 0; t < 128; ++t) - { - int which = std::uniform_int_distribution(0, 10)(rng); - size_t i = 0, j = 0; - if (N > 0) - { - i = pos_i_nz(rng); - j = pos_i_nz(rng); - if (i > j) - std::swap(i, j); - } - switch (which) - { - case 0: - { - size_t x = pos_i(rng); - EXPECT_EQ(rm_s.rank1(x), rm_w.rank1(x)); - break; - } - case 1: - { - size_t x = pos_i(rng); - EXPECT_EQ(rm_s.rank0(x), rm_w.rank0(x)); - break; - } - case 2: - { - size_t k = std::uniform_int_distribution(0, N + 3)(rng); - EXPECT_EQ(rm_s.select1(k), rm_w.select1(k)); - break; - } - case 3: - { - size_t k = std::uniform_int_distribution(0, N + 3)(rng); - EXPECT_EQ(rm_s.select0(k), rm_w.select0(k)); - break; - } - case 4: - { - size_t x = (N >= 2 ? std::uniform_int_distribution(0, N)(rng) : 0); - EXPECT_EQ(rm_s.rank10(x), rm_w.rank10(x)); - break; - } - case 5: - { - size_t k = std::uniform_int_distribution(0, N)(rng); - EXPECT_EQ(rm_s.select10(k), rm_w.select10(k)); - break; - } - case 6: - { - size_t x = pos_i(rng); - EXPECT_EQ(rm_s.excess(x), rm_w.excess(x)); - break; - } - case 7: - { - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - EXPECT_EQ(rm_s.fwdsearch(start, d), rm_w.fwdsearch(start, d)); - break; - } - case 8: - { - if (N == 0) - break; - size_t start = pos_i_nz(rng); - int d = d_dist(rng); - EXPECT_EQ(rm_s.bwdsearch(start, d), rm_w.bwdsearch(start, d)); - break; - } - case 9: - { - if (N == 0) - break; - EXPECT_EQ(rm_s.range_min_query_pos(i, j), rm_w.range_min_query_pos(i, j)); - break; - } - case 10: - { - if (N == 0) - break; - EXPECT_EQ(rm_s.range_max_query_pos(i, j), rm_w.range_max_query_pos(i, j)); - break; - } - } - } +TEST(RmMEdgeCases, EmptyInput) { + pixie::RmMTree rm(std::string{}); + NaiveRmM nv(std::string{}); + EXPECT_EQ(rm.rank1(0), nv.rank1(0)); + EXPECT_EQ(rm.rank0(0), nv.rank0(0)); + EXPECT_EQ(rm.rank10(0), nv.rank10(0)); + EXPECT_EQ(rm.select1(1), nv.select1(1)); + EXPECT_EQ(rm.select0(1), nv.select0(1)); + EXPECT_EQ(rm.fwdsearch(0, 0), nv.fwdsearch(0, 0)); + EXPECT_EQ(rm.bwdsearch(0, 0), nv.bwdsearch(0, 0)); + EXPECT_EQ(rm.range_min_query_pos(0, 0), nv.range_min_query_pos(0, 0)); + EXPECT_EQ(rm.range_max_query_pos(0, 0), nv.range_max_query_pos(0, 0)); } -TEST_F(RmMRandomTest, WordsVsString) -{ - std::uniform_int_distribution len_u(0, (int)L.MAX_N); - for (size_t t = 0; t < L.CASES; ++t) - { - const size_t n = (size_t)len_u(rng); - const std::string bits = random_bits(rng, n); - run_case_string_vs_words(bits, rng); +TEST(RmMTreeStress, LongRandom) { + Limits L; + L.OPS_PER_CASE = 2000; + L.MAX_N = 65536; + + if (const char* s = std::getenv("RMM_CASES")) { + L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); + } + if (const char* s = std::getenv("RMM_OPS")) { + L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); + } + if (const char* s = std::getenv("RMM_MAX_N")) { + L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); + } + + const uint64_t seed = choose_seed(); + std::mt19937_64 rng(seed); + size_t LOG_EVERY = 10; + if (const char* s = std::getenv("RMM_LOG_EVERY")) { + size_t v = std::strtoull(s, nullptr, 10); + if (v) { + LOG_EVERY = v; } -} - -TEST(RmMEdgeCases, EmptyInput) -{ - pixie::RmMTree rm(std::string{}); - NaiveRmM nv(std::string{}); - EXPECT_EQ(rm.rank1(0), nv.rank1(0)); - EXPECT_EQ(rm.rank0(0), nv.rank0(0)); - EXPECT_EQ(rm.rank10(0), nv.rank10(0)); - EXPECT_EQ(rm.select1(1), nv.select1(1)); - EXPECT_EQ(rm.select0(1), nv.select0(1)); - EXPECT_EQ(rm.fwdsearch(0, 0), nv.fwdsearch(0, 0)); - EXPECT_EQ(rm.bwdsearch(0, 0), nv.bwdsearch(0, 0)); - EXPECT_EQ(rm.range_min_query_pos(0, 0), nv.range_min_query_pos(0, 0)); - EXPECT_EQ(rm.range_max_query_pos(0, 0), nv.range_max_query_pos(0, 0)); -} - -TEST(RmMTreeStress, LongRandom) -{ - Limits L; - L.OPS_PER_CASE = 2000; - L.MAX_N = 65536; - - if (const char *s = std::getenv("RMM_CASES")) - L.CASES = std::max(1, std::strtoull(s, nullptr, 10)); - if (const char *s = std::getenv("RMM_OPS")) - L.OPS_PER_CASE = std::max(1, std::strtoull(s, nullptr, 10)); - if (const char *s = std::getenv("RMM_MAX_N")) - L.MAX_N = std::max(1, std::strtoull(s, nullptr, 10)); - - const uint64_t seed = choose_seed(); - std::mt19937_64 rng(seed); - size_t LOG_EVERY = 10; - if (const char *s = std::getenv("RMM_LOG_EVERY")) - { - size_t v = std::strtoull(s, nullptr, 10); - if (v) - LOG_EVERY = v; + } + + std::cerr << "[ LongRandom ] seed=" << seed << " CASES=" << L.CASES + << " OPS=" << L.OPS_PER_CASE << " MAX_N=" << L.MAX_N + << " LOG_EVERY=" << LOG_EVERY << "\n"; + + std::uniform_int_distribution coin(0, 1); + std::uniform_int_distribution len_u(1, (int)L.MAX_N); + std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); + + size_t total_ops = 0; + + for (size_t iter = 1; iter <= L.CASES; ++iter) { + std::string bits; + if (coin(rng) == 0) { + bits = random_bits(rng, (size_t)len_u(rng)); + } else { + size_t m = 1 + (size_t)len_even(rng); + bits = random_dyck_bits(rng, m); + if (bits.empty()) { + bits = "10"; + } } - std::cerr << "[ LongRandom ] seed=" << seed - << " CASES=" << L.CASES - << " OPS=" << L.OPS_PER_CASE - << " MAX_N=" << L.MAX_N - << " LOG_EVERY=" << LOG_EVERY - << "\n"; - - std::uniform_int_distribution coin(0, 1); - std::uniform_int_distribution len_u(1, (int)L.MAX_N); - std::uniform_int_distribution len_even(0, (int)(L.MAX_N / 2)); - - size_t total_ops = 0; - - for (size_t iter = 1; iter <= L.CASES; ++iter) - { - std::string bits; - if (coin(rng) == 0) - { - bits = random_bits(rng, (size_t)len_u(rng)); - } - else - { - size_t m = 1 + (size_t)len_even(rng); - bits = random_dyck_bits(rng, m); - if (bits.empty()) - bits = "10"; - } - - run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); - total_ops += L.OPS_PER_CASE; + run_case_and_compare(bits, rng, L.OPS_PER_CASE, seed); + total_ops += L.OPS_PER_CASE; - if (iter % LOG_EVERY == 0) - { - std::cerr << "[ LongRandom ] iter=" << iter - << " total_ops=" << total_ops - << " last_N=" << bits.size() - << " ok\n"; - } + if (iter % LOG_EVERY == 0) { + std::cerr << "[ LongRandom ] iter=" << iter << " total_ops=" << total_ops + << " last_N=" << bits.size() << " ok\n"; } + } } From 45439f1300cd3a57f787d73526ca3dc8e2851256 Mon Sep 17 00:00:00 2001 From: RSMT98 Date: Thu, 13 Nov 2025 07:16:12 +0300 Subject: [PATCH 13/14] copy-pasted some tests from unittests --- src/test_rmm.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/test_rmm.cpp b/src/test_rmm.cpp index 6fe165d..9571a91 100644 --- a/src/test_rmm.cpp +++ b/src/test_rmm.cpp @@ -570,3 +570,74 @@ TEST(RmMTreeStress, LongRandom) { } } } + +TEST(RmMTest, RankBasic) { + std::vector bits = {0b10110}; + pixie::RmMTree rm(bits, 5); + + EXPECT_EQ(rm.rank1(0), 0); // No bits + EXPECT_EQ(rm.rank1(1), 0); // 0 + EXPECT_EQ(rm.rank1(2), 1); // 10 + EXPECT_EQ(rm.rank1(3), 2); // 110 + EXPECT_EQ(rm.rank1(4), 2); // 0110 + EXPECT_EQ(rm.rank1(5), 3); // 10110 +} + +TEST(RmMTest, RankWithZeros) { + std::vector bits = {0}; + pixie::RmMTree rm(bits, 5); + + for (size_t i = 0; i <= 5; i++) { + EXPECT_EQ(rm.rank1(i), 0); + } +} + +TEST(RmMTest, SelectBasic) { + std::vector bits = {0b1100010110010110}; + pixie::RmMTree rm(bits, 16); + + EXPECT_EQ(rm.select1(1), 1); + EXPECT_EQ(rm.select1(2), 2); + EXPECT_EQ(rm.select1(3), 4); + EXPECT_EQ(rm.select1(4), 7); + EXPECT_EQ(rm.select1(5), 8); + EXPECT_EQ(rm.select1(6), 10); + EXPECT_EQ(rm.select1(7), 14); + EXPECT_EQ(rm.select1(8), 15); +} + +TEST(RmMTest, MainRankTest) { + std::mt19937_64 rng(42); + std::vector bits(65536 * 32); + for (size_t i = 0; i < 65536 * 32; i++) { + bits[i] = rng(); + } + + size_t rm_size = 65536 * 32 * 64; + pixie::RmMTree rm(bits, rm_size); + size_t rank = 0; + for (size_t i = 0; i < rm_size; ++i) { + ASSERT_EQ(rank, rm.rank1(i)); + rank += (bits[i >> 6] >> (i & 63)) & 1u; + } +} + +TEST(RmMTest, MainSelectTest) { + std::mt19937_64 rng(42); + std::vector bits(65536 * 32); + for (size_t i = 0; i < 65536 * 32; i++) { + bits[i] = rng(); + } + + size_t rm_size = 65536 * 32 * 64; + pixie::RmMTree rm(bits, rm_size); + size_t rank = 0; + + for (size_t i = 0; i < rm_size; ++i) { + if ((bits[i >> 6] >> (i & 63)) & 1u) { + ASSERT_EQ(rm.select1(++rank), i); + ASSERT_EQ(rm.rank1(i), rank - 1); + ASSERT_EQ(rm.rank1(i + 1), rank); + } + } +} From 22f2b07657df5f42e512fe8157359d01650f1d70 Mon Sep 17 00:00:00 2001 From: RSMT98 Date: Thu, 13 Nov 2025 07:37:32 +0300 Subject: [PATCH 14/14] made csv output in bench_rmm optional --- README.md | 2 +- src/bench_rmm.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9e89df1..564058f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Benchmarks are random 50/50 0-1 bitvectors up to $2^34$ bits. ./bench_rmm ``` -Results print to stdout as CSV. Redirect to a file (e.g. `./bench_rmm > rmm_bench.csv`) and visualize it with `misc/plot_rmm.py`. +For visualization, write the CSV output to a file using `--benchmark_out=` (e.g. `./bench_rmm --benchmark_out=rmm_bench.csv`) and plot it with `misc/plot_rmm.py`. --- diff --git a/src/bench_rmm.cpp b/src/bench_rmm.cpp index 568ad68..06db0db 100644 --- a/src/bench_rmm.cpp +++ b/src/bench_rmm.cpp @@ -435,8 +435,8 @@ int main(int argc, char** argv) { }; static vector extra; - if (!has("--benchmark_format")) { - extra.emplace_back("--benchmark_format=csv"); + if (!has("--benchmark_out_format")) { + extra.emplace_back("--benchmark_out_format=csv"); } if (!has("--benchmark_counters_tabular")) { extra.emplace_back("--benchmark_counters_tabular=true");