From 6e8b02529965805cdeca16fedc305bf98dc0da18 Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Fri, 2 Oct 2026 12:57:57 -0500 Subject: [PATCH 1/3] bench: cuDSS vs SparseDirectSolver.jl comparison per planned feature bench/features.jl lists one comparison feature per capability planned in TASKS.md (Cholesky, nrhs = 16, LDLT, refinement, uniform batch, LU, Schur, matching, non-uniform batch, partitioned-inverse solve, hybrid memory, mixed precision). bench/compare.jl times the four phases per feature and matrix with BenchmarkTools, one solver per process, and merges the rows into bench/comparison/.csv; the SparseDirectSolver run skips features whose task is not marked done. bench/compare_report.jl renders bench/comparison/comparison.md (overview + per-feature tables, pending features blank) and comparison.png (CairoMakie, bench/report env). Each timed sample starts on a fresh solver and spins the GPU for 0.2 s so it leaves its low-clock power state (lap2d_300 factorization: 6-19 ms without, a stable 5.9 ms with; T04 baseline 6.05 ms). Plain Float32 is not compared (cuDSS fails on every condensed KKT dump in Float32). Dependencies: BenchmarkTools and Metis plus SparseDirectSolver via [sources] in the bench env; CairoMakie, DelimitedFiles, Printf in the new bench/report env; DelimitedFiles and Printf in the test env. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TJrmq7e9jiW4VxBMEVup2E --- AGENTS.md | 6 + README.md | 1 + bench/Project.toml | 8 + bench/README.md | 51 +++++ bench/compare.jl | 342 ++++++++++++++++++++++++++++++++ bench/compare_report.jl | 187 +++++++++++++++++ bench/comparison/comparison.md | 220 ++++++++++++++++++++ bench/comparison/comparison.png | Bin 0 -> 224672 bytes bench/comparison/cudss.csv | 109 ++++++++++ bench/comparison/sds.csv | 29 +++ bench/features.jl | 115 +++++++++++ bench/report/Project.toml | 9 + test/Project.toml | 4 + test/test_bench_compare.jl | 93 +++++++++ 14 files changed, 1174 insertions(+) create mode 100644 bench/compare.jl create mode 100644 bench/compare_report.jl create mode 100644 bench/comparison/comparison.md create mode 100644 bench/comparison/comparison.png create mode 100644 bench/comparison/cudss.csv create mode 100644 bench/comparison/sds.csv create mode 100644 bench/features.jl create mode 100644 bench/report/Project.toml create mode 100644 test/test_bench_compare.jl diff --git a/AGENTS.md b/AGENTS.md index 58df6d2..75da653 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -156,6 +156,12 @@ julia --project=. -e 'using Pkg; Pkg.instantiate()' # benchmarks (separate environment, needs CUDSS.jl for the cuDSS baseline) julia --project=bench bench/cudss_baseline.jl + +# cuDSS vs SparseDirectSolver.jl comparison, run by hand (one solver per process), +# then render bench/comparison/comparison.{md,png} +julia --project=bench bench/compare.jl --solver=cudss +julia --project=bench bench/compare.jl --solver=sds --backend=cuda +julia --project=bench/report bench/compare_report.jl ``` `SDS_TEST_GPU` and `SDS_TEST_ONLY` are implemented in `test/runtests.jl` (T01), diff --git a/README.md b/README.md index dacab36..58c2478 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ silently. * [`TASKS.md`](TASKS.md) — implementation tasks and their reports. * [`RESEARCH.md`](RESEARCH.md) — background and state of the art. * [`bench/README.md`](bench/README.md) — benchmark harness and cuDSS baselines. +* [`bench/comparison/comparison.md`](bench/comparison/comparison.md) — per-feature performance comparison with cuDSS. ## Installation diff --git a/bench/Project.toml b/bench/Project.toml index e2cf862..921478f 100644 --- a/bench/Project.toml +++ b/bench/Project.toml @@ -1,16 +1,24 @@ [deps] +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MatrixDepot = "b51810bb-c9f3-55da-ae3c-350fc1fbce05" +Metis = "2679e427-3c69-5b7f-982b-ece356f1e94b" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +SparseDirectSolver = "dc8e0fd9-41f1-440b-9624-22817132f700" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +[sources] +SparseDirectSolver = {path = ".."} + [compat] +BenchmarkTools = "1" CUDA = "6" CUDSS = "0.8" DelimitedFiles = "1" MatrixDepot = "1" +Metis = "1" julia = "1.13" diff --git a/bench/README.md b/bench/README.md index 146c1be..4273725 100644 --- a/bench/README.md +++ b/bench/README.md @@ -13,6 +13,9 @@ Baselines every later milestone is measured against (PLAN.md §5 M0, §7). The | `regimes.jl` | `factorize!` time on the generated matrices with regimes A+B+C (default), B+C (`subtree_budgets = []`) and C only (`factorization_alg = "algo2"`), with fronts per regime and launch counts; package environment: `julia --project=. bench/regimes.jl [--backend=cuda] [--T=Float64] [--only=lap2d_300,lap3d_40]` | | `report.jl` | prints the CSV files as Markdown tables | | `dump_madnlp_kkt.jl` | dumps MadNLP K2 and condensed KKT matrices of pglib-opf cases | +| `features.jl` | module `BenchFeatures`: the comparison features, one per planned capability in TASKS.md order (`cholesky_f64` … `mixed_precision`), with structure, element type, matrix selector and parameters; `task_status` reads the task's marker in TASKS.md | +| `compare.jl` | cuDSS vs SparseDirectSolver.jl per feature × matrix with BenchmarkTools; one solver per run (`--solver=cudss` or `--solver=sds`), results merged into `bench/comparison/.csv` | +| `compare_report.jl` | renders `bench/comparison/comparison.md` (overview + one table per feature) and `comparison.png` (SDS/cuDSS ratio per feature and phase); environment `bench/report/` (CairoMakie) | | `pivot_pairs.jl` | 2×2 pivot pairs of the `S` analysis (issue #66): `pivot_pairs` = `none`/`default`/`all` on the K2 dumps and the KKT generators, with nnz(L), zero/perturbed/2×2 pivots, max abs L and factor error of the CPU reference LDLᵀ; package environment: `julia --project=. bench/pivot_pairs.jl [--only=case118,...] [--generators=false]` | ## Commands @@ -38,6 +41,54 @@ julia --project=bench/kkt -e 'using Pkg; Pkg.add(["MadNLP", "ExaModels", "ExaMod julia --project=bench/kkt bench/dump_madnlp_kkt.jl pglib_opf_case118_ieee pglib_opf_case1354_pegase --iters=1,10,20 ``` +## cuDSS vs SparseDirectSolver.jl comparison + +`bench/comparison/` is committed (unlike `bench/results/`): the two CSVs, the +Markdown table and the plot are the record of where the package stands against +cuDSS. Rerun it by hand after a task lands: + +```bash +julia --project=bench -e 'using Pkg; Pkg.instantiate()' # once +julia --project=bench/report -e 'using Pkg; Pkg.instantiate()' # once + +julia --project=bench bench/compare.jl --solver=cudss # cuDSS side, all features +julia --project=bench bench/compare.jl --solver=sds --backend=cuda # SparseDirectSolver.jl side +julia --project=bench/report bench/compare_report.jl # comparison.md + comparison.png + +# rerun one feature after its task lands (other rows of the CSV are kept) +julia --project=bench bench/compare.jl --solver=sds --features=ldlt +``` + +* **Features.** Every capability planned in TASKS.md is a row of the overview + from the start. The SDS run skips a feature until its task is marked done + (`[x]`/`[!]`) in TASKS.md, so its cells stay blank; `--force` runs it anyway + and records the error. The gate is the task marker, not an error, because + some parameters (`hybrid_memory_mode`, `ir_n_steps`) are accepted and + ignored before their task. The cuDSS side runs every feature with a cuDSS + counterpart, so its column is filled before the SDS one. +* **Two processes.** CUDSS.jl and the package's CUDA extension define the same + `cholesky(::CuSparseMatrixCSR)` methods, so one run loads one solver. The SDS + run uses only the handle layer (`DirectSolver`, `setparam!`, `execute!`, + `getparam`) and loads Metis for the default AMD/ND ordering choice. The bench + environment gets SparseDirectSolver from `..` through `[sources]`. +* **Timing.** BenchmarkTools, `evals = 1`, 5 samples per phase (`--samples`). + The `setup` of each sample builds a fresh solver, runs the phases the timed + one depends on and, on a GPU, keeps the device busy for 0.2 s: otherwise the + GPU drops to a low-clock power state during the host-side setup and the timed + phase starts slow (lap2d_300 factorization varied between 6 and 19 ms; with + the spin it is a stable 5.9 ms, against 6.05 ms in the T04 baseline). The + report shows medians; the CSV also keeps the minima. +* **Synthetic inputs.** `ubatch8` builds 8 value sets on one pattern by scaling + the diagonal of member k by 1 + 0.01(k−1). `schur` takes the last + min(64, n/10) rows as the Schur block and times `solve_fwd_schur` as the + solve (no residual). `nubatch` batches all selected condensed dumps into one + row. The SDS calls for uniform batches assume `(n, nbatch)` right-hand sides + and the non-uniform batch assumes `BatchedDirectSolver` (PLAN §3); adjust + `compare.jl` when T17/T22 fix the API. +* **Adding a feature.** One `Feature(...)` entry in `features.jl` (task id, + structure, matrix selector, parameters); `compare.jl` handles the kinds + `:single`, `:ubatch`, `:nubatch` and `:schur`. + ## What is measured For each matrix and structure, after one warm-up run, five runs each of diff --git a/bench/compare.jl b/bench/compare.jl new file mode 100644 index 0000000..9bde4b2 --- /dev/null +++ b/bench/compare.jl @@ -0,0 +1,342 @@ +# cuDSS vs SparseDirectSolver.jl: per-phase timings for every feature of +# `features.jl` on the harness matrices, measured with BenchmarkTools. One solver +# per process (CUDSS.jl and the CUDA extension define the same `cholesky` +# methods), each run merged into `bench/comparison/.csv`; +# `compare_report.jl` renders the side-by-side table and plot. +# +# julia --project=bench bench/compare.jl --solver=cudss [options] +# julia --project=bench bench/compare.jl --solver=sds [--backend=cuda|cpu] [options] +# +# Options: +# --features=a,b feature ids (default: all; see bench/features.jl) +# --only=m1,m2 matrix names (default: all harness matrices) +# --samples=5 BenchmarkTools samples per phase (after its warm-up sample) +# --seconds=60 time budget per phase; sampling stops at whichever limit comes first +# --no-suitesparse skip the MatrixDepot matrices +# --no-dumps skip the KKT dumps under bench/data/ +# --force run SDS features whose task is not done in TASKS.md (rows record the error) +# +# Each phase is timed on a fresh solver: the `setup` of the benchmark creates the +# solver and runs the phases it depends on, the timed expression runs the phase +# and synchronizes the device. On a GPU the setup ends by keeping the device busy +# for 0.2 s so that it is at full clock (see `spin_device`). One more untimed +# run gives `info`, the statistics and the residual. + +using LinearAlgebra +using SparseArrays +using Random +using Dates +using BenchmarkTools +using DelimitedFiles + +include(joinpath(@__DIR__, "matrices.jl")) +include(joinpath(@__DIR__, "features.jl")) +using .BenchMatrices +using .BenchFeatures + +function parse_args(args) + o = Dict{String, String}("solver" => "", "backend" => "cuda", "features" => "", "only" => "", + "samples" => "5", "seconds" => "60", "suitesparse" => "true", "dumps" => "true", + "force" => "false") + for a in args + if a in ("--no-suitesparse", "--no-dumps", "--force") + o[a == "--force" ? "force" : a[6:end]] = a == "--force" ? "true" : "false" + elseif (m = match(r"^--(solver|backend|features|only|samples|seconds)=(.*)$", a)) !== nothing + o[m[1]] = m[2] + else + error("unknown argument \"$a\"; see the header of bench/compare.jl") + end + end + o["solver"] in ("cudss", "sds") || error("--solver=cudss or --solver=sds is required") + o["backend"] in ("cuda", "cpu") || error("--backend must be cuda or cpu") + return o +end + +const OPTS = parse_args(ARGS) +const SOLVER = OPTS["solver"] +const ON_GPU = SOLVER == "cudss" || OPTS["backend"] == "cuda" + +if SOLVER == "cudss" + using CUDA, CUDA.cuSPARSE, CUDSS +else + using SparseDirectSolver, Metis # Metis: nested dissection in the default ordering + ON_GPU && using CUDA, CUDA.cuSPARSE +end + +dev(x) = ON_GPU ? CUDA.CuArray(x) : x +dev_csr(A) = ON_GPU ? CUDA.cuSPARSE.CuSparseMatrixCSR(A) : A +sync() = ON_GPU ? CUDA.synchronize() : nothing + +# The GPU drops to a low-clock power state while the host runs the (untimed) +# setup, and the timed phase then starts slow: on the RTX 4080, lap2d_300 +# factorization varied between 6 and 19 ms. Keeping the device busy for 0.2 s +# right before each timed phase gives a stable 5.9 ms (T04 baseline: 6.05 ms). +const SPIN_SECONDS = 0.2 +const SPIN_BUFFER = Ref{Any}(nothing) +function spin_device() + ON_GPU || return + SPIN_BUFFER[] === nothing && (SPIN_BUFFER[] = CUDA.zeros(Float32, 2^24)) + buf, t0 = SPIN_BUFFER[], time() + while time() - t0 < SPIN_SECONDS + buf .= sin.(buf) .+ 1f0 + CUDA.synchronize() + end +end + +# --- the two solvers behind one set of names (the parameter strings mirror cuDSS) --- + +# CUDSS.jl has no getter for CUDSS_DATA_FLOPS (an Int64 in cuDSS 0.8, see cudss_baseline.jl) +function cudss_flops(s) + ref, nw = Ref{Int64}(0), Ref{Csize_t}(0) + CUDSS.cudssDataGet(s.data.handle, s.data, CUDSS.CUDSS_DATA_FLOPS, ref, 8, nw) + return nw[] == 8 && ref[] > 0 ? ref[] : missing +end + +const API = if SOLVER == "cudss" + (solver = CUDSS.CudssSolver, batched = CUDSS.CudssBatchedSolver, set = CUDSS.cudss_set, + get = CUDSS.cudss_get, exec = CUDSS.cudss, flops = cudss_flops, + # a uniform batch passes x and b as descriptors with nbatch columns + ubatch_rhs = (X, nb) -> (D = CUDSS.CudssMatrix(eltype(X), size(X, 1); nbatch = nb); CUDSS.cudss_update(D, X); D), + version = string(CUDSS.version())) +else + (solver = SparseDirectSolver.DirectSolver, + batched = (a...) -> getproperty(SparseDirectSolver, :BatchedDirectSolver)(a...), # T22 + set = SparseDirectSolver.setparam!, get = SparseDirectSolver.getparam, + exec = (p, s, x, b) -> SparseDirectSolver.execute!(p, s, x, b; asynchronous = false), + flops = s -> SparseDirectSolver.getparam(s, "flops"), + ubatch_rhs = (X, nb) -> X, # assumed (n, nbatch) arrays; revisit when T17 lands + version = string(pkgversion(SparseDirectSolver))) +end + +side_params(f) = merge(f.params, SOLVER == "cudss" ? f.cudss_params : f.sds_params) + +relres(A, x, b) = norm(b - A * x) / norm(b) +colmax_relres(A, X, B) = maximum(relres(A, X[:, j], B[:, j]) for j in axes(B, 2)) + +# --- systems: `fresh()` builds a configured solver with its x and b, untimed --- + +""" + build_system(f, Ms) -> (; fresh, solve_phase, check) + +`fresh()` returns `(s, x, b)`: a new solver for feature `f` on the matrices `Ms` +(one matrix, or the batch members for `:nubatch`) with its device right-hand +side and solution. `check(x)` returns the relative residual on the host +(`missing` for the Schur feature). +""" +function build_system(f::Feature, Ms) + T, view = f.T, f.structure == "G" ? 'F' : 'L' + stored(A) = f.structure == "G" ? A : tril(A) + Random.seed!(666) + if f.kind == :nubatch + As = [SparseMatrixCSC{T, Int}(M.A) for M in Ms] + Ads = [dev_csr(stored(A)) for A in As] + bs = [rand(T, size(A, 1)) for A in As] + bds = dev.(bs) + fresh = () -> (s = API.batched(Ads, f.structure, view); configure!(s, f); (s, similar.(bds), bds)) + check = xs -> maximum(relres(As[k], Array(xs[k]), bs[k]) for k in eachindex(As)) + return (; fresh, solve_phase = "solve", check) + end + A = SparseMatrixCSC{T, Int}(only(Ms).A) + n = size(A, 1) + if f.kind == :ubatch + # nbatch value sets on one pattern: member k scales the diagonal by 1 + 0.01(k-1) (stays SPD) + Lt = sparse(transpose(stored(A))) # CSC of the transpose = CSR arrays of the stored triangle + ondiag = [Lt.rowval[p] == j for j in 1:n for p in nzrange(Lt, j)] + scale(k) = 1 .+ T(0.01) * (k - 1) .* ondiag + nzval = reduce(hcat, Lt.nzval .* scale(k) for k in 1:f.nbatch) + rowptr, colval, nzd = dev(Cint.(Lt.colptr)), dev(Cint.(Lt.rowval)), dev(nzval) + B = rand(T, n, f.nbatch) + Bd = dev(B) + fresh = () -> begin + s = API.solver(rowptr, colval, nzd, f.structure, view) + API.set(s, "ubatch_size", f.nbatch) + configure!(s, f) + Xd = similar(Bd) + (s, API.ubatch_rhs(Xd, f.nbatch), API.ubatch_rhs(Bd, f.nbatch), Xd) + end + Ak(k) = A + Diagonal(T(0.01) * (k - 1) .* diag(A)) + check = X -> maximum(relres(Ak(k), Array(X)[:, k], B[:, k]) for k in 1:f.nbatch) + return (; fresh, solve_phase = "solve", check) + end + Ad = dev_csr(stored(A)) + B = f.nrhs == 1 ? rand(T, n) : rand(T, n, f.nrhs) + Bd = dev(B) + fresh = () -> begin + s = API.solver(Ad, f.structure, view) + if f.kind == :schur # Schur block: the last min(64, n ÷ 10) rows and columns + API.set(s, "user_schur_indices", Cint[i > n - min(64, n ÷ 10) for i in 1:n]) + end + configure!(s, f) + (s, similar(Bd), Bd) + end + check = f.kind == :schur ? (X -> missing) : (X -> colmax_relres(A, reshape(Array(X), n, :), reshape(B, n, :))) + return (; fresh, solve_phase = f.kind == :schur ? "solve_fwd_schur" : "solve", check) +end + +configure!(s, f) = foreach(((k, v),) -> API.set(s, k, v), side_params(f)) + +# the solution array `check` reads: the plain device array (index 4) for a uniform batch +solution(st) = length(st) == 4 ? st[4] : st[2] + +# --- timing ------------------------------------------------------------------ + +const PHASES = ("analysis", "factorization", "refactorization", "solve") +const BEFORE = Dict("analysis" => (), "factorization" => ("analysis",), + "refactorization" => ("analysis", "factorization"), "solve" => ("analysis", "factorization")) + +phase_name(sys, p) = p == "solve" ? sys.solve_phase : p +run_phase(sys, st, p) = API.exec(phase_name(sys, p), st[1], st[2], st[3]) + +""" + time_phase(sys, phase; samples, seconds) -> (median_s, min_s) + +BenchmarkTools trial of one phase; the setup builds a fresh solver and runs the +phases `phase` depends on. +""" +function time_phase(sys, phase; samples, seconds) + prep = () -> (st = sys.fresh(); foreach(p -> run_phase(sys, st, p), BEFORE[phase]); sync(); spin_device(); st) + core = st -> (run_phase(sys, st, phase); sync()) + b = @benchmarkable $core(st) setup = (st = $prep()) evals = 1 + t = run(b; samples, seconds, gcsample = true) + return median(t).time / 1e9, minimum(t).time / 1e9 +end + +function stat(f, s) + try + f(s) + catch + missing + end +end + +""" + measure(sys; samples, seconds) -> NamedTuple + +Timings of the four phases, then one untimed run for `info`, statistics and the residual. +""" +function measure(sys; samples, seconds) + times = Dict(p => time_phase(sys, p; samples, seconds) for p in PHASES) + st = sys.fresh() + foreach(p -> run_phase(sys, st, p), PHASES) + sync() + info = API.get(st[1], "info") + info == 0 || error("info = $info after the factorization") + return (; times, relres = sys.check(solution(st)), lu_nnz = stat(s -> API.get(s, "lu_nnz"), st[1]), + flops = stat(API.flops, st[1]), nsuperpanels = stat(s -> API.get(s, "nsuperpanels"), st[1])) +end + +# --- CSV --------------------------------------------------------------------- + +const COLUMNS = ["solver", "feature", "task", "matrix", "structure", "n", "nnz", "T", "nrhs", "nbatch", + "analysis_s", "factorization_s", "refactorization_s", "solve_s", + "analysis_min_s", "factorization_min_s", "refactorization_min_s", "solve_min_s", + "lu_nnz", "flops", "nsuperpanels", "relres", "status", "device", "version", "git_sha", "date"] + +cell(x) = x === missing || x === nothing ? "" : x isa AbstractFloat ? repr(Float64(x)) : string(x) +clean(msg) = first(strip(replace(msg, r"[,\"\s]+" => " ")), 200) + +function device_name() + ON_GPU && return replace(CUDA.name(CUDA.device()), "," => " ") + return "CPU (KernelAbstractions, $(Threads.nthreads()) threads)" +end + +function git_sha() + try + sha = readchomp(`git -C $(@__DIR__) rev-parse --short HEAD`) + dirty = !isempty(readchomp(`git -C $(@__DIR__) status --porcelain --untracked-files=no`)) + return dirty ? sha * "+dirty" : sha + catch + return "" + end +end + +function csv_row(f, name, Ms, result, meta) + n, nz = sum(M -> size(M.A, 1), Ms), sum(M -> nnz(M.A), Ms) + head = [SOLVER, f.id, f.task, name, f.structure, string(n), string(nz), string(f.T), string(f.nrhs), + string(f.kind == :nubatch ? length(Ms) : f.nbatch)] + if result isa Exception + body = vcat(fill("", 12), clean(sprint(showerror, result))) + else + body = vcat([cell(result.times[p][1]) for p in PHASES], [cell(result.times[p][2]) for p in PHASES], + cell.([result.lu_nnz, result.flops, result.nsuperpanels, result.relres]), "ok") + end + return vcat(head, body, meta) +end + +""" + merge_csv(path, rows) + +Writes `rows` to `path`, keeping the rows of an existing file whose +(feature, matrix) is not among `rows`; sorted by feature order, then matrix. +""" +function merge_csv(path, rows) + old = Vector{Vector{String}}() + if isfile(path) + data, header = readdlm(path, ',', String; header = true, quotes = false) + if vec(header) == COLUMNS + rerun = Set((r[2], r[4]) for r in rows) + old = [data[i, :] for i in axes(data, 1) if (data[i, 2], data[i, 4]) ∉ rerun] + else + @warn "$path has other columns; replacing it" + end + end + order = Dict(f.id => i for (i, f) in enumerate(COMPARE_FEATURES)) + all_rows = sort!(vcat(old, rows); by = r -> (get(order, r[2], typemax(Int)), r[4])) + mkpath(dirname(path)) + open(path, "w") do io + writedlm(io, [permutedims(COLUMNS); permutedims(reduce(hcat, all_rows))], ',') + end +end + +# --- driver ------------------------------------------------------------------ + +function main() + ON_GPU && !CUDA.functional() && error("CUDA is not functional on this machine") + samples, seconds = parse(Int, OPTS["samples"]), parse(Float64, OPTS["seconds"]) + ids = filter(!isempty, split(OPTS["features"], ',')) + features = isempty(ids) ? COMPARE_FEATURES : feature.(ids) + mats = bench_matrices(; suitesparse = OPTS["suitesparse"] == "true", dumps = OPTS["dumps"] == "true") + only_names = filter(!isempty, split(OPTS["only"], ',')) + isempty(only_names) || filter!(M -> M.name in only_names, mats) + meta = [device_name(), API.version, git_sha(), string(today())] + println(SOLVER, " ", API.version, " on ", meta[1], ", samples = ", samples) + + rows = Vector{Vector{String}}() + for f in features + if SOLVER == "cudss" && !f.cudss_supported + println(rpad(f.id, 18), "no cuDSS counterpart, skipped") + continue + elseif SOLVER == "sds" && !feature_implemented(f) && OPTS["force"] != "true" + println(rpad(f.id, 18), "pending ", f.task, ", skipped") + continue + end + selected = filter(M -> f.structure in M.structures && f.matrices(M), mats) + groups = f.kind == :nubatch ? (isempty(selected) ? [] : ["batch_of_$(length(selected))" => selected]) : + [M.name => [M] for M in selected] + for (name, Ms) in groups + print(rpad(f.id, 18), rpad(name, 42)) + flush(stdout) + result = try + Base.invokelatest(measure, build_system(f, Ms); samples, seconds) + catch err + err isa InterruptException && rethrow() + err + end + if result isa Exception + println("FAILED: ", first(sprint(showerror, result), 160)) + else + println(join(("$p $(round(result.times[p][1] * 1e3; sigdigits = 3)) ms" for p in PHASES), ", "), + ", relres ", result.relres === missing ? "-" : round(result.relres; sigdigits = 2)) + end + push!(rows, csv_row(f, name, Ms, result, meta)) + end + end + isempty(rows) && return println("nothing to run") + out = joinpath(@__DIR__, "comparison", "$SOLVER.csv") + merge_csv(out, rows) + println("wrote ", out) +end + +if abspath(PROGRAM_FILE) == @__FILE__ + main() +end diff --git a/bench/compare_report.jl b/bench/compare_report.jl new file mode 100644 index 0000000..a5ae60e --- /dev/null +++ b/bench/compare_report.jl @@ -0,0 +1,187 @@ +# Renders the cuDSS vs SparseDirectSolver.jl comparison from the CSVs written by +# `compare.jl`: `bench/comparison/comparison.md` (overview of every planned +# feature, then one table per feature) and `bench/comparison/comparison.png` +# (geometric-mean time ratio SDS/cuDSS per feature and phase). +# +# julia --project=bench/report bench/compare_report.jl [--no-plot] +# +# Features whose task is not done in TASKS.md are listed with blank SDS cells. + +module BenchCompareReport + +using DelimitedFiles +using Printf + +include(joinpath(@__DIR__, "features.jl")) +using .BenchFeatures + +export read_rows, ratio_summary, render_markdown, PHASES + +const PHASES = ("analysis", "factorization", "refactorization", "solve") +const DIR = joinpath(@__DIR__, "comparison") + +""" + read_rows(path) -> Vector{Dict{String,String}} + +Rows of a CSV written by `compare.jl`, keyed by column name; empty if the file does not exist. +""" +function read_rows(path::AbstractString) + isfile(path) || return Dict{String, String}[] + data, header = readdlm(path, ',', String; header = true, quotes = false) + return [Dict(zip(vec(header), data[i, :])) for i in axes(data, 1)] +end + +ok(r) = r !== nothing && r["status"] == "ok" +seconds(r, p) = parse(Float64, r["$(p)_s"]) +find_row(rows, f, m) = (i = findfirst(r -> r["feature"] == f.id && r["matrix"] == m, rows); i === nothing ? nothing : rows[i]) + +""" + matrices_of(f, cudss_rows, sds_rows) -> Vector{String} + +Matrix names with a row for feature `f` on either side, cuDSS order first. +""" +matrices_of(f, cudss_rows, sds_rows) = + unique!([r["matrix"] for r in vcat(cudss_rows, sds_rows) if r["feature"] == f.id]) + +""" + ratio_summary(f, cudss_rows, sds_rows) -> (ratios, count) + +Geometric mean of the SDS/cuDSS time ratio per phase over the matrices where +both rows are `ok` (`nothing` per phase when there is none), and their number. +""" +function ratio_summary(f, cudss_rows, sds_rows) + pairs = [(find_row(cudss_rows, f, m), find_row(sds_rows, f, m)) for m in matrices_of(f, cudss_rows, sds_rows)] + filter!(((c, s),) -> ok(c) && ok(s), pairs) + isempty(pairs) && return Dict{String, Union{Nothing, Float64}}(p => nothing for p in PHASES), 0 + gm(p) = exp(sum(log(seconds(s, p) / seconds(c, p)) for (c, s) in pairs) / length(pairs)) + return Dict{String, Union{Nothing, Float64}}(p => gm(p) for p in PHASES), length(pairs) +end + +fmt_ms(r, p) = ok(r) ? @sprintf("%.3g", seconds(r, p) * 1e3) : r === nothing ? "" : "fail" +fmt_ratio(x) = x === nothing ? "" : @sprintf("%.2f×", x) +fmt_ratio(c, s, p) = ok(c) && ok(s) ? fmt_ratio(seconds(s, p) / seconds(c, p)) : "" +fmt_field(r, k) = ok(r) && !isempty(r[k]) ? @sprintf("%.3g", parse(Float64, r[k])) : "" + +state(f, implemented) = implemented ? "done" : "pending" + +""" + render_markdown(io, cudss_rows, sds_rows; features = COMPARE_FEATURES, implemented = feature_implemented) + +Writes the comparison as Markdown: an overview with one line per feature, then +per feature a table with cuDSS ms, SDS ms and the ratio for each phase, nnz(L) +and the relative residual of both solvers. Cells without a row stay blank, a +failed row shows `fail` and its message below the table. +""" +function render_markdown(io::IO, cudss_rows, sds_rows; features = COMPARE_FEATURES, + implemented = feature_implemented, plot = true) + println(io, "# cuDSS vs SparseDirectSolver.jl\n") + println(io, "Generated by `bench/compare_report.jl` from `bench/comparison/{cudss,sds}.csv` ", + "(`bench/compare.jl`). Times are BenchmarkTools medians per phase on a fresh solver; ", + "the ratio is SDS time / cuDSS time, so below 1 means SparseDirectSolver.jl is faster. ", + "Features whose task is not done in TASKS.md have blank SDS cells.\n") + plot && println(io, "![SDS/cuDSS time ratio per feature](comparison.png)\n") + println(io, "## Overview\n") + println(io, "Geometric mean of the SDS/cuDSS ratio over the matrices both solvers ran.\n") + println(io, "| feature | task | status | matrices | analysis | factorization | refactorization | solve |") + println(io, "| --- | --- | --- | --- | --- | --- | --- | --- |") + for f in features + ratios, count = ratio_summary(f, cudss_rows, sds_rows) + println(io, "| ", f.title, " | ", f.task, " | ", state(f, implemented(f)), " | ", count == 0 ? "" : count, + " | ", join((fmt_ratio(ratios[p]) for p in PHASES), " | "), " |") + end + println(io) + for f in features + println(io, "## ", f.title, "\n") + println(io, "`", f.id, "`, ", f.task, " (", state(f, implemented(f)), "), structure `", f.structure, "`, ", + f.T, ", nrhs = ", f.nrhs, f.kind == :ubatch ? ", uniform batch of $(f.nbatch)" : "", + f.cudss_supported ? "" : ", no cuDSS counterpart", ".\n") + names = matrices_of(f, cudss_rows, sds_rows) + if isempty(names) + println(io, "Not run yet.\n") + continue + end + print(io, "| matrix | n |") + foreach(p -> print(io, " $p cuDSS ms | SDS ms | ratio |"), PHASES) + println(io, " nnz(L) cuDSS | SDS | relres cuDSS | SDS |") + println(io, "|", repeat(" --- |", 2 + 3 * length(PHASES) + 4)) + failures = String[] + for m in names + c, s = find_row(cudss_rows, f, m), find_row(sds_rows, f, m) + n = c !== nothing ? c["n"] : s["n"] + print(io, "| ", m, " | ", n, " |") + foreach(p -> print(io, " ", fmt_ms(c, p), " | ", fmt_ms(s, p), " | ", fmt_ratio(c, s, p), " |"), PHASES) + println(io, " ", fmt_field(c, "lu_nnz"), " | ", fmt_field(s, "lu_nnz"), " | ", fmt_field(c, "relres"), + " | ", fmt_field(s, "relres"), " |") + for (who, r) in (("cuDSS", c), ("SDS", s)) + r !== nothing && !ok(r) && push!(failures, "$who on $m: $(r["status"])") + end + end + println(io) + isempty(failures) || (foreach(x -> println(io, "* ", x), failures); println(io)) + end + println(io, "## Runs\n") + for (who, rows) in (("cuDSS", cudss_rows), ("SparseDirectSolver.jl", sds_rows)) + isempty(rows) && (println(io, "* ", who, ": no results."); continue) + runs = unique((r["device"], r["version"], r["git_sha"], r["date"]) for r in rows) + for (d, v, g, t) in runs + println(io, "* ", who, " ", v, " on ", d, ", repository ", isempty(g) ? "?" : g, ", ", t, ".") + end + end +end + +end # module BenchCompareReport + +using .BenchCompareReport + +const MAKE_PLOT = abspath(PROGRAM_FILE) == (@__FILE__) && !("--no-plot" in ARGS) +if MAKE_PLOT + using CairoMakie +end + +""" + write_plot(path, cudss_rows, sds_rows) + +Grouped bars of the geometric-mean SDS/cuDSS ratio per feature and phase, log +scale, bars drawn from 1; features without results keep an empty slot. +""" +function write_plot(path, cudss_rows, sds_rows) + F = BenchCompareReport.BenchFeatures + feats = F.COMPARE_FEATURES + xs, ys, groups = Int[], Float64[], Int[] + for (i, f) in enumerate(feats), (j, p) in enumerate(PHASES) + r = first(ratio_summary(f, cudss_rows, sds_rows))[p] + r === nothing || (push!(xs, i); push!(ys, r); push!(groups, j)) + end + labels = [F.feature_implemented(f) ? "$(f.id) ($(f.task))" : "$(f.id) ($(f.task), pending)" for f in feats] + fig = Figure(size = (1200, 560)) + ax = Axis(fig[1, 1]; yscale = log10, xticks = (1:length(feats), labels), xticklabelrotation = π / 4, + ylabel = "SDS time / cuDSS time (geometric mean)", + yticks = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100], + ytickformat = vs -> ["$(round(v; sigdigits = 2))×" for v in vs], + title = "SparseDirectSolver.jl vs cuDSS: below 1 is faster") + colors = Makie.wong_colors()[1:length(PHASES)] + isempty(xs) || barplot!(ax, xs, ys; dodge = groups, n_dodge = length(PHASES), width = 0.8, + color = colors[groups], fillto = 1.0) + hlines!(ax, [1.0]; color = :black, linestyle = :dash) + xlims!(ax, 0.5, length(feats) + 0.5) + lo, hi = isempty(ys) ? (1.0, 1.0) : extrema(ys) + ylims!(ax, min(lo, 1.0) / 1.5, max(hi, 1.0) * 1.5) + Legend(fig[1, 2], [PolyElement(color = c) for c in colors], collect(PHASES), "phase") + save(path, fig) + return path +end + +function main() + dir = BenchCompareReport.DIR + cudss_rows = read_rows(joinpath(dir, "cudss.csv")) + sds_rows = read_rows(joinpath(dir, "sds.csv")) + md = joinpath(dir, "comparison.md") + plot = MAKE_PLOT || isfile(joinpath(dir, "comparison.png")) + open(io -> render_markdown(io, cudss_rows, sds_rows; plot), md, "w") + println("wrote ", md) + MAKE_PLOT && println("wrote ", Base.invokelatest(write_plot, joinpath(dir, "comparison.png"), cudss_rows, sds_rows)) +end + +if abspath(PROGRAM_FILE) == @__FILE__ + main() +end diff --git a/bench/comparison/comparison.md b/bench/comparison/comparison.md new file mode 100644 index 0000000..7312bfa --- /dev/null +++ b/bench/comparison/comparison.md @@ -0,0 +1,220 @@ +# cuDSS vs SparseDirectSolver.jl + +Generated by `bench/compare_report.jl` from `bench/comparison/{cudss,sds}.csv` (`bench/compare.jl`). Times are BenchmarkTools medians per phase on a fresh solver; the ratio is SDS time / cuDSS time, so below 1 means SparseDirectSolver.jl is faster. Features whose task is not done in TASKS.md have blank SDS cells. + +![SDS/cuDSS time ratio per feature](comparison.png) + +## Overview + +Geometric mean of the SDS/cuDSS ratio over the matrices both solvers ran. + +| feature | task | status | matrices | analysis | factorization | refactorization | solve | +| --- | --- | --- | --- | --- | --- | --- | --- | +| Cholesky, Float64 | T13 | done | 14 | 0.57× | 5.60× | 8.96× | 8.56× | +| Cholesky, 16 right-hand sides | T12 | done | 14 | 0.58× | 5.92× | 9.37× | 6.98× | +| LDLᵀ, static pivoting | T15 | pending | | | | | | +| LDLᵀ + 2 refinement steps, K2 dumps | T16 | pending | | | | | | +| Uniform batch of 8, Cholesky | T17 | pending | | | | | | +| LU, unsymmetric | T19 | pending | | | | | | +| Schur complement, Cholesky | T20 | pending | | | | | | +| LDLᵀ + matching (algo5), K2 dumps | T21 | pending | | | | | | +| Non-uniform batch, condensed dumps | T22 | pending | | | | | | +| Partitioned-inverse solve (SDS algo1, cuDSS default) | T25 | pending | | | | | | +| Hybrid memory mode | T26 | pending | | | | | | +| Float32 factors, Float64 refinement | T27 | pending | | | | | | + +## Cholesky, Float64 + +`cholesky_f64`, T13 (done), structure `SPD`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Boeing/bcsstk38 | 8032 | 35.1 | 51.9 | 1.48× | 3.52 | 23.5 | 6.68× | 2.3 | 23.5 | 10.25× | 0.462 | 1.83 | 3.96× | 7.99e+05 | 8.05e+05 | 2.15e-10 | 1.05e-10 | +| GHS_psdef/apache2 | 715176 | 4.28e+03 | 6.35e+03 | 1.48× | 449 | 1.03e+03 | 2.30× | 421 | 1.02e+03 | 2.43× | 6.62 | 74.9 | 11.31× | 1.45e+08 | 1.29e+08 | 1.8e-10 | 1.58e-10 | +| HB/bcsstk17 | 10974 | 43.2 | 64.8 | 1.50× | 3.9 | 29.6 | 7.57× | 2.45 | 29.5 | 12.04× | 0.5 | 3.48 | 6.96× | 1.08e+06 | 1.04e+06 | 4.02e-11 | 5.33e-11 | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 13 | 4.48 | 0.34× | 0.992 | 3.88 | 3.92× | 0.438 | 3.85 | 8.79× | 0.256 | 2.06 | 8.03× | 1.52e+04 | 1.16e+04 | 7.26e-05 | 0.00015 | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12.3 | 4.56 | 0.37× | 1.02 | 3.61 | 3.53× | 0.53 | 3.61 | 6.81× | 0.261 | 2.07 | 7.93× | 1.52e+04 | 1.16e+04 | 1.4e-05 | 1e-05 | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.8 | 4.5 | 0.35× | 1.06 | 3.61 | 3.39× | 0.351 | 3.61 | 10.28× | 0.257 | 2.06 | 8.01× | 1.52e+04 | 1.16e+04 | 0.293 | 0.0977 | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 54.2 | 49.5 | 0.91× | 1.35 | 39.6 | 29.23× | 0.585 | 39.2 | 67.07× | 0.269 | 19.5 | 72.55× | 1.55e+05 | 1.21e+05 | 0.000316 | 0.000282 | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 55.4 | 48.5 | 0.88× | 1.4 | 38.1 | 27.28× | 0.584 | 38.1 | 65.26× | 0.375 | 19.5 | 51.92× | 1.55e+05 | 1.21e+05 | 0.000142 | 0.00014 | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 55.4 | 49.1 | 0.89× | 1.39 | 38.1 | 27.34× | 0.685 | 38.2 | 55.72× | 0.387 | 19.5 | 50.23× | 1.55e+05 | 1.21e+05 | 7.94e-05 | 7.41e-05 | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.82 | 0.839 | 0.12× | 0.216 | 0.533 | 2.47× | 0.225 | 0.539 | 2.40× | 0.187 | 0.36 | 1.93× | 1.27e+03 | 1.03e+03 | 4.09e-07 | 1.65e-06 | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.77 | 0.99 | 0.15× | 0.221 | 0.5 | 2.26× | 0.212 | 0.547 | 2.58× | 0.195 | 0.382 | 1.96× | 1.27e+03 | 1.03e+03 | 0.000109 | 0.000157 | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.89 | 1.03 | 0.15× | 0.242 | 0.501 | 2.08× | 0.28 | 0.517 | 1.85× | 0.214 | 0.382 | 1.79× | 1.27e+03 | 1.03e+03 | 1.2e-05 | 1.67e-05 | +| lap2d_300 | 90000 | 281 | 356 | 1.27× | 6.84 | 37.1 | 5.43× | 3.84 | 36.2 | 9.42× | 0.852 | 4.08 | 4.78× | 2.43e+06 | 2.47e+06 | 1.84e-12 | 1.78e-12 | +| lap3d_40 | 64000 | 340 | 388 | 1.14× | 55.8 | 223 | 4.00× | 50.6 | 223 | 4.41× | 1.35 | 15.7 | 11.60× | 1.75e+07 | 1.44e+07 | 8.29e-14 | 7.48e-14 | + +## Cholesky, 16 right-hand sides + +`cholesky_nrhs16`, T12 (done), structure `SPD`, Float64, nrhs = 16. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Boeing/bcsstk38 | 8032 | 35.3 | 54.3 | 1.54× | 3.55 | 23.7 | 6.67× | 2.29 | 23.6 | 10.29× | 0.706 | 3.07 | 4.36× | 7.99e+05 | 8.05e+05 | 6.7e-10 | 1.64e-10 | +| GHS_psdef/apache2 | 715176 | 4.3e+03 | 6.41e+03 | 1.49× | 447 | 1.03e+03 | 2.31× | 417 | 1.02e+03 | 2.45× | 27.6 | 257 | 9.33× | 1.45e+08 | 1.29e+08 | 1.83e-10 | 1.6e-10 | +| HB/bcsstk17 | 10974 | 40.8 | 65 | 1.59× | 3.8 | 29.8 | 7.83× | 2.42 | 29.8 | 12.31× | 0.758 | 5.65 | 7.45× | 1.08e+06 | 1.04e+06 | 5.13e-11 | 5.89e-11 | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.8 | 4.46 | 0.38× | 0.911 | 3.87 | 4.25× | 0.341 | 3.87 | 11.34× | 0.375 | 2.07 | 5.51× | 1.52e+04 | 1.16e+04 | 6.7e-05 | 0.00015 | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 11.9 | 4.66 | 0.39× | 0.882 | 3.61 | 4.09× | 0.406 | 3.6 | 8.87× | 0.346 | 2.05 | 5.93× | 1.52e+04 | 1.16e+04 | 1.52e-05 | 1.1e-05 | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.2 | 4.49 | 0.37× | 0.889 | 3.62 | 4.07× | 0.359 | 3.61 | 10.06× | 0.26 | 2.09 | 8.01× | 1.52e+04 | 1.16e+04 | 0.492 | 0.318 | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 51.9 | 49.1 | 0.95× | 1.37 | 39.6 | 28.84× | 0.581 | 39.6 | 68.25× | 0.487 | 19.3 | 39.62× | 1.55e+05 | 1.21e+05 | 0.000394 | 0.000393 | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.9 | 48.5 | 0.92× | 1.5 | 38.3 | 25.60× | 0.614 | 38.4 | 62.54× | 0.457 | 19.4 | 42.31× | 1.55e+05 | 1.21e+05 | 0.000137 | 0.000144 | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.3 | 49.1 | 0.92× | 1.34 | 38.4 | 28.72× | 0.701 | 38.4 | 54.73× | 0.461 | 19.4 | 41.97× | 1.55e+05 | 1.21e+05 | 9.79e-05 | 9.67e-05 | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.25 | 0.859 | 0.12× | 0.199 | 0.517 | 2.60× | 0.24 | 0.546 | 2.27× | 0.221 | 0.405 | 1.83× | 1.27e+03 | 1.03e+03 | 6.35e-07 | 2.71e-06 | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.76 | 0.869 | 0.13× | 0.218 | 0.494 | 2.27× | 0.212 | 0.486 | 2.30× | 0.365 | 0.402 | 1.10× | 1.27e+03 | 1.03e+03 | 0.000179 | 0.000454 | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.84 | 0.889 | 0.13× | 0.24 | 0.509 | 2.12× | 0.222 | 0.495 | 2.23× | 0.261 | 0.424 | 1.62× | 1.27e+03 | 1.03e+03 | 3.34e-05 | 3.71e-05 | +| lap2d_300 | 90000 | 271 | 324 | 1.20× | 5.71 | 36.5 | 6.40× | 3.8 | 36.5 | 9.59× | 2.3 | 9.22 | 4.01× | 2.43e+06 | 2.47e+06 | 1.85e-12 | 1.8e-12 | +| lap3d_40 | 64000 | 329 | 390 | 1.19× | 50.5 | 224 | 4.43× | 45.7 | 224 | 4.91× | 5.58 | 49.2 | 8.82× | 1.75e+07 | 1.44e+07 | 8.99e-14 | 8.45e-14 | + +## LDLᵀ, static pivoting + +`ldlt`, T15 (pending), structure `S`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Boeing/bcsstk38 | 8032 | 35.5 | | | 4.55 | | | 3.31 | | | 0.476 | | | 7.99e+05 | | 6.5e-11 | | +| GHS_psdef/apache2 | 715176 | 4.45e+03 | | | 518 | | | 489 | | | 6.8 | | | 1.45e+08 | | 1.58e-10 | | +| HB/bcsstk17 | 10974 | 42.2 | | | 5.45 | | | 3.37 | | | 0.5 | | | 1.08e+06 | | 3.87e-11 | | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 12.9 | | | 0.905 | | | 0.39 | | | 0.383 | | | 1.52e+04 | | 2.99e-05 | | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12 | | | 0.921 | | | 0.349 | | | 0.249 | | | 1.52e+04 | | 9.52e-06 | | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.9 | | | 0.899 | | | 0.351 | | | 0.282 | | | 1.52e+04 | | 0.108 | | +| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 16.2 | | | 0.845 | | | 0.363 | | | 0.229 | | | 2.02e+04 | | 2.4 | | +| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16.2 | | | 0.868 | | | 0.354 | | | 0.284 | | | 2.02e+04 | | 10.1 | | +| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 16.2 | | | 0.83 | | | 0.4 | | | 0.272 | | | 2.02e+04 | | 6.03 | | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 53.3 | | | 1.39 | | | 0.684 | | | 0.355 | | | 1.55e+05 | | 0.000296 | | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.4 | | | 1.39 | | | 0.643 | | | 0.279 | | | 1.55e+05 | | 0.000122 | | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.1 | | | 1.65 | | | 0.706 | | | 0.611 | | | 1.55e+05 | | 7.55e-05 | | +| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.4 | | | 1.53 | | | 0.816 | | | 0.421 | | | 2.02e+05 | | 108 | | +| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 96.4 | | | 1.55 | | | 0.827 | | | 0.448 | | | 2.02e+05 | | 52.2 | | +| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 100 | | | 1.6 | | | 0.806 | | | 0.412 | | | 2.02e+05 | | 140 | | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.65 | | | 0.226 | | | 0.192 | | | 0.321 | | | 1.27e+03 | | 9.81e-07 | | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.69 | | | 0.194 | | | 0.229 | | | 0.265 | | | 1.27e+03 | | 0.000129 | | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.74 | | | 0.212 | | | 0.291 | | | 0.299 | | | 1.27e+03 | | 1.44e-05 | | +| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 9.21 | | | 0.216 | | | 0.28 | | | 0.265 | | | 2.02e+03 | | 0.182 | | +| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.53 | | | 0.283 | | | 0.238 | | | 0.262 | | | 2.02e+03 | | 0.295 | | +| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.63 | | | 0.217 | | | 0.322 | | | 0.435 | | | 2.02e+03 | | 0.221 | | +| lap2d_300 | 90000 | 257 | | | 7.13 | | | 5.15 | | | 0.712 | | | 2.43e+06 | | 1.6e-12 | | +| lap3d_40 | 64000 | 332 | | | 62.9 | | | 58.4 | | | 1.41 | | | 1.75e+07 | | 7.68e-14 | | + +## LDLᵀ + 2 refinement steps, K2 dumps + +`ldlt_ir2`, T16 (pending), structure `S`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 15.8 | | | 0.827 | | | 0.371 | | | 0.6 | | | 2.02e+04 | | 0.00442 | | +| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16 | | | 0.812 | | | 0.503 | | | 0.55 | | | 2.02e+04 | | 0.0164 | | +| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 15.5 | | | 0.828 | | | 0.339 | | | 0.596 | | | 2.02e+04 | | 0.189 | | +| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.7 | | | 1.56 | | | 0.931 | | | 0.814 | | | 2.02e+05 | | 5.11 | | +| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 97.4 | | | 1.53 | | | 0.813 | | | 0.978 | | | 2.02e+05 | | 1.91 | | +| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 97.4 | | | 1.55 | | | 0.825 | | | 0.958 | | | 2.02e+05 | | 13.9 | | +| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 7.76 | | | 0.222 | | | 0.215 | | | 0.719 | | | 2.02e+03 | | 3.23e-07 | | +| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.47 | | | 0.295 | | | 0.233 | | | 1.26 | | | 2.02e+03 | | 9.14e-06 | | +| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.46 | | | 0.206 | | | 0.235 | | | 0.65 | | | 2.02e+03 | | 2.4e-08 | | + +## Uniform batch of 8, Cholesky + +`ubatch8`, T17 (pending), structure `SPD`, Float64, nrhs = 1, uniform batch of 8. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.8 | | | 1.88 | | | 0.586 | | | 0.246 | | | 1.52e+04 | | 3.22e-05 | | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12 | | | 1.87 | | | 0.562 | | | 0.326 | | | 1.52e+04 | | 1.2e-05 | | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 11.8 | | | 1.97 | | | 0.492 | | | 0.28 | | | 1.52e+04 | | 0.165 | | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 51.9 | | | 4 | | | 1.88 | | | 0.475 | | | 1.55e+05 | | 0.000339 | | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 51.9 | | | 4.61 | | | 1.56 | | | 0.503 | | | 1.55e+05 | | 0.000136 | | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 52.9 | | | 4 | | | 1.57 | | | 0.63 | | | 1.55e+05 | | 7.84e-05 | | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.32 | | | 0.739 | | | 0.213 | | | 0.375 | | | 1.27e+03 | | 8.25e-07 | | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.74 | | | 0.749 | | | 0.208 | | | 0.196 | | | 1.27e+03 | | 0.000156 | | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 7.1 | | | 0.713 | | | 0.222 | | | 0.223 | | | 1.27e+03 | | 1.88e-05 | | + +## LU, unsymmetric + +`lu`, T19 (pending), structure `G`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Rajat/rajat21 | 411676 | 1.77e+03 | | | 31.9 | | | 29.3 | | | 2.04 | | | 6.89e+06 | | 6.3e+07 | | +| TSOPF/TSOPF_RS_b39_c7 | 14098 | 89.2 | | | 2.63 | | | 1.03 | | | 0.451 | | | 1.47e+06 | | 2.24e+29 | | + +## Schur complement, Cholesky + +`schur`, T20 (pending), structure `SPD`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.7 | | | 0.945 | | | 0.374 | | | 0.201 | | | 1.96e+04 | | | | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 11.6 | | | 0.934 | | | 0.396 | | | 0.174 | | | 1.96e+04 | | | | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.1 | | | 0.911 | | | 0.363 | | | 0.201 | | | 1.96e+04 | | | | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 52.7 | | | 1.51 | | | 0.691 | | | 0.212 | | | 1.65e+05 | | | | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.5 | | | 1.68 | | | 0.685 | | | 0.216 | | | 1.65e+05 | | | | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 52.8 | | | 1.43 | | | 0.69 | | | 0.219 | | | 1.65e+05 | | | | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.09 | | | 0.281 | | | 0.232 | | | 0.167 | | | 1.51e+03 | | | | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.9 | | | 0.267 | | | 0.323 | | | 0.172 | | | 1.51e+03 | | | | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 8.14 | | | 0.256 | | | 0.237 | | | 0.179 | | | 1.51e+03 | | | | + +## LDLᵀ + matching (algo5), K2 dumps + +`ldlt_matching`, T21 (pending), structure `S`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 21.5 | | | 1.03 | | | 0.484 | | | 0.259 | | | 7.38e+04 | | 3.71e-12 | | +| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 21.7 | | | 1.05 | | | 0.481 | | | 0.243 | | | 7.1e+04 | | 7.86e-13 | | +| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 21.7 | | | 0.969 | | | 0.679 | | | 0.264 | | | 6.85e+04 | | 3.76e-13 | | +| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 129 | | | 2.22 | | | 1.22 | | | 0.419 | | | 7.23e+05 | | 0.00489 | | +| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 133 | | | 2.22 | | | 1.39 | | | 0.419 | | | 7.31e+05 | | 0.00471 | | +| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 135 | | | 2.14 | | | 1.2 | | | 0.397 | | | 7.23e+05 | | 0.0156 | | +| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 8.75 | | | 0.324 | | | 0.287 | | | 0.222 | | | 7.26e+03 | | 8.54e-13 | | +| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 8.56 | | | 0.345 | | | 0.375 | | | 0.249 | | | 6.93e+03 | | 7.95e-14 | | +| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 8.4 | | | 0.271 | | | 0.325 | | | 0.226 | | | 6.93e+03 | | 4.71e-14 | | + +## Non-uniform batch, condensed dumps + +`nubatch`, T22 (pending), structure `SPD`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| batch_of_9 | 37194 | 129 | | | 2.01 | | | 0.95 | | | 0.427 | | | 5.12e+05 | | 0.186 | | + +## Partitioned-inverse solve (SDS algo1, cuDSS default) + +`solve_algo1`, T25 (pending), structure `SPD`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Boeing/bcsstk38 | 8032 | 35.2 | | | 3.55 | | | 2.24 | | | 0.456 | | | 7.99e+05 | | 2.15e-10 | | +| GHS_psdef/apache2 | 715176 | 4.3e+03 | | | 447 | | | 417 | | | 6.53 | | | 1.45e+08 | | 1.8e-10 | | +| HB/bcsstk17 | 10974 | 41.5 | | | 3.77 | | | 2.38 | | | 0.51 | | | 1.08e+06 | | 4.28e-11 | | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.8 | | | 0.89 | | | 0.385 | | | 0.243 | | | 1.52e+04 | | 3.45e-05 | | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 11.8 | | | 0.908 | | | 0.345 | | | 0.249 | | | 1.52e+04 | | 1.17e-05 | | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 11.6 | | | 0.859 | | | 0.392 | | | 0.24 | | | 1.52e+04 | | 0.375 | | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 54.6 | | | 1.33 | | | 0.754 | | | 0.29 | | | 1.55e+05 | | 0.000307 | | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 57.4 | | | 1.43 | | | 0.595 | | | 0.339 | | | 1.55e+05 | | 0.00014 | | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 54.1 | | | 1.33 | | | 0.736 | | | 0.335 | | | 1.55e+05 | | 7.78e-05 | | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.07 | | | 0.267 | | | 0.217 | | | 0.356 | | | 1.27e+03 | | 6.85e-07 | | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 7.17 | | | 0.224 | | | 0.224 | | | 0.345 | | | 1.27e+03 | | 0.000103 | | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.96 | | | 0.223 | | | 0.217 | | | 0.264 | | | 1.27e+03 | | 1.11e-05 | | +| lap2d_300 | 90000 | 261 | | | 5.73 | | | 3.8 | | | 0.702 | | | 2.43e+06 | | 1.85e-12 | | +| lap3d_40 | 64000 | 327 | | | 50.8 | | | 45.8 | | | 1.39 | | | 1.75e+07 | | 8.3e-14 | | + +## Hybrid memory mode + +`hybrid_memory`, T26 (pending), structure `SPD`, Float64, nrhs = 1. + +| matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| GHS_psdef/apache2 | 715176 | 4.37e+03 | | | 446 | | | 418 | | | 6.51 | | | 1.45e+08 | | 1.8e-10 | | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 53.2 | | | 1.4 | | | 0.614 | | | 0.328 | | | 1.55e+05 | | 0.000291 | | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 54.7 | | | 1.41 | | | 0.593 | | | 0.452 | | | 1.55e+05 | | 0.000147 | | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 52 | | | 1.32 | | | 0.779 | | | 0.341 | | | 1.55e+05 | | 7.14e-05 | | + +## Float32 factors, Float64 refinement + +`mixed_precision`, T27 (pending), structure `SPD`, Float64, nrhs = 1, no cuDSS counterpart. + +Not run yet. + +## Runs + +* cuDSS 0.8.0 on NVIDIA GeForce RTX 4080, repository 57e2ea9+dirty, 2026-10-02. +* SparseDirectSolver.jl 0.1.0 on NVIDIA GeForce RTX 4080, repository 57e2ea9+dirty, 2026-10-02. diff --git a/bench/comparison/comparison.png b/bench/comparison/comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..93809524a03d974b8876eac3c56423e1b4b01ae2 GIT binary patch literal 224672 zcmeFac{rA9`!=lAYNmNmk>=7MQ|72-HJHlWATyC6Gi7L0sYsNWl+06x3<)KfDMLky zj8V!EA;Y&HcWJGj=l!1ddB1IYx9$7mXREcs?Y^$-Jdg7@_I*G0^K^N?+-{cXOQth1 zF|q93vrB=AX__Vz)1R7CC*vz7ekO7F-vmpA-8-4$%GlcR$)5&0WOpzz-FKfctThRr zFW1?lAj`ybaxD|n>GMoXL-^9^4@^wf+)PXznoLY0K1@uDP6T8e5W_d7o!E2Gl8K4^ zBK@7<-qNjypJ&>;Ylo8Eginv{)x0O&8T+z`qhD&xY;(yqEbB`rSw1c-vD$w>QA+Z@ zh@76OUhC^BR?8x#ip7hHIK5i~o)ua1r@W9!nr}OMb{+Q|bG-!w%{3Cm_%)qBwa{usbBInErd9{Qo7SdiXNzx>wdaec$Zs>#M7;Z_(GGT$^kt`Ov0w>a=NET@8efUricq1sN%(mX~Vx(nT+1K{Ui@}v;fue)&FLH3R zu#0$|KF!peU+Tkiu3Tb_t#S&7L(cOM$wA@js;cWgK6_4{6uEcro}ImY_tSau4Xv#% zKc{@S=VzAb;VURB)9?ROGu&zBd^a;QV5rWrd|T#7{~NLIpOR>hS>|zYl%JnAFHKoJ z!)k?yh~N9%i;CViZp_7#aksRzbRYNj@_H)zB{TQd=EDO#Bj3NZ1=_v~(a3hHn>J-8 zo92`A(|q1J^veDi(hD;d6%-WYC>=a_Ir8@H)6?dy)$FK_UL-F*xZ2{B!{}h!aQWEq ztkfrkg_r9``%_B-ggrmMeW)0mn8+(WI-oN;+$Q1a?Y-OabH+!mqo+EzhROKu#K=cT z+t>&s8I-r0Ie%Y@o2qIHI`#Q|XKHoW*BUwVt_L{QIUCFJAEPa&i)1ym+xsochCO<(v`{!CJX4 z<_$R$Vz`c^ZU6W(cFvCv4-N5kyBHsz6Yktuxy+$!M_GVyZfR(EIG=tA>jTrbMMXC^ z-mft(2=w;zE4nmim5-P`@BRDtg@lBkR9SqBfrzlFG$(nhQLtTGHEsbVi2y>SVOE zR(#3&&UO4%oE~CzU~o`NSxM>Xxmn@`zI+C0zE~~Kt}f1f8GHC(y2Tm+f0jYLQ(qo^ z8=zQfZf@?9?(2VJW{D>pRh0GNK4X?Wvar%`>+uio9*O=;o)#YiW;32TJ(u1I@0!r@ zJY*ufsLfOTB=gU8!U_rs32!=mUd9}h92*^3ENIHs(>vIeJIk;>Yn$gf`PNqvh_S0z znPm{flP1ksvc$Fe$%PpQvz@l7I5|0;cX6o*-8+v(bq*!zvmjy(>e9>$wp8|g zeC5k;ICrU_Y4fXwhhMUCjdD&;sKXH1ojlnSyj)b&pYB{wPw(d{Dv)pbQI-qXt(ptw z2$%ey&DDtdEfk6v>;hB{L_>@jLhCBWc&oo1U#0%b3Y7l3-B2Os2ZJIzY($ ztmF579^21HOzYClw7WYGuaXz*{?nv3`7yuoYwqbYX7HqEWb_>G8*B@De_8XZN;X=O8?<_J+-y z*Q{A{0dLUT9v-ZXFlw~T{?5+H$%!!3#GGZ0jeb{?_2s?rt=^eKP*6}tHSUPk(AV}& z>KXGX3VbA-#Wx>*@btug`J~y*Sck^7$(KKUGDcLWrJAzi2I{z+2a7d)wjN)&R$gA- zNp8`WqfeU~8=pvw4a(QOefw)k%^F`)wC`)S?nG=}zy6Y}zrc$y*`@oW zrFn)CSh{+8FB0{nnJ-+pa3tG_-7`3tBQ7pZNl9ro2Zy|=DOaiA*1Nmim!&;?Xvw#A z>sDO@0~*N0#Kf-d?hxybFO!eInz?AvqK+HE!Saa1Fl1?D^Yd>_*Ku-Q9v*f;;77zJ zCf-1Dx#8ilLs@yjnKNhThj9C*c{ewzB9cOo$=1sHoxoa}J9~Cctc8_TsC{p%T8dG% zD`hd}CH$8{Brhtcsa*<5PWEyaAG$GlIZza?&L!cPW!+amEp%F!x_`NmJ5N@63TqE=#BrMw z7q?babg5@_^hP9uDjPrr+>L8te*TnMvu1TPef})h+gf@*1A}4T5gGoWCTZQgwK6%h zVzUNYm(rN5*tRVYb1k#^P_pLxCl{((o0@V_n)k}ewlq9G$7*C`^g8AEq5}sGu+C%? zI$ezve#zDK&V$>xmt)QE@)s~!zj<>Wf>Gl7&6`riw>GC&ezFnWyLWGZg!3{pGqVhv zPS^POEvb#D1DNss`}c20%}N6*nKpH5gH5{Ah{(lR9BTyy7wz7?8}l!hYWntswe`IR z6%`6`N7Bz0B0MxSG-8ks=(TI{Z>$v_WmQ$rz`$#iau#krbb@biaB$aOe_4bhnVkdr z(6O+!4Hw6n3lO$+;WH>}Xlaqs)Lc%JM$w($Y@wVX6YQow|k8homu;nK=~Sz!Y0N^z!!h^zzz;Nx_QybMoYh z`#QTj6ptR2LnN=o&^tIda5uNM-T)2>mkT`h=E3HlRU}*KCr7E8n@Xm*=hHweC>LeDvu45+3b8&CShy+?H+ICo9W>G|>9t#oc7H`k+gf zrpic3NtFak1kVy5IE{L#rI%D=*XnD4cMj9ZcdKgYX(^UL4P;p=uwPyMnsRy2HWa&= zgl;tEEL`|3bgw5Ru`qdw5ieoO)`o_L(^@EL!=G)lbHBFwoADZyvB|9Z>*{hYu9=m< zkQiaDuOD8pZ9D1J-}z?VoH=KzYg3N<^6E{msi{$;#dTjNzb9N`jDC?9C#FQRptyL|%9UqiY8+~_)felNTa^UL zI`yr!;-0h*%G1+{v&6QWOq|TTe9f9km9I3MORukx+8HrnHs?Ug5-wT+FABG_(OrNd?a!$mK&Ktzhx5}^~z&rO-tsxfELqI@479idbGo7SSD z9ChfH5+7)o7!Vj3Sq!X6;k#78_;yCdlIWmqrzk*>mgOZE%%9JVfK`bF88FpD;}M)W&TgAD>4>Y81<<4@f3~|owZwIj0KjKi}f-CI1|dM zj5(O}I?a3)@Uz+@JP%QjixR_U41(+@E24)Zt&rZLl~j`;a-x9= z;hX>UYo&ZIAkjIAk#_mvmMzX9ckY}8%L#a3^5$nE>5*<32VnDO&pypqQh2z>j~`d* z4feFuMFGOz!bmA7DxOou)0sW$Te#be?Y;BZH)nHe>%0x1Gk`n6L-R2SNFs=eVk}Q{ z3yVAA-dyU9fL-ghY;mWGM4Z9U(6B1cG&KpU2pBpauWYZ+mQcYITwSu&6*#Bk#`Wuf zj1vb?3+!8Nst%}LT`K5CSD=N6JQsTJo_W3Fw->Yj`R-Vec7rY62eTZ6tvR{4^xtLL zJM@+cBEBbr$;O}>+hNv)?Yfp*Q#LTm8eAK#5~~e-jnb-k-~cVH6eQ(q01OU}jy#k8 z{8Mwm(xt`VLWh@ZHQHr@^t^h_nr@v3#x+j>NVgw7y3Cq$<3=4UR|04YHmYW)IIWCYjojsf_ZtpaZcQc*r-2pm znLX1bo|&fdS$)_~gXrvv7v0C=mGKue(?|WT!lVhr{N=`Wxg9z9>*u%rsBIm8|`Uq7_n61MGBzvlF* zQ*$~7x|?D&vV+2do%}K~hdQF^Zx!eqQ*_GlS45f4o;w#=jATB@16Z$H87AvfS69a> zX2;EP6J#t=uXz2&jk!^Xth_6Wz&gr?`aTjh|4)+|`Jcy8oA?rtNON18j*!!^5Yz*H z!-_x80aEht%!xjK{?C}krl$K#a1W_>!1s+`CrpS&`sH;Vb#R&qta{J(%RA6Q1tQtV zg~f|B9Cm1HuLMYI(?_iA*|+b`1H{vf8#lO*JhWj^w6fy=l07Eg$GLvJW^0KrCB@D+ zsf1!9!KTC=hpykc^_M!*Ct`mDgwk?)L51&~tJ58y&ICD-cxlSx#BckcYd zTG)A13=Bf2tt`-?J8uz`fF7MYckf=le0j$YvfKRX$utIB_YjQ${8VdcZLNq@T(``5 z*nIL#wgNM!-lgDk;sF5x1Ca~4j_g4No@{GtTU1n(a0u)Ze9r*W?9dHbaL|~{3hICm3{Z)3+TSL2c?B9#g%f9RJ6muIJeWcg;2(edfdv-| zt>pZL3v*am3t|gOOZAZO=~~smKpQr0EG#e2w;CO`2mcYW?^(TU*|IuUu*-#;)J_`$ z*Jc9Ns+nL$K@nttM)>9AGa`<$_e z3$f#Zz`A7mHbV<6QLL{@5wWRlVPg}9S!X3|1={3-e|MMgl_#9~W@=gu3`P=%va+%d zssg)+)p9{W@5V-LW^mrC91=lCADw&=A~|I=@Z`78*OZZspugQi0!ucko-QFF0RY2; zQbmy%EbeIc>3+T)W?>o&OI~j7Ie$i-Pft&`>ZrP$&*2<^8SU|}A9lew%v!f@-6*?F zXYGZ;>gtqrtoap0+{s^Ug9Md0q) zvuA4R2HY<|o8plpSCs+h!MRpTNN`l5+#$Fcn+rYd?Cb#fw%geW5kS>UeRJ8}eVv#X zTP{#snoZ{tmG16tHFlvBOwm9gmK%|B>>4kxOUN*9nk+Hp;oCAr`E62$hMa2+3=A@? z+Rwg6P6V3PNwaF7OGWgd?Uz>lBS(%F&1TjxT7Bc z`t%=+-9uyEFTxJlg9p0T=;*g>9g-P}w`4ct?^DQ+e_>g-zqmW){rmR>T8Ki2g@w6b zIV2**f6g9rg0z+s9iLUCs^NIS@N-={!etq#1T*+dcv#rvN+4qUkFluna|s;q++>!O+}yMAG*o+@HGlkA4DJoy^7KU0GZsQ+Dse|H6JY-)ha413<<%i z0f5kZetQRqPa}|82*&APlD<|CpyHQzkItVzuUSx7xI#=U0K7vRQosVL+ek>yAWW1) z^W@oTRCNjTf?G3(iTUD8c5MI$O6R#Z)<_cz0m)yzb}f?pPOw4lzE3rth-A$^fTZqM z*`qfhrfF{gSg1+V+jRH=bFRAWTd8Bm)?=#lp^hV+y#MfFj|uAC-Ly1T#qa%{gZUDp zJLs)2gctGHiAhO3N77E5sYx>6JJoM&D)sI2TL_7#_Q=cUUk?b7k&~N=ij$u_UbhVa zOCYvr`C(-vFF^0p8W?DDC&A1G)d;oWAS9l?y)rUSyPiwVdI2)X3?Y12R9IBBm!MqX zx?oMn720nen1H5g*FG>=sYF{}mV1rpi# zlkW7}D-#_UBhfx;)Rcw>0`#6**7m+12-7oX14NP*<{s zd!*?vGn5HR7R$DsoV{#W8310_*RRcOjh&sP03Q2x?fMh)#?xodcy*pJ%WPDQYbF64 zX_OUW(ry)%g|r@%PQ2fVWa#29G3v9|bFEecR12U_C{X6nVY2>znVa*30Z=jkFXh_T zNd~h#JUpOR>7<=_{|Bf!sr0Ns^d+tfHgb2?X9st6onS_usj_J;S&WByaxbi} z55_xm2Xk%Sd<|NvPREewigJy>e?I#F+i ztRMg5>%h>f+{KYhs{?^-7G5 zBx(|g=p{ZptYyIx@(5WT633n`HPgf(uq@%98jZ@~bTvC$0!j29o?Z>Iut#vPdtqtm zHK;L~kY#nCo(728&a8xF#+~=sMSEJ?QV)Ww9 zBo$~P{9gZfXUF~;gCpq{lPb~u0akfjg;*6I?vez3bPqxLBz}Qxp{15-#{-z-0}Pmp z80GH!@Zy}{JG*mZqhH3J(NF_{1P)p{rcUq8N@RS5~+9=)Cu=H~BJc1cO`Ao>Yr(MthY z=SU)SsDl@V;dmaeAt8g7htKfvu#c!M7jkSRsO`arHk-koSP^LDSR;725H5(0#&u~P zRNBW@LvnLKr;Wl)Mpt)rn8}+5T3aoe_sD>gs6qK*MhTG_9UYYk77tt_eM_^bq~s|A z+Fux8tlpuQg|6L&M`!>TevH{C>2*u?@C{OYE?v3OR9~8xH;IFTgH*Q2goN3Z&Lgj! zfqtF_kA7Vjcj=)f%eWUn{o!9GKP7w29pgP48W_E{4|m;re zCsqQcl!AFThvRt^CSXKuObwueW*_q5yt#AFwuf9?)~G@1elOldn?~}jZT%WF3qirP zks|a*hX);oyYpEgaPWXXQmX)2Bn${E(Wdhdz%w_|9~1*b`IFKknRXtSxj!H&>j1a> zIb{lC@dNjV0b}|Ah8LhwckarS8K{y^9zQ+<(8!G1kZaY|u!F`CnO6IfyL;P<-5hK9 z_&hT+#bkcIa?I*K5BZyx;lW-Mi-qU#sAienlWB@??>LvR5B0wgmlV|@M0>FE?uCTO2g{+_M|1*h zs9~}lp{*{A#tk<$HtvJ~w{V2xhnC-K$;B|pw2tWZ;*Q7#<1q3$D z+Dv;sTI_V)o}M1=Ypgtf_?Nn@_>YgnMO`XXGNCcUWhXzZIFw?Phk)faew(r2;aj&- z{ks_%erQC_RK(q-BV|(;OFPABnO4 z7J`U_ECMz?7nPcx4tgXXB~BD_v7rxlpXTT5Y}GB8?KF+T?GQ=>N|H886Z2x;^9c#u zL5}?g>F;N+|5dQARaI4up*|>d{#+Lp5{U`l;4u?zzZ_lCftd60<2O7Dg&&kFuLDUx zcLUl-Lj&Kx69`0V8JFl6{*>s4WzfCYhi)>M|9kW=;AHR&2p}H?$&HgHO;TeQwm3g& z#=nQ z2&jp{)&sKxWhU^5vi=xN7SfKxP-kNx9{q(!67=-&c$~cwSbZbf1xq#nzGa}x&KNM$ zweWN>g0Bf>(r1aFsSHY4WGpI1iNB!x8~C5jV#zYMl?SgA7WT!=kWPiiNT;yEc0NMmp}{=at|NxZ|Lc9h?wt)0D&IgP(O!i<}FxbBn~@0|({+cB%~y4JjN(viC*E z65L1F0aagzCjDFKjKE1Q`dmVW-caz2V?alH+OIiiHZP%As{Z5 z7!F}*XgoYTb?7XfzjzU?gvVgd7l7St_d(jGT!@Z$Bkq|pDY&&e)cSiUcZ99L)wB>+ z)We1(Pq_;5&5FJdh(>ET5F&bGlNEuzk<{yC{`zZjUpqKJSy|b*PsZ=3ajwU#0X;!9 zRTo3jNrt@%#W5GJN?0Onv0CNbyLS#_Bi{(HleM9C`ivQ%#4N{O#=K8? zbrj~E!OX5FGwNJX)wNqdp0+$jwYm><2@c((1GTLkRv@7JC%BELaDOnQUa;Q%2M(M8 zX6ZwY)N05%!^|c$8)~WnqMhX4BNg$8{67;J5mo7!$y4_GVh=RbPPHh zvuPeg;e?)V-@?Vw>CK6v07Gkw(Z~ZUvK;KugJR@@#ZDbtToG#=7;e9!A|pP*!QqAC zaGHkZ;vklV{pa*HQub07EL@nVU%CXQm)zs=kDdVt*}uQAC@m00-$%rH115=}NG)}O z(7hLjfuo7M7mz2y9-z9>#3Mxyy3y$Zg)Rj2;>J>R9Rg=R;2jgQDF!LvA}1&(;bdYb&>OyX zR9^vAoWsT@1GO|&5+gd;CNWlsuvJ4hf{ZXg=~XJq%6WIBu5|VEpkwHwU+Sk-{m|CT zWhQ%3Dc14x{cz1SLt^(q|A5*gsfQsQk&M9aIAn!cO<#<%gmQ-IqYA=`XibMFs)#PJ zcFL3~N1X=s@S_o>$S~+OQYZeM^Oz$81wBtQ*P#wbL^%LP0@(*7q(B4+V1jC}LW$pr zg!($$St1PWG3{zBh8U=dr7*#z`(D33+v#$K?U%A`-|8fhD_qdHn>}wH1uQp63|R|| zX0WidpoxHFao?h4ACXZD3yTP9Zh^yi0GG`J<1b|_6x^57w9#&NXU%Gq22_}6B}=NPPb!f<(@*JuC*hOyuw_o*cxn}cpG`j;m*lEDM+5&#}nvP_~OmbMrz zfFJ06*XS1Wos54r&m2PgNeFGfwMeW8xJY?KqYAlC$b^$Yz-a*++tm=*a6s?1db+!* zXkiw$MH~jWQxD_SKlKq(B>{{Q&71y$m~ydtU9iJWlsSmKYAMHFoc-|O*ym7s3yNRT zyWgHYd-ipz83!p!BDSAPV#&=0z|M;Bq>?sa!UQ$4r@$(sLy8jcx?t)P7%oTysZKT1 zpcY5RJjnXgLw7+y#QpMbN|7Eg-A%;g98I3RgyfzF7DuS z82y!}kT-p|oe}_A(#K7NJRCb< zC4hA`XFi&!z!k__Aza9XPdh*oLd2o?H-Na^gLLOZ?Iv*7DCokhFnvm*&V~U3S3WQ~ z97D>X=|vwOR))d_@q@aauvd`ZffPT)2sjYAq9EblMr^~=1X+r#MC4tAut{VGtKGb# zic)P@2Hyd-;#3SH8%7K~XHNrXV`WqWxuHn&rI0L$io%S3!Pm|=izKl!D3ES( zsTZLkp8$g4ZU+d+!%*N5yR9m~u(Kf@Kz-qP)LSMRqyBIqQnFDr$P}u9+FQ6OScm#M zufU`RzvSyIM^V62v96qnY9<(3M299=;~jJ@hm|1Ke0uk2DY-%iu%NjoO_@>&s2PJU zS65fpZ3K%X<`W(_NNL(|73Cr6ai_qJg9mqtf=Ho&I$sEt5;?+24(~?lpHG-v;6Cv1 z$?$FRm5WK5U@5l2o5hN1N*D$GFdA1-@OhYCe1in(FqBSHDM})w;z773@JN$o{~_dJ zn!_Nk3oZ#^&;2p9KVmAbuCB1qJX6}gKL>duot;Y~s|4=vysu@NybPpiO=px$4p_SSIP>!_`*JExz@eHZ_Arp^G;y8ddn0Q#egF%^S}6kQ(j1Od3`cRo)xR7888hq}Ay z&NQ^OU2I3U1`b=T>Cj$lY8L0BnI(fsb^)kjXj0|D?r17{C zwo>Rl^HAFq_4$uVKygD@GvR{~L+F#%N-B=Ui4&SY3Dj;?p%%8l$*;#ozlKX_9Rkrn z_H2UTDjWgIZ}u*L00Fz`GmWt!)zQInXKnh~rB*x)9%o7IQDL(R5k@}&y z8Q7LIhX=aVWP`=o(Xn)jLdf)D&K2O|e@{MXDrZKPCr&i9cx#Z2OA<{Ff@r;M<@q#X zu;8!?7_-9U_ze0vHPKlZ-C~eu88{PH18f9SAwhj;>Uy8cN@6rg&G#UtR<%MH!^nk6 z0D6@KiY|hPNX{hCmKf?7no7~im^I4)|DzTVn42cLK`2P(!1IJHv6!#6L($B$dZljr z0`p5>AR{g&0bo{&(5kE~As*mKVtUYJ~Mj?Pc9|l3)7PrpI1EL2~ZPw$ajnw#7{zOHep? z;#6V}`GsM_=cHvNd(*bA+d*`9Nz)fCEVe zRTqwiN#_7OAZgQv0#>pLHC+=Vt2S0MD>YM5D1-o#D1B0IdI3aUiY175tcqw{1v?FK zqB4h~s!%V|Y1l3X3Z)z3Sq0vPXHoDcOM)@tTCDKYU4WtFPepXSp`2<=2cxEyG6F=b zi|0j;h8zN9U9iS7wtQ$eEYaWaXUWI2IUHlBT*^xv^0!|+G1*%&vun?Knc%+L+huR8 z=Cs{*a{r45J-fJj3q%*_R_@cPKJrG*eYfBN^S6l#hrhMm&ls8~ZRs(e=RmsDOkXV@ z-!Z;&@!sLq^1D-4U6uQO^3j8uwVm4_B9cAHAN}pn$Vg7xI`iFe>8*Ya*WsEJhbzLW zHo&q>I31d#!r{aI0_f3|!01z{|Lv`g zIBf|Jv^gYR0(#kl8xvj1=R7*h<}~nraJj0wwK5vYw^Tqm98%Lz43$ybe-9fO_h2O-m4_kOb<%7j*%=6h{p}UFOH2^3yG^>g@U}y<* zV=E%293IX}BN(pIKgK;wEarMhZZ3PoM8&&l>jJJLBv*0hLJ>(vlde|_@9qKCyjALe z?r|_T`7(*I;Ulp77y>NcL6s1%0kc%VwY-m>IW_sl*BsWu=*IE~o+ux*`)t&+&=Cx=pK;vjj>RX$`haA5>tS@D^ zt@D6;HnbF%xs|`{)FzHr(fUET{&%OoB&T;oMf1X8y6I@9P%MqnDmS5(Kn;ebrexBp ze7Ee>Cl5^OI`$VBJT_cv5FSBa7WPx0?%PY?h7C=#NBW`s@W%pe-Fo;rW8=e5iPDgL zucIlpsx$D!lWFvL6*nE5mev;lHYSDOQ-LpSX-#g$Xr}`_-%8FH9s1at6g;wtCMz0C zPZz||@JmAO%;K;i1bzTSHhnz4A$&3Ndg#1^0iJ>ofOLN=IWji36slrye-`YEZI~T- zf7%Yfh*bAR==+60G@i41eajuzDu&7IJ%zn!1@2B??*^dhW!MXRMvh;Yg!c)AK|oH2 z*iqSf``pYTno62C6O=6PN;%QZ9QrWY5B8^K2gb%`Wr>Feoivi$)>oAo48o`f_4xlJ zKKwE8aYdl5Np{_h$%hhk_qqu+UQ$v~2}49e0hB+55#C)U+!kOQfpA>RtGj2k>!L*H zqlq(xmYdkTF-aYd*e|d_%Bxz`ndi4a&jhZKKBVqE(l=OB?sN<7{qSnYT(Bf}B-NHe?J_w3(8{sbnb*F~o3Ew_Nwn<0+a`}zAPaZ>z~(->r~U<%5n1C&gUZ;C1^x1_f`;zwhs!7Sy|9to}r3G0D*U z9gl)5X9mObD?wr5@8{=Nhfb?7ZWuO#CyY6v6~O|e!-aj0mf}%xLA8RN6k<=@&DeG% zyFw_N7WwS9p~`qBxL)#%BY-{Z;T2DWQ!4xs$JjtV+%8(9BlTn3OmGGC6Kj)gn>}{7 zV*2-;g04{H^u5!2Y$$$gpFdid{P@Z~|Bj9hvH%H#N%SHg=_(>~wn1_#1176DDl04d z87VUWW+!_*YbCi2Yo4P7Ss*Iz0eG-mQ!sdE59`$~6|p*I121f5@c;JlGBR}Bgx69+ zIdteyMc8`R;nMnH*>~k=5n4c0Xoaa&#vk2aT~IK43G`WufGm?DX<~-~f=VH(L7($W zK8T>I{RqtM)O|%m7y6f>87zo{uh8^`VS)DxIHUMtaRd92Hcejxxo{AODyX%!)z}s8S#AiS@^EY> zZe`&R7jqtN;((L2Co>rIT1aB(h5L^I%j_*0 zUu3h`BVNLj&*q7e-;5zFh8|F%4?k8qwubUzH5z{i^^_|@rLZhq*C(lhUDxP(jj#tnJIA^Vh8{8bK@&C4}a!ooFXMd)x~k zQvk(K5vBSa`uBd&33XoESsSqrIz4thWRv3;MK%4gaCSfLwPIn@C%VHAXFH zLXlMUk8ixWFCF`BdsE^aH>2I_M2kN;6<=xduOHSg6Kc9jMRREf9J6RRd(@rCWkIj! z5WNg}@t!j9K7gkC5vRcx;f{#AJx&;axB!grU|+m*AfQAh1i_(ZpvQ99YHmcwWo!WY zvsMOtNYq;^E!z_dFP?ZO^1@#FNGPm zm_WxDr*97_7b9#vSkMe|{@YFO?oN2)qf{CW^dUJVhAPwiitWZWDr=2&gTc7-%QbKq~Zu9sBnJe4{oiF7vVdCV_xHvA# z9X=p+0Zv2h!XsZRE1y5V4$(yzb+!h{RZ(3%@ESpw(a!qO&G_QMOgnSeI|T?V?{Ag} zyXNbXGxu6rS`z3*KbAJ;?}eJcccLMu>g7v)Mcfye@CjJ=__h$3NNiM1_5qf@-+-Dr;y|V&Ng-> z4AdS0gwL~i^X3|b(I$z}RsJ7OPn=mWVG0{e$N(^jt7#lz*zre#3I$>#G_{-O*z?~A>FP68ZF1wZqO1nvg22s3bEB-Rr%0HO5C6YxYUwh4wdhhCt!zf z#dS(=aUE^e%b^!Lxc}%^WwPC1L@4 zO)xTnC`e5?hM|&7EHyru@|N1;@ule1`eTJOV~1r4+Iotrs$|AB@Hcr-_$CdQ3)eBDjMwmgZt^&F$!Z_w1l-fJw)a&Cy7t zmCJDsaZ^=Yttb5f$&Vn} z3y5|Is3L{;s55w!j&VVql?!Sx`}@Fp-}dZ&d3m< z)b~;WP#+|5D_!R`KNc!pNN+3xr|sKBKtcn0klhEy9|FQp1)SiHRVnrf6t(=Z&%&_C;r!&FM)F=w3&g8H=>xF0+;bS6e+ zyhiqRgQ)oUa%la)U<#_Li$2Jp`CSBOqbKC;P~7L4vabjsU2J)5M*;w6oby2jaeTI|MT`Z-;0RE&yW8Z91O(2EIf`H7#95?uD3+obt?+Pemp&=vG4T;*i1tC zu1)+~IzajdnjxbycXB?df0w7|@YuGH4Xwgzc0CG!a*G}-nn@D@caq#rEf(A+Z z6Aq-@N_U61X(QE*Oy2kY`53!Z&(Hi`YUbpLw!W^Sx<%m{du%?e?C?^QE0kKK?nU$m z+oBjCAL_{#?2_J2ESFwxIozR|U4;Ikx5^Z@6WdKQ+QUA96dla4GBizl?{eg1`#oO? zXQ!;*z%R`xaxj$t_~?4EKr5*Zay`1$HlP*v3DEe%WT59O?s)RhwPo8x#=2&WU8gKw ztLLpwVva7+rtGnAW3)q77?LAV5ZS(S9K*|Fsq%q&&~wE;fbaeYp5kEgu>*7yC4O5s zqI;xG^Y<%N3>`OF)ik~l$Ns0X`!3~=61 z&3yRXPBLa-2*(|eK5qPhXby{D9pSnU+&1Wt!9gC=GJs?|IriZfc-5ddG%a0hf)*xk0pzG?*GC_>85a0n&AK&?56up#a0K z96~Jp3%48%AaX_u#k+EJ|9T)x3*S@V9Dn2O3g_kS13o23MMf4rgH{?^jUJl6YzpG| z@2{28*8qQ#!N&?fumV(%+OHuY2pgdT`ziQ{Q}1Ro-?a<}Kp4Aiacq~aVMCFd=^qZA z7EDYUVqhc|4Sf#ObUP^)N+;SNrX3$YR=$4C`auSEh63#SON6+C=D)ymUzi2_ zTwGjGn(tu`)Q`_Gtt0>gdpti#`X@va`aZP&=f0rniTE7Acaq2(@B`AV!yrOmyLRnN zS+aJXE5=|gA$3?yCI%X!`9KsCHwU*6>M(t7Xb6X*9;*99CXTSFht*N1ah1v_r44#I zh{8%El7Ey)eLHj$nyCzMSuMS5CmyNgP5r1%naIZ&hmnsOh6cw685R~6x}#_)vfB-e@GpGR_0AsL#BIK<{QQ*P z@Dfhfm5gVt00$#MH#zxF5k3-S7|s@*vF! zPfCOIOvZ?_$f&4&kxJ98!qAUEtkc@S06q7`%SgA!ZQ~D+DP9K1y6>I>{@mun57GeO zl^`f*$|~yW0`LlIH_`(g#<%G*1V|(A-{<+~W$^Ww!>L^O$??m;H+=&tEMt)IN*ZL0 zBlrYUL+<<#MT`<1icr(>l#C0MhER4go?rCBw04OOQ30x zzAly=k|3oxF7?Mp&X~p=kvyDz)Qhuh=s=1ZAIKk@V@a?#jskZHuO_lWLjnD3gjl*^ zHFOhWXo7>w(O=V{J^+FSoA}!Nj>i=e2f>jLKfykDkF)D@PV8$7rW13DAzArDsI>a{ za`VzdD4a(f`>Kw!h7_0lT00vCAFKPNN9#cH^{ zNK}DMxE1QZ6k2xK#viiBzGwI1h>Eak)$F0_%wT`h49=fdr3NL9o5{G4j@BRP?c?Kk zIutboMY{%ySPwSf@<1#$&-!|A3x$t~N{pHZG{f*}G(=iHp;={Uh9_XO2UQ?csA30v zkN{*A>MxmQc0a4Ls+1)iED<`$Jy}EHWhCK|Tpu1_v5yEhlmcD|ALZ!MVf%L=+*t0&SLUVnQfLQd?4YEi1Ne4Q35E&tNrv+03`m!!WO!4UbGDNN{m@L^+jvktH#!o zO7K==>;T?C&i5Xi2D9QKyN#Lv4#x;3g#{NdG zV~Xe9bzyrkR6cmnSJu4NFuaANZ^AJ2+^FdCut4zv7?9*aBHO!itQB8s@5PFb4VJf! zu${=6Kt^v~fZ5?z!R$iP9U&Od;C*0!2hRXaa03QUbbXbiOp$f3EB~h5hmrzL! z8`hrzDP|5nP>|YOH^vn#P(AXCCTo7&@CVc3f}&?bF~^OHUhY>{YF3oe`#FORp5Qsg zEAofGcMkUXTPALmsr@)(@P(7cILLIk@qdM24oeN@_N4OJw%jmg5mowDu;bB`@r8YQ z?7*J`S9;3h#r!!&x+M~~vc0rT9d1o9Be8=%=mkIig@6B_lU4OPpa^PA6F-4i3!9|< z_}ejwNP2LgdAw%u?H4C+YB^QYA)G=}LhT5?GNDzXpVM?s zZ@z18?RZOK?Bs)68QJf)>Ph{&H}OJOhn-sm1>3^>O^dd^I^xMlr^xX=Xod?=-_C_) z=`BEMSn@YgrxoY}n>TI|M}r<$j4dxW(ahN3JlY#%5G=|lah>8D*XQZJVra^ zE@`!29KZbFfOKRRIT+&78ePdYN}DErt@7swq{Ovw@>L)X>gC0ue58&(2!*Ah72Sv; zvQA(_%*FA?U>aEO>hOfk@#~A4TJi5S<*iWVe)0UA-M__E#Uui{=!=ww)j~F#IDYF1 z_ZGD8B(_D8`d|~sm=85;qkbrpKVD>PD3x&uy+_#($Jae44A(oJHzZ2M`Mi z^QG3x1^6ICVQa^)vdP5Zy;A)t&6SEXj+hEY`(%7!Ff}x(gw9YyYv>&qZSoSN^xxii z0^t?1+E7hZRUKb0Obwp5_blqZu*G4;tZiTSQ~#9B>iLepha_!5`%12i4|f=K6#Hj; zpbg&xwiti&h9;%ZD+5m!WnB**`D8HoGiw|4G#3h^J3!Lc_$yDlWBD{vd{Q|kPDWfA z^5`vuDK$XQ!&et*jSLT(KK>(EFQHe+iU}e7Tj(RO1|qTJ-(}*sh|!>$`3aVqzi&Bo zeT7s2+&6!JW%X~O)!+;P&`wzW1mVp4C2P{VJ_udu9C8#El3_5xV&WP&F^`i<<*#ev zCF%vJSQZ%O7TjwQ0}e5$1AscJ9oE>d7c-`sgm930GiqzeQZ=9sDFX4=?Y*wRyi*~> zhIhDfgDT}Ewvn{a3v)mVi3}(dmZe)?Fu<Sby5yb$cudPf*eYU6-53H4og^tyzxTI?+es-Ot)HzV&AdY`N~UH6Enq!rZo`U0 zbm6Vdo6Tq?93{WN-?zacmEl9(5;Qhyo)b<7nk9c0Q5qcnJO09)mrBiBsO5kq{447w zq%3GZ3mVi5l+=u!f(0<6<4n7b0IQ0NFhJ64a&I1Fpj)sch;y)JfhKfo2{QS+asqgkh)AIGd18xp2>M&_)l=djO{2eKD z1wfDr$VHs~9oTsy8;u(AYkVn(oyPRi+M;$U6*p`aU(G@BI|!?)mkQDf^Z4r-DSM#y zRn{#uHQR1Tb1_VD5P$S^$gx6>5)?F2GRJ>{=|M7vot_8#1(uWchZIq+2L+N~ckOZL z4^*WC@U#qT0l80sCw{+T1Qrr`Dv4iERYn)Lbog!kh&stT9W=bK)KGg{00)0K!2Psn z{PL$`L-s7{A&(a0VTf&z$Cl!kp;m&T1q$GhiXt!!OE`jlp-auH? zII`1`+OariP>-}ffDAwC;Su~IrEL6?30oJm-EEBcnC7>&P#k;P^F1vca44n`}FzLB#|%7aTAN!1WL z%j%Dyq>vd6o#}_;KgQ&6#MNp7v0*IP$`0(fFNHM7Hva9??uR|NZX*kzmqm@gMOj@J z#=pnpFn50YAJ8O7u*5FQZ4@i`H|zKd7(d)dmLsn8<{QHU`4VOFSX|@ZW^$-QBBey+ z^nL99lyxT#EV?u{R?pY#JHab=#;zTc=C~`onSXc|e`r?3v12JFvFv`gd?S7PO6wG4 z4#!sY$-Mpay6$-exB5ou!=-$)R5q9I>dNYIW%5|8-#RuRmgR0gJn;Q_)gM-$`W(0p zhhd9T0XOr#@bHbRSMU0D5A=@{k63%=&Acdyf~<}-o-693Oj9%V>jOKulbmFJ=hLa3#YwqQACBReqeGKJM^c~ z8~pl+TO{d})6{(o+a`Hg*o5{Y!Q9N#{zcUouR9{|GQ3?&D+C)6bg?Hobko8szkZ(n z(QuNlc?wRhRzk}~J?+E}>`3|jPL`foA%RAD7-G~AR^xqp_x{TT%v^?_rkOW=#a4?b zI1u4XzlNg$e?=DKYOg$3NX(f#_YQV8ZG#EOs3P<-KzTS+p!NLxN~$o#2>vRN^aI-u z@-?rcS70;3piF?!0oCGL2ftOcdom{|kRO)c-MKgJup^VL=bN?|^OiW%|C7l}K_IUw_p?ebMCg^3{ zIAS7_|6*_y~ z`S`5SiaLhsg59?XC*yBD z!kM2Dw{LH!O-Jgn8A_M|kl26h`3jeu1?B z`+pd$u^U#b*s-V>z5}?qabn+kUno&~rFQN5_v?XX+8zTwz`?Ew@P@_V%;#tv?;53% zorPVo%4%v6sKdw5h$$*B_l|@mVyr!@Fj@*&`1C6eaHOgcw%OL+*SW~0 zpK_=V$gtha`MWeuS(j$CkY={N)jkvc@g7qE-2 z=g8%@0*mSZYEiJWOZ)9QUM!MM1*WOd2o<nzA zzUQ!GDC5Slk>VKAERcdH&YJiw6Evjqou7_#?Kk6G+hm~9dm3|DStE|)3|ft2*bTvp z{lqHZg$np<8O( z-_WlJ8Cil8OI}{nge8s_lCK>2k6%#*Jc)Wyhg0K_Ekkj{o-f?hA@E_*;W>UhIxh5O zoJkRZsr@aKyWX&7OxUcJupK*vz1rb|+>c-X@D+Y4PCh=xY?oIbtFPfVh#U^XC`WB# z7qi>XcpWqjRSYMWfWyEEdX%H_syJF>KW6h^28HMR^dz%-abJXbXks$X#2N(3mi3;? z&K@fP^EdWm`e%&}9e;%OwlZp8!IFly6yOJ?x!yrQMB`X&>zRTG7d|dK7D!x zWV$$Ffm%Abzz93b@5vP&d0sP{>e>>H#aDMm5x%1Tp5hMmvW?nlsHo4 zJ~_FU==Ue%yhb45sARz8;@YasfgsJbPubiYjU0T*;kXw0$o=LFii-9o&l}1vYSTsn~OF+Ej(O)D;Q# z4)1B~wxfW2EP-6O9{dQ*3olx@-vfOvY)W1pUKxqAOeQR7$Js{s#;sQ$mA7v{ecBb< zXF2V~mMwN!5na9E_8mL1WjOO=pGvf{i`LYLJ$M=s$Dw5Gzi#ff`%@_tClH|v1(PLx z=Z_7fhG49ktwfNV*56(kDDHR&-{?8{X!_Ktv-f)-S+8-=UzN+POT{|pCTq_`+!u`> z{qh8yTySAn7Kz@0)*V4GoT1YLVIh_lEmFv}#e9FE0U1xpCE6S(82jQ}fIev?uVzIg z!wTG16}I`)-n|T{jXwvx2)_b^AC`MHKs>4-DMK(QM<0K0C1TB&7(I-WVG8uj3$^bT zG<8R0+C4gog6eyO%e%<4vfWE++56O_G<9AjCwv8eVpO6tkH!~W$#3$&cd>VIS4-Z< zzM^)k>7$QZEDG_b-HJYo*drIN$mK1KKlsOXDU0;~hqLzp>$+^i{>ieQlqW}^xKeR| zXbHIYUbql{fO}6gL=*=au0+L&fQlOxSx#JlngdBjPDC;xMZrb-C`pN-{y!(x^YFv| z?|U3?N5d3;e8+uX_j#Syd7alV{oQ(7^q@wiY}WI=>A6AtJI&49aX{NI*7DKdx~=`f z7W(nuFxSuf^GA+3%*){?vDx`I zZ_C7F*oxX69KnRmCSC2w;+LCm&RRBJ7+TW?ZQBlGJEbMyqttA{+xeNCG+bZRcHT!( zI~G1V z#Zs;{aNM{(?%f~mbD3*sk5^fCnSX6$Dc8F)J*YBJfezW=%O|fqwhG$8>3pkHjq}qU zdcE0q#HIsbG$6gk0rq;Ueyt57IJWl`eepJHm+z97@ezFP-I`dv<5-#?;iz(Lcle1kaZ)Zs9|N8LRKa?Jqg4`DhkD{9E*p z{d}c?kh#z=5U|cQVoT|~e~5F(Zme3zPMsF9p?Bf@!ULahMBh@TTsc<`f8N!slQ}Qu zm{qCLfX!lJa^S+c9j^rBU?NmlGHNmgGM{(9vYMsvgW z<6e^@lk_+1sjntlwQM$>CqD z?ZIARm38d)VouxW+fR9h{5%#m`y$hQBY($dvE8{!ekT9sZyuIM%W)@e^YZw`M~1rm zJl@3LKa!uvJ@fOpl@Clj>XDN00CtnJM4;l1!&@YugD(OlCgx6Y!A+;!?6YIR+gMzO zyodwNk%nHb6#*-$P(S&-i^65Xm;sywUah+LnqFhs2L%T=NQFfUr#jZdDDc01XIiiV z=&cB?Mo+&kX$22E;0$ZXo6ao;*VMff+@yyj-#7632yy}3LAH(f zq}&&QneOQ{^E(d#Zx&q>&@mEsjT9?u>z(UT|?k4vktw-RO$~h^?+fO%&K^;Bnb78RZGP zMQa1nY(I8_= z?=G&}VbOHbIvCGLV8I})sBWa;4s;BU`~CdbhCGz?f$V`}I94ilu(q#5OdaHtM}{)e zgZY*NUc*6-93I6opTg`8#T(ov_CcKX3mx33(rND88=Lu=t*~77Tea#&jtXwZXz(56 z2_v*z`}JExT08TYwj>yWDVPRajj!fYOm8xN;>29#j&zztkg`~J=r9t-ElTT}nxU*n zZ-%Oq31`=h4M>kRUWYAV1i^49nRNKf!pXUS-0_Zcf@!g0;jF) zBN$T#w}1Vp4*tuXT%#Af^U-5(QI)`szHSmke_W*#8J;U?1`cgV*0h(ogS%;FG|Im^ z7TC{R;*A1CR=T-k81u5>KsSRS5N{G=&S3ndtN)HfBpT^@aQl3AS19|UA^9}tQe4HA z3A; zQRYp$CZT1?SFmo!rk2xp5r%Pjk%u73#=wnEbmu5d!Hr29P7_0g0twC~n2mabAWnvL z!t#-pM1GG+UE_3J-zYgzp>_z)#vH_%)Japo62 zoWK7i2IE^0A53Ac8-O_}+cUQKJ@||it5?__^f|mSbRS3@25u(qmXx5nW163?foU!b z_Oho&)&K90E&8wHO_qoNhxQ6;qcjGDbnDS0cOwPXo`5*c#sSz_6;J+rcJQW5GPd$V z543<)qvwaF{1q6Jgu{Ig$7jWtnqSCuu+w+%-p=FD>4SP@BOYy&b<7w4@kLyyfkda~ zH!uD1d-NiK#&+Kooy51`@^O0dnE&j@Tctp5wBFR9ir=}3NzS=-HSyg!#`J)E`jIBl zan1780_sCp+1P*T)O}h+Xta&faK{m*1;Hd_r@;o|MZd%0^T3KBmNT^*y~`#1IhRe(c{+Pu6Yz47ABSx81f zw#6E<=jiXviClq>Q~>`76CGRmD(aW8A3EHehFvuudzsqo|#w(a-f&mG(>47*`Iyp zGGxeRSx6}YxV7BYZ*`3}E;t$9WbJ`k!9QWlOY6>|5O`@qYN#ef>j^3s(SiLZuqXbz zI5_wrD2wEbeC)*fehH^Hkk4@;J13E}B7p)j3la;CZQ{J9)^ zQvb)enx+eOgPY5?XiTu7&GB_!N@KL03l!Yot&87Z$AsHw7Mx*`+U$VQ3rAP#c``E( z58lFg^ctoTAv+p{OwhFM(b?? z)IadXs52z zwCHsh3%Jt-54IGc0&?L9FxB}>N$YlKL3Ho#tEqvY*RFWC41{Ddt6DX(Azj#8iZ39? z_H-vSK5=`0?^e_AeM`K=tgbz9X6VLWk%C1XI^?+V$n>U@a{kr=KpA~G;?y9na^n@s znER0bJa!;>Q{jtX)y5~rrg3$Q{Yr%T)wCq@pB3JY=K^r$(X?RaF z9H#IEOi{rD$$!#AWHL7}WC+Kaa~p>yG=&RqN0J3C^?c;VWm?oUs_UGchKK8J5Kcq( z;9gKuLog_DHjhS{<6OS;?(Y8{?!cax;e6V`kt6rgquHA$mxg?y(GK2D%EiYssrUBQ zJmVYCy*UH-4{4?}1mCUoS1?DrvAajP;J0uCkw*dbm|iA^af?D*%`jFA=A^~#YY#?Y z!ECvDJ9sLZj>Goe&`0#LU_0{sH=reZMOV@l(IFl)$lhRV8bfOoUuGGDM$E}7O(2Un z%FlkHC&EXKgXgxA7VHXE zy^FVtx%j6oD0!ZDJC^Kr%;+p^v4IQAb%KuqblMbPAREpl#Q}&dhVSFNvbhA!cG1=} z;lhPPz|+xLPlxOud1eGgQ0bHgG>Qa9Ykw4f;k3cP!MeD) zMKWz+7oQe!lyDLB8w<^*e*Ny1Q?6Wbo!qKbtMivG8dV6NS0g3tvC-*-`|zOSPqb65pc`r?ZN(fCo+ zqyiIuR15{nmE3+*fLBdh*k;DD-MIE^TY$D)5ga8q zv1#9aglokL6>4Y92Tt9;xONI)(3>T}L!Q|HJ1DA9^1s)9r3&Wq@G~r`r9l4c?kBT) zk`ozLu*0;#pOZS0u5+aLPLsh8HjNqu-hR44g-ga(oYo3oU9-c8;!n!D15-d9VfUSX zf@Bx78FZ7I4GO|JH{vJ=NXca=chzsB273sJLrLWm^dpI^Dr%4Leq4|716|SEMPs~C zr)YBn^{uvCst;Y23QuHJ=u;){bBZ6=Q0+43(Ncs6K0gdaI>`7G#eGiuzk`?7ziKmR zQLmB$t3+Xhy>ev3E8>-IeRIgKHy|6)T_VtT5DzfHjNE5tZXR)z{Xh5g2(t2E3Z~6~ z2g5J(?(?Z)C5B-Exc?k0|{d@-GhF6oqI5<5tlqH^cy4*e#@6TqO;JrY~}c8_8@zB zO$L_zEBBs@p2rdJ-Uq(t1|4vQA%KY-x(2(_!Ql!?ZQqVGLi7y|T9x#w@RD>?(SYn^ zH?cMAfhaY0;a%oW0mcl|#dEY}`*8gf+Qey(%y8is^A1gS&)QR4*#E0cL+uX&dF48EYK*wN2hgNPrBQj`d0Hc-_RDm-T(p?3HWSsqfvG2aStOv~Nj^)7sReyoduA`!Qf7w=Vd07W8u>vuNz3ql6hyQ*6$vQfZS#3s zFp&y;I1z#vY4GqkceUN-_VC#Q6G)tGs+F-RjNdc9CK_)5SoF8y&N1EOuPQ8P&{DcD#qI~yLRZCA?!`o2k5$@&jNCI zHakJQC#7eJ3k0Hiqo%S3EG}GV0w(`&A8FB(ElT@gtsXJk@H$;HY4A0xtG9AO)4gtL z^DPdykJ_Aaw7u&6gwl#p={Z*to-leU3QpfE{^Xcq%{jFQ%l-R!cLwSW6+ECSvhnA>hskuvqv++S&EEH@ed z8VcBH$cuMTxi|jCxpvt-xau%C;VHbXxUEzdry!qIG?&*cDjTB<8U$KIoZ?GpdBOo;MZHpXaz}DR0}~K znJ?vx4u#K`z_8A2M!WVW!I3WejTvw2DF}f;)U=P<@W6Y+>t2_`%^=D`K|0!vKDua! z(D}joaTa~Aqg`?he$+<#D_hfZHqc%Ld3OE#4+xXz$rR}+H5cX6<0nk8Y1YhHb&kno zNLwgdD1eN4Vc%+0rrXC>sCSjO-;4}S@0ZyRWc+_HINlmISzr&u#?fuSi)Y-CTP3)(gmpFDuI^lfBBEUZ z^AkD)Dp~f$1J&7s`HwR8zb@#!!rf4_{rr=iOPPKUGu5GH!|1~5sxm$t6;Pk*{hpYZ zmI_uBi6E_)9p%-E%OJXP2#|*zllbc!m<}C@#~6$A=E}RmwJOqpe~aI;iHXmbU3{RB zI}0+Yl1LY2H!#6KD1e!E8&g81ex#E@p{}`mM)=XAO{Lm|J1|J5!i=}mv{7*DCyZaq znGF#2QeS0fTeFC;u{y)6o7sR%z!+Hz?xK+QP*_>}G9vlEU1E4vL50N%K& zq|?kIU}D=5c6Nlmmr^a-GB2k0DS2k=7}NcQRoT|OXO0+h*5lLe96;EX>%gxu`>Yp` z>FzpNo00zx8nmhSm3xd$qQ-&4z;4cMy zR8z`E9n&X?!kz%Jc$I9-(C(;$#4tP_K=GY>c6BIhE%gEekMw{zibojRt$QpwAK+Gc z*bh|9cy}VV5i57cbYr3Lxd_V21TUvUZZGFq1UdcXs-syI>qscQioT_g{QEW5ToeT%PqgCFltt*(q5G|i$ABc zIlw;gUiJ(WA96Mn{T@S+BT1?EazT$Ffo`xkjxzjZcrtdb2Wi9)2dvwJGZIN0cZ<2A z;!*sun0#eLY?MH&bYaCVJ{QIuo`fNlaH$GVqAfTvB-85IbGbNkhQKhGNK*!F5R$s5 z^7C%MqoXh=ejpT%VAgLZ#0+Tw0IhwYLe5Tc15eTq9_-DS@pKLn^YZ0)zIrt$Sk+UE z0q?Z-ei<$S9P3p>F5s-=svk^`()(aY^-WGJwzb(`A~Z352X0E|g!z3i0L+qg-J5Ed zh{!(F85u*p$>BC~MoBFK0_yO`EXXL9zTfKAX$fF$t;>O=LPRDna`!bwnlvcWpr4#ox;rE9`AM$dP5IR=LoK@Bu!gf8zz{sLi#vr5BN~F;HJ<^DRmke2nWW&d;hec{=XE$IkBF|iL z2ch(BxY7sgPgYND6_{M4HK2)LPf^}L@SxFa&!233_6$@ItoJ^9sgmij=1p(Cjdu4< z5QL#{o{z?;s>T^bCRr~d!!&c0H7dY5l*2FDiR2MFb#Wzx=T?8)r+^yJ_3Wn z0NE~z58Tt3F}tcZowO75PIBHCGF$#<`~Xd4jexOvU5{TlQ}|v}z11#M^~U48rce_4`c`x| zPV=jfr8kaD?7x3ltP`cnn7LKr&dF_P$l)#7-Vul!!njwZOA z%2CZKzBx5Q1JLM$ZNb0>vzfelUULEk%T4XSX+7acm3WP_ppE<$m6BFW1_X8Og(1j> z{r!yjeCL>o1y#qm*v>wb?J58v>ojk^fjv{9Ql;-#Z|YN@0C^5PIQWcDJB?+V+B{%n z=gy_blxq0W*W*7Ct#|ddbIJ!KUEmRGr2Jgw`V2ogYdpC+jySR{W%%g%)y%+pL6g>4 z&9&1A9mZm2(|d2pvDTc;u5r}_wCZy`23wC|F`NY$bpzPah1CIuvtG-Vn>wVp9n&N< z{PPz~C&+M6uJ~(`-rxU8TtaT)N#1IT0YzOV+7vPw4BF2WrBt0ZZMN{c0J#s#uwpeM z5XpRAlP#C9?OlqEznP{Z;eA|tE~lOyhr}}S!!lGYtqDl=q3Vdn<#{TXG*y%xxe<*% zrP)ag%qU>ZR9qInXxXw)u=uNW1(aqBa9c(?5U}Iq$u_WJ_n@^c;Dm7E{+_?HRtNTPk~sgsR|a&+{`qLN&gU@{+i>llb-6UvpFj_9?|t})kbEWpepWZ z@lu5v2gjx&lmz2h4(`QdBi@B(alz`7j#B)&;COuM zV790RvHxC{Xt{fdo)Lb=3{~<9=PZQ<=SnzWcC23)KJ@gVF5q>I0!DL z&zLcmC!(OXNsLxf*m=Q$Kh{3jmRW3DsX>(Pf~#NRLH?l8u$Xm3M2@2Kyh4m7t08wN ztU%fpbMoZa6SwCQ8!^BAh$XQT6p=V`?NZBq5JQNc7W1Pty7RPmGtO3KoiE`O@MuzL zSXE>oC!NDDnA1%`A_W zKQf6{GxK1hIJ-P4!ov|3?AG98-kFA#6ODF47+KIqu%Ss{Peh zYX}i`G{1X| z_sNc>V|KF46hie+^>*HYgqmNelXwuOG(LpG>&45Ldl)|+*wA$i>s?wOzD4tsOTNPe z-5~VGQs&hd>b67=X0QyPXu-HwIt3fGP>^{F&+{)Z+5-mkWxKK__`}D{TtkNg>{)cX z0;32yp<6OoPQwlL3~)(Vl!aaWCp`Madie)OoE{Y8QCmY&CLF0yxpEI4G5XCatkf|u z(|FM?9QuOZR;}gdBv)!3&>U_KTQ2THO|!w0MH7UP3EX@3Y)#vkMrKXO@%Ms0Bp>@b zR{j0oo>`PTdhotk)gc&K>1#+_Hp6@{Yu+~tUKTr{4Q&{|sCq9a9=mTes0~RMr@Yr z0q4$Z#C#b9FIwj?XkybSUH0n)!r0AWspwm`UcKo}xH!#5Z;M$kIDgq<4TaSUpf+-7 z$bQDm-OtHc+ICZ;zhC~}|4sZbtn<<`g&fkHlLIyp9T?Qw@e3vvZgUFhT-ubU`gc%G zNle68_=D`jx1VMlfXv?jkMM$e+`6EkrMITaZ`^EL^DShKA47BQ8y35sTp=qrx3>?) zU*34-Ea&QK`w{5;5E%NBBk;pnq0L6P@48GgBa zVl8mW19270m?s2T|1CLSDhwtQqhifrH^xEnF=ll1r1S$dh_7b4!>&DgP}Zmdx=cb) z(33r#n3R--1WO?q7lgY{o;W~?!~|gl-U1!U}jgtME;+qv%2aM{8RL=va$!_8p?=bt6*S zQlDV@b8n`OCmzHea3L?NEg;H+-*Y)Ud^)Xl?FX z^lU#e_!{NH1G;F{e{W{k)%8UN|dUyV4GNPW>d zah$y!{ZN?rt#13{KdiBfQ=4nVBRKrsA$T*^chcp{ds*#jOV^~(l?mtBk(vZ|_uLZ0 z{vknaQ3{O09p9o+rLyTwD6eyX3L+Jp2D~UrVNg8-EC!_=?if-EslCD%r*+kMWUtAP zG%tSrwT`v*zq-JbX?PxCw%TMS&C_FemdT=g(dKG+XPfg7?{fBJ0lT(#Sn$QPY17ce zbcMB{OSvU|^0hmFTwn%@kW2RO2wkpn)^Oxp1hlmzgm8SzBoW!N-WsImlD4n@;SnTF zZH_Ou33=Dq{5js6{+6YgNsvW%I6@D-|Ua5`1-|Kn0;yF5y&6{}QPaSpUe zD1_%vCJZMj5R&lv)M8#8CFDg=LH~t0fBj<5oG4s3C?Iy+V}01M4`MJqVN)2nEZVs0 zbILHD!y_-dS6(42x~{dgjCIzKrg2rTAo%`1nEvf^7zNYba(5F`O8&@$3SiVAR zjY@tWFgWpt2~9p*wuA#J(hzZef6IBlHToD>Tk@fG?fR@~*@T76m*$XtfJC0@Je4(> zZ%Zq{5d-QkJ}1{Gd7+k;o?(Nn>uXzp05*{vQsfJv7(46=rA;MazD)86Bvfd|x$$2` z->DN(g*izt;T-$0pyYB(QR|#X{u5_agCtns(7eo|WPz+r499IQ0 zM*%Eygc-0*d-(w=K!e0Fho3{c*&~;>aoJb$8WQ(M@3^x(etVw*IX@g5>zUuFtKVm3 z6IOAu(htu#h8+ZFPu3jt)>2Xpo=zBv$)HA+{^3P5FPpIG%$W}ChENXal0S*No$?Rg zm0j+z<0|BO8r%&77RwCy6K=$_fB5#vEJy&{Rr+dyrtwdivqSx% z(_+}LVc|II`}p|$!{;^T^T=yP(^688zJr}Wl7INB{w!j&7<52?I~sb(5bpRv$(K=~ zXy@Mr{U(h&Kh9oYs^sIzz6oux4s7xQXTY&PGHjI=fx8EhTdp7(9HlH%*{(GQg9U)s z0$A9UMsojM37zdU3XypBibP1`2l>YLVuyPpK8RWC988G;AlEk#;tAM`_=Nz23H+Xo zQ8l3oC}#>iXJv1{{*R}ee8aw*UuD691uz-ieL%pYuyMD*L98!9zvu@uF>exfXsvLG z@}g?6_}0|!CGYFNG)_9O+NeQbRd|q4Vo64SqBTy0AH_p6bY&Ff0xzDJu+CS*mHaCWSlMU_bLY;nPXx=KtMbUK(C%XYxO7lg4hbQarWbY zDC5V_SnBnKWaNOj0kkyIJJWM%8FTAZX>Rq}xBr4L$;HCMcv4IV;f9wMvXer{fnl-d+2{H` z-CdTZeU3Ryc|w=&NUH*8aA^uU<;~5z&79eEW8;zEr>AcOVUvb_!Xs_)18tJZQOF@J zZEeeU;fwfzb$KLIprKSIUElMm=U5&x2jf`9Mn?SsLn=b4lw4lf3;w{2X;a&|_H%vS zZP>|KtI1qP{|GRKGPrPv1`?SXxOd|!2OpnWrGS0+0$GOV ztLLN3e9lsXbq(j3pNrTuQ4`g-la~$Tf=pR8yNN(bLHYfPUAlMwn5B@-`?(0zxTvkv z31pasq1rcT3KP< zlCi77Fw%)hw~v3xfX8YO)Cs&xfaj>^0NE>=6?|ya2fmQf*G|oy;jp1mFW4et)LF=a z3Kcq0V6W14j%@*~GWx>v6gF%z1grC{ukZS8+xi*|W-N{g$evlf0`BZ<{Ukd6$QD28 z0^B9kDME3+^s7&fKq9F5^4!`gaD#{fwi%U+dNwwGM6=Dg!L4T0Co|9H`?9*XZPzY> zxS5W@L0?GPj{}mr`cUALtKL0QaNZup?@okOCaEg=qS?wL`f83gN#OF08!P)#RmQ+z zC}J50ZVUxUd7|styIEQ1F3o4|s!&~2nqShmU7UYSr~as9>kwoMD7h-zqj09 z0~vcjxQPX&PQDk)kvY<<3xQB`sbSdC6||B%mnpy?kLVqYbk>8FrQD7bCTSYzK?ztq zo0~tYT0h{^c((Ff#J0BxOr*lQ$;P0P4pTY+H+Mm7WY=iWp@k4DdGnB7EoT7xIQtjG zDW++Cl!x5HmWBZoUP;K8;=$r`7)xsXh(5ZBC_yRtZ9&RO!t^;yBWX1gs;85u9?AVZ*YG8^8Y|)~;N$rv4R{>GavN zt<8loROJXaD>hDJ-E;=xQ|Xw zps4>y0;w-LL}tu)?nIR!2b80zie!lg`09v8AERPioW;Z4rKjYIuOM2DJ_KTBmyd(E z6k)I!f>azLfyb&t&6+jUG=b(Vg@wWybeAlp``gB46Lh|6yK!9;2+$>wQDV)?RjVQy zGZi=a@yAXUEJ;(?_3RUHESxuXdY|V5v0bIkD>i)H)~!G67x0;NvIgZ7YBn+3K_scn zIsc2=6}a3<2>=@L@(u~kmGGIuitplWnjHnx(&T78^1HU__hAZa!`ipW;t8H}M2Sb; zrqgKFm^RO#qmwF(T=1q@I*!9V%M3)qo(G#>XXz2gK3Xh@@ND^mWabQzf|snREHAX< zaqXh9%dGyFU#^Ccv7LCidYR9wRa<#3Az>*<<-kM+AZDzg+-V9y!xt{ioqTOq>A8f6 zZV+S*oRGQHBWI^ ze`@@?c1jA&VZWD^)yYS-064hwR2s4$kj!;>SJ*`5Y|Ph75nt}pKfD`I`HE@pP1rG= zO9qs;2k$I+w~adduUP$gP{8CO6LdWLE7WrNRAfBDAmK)b8zL&U$YT?YJv>P45(lW6 za?TEQK$g(?{tVm(BxrOzr)ci1Bw>RbV8MevNkp7C$Q2^Ij63#$$L231&+ z`Z${nf(CzOAz)}-hl`!<#3e!6_AW|P2&V1{B-thLp8vbA2`ikzOA!C&G5K4-gFHxN z1eE%ookW6B0*n3VoW00?PFl^aIKm$7b7_dvq}lhB`Z}QD{1uXM280_(i!sfOpXcS> z^QNxane$l%!h#@HC@&RN>sb<8ZGe8g{{F;QuU@UQYSt`hF=<56r4N8_p>=mn$<0tW zmz}Qp!WQD^?Z^E~VF%JLew_X2L7)H*hT5fRNBlIN^fxwuYWu1zVoL@AsEkXLxx#R4 zs$|_TX)CvEsRs8Ci?lo!m#U-F?rbLs7Kq_FSb~nNg*P44?_(yEnfL6^sM1uRc%n`@g%mx!F*rQW5d|eC$eb zIxEKu^oKv3-h}dQLiw6C`vXbpIRx&sMe#imSne}U-u*0%m z8Y@EFiATY2im}W{WP{uCU{%A)zI>$Cd&s;2UFAZ&7MwP|oV>Qs_j_&OdN?zY5DunV zK~Hj}rEFYL_DmXEHS`)%cT-j$#^zS1a5pu3fIvj6q8D6O%)sVTe>@9eXsa>>4GW%4 z5XxLAU%q@tUEzw=tLteeO7)_WB8`>cC3GlXl%~&!8Nr=R`H;@fK6{U$%G>C~dJ`z( zHKNuvo4^Kvg09$wLL&JE3vv{~+SZyvPkuQHUs$rErLcqncfbfOJ?@(L0)7T;qP;3_ z3P~s=L>6ZA_aT!*NK7%1+E}Ra2C&yoeyDTi&6{DRGmkCx32}ts@of5gF3L%}fRs== z1mcofXm4+CVLQr1rRj8K7yG?=qrq)vf5jJ^Vi(M(DE;b>KLRdhc|8BV+BB^mRgk-K zkKL}aE{jqvTmu~`ljxWtV7#hB>QQn%EiYVv%nt9y4J>O)V^v53zNIKEC`nmhEK7t- zW_-7Aru#(pvP{tK60+iLy`C5p0(fpj<7|j?%er+x;#7d3z6kU3Z3qif&bis__qtaI zfhx7LwmB4=TL8^F@#ZRjHB4+8q(LeQjH%75flEixQb5Q}W_BjnHFhBRTo-Te*5VoM z05tC7U=|=RRCMFarH%-a6N60_^*sfbTPLQ~6j(t4z!D|pQMl8w#A(X|8~gm_%L{Cb z4vY&lRjmW)zx2e37U}o@^PejyK^S=2lz7{Y_B*lcO($JlD8NX^4(!IF5H=r@jY_d? zs08a&g*39@T=wWzD#%?Z zP>3}G%T;gX`7KXpwD=BP1j;>2N}JM!o89060jd@!jkD}e^@sJW`ux<47=PNtnT}YC zqQjC9&Mjq;RP)zw+LTDb+8`XpUAYAD<{3511M7;8zCK;Megv_N9!JC}t*#h!G)9qX zc?P^9#+?uhxOj+?aW@%->TZ;IP05cGx-YmLv!??^|9b&Syc&MPW_%i9p<=aaDLlmn zGAj6CM~9lR^ZtR+j^I_Ws0LCdDnlHtPAnSB-T#si8vuU?Bj1Tl$n-)JF6jJos+G?X zu6WY1%G&JebMD+Z2>Zs|+cKIOBpuTBrC#$0`VA(7fIZ+UH2aEGtFl=@ECTWFc~g`h zy?xz~wV{L@Sg(=`iPNjwciw)F&il}yMrHYs&>5A$sa8>|yf5BYsSLT;|MqOpps9N8B z_nieYvUB+F*|L_)pu_oyZ3w)@!0ZyMSVC>ugL{L z9v)Ggfbm$n#rg{{vz(^4;X*sHTw2_F@Br@UqtXcV*LM*6tGYuqy(j7pJ8jwSp{)O+ zXUK^V<4+#+EBcukZ8(@aV&4(t4reHZ@&NmQXi0|!77^!fT@)q$%I+8K*cIK^5;oa-t0ql8=P}l>-Et{I1z|Qi2`V6T?R%e| zxNSnna(cmPwQIL+F|j8#PdHBauwSF=L0$4-iAXc zGg!DOx#k5foEx|i<+_%1s0oq@)niKju0kUv5v1~)&q!P~ z$PYEzh*1#7+3Hr-lx_WklcW`!iBWr`SPwj+_*^nHDNY2wKKkU7vEj@s(yrhiR;4gA zeZ!rggi8=O{_ifm$pVmOd{)-8|Gp8YtA?enpv)tk*;3{G1@LD-!eN1;9=HrY?HvS? z8YNX4y{`3DWuybEKOr+IG4bx1cW)YF*i)v&U0Pb^Jsh-d-aQxw3ktZ(oMX15yE_co z1ysU+5Z&+6Ew^A8AVMsPQZY1bh^5OD{>MY}oXSgX`2I5AF}BmQ753wkpX0@O4Hm|| zZo76hmO#sp3}yJSSw=s9{v3Mi<6-?lIwVK;s1m=w&EB@vom2VWf<{1Vq^RWYED++0 zviu_$v;$#Kv=&GuV}PUEw{OqhNNt{CpbG2{06YZR_oANVyZFUspTa&!$f$Mb<>wYJwK}i1mxFFZJ{rLKOb|WU7ywCdoN9hA9MKb%+?iRvF&R}z6}>hCA)m= zM!pP66!kvUHOt@q;VVoar?#d=e3|u_}>XfP-6A$-J6@Kv!LBKvlsLmGOK>Kv}mihi`GW9 zv2>a_Xx$&r0IdvFSVsyoMtlfIbw(sCpD8S7Mo%g60!T4C@kq&~uEUL^%kL$A>X%HP zF)OTNZb> z>=C{D_N~X-gkS{OTmJ6EQ|GC=y1GK8@Q?|`h>oGRkSJD&b>$;C?uqUYl>8|uod4yA z-GB1LFYz??A^rG%@&gKDWU8oSIG0GddCE*Xi+4Z4*Evj>P@kW}Rr9=|(Rf{X=|^4^ z+O2<@ZXNkcY^zr>adj-aEh`;6jfKNWICN_&YzTFRKOZgk%oqOozyI%_ynK1$r9pE#;@~1`7eG!~ zA~bv`=pWMf0kF)1+G!%0i5%i$hmROB!h%;HTY<{M7tn`gur?9lN#TL>XAZt$J^S`e z_!H==7ya#WRJk4vX$oI)4yy2zYu%0n4}10*FLr*r`Dij@ZfC>}WpjbbEUth3*|YkT zLWZ@?Sl8i7@YnTuthaAhn|Giw8zm+#&hvzp(trN5wsv}xr6&`nHrKDs$`LcUdT4^@ zzyIDNdjy7?Jf*_ILJo8m7H!Lx01!S_u<5Tj@FBH7<2dl5=zA3hScO?xi>T%j2Pm$8 zw(LV*G#VuyItvP=H6O(fH99Fk!QYa| z`XImGg``dK)ym3h89U=T$Fb&d^~P6UBmUA|()xj)rLB%g~Qq8D^0xwYHcZXQ8+ zg;)xt)2mS^T?&5I_L*%o5S)xJ;Jmaj zU7!hLw@cv;9wwepuMoEE+{V zyFXc~#NAg@^Z-s=;9LpMpnxopx8qTfC9x3G%`*B^OtMgB$g_?e?h+M5=3Ju-BtnCs z#~aNho$11UFQ6PUmugTIzL}k$-Ga&+=#=QTo1?;vh{edEiR}3CD4YB2XkTMV!k8=y zO*o@4rFV!p2ufk^fvQrK{5DPduHfS?a5&@}pDd*a_5dJiA;S3n!-qXO(MvI!A_)gs z`D)dALxjhS<fR8;piS~dADMZd|!Q$$U zeaNdQdV7jG4_MPZ$?C0>5sEBHb4$1iyreh6f9S-J<*m>|ix8ULj?_Bg?t=&4W9V=$ zUz%)M9I%kQ^ajJI$@Dp#*bTd%?Mg-{!YBl;#%u!b1NWaLIQa6>T}a=BF~3C_YEMMt z$(4M~v*~}YNP3P&Vx3i;I!pd&K*ffv8v(aO9Wm)dLA`xnc&yJ6n!l;^`R7YA-5>I1 zLP$NcTkt-~P!?x#2(_g#J8}OJ#|uPyQ+IdwVOO|uTZ-X#b8-^$hsDkObV*p4)$aqz zl>|Z;bSL%wkzce>jZ+C3R2V!g)q;xU%P%bPL=!Vrszg9yD`uHSez0E6oYp?qmXL}+r0!h>N)SvA9V2$Eio{tpb5(} z{NR8vR^c%D43SVD-koYYT~_%l-T;X*@!D4)oG# zi{kdf@95NO`9W@E$5(IPlwPy&Uytls3>!RbpdsUXFGJH4f&SgAod|5&?CYjeCZ#&L z*?c|y_oQP9nN7{Z<{ufBvU;yam)(X+)8jvFS8G@K+w-=)^P2vq%7~W}ySH1nh#(QR9+8QrPHCSSh1;mcO721DxyZrQSh+_TnD z3@KR4*;!e&K{@7De6S3)Kq3(cy5+qkCmlo!82TBu63sX!d!z9fK%rP>3@|_PxC9Cr zpas+DlVh>K}&=txDswEkSH@t(o zj?Hr(J`97fpQ1i$naX(+jSY7}1Gs?)ehrvVXI~kLf|FSvuQ~jj4HR(l(E&x^uVjP3 z^}Fi}Klo5>hnP~SIZ!48Q#pOEQq`UL>w~^{EG7R2j}wIupy-{;%lX;&$TN?zea+=4 z)tAXQ>Q|mFXBJfEJhbjMS5HhE36~IYmP4xc>=q%g@(3c-uZ4Cx8x4Cl!5G=oKOloNf$5nK!_y+&7<5gtE-oqJs~p2{rdawu9)#@um`Q9Nw;qg zMNky9pMDsd=g7_;FL?WK!MLaayM4hXbyJ&q737VV;c^T249BirzXf<3tHRj z=}*oCWOny;{DZ=Ii@99-PgrKF#}+}tBOnEi(r@bm;MIf*biRpxqcLm&V7za0e%qW< z)Iu27FzyxxCj#cy4V!IsoAL-`!6n-PVAx9z+uT_{d*^;Bzn0R3^qE#H!|F5GNC z-j9-XD0N*~FLC6_00AHL2<-)8y2i>RTXqRucktjrNq99Ttk;?;(!%vVuWmd*Ol&-;0x zQHQ{+8t&72-f#OPqLzo@anBrwTV(M%EM#3w77$mBlTn*i&WKPNPe#6by^*8PFp9K7 zZ;;F1D^E}M7$G~r&zs&T6=8^l{V^CBxJV8I?5i|NJ;wmz@<1N%AL0~=%x=hc^J8IZ z_fnsG1hUe&1I|OkR+J0jpiT|sP`^30*+w>}Bwgt*IbGHKVk4Qd{3SU$j*U;LG}qfZ z@{pS7sUP9}BIk0sMDP)h+@Wxbf*N_--t!3BcTsGfOyES}IbbxU;~}TLk4+^HxXxyE z9t0hGjJk6>^hB>Ig2+^vbh}kFgR^R2`*ob>7fxigf$sG#vJcD6jiOInHe0gj@{@}a zJ4iNTgr~>p-WW&d0kF3x!>Hkl;xw8fNwgdcd04IkKy`bVF+LuC*xAm`4mZ`C2jva- zgj=D=wzd7c!Wn7%hq^B1RpoN~uGnNzy*j{oG>J39Mkd#!RRg#K!;cC>;Nd5HT{@x9 z;8MjVM?nB1Fc|^N&Z8h_WIpolAYUG-C#vBZ@{N3oZ-swYSeRcEd=_QJE>AP|xB{Q?Sut??? zGc$*e{3buhX9ZB^7B#b4g!jyTV5wvC3p|H^H-9kd2+!HGT?L;~56V-b9Zh?(d}CL+ zYC|VX&WJhe7l2PAAM8dXh?`#!?cjhl0YSuiC?Dn3reD8)%*fiU8&tq)NxeDkY0EZk zqV_d;`N=vQ_JIG^4I1o5d^Mo#HspUKZO597pmU8jk`Pn%#%i)k+G z-!JB7SIB>sIkcO+8)XovkW&f{U`ULI(!t_ZZwvp}MvU{5u~#WXr0b3xIZ{0WJ5Zk$ z96FP5LV67#az4w8;;A{a%E6`~qySOj6h4z4Jbk)$ZD*qAw6AI1sgqUXYDM}g}w5%a*C={+| z#%tdMXxVEu0kLvB70RRPFup7^U{FIjqaObCC24$kI4}S(`k1s7v6GRv)AM%()0eH~Tn}rM{_I`y^y}N?fK(ca z(r|tIoO_=N#e&lC@LdTp7j-*!`h8z%EVOue;tcsdC5S?8E>Ta1PUevH_dv3xNQ1N} z-5;Xbh%P87c9X~T12h~&uWgzNp@5Tn!f8&Te3j)~+|y&>I~RHkfMGU7BiXv>G}_AYY+!5a z$YK&K0*qMp5V%6Ym|Tg$L;5)nq4Qj(^ONfh#k5|2H_+(e)+y0uA{fW6z(MXu(>QN9AI$J9uSti z*W^! zMJp`2krE^g_F(1iDJ2VM3dwkW)x8b1=Iq3vpAgys*4F55d*i-Gs@q_+zRhC(u`<1jgz6;M3VCg8F22J*Q|MvS8rsv_3o+02obQn za3>MWfLoM%o+e$8@H_@1Tm>qPpN9iR4%_pjIb*GWX;YBa$}SH*azn7b@_Vccu2F^0 z=Bvou8*($KAx=SM%C0&kEzKDYb*~)TY25E8v`5-5^B#(v@<}f8o!Zj=n>dn`1EqNH z(O6{*dI<%w!EPWO)DR`kh&1{vil&C}DOGVYB&!WUdMPI?TJ8P$G#`zLaY%+2FACLU z4_w*aHgj!H)p|AQ$~x6xAI%z(i|LXlX)D}tjpj$c zQy{xF^1KpSxJ0HA>s?37=pVd~hd|q5zM~(Z*Sf(*Zw5bSj-BRSjF8I`Q4+&BW2HJ6z&V@4{Zbu*$+=0VdSd)lI+m6_^^HW&&n(qxUyHIp~%4CDHW z2T+d=)Gjp(U|bZ3;InKz*c>q{XQ74>6l7`J;a%Yoa+n)*(B&$K z9UeDxzyQMUbs#p9EBoQ6<_sVXYl3STDg=H=s-a0N=~9v(C+9325d8M;rsxaJWv;v# z06f)qba+cKDEc)yvg;zHcIgL4rf1rlb}6m=Q&a-2RX13#wNj!DL?Ru0#MP?uT{)wO8c&GzlvBZr?n?icA8vbg=LyC2G7kWa<58MVq!Iv`w_fhJw`o+~EfXwAzKDJHhGa_3DYIau%&njs zkwgU%(%s1(u06%XBFTk=xcGUW(I0qkUZFzBNHwU)Nz7*jc^1XX5pgwGxtc7hg!n1) zTvy%lQ*@pkWrFD=YIibClyL#%O$d6&zplskhqG2Q(d0o~~k59LtwYO`T{QgowR#0X=5&3cy{8>ABIZpmCh8CBl%=Z>Svat1CE9+*WE z5>*OX#mGHx;d*{n6(XS+9~PX31SoLP_B9?x?mzNfy(Mp860fM1JfJijiR$0p0aqfn zw0N8`alFo6;#f}Ae&c(Ke2Q_{mCr4Cm3Tw6-2$C;n{GhHOk0z|uQ?xHiP$?TYjiwU3OZ)`0@&=a{y8@q4oWaBLlFz73+@((B zpfi*sMdo{IuMna27b8=}H{?7}E}!!<_s zdWBc+OnSe>2*`3faPwwiq2Rp@AiSX|`f*?Djc0GgRQ|@TStXOgioOo9XzDmw2WwcC z=9Y23x7WP0m#~jX;A^9I_k5_m!2xt2@QhM&Am+Ayv`ISSL`VR0zKiVlHF#_G4B$3gEU26zvhpyzQ%guAZT9h$x3NJ5gKL)G7!5fAdY}a!yz?LiQZ8I z2X%>0EZrqkp_MeC_E7O9@JB@@f!Me>n_9IxvXnK0Vf)+%Rj@*yr@57k!q7X#3=7A{ zzD75w#o3v+8ZA^uL2>}6pjQhjD*1HI+YlI`iF7UzNNr?ITl|~X)SbG@X@tvhhlY20 zv`I|3RDR+0c*h0-OtwW-lkyw%xh7Y?4pnVQ1GdEo!#ru+Zt<|w((}#B@i`ekI86@P z5zsKUN-0Ng3!Cvu@k(jH*t4Y^<02x^qd+?iEU}Unhd4ce_Klu9uV}7FoGVd!qe>#h zuhiuEP+LPXN{5sO5Y!{%VVy-t6u%0Sv(wHMw?xE!cDwQTHj|9cjV6egESxtcJP@XH zAQhKqLE{IPxU%&jPES}Lc`sfVIaHejx)`nSg%xGSBV%H*6gVUKRcHhC9cf>rRW?Eym>V1ucFs2 z0ux70WAhD=Qn-7oL0aDqR-wYPSN64luTpPYSlHB268#M@GOjX#&&aj-%>yyoj5k-_ zzl)a~h8V*Q|Sw_F^o zxhit}eiXJ3rF^FOCNJj$CczREf1L}*GCIYHQwi3-{!l0k^%baahR*jGx}AM0P3@hm zsei7cKl!Y>BRU@BZeNii@)ixWdKh@KRA=&u>Jj`T6}q-BcssY1JyK%T21U`pyFg>_ zzo%6AIL!#jlu=4+9yfjd){q#05fF?UY?a16qO#@wrci8n4M!}O(hts9bs67Ps1SND z^D?kwA6@Nwx$w!vy3`Ku3i`w26<;2AeU8XH85|46CD(mzwNlh8RHLAj6Uye##ZM_{ z<;s;);TU8R8pIqhQH?~OC#hj;%ZSbZaJOc>kgPkOzNp{8cmf*L0Sbg((g$qCPWx5yt6W-!zMb{U>v6_+Y`+Oo#a54RXj+XeRF~A z^f>HnN_3;(y%FcdqoNTpKSmd^AdZ~E&BNe4R6)Vs?|>|TXOHC|meDY?OTu`(HVj87 z4c&JX_WYKnM{z6tN+V8cJX8ZUv0OF}qeMc{cpc~AZjeBkSM932UQ*`Y|7HQLK1w^Q zCXv857T*dnBQb&O3yezx=_vRtUAC+tZtgIgH?~naO~R1-6SDtDvjj=eUFH%5scZ$F zJbCgNYT~YReK>L=X*Q~+sGMc5!i0R4)Ev(Z^I6mdZ_zKwnI3t2GL-UE45S6=BWZK9UiEfyZmz<4do6${FuH#W525zLyB+xOjM+ev34pc6=`5jsJQM~+xZ z{78C0^`H&#cDoj~HXx|IsH~?dw{RhRWf6a|h(jesY_&FX>Hl&-KxGhatMvpqCOtdD zRGt0LxvMpQgxegS^1}~i#g^pRH)_OI%pskNWV<~AIsP^9K%ymmGwibqsbv{@&l4Z~ zMP52BBAd@#&6b+NeJSe|{{hHu2vUR~+we8rWj2in4%|Yts)pnean(R#rFHBx_|(^twHDO#nHA08m$>cuu!AZ08G?DlL= zid5zpB&24}fkHHpm?+6-TMPglX)Fy8X9@uODq>v2AhwjMVO-{uAlDJsfI+1Ln-gFm zo;1E_4F_^VQhV(mp(#F%1yP($x$C2?OP)>jr6D%Ee^zKTs7@p()b}kiN;zOdEoRbO zyl*Ob9H&#*1A!$c%oq}e6m+gvbi}9u|bFa_j9h*zYW*yyp=pzPeR83FeVMa=H?Ie$uyEhL3T|-=cf0W zyd3&FoLYHYH8z&!k>ho=4_dJ}zQ5~p@0VZp5lb1OYiu4dF`e5dz|1L zah7aET7bbDLPd0NEb;t<47IpT4K>ElWt_MppA}>e0;|gT;g=XDBw2}S?+L-s8`>qH z)?C&9=^Cj^3^YFu*3~9Feg+5MQa=5;Y$A_Q;j5@Qg>foQoQj&y#U&)eP*SFog*S0m zbNUn~k>c4%8l}mNbdzrVta{6xJT_IiRH>x!dJOa=YVSBI8_g+uT@MPrDWd@8T&G(3 zRL#NV_Y7NkPgAJA>cpTYa2E%tYG9Ip#F;mJIodyeKF_{5@?O|sE1J*$ z6m1j^GgXIGJoK}H1=UOC1c*4qDMQ-CF*1Pu4-J=ghArAu>8oMk^JKHCONwsQrj63c z+4fM=pw=m@Hc3s2M&O0hr0YhZ5>Z1%e!k&jVT?QTe_c(Gmd9#DM<{P`PrMP$A_UVI zpBoxyq}d#r<4v*X5tHjBFM_XQV}@xswHEPo9K?6At)yl63)yYlxDh{LTmY>#!Y*O* z&!=KJ%WKEm&TIoanNAzWemXAz58;41Ru@GhQ%$1%+6=Y9O;$l>? z9=Qvti5ve@U7jy5d!yp&#LTVoj+?;+;2R3HE#Pw^FhyHgX2z^pE*!0aTet2b9Z@Kk z3q5RHaim~kVm+DV2{~iUW;qVNd_vQbBclY0Xh6=TqxkHJPNLQ#C@Q&hgb0?zAm;y$4TJ4(&x)W|8(k?fEt)<^MU)MVj$VopoZm|8~9x&taTn@_|qG+5-o zurDP9(B{n`Q2YYSV+fN(Vt^X&2SIqgdb5u9VoERFC!ce#%*a_>d~<9wVeF6j;T>g7E4ST0{m?anam5Oi=`) zMU!zc4U1j&!joCQPnwsLlO1u?b9!SdlhBnR_T%W!^uD|36AeejByj{9s~dd0b0GPn z(q9@px)3#sk90Vj`P}_c9g|n}OoQx1JaZ6AEg)indZ8-kl;Snm08so06__(+{^Bu# z{Jvh7@s6~Gsb0bYFj^XC-&J}qVJr?;Oicc7nVHGic6P=;FUHC!c{DNk{la@$tIc>3 zs3h*zycR&3(H$Sm%FeE9@@hXRHZfjes&)n00V<$U@G!4h)rMDKbQc{bljYLLyN3jC z5Bt={-rh-di1YFBA|NTx+GtAqkfX(~f4kv@z8HlW;{S&#Q?C`=SCmSPF&zYoGYF=o0t?< z`ah@q|8EP+=)wFW9byXR-wFiMEEx?+2jpt7q*%a)6qI6tT~j36mMjbtr_W`0)fL77%F#XU33%)7>_lHLmuxxCJT~hw=0cn&A%>erp zBZ{L_6BCEcA@*Z1w-CIW3}d6ZpnDj;#Zsebnx1l0F=#3U82|WQ96KsAs*DEEN%EJ3 zPDd+xAIStuma9xyML{1B7~{P2Bd1~&7B`ghKaDbsvOS8<#*xJVhE<9Sp18Dl#68g* zC-HKui%!^RKC#KpJsd3M}L zXc~8~_0W)D5nDD-IVzb4Z3$$aJ7-S#|Hs~&z~#8E{omGNk-5k+tRe}?Or}CbsSFW? zjFD1?G*HGeONfwEqB4{WDXb*PETtqemU&2&c?j`-kDIlZo3)2$zx#Qg&-?#B`?L0E z?^fN{eO>2up2zSze#h_7VS?>;cyoYGO83!wV`RHi_(n429Lh$Lu+rQhle(nTLxuC+ z@-Q&`(R>&Mi65%FQ)qX%BUemTwVs>lWL=F+^CUCYwM#) zctNBqXp;Ah8RqcA-Zz#MvEFR>o1whr-ow~x7#hb};89YSto5LKY+^E1yP#hNcF}1EA7PYJo^C&Ty z>F_@ENOvoLPQ`Gf4Td(L08>bG$0bwegL0!t4+UAJA{9g7P0xxslfoRj8R}?vu;vB* z`+kmg9w+qsbs1~7PNQwVK>>;3$TlWliuEy-zTv-8m7PC@H}nozXQ4_e;0 zi_OuI0VB?xUDfDDajko4ug_Mg<+yd2hr6fkPk(u}#^&%o8c}dl>3 zXKFS3W|1-Wm4?>6WO>9_#Xozdg~#wBo9KW$o7~g~Ip+@Dm3GnQV#5B+E0>I#+aCxG z8PGQ;G(k--dWE`)>htQIpWbfY#kkY7kMo#2dSC(iC`N-^XDK#J|4 zL7Tt-rTXfO`|4wz{)KCf@7J%NIKXxx%dcI#w)S8Bn9{9${kFpFix;=_h>Y;}uOz&3 z&42m`|L86;>bCJiZKh4zAEi5RylHdYBY$uK{{E7bEA#H=Sj}?&C!_c$N>}ikMX49B zT!~5escd=YDKe8RVc_;Hr%v^79>s&&tv3j(^nuqZ0*lv=Wa z5fu^5cOU4{DSzskH>aV9>^EAibN&WzWwnmAya3A@@{0H&ZQF-hua0KyuW%vvcEb1v z%?mQ#>J}_%f6;FE@UYO(P@8pATrWLJ^tEi58vc4!53AJDKJQ1nULM`1{URO9D0ykC zb>y9Y`$LiS@V)8Xrzg$tm>(BWebjENtn;5=9IspH{flmu-rue=O;^3rgb5P{+V$zP z%wU7hhhX&=*X^n|yZ7pP>Xy&$YrHbfs;|~rDqF{LweE@k^bhU8o4-D~(mMPLKfDRfMOdqFr;VOWxi_E=oSU5;!SLaMj;SS?QzRzr(5cf7e(jq- z`(y>tY9nkJt?IQEhaeKnlJ$e_7=^apa zb4rqBVzYbi9ZtpUH3=%cmomhz?Su=5V?Lcw>%Bm6o#s_<%-VXpu<79DRfibG4@>sA zIx5sB$GFsYYq)>F;ZZsLD!CZFpSdW1%c{pK>uz2ZHZ`orZX>7V2FqjWYCTO!zcz8K zt?wO`q8)|(H6rz=KMgAXG$rR&%8+`8-hTT9M`y+T`@igV6?0r^(fl`y{=DPAykPj3 zbviREPS<~5>wj_wdd+`b_SMcGdV6g&tMHfCWT|C|;0N{-HU_h1F53RXzs=0d^pCQ5 z8uU-@_3L&2;g|lazbsQ`WX;D~&ri1YvF?=Tw!k&D)GOcpwC1r*LA@IXIku}?)Ni}Z zz$L%`-mwUF&nSV&Y~DzF9I^(s*mv;?#chzIJ@+TgKe(iYEP?%`y0g#_Ve_1>5scf zZ=x~dP?Lh`MVTYBn%yf5jCP6JaBst)v=682f4x*C_pD|o{cdSNnDA=AD}B zULVr%bArcSuMRPz8|1g~S^vqrctRKN;2smqN9|I5SUhk%CM%?GFaB{Hva)NxhTdJG zSM4z0xGmqq%HYKuJx{)|)M4cyKkg~3%c9N?)$eTh$3Hl39calvU#^+#p?qUXcli%~ z*djfmLA}$*wd0>_nu_)M{vrRt$G@z_n{nhJxP^c79=J%>uwlb&TKsx{!yt9DfBz~8 zW8-7it^3u?TIb;gFRt~kujQXhZUL^g54c~VpR6uL0sr#r`12Bc?W}=%K{k3pv>6z6 zdAP6BzxG0vuD}n|1}iSI_RKi`VITfGkHcp)dv9IMKg3eIH+cS+-!12d&mhAY+rnS_ zA1sH(ph0WO+?vvF=YkUyE_aY-40};O|ui5(lQgC^__I8y>eOKNu{# zJ5)v+bMgdU6rv2_#ROMZD*Jn1t(Y>q=SX*&1SgC>OX1SdY1`ZMv-?`d?zp~hNO1R< zw^7@+^~$Z4GR~>@f)E#Pt|61Ib^UFI58pvhR_|4W0m{&0mam$SK)m)D~Gpnm;U5E;J- z4rx}^X`BA~kQ{rtjcUELqqFL3;OnV-~Qpu)_l3-*pNR4U7a-e>EHd! z!b(q5c*+SAC)P3x{O;+L9`!@)&=%?9Ph=@ZhWvPMfBXI(d^i6jT;0i4_Z$B8lYIH> zZZ58_>q54(=KJ^WzxLaY3;gFTjCb1h;DOV9k1o7)=h1($Hh=qmgF`Q~4AURJlzww= z;?0u3w@UJgf#>voU1k94$@3pP_Q#9mdl!vsSNEqQH$#V3SW4O=^LGVha!oGkC@w|% z`ee~wNT+sOh^Lj~iWMuag;Dm3S>S1vT=R6i^eqXnO^?jrtEk(?PVsperVMrjkJZ$n zfVCAB1ZS~z6Q@kM+~Cu*3MK{*);rkzP8TkIOWanLfZhoQ4;pann<68e4V097`%KeK zLcb9Pj1s)}ZZG#NUCv2Kc8>H$Uu@d_c|`#TS4rzn0v`MkV`MHNS-Q`Viw(FcJ^4+g zk|F607<*yp#NFqqlFHoX@R^0%CpbH2QxH;O6W{9pC7%)!M*_m)BdBuPHd&+g=^jY6 zjk+1DDqK=J9@|X&ox*g>(T7Jk3L&i+k*pC2;b#-#PU9dJ4!`++9SNq*@BiT2jQyvn zN~5Lxo!9ZIopjfnDVWmF({rx`l0obW;fZSs2WfAXK_4k2O3e<=<@SRIhb12*B$r~V zt&L5=)6but=GsLL$fk#9A4&*9Ul8EdPUE!nf?;0w(RMqM0m1@rgTQ9mNCNMjsa3@^}GZBT{PnVW7ekc25z3BHSeEisU^yt<~-|t(4*yc=spMlJ% zSS8ep6%C9=z3bC-<8%efIipo_Uz+mvNg;q02?;US;C0RAV9A59{Y~LOT>|FZZ|JTe zM7_&rkTWa~}4IcjKLW4_T9#*PVm;35LRW%K4 zl0DBf4wj~0g&xC8qtAn!wk1Gua{<{r_#kwm`ssM38{g9Cl8G2rG0T!y&v~|>!9}y$ zBe$%aeXmjMu3ffiP%thI>Y%UhJbHsidNcOhfV8^fH$=A2>fBQ>a@KG=mR0Pi(uH$s zKh|yr~*Mss3HcWvLj`w~S;Ww^Y8RSTsL8wZ~-u#izDY*nRmId`M> zB@=CbZ9Klx2MU^vRXS&74(bf9E+Yv9_S6gO>>d>x8!KLZe`4Z}=9nI(Pisw%pBaIc z@*^t$L#|@Tr=CzVFKEB1WVw(ccIyW9R=$aSCzXCKGu3iueP?LD?+eV0ViQ=6AesjI zz_Wj-bS}$uGvn`|1{OYnd!Ssaex(y%tp;{#f{V*}#5-)Ptt02e!{Dg3%uLhg-EF1s zo4fC%fyIca=gp+eRVW9P&nJ#X@29skXNR2W(p2f`EC%gN9Y|iV_U$M~`2$ZYrC+bw zHniJC`rl%J(RLh%F=^w)(bog68YeUj(wcOvsq%xkEX(aFR>P?DQUBbl(lb%o7E;Dv z-DzPY<+W(+<1}YXm5`8Vy%uegN@vEkdw--t_Xq@rzGViLDN}9X&~7$!=A?K{!%4eP zLr_HgJf!lUeTrilr1v7LizfC#d5Jb^T{0QVp8xLO>L?wrG7)`#*f#$k{K4SrL-c}P zG3&8eSSIVdeJ>$w{)~s=V#{GfNs(8~$B+^3i(+@|P+s{8y?55f-A|xP`+c!@s)GEt zJGnRqud#b%3L^CN+B+?WJsDRG3G+*FKChd1LvQjurYXuHpi3{MH}9r(qHvy&$skpX z7Ov#ReTj*W*KGQ@MJ|v~SU5qLM{y}{LT@nXqZHY*%i^w5-WTq`GSpJK)|QrotLsw{ zYYEB3QA}D>qY_JD%_fU{jZkP}CegSg$`&1XzM#?%sh^X((-QF=P-8_VW(h)Yk zHuiNJUu5+}WFu(gv|QVR_tyv=z)FmM^Tw+xZD`_K)XfT8Y&y3iGSbA6rm5ehQ87!ZonfvA zEuFSO7j=f*_2X59ikeWl^`QZ^YSp?HPBo_)7ny_!xEB5v0+vS>ih!2HwioC{ROUvw z_~#x!#0u*D2F>yfB6p4TGRCztKmu-m(j5B{Wcn9N0pzP^cyCqDeN7c%3xR>>JwvaZ z2K)B!f5fCZYrBqN(*L=?sjx`xCQshQdh03eBa7iX>pwuo<}w7g$tll{RW^9MbFV(y zU*SkLV23Ve9}N==ZK_%M(@wBl-5M)!m_kb;drADAwF;RZhCZWVqC7g zMFH!r)s^bVWvZ>k89nuRYZ&f+s;(gBOQ6I&irE~HQ=$8_pXAU=%z=^IM+7c+D z0o}4=_rcyo%*ysnLxm9G@$O_RX+OG32Swa(Qw~`-%+1Y>jf=Zn`|z`0gdvYQw?Cx6 z`g5Ky8-1~2(+yfmODcPtRJeeVQ#M!O8H^gE}ICYyL63aPaZhriuLEsaY=zUD7?XIEhjH_)Ks`RXLTP;=IvjwYv z_=DV@oDB&~3u93ZS1zu*X`L*Ll+J2eGd?Ka$VR;%eDv!!wMWm6Km2NIYvt`U^We~K zeVeSY);Rs$C0hM(iP9iluvTO#C=k&}p?vcdhV86hEQuN6k^a~dDpebF9}zC+S3+tz z9Q%L&T`#~PT!Q-2H`k}(<-S`U+1JCTq-;IM5fGh*^x}h$TghdT-{;2pY-RHfQZ&*5 zfQr~egAZ3uPnCCtOHsacu^z9Olr(`(OkpkUYkFhWoWenya-cxldgWL)eYCuNRyK{E z+ZZk}kb+#U(Z}OP1)Cd`#z?J9>7ouP2 zN-yKS$3biw*}MT`f%<-axALc!bAN^3Q#!*U2$d+KCe1o<$QcHUW#}(%*-p83VXA3H8`(;lwzy z+mYk{UCKH%nka9e9Q7Sb?2^59r3ZATfN%yO3fsYi=7L=Huh#9=fE3=g(5RHYQPPR^ zAd?Az6Gb@qJ~nTjuk;;(t+=)Z0^N?Cv9aIX;_uvI+tV7G;XzI$b+{I8^y&FZgW@z*2yKR_L_pnK7%RDBXx_QD2C82$Xs@1OVa(?578j@3 z7tN8IC0XA4=+2z;(D3GYTH`N9#>ZO=ke4o%R~AG8wL#$6n$WQ4;sR!*DIXmP{5(-! zdyEIoWs1a9+Qc4TPW`k$tNVvZ#0ihG44+;kNwIm8bZ(B7yT*>avDCOA z#QJ+%l7s({VGZTc8Gdc^U)>#Ua#5C7EqTja2^G8OQ=4lpy$C`^D8Sq zV}%|&>lgSn3do+~`(b$Q<;#x|+YEd=O4F*_Ya4OXitaHfWU*JLG4On+ppv@&KVBpj zr~*a2O`l3OeYO)LkIc=M%>f3zVNm51U(C&Yw6LaCHU?kevuR;fULy^Q_?ZVN8PeoG zfzc<@`(0^{ww3mSjB8LwzYIq`!7rC|kUur-CyZ{Jy&L*DV(lU)zoF5m6* z$CrA55TTOpX?k55BPxlzlOEJ7z1P&}y!3PNOv9n=UH&wk;QQhjsD1DzgWrsU7OnI; zpWQgwBT**nPUF8jCNb{xAie*1vGjoM@146nJ5p9MVd=mUlusOlfbMfd;50}ONs_;B zn^MZmE!+CngC~)ijwA>R5?MrRb(bNekP_b!yV^;JF1ir#M^%}UQX zb>+~4Ulr*YN>$SAT9gHi4y)c8+-V}Nz@TW~g?({~?2*7$$=4Xa^;_in{O0G1f>Abc;?v1 z;S7Hp>_~6(r5jZ!=|jc4D4uW*gbZP(21&LK?eVg(Ge$}Qj5sW1cgmY#C*5}nBH_Ic z8!e&uwQzWZk9O|O8rU&RIWTVa>p?TX-t-Ng*M57rAzf(mb3~+4dg&b%_z+Jo5<{mo zy`_UJI(XDf%aYlnE|2sMuUD_$D;TuR*PL-4vZ#j%C8UG0G|X|Z5jc8x@!=1yb4oHs zD@0(B2%YFV8>!SwpRN$j@9`z?tM}V)L=(VybBk?s)rB-PspAd|_|#~!0!eO|IX3{t z(A?sSJfZwMJpTY)l>#fEHtG$w?JZ&rNfNntyV6u`bx&)e%SYX6}K_FJ1QYFw}T-6d~lG1!)AWRT}J6b zfNvP@cI5uc8321h)Srs_IXZ4lmq2&UYg$5Lj#D|yB4ch&`XyF*Q)f( z{(bvmQc^}5drz1=*_MJm7viC^NAi5sm7t?h)@AkKld%Fo2Arjz^0#Aoc;hKEUk@}h zTf_o!O@7T4fpHaI%sYv}R23B!v0MZ@R4=&@hq+7{m8FZywhC~V=1c+R1~UW(Ia2@r zPzc1ZNm|Uf>Z8?tT3N#w-Y=@3Vv7vmYrjU5q~PG=-4_JQ&Qjs~`8~~Wo?|T$pPmJS@=>_q|rlmDpqWj0bQQ_okp48>`2o`)gx`I5+_8z1bI2rVQa* z+0^{}Whao*@E2cx9lLX<4g1g5Ht5TtwX@sKDsv&(3CZfq%;Z{J(bkqFW_`hDSQ&m~ zWjM#|G5j1qHdZXEz)<|fmtXUh>_5I{ZKl&NQ=_>>)|_9-nwL?nQ8_;f$2IfricX4Z z&lDk)1j#Fzj3n-WCAhIitiy%ki-d_1z6$c6FmZQMukWL|xvA=v^F@0|uC)&%r2YM|JJn79^?gEOK=R!zm0- z{kYZV!}Xi7oG&>lK>?f&}d&C%f!LLYpRkZ}5`d1d#zF|p+zX+7iE!{?-ka>YC}xzQPUN^NbswgR-H|dE!Zip zXmZ{GYXSl(+vQ#rkZPpInZ|m_zyKW>E-`IA{QFPEPd{0$?Dl5;;nJchk5fNAPMv!6 zm)ZrTPkmEGLPSxMbXeJKTLRtac7jAxYhvsDCwiZs3CGClEYF7CbGMFu8?eu z19-kzgNlg(^D6c?MW0T|qbqjgG;qm6`k5|yr+yeI-!Wm*q>D7ZNbvKB0RflEq_*dG zDL!!b)&96S{Tv$rTjknOca_?w^y{~iS-XFt&6)%%E$qC5%3DB(+r)qVJ&n~j+ ze7oEn;QPy;I&(>VaIr;wsT~jmC{@WMMq?j;YB1|r{lUMCdFT6a&MkHApPic3vbs2U zMwi|*DrYxbJwIxdN~H0giwzA9MIO`F)O|PIq+g?IH>Nb+>gTVk^WwEe?9%nY>lR&F z9hYVH;Zd{kjxK#}zujOoyMBXB3tl@~Uw?mS6ip%D{HNd8?*>Q8kD({NA2h+w`b&S9 z#-gU?QiG{2-~T5^hjE+V|7VLO6PdpMkHwlgKVCGjN!#zQ$j|?KqyM|2->$&_{2qNV z<&=G!9|oYl*mUIkUCz%Oo4DkXAafDl!=v$V-MW4 z`sySnY>CY52@YP8)?f5O8K*{*ERxkG_o7k!(;`lYAGS*-N4^+Dhr4FSuocv^WR9h& zj~+kJ#V9|}lejRgKT*VLf=4xV^@X_;%lhZ&b%qS=W>y3jptY(UW3~<*>dMd( z)skiuBK)`~X2{Uv==X6gce{kaUPwa71Zg$3z^4x1zKE~?|9}2{{Ae`(uFd#(TBa)V zI{ZFrAaz6W-uT`_#vAltrjoYN5|)DHRxRl=bk|^0pH@i9^|<#?#yFAF@o!o8^V!*R z)6O+)+;|b1K&C#`=$=(9rstkvyZkxlX`)Y2+L zzdI4pd?v?gXBJWJY1*}`22GLl+c8gYJXKsK4{GP+(YGv9OrcC1XO1C=KpXobWvY}f ztDU($GIAd8fi_!)2%hGb2y3A2=x^aU(b-vxm-OO=2a-+vvMEFCXg=p^hu__)j6(4{ zdQSNk`4D0@Xk)9oxFTKD9a$^JLaH*Vib;Px7gsr&n_DaJ!5hY(G21y{<;v;^8Zi*5 zJ>4frcB;9!(tixGa}B7yOyPs&Qiu7{Aa?P@%lMJXM!!R9BeNHXl8V0Rsp2FfsYbi|61D z)EFZc7WSKV=281Lt2S)t>+ar`T8$%OM0Hm5;+Qg|OT`D!4Xb5>(@|IGhx0O z(g&TpbYXN5$|6nppt z@~0#r3~yx=CuW|%Cn?ZJz3tezb`4)RJkC$Fu{*@Kt zvA4kkXfbS`AHpnZO2X_U>)ZX`vlH9t0GOVCccA z%^0W%!ni6lw0Eyw<$*?S!_hFgclzFwCw+$wt;3(oXh(`zq!0eN6Yir#NBh<4z`&#A zg9k|RR7={@e7C%3esHXy-wh>v|M2BEPu9 zP@tY$y0A-rpLF#Y01lcR4ULR8@ly8yeE?b;hx6P8%IjdH$UT((XkPRYejfeW928Ew(O|9E7Y#G>Sk0MF{<;?fM9*B-QUHWCSxmY1V5 zP6>MXnl*fpyjnCYIDdBgoYgQS+YTMtfU?70)Kw&dHVy5ADPcTl<5sN#xPyU1hgysp zRi6%SETMh75LK5}5KXi>^QbZcgY_OWMwCFfFJi&@XU6r|lEmE9jfg~wRHo0{Z0X20 z?Hkr{1=x`vH3B&*l%3r@JbG;D!ZWMYs%7?N-1=A+VQp~m1<)5c2Cy)f;r0^ha?C6k zUUv`2hkwpSxT@aW`}a@65%a@mv~3#*xkXJ?)fi`l3-{AM3GSXwMe-z|DAQnHJ-J#F zfwW?RwZH$FXmD3|rqr;?eK`k!lwIiw#7VBCKv5;|fj%;c1S|k8HD$UzXAph;#q;O? zjA*Z#ixmVxCxVu~>)Xu3%?C0$owKH^tBV+jX5a%4)VkaGewxkrTn76_ZripP?&qLE zgL*P`TM;hY`A4@VlCG?>$?Vx(5m1#8jdSOg!8NN?uWr7j3l4S}S}pO@pO3}d$Hc_k zf(JB~mG25@?57{iH%Y((S?CBs5M#e@(@CtZu70byIKaZQ9y8{NbjI*pPp<7>Mpyw4 zvnLB#TwLs@9}FHA41iX%X3d_=lZ4!|ynZ)Ot$G;awsooy?Y3T{rdG1j1E&Yq!jgT9 zKK9Y8S3{6d6-y%{jU6zR0HR}2$=qP%yAjwV0dX(>rD{o}s8Px$6Kh!HQ~G%HUKql( zF5J9jVQN|qtg}jk?i(;(?WsJ8h2mdoXCjRif-gMJ3=4!r-ervb)Z_D~QYr2fT-?t2 z*bc88Tzw6*jK#&VX-{MA7~G5)kXFtHPStU!CA^<%L=ldxR25AF^<^jLGj^H}6SQb_ zpS>Pl-8vkFSYE1Kc86zo(avm%Wdzv;q0C}Y5NFaM{2&PUIq(4~l8LQtEkv$m9^7(` zE~^9MPnWtu1?| zy6NHmyiSG@$Qtdov?4Sht32MXGH*g zdu*(Bmo6bRxoEwJqdlT7wbr#q8egBs;XT z`+Q~~0J_61tDybaUkap?ZX62Xgm0J^6?=+0K$enT>54>*Pa0jW(Kj0^YY-}+9;O3D=BeD ziIk(;nXN+k*knsv3J#{`=ALL=*7yDBj--pFy}cGCH%EGmFf>aDo7(|c%b9+Li@4+W zcQ4fpiPfXf#*Rbi-Lq`Pimh!a3acX+OQCnY1cSt90mO&eIW`~{I7Hs*;*(<;lYV|Z z&xt^H55^61d{17!98BoTVA61c|8W&@itgd$-o^ z=h!jKk|*HJ4{h-)p~nj1;yV=8w?s$prOAltSC;+ynQhrlS|Q$e`0rIPZj6j?OZFqP zhFLm_+Wv8ItqEuR^lkAgC>-74@DNDI05FZV^;S&EI}k{h)&|T`AX}115dB%~uaDhw zzqHg8W|OVvoX9Lo8ll8eaMrFs|J#6luc4uF)(FjONcSsAfm{Xp;xEXa#Q{hfvuV>x zzeck6@Lczao4dmM6|2iD9s7_0+0<)f^NFdED4dkFgsVj7; zMn*;r0=GST{kn12t{bAFwDAXDwocjdRqWBBK5_c=AhJ|q7Bp=A^v!H+)QNOv(*sqm zLIsETp_~f+CM{d8fW0m5iaxFkM5P#UZ?dHsMvK8;cgc%&m5wvvshoP4xBGf;@EX+STm@aT@iYa0X8?I8>&=3%kSJ%d6MD&&272 zB_?8@BCr&nk&$uSzRfKQ-UA_LV=b+@;`GRR_@$bQKe2dQROwO9VVv3NR;^oCUvPA8 zBc!P${v;U4+GKPN?X9$P=ghY>e>~pD!ahF_}a1dv% z-A@89;zDF`8zTAn$6o5w=Pq&9&f$px6qef21H&vIRTqB(PU7KrD9Tl=R*ezq#F5T@ zhYhQT0-qylsb|9tgQ3>lzI%6p#UMt~hqDGahKg0IZvDEai1+TmGH%+Y%__=j?a)`a zG3V__$!OF9M^__@o-zfL=Ocxs(m1cb4&ZGPAVVWlw!;hvc|75G zzLuIwAmc=|J)#p5+R3DmCo&rbZ*eAEK8aHU@x09mlI@fH=-U3~$dBpa8|3*=zs*64 z+0@66`mvZvv}ikf7i-{hP83s0Ml~CsXFOtr#)_rOmfdAf?i?CFA1y>8Z^rJJ-CJ_N z<9;PHpP$@J-9#ucrcIqad#_IVb7zqXzobpiosm?~4NnqusFg&DopN<;g$~z4{CS-! z<)2_i{#<_$fkUX;Yjm5rmj11HJin<=3{tx5kvAJ)YkQInwF1x#3%m8;!BF5UCffKd zSyCb3KvI%5TOCcf8E~WcY*ilJ@8bYcVxUcco<--KPvqtX(Lf=`ZzOM?(9;~qES;Kc zZz6C^q635r36}#Kq)*ttIym?==|h`(E5PDBimr9|cBlUJdw9{4YO~}aEafTokMq@p z#$JT(It?4ngOZ3gxN~3D6OGVuXh3e+x>XHeO)x+svCCKD>{WRke_i5Wm@*Fk|hA9pS{qx35!$aMx|wH;Z^oyc(Sb1-UzF zqt|OQcyJBM18Hx&%zD#;m~!jyzyE5;x)TN`Qmgd>5 zN(8evA;(DtzmBZp6OJ*D{9qlg2NQe@TC2i~qU8tDl8$FPla{8{vEw>|S*;gy$R5ss zd90gNoV0|a=ZaB_j*R>X!0f2~k-u2BkE%SLU?~}(Qv&QIB6E6ya1^u&tC>biQl0ir zRcNFbPjD~z{o!-KEK8R!zsI}CyHi-0-cmMU+qP=Sq`dXkgopP7o`h@x`nW12Wa+=X z2LIlI%Z5do@HUOsr?ReItqU;c+GXY|T~I}huG3W&@!Oj>PJp#y-vH*sh?6B~Yrn{_ zH#PlK1f8OmA)l%@2wXFt?ShDU+e8L71!6ZPZn(|t=2qmeykn1#@7y5XN z=+rFu%Iu)Z-kzkTFM2XQZlJZb3GWp(L-3#OetDUoQjF*>Lk4n)jwR0N?ZQHa{8q(y zFyLbo((J3vqf44Kx|lvs#fn)@T!O)DV-PJDO#M}Hei(p24(I}ja4&0X zHEcHWmy4A*Z6JJvXJC%c=|GZxRV??SwERP`BiVstYXA0I2GO+0@E@4|TpQ+eB?-xC zktd<5x8SJpSF?&)+8z@VK@|=uLYPPmOp6~tgJ{^id1VRi01=P&tlsSeBMV@)3>lg* zt|CJ?Wr`#Y0YBTOPL{$Q@+>o=tPIo9kw(lo7d8M)w*?yF`lI5 zup-wnrxuk$OMpu+-au#B^#opZyH0OIu-1;9dg|oKUjk2wO<{ZjHev?Y@(gGZegOd- zBe#O=h7!Kp+0~_(NHK*BRFVz?Og`HL+!ZjkrWlO;|G*^#JR!^EwcO0+g`j8OhaMFH zo3Tui1_LrMaE$2?D$E}~ar}5$b3riZ0y!nX4qJYGhl#)b?LbU>dLx|dlJ4-AMv{7A zXWWu`*)QmWckl+Cz^os@&QrXQ5EQw04{SZk>q&z^c+Z?YD`k_Nqf<93mN~h8x0&|d zVj za?IHrI!&64ZBxf@#fp=GU{j$)O7XzS$awdgG^vI5imM0Q8?jT5I_rDfI`R_%T#_T& zRg(A6h}o82!LK30uEF@EfJXQnM?zwa&Tey2A6N*$(I{s9x8N2ZJ$-r!S{^mg z_I-kXWGbANo}NFglHdi^ZkvJHu0wNg{=$> zLZxmo9PrzsPoG9y1ZPGh!ib~pUQ|fTA)fXD0+Uh@u^(|>g}_rEUvBy=SjZJKb92G| z-ItLu5_U7uT&-^1Gb}t|?&+*a9q(HF`08>Li6Z#q*hDH6z?lc+X+dRc)UThlzOBQ7 z*(L43&^Tn6RQG#QoS}#JYheSZVwr`5tP0o=Q4i}|hH8|n93dFTP9$7pv=zcKdr{0I ztl}--O=AYIygkMGYGsE z#g;M5M9Ks8&VzhVBbh!)|If>)$*ltVn5h(_@ap0zh zXpRA0c#bxC;Hp(~M{+6x&Ti}`<)*zHGhUXOi&PZFvXQpmu^{t6m_ikJicke6#XzRT_j^(~T(@p)F!2Gm?LC1|mIx!7#7%Nz`mCs}G;7^jvK2#FL3HTT)6=Iv-j%3Q zrHbi^KvLW1Y_PGxYt}4iMDV#SHrAh9?c4qT7i-$t0}#4<>8n9c&_i~U@DjiXaQnzN z8$S(Jodi&%QxAz9Wpk*RzbVe|)3aw;0duH4bry+40W=tQ{jP9FoP~wOkyaf${%Y=Y zZeu1J*Dlqk8}knQ^tT;2P)C9yjE=hwnJ`1bByYsv&?#)L$H7kYfAMBXf-e} zaGr$&RZ$5;k6*rA+nmt@;t=IKoc6Ybs-kcmOAS%bZ9`(rbh4{tpNMGtb@o8{wRfLB z@yzMrwpSSLpLBIKG0O#}B6096rcLV*85v0p;O_0)N5dIFWl7l% z5reakXi7KJ)xAY~#a;O?iPp(t=$xB5f>@Fz%r~mVi4hA{0)lBlNdyB>zIN+T<0N0D zY_IrobjOJR&(Qm7GIgrHb|S6np=hC#YQy>K-+5|*D!S2m#moqy!XRlP+Al*DXqT2Fp4oCuEzuYB!uTcZ$i58U^ zLuL&I!_l#}vs;?!B(rc?9!3y8A>lp{CSVskC@?JS+YtVa71+`^>cR{@plr!|Xf@)% z+;A`m@0YZzNdbe%BmSEtG|z>UPRgkiv=saLgwtMkayiAf{I>V%S@uYG;20ALFqK`F{Z1MZ&wEHIrc&)aMW!jh-9pDdKNtxA&_j8}QH5HhgbR{IysrX`oV;?HdJ#Yk5 z4m~f=a(`V1pVvD^Gd9800XFg}EGL%lj#66g4T-!p+cXM$gH^^IeEmk|rMPusZjA<& zr$(JR)&63#e_i$qL1s9F*fg5&bX&C0QP_tO2i$%#gnCl^AnD=8yEOCTF2;V7M;^F9 z{vwq&7K0g4T6g>)MiE(EQG5$|Deg-aUJ33feznBt<2*nKN`DnG2Sn{31dUfAg5FAn zh#J{?DXt913R-~og5?~?`$r=kvX{AGG>TKnu?O_;%(#diUS1ukg@Cg*@<=8Tcphz3 zx)d&qs-|XUxa9vMNq?tPDNMS+)+EZHX1NeF44fiqBrFs%MKL0pnk)PoQP;U5vrlJl zA_$SQ3IpJ4Zp8d+`NRcI&sPcoaiXb)ySMjglFxvrdnqvqWX{Q2g!RO13uFhX;c3W6 zg+l_WC6I{J2T!Q+@17JE7QX9F<-rN8ZZ@zD##)MKoT5j0N$nFoy}ifd$Y2Th)5(*4 zaN0!E;)|F9fNpqNbRoKTA_b8GJbrZSkdY(%5mFI)>~lUp|2ku!UT{Pq%P+EUpqP-f zm7AoHl)c`({)~kz*8@w1+3q%^Bti6kt0WH-jo8b)Dgg+Durd9Vo+D-+3(um z79M!<(dC+k>u@aY02(yketk_G$>(#ZN1kQVmtez*8c@JkNSu2i$#cBxL%cG()o%ZU zS`^(Pfh7I%qzY9hE8fdr;H2wWU14b{jBg&;krq+qXA;jpogp2gjsb ziKFDQ1fe<%@X#lV09^E=NF5-uXjeEe?$Hp1RH*@xZg~+RYJt;U&-eXYidpfvm!@V~ z@9x8gOGZwf+>#Amu3R~{PK0Ny>YKykQjHTM(e z&aK3h4gk;~V`F>kZ^L|{IONafl@;Kfk&eq_fZZ&<&eW0wdWyeBzuMjm4UMMMKoiz8 z-puM%tB&OJL^<&e=8UE63q%1+{8xe%2`vrf!|06(Qo_2bCdpiF;LxbUhc{yNpOeWc z9($aV(+lv`mjn$7bl|fD5iJY_2|*(fY=ZYt9>90q7I14 z3_$G?_NIjUybJ-C|8HMt?5%4r(|hAz6T=dISTcVB6mI&gSuY(v_cS?$muM&g4gq5#gV)-Ky6QDfbBhdRL#i_ zEwRqpE9$l#TTXC2sqzW&2)Q9q1WqF*OJg9d`@|hM+HYXf1fLg5TGbUENpstrwhv8RGI9fC4 z8baT#8W|fT#tW#2x^|*?kKt8wkuoA2EP=}*8VFTI2vzj}`j?I*r=-iI4tZn4mMyFL z`ub88I$iXC-SSek_im3d-XTq_UFj;q!nFC~r8(3ehf0D-bnPXjbXW45N0;LoyvTUY zsE^Ro4SY9%nn*H~JK^N@>tUalk*tN%e*5|4ZnEG!iM`3Bn0S4x6;&!qso?SR8?obG zJ-%FBQSBq`UxU7!NVwdFBsmhHg7rqe-6_~Sp!^|dBn$$FHg(+Y5hPq;UfEtCftjxh zPYRO>_JM4gL^7{>>@>42zyH2Y&@YT4FLMdl?rx}kL@|SGY)()`#Z^|9P2CpI@zidj zDA^bQFngGQN;Z=rwcwVF#}#l3*JTQ1)y3yyXEGd-{FTZH4bc6F+JTIO&cH|8xaM`P z=lTAX%M-X2Cm3ZU-@&sx0xl_vt9S0*J3;J5`N-VoDsECjUtfCEq&&`Q=e2XcV=8^f zpWa_iZO6r!lGp>5s{1|e_hZo%-@9~X>FDaJ5I9S}loSlfDim#fPW>Wga&h7sa5{9g*_rBd9L8^5M62o0{b#4){6LBc4+zI zpT}1(-W;{N=E;?*OEl|;pS)FUmj7Jk`p`YicUKP#`Q?MAUmex;CW{-bZL+Sk&ECHK ztB2-qhzp+T+-hA~V!X8^{Aq)m zo}D)qbf0#vn|b%R;A*)-V$F9wecwYsT%mu^ho5Cn5q2p`+wW@;Tf%z8hxW%&(|^&A zHVg<99U*n89HR;G4CJ3)VB6SnljsYP(uTk1deMOqt)#`0czilFq`LA_tV_9G6hw6R z2hg#%$HkqVus^C|rAksvZ_>1Bg)z>R%l!)|E6Qh`arTJ5rwT)0w?A`dx;wq=c20f2ycDAk<-t}Q4omLz~3*DjmFpl<8d<{hA& zlF{>jVYsbi2&h&@JB*RDbfhf)T^KFG;GzPm4@f1kGrrg6@#VPa{riKymd7Qe0!yD~ z73~m#BBKDRl(wn$gIqyRKSt&_l=v91ZXSrnG1^TNZ?*$ZmHJ^5dIYd$g8EGWecbo^ z@8aW#wNF!H%>>HLel)cTozka)O9)CE;w2%$Gmv#?qN}EGwI}Rvw<^=AXPs*#9j3&$ zya6-V2JA@q-I|$>dyp;Ih}NnN?Y45#4t;!)A!PwE)>3)|vMGNMvp{EOi&#Ln z%^n8fxOxe(Wl_MxLWKwjiE&}1v|EfnI{z1d^18M#>Ufqr#GJi4P?M(ua7M~FTp|fk zLaFzI|Jp~e>@RWkQA`Bvsuz91l6VB(_!z3qU}lP~1Q^+?&Ot_H9_90WsV3d@{oE~< zR|c-*r(+o-I&>J^D@mSBaS&0-$zihiAiBn|W;R0-$OY9}>gN{$Z;XO<$4OV_w#Z<+ zM8R4ysdG&zNy336-8@g5)E-oR@nzP#!0c(e|4M*($2es>XkG^40rN-z1a0`T7gQlI zT3S|=3O8hY@{95bS0||;_j=PO13Xr4DwOmP3)dIuF%}f`!nJGZoYas`Q|dEpz5~+5 z#?cqr4j?T^_I}#r%U*!a$#~{506fBT=iM52468cE*$~i(BLh$5*M5AdRrDIX7m(~J zjsb7|A+7`)yq6~+_f8aQ8|gdLaLrsHgag2z;Z+GhCs=D)bRWx_sFoY!oGk}FiL5D=1Ru}w-V)3)-T`_cmoVCc%@6e$w z%v|ukM_4E*LsG{Ry{YqXWcR=cLN!9lQe^Wg^9wQ9nDr%`hW0WwvET6Fzd_WNr1oZM zvA4u(7?)2a=X`}bfh%V7@_k4QS zS8w0$MFN4&mM#Lc7YdH^p!fzA1t{fLXDu z8TWfIQrv{_2e@73*vc6QBnzz_pa-5&8@Oh|$QE9Zw|6IiTHHV7h<9x4fO8M;g0kNg zB8$|0sD6)uj$1{vfvCDJY(gs%w<9d4DN|a{kC<^U(EQnlQsI$Qt3btp2;%NkgXbSg z6_3TghR=faI67g!$DI=uL&L&Q>3=X7hfnCE(Qn*1o!C#Ge8AY2YB>ur_@j>zMd>BS zO)%4Jug>9C{F~J}kqUbO5Q4}GDZU^>2>5fgBwO%LXvpSxnx(O+sX|@QR*40Yq$?r~ zJ1}@tQ!O49+lP6GPZM z_q=4bbParjrgVpwKb99O#5s|Hl^8CYW-B_6u-!un6jxr^^@WO0Y6BR|$8QV02m8Ol zsww|QvG>-TF@=oKvSmyBE!qlQ$dh@CIY8`bmIKF{I&wct-CXy3&ZC+kqu9n!_(sB%J5oZ!%>(_7J zdQx90XEKd)Kd8GTNkV@ewofHxRDU3L>8K%<1L}b~WXu_*A4Qij?7|I$3G$pa&zJny za|gkh@PhyLIr4SvdaLm{GxQZw#Ve<8kHsoU1xFFsnDvzslDwRxx@&;15Bee#)qo=N>kqPcj!=GVSbH)73f#1_oc!6OO1* z#gWg!J6jJMmJZH-zF?|>kWpe|k2&i{b(!;C|1-L*gtjDhbxj7)k?4odZ3mG{PCRL- zb>pT@*TDFt2jtHex$w+5Nl_&e7iK`}&6Q2?d2|~*BjT!AqsDwE;Gh^$0OeJvmCI#= z30GOz542v;#GzpeOP?TE8c*JS2vj_9NMDYBwFceKVx(ul1i>gcbLQ+gK@#}@zdFBp zdUItV;vm`_4U++gdbvHyX$;_tyXi@0mJVS7m65T;bog#}JS;ZE@axB}lJq65B zb6(qae_zl@1_bL%0giM*`Y)X&+NH8@&AifvD)k79wN#Hhnkr*DA|W!tnfYzgIrBeG zELLbdHD-~@maeYZur!^e7Dd86gW*uw0uMklh$24dp=v{JZ_n3Ymk1IFfnzv-y(p0} z0r33!d5Yv#x{T-^V=XpQ`Cu!tmdkrZU!Z2#hyC7bvsxx_LJ18Kk{_WcKmfzrkn%g& zpzwX@WC_rtm4Gf+`iU^pe;8%FEnOu}z=#4|yesw5XH{Da-7{DC%#cp?p|6@xL-7ns z#!{^q**XMS^nq5P+eA8jVrU<*w6fY35mAQCqGPG+4+EX|^7dKdm-)Rb_rG00;*&FgVzpu-hQKnk@&Sb;_$6n7XL#+m}9h zGKqwOE~uu>n=b>Dxa-z=I`3O5Pzr_(c)etE#&WNC*@dLdZKgg_D|g#>WdHuvIay-s zs$9H&JwqZj@df?*Nv|3KL&W9Bc0gIEL;vA@%X22q(mRrc2<4t$zGYWv8Zr`UmCjNkWkUT{!P2N@gI@;leF+Od@Ep8_epfh|(r~orrMLvYn{P-hq}6O8HowFE1V>k zQBx_W+q`+t4g^+0@P)`HHNTXU6l@yIgrr<#qmGfAEM2jpF?@ZK0pak@2s>U-qLDTf zV~YD`*6K*AZ{A!sIX@udzBYJ~E#*pH>uk=$hORSegj=1aYoHE|W@T}2FF^|;^hk9e zG;)+#x)|b;vF1yTlp@SA3n5l?)1O1hqHg)Qr*(Dw} z+)^*avYCmHq_nmf<72@ct)Z6w>3-E<^+MoDW3a+GfG?LRQ%*w}q{I%7s7?$yi+J>5 zuu$hm2$OYYiZp_;CCj2B7jfYc#q0>B6H5XOg9b?xS+&}&M%a^=ktmk^ z`;_7Tl1Qo%5if4l4c{48_~=o?MvWGb?jJ6B@S8A7^rcP+6YuQnNsZjPbrJlD7d;P+YRv_OzbTI8UBkb8xn%MV!cz`Ce7HN666=xl z;@r72Rv>*?dk_Q6>eM5CT~B0TWV+7rU~;l$-@c|;t`pU%#}k5c^uKY*>;yl83*zVV zuU@|cNkn!-CTIq(Ia&76L<& zc%)B3-ull}c;d{NGt=;o`}fzvB8moGy8-wZ+#tCjYhTx5oudt)!WQ=b*R0o1>*IJ0 zL$Bp@>l{3I5Qa0+{OWmFM7N|7B+wFf7?ZCJ`_9QD7XKDG5&{-Q)XmLHe=2WVtWEhs z5F#+hSFc{R0Wz||*jI6azCvuHV>xx|RQts1?nxtrYO+H*=a3pyP<-f|B9#~2r__)4 zTf0n}BrFA$#8j>d6x<8;ro=R5oB7W_e%n~a8EhtPb8JIj(f3FG#4dP2Lt!Ej>^y|? zcKq&hIZQ-`i*X-RrEb6R`V$OPbX1%*_K&*d)_H(XE+kV`Bq`s&X!jk|4Jk&Spr}_u z4G4Tpf>D@8w>^?nDpl%nAceOKWQeFGX-XBk3VPvKrD<9Eg)lxUuQbXs_Q6M5gHj++N6&!Kkt!?aC{}dkgY>;Ss%T;|S<6`1q(E^eB*8vARSMq(f4e6<rtb! z`m|0tVVs|zFI>Wn8|yzfw`pap+%ROGAEPzb*MwFt!8@htLU^;lG{C-h5Xo$e6few^ zO1Iw(;i`12QW1G5X^obdwOeP6nBr8TV%cm>pt1#LEF$>-GjKa#%Og{!9ZPC4oA$!# zUF%C$LUJh2O&dkt4O%_|@?EJ;bmMVZ*t!ZC@o^fomRykWta%*-D=fh+Uek3*AN z56&lznmA>SsvtwyFHEsYVkg|d)k(d!>Q>_L&m+Eq*JuxxFI8gv!q4-{04p~TMq%vt z5#2m~NipcIz^V9RAw9qfjAZ&(!_RM~d|oV(`aVUZZbqaI+6=NAb>We;PlgzJw@R#3 zvErCE3br4b?K$)1MPNwX%tSfq&dxhD zV-0!1YGTmrD_8t_t=7R%3M1rL(Yd?N_dw>cA(4^5l*}|TP-iJ18^x|oKJS~wf|0T>fvmabH4u~RN&m4+c%DC@vWl4?kNwV^tFF0XOuB5ktTW)W4W}&X zODy9fq7oE;2}`JxO89OINP-{mBrCNcbL}Crr|fS!4O{=^t4q2YU>LJ&*GZ?n=W}xA z#}Wn-;B9e>k6S*vX@h*dg(Kg1!@kZ2vt{KP8J3w5>?Y? z>|Ju%%KxF)D2nd5r?R#z&uE{L#+1UGsSwb33G_@Gioe{y6b|WCS(b7Cm}}zQKcN|C z0;JOz*(5q9I0nulgG#p1lYr`2(G-Fg3~pp7Ri0hDc2$wNgq)IRGgD@hE5!&8ff1&s z?TNyyNdU4hUNi+^{8A~=5NaK!E-;R zslvgN7KzW*mK>kgd!1v}#%@ra*c)T?>!~elAbff14F!dT+BBG;x*@6ICqoRJp53}{ zD`lptKFd#z9aEf_By}44Um(pT1<^N9JWERjHBuu9A9H(fwIyYP zT4YFACE9p=SjjWc*4~+P4R^j2{(qRgjKysahkq*ddbVV*VhH}7> zUARQIb4p4$zE||TE<76dy-QzCkQ7FWrBC5kl0NB{lEhD1 zKu}U6hCG&SA3tKH%t%VNBL|6VG?#I;f}{?7DEbjjs^3mO$Sp7=vb ztn~jr+qK@)3U`fay})sA%~KjN=-XahJ3-TaP65(q9Z z8`Lfk6VV%x<)bC+cE0z`t$X*b0rG%an+Bg_X`89iA4g}5C&hhP7ZTS4LBx)YGunwc z79k!!tmM^cbAkP0$>EJ<8_M40*87Yf-;|nK#GXB?n5I{AOaT($Wu>bo7A}U{4l=ep z*G^Ql<1Q~NL|;afawL#i|24{^G_^!H9vJbc`0GV*!RrKPoFw@S0bl{d5W2d`d@U6{ zN#3_8h46fNhEzs35#Eq~2{4PW%okL+-U^jt#$S{4-Md>+%DA$3e06Dj^gVXlja*PT zW&OQx+CphWFWMUN*)hpgE<2^ouy>NyEC>{7n+9zTvvae{2LrTCm{U)hrKg_s=8j^ z{iz6d=CDyRH3tw5i4hfD>B)I_S%nMuxpx;0b#$FIdy*;+s9MN_ z2MJy7E`u&#zH%iKM4gGrbLpVB`l;036uxOEP9zdG<)xCw@Gf)0w`hYV?dh)!O>vLu z(Zxj6Rxuz)-iwF%ivh$L_>}tFDc`JnJM{6r)kK8Xl(UY?bt5A{R&LHL%ENZ))IbdA zVm57hIUVr(fB>gA4i$lMgBpGgZpy^c&T}XB5OmSvm4zcaEmB-ER~f6igy`@MaK!B}Jenl%9`) z9v|zf1?`kxWaZIBSlqgZ6?$-bVJvPrk<4vd|K*ph%c5-5`E3m?hb53+TTU#5J3bI7 zR5CLlLNGkbbb`)ThyBFW*LD3U!8^0;1*=ZrKWQd_eyYFqRw-l5K-nzWd;cvp5c?N4 z;DkZ02BaxEB{95#jZhT{B#NeXTXf=T!l<1zwtRCJ&f(*Dd;K~-DAe0rml1UVMsw-} z-hY`PmMQ*^{UFO_5U-vDN_z`>9n4XY4<2f}kf=A!rd-;cTM}H!A_PfDcYZu>e^F#w zr~)*|#%uqSmr3$nN)t1eJm0)ZY3L67NbSM`dE@b^KOR3W6HM_Mz#33IM=6|ACcndh zq5XkSB()wKhZ4Kagr^MOfA!8y7^V*8%C&*;)>1x<@NXCJu>h~^GUL1;a~Iq@$HV zRD0GWX)ra&(?P3F@BO416e}2tF;EuM#!@INo&>qiCy;ahn zNRY5fROfJccK-0(-sNCtj8)iN(xYByC$mTTsZ+CQ=esy^&(a_pbO$YF%#P&OdS@i) z3js2u-DCJQg6y^)B}92QvuPDeJgd{U7&pSha^W^CF z4S^&O{1{Q|*Aj^lzOClEL!xEwvg}{|5N14`0s~u;Fk$9yG`{rDzx;9l*vhTA>VU%R za**+Ou*RKUP{zphl6jU#B0mOB9@4awdOYz4+=a*j~MmTyKm7gVmKs});I|e+nZ=i?S z9%H^4M&1`;o>I08U0Rf-@LIcj_filbBR&-7;-~(#KspDJp1XyFXA34b5+ zw8IR~)wx2{0W>A|Ot*x0+vW?Ya92!%et*J;(iMRU@lmiEoIyB%GD}6!hC@07hp+QS zu`q7J1jyWB(G*J&&-{--ZYb|k&z*ahzTSF2Qt3C0#}H0C3oGsEph6-B^JE%nH>fTs zodKXvWmHLV^I8w4G8HYI^FKN1w*Oj44L=H4ji4zn0&Coc092G>dEDJ`QSq~Fav|js zFL^^i4(4g?KDP6`R~6XTI$val0?@aaF^Q^hltu{R*0#5g%){`L7S>RfCNwP*Rc z{kNz&m8R4WbX#xl=C=5?dreL@o z2eb3$Th6Y*MK($l20KMHCf)u<{3P8`d|C1k2^32fa9q_b=4l;Z1c7~V)0og$V#*&m z{(NCx5B(((pf?C6p^2XJ__1SNWNv;179+w_j57s|p&M>@kk$G7exM;RBHKo?cnx_TON8Cf5Sq1wr0erqT~r~Vo*Sy$f!2|(Zv+ZDFB_N(FsY;iT>uBirk-9DnfHU zbL}8FA!)TRA6SnytWTf9wEC%23F!~{w5a$Pzx?|f@br6xR7H~I&4Pf%8->;%2}H7N z;xTe9)S}0~>n+OZhxCys+*41VZfEUzscgOP+$eZ-LqP;7#DId|dKqAQ1jPPn#W~2( z-5mwu_{uoGU_jI5 zPemT1*a^xV0!0csuO)QNFgmGvD9*au+?Q7iDP>P503rvbX-WW0EWs4yi2JV+z&3nA z8Pq?!#NlE5mtRN0(JJ{q-o0ytRSk^jP&c@xhjX1}#ebNT`r^E$3&y{9t-`iS3#R*2 z?$u>>hu?PgIW>IP)h&ar*-a|ZZ+!KR?cd)M)-Y>fhxmKJlf7!2TYYC+-%5zr2V9zd&v}?v-j40sTYNmPct}`O> z2jHtChWeLZu7+b_^6E<*pz)&R#{d$`LGOhN7q*&p*59Cw1B{eM;=;WcclF0`Gffc` zwoehzlUrqxCS9ZXbbWL*lGPA#D5S#NU-sJ#-O7iz z;|vpV{l+lYw$fc7E2zgSvWs$&#%`IR@<>nDJ>~M_;poAH?bD4LIZRM33B~9I_4mC5 zob`C6ZDeBzx5%9ai+$-e1)3U=x1{+D?x3Bfv5vxid8becE6bO;`+yo_{l<1$F@iFJ zW_(x$#;j+qRfqBG=@&uHN8`g_9<-$t36^*9BRHpmB>m6gVNCc)#yxsyQ^o=RT@uEe zhw>>mQG`RzrfVuBd-QN^3v6E&;5nL)>}>sutEeUzy69ZvhiwAV^`p0!1CB^_;w*Sg zk?s#UoZK8C{51SrhPSW3{-Vvn{|ep|i3M;VggV3cP&_FSDf-2-SEIbq7%w^IV)9z| z9vVgH%xC>Ef1D1WBxR!i+7nlWoiP{!DyS?}lk~fBBk9-0v@08~>}~w+&lNnnD`Eyk zNxiA}0{nl(V2{ZKU8Ou7C|_$Q(}6MU3(DP+%iJB8@C4cvxot7CI6z!3VNb0Ol;>{q zlo6@fJb5W-#bOLfHI&iN+2r}jN!$%Xfbwx*-B~mikdP@ANZ+-Sf$xp03IR+Hj|8O& zrKFoq<5uIofh1Osj|KLxGNJcmD7SCmd`?Z-!dqjBQxdJAWpdG5IdOG21+G|CoMCux zqB_3w;Fkvap^4dWuI8^;(FxBaplLswqYo9>z32sK8YTZ9J^QE@OzX5#Mq@fr4k8j; zIhmdCb)x@5cA0AP%3xXeK}9w(CGqIdL%SXoIh@8pnC=Wsfmu}|CMNKDqDjD_?l5{w z#W&vF_WE#Anc&LK`K70S&IPE1>#)Qk;vPdLt>rPWvCEgp3TXUPc!AQ>V-fAAml1LT zm_7BMn&-`xTp9SNi8|^^jpuVH$HGeDO6(hGrh9lY!Wl=XFhE_sqs~j;-t)2yr@+3o z)j;GNv0gxwgZ4SWu&GgafjButpRb4?bggZaDYl$Y185CUfBuo8OVW-&727X4ttB^-IA|sdd_#6_8gm(G5oYZErjk-~+p;1}LqMNUOt830B1r zz*Q)$#}=c9UsV`*>5d5{-d)5*Hb3eOEFfu`b|#qYgEM}?Vh)v%7U^(zRl8c#0P2g! zsev48K0Ov&M5*4H7`3Wf{=#tS&X4vhpvv6)Q!{G+f#WW1lhe2h@VN&wqNalMFK4ntbGeTD zhrZJtaNUThoO{shWl9-DYR$d4=2+lu$Eic=oD_1hluH^tJsss`%AzRFSVXd0<5%vG zs8jPphPI&t>mEvxnx04b{*PZuL9P&SxBqy*LSKO2g^Rz|CW3Q4Wt`7_)yUf}*wg=4 zw88XC;(Wkd0o|}EayD*^{M+AJ%gM?dG7s>m0fahHN&P2436rme`#(R!)_)}#0$hq0 zz?V}%!{~p1pIk++l!dz1E-;6(9My$7sz`KJNO~+S8=Xri$F!;Cn7Y7ZW)x_F!icFr zVL<_#c%=8?Kixlb?ok_T9whQ{p;05%S^z2{EWFz;j*@SN4EUK|kkWW7UJ&jS+0FBF z_Y<4|6*MwqEJRZea29M+vJ{@xmpo%%;ea_I3P9NsEu%bih13fG8k&s26xn}eTr}}N z#3pSP9#>QR=6j&DQe^1RjZUmAISzVV34+=NV{}hH&^Y&|q-96R+Nh{NjtbHZ_r4a>1 z!2W6(VtLWlVXyFoMiBStA+@)oI?#QO9x!J(JPjawLF*FtHYlK$au!`HicD`gI%-`U zjvm)0sIFolIuk5~PRsO+Y-kSY3zS}x7FC)cx$9M7MH~6bf0qm%_1%cuzc1sB6CUD} zVJx@M(l5>_6T^Mo-ff|sAH-ee7K`9diSWji59_p!lNV}JwAaO90FL<;mZb0v5EC6G zyh<^N5K$5VtuUh3lc^b`c91zJh1qvL2Ha?4QySs|Nxi@#BX5C4k9yoT1*N_ruOHqL z^Y#@}Z?^Rp3jjEcORIfIPoDf*B8`(%Kp4dV%Fqa&YQ<6!KM|Oxi5MpP6L-=}6(+tR z5_n*WsaY=d`!gSM7KJ(SzM84Br0;q^5)?`Va?`d@q3A2a)ey};WS;t06iq-xnj>K#8B?_=(`Pvd47M*=Bfr@@?kR;{uXj7)CT)D{T-2VxrI zCpjfu%S*J|mn4bgE5rOKfi@AWz&!YI7exy|QBG9zHaC^Xld;1b+0WxYxMV)lh`qo4 zTua1j{*u}-hy%72zN>!fTtXlsac-$W%dZB?q` zEy8QyB}sV*7B7o;oDV2j)LB@E-logJ^jHR(rk)7$kVRqHyM*uQ-m)l4j_8@ zZ>adRAVJrIwB2?DC9UEC`47y;a0&)*y7MuM8-2`8WjwE@)H-gyGM7`{y$37}Nk2iv zq?=>rYP6-hvQbi93~%(4hq4ymXZKR}li;t(c%CMkE|U?s(*bK&bc^YpTslbX|KUI5 z)@xJ=*s85(pNA8bS-9wEY0qrWH3Kb4W*kEL%DaP{Nc${dH%IZ&3Pg0cW+3is!61Ra z`}-#;r3JU;zwpmFKtv312fQxqP{N!exV*+7DUmzXxwFT!PceI}{w7kd=jB5X&<}I$ zrw<25pwAoA05LBA2xo5~*{7ndc2ri!8}>i{XJjY@rd}Ftl42UY27)4PD-jMA<`c*D zl~?kz=G3W1cBI1t#-JmX^A1IDehZj2j58!UL)S{1L4TR|@g7pIY~zg8fd~Cjbj9-@J?(777skGqRNr8g}d7zZ1_wHipX`7@vdGeb7+4 z2;!EwOYquVS?c9^`Aep6oPlNNK~Cenl*G8IJfvP2TC|Xb1q8+SJa*=p{k@TZg9dek zsQw|^=ArOC#JD3#GsV$FRsD;+q-hs&Rv*e9IMziV38^EPOnMUG* z8I)Rr1ecHgeR@yqh5>{CeX9T47sC{h;|Ge8xcfqr2iFgrkc_CiN2i)fn2Ic!6nPIJq2 zk?1Uo_^(l&Ltrllg>fGlb#zgnn?Y$bgw=x~ebXR=GH%umhQ3T==&XHC$-RkoaHuTnO3g{;=V zm*nXOKX7^a6Yv8W6L3X;AkPr55#%+q2>(-}sx;%0qw8EDBVLXy_h8Mo9Cc4JF z_~PbWKMkhG^DDfh#@XsYesyM2w&N1{C`j9m!Fn9g*@f=cJbm0-ewZSvC2Lg-`{iqepw`Ha!LdrqwT|ziX!Mn5Y zX$d@$>PEeb7*5|2L<(PEw~89-MoEzINOCMPq4$y5s|LDX?>AKcwbI60q3 zN2+BTk(aPm`(2kcbu__dvYhqnFRcwUoJyjE;~rkLyX-0&vXjQA#6EF)~tF z?Rj}FeV`YOGU~)%DIt%?1qL#^OtT#57YHQ(?$7Dt3;#X5l|1+$QM*TH+gp#hIpjzf zIrbJL%+V-=IY%Sk#kG_>=x2lg9ZU-1pw!-?A_ySD59wVPE!VW76ncM0bm>N_R%L5$ zT8lk>gtqQI*0^w{ApQkDJP{Zr;{M}Cz-e3?uDLTcIKcN5)LvJ38uT63bIG;u`S1Rm zyHfb?VM$NIV#Lt61F*QuY0Yay0xXsLxJqf67mS@9vH{~gil$J6sf!bSZ>6yEPA{|Q z7(NnQyPGIswKbYy%kniAyc}diZp7fV&Zf!`te){VA74}IDjBlcMQz7H&{%zl3Y8s# zaxxL_|23^06%xJLTF9|fMOqqSmpMTzMDSD)@mBkyaNxO2TK*99UJW8_8ED(`@WGVN z6n~AzjIHKhkO^n&Hh`_3CIlj&0udL244K+@OaDDg0knWus(6Z$13>kXOI<^Z?%e<= znS&%2yD@n1Po$EOHn8Qx+hqkSV-dHb#@lbdl0x{DaSGMA?DsrlE2|YHE+e>`SE)%n z(utAplA4z->HqO;2)l|$f=5$((;{o{VI`E%jPbR9Q6N`eunTH+U@ zP(ZUk_qezU658oov9tphT>EQ8bx43rU^Jve1+W^#gGZ&A3w?49sst4VY%z@Zl@=s= zDZM9$4lAw2^q7{s-;Mq&pf6=+= z-F1FmMBs&qaStl*iebYI0sxi&2GVdw_D{nPe>NT78mEh4$!Qs6xg#6bHdk^kFFs{u z%aynroWFISL2_NcCv$op=E}aq;yb4T|!MeECytAE9tPz8C?|7<`?Hnjuis zAwf~nIhl41VdbjqoVkedmr&b*`npqJ$s1&%1DqOw8@zpq@}D|o%ws7{T^#-4UP&w~ zH!DqkKGew&ZHoE*evYZu&-0eR=ipDRM!Ew@a13~<*035sc=-A6r%xr*l_+2LQ^OE! z!r_1a&ECUPX@mt%!|R>lR7?x;ugTykkcDYbyv_cJ@UGhulTer{!VbhaLZr$aIY>yf za}fDc=D4QPhJsb|!au7!=y~?eMsY-8OD-x_b?SUB*73#kKB7ksL98aN%yTc;D}tK} zEH7Q(gDb{5w8oM}MTJ%w40e}MiU~fknc^ayw+i)RGG9^L0Fl`Nt+I7-U!%O`(5T+v zL~*#bA6w1Wj=k2VsjDLCsVL1r?%J7>JAIB8HS9^4FLkB z!C*X^HQ`$z+{~(y`pUnO+JcP1AV^d&P`D-xNx=Jch$Q?-S>+k5T}H&f3rNyfHL#T@ zs;)3a-YN3IaR(V-u}%5^|2C{|Ly%GpX&t|AfgK44=aLmlP;Sdi47Y|b z6GEKS0ERX|>h7z5|JEE5xE4>Dg;-Uf{=GnE&<1B%6@z#7NfR>0#E)Y80OCQ3j`{cM zA3Wf~0se)#Z?J zS$hyr2%cv!5kiC(TuTv+xD>aVukd!8hEK2jY~@CUeHNp8wtiOXNNFqq^~Q}L@BO1=zr(C2)GDojz_OUpi~BM$dKvFB zKCUnWz&_;7@`r-*jFNU!dOM0M>UCvtG?!vs@hw5cG%tkKr_Dw&Lem+Qn!J2Oc!$5G zxDUbu)P)8$7F`blC^Xls&7xAFx6sW*x{cJ-1#1MrPNu?#$ZPlRWk;k5PbRJs%en#uPnQq*T>5YDl zb&vEo$4{Qr1|}IMsd(WNHquD-+_VR8!ujR_GEn6DVQ6Nb!uUcz0~mA!9-P`&!D-|N z%)&2XJK8>6e0eI41cZcu5ZpEsee(!R=1li*V zB6AxlB&P!0XdxF<8a^Nal|v;(uDkqx(Qsqqw^B-E)aeQ|`~YYDl07==F(VgW8#inkCC@Sv-Hf2Uv#`8dwVvKkav&NqKML*%?mxT^UlbrKv1f zvi`=wxt`rvKtXwerU%g|Pm>c2-Ya_w+}mJBaE_MJd&r-wLj9p8vPv{18gY=I28>w) z=^6kE;Uah~V?>}LMh~P1%L`yCNc{hb4h;~bWkG%eG}{~{vvyj+uk|)+yY`18}`R>jfr9n6c zu+v9njn(j0`*_rjYSBPmVvaabHGdPNSy&jDLr-Jb)r3!cPU^u2*$KW_eby=r6$s* zHq{tfl4!aHHj7K)a-eZNe)$@ya6#{M^wR#}+o>lo;-u5^zc|;j399M(HkGqoDbH3F`4BG%5hIEKC=`}^5`mCQ!oV90UeZ+ zbh&afDQ4tj&b`ri7D-~cm^5F|LiI1u*0f##-47?;64Yig-_W8B*?n_)@JI+z%}yv# z(l>}ofpeI2PunW`81n#7jK-K-DO7=x4yE-l#mAlIvS_^-saiBEYKohTn+=j_<`TnL znw>oLxM^Nwf!PMuoc+etR(lJ%05<2I9)B1XQsNOH@f*vA%4zv|KI#B#CrkIIjxEXs zc)Im=$`&q9t3x1JyaymD42y~~6=zsw4pI&6s8p#=1U&TVb1&eQ!IaOC#f;N1hA6^7 zM_r>cbKz(*oECVI8>s?7ekk9F7o=h<=g zoG~So%8~8R)vks_?FZf5(=NkjG%GSylw1VT|aR?rvRxxPt z4D%-o-3c2n+&}hy@_-shj;_&^mYj^dO#>c=QN=-U<_Req5o_mTZU|heGMLk`j}lH3 z46Ic}2w{yDRCbisZOcfjdJ5ecv4ggN<=sa(fJ+HVGTkB1#1~X=5tRGUm&{`zr{cqM zu+AdbwN$|(g`>?V$Uj;zlpef!LH;cx_Y_s zEHS}+L8%oao8`*UA5)Ube!9_XEaqgJS6hB?>CaQ}K*Ewg8tS7gE`S#+^9pd`&%FBp zTzxq2KH~$nsv6Wzm_dc_EevX<;m2ZHo|898u++4;mGBh?)n6Lh8-RyWl6_rNc(}Ae zti+KG%_Og0$o|(~BdlGi1-9<*HqW!eBQxVmw2+pi3}`Z#6VgG~s~C2x&syM)VwQGlI zCoDegUvj6^%GU-UDiQ($sl*W(98OCZP&$O1`5*ti1)gkyOkA)Qz#1F&OZ4X&{i!9V zH=DKrq+hxfCS|e%JPO7rTc&NbZ~ahfO8~xB&iPZ$zzGxVK)n|t2Q7)=1e>$yn6`VD zng}F@Tj}m)`6ufWrkm4iC#%lVx?8F=Zl37905dPy2TPdTf6vEx5zl=0O>31e5zSam z>^X>niCtf7h zNng|cRW{`!@y2uKClMd1SKtjC0o(S4xlOx6_;SggBFHR`4G%&JfX1>|AsRz(C>tA{ zK|o$+-1lEs>&k2f^M&v74!$O-2i*@vi-3H&uZ`MinJ^8v($SaFGPtuY@jMOA+Bcb< zij(&enySJof%o{8m3J<0v{NuxwdMUo<}1HTa8Bc9TGcJUZH<|9g_f$EMVA`$Cd5iQ zE;6B(k6Q+W zeM3+}nNZX+QXl-8M`zJCh$Y2vR~F^E$U9!IRSQ6g-KN#NFn&#Fy@5E{Y^fqc*Hx|Gn&JG_E*t*&!sb8<1;EV8J7%Xfc8b!-7-6cUP^ynvhp;H2uZJmCX^gPTKWv=^E`Hv+8`#toC!i$_}6S znZ576CT+j2*1xR#yEX20ukrSar9Hc6-C3QpW@^<<<*^i!kwBI zr{Srcj5P;aVq|EKd&b;KO(GxU-MN#%Vr~4j3D`U)nZcOiW9nB7N4VwM7Gt$Mx$3iM zf#Q01)d2$r@LI5{kb5ge-^M0^=9uESI|3EDQ49-ym$v1uBDn;}5(UE0kZ)tbodE?i z_$=XVg7sNK5M`o9KF{uzTEhBDi>e68Qahl4i-6CVe+3(?i2*Tf%#VWaKX@R5t|+@m-KVHzZRiPtT7SF(Ra(1Q0HF$dR%>_SeCH`Z zUt$YvMg)u9%gvbqEP&o?mQ(Y;Tc3=8Qoz=(_*k>guJGB+V3#>FTMu)U&^9qBrl@K^ zXebUd{-*>X`_fwTN--hx@^{{Ohu@m&=We_gzKo36ptIsdd)^a2j@f{jP%{$~6N`CH zs>JCfT=80Qh{%Go3%end%Q3oTpUsOY^=~q!4hCwdY@Cf!|8u{w(Z+d?!iN5{xVV<; zxYM?c6bOIq51OGhfRx}XCmmPbYGJI)lh5&+q@+St=`jDW+r0fq0{ zFnX`Tfovu;2-@F{K5r`Cp;Bv1(Sn8m`^{0KFs_H*pP!!}s~coF8i&C_d=Y-2Z;R*c z(1Wi^^9z7(+-dS`>P8Z~NkeFV%&3h;h=r!FOnivxA_juu%gYB$3xCXJpx z(iPb+8LKrXc3-eD)L%aO{>@=>JBD1f?6jMU8V$G`zd7M>$KXGULWd+ zi2K25et3psO}=)mJpngi@IE#iE7S}#?#_OOYN5<~y7lT6+H;efNX6tUR(J}r$RUaI zdsnWkdN=#(RSP9M^ggi~-g^$ZhkN(#)dj?IuUJy6UEO5={N|g(m?UYV$Hj{WA8KV2 zOem%T-MVz~WGDw2gHIXLbwg)A_lm|_K{-w<;)V)y(tOl7mY%Nu+d;Wi51%_%HGzTA zWO(nLC0=4~3AaGaD_*m15HsaN8R_b5irAl&^pZDbNBHvcb1PB2XluMyLa=8b6g`11 zvxG3(MidcIIw-gAscRGDo&)|0iurvM=&B6k5j$yaz*-bKEW?m<4o{uU>7K#%`aS-; zw6H;*mvoe+z<9L*5S>%%re1X%S+3E0F)|72U4#roerBsCf`EuQT82rLKpf9pl|D-2 zLIw|wn>CAh=0UT|9Q{Shz$#D}d1qK~p3lyf2N8|8PgI&8qOG=(%!@!0kO}IvnX8meQLX=j^5Z6c z9KVyL-937ElfQ*Y;D22yD7P^`7)tn1KvMwQ^QlzBpbC;9F&pv1cXNS0mW)vO$AGtt z{mmhXn15?&2AU@_-E*N3URb*)S6Ov9MadAW1#%fvGA*igYCcc&C>F_xdcksxfYebt zrR?N*e6f6a7sf78j7iqPmw=664dr}3zDorAL0%(T^4yGy zEUuRV+DSnlbUpS7)CyfTbmthzo0K|BZH#+GjZ_ftBw!YHkPgZr#0TxqyHQ;?#7?|X zh5ADq3PQ0KoX_-ITTbw|I|l2EG6=ATdZr%pm%aHn+v{ABh$!M^UkK)3s$%#|{ue66 zMDCInzhX#%>aZeic$RC6_!g%wOPHe=z%A-^Dnv#W*@P(mR}MvnhWe7CgINPQcPR>X zFgHt*pXr5XP-6tbQcF_3p z4gCH6`Mpx;FbG!3dKn&nIdX}uV|)z5anyY=+RL) z1t*XVG(?shhAzk(Ad$9*e1L3b*6i7yYr57$q-2-bg(e72TLPftXwCrtYs`(GS_s4e z08jxzv~w%WDDWnEaa0z$w{EpESMdgpgVe%wplY%3Hm&$yhnk4i%WWGBOCTeq#17Xp1Mj<4!zOp@L!7dW4~$w&7u>II3c#>_s*K{S_Og9R&DjOU^3I+Alz?BykZ_OdfBSP3a)@G!MDI{(6xabhaiTiW3bRmVtl-DEApe zkSA}uHL=h%@O|~1clMDKjTidSM;~ciDsvD8TIQCxUueX{ZI6a2X%t?Vs|>DNp7(z5 z{(WcDa-5gr89nNJBRqvwsl5{4e%nlAYn9o6Wm+Laa@UF@O;6ZCR?-`(9g=2fQ40{8 zW@Kd0IbaDPX^nRFp12AEHyE}{#MZWTt`e%29rc`Zq4JGQ?NSNfY`y-}m!+w_=-;WU zJTtzVT(0VDuY34cnFdFooLwG1b%W36byRMTWB}x>k33|XXY)x`cXTV!At|6 zWM8=8tf}`hLm3auWOf6+OG7t`oYqgqa6E90yU?^2oCab}OwUcwPwBHWuU$(Kae!pZlK&|u{?GU^SFP2eJ91%)KPn>v3%^z+32qy8e=%$*` z-YCXWou3`%Q!CIXXiz|JicSQu0?~FD4X{?5F;W!22QFSF;2!6MC;Pjy%yLhDTCaP8 zfR+{Yu-u_RpmmOtv3;1Or0qOu$`ttCxp(e(lU*T=&YClaQvNIdvswZmZ_Yey`e&Tz zKP7w~#ilrpL~+gJ^C3H2l|aIwy9|xC zGUvcjq#AL1&9-eAPY|~|^zL0jOA^8~%|!0BpC|KI6n$_l#S5S&)w**Zo5}+}9l9>Q zjI*iqb_{(ei7D=K=)$B~Z7hmAbTCcLwE|$tl2^Ge>U-scnx#|VR^s6}g)L>c7J;x3?0YK__q zNIUbMu2=xF22;wK;`c)l$`hYQZns3h#v-_)rIZ65oYm1|$HtI}#tnU3xx9|AB2p+i zy`bE>|6A`(IZXOUdKX59c@zwpb*cQ7e3){p$M4_2Kf?{Jk}2#n$T#%RC>G};$|F6C zrXduBeBGDA6g+zL$f${M)tGp_2D~g> z%BXjUqeI|2P!ybw9qm#)c%KJHx-zvi%?l|t@%ZtD;9p!!{77kvHf^d^81)YTbu!GN zd%_jlVaC3J+6_66b41Gybt3!9m9|jHFpt6&wcVQd^z>H>%b>v^uskY&X9xhZs$t|T zhv|8=ofsFK=k;TzE6dW{Tx_MF#D=y4pF-Hw^D9m4qZ$BpH^HzZ3}IEje*G@5M>I*6 zqcEjj#&>2_*A0X)-TuNtk>!HFu*UE#;2(*Pc!}a_vwJe*>{&5J;&wpkV*ss5E)QNSW3&N=C-S)DK7ZrJQNteR z$Pb76yjREtIQjp;g9cuRYeX?#`U3ZcQeq5AniG449)a910XFUDmb|-nFM)n>E@#Sy zl}xR~!_&;l$w?qUTBrRKKV=*pL!9!DiTw_ZtTaW;s}Q6E>oHpg@SF|dIVLT2bKgcB zp2UZfCQq(MI8;9g_Ddr{v)-Ap<-EevdGTVF&FTDsIzx63oLfN)VsrsEQOCf*awF~d z_z>K1CV?%Qcl)-iMDeppA2kfO9}#r;6Tuj05aUmrc$IS^Rut8FjHb+$0X7J-o)D_A z>IYnE-n_Y{2x0|cf~1TRO63R_$H+@fscD{{(P#5;YLs!^d-rb3P#j}=W=zO^J8$UD zl{1iHCK=RymX>=hZCKT+Rk;`XnqYO}nd)H6aF{Jeg$LU(ZEG3$4y48JDef%?9L^7o z6?{4U;smgofQb{=#gI?R-~>4s?v&1c0%AXXXgDbcq9{$ofFUjLp@BErKpza_?WHX^ z>#tpj2!EQlXrZ~}7A;v2WQx{9yG+3$4gu9!zUU_XJ_gE{5BcxHgQ_*-mK7^jX!LO6 zDrJ^@H-Oau2}8g>2Vq#ELpzeT8R0A)4CeNXv#i&QJ;BQ6Y z=fyqGn$MCL=A?V~?j=r9kF4svDP8r&JPrqZ{TLR|qM2oF1w9b=TN|IWF`V|r0_dnQ zE`&-|VYHk@UCCTNiANN`$F~Op$R-mjt>kx<%?Jfjf}VU@H~X4c|Mvx`t4wj)s?P zm$^%Aj}{HUAJJx#qN`a{FLVaD!)(6;+rzL9!?yHgI)6tFra~Qe;P=s@_>Aq_8xYdr z^2n0P`b((z_KC7cJ9pB09t*n!!yr!RsQdy54Gv|P-N-r~2QBbbfl57mq8+^Eaw zUoa>Dhi=S9vQ>(^4B;rf{`6m;N5D7^j45G5!eD0@cF%~HrC28*D?SKx)l6|SK!(G( z&7wu{NPnM1X2hR5wUl-NZi*bzNb^CtK2bV-lDE+lnoOqe!KkiZpQl}A&F3;)2%{A> zKYiHtGrbCBUm5y&Ol~T8UiM=*sAzYvdV*+e9YIr@ACjjBlw<*pVcPI0wV876JlJ~} zQs9$N*3nTIGRG(njp;TF^W>9--w9^}*>q8!Uonr&+Zn6au@8RzkoGPpH&)ab`M7{S zox=5y>5^^kI=+BxqG#cMZf|(cP4tXQT-&P6#;-`$*Q8>U_M^wr(d;A9|Q8edQ3*GrY}yo);ofKE@nkI~Q( zuW=WM=S0Kh9LbpUQQX@*fA$IDFbFW@%4nY%226^Mwq?$L_9eyHXjz+PN0&p z|2i1lCnB2spj-%P$FV48CD-YQt`AJu#T0k&+_{w;p6BHc9R{*oWhhNKrQlXj@#{bB zN#?*M@|eUa6lem^UR$rV!7TQhZ)9iik5T;E#$dTBF{zTASd;+aaNW8ZfWqKD(~{sR zlt+-+XLC8vdvE^Xzo?yyl#x_542H{KenPuUN4{Eo$Vjff@MPkLR)e9k(+5)=+kUEU zVK;O6GB=stH%g`g9GN%S420Hv@55jFs((E7K~a4;Zrt7L??LwMtnGw+#_#s*5$*jX z%w=iZk)JpVco0i*+7%%+$Q)X4?#U&hx-LibQUlKD&5U6N6+lt*7dI3O9L>cx_nh-* z{-RbEQmKJDh!&kP+@*2j~)QK?&==AZjQQi;cO=3S4KG&S?Wh1NXExQk>RDe73F zffa530%q2-;2BWxo3Lq+Bm`t%0Qh(5+BHapeeQZ~N%DcriWMmx+~oQ4%qd^q;PgYD zQRL>`tZ`xJ4+4~D;Kvs@I;y?_DU^WJ7BEm?UbK&Zh?Wao=FF7gt+oQt&@9J|gL)@- zI7c{V&@DwZ`Op7#4CSMe+0`H46gb51eeSvE+$2d-e1tE}5r~bA)o=xA=)pQffYR)p zK=NAIa}vG(b-5Z+#_`t_ZHE2e$d3uHhE|mg(4!%sGhP#w5n{}ub_sRf9I#hDE9kF| z7?CxUI97_<4*!)(+y^2$4CE-TqZ=#&5r;U;h(PO2${h$aN|%y zW%v)ACl_8QgC}SOhxx+%MWhH(e?^ADG;+W=FG&?N5qc5 zT8`;{b$;)spZ>*>@yrD=#-L7%TidVSNuC08@a!e%&qA>!UHk6Jc}~rt_)k0u?~uxb zzn1^-p=7+`13R#j2nn$UpL|(xd+mgv%v}QSMW!{>TO*J;8C>hCGb(!CTRwKo7%wWA zPLNEfe2c+V)~iP=g3Wp2AfRaNz!cvWYXnxh$)W&9!|zp|PwI{`=3?NZOM#tbR3{r4 z>^-zgO&%)6Dj>?gbaZ761QwDbAa-#CTn10cqbF%V8*P_4jgg&ir%oCne0#Q&5704M znT6<_S==UlCIp}aG?fR4EHI~0gS?o)GlQ|C9dO@&??C`$2I$LY$87)=Dz(m)^??PC zXjd@Y(SkNCFkGuwj~1Ib7VCTl2%P6ta-}6A(u0|~orVWuF)@cBsZrfG?ZeDfhXLK8 zbE}!TfRv*F0^fObZwQ~4Rrl}}O6vGgJJFhwq!{2ZUR??p1{JuCxr#Q;^J&%4G+jn# z3{94aNkv3ByvF;tRu&v4vj}8kl*zNnX7Cn`BwTY$6c>(YLC74{Or^)*6hY%7qFH5m z2%wSbxut(NPEw$2l0wMyUEmu_i2x`RP!KO^tHWR8rnL}Fzu$ZBIfN8TLaxMY1}m9V z6(0mBk?iQSC3ZU)QT3?&o;dJaF?mO7wx59ZLJ?kTIj9r9V@aVYKA36Xf-k<15|yrO z-fwqryvry9jGlsWK8|tlw8LZ(0nmc_0~q|}Fv80Mlwr)kxtoS7=cM^82gM#kvq1k{ z$GhNj$Y7eKUg!OAwmqQwC3CgRI5^_<#4u z5t#RbU<%(Z&OPE((%N`2nrY|Z@t3Nf+;*Vl)&khlrAy0@j=u)l1-7f?#M2ez-ewTt9(go71>I-M1jg8>7W|GG=2Z0TM zBI@<_i|ewyfZ4aqz49(Be0Lk#CwLML|Mee7gc$_V*bj?t(hn?DARH7&27Gy1_R$lqYz!0Pg)4d}KNpkJXb`>2NQa14}PsWd2LWvL5u;}B@MHsleg#6+RVt^^pZ zj7~lw2}5^bnd>aTd_=yr2kfmhapFXFFP%hK2cs7zMI@;h0FL*reSlKE={0aOm}p3G zpy@2)z$(xuh@G-H<)t%U603s}gLaiJXc!d`ze(&$rQT7aH;LRV425c-~f;f2w;ckhlsSW2jx4ORj{p?7S6vzP;xDN@O{ zksN)UX-2%i{dz5#lHf8Ynz6M!Hkko|UI(zCn(=RE>J%y*ic+p~xjOwjK*N;jI(~!% zn$|Hu=_Y#bzZ^>Tn2v0{bw$N`*oO-Bq2Vj;2)b#fb3)Zi!R*iD+_Uq#~Ip zXKpfIpb7Hq0f7(SCgGrJO~t&H)b&z{5^x+`=wTDIcvxce+?zM6kx*$=AX{k!C)*oj zscZp>#Di=ZUBFGKD$>tEjb;2JDI)y}ABXO;wWsHE>hC{jsCODn+Y9|v&cG0Iy0OP}L8|mJZ50J(m=-jT#-__0a(Nxj=z&fcC&qA)Lb>4<*`W()4<*={l%xd7e7= zbUPz$QEAwJOQKsvSxBh(0?pupl`G$66hc9PF|14&a&tWlXX;rhUG;Fa>oAO>_xVPgLns-5>fl~qI`H#C8nD(p0a z;T*RpeH3aXYWHwPG&F7b%Wwne%yVL6ls1X+n=p8!(VSb2N`aycmK@m@b_f(nPO6l~ zTd4m^^NRRQGKi%kl4&K7x!d#4KMza{IUmE791YG$1|_&8_um%7d;R)Zl+`?wNif*N zHs|EZ?hY0+G)hE}Fb3hDYuK5O1I_-Fl<)!S5tz%#1S-6Fh)F84$LWozui(GMCHrqjS0+9+B(3OVt!_CoVbL)%d)6g1%&ka476-A1EB7q&Vl`$&WdN(wlr-(3p1n9H8%If z+m1qgIJJdVYvEnP?X>I+b*GP;xQYxak)HY=3^*3kHETl>n*x%OW>dgGF>5zrLPNPt zFklbmf{DxYkbdelZ?GzedcB??d07#A!jf`8-}LOOC3jrmcetNi6~19_KP&_ZDT zn3X1)zC&VmgTi1CqFmb!W*9H~4+~2QrgE2Fy?po_{2+S9==Cgh7}S4K=8Hnv=;L*| z5$m6hHOS|NJUU>r0o@BU}%UumL1HPZmF9ZAZ~4^vi%&lASW zDr2Pnjqp4JaDs#n6pSJ%jDiugHRU1Qetj^D{?qOc;}g5R@y0&M2qS*R0#MvWNb0Kq zPRai|SZ&aV(=mhE&%{%7=ro*+_5&v?xo-!>kpj4vE zsOr~x-+!lcBsLhMn;~iuRwA!88V;FkI_38i$B~H|-<}!70;#3X5S<5dqI{(cA&VR5 zY4Jhazp5@+woC@h9C7WBVs^uxAnA{Rb$sN|1ZjCP;coUT0Rk@YK!aW>Qi?UjlHasd?P^lIesSE>(EK?>3 z1??D4JM&k?i(NQh?;{in%BGn^?(NKol!#BG$%rO> zen^65?N+m+i56b$)2$z@!SPe(@>5)N2hW>4&+%Ixkp z&ne?g1VFsOnOqB+{3hW4l9T`OKQGA%E&A??hjPYnKBxux z$yn)wvbh4vk~=AkMuuT}H@)9mKIZE)`)sbx7#Q^!i1(bSZdYd0XJwkHuVYG(D z7hnk+hz{_?V_!iv-TJL1E~bge_>k+Y;%>kbk@XPTpvQj>cJt{LThM`Yql6Ia^ z<1pTu97GRN$j{^sksPu}0?dKRRIaSb5b=yAc)-Sa43$&A8UMagH6I>p4(&YQ%Lu4S z;#`P-DM*KClJN!{3MvEEvtlKIUnVFtO4*GUY z&rMKNEGHi`Sgpo@W19LmgaNLqIps_k+m`|jh)<<1zP>aMI%c3?%WfjtuVyqI(@H;n ztAHF37o^JjTw-u7CNR=MzJx76<|RlP>K_wP&k%%T{WUrWdYq};e3cGiFWls!NMo!uN|mE(DD58VZGmhyTeNSibf6zJJTb|iwe9E+3x zL!I)g*t~xFCej(15(=|>Pe6E9bIupXn~ILXeha`KW@dElz^xp(e&39n4UH7y<;Y*K zh^5-8rUy-S06;B`5Qmuy(oeVt1P!23X=UIURcr>#L?!Gimoc05#moinVbb8`!;7lOE3wEGPGk6~^gx(Pdl7*1A4XkiJn*86%yuLg}gJN*~ zMZ!pj>Z~rg1<6&sCNLm4AXIu<5KDO=%hX836Ud#-A?MmxU#L}nL+e)nPUKV?>J@tK z2J##G?z?+(>jhN+p5%m4QG`;Ba%eZCk1~t~I1C4gzo-v@Y-p~@m?bILG=T>jGZv6Q zoUzO7&&{!DkpKz-AcrtP<;P;K2X@9!!nx`Kg7=&SK2>C_Z;IbzHk&_9AN9JMn~B@Q zchH!dfm$>NL_~bZ5?gT^b|v!-2I}P>;LbEZX(&LM=0UW}pYd!7mtYtg`3QbO5vxfh zAyadK)H1s<0~$iCT|kd7hjJtsZf;-cD4sHger!3$%WsE}pxxrB&mqjm~)kKMi7*%at#bEsqr$kDvi28u5*A*E2T zQ${VDLo^yZP*d7)N_aUv$uJh(&>(L` zi7W|oII{Ql^x{DQb-aCiT(BY2$}K{QTnqf&!8)i_%^_2$xwZlexbps?HqU2%%RdUI zI90zSb{lVxF+=XkKP<}dW9+~#7b#avZ!S_P z&|yROZ8S6hbuyRDjGy5v@m&g7k-@Ld*g#1{ix)9ezaMjx_IfoGmZNEj6FegM5kscal`-wEn(*11Y#=1VfUI2 zAyYcqe5-0Q=#eNA^8qdMkc!)qFuVOFfXaL|J^-L$7H|m-q2J>N|phU5_h39T`L1JSDbLTA(6 zK0y6t(2UdDMkZF7QUdlgM^g^8%xK#vRQIVr5hVSKt{b$92U8gmu0U$C5>j+XS4;Z6 zwN6ih|26UhWL<)Kb2Q& zg4b?yEOz(ngp40bj$E$I-%~J_c3aer7MzKA4MtInBb=5(Eg|sUxttaZ97r4wWu7`_ z_ZI|HEqig6YLX){j2?Q&N9R_crPvA^kwDOv?@#{lyys$b2qb5qCt(1@1AF#==XSlU zpL8)geH5%iOTy9zYS!#Eq$^JDyR0#XHkxTJtuy#0Kg}9!0Ni6R>UMMU&>>A}`#8#o z{>odFA>Z#FsS9jLe7gB`L8%!wkNS!KZW|17m;wK0`>{g^jKkEupG;ZS-g-vC0vKna zv;a#q0{$@q{@s_>bZrZo!@mRG+m3IrD_PgaJS~EEa}3BGyMUw6kXjF6ta6@`k-&9q zAke%NjyO0>yPxwaZF8uTyWIDf(J@9@w$QkNW~245!S*oqb%mdQ2Hhk@0dScwn1Z>_ zTd2Ne`wLBlxyI_9!dOvp7S0!L`%eZ!!;@$^(#H_Kl3P(Fm1H;YH&)U~O0l zTwFieK^|;_r5${K|G1z1U-c5$)1LI~R{%7CqnRDNB%skqE?>xE1m#qhY6U3371LB? zTi_<}L%ot0u&xu_3|7b*>SHZtr`%i4NHt9nwWtf>n(*Qk zQTvoa@tNkwHuQ=~#JKycVN>TfvXgBqtx+3b4_sNV10tPPg!8TLvJfYwKp3Uq&rnJh+C%Mb-|i$_#v zryV8aUdD`oCR>(UBD}H`RhMi-_hbG3-IrUY4Gyes0yS?lwwq0RsnfbJNjpOQnm~#= ziCrh21mk}G$7~r!QkEb8`+Lonb)zUL!Vw<_=hQKboB`84wElZ$%OFdi6>Kb_?}Evd zQk-&iH4^MQtGm}!)Ol+OV%yoN+u-^uRo~))qpXQdV+QKmu3fZhUE%&KKl!zSCDywZ zpYi?D%Wy|k;QDK;+SxYVmAJUvL*@G^@+xCo&>(Q&% zt)Dk-*@kO&#i=k~D2vsI%R9g4rZu|RGzgX}!92GDWN+1+cUu;nk2PI!*U~y)z{nNT zejB;0ukBM&;)Hu(x*NwQqr&78uGvcGq?NUT=Zz4yu;>YC!@Wp{83h1<0Oe6k(+_Gs z#B-pJqHpSv-iCu38&0t+7#OV>Xi`Ate?UiV(K<(BB;&BBGXh zU~E=^Q*v1?FMlWqTvz_Ffo+xye7V|0vm|O!Zq%g+sw^I{R?Vn=r}_+e@Ht-2*s@_K z<0?)uoKXrAP7H)GJg;v0STLLVqyFIr%VDnZgpL|PmnmtR4c#LbE%L@29%h<+0emQ) zotWr>4f60yg*-Ti3=$pO3mU#g5(aPKnkXQ>E3>2&fUe z9thq{o6g{>-I_?cGaBW4F_z@1OAJuUqEH6(&+NU=mk;Ia)~9LhsP#!+HJ@n&|tI$sJ*egl0 zWn$5c$*U$f^tx?aQ5NZGF{uoF`-juo7{m98Xi9ne*?*Pu20uZ z>1b&G5;Y8D#`dB)&5V)r2HQZt_a52XZ9>gl%DKB&OP)M>ZF70r=GpeP)uPbW?|dH)^#hgC%Edwn6l6 zV&pJ}tEwdv5?+q|7hnBAAP49o$;|ZTe(vNc{GMnym>&{FN9J0>!#$T5?d)Wp^F#=t zX{m}o60ENIl~@Z4UEz_NC=Xe8uLZ=xQX{ z_uu>PX@?yMXi>(zeAO@v|l_4vIEBBYwIC^J4>{M6;jgEkIhTM^PsU%KoLtp zVO-%BcyH)_lg4XwBW7EMOVcv3lh8cMV2Dy#HIDt}K060~rfv*Ae8+MvH6sO_<}-UG z<1aPK6_)@q7b!20ka21XU@@ zf}HT+_1JR4TA}<6rbb0LLE5SDB`UBRdmof)%Z-!+IB`dz`3&cDH=C78Up$2^AyQmlVHB%zVbrBy~LJ&?XaeV zvRaMj5CsxviccXYl~00Z>UZYrHyho|%{@>0s!o~&A{dRpOq(P@;{Z~l-ykktVEs@w zj~<^R7t=1KIS9ccJNNI;Iws5W-2c%|49>Oeo|)Y&h&Dk1F|ax{N>|rKp`5~SO54H! zOu_%h{c>_aUr~{9fZQ=ET^?t=#h}!a2+M;k6+R6jP$H0x`^9lh#UIqtc=@}{Z_c7S z362N{$C<(SuZ0B!Z&NmxJSK;b&-uYv{y8R5O6^{1Auhw#lKD(Hfb$#kl zhEqv0*!IW*#AJwovxECRJ^c>V_1)n%x-3cF-Hn17o85K8P--0aUx|JV7>JYF{eI!z0by!|iI}L&O8pM!jFEUoe)Fz0;No8E z+Pe3|eVyo9hIr|JA)qnG1Y|#LAOlNZ;-^d!q42r)36F-kLe0?ky8i z3Sj32$vHe{-Zx#ak69F!7@z|S@`RxCbE?ZBu+GKog3dU$22DN8Y+s5&cIrR@1bgG8 zXo^FuA6*Nwh%Xb%4&buz7lc(XoK@dd@%{9TuP`z26*Yrt91}v02H#;kX6#%d4)6EZ zw5*r7P#5AI2z0!bRY4lq-1GQn2xOp|BI6)@$n%TL#$b)x0P#DA{--qnd~0GMbXoeR zOmaD!UK|~f62+E9(gx`ie>T|KXo}D?9D(L5@seL>z9wl zIk<4hpb2p`n7yuI$*CC?=UPfB7PE%sJ3zW8* z;1(Caedt0Z3eDKvKya^9Mg`D~IF-Pn+tZEAfYgrT$iY3hqDGK-Kz(SYqcq8ZDh-7l zSs*32QHVyuLV)+1T=w1Oo<(7M?%V@}?Gsn;a~!Xn-0H%epb#8JeMZ!}i9IA=ypp6} z^3YYxKDW08u7l3lQQ6}QMJu538bFGybzyeWX{Tu;bX&sTB*xbjP%?p^8Wx=4EEd^D zU>9Q;piL=)L8}H!Xorq-5Vbv+C^?@ghv?0lU5u?+?F|fs z_GvDyQZ1*WCQUFWcqZjIfsy!6C$+R{aw4Qx=hi1Fz6XmuGt+WTI@2qUtyP zO`bNP+4Gcg_=`g*Bw1oUVFf$)ASou75r3OLLIEszf$;7jSWR|Dg{0i zF>PTXki>G6U`7vt_Ckm8@@y8HgDqTS*~od034HoIO@kID&Hooa-YdEK!X)swV#H7Q zDh3Q8M^*mRlR#VYtLh6EU=+*TMS~D_VbS^PslTIrqm9ok(SwGt)84feVarx>35+#C2EQOdc5sgM3-`rUjTLzR!f5emU z^c&dlbMf|Ib`2&zsfcF=I7F;?BD2S_|Ha(9!1a9h|Nqyuwe7=(kHeg$lrwY6Vvdz+ zvCxD$pF(VFDUvgZ97g0~bDV@)<~&ntL`gY>G#92u&XJVEgz&#VKA$4nuJ8By-ERNe z@AmuMZrAO%??!z-@AvEVJUpI{$K$zuNGG5=d@p3L!1YwRgHS%^2gs6KQycjufM#4b zcM269yqiPUfNJ7|jhbu~D2P$N_*}zYKn6@BxrFFz=fmd7g9v*1Gp++q_~Ykv*s?-q zj6gGNa2z4jrQWjg%vV4CexpNCbx^Vj*jw@a_nmc_wB3!vwi5tV#k>{Q#*3N*;mu5{ zt5u}f-Ow|9#`BnLNx$uuL(ZMed=?6c`T86t>2wFZ;i^do4Roh~`LScV!dhK&?3y8A5gEjl1Pa&*)+@1x0N2%66r#r1ZT+`@V#dv$|at=#zp{NXhu{R z6U^k7$B|=o)kyeYvRZJ+%5 zjko{e2+##rMuNGF6KF$40RlN!e-58))#=UdHEcE6j*-s+Kkn)%SWrukc=43E(yt1q zUSIz9ql2lqKTI?*FFu=HWpLoE8f$UWM~jk~Q7B|8h2xiF9>lCg++PLXiLl+hUFb8ZgH>T- zNfnd!X1VqUNMgsOZ0**~=EDyw69A?+HqS^(6gv3W3ND4^xC8`wo~z}g;KMp{tc8CG zs1#xN|3cAhV+f;GMO%DgEAM;%Gj&l4PVwOYZl7xd8>v+r$ZV)6+#EFt7i|ZjDSxrTW26c3sq%Edx5HD5ezm~HM zV01N%-c}+&V!}A>S!R|}JN#NK%Ypgk;BWpIdVDl7_c*(0lPEYu9gD5VF*T9U=vud* zT}B=15|Kr9;wjI_;1xG0!f6i`3FR)t9a0a(@1h;=zh|s7je!*IqW`!QDLO^bpfwp6 z!L!1eykXRwW~<7wA#GOsM;ZRV;3^_8cr$8fd4+%5VuZ1OW#|f|1m=&|$x}%*_!O7e6(6Q| zh^YwL=0y%DyglT_Wu6QlG@n&go_Wls*_I*cheg(j7`QY5+jHsB#UTf*fqht(Bk3C6 z^VB)c3-{p)*ok@|q~5bHN+V~+YIw0cSc@#$lB-lr*XUL^QsREhki~x4D~wTE0*)?T z4hF|wnDU&!mJpdYJ&KB2-KM~7Yjp(@Kbl)%&qm}%Z3l*euIY*dZ8Cjpusg4*G6)0ck| zUAhack}N*RvzrCBQLn4wS8x({{%znVtvTfqqSu?p{q&cMzJ#clXZWJwraAUS1+E$sa#IySPSEMq=S3m30WL(#pf1nN8)YaROC> z4Ei;%31bj-p8>iSBMZpC7Vz8NuR;%*UfOD_6aVBe2{w_=x5{D~Z4mqe2f0ATfF6RGP76q08LYnn`zLbkUE&CIZIbsEOt!<2}@c>j|0e*E&n3Mwk? zS7bb{{T~uPDNsbD!QDzAg#t3lnpjrS2t;JbNe+gYcx4n?`=u1K|8(%qK@kLy#({F7 z2Lo1$;J0aam2w3C*aC7aCmX^-#(aqF2zx}IV0yZ5u%KoWiR+91a)5h}h-CGc@Yi(& z=g4{cSsV)Hdcn+-z}-PsQJCB!EV0gJSpYy~6EIcv{92=hP(e$hdH?rbj4t;)V#5y= zlS1Qb&zWT08SsgHgZKOI+4uR##hrfc6V_@`i?Vgzo3*N6`5*3-+T8!0uMhq-a@2#X zdz#Gn*IQeAPHgPcX!h|2rJsLWwMxdPN1Bel@cy1)_d)L#HY)vLqk^d??4urw`sf{aMd_Pi}2dmS9N2)~i^pdiUg5*AFuKp_dR*{qfW&tth0tK1!aA+O};o zhFHSOfKTMl zW_!zWSgy+6f;LUIjoa$MM7>ye-M%oZ+zhe1O}ai^tN89!gYqiIA+ee9^uk37Mk)Hx zbX6rQ5qo4%!L^hDlg0q;^AA=6ESQ_HGue^_>Ma@c$}pL2$4`IZ zX-09LE{+EBLcp_O6^&)ksm!K(GZK&hc4xC4>b%~Ztc#;H;p#YT6);ysf7Cx9Awb}h zC&Tj7jg-W~#C7~R?%Ik0fxICCDrB69qm(`&G0*6S?nvjKaI$jMB#sPA+SpAGYpLuS_P{$61d81*4{}5+cC(fOXWX(23F(G z)R}Ik&D4VC(NNzCr*~2?)?;Mjhztl+AZW`{x*(ph;710>6r%CB9j1K9u^vu9Q{@jv zv79BdJz%v8_MyHe9HsYVMsNn)r7b_5#O)@A5wP&j~_o?HJ|!nLP-JW zw-AG9s7LZS5F$I4bxE``EFZd=%^ogANd+gBnGQV%0kAVjlT9saV5EEHGBmSxcdy^# zr?$mh0C%bdUzF|)zmKX41wJb12nuBbr)~W`9W|sr6yZ{XP$7|iz|Xi1 zQMvmb4Q3dtMNcFG@H;=4CDY;Y>>i)}DR{F!u{M>$@*tPVZz6x1?ys!Pd64HR9I#I@ zIQHlsS#de%zBl87^Iwd@qo(9F5F8{EmY`GV{H0PXmR9Rd6#*n4TLBuuL=DXOPXa%e zfIR+-FAn;ig6R1O%PBv%2#=&9lN#=5(P@4v_65vZ75Sd3#<2_B(|TIfVKR1f_rF`oB@=?nnH%!#R$svXJQBbvuAd(V11d3D2T>pHc8jfoD^;%Shg~5h z0Ao2VUmPEK_O@JyOb#_>oLuA6{eH0nqu@Us=NF<)F$8t>s03fu13GFRjF38R6|7C4 zSFf4^6(9c~pm~PtH{DTCM-Od2@77;$#u}Rme!(wQQzR=*B6XCc1AJC4zmOd;i<=kYJIS+F7bKI~ zLv>qj%$2eq4B7wng*zfh-Nl{9jR@N8m%KN?N`yO^z-3d8aH$$}%2nQ$%uDX>hA^(G z6sk&xOz`TW1>kzJQ1TyxBhwgM+Vsuf%R~j2hoCm{z5|%ecBdcxQ;x{$ikgRqm&ECX z4WpWqif0?s$nf8I5Afa`Zl==A+&uAGN*Jrj6P968f-CK@h@hxmmfsAOyk%&Jw)uuf z^7~G$MUC!JiDP3*4;kZA*v_Ql}=++&7D#uAVwX` z((BLxp_K_jkRz~FR3&Ft|~10Qej`)Dn^G7D?Aqok=$}uWexER} z)ps=b=1?D5Wvtr0*vAw$kl!1u@&Wsr`xqS zay#&jxji$@C%OKkmq%M&5b)%$X!a-Zy>7`)b`$7jUBa>&(@9 zjuFmXtl5fDR7clEFWSOj3FGpo{PtV?+!cy-$Rb#l(uZPo<2|FD~Frg zSgx^z)yTfM=e7vuKWy{j@@kwAnw&_3BMbLy<3A#a85}3#-WTPw|M4h(e^>R4Z}G?3 zLo-i$dGgWyPA~3v8vhMCNT61eq~v2ZI7c&ptHzQiNsm4G^uH4r@6(kCO5;t)JxZO) z`*>WilH-_^GaB3)*~%KM4?gv~qQAHwN|)ku`{xB$qOjIA9UkH2-wh_fzC&9*0yP+2 z{X1vCFmEo}(BQ!tZf<^Hd#xN7+cz|M_J#&gG-5(K|cbPo+WA?#6F&=FVbV?o9oT&$*J?a0gQp>R+)*2s4bT#PJEfy?R4~@c{wSHTU4ADCDGh z%Pw8E--6#*kdcl7bG=fqA>y||Mmr!W*g4hJA2&B$&nl)m$W9+ z(y`sVd9(BTRjMQ}#~67QW#Q@Heme@4_9!HF#Bs_HY zsPs|0cG64;{*O{6O@@fQ^V5Z!sRWjuR0`wj+FzVX&iFy>_=0ECK_LzjHRgqej^?kF zeCkUm&o;mqz4BDlKYg`nt?3EqMP(MrTXpQ9UZn5y(RwY?0Mf6MmS_Js;k^SR1`W6&Rui*ry9Sk9SxKlAS6is4-Ar z_!Qb?Wt?2v;tfsj#R_8~+e9S|k4pTIg6%J!H1iz1{Tm8>xlj`Dzis__WuLv0Yi_%` zd9@GZG%G^~%2l<`Q#;n)`}^d^)&jC9(a5``Z%xmyJ$ee&+U#gNlgit_HK@Hv{|4&? z8;0)buh!iBLsbAD1F$jQ3&bB^AHDksVlLrnGmX)58sGksi8%DE^cFK`uJyRMOxYmr zV&I@DD+n{}dC~q=?J&dOoQeZRCDEthaY(k4mhgk4zueT1*R>q->U1d2)*XXGO*6Hc_ladAs#$xpAykey3w@tunO3*qc zhw8f70Z~*=$lw*T-b?o%t5^0|nL3I$8BNNSb9(w}5~wFT=r27jOrBBr4oA_!_;at< zpHf82)v1u#JPDy!Xw)~`Q`|(=`{dgLO1j#8Wfk0DK@id?!l^mO>bK~zc6y#)t|R+Y zr4;WWU{aoR(XvzQ8)loO$SQ<=NMkb1o7_=`%LF_gxNu)jK*mdvQl3#5a#!R+2wg>X zXC`9iI#ojm9XkVCa6UBwAP#tVdLE*dldS+}hbyH(IuF6|HNRM#wdynYB%Uyno?{hk z@y0)a&2f?x@KUp_pGChFr5JCFfD$1u6>ODeoxKfOT_RwckByCCT5nKsg5aP*gAjOQ zBiT8H`e|nJmGFp&*}UTl=pS7v$f@i=jC8TsRcH~uy^^yvfCBnjPlWV!`Nt(Sd}96? zn(XB2`VPgkE&SHSL{tLktEg^p9MW)sBj_*>A?n}T26f{ft@**4H9!b$h493Y8i?D( zl)?|aBh7VGbacYd=2nJjxTd)vw`X2ElKH;I!)FIg4DXM%E+-ar+aV209yQj&qC^-LJAb!@WRZDC~SPWI%!fyJ|Fh-dy1?+#H zXEktPXRDczpEhlpQ-57x5CARv>320@QwWS19=Td(6|<9(W!7k|tYg(qJiHdipJ{XFj-zTUTO{p)4IPgpE0ZTZ2WosHY(Y-qr2 z8CKZWf;ITZ^-oT|DD1(Lg!3t2&WhZ`n>n3HeklOH^uT}JBCCIcKR?=NP3J(kP?a+-Ge_GQ-PF1P%P{U^HpN39j;%n01qt}2l=7(bR&O#AbSr{A zTiwsf0o_!PQMw5t_~rSN+dvnx0Tz2L{%Pi2ZM80imA#UbFbeu0ggU@mC5w%|eM68C zfa?jpwl*4u+Nn&SZN2<(^3stjb73>NP^)yHG`;k2GOh`lrZH=ly2A|mxf-`^CMuwM z`T6Ic!C`(Or#^TfMgHmwK5=E@FNVU}0x?C}Z0lABsf9yKb$Ye_TcL(TFcGN(-nmZl z{>lCn*jXjRw5^tE+8FvqG$@Uqgbq6GHdi-2T}IYlaZW8m-$CY6veunxHPGGMEZ|%T zQoz-?wk=S2VduLR*rRjOFB;*5H-d z-$NSijY>s1pWJFJItw|u=6b}*DUh^TJfskCq? zcvOliYAKx)fFmf1?6?s~MT1DJZ%{f@Xf#h_H^h0z>5q>MX^CJcH~z(R{m&=p_?zr5T|P-iX7hY8FtuOu#AK6qWph!S%0hP0+mh}m9-TP%(QCfgV~G%R^eky~(1 z%azA~;o@CaObjwI(EPYAhYDi#V52EY5Kuia`C-^YwC!{V^pGx?Nsg>3;4>5#4;{#y z!&^@z?eRWc#Nnq=}tgI%c}3eoGbq~7h#|F6+ncJFjb!l?phc#@zvS&)adCy zoZM7U`PeX(y3|eUwBv4dD(H#Lv6h-?25}TfRezGSEKahB>kd?pABb!&fIR-`^<)J6c46^yVI*`Wa z`v9kEzaC`a_~gopoC@e1wrc|E>2%9cWks>88B70-4DR7JGSU-G)Edpg_4pT0<2{lN z9pVnmwTglpK(8aeUfrs+w1YsKOGd5~m;!*|)}zM_CijFXKmiIe+pCNLos2IFJYHhQ z@5+(4LJ6_6lCMZ{3`lY1;bg#s%J4R5m23>we+>zbThIyTJ$+_I57Z8s+>ec~g;=VV+e1OAdq3an)TCaS_)5N@P7@%5APSacPn=yp zmEOy3;1)q;-^3Tbbp}=H&23moV21>kamK79GnQ`wT}^aan@-rOSVozvcSbgN6q!4y_nTe+)AM0H$Hs4VCxA~M?>3C-Q$UO;w3U04Wf305@4mj+lFwh+TIK9 zOc7)W??*}hw$nWyn~ z0Flre?X%@tBuoEZbync2bZa9ZEEs||G%!C)!%7CaVYd0bP+LU&^iyT92^^V`(a8PK zH_P!=QVAAalC#+m2K?GrO+Su@>nX3_u?+l&gZJm3CwjHqNr&Vqs9hFZkHdj-7B|8l zbqQ!Ot?j}KcU(rcTuJywNIIZb0Wd*^^Q=l%DBoZ4o0J*Lh2~N(>%zCo9I3PN*E_0EsTcHsM z%(XRGn1XH!g(K*Hl=<$zB0CJJ8sz)FY{QWcsOMPi^D~n4LsUc_;OSH;=H`AJZla#N zwTL(X*_1tm}@huktlf|F6SX=Vup7u(37Q)|uLd(RHYzCKyma*i<0#^6JTUsjPC z@CJf^7+>a`IZGIv%dZ*k)UGD?N0@sd(41kAlPHS*bhfO84pYQ1?Y!43287NW(?kr) z{pEglofwz}*xYZ9<5TgJ&>I(4@`=0iApsRSfVk9<3Mzsx&4G3cr9b-vWH;N-${(-O zTU=m12jn`fl>tq+G5{e#klw+ua?~#|cc~&YZDok!0dVg5Kc5t%fGZFvBzj#|jNI0{ zXoecSd-pQh+sgrQ9%%acoV%LX47~U<&O3t1Xlan#k9Hm3vw-o+`|rK&u@=!XNgG_* zqwU)6ucTg(L@H6FhGaCpm=#%*6M z*uX|?C;0T4n>KHzErrv3slTSTOBnPJH3x=;Nso-&`r&mbYifz;iAk|he0r(`t0G^V3|g#GXnjID2j0~#c|(=mZ^YH zJeu|2-?ME0Ed&lq_7daKZr!AK(PB}ZEtW{GA*&OaOPnblkQj5U;&B}@LK;@^7IeS! zn;a|rOufmz!JP5X4u4cF@%%VzJW$GSA<}5Zqgh7uog?t=^!V=}5m#Vcgzq#H-qw}J z6^)vO!G9t}M5(uDQ{mFU>)9#jQO(_ewsr_V_JJ48oX_(R2w)7cIJy#EYo@2V;`0`8B|QOoDUDF& z%_pq2CQX4czkZC=ILO)okb$K=+Ol1I(fpe-H4BQywwvfe#SUB+WzOafD@K;c#0kVR z4fq%_M6lioqpVkFISBx~=N(LIxM|!A+)KL@PncdJL$rfHMcN&{cyU>tZ!{c;ZO+Vv zSDuo5OXLz}}~EKNIzf?;}TMx#!~ziFbm6F}gJ zOf1HX9Sf=n4%m&yIBhxQi&P^Tm*xI^`vZ6!J&AfHj;my=fNkcz8(27vV15mZPED=- zoJb_d`Ck1tZ)XxWi4oOfb~7FsG%?eev81Yvb#0bUctDo@c(Y!y2V5wi+XbG9_|f!7pm6*B%h6%G`ZTJDk_Ah ziSMst^Qs&7?fbhFZYmTZBH6luXmJ6Vm@;KCXQY7(wSbK^XEL6Dd$zg38N9s;U!^$4 zAZd=qx`n~&65CR4VX}{|`W}^65I{GT_5Ra*HFju0_dt^5sPXJy&TVNYs<2YiL%80hfF+)P=EBIZ64v=7uy66wRFi`=7co}Pr4h1`3 zVeUYY_%mC%Rfxt9o+Ah|$9x3o!Ffnlg`d4lT#Cfzr_>u=d6?}|wxBhy%J4}a0WUA( z^dE{MD$=SjTmGorf8R&r2)7iNrmR$e%qh%07a{n8$Z_H~vT9-T_urTLYp?O&eD(jI zeu^`7Id%JbR^b3>c*33|HI=BfK|Dq?Mdjjn0(SrTq;A~44ihxKG9y#xy2o0YpPr6b zQSswJH>5Szwr){yz}OSQ<1Wfh?Jdbd(;h;qhEC_m%(M}8YGC`~I<*MGS5`B}mE~Bc zgDGFXUKFOUNQ`CX5})Lq($M#6LgJ2BlTh7qoy@F&n&QIo8F{N8k*trQ-3ZWR9v}GlVrt z^Z%1SsQFlxAya4Bx&ida5_ux1nJC559WY5FUYg-oG;7%=w?yDKt-dbqf`fX(Yv|VP zT^7lIcQOQbmN+^R=n=HO>;)uaOPY2iA4GVX`~rKiTaxaPdd`HQyBNV)iUt#=`#io% z#fnbmnHUeBu_r=I-VBJ!Sb{J>?82m=VovNC`qFGuu#|NW_(bNPFZYH9aHXCMXa6(^ z3of)&Vf4FgFPoqjWri6X%PrUdgg&bg@kNTX zbilm^Y>Y%{5+&xjk`{_sC@^Zm%>}B$#l-lhwd^y;R}9MAerfzi9W(HAF!we_j#DjE31~*)g@Kv(*8d)8#t{ zM;PO6;KY4$C=9dZ-c!N8I=3->XnC0aiMCD5f6VMc;}ZL#BPp36Eq}=)8LRD)&v6_A zW$R*UQK%KLB7lfx?dg3*tUl+uzzHaF8J*;I2<7E#uz`(-*TbrhY8c!eeM*vsP?vkI71BWXH4jurZ@ zqJHVFfz+K(UAmzPIgSCO#O;FT$&zp|C_M`hBrk+I0b#?@_B|kk})>sBjOe{%!s*ufX$@cf(Bd3jk?#KDZ!uRAOh*~4SDl`b>CZ2*(W&-bJ z%W+1`7MyDYaiJ*DOcuQb>B+Y>zvk~x%d5W*XjQfMso9pb#M&=DJ)WgL zJ*XNPMVjx%t|tDi0sLIUZ2$BqMOg2vPswc|2B;iV)t}|-+nV_p!y$dL-zVLuCFU*L z_5SmhpT7mnKKaIdYd5xm9B*~fH#eiL_CEgS=X!Z8Y0-hV6lQCdhrMX3s1|06aQ_(M zHcbp=REAifXaz2lgV3>5*M+$g<43^C<3a6U8$6$l(ivjwx$Cr3x^=GlC>dQpiOZw%gF z9jKjkh}Y2r2^)GKLawxx=Aqkbp{lxDn9<@4f_9J#ITZZIuj1cYk5q2=VYU?Q+=7Vh z=KEq6g_ze{n9JO$wM{=2Y7$>!``KgMubW#i(}90w9$#p)m#sYNwz+V899rXIAsr#* z3BB*8?c5g=<(^icI1bO>vedQ|kNv-R05PWTBzn$^bZ5vPfqh4W;Jlc!$upU=5-4j)4%%8d2hC{ndX>!5>cKN3MNZ|aks`wT_ z3pptE*?Tqy3l^l}+Bi;Rmd1AhCol($2|gRuJhTj)@f>1SOE2eEfdMHmX;mYZXS6fF zN$TL@H#v%LPEo`_RPP&a6H2m*@M@<|@5n^53!8KI^v}k-Bgoetn(ZhuokVER92e^C zME>x@dl-kA5SD5s-s5TzMu0ar#8xsN`0xKD@?44xEORvh;>DUz??gFxvtvhu43I%= zI@2nVCeA^8A};|!Fo=;;rLR3QdM052cGOdLy-5rK=9fs}UGgPXsg_`~6(zh32_O*Q zr?2g=M5j0@g}K?xZ(MO_z(g7;>#PCN2?b!f2m^x66TvUy`DoV6OBoR1j^=(XH+S)w zvG_ZAn7Vch_j|#S9;o$iz`w!Z6!1UzYIe)9?(%AhS9Aq@+#y#35u@F;;TzF=_TTH{u0uLvPk*d7%sn%)jXPvoyVvgj z?eDHz+P=M)A#@{&Rn-AlE04&9G0I3zFFvWm&&JP~!QABJT4gx0&YCrArv%AU=OS&lyLUuEJ=8rYLBq7amXYFNfoShpb#OI57|~ zlq@lDK6SPk))aCCy27`viFD2j3DV0)!=uStP{ z5SIV$T$n6Qu>0fwifxABns=i)jh?+R0P|Mg#YZI(ST3%q?x*1bmjf^`cjpWdH!Bcy?Vzt;m00p2l3_@Dazf-bX*(TI>zJ}U3krQi z5(FHQ3&Dybi3Psad{Zz0r`Wj?u*}z)KVa{Z(bn=M&Ygi9IJy^oSC9j;KaW zb&znLF5SL;j7gX@A3*9-Q^N}#2VMd~F?aXwRsrzdG#25LK>T&FaSQtvW&|G2gyic8 zFfPNRIkyiPb>Y*CFRnYVH2`%}7C#h^HQ#^$7h{eDUQDmVI)yJNrgu&A?Z>=R7Vf5c zWi^c0T}-S9$+(dX1;eomA;e>{kINAsjE!XrIRiWiZFa)*@^E_kvg=&*HXnV&qOAEW zx##U+6;1^~b0&?gyx{p4|J5Jb%n}v(2XG^R?#x%*o`JN}_nw%YQ05HfVcTi_5qF4E zL90MbS!opdLRSBRf+Rq)l_gCoz1S>b4TKpO_132Ssw?4);le{VuiL?JyR$zP3C#+2 zH`+kVDmmijCT5*XpQIKbTAJ=?M1&22Kr53C6R`)ThOR?f4A#1lwl-4Z_L#@cNTF^8T;AY!o!lzjLMM1 zE04mg#1I*xaFr7XjK03UmmGM9db`+AF*P`G;)KC50!R^y&rk4Y1JUNJYG-R%On{*| zF0#tl^0)t)3+x!qm4tv+8_x=u^(~;o>cY*Q{bnk&%l9n88&U^KgR2!Ez@I$hCD&I0 zTm_w~#L!8Yr99tg$I;$??2joETKid6cJvc(L(3h>X=)M21>p_G_G1=pO0}jUQ(S+?@OnO*s4<)Ef&c_D6JOsRdxje}a&00l7y zS6ur!02yQVT+Ye)+N!V`l!AV^H9+U(eM215yG-~_YY=5efuEd_)wVp!puExAR|D9h z0LYY3WDmR$|A&7sV=YW6RNUq-m{Pu&3jniMYxLxB`5%A3_No2Nht&zBj1>QkS``Ya zm0`wQFp%9?TA;O|LEc0OM;Nrx<4%a+{GXD+2I~&_mlY9>-J!=Yw8N)*`}St`_)}e; zQ)TcahQdP6=q2*_^5B_3PKKS+gcZrc83fW96SsPbA8td=%ud(u@>_4KG&- zMQPUM%lN)7;HGkWWYNR7WK)9-&B$-zo7#T#5&J%rN}xy9XSxa-L_kgd{&1=K;Uf>! zsC@~R9VRzN`$M_ZoB*JurC8h$brN}L+SpiF%_Y<_6%d?_zp}Wdd@`*$?38HU5~KB` zMx#l5u0neOUoSD=u6pJv3z+4L?VJ3nx>|uEoGL)o;`_f>A-+ysE7C~S|r3z zV+GAH%$sD`1<#mml5G$3r zn4dJBp)a5GeBL3Nq%7H>0>aZHYq=y}wtVo4>*O7bFhn^ok}3+zcXf5;Jx~|zFTB@H zo}pYF*~-&TdFhD*tMTD|p`HFG81LaP_ zJ{D_#J@5gni4c@Q;(`fKK6rDR3AZX?iBOjsbAa3diK5pSOVnrKE+(n|;6>QY$~77C zJHLe_0WEhanOI^;8E#P?_F&7Mj1P_df1@^+H6t2h2P4S`_KCcTt%KrL@ZhvR zM;aj^x-@N^KRR$tMS#{sM?>F;U0EtaQtY~}U%&3cg%Fn!_Lx{x2>3Osv- zG!a~}(e&X|&Za=~l=6IfEagDhypV|6BC%( z{7mAIR+qP|^rvc)W zLmw>PIMRd9AK!k?Ri2N@+x2h5Zb+qX(R0vwJDlubK;IW^2^5)(snK zsqAxaY6bc(3a13dcn9O3KWw%tVfaoXD`Pl!97(VoD}%c>?+hF`kbO1Kr>cUKaPvD% ze!!>y4L%*|Q*2&Jd^&DmXs$Ua%#Dl6zF%fT)SwcD@#VGn1qKus>%p(RdUy;T+?}Y0 zf*3VG7_}fZHi!@pax!M|6p#qx=h2YRce!Dd0Z0N&W)WU@5vpiPXTh{$N%BGE=OeVJ z>6iJJllaKkAUkq{062(^MK2C7tSgrK z>yh&k^=chM(`~s%?)fiVOtO}PWU3tt zc_X8EpVuY85v3|QIRv0r7vu(_t@HG+(rL0sLyOp8 zmzu0f`vHCw`6?=;$lo^m>xSJD%hb3Ty&8lNqW$8ksQk zc(^O&-Mi;#%ss1Nf`xD7bPIvi{~MM5N&atI-~s9qm=p zYmp-lyx<6#Z;4#H_baXJWb=C}83-U%!Vfkna?`-o;L!aGO1dl{M4&@qMxWoNO`GOZ z{`f-MgE-6@yuzZs;lpPG55o*s(t(8w-%W_X<8^_Bg*Lhj=sk0M}G3&BcuC;LEQv9hxI zhd^TuXI7Dmbx_rb~Uu-6v++Jc`xCwX_mIw-T0*6+>gGKBfmAWAfi-6;ll=7O> zZf>@sq2dnZN)4X~<}N2IxRfDWquVOJUxFw!zxjE22l#wUb14ShA$#etQMgdCH)kG3 zNyo0=>-2{8K>e8uYXuc=bt3rXpW;sk;bYfheL5zkViyR1z&Y&E%>Ys?`@jby9EeOg6R!tmWow9|1mp zs{KfSOc1oJoA;Gx+J-%2Jf^bTQOJ{-6IUXqAX{w~%==&bO+J^(a(aIP8n!OR{z3o6ssG zEmTq-K>Yxu!#iLkk2m-HLx;Lh4zFb5l&WQNyk6j1HPAdOraq8N;B1;!P^@509Kb_e zx{@LW5JnK6Fv6fZtB;xie5bmJSZz7IWpKQVL%}S};%2D;GL;z^Btxewv%^?*6#B2}I+8_tZ~z5IMx(X;UbC`H@Hc2aFr0~N~%WqAym zMI{WlWKg-OJ$ry#Fco5|!=ywT)dKBg2`H<}ILTLAwbFKiB$O*34ymKd1gV#q`59GPC85JZ)o5OD>&x={#> z#N9?CAtk?}c@6f{!C9h`0)!<+kK{5#hSFbSCo9pPbISLmc}ezx@+V<^o3?G!Y61pw z%C+T#QsFo={DtSgILt~$7Mn2DVkpZ}SKd-W#2rc`OhRTd1Jmw;mIzX`cWKoYl9`Yv zChi=_WG;OQ%6FbJCVgcYf`YJUU6iT|%kEqlTRsSWUa$#=;WK1b7E${rZetkFTa&jV zlsP%VNTs4cHk6|wgW>Um733=!1^~inL+V^xus{3LVc^zBRRQZJGwcwxw8od zu>Xj``=9+WfN?3hm=O@v7BiFW7M0;R3GAaY3G&}2+o)$@f?Zw+*Y6>Y3Ldd&(tVTF=^ot zBTt~zjP2lpEqG^gZe6 zn+(*)_s@+8r7B-!B`<4WM1MLYDRmfPk=yhDIswS!Vbac_6O2Z2vJ1uwGj!Pj>LMfz zxxiPDFa6$o7y`)aMLX@PBZ<)=!^vaevSk%h89DrKFT%AOt(Xvr{rlG)IMBH`MX&>y z_eZ%xkI<9}8cn=}YEs*CTIX`Bf`-}?kN|QXBi(+C)kjsL)}sg-Pf<0hKR$B}MO)Ny~&crnz zlZA@hg{?r?x!|Pc?}|hb^?Sz`h5psiOq%TbSljnJ>Z^6h!NUPeb?5H$U*OY|=Z&*JJ1(^zgR6X~_Twi{E?>Kr#Iu}l>(<^| zN;im7cDqb}+Ui`xVs-)yc=B>XwjSYpl+g^}3iyT%TgfL(d?X?hMLig!2finqr+Hhp zG!{(bz>MzD#f!Cp2y&<~0r}ehCXos06rl-ZxslV8vgbX0QvuDOTU)aT)#*yxTW;{fXq={0+3V*}exA`feYb zv<-x|5a31z)8rJeIjlujo+5e%%!D<17CJc@`$65qK8IHbS+#*MLqB&*j`aWA4lC?m&e#B`4 zC;%A#Tn9YrG?I%z zj$&a4EEu@!EKlGI&FP<={<~CR;E@DFP+11E9`w=(fzZR94ywumT$K0O&-f zJ$kIaVc_7C5pxh0rNXs2yyaWz1D)NA34``RL08@}fI55;QR^7f36XXL?PAnSZ6b%) zdq`w(q7lmh*HmD2OIv+icM7ubr6gL0klgW4%~}1V`qw;H0s+vkA4768U&s7}2A$nL zWHgxfziO@t`}}V zONjaT=hF>rY~Dmclahi@NrmdwyF%pUnNF3}olj=4w+$wlcn#;3l!X`84U81VseR0oA2 z(6b0l>95i9qV#8x<$(R~p$`BKSEp*bxxiSHv%#qfgkU23Id|ecbbx__2JK`Et?0HO zxF$f7P7+jtZqL!UN?t!yYPgRhh)rZ~FFt}f^2yBs#L(dg;I<6|*u{~lupH!m1hZs3 zM|xAraYMqhl+;xA0u8kX`Vg}Nj+QxP(ai#i7!qD!*p>GNAwkLA)rT2h)k8K#=&aJ+957d7bA$4q?agslM}fqyQu&t0aFguU~4CxA{| zA#7^bgNy;>UqfI8YGy|%14~%VvZ4#1g=CmM{`S8?R>a|e)I^&taF=p(5n(le-t!!Z zfN7CCtk-U!4YHcxRoATfb)L5tnQZMNmui?3P7%yCxUjOxd6{-pYcHZiFz;pbr(EJV zP{4yFqblDZJMKD$4w1GMB!%Q0yGD2xH7Bi^5 zbn8~v2%5(n@`gq?@Yv*hP3>l5DEAws)Q%c>;hKpX)hFEjeJxyFRuai-Sm~AYpjj2T zfmKH1(W6I0o})_V(92ld)(x}0e{r0%?%qAg5WFCQGB*b@7kIyzU04S|9x?`BkHOhm z;d19{B>ULXCTxS!2O*9e4QL>@sZYOW9I%7{OHcgOjHfmB$_X7$w1=!vLnSSP4G6vn5*`*F(C*cF!g&+&^SK#__xDgJZ(Cp4Zp=7^2 z3Lu{kr)@1rk8ntGs!Bo5!6!JZYNw)*ET~n$+Gxe@+F;jXv}*WM+SIA@MjUweDaDsK zI2#J8Wy&Z`5mc)`E+}B*TNsD+7;F-={adkb7!Z`nlL3h3GS*B&e<7*llnh^=v5t}rdm1_qK@`sl6_<}=(RR{3+k^^cLSLo4R=va{>JP zhSRDNd#NntvmdG{8v~zlzP^CBGqs@J26P(DWF1Hw1Px&_)cRtP(RLhSe&_vbbnnI_ zGF_Qb;?puI=j`j&%Yq%$xO{LYt*wxa1O2epn6tqpm1AgHUt#{3ro*Y3y?0t2kV$?o zgrDJi`ZK=i!odK32YVt9Q6n(WD|tGZr&xnDAQ3g4PAgp%O})>;#LD$TP@-N_@dH5p zC0=4}cy#pq`D!qRsU-Q~@Pmd;B#!6W;tUZ-E~YJeRV`VBe-Fr(x|Qc7E*7e!*AwS6 zj$b7r)ir_{J-z6+#8Yj{qliz20LYXj$JT8)Gefo=!c&%DmV&U0F*ljfD*Em#m=el6 zHV)m`<*clOTQwdcEzk>t$JaB5Wp1^3T#{DLDKH8Xk1}y;*7=@3oA`1NhN*&GDV3yP zf*ql&e2$|5YFidH)p3Fnj9AEQy}_{frJ_{z>g5D@PZebs{r&e@P~ZW`!H5nD`y;@{ zOn%r%;DG+8_Xh+-RYB9yC4!{~E4i=3&H~y5yM|H)GPI&9kOM8AF+Q4C;JVit>T=7L z$}Iqk=G@|a71|PI3~!zqT>HG5PcIBqI>mTU%Q8Xtcr;guxjaqMR1XxfD!f5~u7=VP z&(Gw8KE81A`Qh4-R(Yvy0&=R3KCxyPD^NJ$_gI9?AAoQWhT=@~AyCNz`XxwP8|d~j zjxKDre;&xM>*AVO=t2w$TY;s8*ztlA8FJ$#LZC@&Kur(t5^D<9D?qBJQq-I)b}ge3 z@JJ?U+KtA=G?(|B)8VH#y1{ENg<%IX1Obm2$&|?D8qK~stG@9c1>}58rCvZdksM71 z_Y>6%Yezy3VJC#1ipjMWH8F>V8pJyWAfr+_Hw~+GjplI(`1%4JQql)N)DVA31&I8T zjvOfki(_uN+9x=%7$iYKgB_7V1p)ut;OPI1$HC~n5^W-%UT`QjJz@niG+3@EiG7m@ zlMwJRn;Ok=l<1KBCF^e$oy1lqWxKw-@FCD56V!9lu-z9A<3cvWVe?TaDiGl<(p}Us zQ-ZotAfoJ)9NpAuWoZ2|6p;up0zM?kySgd%15lWJ>g>c>rw@O1SRs)f*aq-a$lh{& zuycdV`H1pS3oO9OwCfXuoifII{FTFH22ag*=FKvx908(h2(1U%4Eiu7Iz({jII}WA zQ@npPc|{Iqbf&u5+%puz*yvyB=(XN}(a6s9v3pDf@5Flmn=Ae;J8OXC<;#IB{IT?ORi&usOh@iz|;J*qMy5ItXHjf8!E0Re~M zGN)%V;mD#-;yavRB|R)B!}Ut)jiDrv_1nX8BzWe&FS-5eM#5Wf|I~qCVAo~uWrfo}=xH*D(wI1I5{{l4rSq70aGb(mE4w5@hb+z% z0O1PS3Yk$T3IKZAWLAn0a2G*pi0KCkt2Rv4cP@lry5u)kesVaK|MnSkQ@L)ciavX` zN>&=`3f((ue;EC6)OOUMmt7<-Yw9Qrq~0V&unx8uBId6^4$@9kYBc(i&QoSOq!BQP3pF5?6>!_FGioc3E@oj=CI_|(AiJUipX(;+#^-99(?fa<}{HPi~k zfOV6uSEFMACgL$SXRW9i#@y(^gO}Wda?ji$X<{;9-1zZVxd^lXB5*RK3OY3qJ|HXt z{&>klw#fq-a{x#OhWHU_-n4l%=Ts81uGg`X)}Jvx!r-H82gXmYMX&Pw(To@0XvH!& zhw4I(4O|}P%%cdsfKE6Y6fg;ZZ>*(5?G*V&?S}d1NE!<|RpCEIyk3-r!>X|8jdM2U zS8^6?5-sM0Aaez+;Wd&YTpL7P4h*8WdpBrQAvi8!|F>1fb`YxF=1|8jUuy>V5C+o0 zwtXU@Epct-lEsL19!Qg^hiU(_m!aHpv`Un!a)$<7Z_}=we|=IOmhRLse5XJy(I6v* zhtG16t1j#}2`}Rqxl#C-o0g$_DPyJ5y8~z8(xpoWwu%qT0j%ku)GR+Q-3c@oirdV| z=#Ht(c;Q_sCfw)`ce z^`K^DYtAV5_9trslXiWd`fG&u`Ltgn`utIAvaw!^v59j7kNvV_VngR7uf!$~Z7bei zwP5dir9C^ZaXj27@ZgV4l6)?YboDf*4hXZ)xcm6|&Kp_z9)~`fF#SgM{mIt5KWoB6 zuVZK(JK=U^o%Wh#DdJJ55MRgHQ*wJ@$f0@P6x1bZs@M%}tWY7y>Q`GD62!=qVoY|i zDqBVuiso+wmw*;W)eg|N0lbT`IfzUy=eZ-r6nz+TjXH+-vm#Q*WzubUu$GE(5xb-M zY{|#}uFUFeyj)lf*Gw^sL8z#3Q`)jr z#N05=gF|^AnEXDeR%uN`PJj@^Zj2n|?<|~rmED*GcAvU4M@HX9Ey0cEzA>NY$2431xd$P-cY5kG{> zor@e}2Sv3um$Huu@1b&P?4g|;9zm|7N}J8|u?YVVdn^H85IhBI4OLkNlVcr$IM+;GZLpx^8~#Aw^6N(EvLZ#maBe~It9?f#%LO^aFwwCa z_S$S^Xx(<&6FU-#IDAyAR{*G6F6tw{+y8C~EU_e;j~xCXREKH_y#6@jxSd)s|Fh>}B7V!oy0X3s{k)1H1vF+J4$+FLT& zZBLZwPCi#J3;&YQ?mN6B$8ammQmECur01ZcCdh!mW|_9Eli8)M1z=}vA6k5VVPep} zjM(`Z6c-8eXd1k5?(A%|yb4v0nFoK6y`Cy$2-mr)T_kvd?S+@&YvDL!|Fjw!E&u9; zQM}l8E7@4Pi{u4N${LQuEZPF4D>xN0zK!7wR8G9E=H<+Tl zTGJpE3`P=E8@h|y6R~k)^KqBEOr16j?Yc;uOsC*qy%kElV1Y&#m>TNDL0P2S?e{WH zOC4qFhNvIbQ;2EslJJc9?8%QrwdCJv$h3#=Gp7Lv^y0dZ`0@$OfW`tjCkSrf0ck|4 zX&RYUL$X9nJaNFI_{k>|2~v$(#KZ%Sg+!pqm7QjEv`k%XpDYVJ8XBE!GQ*g2JFMBo zEaSBFY&GUohP-1sf}ox?NGT#;oQH@?Mt6aF97pD7Rsk-u0v5p>L7@v#*4fmp`xbO* z0zTM;HkmA4I!iJ}s{ybzrFpC8RzX1&03;9;j5q@JTaR)hDHiq;i_Z1W(&|Gk%`1P_{&LXQy|K?6%ml!%@;-8;p6SH6+PF`1wYNdx^Bb z+dz(+J>EoRFj0eYo#*F8s#wv`o0umm$zF=Hq0OttOuApsQVE0IwpYk9v;w*-E)lYu z0<+e~V(wZ%4y^`e%Wu@ObztUR#4irosqcH$C)uf6f!(n*m3<*`+_Qy5bULh>q>rUg zg~efmY~@|D5c&)?7`lE3eF7?(U%kLAQna?3Uq>->I1$2-Rwou!QAEANT*jr&uC7;P zpiCL36@s*Ptm;7@INK^kRsd8~v6OufVKy^d@Qge&mbE+_685tG!9-uZ@>t0od1X-S z4ks2}l@!Wx>_Eue#4e%-$SBibkYX?9jCMX5-;#+cRINHM2Y%S$?D1?bTg*CWc)%%; z-paxLvOc{ z;U9`B#s>y5*WRW;(b0-#2znp3r6SYaVBLwO@R+Ke=`qD}$Dvd%R7Ia|AKXFkDh;i0 z084fX=(FCYKnl8~84M4eIqh&L;6%Ij8b~~YTEWzk=`eYp5#$o`DJ8KWZnf8ZT!@CU ztqbLnY0$3nN%vapBe+|#9x^^R;Ff^7kgXdg-lCE)DLg{;7g&{!l%S?z)2{&8LxVG0 ze{Ur;>=rG`J4A^HW3o0%xaL=$8qP6%Jun7nLWrpKu)w14KYBzX@C|co9B{cSPL;_X zsxgLACg=|`9Y-WMQ|jC26=@-~$`Z8!${to`2`*y?7nF6Ti`Tf`oN$pxO+`Tn#3U7T zD6-)d3NvyHFD|4u0VJfz{1Z;wBEVw?LL?Xs0C`NJ$q|bawPP}qdY)GW&Q^!_;PS)U{y@3FH_$ zjG#-}$;fiKg?v%I_a>}OJ#Rqn;=8-kXse@><%+D+M8Z>B__9f;fHar(&@@kRh^bOH z;k)Y)daiSe%y$)RK)nuE@CI!NuscHxgs3TyF8!3=ebEpzyfc@h@Jzu$Dvva2BfJ}kFX#a`2kCaT@a|Pr2e3I8i7-*-j*1lAOv2N zSEJE?8WQksG_`QFebm_?9}xb0D0Kr>L;kuEf&w2GpvaltLJzVsr!tuh?RX>*Am3%C z=&<6OZ$gmI(^#vrfPY<_0ftk3>&I{ya+CPf+IU0tF0vKSAyp_7TyulNo^_OI#LOjo zn7vNnbo}*@OJVTv_E{oVddbc>`(k`25In54+GB7BJ=n=O_BM53LII#0hYzD^XW8WJx&V}_J7Eh-s#V2h zN4fx*bCJe>B*up&buWp)OM_0Te1!$damf*&N{13d2>v$Bn;RXLWX6n}&55%9oLaWr z@VytLD&#w1_m@VOYp#PdAYrvDu}qo_@b+Cua&jZtW59no%}`F$4_Y>IIkN+cti2MM zFzC3#?PrkqN@FD56k;TD z`J|%qhSa$S5&>+uS=fBt2_U29{oT{^YsQ>nBvG{eALm9;DN7-fm_=~S@{0|GwzqUG z75LM?J-hf?{r#D>$QmXt2y<{hnm59*ItQE;*E_uF1&B{sL_jR6MpCFn947!b^%ju@ z$CIZmo$D8K0TzC;>C+ab6aAC4NUkttqTG1J;6u0%tpRmehUFQVy?k(pN1r~28I)?* z$iykE=9YU1^+-yIB+8hcAvk@(uZNixusj>M^_P~qT4oI<@ht=( znp840zZ1$c(0j7TdL)GuqFGwgOZZi(48#qQYNh8Oe#$ONHn2o(pZtQU7@#lxE5IIi zwY`=sqHO|hzfL~7OikM*yr-`~mvGt!sLjLds>{+tj-IG(!D=D5Q&p*bXRgX+g6vrG zs*~9nJg~fETr=}df*Od1SiGuVNi)QQ6UfJnyF3`sf)27SvV6?;2)$$>_~Gw66hxH7 zVA5Y9z(GI2PosF28xk>bBJ4w3$cLdo>8g4-3$t;0j7YQU)o8i8-w#*oqjRNo2qh2X zO!9WpIR?0x<>-zrdB519mcNje90=a%3C858y23fIy47-MH|J3rYNm|JAA z>rD3>$o=pYR8&ag-(b6ndXCT;g|Y%krxXZ|UyKhN`Bf&}m02Ufu6T%hnqA;f_X9K= z-sg^hJN+Ruf}v&f0P+Os7Ox+ofR!P>H~%7^H>H5S3d%1HWN1$cDMaezMQ8F1!elTf z$wOO@{dFE6TSn|ufg%NDLdYW{HmpKDSr;UUFwfN%cluh%Rwq4U2Xag znM}k%dYS{N&kIVNL(F%STm&cN%i1RaGEFRuNV_DkkoL~A5^5QF0cN$u}k zsM3$@_K5myNx!Xqv^4xm?2UC-6i7_2Ary9AEm^E~6sZ!%CP@+KV&w)y3lbvk3l$Q- zrbcl5I!SlpGP^^w*Lom6I(hK2U#vPQZi*x6u#Fbfuyv3ESZw%ZkpHdkOTImQ3#03M z;OJNUVn4&(9GxTGZ7$-a)r_0+>8kx0%>k82hC`4SL?yHw1}8cPFL7Q_byCcP5PDE! zCjx<0Wvxg{IP%5s;$_<|_g0PaDT5@d%i3-OuZT{j1%;j%CrkrlzM-vy`+FF^xppOx z<$v8sXb4nM%DFW8x=_n@4SrF&|tNc$C!BDgtYyr6%DZ$*V2YS&-vqWQ@J=8 z$Bv-HlGRJ?8HG!42?GW2(goxrfoqTTgRKGK7Eb;q=0(Ut0sh6H+{N@BjAwxf?_Hnf zy#yx$75{)AE=co%Y_$A*igr%RZg&^T<`$!lSEcA8V1PfDM??Y*ntVa{p?F|j-(~r; zmip${obz8G?kr>4Fko4t)rNKr2b^NeuM;3YN((SQfrR`Khl1VAC+U?9SQIlu)0uVf z{_V$x8u4>P;g4)6Mje30$TOXP!n0l?MOPP>x4DUbJ+-o>lLn{_d#yRm{iuH2SiWQg6-ps;V^zWX-5gVBtsiN!3+HqFc&vdLI< z(3}!E5lk_b;sf-KGr;Sl_x7S_Qh7E2@EsH{ z2ffx!-12UYlhW?vL3@z6Es_5WmM^q?INHf}lK70}lor5xl?C4}OMKg{rk+p}j<&%c zFf$$)nJmB)k$o+#lO+g^Vfic$R+}g;Y<P^!)wIzcR9;nx_|E)B_Is>byF zlfRWd!qACibmJ^9rX8LC_E7(qm!&0>lyPCFEo;xyCixr(ddK=Z(ZI*YH$*$H4bnb< zj9=ofLlc-n3rVwhejD;W^1m;hGGL9xaF!m-z(9(H(6locsi|WTk?;UOAUKeHqP9Yx z2Zg>ymzZ$<6aY)R9bp{=X!9n$=!G+WOw76t5|9dbZ^q0si6<5gBppaMKaU)-fq_&$ zrG{%Hm63vpI?EVx1#a_;(E-**Atwi$W;nbMvIW{0Dn2Wqp;7Q&blV8ZzJ#v^J40;b z``O+rCjbvZegQGF9edf_08!7Lx8A8}M{lAS9=66PhPjNKNhrK}YoC~PHkBPzd>njq^1atI+Zv!r>(#f&#a#=cW9ECb2Tv z-G=i@;e*tY{)V9_@e9)qg=f=JDK`m zu!^N7Jq5_h23#%cFHD7r6G?>VNj8V0)=VL%e5$dP_B8%o2&6pp0VwQ^C~&QAa3rGf zP+LqRU@0PtJ?AlS=n1Ic$3|^Hvq5`mP!j+rv{`}agKW;3^QQrq6r2ONSoT9m_g)I2 z0N2G~yy|!M1V^D2fR9I-55sebATrZ!DQwtTs1(4Oh4>+{wjpl( z2o2a0mtY%SCGh)$vs5=|jS}O~jr?i9QEwMSJ1PV^^6j^&sYSh>W{Pf-3%Rd7as^B%&mYvicrPS`( z{s{U^t=uJYz$Wb+cI1^U?p$Kbvw59WsrliGTY_uhA@MuWD0(}5yap{EJa`@JUNlKJ zvGReWu0a5%&7&%o{dao?A0Zi#HcJ^0(*C{)h#Y(iIs%^6XWw4UrCMtr#Hjx8m;$0X z3gopdz;?FKNb;|-+S#!90+^*j%oBPL%Q1*3={leeP%UYYPP7Hzua}$KVf3RR-%t!Z zymPTuS-{)mRFtSOY+|zz=pqJ=$-1xcA}Z_E6c32Q=CNew?j)_y z;JhK82K*$7aMz}>Hw0&}FnGQRoH?4cSu{7G6-_YvAlx=KDfKp931jomlwQ`P{b*$T zjY=PG+EI{PZ?F*FP#)!d=SdH4^x*yTcWX@^LtFPB5wA*C;2dKnPQoBA6oF;o@sD=+ z8X9dcFFfV8UA3dThGUja_jM&-I9CXTw%FdHySe zmdtn=Mhr4f0)T6JPq3*bU8ybkv_|n$07(NoOYNgdrO0prn6e{k@^d6L*EFca-&LwW zHc7Z3e-SzYFa&(AHgBgpr<6PmflG%&(vhhM0v)DznA)0Ry5US}nVVfmqmrSOYIB%B zP9~tdT8tdnqTvjYY9Lw$Jk$i&We#xO=Y1=ymyKuYn#25pdAv&!m)RxVA30gk(*qii zsF)B4nfDJ|$E@G{d>#xoC41 zMSd(To>~3+!K6a+wbeUiaHoM{gT3N7FqwS>2n}siE(#sER0}ydW`%6*y;)usRFvct zn7tt6HzZG_7qk~E5e9kzTIY&ymCPOOlCQn6qcYq=_`FPws7)5&z*$T_)|m5H^c$P9|{gft)p4KJEuPK5nH4dlX@xr9}Ay?=K zd%t7+C(+=e4EAVf4z=&w#@fROPE<6+v3yg>)L5DO2Uw2$^tSagl&h!*sYlE-$lj@F z8-NWuuD@74w7AEb_A9^=Q09k{n}P_Q=$fNlE0bOX+z2-t+@Cs|Zkez@ldYwu%hI&} z(nx>gZ(@4*68KT{I4}pzU|b@?3%8A>x>e(hBZky&xZ(oxp?x8QFzuGbcZ55KPUIid zf>NMnXR_)?4lal(XaF^>^o4ZiD3Y8mz?JZGQ)Wp;FZnXSJb$8s${~sv%#6umM{)Rc zvjN2$ynhmnur4Y(9{U+PgG2pQkF54seAoynVTYOWRtrO}Tvt`ATdFJDRFgc)js1#jN2#bY6RsagK=nV6?Gc=Nf3)}zbFRNrFu($!+AZha<)E$68d2*dE z?DTXrXw!f(RUROMnDvX1$`+Esx(FTjQVB27_NUWD%b=yaF=JHa^qog&s;K(}CBay) zBa5LHwkp|O=k2#aQJdji6vFuHIL<4qRMvQso7|Xbij93l+0XiCZaNK+h7N|t8CEbB zXFx^(#V1>W6Sb5z1vY|x-lhd)929ng4~Ll0!V9!ar<+%+gTlv}+2{(brz&t-?2J=X zN!r0|kU?vT7;sDz!!k$V5K1fvph0$`P2Y-ohcAd*L^rqqDLg1p@>Yym)2UyS>${5Y zJRON{kqWUO>Ss~pdns0BD)fy^4u6})lhHIWwLxJtqGbZ(f(CYP(eqRSObO53DQf{O zjETuU_^qs3+;6tSbo`VZ9UPom@HxjJ8x=t-;}ufAf|J+(Y}|rI{zm+X(gd_c(7y&? z-s{rmZ8NhYoQ!xrCnbIq@PQ$|aC0ycUf+(MiUTQYI4Qkxj+Q=y!rC~ez$<;Swk(SxMv+qDRw0AXcKdsTDqxx&bcFUzbWg@Thob!eSMQgpttKP6r7DPnx zy?eQh7Y$!-Cmy?g7lbuX#L7>{VzmIZwhGZpOLzgpIm`I?A7d8ANc9_@RxNN}mE3_? zF#rKaEYXzhE{T~She-?&Ys-wL7K?Vhkic|^sbL$NSc2ARctIqpVPDHBELZHXOXAGF zk93k#qb3`W?{(Z-S+j>f$^e>htt7xQ=A0Kzv@$-^G?0}Y$)qIfqSBM&_Nr{Bv+O<* zaDXp%=-J<61b_Yhyj9}}N`Ey_Tc4s3ogZL71m~;rAP5!`)>My|u#vIAbi$J6mp)VW zp9YDoFok~~ISA^|HEUcs*Rkj^3s8ijze{9Tr#rS)cJLLF$I!xcn<)PTb93oqX+QW% z9WM}Tp|?z{T*BxLUcAE}6x<}fRC#S>BE+AoaZs&M*PLKRPlAgUD^O2&)?|wekFMNR zBsSTt-T)VZuIS}7%*MQuCoyaAp=mO&Gsd13$GohW?v@8E*nSL)5Cno{l7cwGfCgX{ zkhIx6wgXJ(^0;69x$B(nOWyNgk#D(Zp66ediPX>UIaCAj+IFpy;%e0$yjVuV5vZMrV0y+E+#y42Ce53IDhJw`z322;;v9H z$?hdq4jUxkDp{wL_z0KwB?Yg7%($3tK``URgO-~F#*CPZ!M+NrLz#tf`bGfPRuora zH7SQ)fAdW_9R@zV^Ofy4e=L^0|G6Dstre-m4TU33l*;A3`Q$}EdtK#7Hyb6#uL_U} z!4W%i7MZ5IrjbQC`bc2JJeMV%>aSxiF1jro4j(R%1iAeiz)Z8*PhtjcOJ%acrdczm z9T!LJy#mpZM>s)JE9uTeFau_4_0tVoW|6HR{rAT#%B$bjpPB6?UnlOzERQ;j8dQ3q z#XXj{fT}icU%!n{5P#R$sQ)eu+6^~bgRCh8Zs86*Dl|-u zJJq>lQLY78#fHA~T;xMSsoAoA+to~vDkJ1WJ#CFV~|_za%}>BO|)j$cmGDo4NUaboM=```m13rJ6Z**do*W#lVx5cxh5qNPjRnF!U^uO4Y z&yIVC&RK{)=o07}RGu|!RhxkKsK+Mq6ayj2R{#^Sj1xo>H+>C&BLb8hJE(@gMhIdu z{u7ah!CYHL>_Xh3D!H%RO=?A!{m9n>n}Bs9`Zxw7(RF|qGj-9KgT^6OmuZEV61lGp zz!Y#*&Lna~vZnhu+0l22JWw_dNDJe+QQ_k4IoZ;r1S8^PpOL%?8HIowpKZ!Rf0lkO z=-LTxka|gBWiu-Y8#sU1q{(lB83BTq_zW3`Y*eZDz;_6?B#Q84Y`&~xEZ z<=2;vD3?bnss!L84r2)9=eX`IG<7K1E9is^+-nd75V`@TMk&EGvZJvmB+$hjv^{{a z5vsuu(_j+Z;-yO+xlqB-!V>2BykTO}2(E*1Enn`06zkx`U7_lu;o-+>hA|oQa5IOX zd6|@of3P7bSl06S`6q>{ET$uR3uDXY$L26P&J)bVm}L*G^f$rVdr4toSltH!PkEtH zVJZj6NA5wEEsYJ%*pM0~g^jq|^EA`J*m3Vcd{|ywB>7+(ZnR>9ki&CwXANfp3VKg^ zGcuf6b^vNOlzLLp5p@Z9!Q`!QK7{1{lF`FMrWiH;`CdR@HZ;dyl6t0~E}Oq_VX{{% zGgL%uPIJh}hd?Fwu3%uv9M&sq5@j$0%c#=je%r3yN;W>dg$2PkB^g_K5+KCgl+}f}KFLSI9EKl9uZ7nf z0pKZYsLUj~G}UbbuPwl(AGAVa_~1tXn2P80bra;mjRYN@ixDd6uqlKCiu2w+RFwS& z!ipe`1RS`3{38>qq{Mt0gSPT*eR8SH3mh2{nQem@c$sg?DcQ7^3Oi@0Z@L&85b-Hu zVau00!hnPOV6%(3P#}dXL%CL#KOx2s2IZZAvCHiX+kT8d&(3(tIt|k*#)5HbE?%t* zr|Hr+H{`&L1r?f2!6v4U8CP_qqQRS=kb#hZ>&F8yhh!C+3<@RPHxE$*Jn~@MtqEZm zhzNgrBDd~fPCNiV3>o0mWHI2-b~Qtcpk3ezj$?@pGOoJ9up)s6;+1(H$SAR}TC6hu z6HS~FxRMX6y${V1P`c^cOOPROjSdH(^ zow6b}l?){^op)(CJ&D6A8&Xt$dUfbWud{N?oybAUmc!AP1r7OWcF|<2qBrSR0GX-l zzD8gN^1JTh9ThyWgdxpoF)LxmsV+My99Nq7S&B{I??lL>L~eeO4cNf=*n!)$&O>*M zti*2s5~ipwi82H!Hb~>dO&#vgRts2GySjjb022-~=0A=%KD~t5a1A2};!p{}M8c(* z5!K}6x`*z5F#~7(?s{?TWR;0X{wS0lbla`5IMdoNYU*CtrMbDg&!UkCs`fKO&VrYd z74$g##Js$5Dh#MQp+U8Sf>feo3*hQdGLSZI7_%ZckjQ{gbQeAnjLHedX3TLRA7P!~ zJTMORCp-eRuj~9FUF3-rR4uRanR@H(x98C%tyc=6R}o$Y$PRDlO2seL1YMpYJVI3| ziI{IUsa4A*3l|F31OI{i4>V22q$cZObMrI?Nimtx9QaRex=oOr!{K5W2#-X?C4nzw zt3yT)$Y2RmDCw!3u~MQ>f+#2-5laC>pr{xvv2?rje zY?su~d128II3%@ZND@f!Vm3j8spmRtj1!L~y6zhU0it;z0z5uEU}D2Al8ZvlKFWHKf5{%1vRrrek^u` zPnfe*C+(|`4CSjcL@jr+G1veF8K_NMc?^Rr<)%auRZI#8$=e?!$rNCSGd9PXikpA^ z^!6d2(}zTBblFC{GsK15PPP9S(|D7@F{om9PJc3qc?nTJj4i^GaPfMnA*9bNWS>SM zm5rh*mSNq-iY-Jt#GA?fjwop^U+JueOm}Esz`$Qei|Ua5A$kF7IgAsn#dI|aPw8PYiC@jbf{UGeeY}0Jd382k@0oDJj0Hw7+h4CXHsyfzr zXGSw1h#3d;skQ}NYs$?4X+}JSEw)3@=h{j7p(E?dVXG)|P|=rVzk^GEWG$@}{z-3{Kq|8s|ue(ilSjMawB}hHtZpeY|ye4 ziUjANK-Pn47LxH;jXW~&juYpPNP~QtoBg7sz!Ai4R_3^yK&OaVegb}8L)B*h5RkYb zadDO>^K3VK3QX`tEhDwnLIqPnn%1q`ne*@oOMHL^=@s&wqS8HgU82s0RcA>yc^vHE z`cK%iSTicDTA?)qw)suiia{RkMQ1~?W2}BQM4JU_6(4m57N~j5^sR%i2RUMv!~z0| zazvwMR{43`_Ff$hscU07{b8>))BhTPn?DoxNM;t$^qxh>q%?$N#!cA_X6?u@?XJ_v z6nzLKC}(b`%py2sqC_EBHlTadV`AVHmbaxbeHq?0$lAY;#aAD_cr5TQW2NA6kQh0n zaC386w&sWx*&t|aqAprB#!~<@pyb*1q#~@1G-==kRJ~N8$%I)-;f!P4IB5%mdGU>s zW)(3+=MR}J$9q>?nB_Rm%+VY4OzOiJUq<2s21kd)Bf~<(_cMm7I|e%*@qMYo=DWvP`0TECLO%Bbb8| zWTB+rh;pK>H_m#Hi5ynwM$|j&*@fW@i+chTX8EUMWl2M(%wf3euByMGjQbECoFEoN zoI6OJs?({aS4q>AOAo7s7zj&`;p8=<7t>~Olmckl@?g@)#k2jf1htep1pfk~J)#W} zCT#SsbNz(U0}r7MY}mvTEnV05exG}PIAK~jq2eD zLFYJil%VEdzT>~ch_P8Cj3j8yf%cbDlNm4f|95gW3y}Tyv8h&;j)>C&%9B8c1mIzF zci5XYRz^<(*UtNF9?L#gY6+sq?96cxC10rc2Rg=9M3t-t(p5>5{k4S#L7XqOzTBaB z3>u8>Mc|W|PhB-XpDIGW2ZGM7h~UM|ig-@->J;>31=bhvKsN9)sA%w|>^)@231W(X z%d1zf+B|RSI$~l#e@`Tu9fy+oBu`CTm%$28?w)$(;Tnu(@~I1DUBl@Q&8WW;Z&7X7 zps+>%uwFD448?q29#i|$6ggzzX;PCGG3Q=j>F2Jp$fAYU7!QnNI8mElsTFP&(W~27 zZUPxBf%As%$QthJ>WnUZ&d;5 z6;RlRx1aJB3LWqQ#Vh(hnQxYNbYYi)a#b76*E$a(kRmG5aJIc@`d$(UtJ(e@oTndo z`ivOOb%%Bmz^nN*JXNI#qidrYSh{qn!T*J9t=!K~5W=jwnK&2Wfs+R97oE@A>3`MJ z8I;x++hmQ;an(KmrU1Y=4eaF8jouLdk5r@Vv@zyAG}WfNFWsG_VJk`sCcQ9d=zWDh zz8vN|m~vEZ_egd5dMeIj{|t~s=>!nuAomB1NC{Y4n1e_&n*+|Cn=K7%&j<3k0n?F`1 zrd4-L6yWCNBK?|hb5n=*zlc%dh0C8ovs-Xz*Qt<*udK*ih!M4JCxNpCK!})THZ4lr zugV706&#d@Im?<2;>sU!Yk5rO06$E0m`8E6Zqjd}S~rTy+G6GJOEX#P1);p&-m?yW`S% z^QtjNu#W4-p~Q4S3o2NTUO-Q;oNg|2K>&ryF(CZEz%d`zZ6Nc5JFH28PQiiPR1q2Ox5Su@9urY&MG z0yVz4o%;2w%fnItK(_{8N$EES{l1os>RWyDDRU6Oz(|VcN(pHQp`}&ZaJYs-skjQ1 z9m+cw=&Cu{aeJA5li#;1L1%C6nd!q0NWBpm|(mn!X!Bv-&v}Z zO^TGjNct(uKKW`S9h=SE8ufmIJ&*qQg<{Sm88%bMl=Lz_yYFj>4eEZIt5a^iOM_gw z=syQu?+C{?1;USZj>`7XI5SBO*5 zo9I9UlJYy4_pd{&fqm1*YNq%Zf$Ql#vO9r6$&;AmD4R%vp=1`?u#8yV#UzRwwG#(n zXd8GsY^01WuonoAT-CvzAxRBH5LQBG=;eG?EY{axlb3}L)aWi>h{M;7~UlM+Pe0-q&MoCY(#rO9nJk{0> zACMpm>LKk-(!j}o9%z-}ZZfvl#r-Y}dqx-Z{$EY_1XSQ;muBpJn^F5}n$ob%M? z%WR4NNesb+Spw}C4^fC5FoA^Nj8PRVM%ZPwA>g4XnV`yNQ%4rUow1PFcPh26IJB|^ ztg2IXGUnXy8^|;_>_ONhWSnXHj)V-P!q4+Cz|ct?i{ORp;d9K3F$m%(p;}HMsNtYcr1R%;L;(^go5?Q_s!K~N!`ruSFZm|p zXh2u$9e8bxlpYIrB2xDMv-rsqcSf|NeMfeP|7Z44?yu&&0ObIdt5B=$5>mosDZP!h z#}b7QJ<*>_sOqrc%)hFFbL+ChP=SSNOclw1N=^;8M(By6LWD~MYjEuhG-?WRm_ zneN@Xd9x=W7>3|o+6hfLg_8-GeYiOkYse5-XjlhGAdO_L=RB;7jI7Fdujyp!wzuKJ zIsuQtMexehZ3r6ANJ9&e!hpar8J4iI=@_$#>IKOQ1vcRv%lMG5~z7|xA%ckvuK~JzXl6VY07=_>)1W(_yx4t8T7=wiom2(E= zoU8*faGQo_8AdXF`~dBs`+xymKum=;u~x>0$yez+C%>4XfF|gpF+?_Gp?UKuf@WFU-ndNdpQ1Swi;0A|t ze;unJ7MkvT@Zdq>Em*%ODD}20P`*&2$utHG(*-f2tiR|ic<1dV=XZye(|jkHmHE56 zI&w`Ekl8A7~Ejs2D>dRif3YW z03DQs2nQblbK1ZpzAw}lN&g5nQv5QC5t%5c1fu<9EUNA1^F9D@z;MscfLhXI1_OG6 z`o=AzG;7Vq8uXcTa8bN2P)!IIP3BU{pM2-r13y4NUXh!w0t59mynZ+ZnAi=?9K8AF zNC06nx+ZR9twfFHkdemWo`Nfx#7iiJY^YRv0*G;|Z{o+`jF_|{Dv10g+Zmz)^xYpwPD6$0a^F41_HFP?u7ur_zxH!>vU@y55XKA0@C6;8l|zJ5)s08kSS>m zV9}NdZ)URMq)z^7k$SLz>tVihF#bp9ML8IQ&x|?R<8|C?O0F1CS}ZX-l?4f-+?I3x zuOPu=n=*AOkO+raP&M4nr?j_vX4GEmxXU)QC`V;W11+njk``OdJE3dTeIh$Omm@q1 zc}=tsV?U~H)tZ|NSEtmWI(opfYl)8WS@EgBSR_EmN9LMN-f;1bEC!4zNChAeHKY}n zP01S^v1!v_&U!2^krHpn*fZ0A>QpYC*a!{|fb?s)rBzfRE-{EOhT_NoX7t7t1^A$tr{jm)$^KNHpnVXf{V*Jzyt5U^#w-^>&o?Xc8!=!VY#%n?Hn0K*{R+YmCXxf zlmTrEy5_^k8U5USCU!T(v2}<7!dV|j7EJgnzXQC&W|M`?D!L6AaE$HG3I#eHZ((4G zMolFj)kowWP*Tm1lb3y`LIy3T>Z3GPcT1PSEFRsTT%?EqTxT1^Yf^%J$ev_`k_+Ii z)TI?LUz^SpWqz)7MhJqOMKWi10%2G}FoN)KL%Ayh1UczozXRln&OwJSpON^FYz*ws zHJ(@vt#;+47Zen9Y)P*Q(KiM7QZ{kBcZ2&nL+;3V2DTqf2*C(m0dj(EGe-|e z9~$Dkxda8eU~(hc+xKt&Pg_I+u�hy3CUy^sYC$bx`mG_CpNtK2VpCe?>8QRtOiz ze+ubIuPdYht<^Zg^bZ%0q@!X*;PY=hb@C&TM=x@3;a`5WhPW0zz3QB_yV& zFJ+$f`a|I8orFcMtvbZLpHs%eM$6dJ%CZj_9N?4gB{+P6JR8i}u14Nh@kX@<1%Q3- zBJn+j-j>Q)Whz9!z!VYhsT#= zfn6mypq>!wd<1}-`yihx;yPeXhCFoHQ`uQ2w)rEO#Ff#6>J{U$;12KwL}_?Z{U8x* zMf=KyA;U}4tc5@{@BHKS@H;Zlrgik)Pm#P{aLnF8I9rl2)e@4=)~=?hCM6JZaW(b6 z6#M?<2Z%*f8t@NLFm(=k!ikcQlJP!U@ik_OoI8h}kV!}~S+;Lm z8XJWRKv$?vjw-K$#KAOe6{<>R)!5!5$J4m+Bl3@)I#mlGj*P7B6MvrH`nEAjv{sZD z!m9$2VQ@<)0+^2$)kZ_t*8BumupC=db}~!nXX4m92V(9FFso$QBvN?{qsVp0x^+uU zx|oZe%sLRnuf^h+taXmoBx42}Sg{nJNgX<#syHK!X)SQjU)Z?JNl?!)aGNL!9;Eh1 z7nZJ~zNZ8y5;P!@j_Z%(iZB4~&u)!LDKIl*qhaX6!XpOQUP0OCb99$d7E(m(k5Yzy zwXXMOe|Uz?Cr}2{Hd9g-!dpwf-fj1?iSV^Q1D^XKa%Q%_JY-k@E{!m|fq$ZpCYmcjJGk#hNE z>QRlIa6R6~(vA)h03i(>k2o$)Q*swWg&|eAQ2T(b;^go|pzNko9M0uoKsaCXg7PqS zrao3dG28!-&1McI`IunOKkt(~tcBc-Do_nWA_Z@e#>Iz`1!?>l_+Z5Zlje@l-fk!t zmq7``$FybaOmziC6_JQ2UOJZJCBqgNa+zJj-D|x5{P~|RV}drm9in#1(7d4(Fdhj3 z9fB*ziN?4fOL3zZLMtF}!jKl}%V=jwRqG@$g&GoU(BO+{7MKWpBqtFtVAa?*@`u4& zCsCRbZMdZjrv?zn&qKe@zX*Bq4uLH2j5Ib27ky_YK!-2IhNY@-Ajn(5~!lXh|W$*HH&ifXZ|$86b$UC+S=PaD=

B)NsNH!W?L8ICh|L2}(ixR8;_S;9pu>lezGH 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 literal 0 HcmV?d00001 diff --git a/bench/comparison/cudss.csv b/bench/comparison/cudss.csv new file mode 100644 index 0000000..27d880b --- /dev/null +++ b/bench/comparison/cudss.csv @@ -0,0 +1,109 @@ +solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,status,device,version,git_sha,date +cudss,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.035060002,0.003521595,0.002295307,0.000462275,0.034522777,0.0034875,0.002263283,0.000407986,798965.0,1.30393272e8,0.0,2.1473371068813558e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.284841065,0.449437059,0.42075667,0.006619135,4.268457182,0.4488586,0.419957507,0.006599641,1.44624555e8,2.28522934388e11,21.0,1.7980039292265598e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.043201537,0.003901651,0.002452095,0.000500465,0.041996133,0.003710314,0.002331657,0.00042721,1.077096e6,1.67140496e8,0.0,4.0165594207132357e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.013016571,0.000992045,0.000437585,0.000256047,0.011950531,0.00095403,0.000347966,0.000232828,15200.0,272110.0,0.0,7.263795568128644e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.012301181,0.00102428,0.000530075,0.000260508,0.012135948,0.000948861,0.000342906,0.000215558,15200.0,272110.0,0.0,1.3950580448410445e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.012808625,0.001063664,0.000351437,0.000256737,0.011981259,0.000957265,0.000350086,0.000197788,15200.0,272110.0,0.0,0.2931576016826416,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054164461,0.001354491,0.000585044,0.000268998,0.052228285,0.001332412,0.000575165,0.000263347,155201.0,3.329818e6,0.0,0.00031641658935317875,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.055415839,0.001396891,0.000584053,0.000375311,0.052421039,0.001355097,0.000572645,0.000304207,155201.0,3.329818e6,0.0,0.00014216981507751586,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.055449663,0.001394636,0.000685033,0.000387386,0.052590347,0.001383987,0.000586224,0.000262167,155201.0,3.329818e6,0.0,7.944102795473919e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.006824223,0.000215898,0.000224577,0.000186648,0.006661405,0.000187898,0.000192018,0.000152769,1268.0,15255.0,0.0,4.086807756802718e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006767104,0.000220878,0.000212078,0.000194688,0.006613235,0.000191978,0.000193448,0.000172188,1268.0,15255.0,0.0,0.00010922717339638167,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006889892,0.000241588,0.000279737,0.000213518,0.006720173,0.000210518,0.000215208,0.000173788,1268.0,15255.0,0.0,1.2042866448431041e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.281285211,0.006836892,0.003838622,0.000852422,0.272735577,0.00557883,0.003732383,0.000717558,2.428175e6,3.17918802e8,0.0,1.8353669652327745e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.340153748,0.055813029,0.050563215,0.001354186,0.338310031,0.055176137,0.050433887,0.001291467,1.7527585e7,2.1925367162e10,2.0,8.288745113779613e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.03530498,0.00354818,0.002290817,0.000705533,0.034725604,0.003480765,0.002266887,0.000680208,798965.0,1.30393272e8,0.0,6.699560630996109e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,4.295647942,0.446945079,0.417489275,0.027600041,4.261842556,0.446283285,0.416775345,0.027464247,1.44624555e8,2.28522934388e11,21.0,1.8268694751270727e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.040825598,0.003803122,0.002420276,0.000757663,0.040062441,0.003774353,0.002349867,0.000710303,1.077096e6,1.67140496e8,0.0,5.134389329571571e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.011754842,0.000911131,0.000341426,0.000374646,0.011458684,0.000834968,0.000324621,0.000266788,15200.0,272110.0,0.0,6.700671713503177e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.011866391,0.000882265,0.000405905,0.000346147,0.011739179,0.000863406,0.000345766,0.000329077,15200.0,272110.0,0.0,1.5241538493958117e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.012169396,0.000888501,0.000358751,0.000260307,0.011675165,0.000854851,0.000332846,0.000252907,15200.0,272110.0,0.0,0.49192728304440614,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.051893503,0.001372387,0.000580934,0.000486955,0.051595996,0.001305798,0.000578154,0.000457122,155201.0,3.329818e6,0.0,0.00039420769649059734,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.052940774,0.001496338,0.00061401,0.000457495,0.050956513,0.001349396,0.000558549,0.00043896,155201.0,3.329818e6,0.0,0.00013727456047160072,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.053323019,0.001336281,0.000701363,0.000461225,0.052040808,0.001320402,0.000560154,0.000442065,155201.0,3.329818e6,0.0,9.791255582978397e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.007245347,0.000198698,0.000240258,0.000220768,0.006748813,0.000185988,0.000209958,0.000183899,1268.0,15255.0,0.0,6.349650263590208e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.006755114,0.000217718,0.000211748,0.000364627,0.006591565,0.000183709,0.000209288,0.000193658,1268.0,15255.0,0.0,0.00017854366933974119,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.006838361,0.000240158,0.000221628,0.000261147,0.006690338,0.000181328,0.000200088,0.000195988,1268.0,15255.0,0.0,3.343267461426919e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.270593913,0.005709276,0.003803843,0.002302468,0.264057988,0.005675784,0.003758177,0.002242522,2.428175e6,3.17918802e8,0.0,1.8493163494148416e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.3287505,0.050543248,0.045663502,0.00557982,0.32678831,0.050412215,0.045301828,0.005529906,1.7527585e7,2.1925367162e10,2.0,8.988148911207075e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,Boeing/bcsstk38,S,8032,355460,Float64,1,1,0.035547276,0.004547345,0.003314338,0.000476385,0.035325259,0.004471816,0.003246062,0.00044544,798965.0,1.30393272e8,0.0,6.496398763236308e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,GHS_psdef/apache2,S,715176,4817870,Float64,1,1,4.445488464,0.518107596,0.489350197,0.006803422,4.395045641,0.517172704,0.48834013,0.006732254,1.44624555e8,2.28522934388e11,21.0,1.5833232788559718e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,HB/bcsstk17,S,10974,428650,Float64,1,1,0.04223345,0.005448602,0.003374267,0.000500055,0.041295614,0.004759053,0.003276558,0.000466355,1.077096e6,1.67140496e8,0.0,3.871657523736132e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_1,S,1088,12860,Float64,1,1,0.012892998,0.00090504,0.000390436,0.000383086,0.012711183,0.000887961,0.000328677,0.000210158,15200.0,272110.0,0.0,2.9856012503869884e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_10,S,1088,12860,Float64,1,1,0.0120357,0.000921386,0.000349386,0.000249257,0.011896031,0.000885042,0.000342756,0.000221558,15200.0,272110.0,0.0,9.524756251521279e-6,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_20,S,1088,12860,Float64,1,1,0.012924046,0.000898801,0.000351147,0.000282048,0.012052111,0.000894021,0.000324507,0.000249868,15200.0,272110.0,0.0,0.10788231601615018,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.016237889,0.000845492,0.000362796,0.000228698,0.016043515,0.000835202,0.000320807,0.000207168,20211.0,196794.0,0.0,2.3998849853705906,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.016180678,0.000867582,0.000353717,0.000284317,0.015647444,0.000817112,0.000324507,0.000254677,20211.0,196794.0,0.0,10.084656255768957,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.01617026,0.000830412,0.000399596,0.000271848,0.015906871,0.000804042,0.000365896,0.000259728,20211.0,196794.0,0.0,6.0336051500002705,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_1,S,11192,136724,Float64,1,1,0.053345349,0.001386526,0.000684413,0.000355206,0.051259324,0.001379215,0.000654863,0.000270188,155201.0,3.329818e6,0.0,0.00029614275663591045,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_10,S,11192,136724,Float64,1,1,0.052355873,0.001393086,0.000642869,0.000278637,0.05116971,0.001380426,0.000632463,0.000273607,155201.0,3.329818e6,0.0,0.0001224562514208483,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_20,S,11192,136724,Float64,1,1,0.053066679,0.001647274,0.000705523,0.000610564,0.051548198,0.001403246,0.000652673,0.000359671,155201.0,3.329818e6,0.0,7.55487743275319e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097397122,0.00153126,0.000816451,0.000421192,0.095319062,0.001504125,0.000765232,0.000366806,202300.0,2.326076e6,0.0,108.0582883952038,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.096375736,0.00154884,0.000827192,0.00044804,0.094609414,0.00151934,0.000785198,0.000433046,202300.0,2.326076e6,0.0,52.17854436066793,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.10036616,0.001595909,0.000805892,0.000412261,0.094218957,0.001523895,0.000779842,0.000397091,202300.0,2.326076e6,0.0,140.0478360719644,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_1,S,118,1282,Float64,1,1,0.006654315,0.000225657,0.000192468,0.000321417,0.006598713,0.000188738,0.000169499,0.000232698,1268.0,15255.0,0.0,9.81468171037147e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_10,S,118,1282,Float64,1,1,0.006688553,0.000193968,0.000229428,0.000264877,0.006625943,0.000181279,0.000205268,0.000243147,1268.0,15255.0,0.0,0.00012883083671537157,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_11,S,118,1282,Float64,1,1,0.006743062,0.000212238,0.000290707,0.000299107,0.006663254,0.000186448,0.000177238,0.000166418,1268.0,15255.0,0.0,1.4434712774694826e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.009205469,0.000216368,0.000280138,0.000264977,0.007392428,0.000182158,0.000174679,0.000189288,2024.0,15061.0,0.0,0.18246516229355206,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007534584,0.000283407,0.000237828,0.000262317,0.007520445,0.000250568,0.000207868,0.000194548,2024.0,15061.0,0.0,0.294793479199583,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007628965,0.000217088,0.000321507,0.000435436,0.007390027,0.000183308,0.000197218,0.000218747,2024.0,15061.0,0.0,0.2209028165354915,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,lap2d_300,S,90000,448800,Float64,1,1,0.25650659,0.007134768,0.005149699,0.000712128,0.251955638,0.00710648,0.005074279,0.000660573,2.428175e6,3.17918802e8,0.0,1.6049723724157528e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,lap3d_40,S,64000,438400,Float64,1,1,0.33161942,0.062896139,0.058362218,0.001414836,0.325486651,0.062546769,0.058168071,0.001368406,1.7527585e7,2.1925367162e10,2.0,7.679721602411845e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.015821558,0.000827447,0.000370946,0.000600049,0.015663984,0.000792982,0.000363487,0.000540355,20211.0,196794.0,0.0,0.004422323681820168,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.015955475,0.000811912,0.000502855,0.00055033,0.015832857,0.000788533,0.000312181,0.000503565,20211.0,196794.0,0.0,0.016446167821606704,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.015504766,0.000828421,0.000338877,0.000595613,0.015441935,0.000762762,0.000308967,0.000477775,20211.0,196794.0,0.0,0.18897178625860092,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097701808,0.001555304,0.000931341,0.000814286,0.094506549,0.00153716,0.000842992,0.000791527,202300.0,2.326076e6,0.0,5.107425409697022,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.09736267,0.001534901,0.000812772,0.000977825,0.095261481,0.00150829,0.000763362,0.000793712,202300.0,2.326076e6,0.0,1.9129096394710416,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.097420885,0.001554195,0.000825402,0.000957545,0.095711143,0.001541049,0.000786862,0.000806992,202300.0,2.326076e6,0.0,13.86903644125827,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.007758553,0.000222357,0.000215238,0.000718819,0.007514985,0.000194518,0.000187978,0.000370976,2024.0,15061.0,0.0,3.2268591438362523e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007469755,0.000294767,0.000233088,0.001260488,0.007432257,0.000210468,0.000204258,0.000473776,2024.0,15061.0,0.0,9.140251785245421e-6,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007463276,0.000205608,0.000234768,0.000649624,0.007410946,0.000187528,0.000214528,0.000338227,2024.0,15061.0,0.0,2.3982316148866614e-8,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,8,0.011785488,0.001882661,0.000586314,0.000246118,0.011511936,0.001844622,0.000483335,0.000236768,15200.0,272110.0,0.0,3.217810034932607e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,8,0.011965242,0.001865081,0.000561824,0.000326207,0.011498377,0.001847687,0.000488045,0.000250607,15200.0,272110.0,0.0,1.2018641140881662e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,8,0.011830413,0.001971265,0.000492485,0.000279877,0.011569625,0.001867541,0.000478025,0.000260537,15200.0,272110.0,0.0,0.16536169031735817,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,8,0.051920204,0.003998411,0.001876202,0.000474765,0.051258174,0.003969922,0.001604934,0.000445376,155201.0,3.329818e6,0.0,0.00033907536094029506,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,8,0.051939349,0.004605709,0.001562904,0.000503245,0.050949969,0.003924111,0.001534472,0.000461185,155201.0,3.329818e6,0.0,0.0001359772524016248,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,8,0.052882669,0.003996862,0.001566714,0.000630124,0.051098876,0.00389837,0.001545668,0.000469485,155201.0,3.329818e6,0.0,7.836976721473675e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,8,0.007323498,0.000739307,0.000212718,0.000375006,0.006640973,0.000677543,0.000206008,0.000237708,1268.0,15255.0,0.0,8.245295917011054e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,8,0.006737062,0.000748688,0.000207818,0.000195688,0.006662424,0.000647532,0.000190019,0.000158349,1268.0,15255.0,0.0,0.0001559511859180611,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,8,0.007098868,0.000712893,0.000222487,0.000222658,0.006622695,0.000670204,0.000208248,0.000187638,1268.0,15255.0,0.0,1.8847019801264928e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,lu,T19,Rajat/rajat21,G,411676,1893370,Float64,1,1,1.772969221,0.031858759,0.029320553,0.00203524,1.767117448,0.031741144,0.029049092,0.00200654,6.891584e6,5.212013513e9,2.0,6.296735861977335e7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,lu,T19,TSOPF/TSOPF_RS_b39_c7,G,14098,252446,Float64,1,1,0.089234729,0.002627054,0.00102844,0.00045147,0.084698153,0.00255188,0.00098804,0.000327406,1.47e6,9.5459011e7,0.0,2.2410049029105248e29,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011735983,0.000945062,0.000373877,0.000201348,0.011651173,0.000861051,0.000369615,0.000180628,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011578734,0.000933777,0.000396186,0.000173608,0.011425206,0.000859707,0.000341637,0.000159088,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.01208741,0.000910696,0.000363306,0.000201418,0.011559116,0.000860595,0.000344556,0.000179999,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.0526824,0.001506665,0.000690703,0.000211968,0.052155314,0.001414196,0.000675033,0.000197578,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.052461234,0.001679343,0.000685012,0.000216408,0.052247965,0.001424446,0.000645193,0.000199018,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.052776825,0.001430416,0.000689813,0.000218817,0.051988683,0.001410626,0.000616669,0.000181698,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.00709225,0.000280908,0.000231617,0.000166958,0.006702743,0.000208898,0.000216188,0.000153498,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006898827,0.000267047,0.000323007,0.000171878,0.006725453,0.000240687,0.000239707,0.000155279,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.008140498,0.000256278,0.000237447,0.000179048,0.006923101,0.000236178,0.000220528,0.000146369,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.021474177,0.00102757,0.000483696,0.000259027,0.021152805,0.000912861,0.00045789,0.000241378,73778.0,1.64941e6,0.0,3.708588017598577e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.021688946,0.001047665,0.000480855,0.000242648,0.021428798,0.000942731,0.000450315,0.000230108,71018.0,1.513289e6,0.0,7.862883953651755e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.021701855,0.000969181,0.000678534,0.000264427,0.02117276,0.000937511,0.000487535,0.000239598,68472.0,1.396484e6,0.0,3.7614986115076254e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.12949221,0.002224048,0.001216888,0.000418896,0.128672234,0.002103199,0.001201709,0.000412436,722739.0,1.9670743e7,0.0,0.004891380877560148,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.132934829,0.002223467,0.001392347,0.000418996,0.130164369,0.002191833,0.001245028,0.000380046,730963.0,2.0806467e7,0.0,0.004714071653711646,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.135263866,0.002141514,0.001203538,0.000397316,0.134955923,0.002095214,0.001118759,0.000380156,722763.0,1.9509233e7,0.0,0.015554030920514779,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.008748358,0.000324357,0.000286527,0.000221928,0.008574744,0.000240468,0.000249427,0.000203068,7264.0,137558.0,0.0,8.541235733582555e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.008562856,0.000345377,0.000375377,0.000248797,0.008226709,0.000247698,0.000249388,0.000169018,6926.0,119037.0,0.0,7.951719673608634e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.008398447,0.000271497,0.000324967,0.000226418,0.008249189,0.000239948,0.000309937,0.000210068,6926.0,119037.0,0.0,4.7070448639145856e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,nubatch,T22,batch_of_9,SPD,37194,452598,Float64,1,9,0.129192436,0.002006649,0.00094972,0.000426816,0.128671157,0.001997955,0.000927771,0.000416646,512386.0,1.0980714e7,0.0,0.1855924609238113,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.03519364,0.003551285,0.002242748,0.000455956,0.034483501,0.00345768,0.002195888,0.000443325,798965.0,1.30393272e8,0.0,2.1529756798740355e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.300241032,0.447041143,0.417117744,0.006530704,4.265771335,0.446236761,0.416517738,0.006489032,1.44624555e8,2.28522934388e11,21.0,1.7986750735138067e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.041490758,0.003767072,0.002381005,0.000509775,0.040661166,0.003724293,0.002355786,0.000454925,1.077096e6,1.67140496e8,0.0,4.284380268951044e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011823822,0.000889541,0.000384556,0.000243097,0.011605846,0.000847427,0.000314935,0.000208568,15200.0,272110.0,0.0,3.451095742061928e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011805553,0.000907841,0.000345436,0.000248888,0.011544824,0.000846391,0.000294587,0.000210308,15200.0,272110.0,0.0,1.1718305601301206e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.011582684,0.000858532,0.000392326,0.000239667,0.011541126,0.000847671,0.000316527,0.000210728,15200.0,272110.0,0.0,0.375282906413019,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054624476,0.001330001,0.000754478,0.000290327,0.052442768,0.001317827,0.000562674,0.000262027,155201.0,3.329818e6,0.0,0.00030746890622787316,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.057367709,0.001428326,0.000595444,0.000339016,0.051727384,0.001387711,0.000581155,0.000269007,155201.0,3.329818e6,0.0,0.00014020524088089663,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.054101041,0.001328372,0.000736283,0.000335397,0.053496147,0.001279297,0.000571005,0.000249748,155201.0,3.329818e6,0.0,7.776584912878078e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.007071268,0.000267237,0.000216608,0.000355707,0.006794663,0.000195038,0.000190658,0.000172469,1268.0,15255.0,0.0,6.85483844053459e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.007169144,0.000223568,0.000223628,0.000344817,0.007052829,0.000208938,0.000182609,0.000175548,1268.0,15255.0,0.0,0.0001034655941244147,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006958001,0.000223258,0.000217048,0.000264088,0.006758034,0.000188108,0.000192678,0.000182848,1268.0,15255.0,0.0,1.1091126531769816e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,lap2d_300,SPD,90000,448800,Float64,1,1,0.261020839,0.005727948,0.003799182,0.000702483,0.259065453,0.005713919,0.003768582,0.000657094,2.428175e6,3.17918802e8,0.0,1.8478589965644124e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,lap3d_40,SPD,64000,438400,Float64,1,1,0.326983407,0.050756211,0.045835803,0.001386986,0.323049685,0.050598516,0.045692599,0.001316497,1.7527585e7,2.1925367162e10,2.0,8.296433336120358e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.374816114,0.445513119,0.417558463,0.006507555,4.286415223,0.445088838,0.417379808,0.006481426,1.44624555e8,2.28522934388e11,21.0,1.798573273274856e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.053210885,0.001402411,0.000613574,0.000328016,0.05177894,0.001319837,0.000591827,0.000265197,155201.0,3.329818e6,0.0,0.00029085192956193,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.054697406,0.001411285,0.000593029,0.000452441,0.053131121,0.001307366,0.000561254,0.000249587,155201.0,3.329818e6,0.0,0.00014743927960820415,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.051966932,0.001318071,0.000779362,0.000340887,0.051623132,0.001301527,0.000588474,0.000265438,155201.0,3.329818e6,0.0,7.138105411625885e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 diff --git a/bench/comparison/sds.csv b/bench/comparison/sds.csv new file mode 100644 index 0000000..8a44ad1 --- /dev/null +++ b/bench/comparison/sds.csv @@ -0,0 +1,29 @@ +solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,status,device,version,git_sha,date +sds,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.051890449,0.023522257,0.023524246,0.001832231,0.051410469,0.023499855,0.023499882,0.001805962,804613.0,1.40793119e8,604.0,1.050998291749151e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,6.347686767,1.034885809,1.022444483,0.074889794,6.265814823,1.028685823,1.021519372,0.07229964,1.29200941e8,1.66491403722e11,123689.0,1.5829650410070863e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.064751431,0.029552157,0.029534024,0.003483474,0.063534974,0.029472688,0.029480481,0.003420696,1.043601e6,1.6795197e8,1300.0,5.332675559338744e-11,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.004484716,0.003884621,0.003847732,0.0020568,0.004451306,0.003870385,0.003837842,0.00204275,11634.0,219042.0,303.0,0.0001499152129335686,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.004559915,0.003614689,0.003610814,0.00206538,0.004440866,0.003593344,0.003595084,0.002040329,11634.0,219042.0,303.0,1.0007128179490731e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.004503516,0.003607394,0.003612954,0.002057379,0.004421135,0.003605835,0.003610514,0.00204536,11634.0,219042.0,303.0,0.0977012881293089,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.049476357,0.039592766,0.039240865,0.019515475,0.048071343,0.039285099,0.038925043,0.018733869,120598.0,2.787739e6,3134.0,0.00028169146220954487,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.048520826,0.038104691,0.038116421,0.019484666,0.048025465,0.037961449,0.037752569,0.019464316,120598.0,2.787739e6,3134.0,0.00014028077734730922,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.049097006,0.03812523,0.03817151,0.019457852,0.04811576,0.037771423,0.037822942,0.019441296,120598.0,2.787739e6,3134.0,7.407112355532926e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.000838792,0.000532905,0.000538805,0.000360116,0.000837712,0.000517615,0.000518015,0.000346416,1027.0,15193.0,33.0,1.6538473403875516e-6,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.0009897,0.000499671,0.000547445,0.000381926,0.000837262,0.000479085,0.000503865,0.000349847,1027.0,15193.0,33.0,0.00015711648509796294,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.001025256,0.000501455,0.000516565,0.000381616,0.000859421,0.000492285,0.000482136,0.000360477,1027.0,15193.0,33.0,1.670170208071547e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.356324524,0.03709501,0.03615737,0.0040768,0.347707286,0.0361488,0.036134991,0.004063689,2.465905e6,3.73611053e8,20495.0,1.7764560196707835e-12,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.388272207,0.223104535,0.223224558,0.015710183,0.382448009,0.222876644,0.222748794,0.015234358,1.438716e7,1.6401480134e10,11066.0,7.475443780134238e-14,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.054339099,0.023679715,0.023563756,0.00307347,0.051834841,0.02356229,0.023560454,0.00303231,804613.0,1.40793119e8,604.0,1.6393219803807206e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,6.40980879,1.031297849,1.022314769,0.257484409,6.291268975,1.023068221,1.01851965,0.255450539,1.29200941e8,1.66491403722e11,123689.0,1.5951527990509154e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.065047407,0.02977353,0.029801308,0.005647859,0.064181421,0.029584785,0.029579275,0.005614173,1.043601e6,1.6795197e8,1300.0,5.886919577134717e-11,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.004464125,0.00386795,0.003872062,0.00206542,0.004447716,0.003849352,0.003852162,0.00206108,11634.0,219042.0,303.0,0.0001499152129335686,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.004659599,0.003608983,0.003600773,0.00205388,0.004447886,0.003579594,0.003580575,0.001837572,11634.0,219042.0,303.0,1.1028908236861046e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.004493895,0.003619108,0.003610204,0.00208505,0.004446125,0.003596975,0.003587225,0.002054209,11634.0,219042.0,303.0,0.31757187210790866,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.049133047,0.039580746,0.03964835,0.019292918,0.048634545,0.039519576,0.039475027,0.019287433,120598.0,2.787739e6,3134.0,0.000392992742458017,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.048452598,0.03830791,0.038403078,0.019356272,0.048091242,0.03819067,0.03833151,0.019344493,120598.0,2.787739e6,3134.0,0.00014411152068572583,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.049065033,0.03837384,0.038382999,0.019356258,0.047930834,0.038297181,0.038311504,0.019348957,120598.0,2.787739e6,3134.0,9.671929703062016e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.000858501,0.000516995,0.000545935,0.000404966,0.000834382,0.000513445,0.000510625,0.000393276,1027.0,15193.0,33.0,2.709170129303515e-6,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.000868732,0.000494035,0.000486415,0.000402116,0.000855792,0.000486355,0.000482685,0.000389536,1027.0,15193.0,33.0,0.00045426768909551265,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.000888871,0.000509215,0.000494545,0.000424136,0.000842331,0.000485426,0.000482595,0.000391186,1027.0,15193.0,33.0,3.7141469401124885e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.323934096,0.036517037,0.036480822,0.009221548,0.320688974,0.036465757,0.036467707,0.009073139,2.465905e6,3.73611053e8,20495.0,1.7990179771326481e-12,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.389936991,0.224155468,0.224043848,0.04919011,0.38503067,0.223895532,0.223768059,0.049077322,1.438716e7,1.6401480134e10,11066.0,8.454273789194102e-14,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 diff --git a/bench/features.jl b/bench/features.jl new file mode 100644 index 0000000..a7b0afa --- /dev/null +++ b/bench/features.jl @@ -0,0 +1,115 @@ +# Feature table of the cuDSS vs SparseDirectSolver.jl comparison (`compare.jl`, +# `compare_report.jl`): one entry per planned feature, in TASKS.md order. A +# feature counts as implemented when its task is marked done in TASKS.md; until +# then the SparseDirectSolver run skips it and the report leaves its cells blank. +# Plain Float32 factorizations are left out: cuDSS fails on every condensed KKT +# dump in Float32, and single precision is not accurate enough for these +# systems. Float32 factors appear only with Float64 refinement (T27). +# +# Declarative only: no GPU package, no solver package, so the test suite can +# include it. Matrix selectors take anything with `name`, `source` and +# `structures` fields (a `BenchMatrices.BenchMatrix`). + +module BenchFeatures + +export Feature, COMPARE_FEATURES, feature, task_status, feature_implemented + +""" + Feature(; id, title, task, structure, matrices, kwargs...) + +One comparison feature. `structure` is the cuDSS structure string, `T` the +element type, `nrhs` the right-hand sides per system. `kind` selects how the +systems are built: `:single` (one matrix per row), `:ubatch` (uniform batch of +`nbatch` value sets on one pattern), `:nubatch` (all selected matrices as one +non-uniform batch), `:schur` (partial factorization with a Schur block). +`matrices(M)` decides whether harness matrix `M` belongs to the feature. +`params` are set on both solvers (the names mirror cuDSS), `cudss_params` and +`sds_params` on one side only. `cudss_supported = false` marks a feature +without cuDSS counterpart. +""" +Base.@kwdef struct Feature + id::String + title::String + task::String + structure::String + matrices::Function + T::DataType = Float64 + nrhs::Int = 1 + nbatch::Int = 1 + kind::Symbol = :single + params::Dict{String, Any} = Dict{String, Any}() + cudss_params::Dict{String, Any} = Dict{String, Any}() + sds_params::Dict{String, Any} = Dict{String, Any}() + cudss_supported::Bool = true +end + +# matrix selectors +is_condensed(M) = M.source == :dump && occursin("_condensed_", M.name) +is_k2(M) = M.source == :dump && occursin("_k2_", M.name) +spd(M) = "SPD" in M.structures +sym(M) = "S" in M.structures +unsym(M) = "G" in M.structures +case1354_condensed(M) = is_condensed(M) && occursin("case1354", M.name) + +const COMPARE_FEATURES = Feature[ + Feature(id = "cholesky_f64", title = "Cholesky, Float64", task = "T13", structure = "SPD", matrices = spd), + Feature(id = "cholesky_nrhs16", title = "Cholesky, 16 right-hand sides", task = "T12", structure = "SPD", + matrices = spd, nrhs = 16), + Feature(id = "ldlt", title = "LDLᵀ, static pivoting", task = "T15", structure = "S", matrices = sym), + Feature(id = "ldlt_ir2", title = "LDLᵀ + 2 refinement steps, K2 dumps", task = "T16", structure = "S", + matrices = is_k2, params = Dict{String, Any}("ir_n_steps" => 2)), + Feature(id = "ubatch8", title = "Uniform batch of 8, Cholesky", task = "T17", structure = "SPD", + matrices = is_condensed, nbatch = 8, kind = :ubatch), + Feature(id = "lu", title = "LU, unsymmetric", task = "T19", structure = "G", matrices = unsym), + Feature(id = "schur", title = "Schur complement, Cholesky", task = "T20", structure = "SPD", + matrices = is_condensed, kind = :schur, params = Dict{String, Any}("schur_mode" => 1)), + Feature(id = "ldlt_matching", title = "LDLᵀ + matching (algo5), K2 dumps", task = "T21", structure = "S", + matrices = is_k2, params = Dict{String, Any}("matching_alg" => "algo5")), + Feature(id = "nubatch", title = "Non-uniform batch, condensed dumps", task = "T22", structure = "SPD", + matrices = is_condensed, kind = :nubatch), + Feature(id = "solve_algo1", title = "Partitioned-inverse solve (SDS algo1, cuDSS default)", task = "T25", + structure = "SPD", matrices = spd, sds_params = Dict{String, Any}("solve_alg" => "algo1")), + Feature(id = "hybrid_memory", title = "Hybrid memory mode", task = "T26", structure = "SPD", + matrices = M -> M.name == "GHS_psdef/apache2" || case1354_condensed(M), + params = Dict{String, Any}("hybrid_memory_mode" => 1)), + Feature(id = "mixed_precision", title = "Float32 factors, Float64 refinement", task = "T27", + structure = "SPD", matrices = spd, sds_params = Dict{String, Any}("factor_precision" => Float32), + cudss_supported = false), +] + +""" + feature(id) -> Feature + +The entry of [`COMPARE_FEATURES`](@ref) with this `id`. +""" +function feature(id::AbstractString) + i = findfirst(f -> f.id == id, COMPARE_FEATURES) + i === nothing && error("unknown feature \"$id\"; available: $(join((f.id for f in COMPARE_FEATURES), ", "))") + return COMPARE_FEATURES[i] +end + +const TASKS_MD = joinpath(@__DIR__, "..", "TASKS.md") +const TASK_HEADER = r"^#{2,3} (T\d\d) — .*`\[(.)\]`\s*$" + +""" + task_status(task; tasks_md = TASKS.md) -> Char + +Status marker of `task` (`"T13"`) in TASKS.md: `' '` open, `'~'` in progress, +`'x'` or `'!'` done. Errors if the task has no header. +""" +function task_status(task::AbstractString; tasks_md::AbstractString = TASKS_MD) + for line in eachline(tasks_md) + m = match(TASK_HEADER, line) + m !== nothing && m[1] == task && return only(m[2]) + end + error("$task has no header with a status marker in $tasks_md") +end + +""" + feature_implemented(f; tasks_md = TASKS.md) -> Bool + +Whether the task of feature `f` is marked done in TASKS.md. +""" +feature_implemented(f::Feature; tasks_md::AbstractString = TASKS_MD) = task_status(f.task; tasks_md) in ('x', '!') + +end # module BenchFeatures diff --git a/bench/report/Project.toml b/bench/report/Project.toml new file mode 100644 index 0000000..592e9dd --- /dev/null +++ b/bench/report/Project.toml @@ -0,0 +1,9 @@ +[deps] +CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" +DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab" +Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[compat] +CairoMakie = "0.15" +DelimitedFiles = "1" +Printf = "1.13" diff --git a/test/Project.toml b/test/Project.toml index 41584bd..414925d 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,9 +1,11 @@ [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" +DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab" KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Metis = "2679e427-3c69-5b7f-982b-ece356f1e94b" +Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" @@ -12,9 +14,11 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Adapt = "4" Aqua = "0.8" +DelimitedFiles = "1" KernelAbstractions = "0.9" LinearAlgebra = "1.13" Metis = "1" +Printf = "1.13" Random = "1.13" SparseArrays = "1.13" Statistics = "1" diff --git a/test/test_bench_compare.jl b/test/test_bench_compare.jl new file mode 100644 index 0000000..616cf3e --- /dev/null +++ b/test/test_bench_compare.jl @@ -0,0 +1,93 @@ +# The cuDSS comparison scripts (bench/features.jl, bench/compare_report.jl): the +# feature table, the TASKS.md status gate and the Markdown rendering on synthetic +# CSVs. CPU only, no solver runs, no plotting (bench/compare.jl needs a GPU or the +# bench environment and is run by hand). + +using DelimitedFiles + +include(joinpath(@__DIR__, "..", "bench", "matrices.jl")) +include(joinpath(@__DIR__, "..", "bench", "compare_report.jl")) +const BF = BenchCompareReport.BenchFeatures + +@testset "bench/features.jl: feature table" begin + feats = BF.COMPARE_FEATURES + @test allunique(f.id for f in feats) + @test all(f.structure in ("SPD", "S", "G") for f in feats) + @test all(f.kind in (:single, :ubatch, :nubatch, :schur) for f in feats) + @test all(BF.task_status(f.task) in (' ', '~', 'x', '!') for f in feats) # every task has a header + @test BF.feature("ldlt").task == "T15" + @test_throws ErrorException BF.feature("nope") + @test !feats[findfirst(f -> f.id == "mixed_precision", feats)].cudss_supported + + # every feature selects matrices from the harness (generated, SuiteSparse names, dump names) + fake(name, source, structures) = (; name, source, structures) + harness = vcat([fake(M.name, M.source, M.structures) for M in BenchMatrices.generated_matrices()], + [fake("GHS_psdef/apache2", :suitesparse, ["SPD", "S"]), fake("Rajat/rajat21", :suitesparse, ["G"]), + fake("kkt_pglib_opf_case1354_pegase_condensed_1", :dump, ["SPD", "S"]), + fake("kkt_pglib_opf_case1354_pegase_k2_1", :dump, ["S"])]) + for f in feats + @test any(M -> f.structure in M.structures && f.matrices(M), harness) + end + k2 = BF.feature("ldlt_ir2") + @test [M.name for M in harness if k2.matrices(M)] == ["kkt_pglib_opf_case1354_pegase_k2_1"] +end + +@testset "bench/features.jl: TASKS.md status gate" begin + mktempdir() do dir + path = joinpath(dir, "TASKS.md") + write(path, """ + ## T13 — Public API v0.1 `[!]` + text mentioning T15 — something `[x]` + ## T15 — GPU LDLᵀ `[ ]` + ### T25 — Performance pass `[x]` + """) + @test BF.task_status("T13"; tasks_md = path) == '!' + @test BF.task_status("T15"; tasks_md = path) == ' ' + @test BF.task_status("T25"; tasks_md = path) == 'x' + @test_throws ErrorException BF.task_status("T99"; tasks_md = path) + @test BF.feature_implemented(BF.feature("cholesky_f64"); tasks_md = path) + @test !BF.feature_implemented(BF.feature("ldlt"); tasks_md = path) + end +end + +@testset "bench/compare_report.jl: ratios and Markdown" begin + cols = ["solver", "feature", "task", "matrix", "structure", "n", "nnz", "T", "nrhs", "nbatch", + "analysis_s", "factorization_s", "refactorization_s", "solve_s", + "analysis_min_s", "factorization_min_s", "refactorization_min_s", "solve_min_s", + "lu_nnz", "flops", "nsuperpanels", "relres", "status", "device", "version", "git_sha", "date"] + row(solver, feature, matrix, t, status = "ok") = + [solver, feature, "T13", matrix, "SPD", "100", "500", "Float64", "1", "1", + (status == "ok" ? fill(string(t), 8) : fill("", 8))..., (status == "ok" ? ["1000", "2.0e6", "0", "1.0e-12"] : fill("", 4))..., + status, "GPU", "0.8.0", "abc123", "2026-10-02"] + mktempdir() do dir + write_rows(path, rows) = open(io -> writedlm(io, [permutedims(cols); permutedims(reduce(hcat, rows))], ','), path, "w") + write_rows(joinpath(dir, "cudss.csv"), [row("cudss", "cholesky_f64", "a", 0.001), row("cudss", "cholesky_f64", "b", 0.002), + row("cudss", "ldlt", "a", 0.001)]) + write_rows(joinpath(dir, "sds.csv"), [row("sds", "cholesky_f64", "a", 0.002), row("sds", "cholesky_f64", "b", 0.008), + row("sds", "cholesky_nrhs16", "a", 0.0, "NotSupportedError: not implemented yet (T99)")]) + c = read_rows(joinpath(dir, "cudss.csv")) + s = read_rows(joinpath(dir, "sds.csv")) + @test isempty(read_rows(joinpath(dir, "missing.csv"))) + @test length(c) == 3 && c[1]["matrix"] == "a" + + ratios, count = ratio_summary(BF.feature("cholesky_f64"), c, s) + @test count == 2 + @test ratios["factorization"] ≈ sqrt(2 * 4) # geometric mean of 2× and 4× + ratios, count = ratio_summary(BF.feature("ldlt"), c, s) + @test count == 0 && ratios["solve"] === nothing + + implemented = f -> f.task in ("T12", "T13") + md = sprint(io -> render_markdown(io, c, s; implemented, plot = false)) + @test occursin("| Cholesky, Float64 | T13 | done | 2 | 2.83× | 2.83× | 2.83× | 2.83× |", md) + @test occursin("| LDLᵀ, static pivoting | T15 | pending | | | | | |", md) + @test occursin("| a | 100 | 1 | 2 | 2.00× |", md) # analysis cuDSS 1 ms, SDS 2 ms + @test occursin("| a | 100 | 1 | | |", md) # ldlt: SDS cell blank + @test occursin("fail", md) && occursin("* SDS on a: NotSupportedError", md) + @test occursin("Not run yet.", md) # features without rows + @test occursin("cuDSS 0.8.0 on GPU, repository abc123, 2026-10-02.", md) + @test !occursin("comparison.png", md) + for f in BF.COMPARE_FEATURES + @test occursin("## " * f.title, md) + end + end +end From 73b93aa3b8c3a69b399b5cb216502fe3ea1307a7 Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Fri, 2 Oct 2026 13:06:49 -0500 Subject: [PATCH 2/3] README: show the cuDSS comparison plot Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TJrmq7e9jiW4VxBMEVup2E --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 58c2478..bbdd8ac 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,18 @@ silently. * [`bench/README.md`](bench/README.md) — benchmark harness and cuDSS baselines. * [`bench/comparison/comparison.md`](bench/comparison/comparison.md) — per-feature performance comparison with cuDSS. +## Performance against cuDSS + +Time of SparseDirectSolver.jl divided by the time of cuDSS per planned +feature and phase, geometric mean over the benchmark matrices (below 1 is +faster). Features whose task is not done yet are marked pending and stay +empty. Per-matrix numbers are in +[`bench/comparison/comparison.md`](bench/comparison/comparison.md); the plot +is regenerated by hand with `bench/compare.jl` and `bench/compare_report.jl` +(see [`bench/README.md`](bench/README.md)). + +![SparseDirectSolver.jl vs cuDSS time ratio per feature](bench/comparison/comparison.png) + ## Installation The package is not registered yet. Julia 1.10 or later is required. From 37658783f9cc8e3b34df1df4287e5a6ad2c47928 Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Fri, 2 Oct 2026 17:03:10 -0500 Subject: [PATCH 3/3] bench: rerun the comparison after T15/T16; single-run timing for slow rows The SDS side now covers LDLT (T15) and LDLT with two refinement steps (T16). The T15 LDLT factorization takes 14.6 s on lap3d_40 and 91 s on apache2, and every BenchmarkTools sample refactorizes in its setup, so a row would cost twenty factorizations. compare.jl now runs all phases once (compilation, info, statistics, residual), times a second run, and records that run's times when its factorization exceeds --single-run-above (default 5 s) instead of a trial. A new `samples` column records which; the report lists single-run rows under the feature's table. The CSV is rewritten after every row so an interrupted run keeps its rows. Numeric CSV fields keep their types (nnz(L), samples were promoted to Float64). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TJrmq7e9jiW4VxBMEVup2E --- bench/README.md | 8 +- bench/compare.jl | 58 ++++++--- bench/compare_report.jl | 5 +- bench/comparison/comparison.md | 136 ++++++++++---------- bench/comparison/comparison.png | Bin 224672 -> 223259 bytes bench/comparison/cudss.csv | 218 ++++++++++++++++---------------- bench/comparison/sds.csv | 90 ++++++++----- test/test_bench_compare.jl | 11 +- 8 files changed, 295 insertions(+), 231 deletions(-) diff --git a/bench/README.md b/bench/README.md index 4273725..0b4a47d 100644 --- a/bench/README.md +++ b/bench/README.md @@ -77,7 +77,13 @@ julia --project=bench bench/compare.jl --solver=sds --features=ldlt GPU drops to a low-clock power state during the host-side setup and the timed phase starts slow (lap2d_300 factorization varied between 6 and 19 ms; with the spin it is a stable 5.9 ms, against 6.05 ms in the T04 baseline). The - report shows medians; the CSV also keeps the minima. + report shows medians; the CSV also keeps the minima. Before the trials, one + run compiles and gives `info`, nnz(L) and the residual, and a second run is + timed; if its factorization takes longer than `--single-run-above` (5 s), + its times are recorded instead of a trial (`samples` = 1 in the CSV, listed + under the feature's table). This keeps slow rows, such as the T15 LDLᵀ on + the larger matrices, from costing twenty factorizations each. The CSV is + rewritten after every row, so an interrupted run keeps what it measured. * **Synthetic inputs.** `ubatch8` builds 8 value sets on one pattern by scaling the diagonal of member k by 1 + 0.01(k−1). `schur` takes the last min(64, n/10) rows as the Schur block and times `solve_fwd_schur` as the diff --git a/bench/compare.jl b/bench/compare.jl index 9bde4b2..57e40a7 100644 --- a/bench/compare.jl +++ b/bench/compare.jl @@ -12,6 +12,8 @@ # --only=m1,m2 matrix names (default: all harness matrices) # --samples=5 BenchmarkTools samples per phase (after its warm-up sample) # --seconds=60 time budget per phase; sampling stops at whichever limit comes first +# --single-run-above=5 if one factorization takes longer (seconds), record the +# times of a single run instead of a BenchmarkTools trial # --no-suitesparse skip the MatrixDepot matrices # --no-dumps skip the KKT dumps under bench/data/ # --force run SDS features whose task is not done in TASKS.md (rows record the error) @@ -19,8 +21,10 @@ # Each phase is timed on a fresh solver: the `setup` of the benchmark creates the # solver and runs the phases it depends on, the timed expression runs the phase # and synchronizes the device. On a GPU the setup ends by keeping the device busy -# for 0.2 s so that it is at full clock (see `spin_device`). One more untimed -# run gives `info`, the statistics and the residual. +# for 0.2 s so that it is at full clock (see `spin_device`). A first run of all +# phases compiles and gives `info`, the statistics and the residual; when the +# factorization of a second run exceeds --single-run-above, the times of that +# run are recorded instead of a trial. using LinearAlgebra using SparseArrays @@ -36,12 +40,12 @@ using .BenchFeatures function parse_args(args) o = Dict{String, String}("solver" => "", "backend" => "cuda", "features" => "", "only" => "", - "samples" => "5", "seconds" => "60", "suitesparse" => "true", "dumps" => "true", + "samples" => "5", "seconds" => "60", "single-run-above" => "5", "suitesparse" => "true", "dumps" => "true", "force" => "false") for a in args if a in ("--no-suitesparse", "--no-dumps", "--force") o[a == "--force" ? "force" : a[6:end]] = a == "--force" ? "true" : "false" - elseif (m = match(r"^--(solver|backend|features|only|samples|seconds)=(.*)$", a)) !== nothing + elseif (m = match(r"^--(solver|backend|features|only|samples|seconds|single-run-above)=(.*)$", a)) !== nothing o[m[1]] = m[2] else error("unknown argument \"$a\"; see the header of bench/compare.jl") @@ -210,19 +214,34 @@ function stat(f, s) end """ - measure(sys; samples, seconds) -> NamedTuple + measure(sys; samples, seconds, single_run_above) -> NamedTuple -Timings of the four phases, then one untimed run for `info`, statistics and the residual. +A first run of all four phases compiles and gives `info`, the statistics and +the residual. A second run is timed phase by phase; if its factorization took +longer than `single_run_above` seconds, its times are recorded (`samples = 1`), +otherwise each phase gets a BenchmarkTools trial (median and minimum). """ -function measure(sys; samples, seconds) - times = Dict(p => time_phase(sys, p; samples, seconds) for p in PHASES) +function measure(sys; samples, seconds, single_run_above) st = sys.fresh() foreach(p -> run_phase(sys, st, p), PHASES) sync() info = API.get(st[1], "info") info == 0 || error("info = $info after the factorization") - return (; times, relres = sys.check(solution(st)), lu_nnz = stat(s -> API.get(s, "lu_nnz"), st[1]), - flops = stat(API.flops, st[1]), nsuperpanels = stat(s -> API.get(s, "nsuperpanels"), st[1])) + stats = (relres = sys.check(solution(st)), lu_nnz = stat(s -> API.get(s, "lu_nnz"), st[1]), + flops = stat(API.flops, st[1]), nsuperpanels = stat(s -> API.get(s, "nsuperpanels"), st[1])) + st = sys.fresh() + once = Dict{String, Float64}() + for p in PHASES + p == "analysis" || spin_device() + t0 = time_ns() + run_phase(sys, st, p) + sync() + once[p] = (time_ns() - t0) / 1e9 + end + single = once["factorization"] > single_run_above + times = single ? Dict(p => (once[p], once[p]) for p in PHASES) : + Dict(p => time_phase(sys, p; samples, seconds) for p in PHASES) + return (; times, samples = single ? 1 : samples, stats...) end # --- CSV --------------------------------------------------------------------- @@ -230,7 +249,7 @@ end const COLUMNS = ["solver", "feature", "task", "matrix", "structure", "n", "nnz", "T", "nrhs", "nbatch", "analysis_s", "factorization_s", "refactorization_s", "solve_s", "analysis_min_s", "factorization_min_s", "refactorization_min_s", "solve_min_s", - "lu_nnz", "flops", "nsuperpanels", "relres", "status", "device", "version", "git_sha", "date"] + "lu_nnz", "flops", "nsuperpanels", "relres", "samples", "status", "device", "version", "git_sha", "date"] cell(x) = x === missing || x === nothing ? "" : x isa AbstractFloat ? repr(Float64(x)) : string(x) clean(msg) = first(strip(replace(msg, r"[,\"\s]+" => " ")), 200) @@ -255,10 +274,10 @@ function csv_row(f, name, Ms, result, meta) head = [SOLVER, f.id, f.task, name, f.structure, string(n), string(nz), string(f.T), string(f.nrhs), string(f.kind == :nubatch ? length(Ms) : f.nbatch)] if result isa Exception - body = vcat(fill("", 12), clean(sprint(showerror, result))) + body = vcat(fill("", 13), clean(sprint(showerror, result))) else body = vcat([cell(result.times[p][1]) for p in PHASES], [cell(result.times[p][2]) for p in PHASES], - cell.([result.lu_nnz, result.flops, result.nsuperpanels, result.relres]), "ok") + [cell(x) for x in (result.lu_nnz, result.flops, result.nsuperpanels, result.relres, result.samples)], "ok") end return vcat(head, body, meta) end @@ -293,12 +312,14 @@ end function main() ON_GPU && !CUDA.functional() && error("CUDA is not functional on this machine") samples, seconds = parse(Int, OPTS["samples"]), parse(Float64, OPTS["seconds"]) + single_run_above = parse(Float64, OPTS["single-run-above"]) ids = filter(!isempty, split(OPTS["features"], ',')) features = isempty(ids) ? COMPARE_FEATURES : feature.(ids) mats = bench_matrices(; suitesparse = OPTS["suitesparse"] == "true", dumps = OPTS["dumps"] == "true") only_names = filter(!isempty, split(OPTS["only"], ',')) isempty(only_names) || filter!(M -> M.name in only_names, mats) meta = [device_name(), API.version, git_sha(), string(today())] + out = joinpath(@__DIR__, "comparison", "$SOLVER.csv") println(SOLVER, " ", API.version, " on ", meta[1], ", samples = ", samples) rows = Vector{Vector{String}}() @@ -317,7 +338,7 @@ function main() print(rpad(f.id, 18), rpad(name, 42)) flush(stdout) result = try - Base.invokelatest(measure, build_system(f, Ms); samples, seconds) + Base.invokelatest(measure, build_system(f, Ms); samples, seconds, single_run_above) catch err err isa InterruptException && rethrow() err @@ -326,15 +347,14 @@ function main() println("FAILED: ", first(sprint(showerror, result), 160)) else println(join(("$p $(round(result.times[p][1] * 1e3; sigdigits = 3)) ms" for p in PHASES), ", "), - ", relres ", result.relres === missing ? "-" : round(result.relres; sigdigits = 2)) + ", relres ", result.relres === missing ? "-" : round(result.relres; sigdigits = 2), + result.samples == 1 ? " (single run)" : "") end push!(rows, csv_row(f, name, Ms, result, meta)) + merge_csv(out, rows) # after every row, so an interrupted run keeps what it measured end end - isempty(rows) && return println("nothing to run") - out = joinpath(@__DIR__, "comparison", "$SOLVER.csv") - merge_csv(out, rows) - println("wrote ", out) + println(isempty(rows) ? "nothing to run" : "wrote $out") end if abspath(PROGRAM_FILE) == @__FILE__ diff --git a/bench/compare_report.jl b/bench/compare_report.jl index a5ae60e..aee1fd8 100644 --- a/bench/compare_report.jl +++ b/bench/compare_report.jl @@ -104,7 +104,7 @@ function render_markdown(io::IO, cudss_rows, sds_rows; features = COMPARE_FEATUR foreach(p -> print(io, " $p cuDSS ms | SDS ms | ratio |"), PHASES) println(io, " nnz(L) cuDSS | SDS | relres cuDSS | SDS |") println(io, "|", repeat(" --- |", 2 + 3 * length(PHASES) + 4)) - failures = String[] + failures, single = String[], String[] for m in names c, s = find_row(cudss_rows, f, m), find_row(sds_rows, f, m) n = c !== nothing ? c["n"] : s["n"] @@ -114,10 +114,13 @@ function render_markdown(io::IO, cudss_rows, sds_rows; features = COMPARE_FEATUR " | ", fmt_field(s, "relres"), " |") for (who, r) in (("cuDSS", c), ("SDS", s)) r !== nothing && !ok(r) && push!(failures, "$who on $m: $(r["status"])") + ok(r) && get(r, "samples", "") == "1" && push!(single, "$who on $m") end end println(io) isempty(failures) || (foreach(x -> println(io, "* ", x), failures); println(io)) + isempty(single) || println(io, "Single run instead of a BenchmarkTools trial (factorization above the ", + "`--single-run-above` limit): ", join(single, ", "), ".\n") end println(io, "## Runs\n") for (who, rows) in (("cuDSS", cudss_rows), ("SparseDirectSolver.jl", sds_rows)) diff --git a/bench/comparison/comparison.md b/bench/comparison/comparison.md index 7312bfa..d4f41e0 100644 --- a/bench/comparison/comparison.md +++ b/bench/comparison/comparison.md @@ -10,10 +10,10 @@ Geometric mean of the SDS/cuDSS ratio over the matrices both solvers ran. | feature | task | status | matrices | analysis | factorization | refactorization | solve | | --- | --- | --- | --- | --- | --- | --- | --- | -| Cholesky, Float64 | T13 | done | 14 | 0.57× | 5.60× | 8.96× | 8.56× | -| Cholesky, 16 right-hand sides | T12 | done | 14 | 0.58× | 5.92× | 9.37× | 6.98× | -| LDLᵀ, static pivoting | T15 | pending | | | | | | -| LDLᵀ + 2 refinement steps, K2 dumps | T16 | pending | | | | | | +| Cholesky, Float64 | T13 | done | 14 | 0.60× | 5.64× | 9.06× | 8.93× | +| Cholesky, 16 right-hand sides | T12 | done | 14 | 0.60× | 6.06× | 9.52× | 7.28× | +| LDLᵀ, static pivoting | T15 | done | 23 | 1.12× | 20.44× | 29.78× | 13.42× | +| LDLᵀ + 2 refinement steps, K2 dumps | T16 | done | 9 | 2.67× | 23.40× | 35.99× | 33.25× | | Uniform batch of 8, Cholesky | T17 | pending | | | | | | | LU, unsymmetric | T19 | pending | | | | | | | Schur complement, Cholesky | T20 | pending | | | | | | @@ -29,20 +29,20 @@ Geometric mean of the SDS/cuDSS ratio over the matrices both solvers ran. | matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Boeing/bcsstk38 | 8032 | 35.1 | 51.9 | 1.48× | 3.52 | 23.5 | 6.68× | 2.3 | 23.5 | 10.25× | 0.462 | 1.83 | 3.96× | 7.99e+05 | 8.05e+05 | 2.15e-10 | 1.05e-10 | -| GHS_psdef/apache2 | 715176 | 4.28e+03 | 6.35e+03 | 1.48× | 449 | 1.03e+03 | 2.30× | 421 | 1.02e+03 | 2.43× | 6.62 | 74.9 | 11.31× | 1.45e+08 | 1.29e+08 | 1.8e-10 | 1.58e-10 | -| HB/bcsstk17 | 10974 | 43.2 | 64.8 | 1.50× | 3.9 | 29.6 | 7.57× | 2.45 | 29.5 | 12.04× | 0.5 | 3.48 | 6.96× | 1.08e+06 | 1.04e+06 | 4.02e-11 | 5.33e-11 | -| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 13 | 4.48 | 0.34× | 0.992 | 3.88 | 3.92× | 0.438 | 3.85 | 8.79× | 0.256 | 2.06 | 8.03× | 1.52e+04 | 1.16e+04 | 7.26e-05 | 0.00015 | -| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12.3 | 4.56 | 0.37× | 1.02 | 3.61 | 3.53× | 0.53 | 3.61 | 6.81× | 0.261 | 2.07 | 7.93× | 1.52e+04 | 1.16e+04 | 1.4e-05 | 1e-05 | -| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.8 | 4.5 | 0.35× | 1.06 | 3.61 | 3.39× | 0.351 | 3.61 | 10.28× | 0.257 | 2.06 | 8.01× | 1.52e+04 | 1.16e+04 | 0.293 | 0.0977 | -| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 54.2 | 49.5 | 0.91× | 1.35 | 39.6 | 29.23× | 0.585 | 39.2 | 67.07× | 0.269 | 19.5 | 72.55× | 1.55e+05 | 1.21e+05 | 0.000316 | 0.000282 | -| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 55.4 | 48.5 | 0.88× | 1.4 | 38.1 | 27.28× | 0.584 | 38.1 | 65.26× | 0.375 | 19.5 | 51.92× | 1.55e+05 | 1.21e+05 | 0.000142 | 0.00014 | -| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 55.4 | 49.1 | 0.89× | 1.39 | 38.1 | 27.34× | 0.685 | 38.2 | 55.72× | 0.387 | 19.5 | 50.23× | 1.55e+05 | 1.21e+05 | 7.94e-05 | 7.41e-05 | -| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.82 | 0.839 | 0.12× | 0.216 | 0.533 | 2.47× | 0.225 | 0.539 | 2.40× | 0.187 | 0.36 | 1.93× | 1.27e+03 | 1.03e+03 | 4.09e-07 | 1.65e-06 | -| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.77 | 0.99 | 0.15× | 0.221 | 0.5 | 2.26× | 0.212 | 0.547 | 2.58× | 0.195 | 0.382 | 1.96× | 1.27e+03 | 1.03e+03 | 0.000109 | 0.000157 | -| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.89 | 1.03 | 0.15× | 0.242 | 0.501 | 2.08× | 0.28 | 0.517 | 1.85× | 0.214 | 0.382 | 1.79× | 1.27e+03 | 1.03e+03 | 1.2e-05 | 1.67e-05 | -| lap2d_300 | 90000 | 281 | 356 | 1.27× | 6.84 | 37.1 | 5.43× | 3.84 | 36.2 | 9.42× | 0.852 | 4.08 | 4.78× | 2.43e+06 | 2.47e+06 | 1.84e-12 | 1.78e-12 | -| lap3d_40 | 64000 | 340 | 388 | 1.14× | 55.8 | 223 | 4.00× | 50.6 | 223 | 4.41× | 1.35 | 15.7 | 11.60× | 1.75e+07 | 1.44e+07 | 8.29e-14 | 7.48e-14 | +| Boeing/bcsstk38 | 8032 | 35.1 | 55 | 1.57× | 3.52 | 23.6 | 6.69× | 2.3 | 23.5 | 10.26× | 0.462 | 1.88 | 4.07× | 7.99e+05 | 8.05e+05 | 2.15e-10 | 1.05e-10 | +| GHS_psdef/apache2 | 715176 | 4.28e+03 | 6.08e+03 | 1.42× | 449 | 1.03e+03 | 2.30× | 421 | 1.02e+03 | 2.43× | 6.62 | 76.7 | 11.58× | 1.45e+08 | 1.29e+08 | 1.8e-10 | 1.58e-10 | +| HB/bcsstk17 | 10974 | 43.2 | 65.5 | 1.52× | 3.9 | 29.6 | 7.58× | 2.45 | 29.6 | 12.07× | 0.5 | 3.49 | 6.98× | 1.08e+06 | 1.04e+06 | 4.02e-11 | 5.05e-11 | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 13 | 4.46 | 0.34× | 0.992 | 3.87 | 3.90× | 0.438 | 3.88 | 8.86× | 0.256 | 2.72 | 10.63× | 1.52e+04 | 1.16e+04 | 7.26e-05 | 0.00015 | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12.3 | 4.78 | 0.39× | 1.02 | 3.64 | 3.55× | 0.53 | 3.67 | 6.93× | 0.261 | 2.09 | 8.02× | 1.52e+04 | 1.16e+04 | 1.4e-05 | 1e-05 | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.8 | 4.77 | 0.37× | 1.06 | 3.66 | 3.44× | 0.351 | 3.77 | 10.73× | 0.257 | 2.07 | 8.08× | 1.52e+04 | 1.16e+04 | 0.293 | 0.0977 | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 54.2 | 50 | 0.92× | 1.35 | 39.9 | 29.45× | 0.585 | 39.9 | 68.17× | 0.269 | 19.7 | 73.12× | 1.55e+05 | 1.21e+05 | 0.000316 | 0.000282 | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 55.4 | 48.7 | 0.88× | 1.4 | 38.4 | 27.50× | 0.584 | 38.3 | 65.66× | 0.375 | 19.7 | 52.44× | 1.55e+05 | 1.21e+05 | 0.000142 | 0.00014 | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 55.4 | 49 | 0.88× | 1.39 | 38.3 | 27.48× | 0.685 | 38.4 | 56.03× | 0.387 | 19.7 | 50.79× | 1.55e+05 | 1.21e+05 | 7.94e-05 | 7.41e-05 | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.82 | 0.965 | 0.14× | 0.216 | 0.526 | 2.44× | 0.225 | 0.555 | 2.47× | 0.187 | 0.402 | 2.16× | 1.27e+03 | 1.03e+03 | 4.09e-07 | 1.65e-06 | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.77 | 1.55 | 0.23× | 0.221 | 0.565 | 2.56× | 0.212 | 0.54 | 2.55× | 0.195 | 0.392 | 2.01× | 1.27e+03 | 1.03e+03 | 0.000109 | 0.000157 | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.89 | 0.937 | 0.14× | 0.242 | 0.49 | 2.03× | 0.28 | 0.539 | 1.93× | 0.214 | 0.379 | 1.78× | 1.27e+03 | 1.03e+03 | 1.2e-05 | 1.67e-05 | +| lap2d_300 | 90000 | 281 | 371 | 1.32× | 6.84 | 36.4 | 5.32× | 3.84 | 36.3 | 9.45× | 0.852 | 4.1 | 4.82× | 2.43e+06 | 2.47e+06 | 1.84e-12 | 1.78e-12 | +| lap3d_40 | 64000 | 340 | 398 | 1.17× | 55.8 | 223 | 4.00× | 50.6 | 223 | 4.42× | 1.35 | 17 | 12.59× | 1.75e+07 | 1.44e+07 | 8.29e-14 | 7.48e-14 | ## Cholesky, 16 right-hand sides @@ -50,66 +50,68 @@ Geometric mean of the SDS/cuDSS ratio over the matrices both solvers ran. | matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Boeing/bcsstk38 | 8032 | 35.3 | 54.3 | 1.54× | 3.55 | 23.7 | 6.67× | 2.29 | 23.6 | 10.29× | 0.706 | 3.07 | 4.36× | 7.99e+05 | 8.05e+05 | 6.7e-10 | 1.64e-10 | -| GHS_psdef/apache2 | 715176 | 4.3e+03 | 6.41e+03 | 1.49× | 447 | 1.03e+03 | 2.31× | 417 | 1.02e+03 | 2.45× | 27.6 | 257 | 9.33× | 1.45e+08 | 1.29e+08 | 1.83e-10 | 1.6e-10 | -| HB/bcsstk17 | 10974 | 40.8 | 65 | 1.59× | 3.8 | 29.8 | 7.83× | 2.42 | 29.8 | 12.31× | 0.758 | 5.65 | 7.45× | 1.08e+06 | 1.04e+06 | 5.13e-11 | 5.89e-11 | -| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.8 | 4.46 | 0.38× | 0.911 | 3.87 | 4.25× | 0.341 | 3.87 | 11.34× | 0.375 | 2.07 | 5.51× | 1.52e+04 | 1.16e+04 | 6.7e-05 | 0.00015 | -| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 11.9 | 4.66 | 0.39× | 0.882 | 3.61 | 4.09× | 0.406 | 3.6 | 8.87× | 0.346 | 2.05 | 5.93× | 1.52e+04 | 1.16e+04 | 1.52e-05 | 1.1e-05 | -| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.2 | 4.49 | 0.37× | 0.889 | 3.62 | 4.07× | 0.359 | 3.61 | 10.06× | 0.26 | 2.09 | 8.01× | 1.52e+04 | 1.16e+04 | 0.492 | 0.318 | -| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 51.9 | 49.1 | 0.95× | 1.37 | 39.6 | 28.84× | 0.581 | 39.6 | 68.25× | 0.487 | 19.3 | 39.62× | 1.55e+05 | 1.21e+05 | 0.000394 | 0.000393 | -| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.9 | 48.5 | 0.92× | 1.5 | 38.3 | 25.60× | 0.614 | 38.4 | 62.54× | 0.457 | 19.4 | 42.31× | 1.55e+05 | 1.21e+05 | 0.000137 | 0.000144 | -| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.3 | 49.1 | 0.92× | 1.34 | 38.4 | 28.72× | 0.701 | 38.4 | 54.73× | 0.461 | 19.4 | 41.97× | 1.55e+05 | 1.21e+05 | 9.79e-05 | 9.67e-05 | -| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.25 | 0.859 | 0.12× | 0.199 | 0.517 | 2.60× | 0.24 | 0.546 | 2.27× | 0.221 | 0.405 | 1.83× | 1.27e+03 | 1.03e+03 | 6.35e-07 | 2.71e-06 | -| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.76 | 0.869 | 0.13× | 0.218 | 0.494 | 2.27× | 0.212 | 0.486 | 2.30× | 0.365 | 0.402 | 1.10× | 1.27e+03 | 1.03e+03 | 0.000179 | 0.000454 | -| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.84 | 0.889 | 0.13× | 0.24 | 0.509 | 2.12× | 0.222 | 0.495 | 2.23× | 0.261 | 0.424 | 1.62× | 1.27e+03 | 1.03e+03 | 3.34e-05 | 3.71e-05 | -| lap2d_300 | 90000 | 271 | 324 | 1.20× | 5.71 | 36.5 | 6.40× | 3.8 | 36.5 | 9.59× | 2.3 | 9.22 | 4.01× | 2.43e+06 | 2.47e+06 | 1.85e-12 | 1.8e-12 | -| lap3d_40 | 64000 | 329 | 390 | 1.19× | 50.5 | 224 | 4.43× | 45.7 | 224 | 4.91× | 5.58 | 49.2 | 8.82× | 1.75e+07 | 1.44e+07 | 8.99e-14 | 8.45e-14 | +| Boeing/bcsstk38 | 8032 | 35.3 | 54 | 1.53× | 3.55 | 23.6 | 6.64× | 2.29 | 23.6 | 10.29× | 0.706 | 3.1 | 4.39× | 7.99e+05 | 8.05e+05 | 6.7e-10 | 1.66e-10 | +| GHS_psdef/apache2 | 715176 | 4.3e+03 | 6.23e+03 | 1.45× | 447 | 1.03e+03 | 2.30× | 417 | 1.02e+03 | 2.45× | 27.6 | 256 | 9.27× | 1.45e+08 | 1.29e+08 | 1.83e-10 | 1.6e-10 | +| HB/bcsstk17 | 10974 | 40.8 | 66.2 | 1.62× | 3.8 | 29.5 | 7.76× | 2.42 | 29.6 | 12.23× | 0.758 | 6.56 | 8.66× | 1.08e+06 | 1.04e+06 | 5.13e-11 | 5.92e-11 | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 11.8 | 4.7 | 0.40× | 0.911 | 3.87 | 4.25× | 0.341 | 3.88 | 11.36× | 0.375 | 2.18 | 5.82× | 1.52e+04 | 1.16e+04 | 6.7e-05 | 0.00015 | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 11.9 | 4.56 | 0.38× | 0.882 | 4.45 | 5.04× | 0.406 | 3.64 | 8.96× | 0.346 | 2.13 | 6.17× | 1.52e+04 | 1.16e+04 | 1.52e-05 | 1.1e-05 | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.2 | 4.74 | 0.39× | 0.889 | 3.7 | 4.16× | 0.359 | 4.01 | 11.17× | 0.26 | 2.05 | 7.87× | 1.52e+04 | 1.16e+04 | 0.492 | 0.318 | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 51.9 | 49.6 | 0.96× | 1.37 | 39.6 | 28.85× | 0.581 | 39.6 | 68.22× | 0.487 | 19.4 | 39.75× | 1.55e+05 | 1.21e+05 | 0.000394 | 0.000393 | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.9 | 49.7 | 0.94× | 1.5 | 38.4 | 25.64× | 0.614 | 38.2 | 62.24× | 0.457 | 19.3 | 42.25× | 1.55e+05 | 1.21e+05 | 0.000137 | 0.000144 | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.3 | 49.6 | 0.93× | 1.34 | 38.2 | 28.61× | 0.701 | 38.1 | 54.36× | 0.461 | 19.4 | 42.03× | 1.55e+05 | 1.21e+05 | 9.79e-05 | 9.67e-05 | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 7.25 | 0.974 | 0.13× | 0.199 | 0.555 | 2.79× | 0.24 | 0.543 | 2.26× | 0.221 | 0.449 | 2.03× | 1.27e+03 | 1.03e+03 | 6.35e-07 | 2.71e-06 | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.76 | 1.06 | 0.16× | 0.218 | 0.511 | 2.35× | 0.212 | 0.504 | 2.38× | 0.365 | 0.486 | 1.33× | 1.27e+03 | 1.03e+03 | 0.000179 | 0.000454 | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.84 | 0.941 | 0.14× | 0.24 | 0.521 | 2.17× | 0.222 | 0.543 | 2.45× | 0.261 | 0.446 | 1.71× | 1.27e+03 | 1.03e+03 | 3.34e-05 | 3.71e-05 | +| lap2d_300 | 90000 | 271 | 334 | 1.23× | 5.71 | 36.4 | 6.37× | 3.8 | 36.4 | 9.57× | 2.3 | 9.14 | 3.97× | 2.43e+06 | 2.47e+06 | 1.85e-12 | 1.8e-12 | +| lap3d_40 | 64000 | 329 | 409 | 1.24× | 50.5 | 223 | 4.41× | 45.7 | 223 | 4.88× | 5.58 | 50.5 | 9.05× | 1.75e+07 | 1.44e+07 | 8.99e-14 | 8.45e-14 | ## LDLᵀ, static pivoting -`ldlt`, T15 (pending), structure `S`, Float64, nrhs = 1. +`ldlt`, T15 (done), structure `S`, Float64, nrhs = 1. | matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Boeing/bcsstk38 | 8032 | 35.5 | | | 4.55 | | | 3.31 | | | 0.476 | | | 7.99e+05 | | 6.5e-11 | | -| GHS_psdef/apache2 | 715176 | 4.45e+03 | | | 518 | | | 489 | | | 6.8 | | | 1.45e+08 | | 1.58e-10 | | -| HB/bcsstk17 | 10974 | 42.2 | | | 5.45 | | | 3.37 | | | 0.5 | | | 1.08e+06 | | 3.87e-11 | | -| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 12.9 | | | 0.905 | | | 0.39 | | | 0.383 | | | 1.52e+04 | | 2.99e-05 | | -| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12 | | | 0.921 | | | 0.349 | | | 0.249 | | | 1.52e+04 | | 9.52e-06 | | -| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.9 | | | 0.899 | | | 0.351 | | | 0.282 | | | 1.52e+04 | | 0.108 | | -| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 16.2 | | | 0.845 | | | 0.363 | | | 0.229 | | | 2.02e+04 | | 2.4 | | -| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16.2 | | | 0.868 | | | 0.354 | | | 0.284 | | | 2.02e+04 | | 10.1 | | -| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 16.2 | | | 0.83 | | | 0.4 | | | 0.272 | | | 2.02e+04 | | 6.03 | | -| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 53.3 | | | 1.39 | | | 0.684 | | | 0.355 | | | 1.55e+05 | | 0.000296 | | -| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.4 | | | 1.39 | | | 0.643 | | | 0.279 | | | 1.55e+05 | | 0.000122 | | -| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.1 | | | 1.65 | | | 0.706 | | | 0.611 | | | 1.55e+05 | | 7.55e-05 | | -| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.4 | | | 1.53 | | | 0.816 | | | 0.421 | | | 2.02e+05 | | 108 | | -| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 96.4 | | | 1.55 | | | 0.827 | | | 0.448 | | | 2.02e+05 | | 52.2 | | -| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 100 | | | 1.6 | | | 0.806 | | | 0.412 | | | 2.02e+05 | | 140 | | -| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.65 | | | 0.226 | | | 0.192 | | | 0.321 | | | 1.27e+03 | | 9.81e-07 | | -| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.69 | | | 0.194 | | | 0.229 | | | 0.265 | | | 1.27e+03 | | 0.000129 | | -| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.74 | | | 0.212 | | | 0.291 | | | 0.299 | | | 1.27e+03 | | 1.44e-05 | | -| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 9.21 | | | 0.216 | | | 0.28 | | | 0.265 | | | 2.02e+03 | | 0.182 | | -| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.53 | | | 0.283 | | | 0.238 | | | 0.262 | | | 2.02e+03 | | 0.295 | | -| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.63 | | | 0.217 | | | 0.322 | | | 0.435 | | | 2.02e+03 | | 0.221 | | -| lap2d_300 | 90000 | 257 | | | 7.13 | | | 5.15 | | | 0.712 | | | 2.43e+06 | | 1.6e-12 | | -| lap3d_40 | 64000 | 332 | | | 62.9 | | | 58.4 | | | 1.41 | | | 1.75e+07 | | 7.68e-14 | | +| Boeing/bcsstk38 | 8032 | 35.5 | 61.1 | 1.72× | 4.55 | 129 | 28.37× | 3.31 | 129 | 38.95× | 0.476 | 2.82 | 5.92× | 7.99e+05 | 8.05e+05 | 6.5e-11 | 1.25e-10 | +| GHS_psdef/apache2 | 715176 | 4.45e+03 | 6.97e+03 | 1.57× | 518 | 9.07e+04 | 175.14× | 489 | 9.12e+04 | 186.36× | 6.8 | 89.1 | 13.10× | 1.45e+08 | 1.29e+08 | 1.58e-10 | 1.63e-10 | +| HB/bcsstk17 | 10974 | 42.2 | 72.7 | 1.72× | 5.45 | 198 | 36.39× | 3.37 | 198 | 58.76× | 0.5 | 3.8 | 7.59× | 1.08e+06 | 1.04e+06 | 3.87e-11 | 3.71e-11 | +| kkt_pglib_opf_case118_ieee_condensed_1 | 1088 | 12.9 | 5.04 | 0.39× | 0.905 | 5.03 | 5.56× | 0.39 | 5.03 | 12.89× | 0.383 | 2.61 | 6.82× | 1.52e+04 | 1.16e+04 | 2.99e-05 | 6.97e-05 | +| kkt_pglib_opf_case118_ieee_condensed_10 | 1088 | 12 | 5.12 | 0.43× | 0.921 | 4.99 | 5.41× | 0.349 | 4.89 | 14.01× | 0.249 | 2.38 | 9.54× | 1.52e+04 | 1.16e+04 | 9.52e-06 | 9.74e-06 | +| kkt_pglib_opf_case118_ieee_condensed_20 | 1088 | 12.9 | 5.04 | 0.39× | 0.899 | 5.04 | 5.61× | 0.351 | 5.03 | 14.31× | 0.282 | 2.38 | 8.44× | 1.52e+04 | 1.16e+04 | 0.108 | 0.0779 | +| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 16.2 | 54.2 | 3.34× | 0.845 | 13.8 | 16.31× | 0.363 | 13.8 | 38.08× | 0.229 | 7.73 | 33.81× | 2.02e+04 | 2.1e+04 | 2.4 | 0.237 | +| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16.2 | 54.1 | 3.34× | 0.868 | 15 | 17.26× | 0.354 | 13.3 | 37.67× | 0.284 | 7.69 | 27.05× | 2.02e+04 | 2.05e+04 | 10.1 | 0.0106 | +| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 16.2 | 53.1 | 3.28× | 0.83 | 13.6 | 16.32× | 0.4 | 13.6 | 34.02× | 0.272 | 7.68 | 28.25× | 2.02e+04 | 2.05e+04 | 6.03 | 0.027 | +| kkt_pglib_opf_case1354_pegase_condensed_1 | 11192 | 53.3 | 52.1 | 0.98× | 1.39 | 56.3 | 40.63× | 0.684 | 56.3 | 82.22× | 0.355 | 22.6 | 63.57× | 1.55e+05 | 1.21e+05 | 0.000296 | 0.000322 | +| kkt_pglib_opf_case1354_pegase_condensed_10 | 11192 | 52.4 | 52 | 0.99× | 1.39 | 55.7 | 40.01× | 0.643 | 55.7 | 86.68× | 0.279 | 22.6 | 80.94× | 1.55e+05 | 1.21e+05 | 0.000122 | 9.53e-05 | +| kkt_pglib_opf_case1354_pegase_condensed_20 | 11192 | 53.1 | 52.2 | 0.98× | 1.65 | 56.1 | 34.07× | 0.706 | 56.1 | 79.48× | 0.611 | 22.6 | 37.00× | 1.55e+05 | 1.21e+05 | 7.55e-05 | 4.91e-05 | +| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.4 | 1.03e+03 | 10.62× | 1.53 | 146 | 95.37× | 0.816 | 146 | 178.88× | 0.421 | 78.7 | 186.80× | 2.02e+05 | 2.16e+05 | 108 | 14.2 | +| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 96.4 | 1.09e+03 | 11.28× | 1.55 | 161 | 103.65× | 0.827 | 145 | 175.73× | 0.448 | 79 | 176.38× | 2.02e+05 | 2.2e+05 | 52.2 | 51.7 | +| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 100 | 1.1e+03 | 11.01× | 1.6 | 168 | 105.48× | 0.806 | 148 | 183.23× | 0.412 | 79.1 | 191.92× | 2.02e+05 | 2.21e+05 | 140 | 15.3 | +| kkt_pglib_opf_case14_ieee_condensed_1 | 118 | 6.65 | 1.17 | 0.18× | 0.226 | 0.615 | 2.73× | 0.192 | 0.629 | 3.27× | 0.321 | 0.418 | 1.30× | 1.27e+03 | 1.03e+03 | 9.81e-07 | 8.09e-07 | +| kkt_pglib_opf_case14_ieee_condensed_10 | 118 | 6.69 | 1.05 | 0.16× | 0.194 | 1.03 | 5.30× | 0.229 | 0.63 | 2.75× | 0.265 | 0.458 | 1.73× | 1.27e+03 | 1.03e+03 | 0.000129 | 0.000156 | +| kkt_pglib_opf_case14_ieee_condensed_11 | 118 | 6.74 | 1.06 | 0.16× | 0.212 | 0.681 | 3.21× | 0.291 | 0.605 | 2.08× | 0.299 | 0.504 | 1.69× | 1.27e+03 | 1.03e+03 | 1.44e-05 | 5.1e-06 | +| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 9.21 | 4.08 | 0.44× | 0.216 | 2.02 | 9.32× | 0.28 | 1.59 | 5.66× | 0.265 | 0.96 | 3.62× | 2.02e+03 | 2.14e+03 | 0.182 | 1.07e-08 | +| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.53 | 4.87 | 0.65× | 0.283 | 1.82 | 6.42× | 0.238 | 1.6 | 6.75× | 0.262 | 0.948 | 3.61× | 2.02e+03 | 2.15e+03 | 0.295 | 2.75e-05 | +| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.63 | 3.56 | 0.47× | 0.217 | 1.71 | 7.87× | 0.322 | 1.75 | 5.44× | 0.435 | 0.842 | 1.93× | 2.02e+03 | 3.27e+03 | 0.221 | 0.324 | +| lap2d_300 | 90000 | 257 | 349 | 1.36× | 7.13 | 240 | 33.69× | 5.15 | 241 | 46.74× | 0.712 | 4.7 | 6.60× | 2.43e+06 | 2.47e+06 | 1.6e-12 | 1.68e-12 | +| lap3d_40 | 64000 | 332 | 416 | 1.25× | 62.9 | 1.46e+04 | 232.33× | 58.4 | 1.46e+04 | 250.37× | 1.41 | 19.4 | 13.68× | 1.75e+07 | 1.44e+07 | 7.68e-14 | 9.06e-14 | + +Single run instead of a BenchmarkTools trial (factorization above the `--single-run-above` limit): SDS on GHS_psdef/apache2, SDS on lap3d_40. ## LDLᵀ + 2 refinement steps, K2 dumps -`ldlt_ir2`, T16 (pending), structure `S`, Float64, nrhs = 1. +`ldlt_ir2`, T16 (done), structure `S`, Float64, nrhs = 1. | matrix | n | analysis cuDSS ms | SDS ms | ratio | factorization cuDSS ms | SDS ms | ratio | refactorization cuDSS ms | SDS ms | ratio | solve cuDSS ms | SDS ms | ratio | nnz(L) cuDSS | SDS | relres cuDSS | SDS | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 15.8 | | | 0.827 | | | 0.371 | | | 0.6 | | | 2.02e+04 | | 0.00442 | | -| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16 | | | 0.812 | | | 0.503 | | | 0.55 | | | 2.02e+04 | | 0.0164 | | -| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 15.5 | | | 0.828 | | | 0.339 | | | 0.596 | | | 2.02e+04 | | 0.189 | | -| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.7 | | | 1.56 | | | 0.931 | | | 0.814 | | | 2.02e+05 | | 5.11 | | -| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 97.4 | | | 1.53 | | | 0.813 | | | 0.978 | | | 2.02e+05 | | 1.91 | | -| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 97.4 | | | 1.55 | | | 0.825 | | | 0.958 | | | 2.02e+05 | | 13.9 | | -| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 7.76 | | | 0.222 | | | 0.215 | | | 0.719 | | | 2.02e+03 | | 3.23e-07 | | -| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.47 | | | 0.295 | | | 0.233 | | | 1.26 | | | 2.02e+03 | | 9.14e-06 | | -| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.46 | | | 0.206 | | | 0.235 | | | 0.65 | | | 2.02e+03 | | 2.4e-08 | | +| kkt_pglib_opf_case118_ieee_k2_1 | 3150 | 15.8 | 54.3 | 3.43× | 0.827 | 13.8 | 16.68× | 0.371 | 13.8 | 37.20× | 0.6 | 23.4 | 39.01× | 2.02e+04 | 2.1e+04 | 0.00442 | 3.35e-09 | +| kkt_pglib_opf_case118_ieee_k2_10 | 3150 | 16 | 54.7 | 3.43× | 0.812 | 15.1 | 18.57× | 0.503 | 13.3 | 26.39× | 0.55 | 23 | 41.78× | 2.02e+04 | 2.05e+04 | 0.0164 | 5.78e-09 | +| kkt_pglib_opf_case118_ieee_k2_20 | 3150 | 15.5 | 53.1 | 3.42× | 0.828 | 13.6 | 16.47× | 0.339 | 13.6 | 40.15× | 0.596 | 22.9 | 38.43× | 2.02e+04 | 2.05e+04 | 0.189 | 7.51e-09 | +| kkt_pglib_opf_case1354_pegase_k2_1 | 33811 | 97.7 | 992 | 10.15× | 1.56 | 146 | 94.15× | 0.931 | 146 | 156.89× | 0.814 | 244 | 299.05× | 2.02e+05 | 2.16e+05 | 5.11 | 0.0159 | +| kkt_pglib_opf_case1354_pegase_k2_10 | 33811 | 97.4 | 1.09e+03 | 11.21× | 1.53 | 150 | 97.71× | 0.813 | 145 | 178.91× | 0.978 | 240 | 245.11× | 2.02e+05 | 2.2e+05 | 1.91 | 8.63 | +| kkt_pglib_opf_case1354_pegase_k2_20 | 33811 | 97.4 | 1.12e+03 | 11.53× | 1.55 | 151 | 96.87× | 0.825 | 148 | 178.98× | 0.958 | 241 | 251.59× | 2.02e+05 | 2.21e+05 | 13.9 | 0.148 | +| kkt_pglib_opf_case14_ieee_k2_1 | 344 | 7.76 | 4.38 | 0.56× | 0.222 | 1.59 | 7.17× | 0.215 | 1.58 | 7.36× | 0.719 | 2.76 | 3.84× | 2.02e+03 | 2.14e+03 | 3.23e-07 | 6.9e-13 | +| kkt_pglib_opf_case14_ieee_k2_10 | 344 | 7.47 | 5.09 | 0.68× | 0.295 | 1.63 | 5.52× | 0.233 | 2.09 | 8.98× | 1.26 | 3.89 | 3.09× | 2.02e+03 | 2.15e+03 | 9.14e-06 | 2.33e-14 | +| kkt_pglib_opf_case14_ieee_k2_15 | 344 | 7.46 | 2.54 | 0.34× | 0.206 | 2.41 | 11.71× | 0.235 | 1.82 | 7.74× | 0.65 | 2.36 | 3.63× | 2.02e+03 | 3.27e+03 | 2.4e-08 | 7.14e-09 | ## Uniform batch of 8, Cholesky @@ -217,4 +219,4 @@ Not run yet. ## Runs * cuDSS 0.8.0 on NVIDIA GeForce RTX 4080, repository 57e2ea9+dirty, 2026-10-02. -* SparseDirectSolver.jl 0.1.0 on NVIDIA GeForce RTX 4080, repository 57e2ea9+dirty, 2026-10-02. +* SparseDirectSolver.jl 0.1.0 on NVIDIA GeForce RTX 4080, repository 73b93aa+dirty, 2026-10-02. diff --git a/bench/comparison/comparison.png b/bench/comparison/comparison.png index 93809524a03d974b8876eac3c56423e1b4b01ae2..4e15294ea02d252d5698096c33cafad3df0c36d0 100644 GIT binary patch literal 223259 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

$C22UMblVytt$S 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 literal 224672 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�hy3CUy^sYC$bx`mG_CpNtK2VpCe?>8QRtOiz ze+ubIuPdYht<^Zg^bZ%0q@!X*;PY=hb@C&TM=x@3;a`5WhPW0zz3QB_yV& zFJ+$f`a|I8orFcMtvbZLpHs%eM$6dJ%CZj_9N?4gB{+P6JR8i}u14Nh@kX@<1%Q3- zBJn+j-j>Q)Whz9!z!VYhsT#= zfn6mypq>!wd<1}-`yihx;yPeXhCFoHQ`uQ2w)rEO#Ff#6>J{U$;12KwL}_?Z{U8x* zMf=KyA;U}4tc5@{@BHKS@H;Zlrgik)Pm#P{aLnF8I9rl2)e@4=)~=?hCM6JZaW(b6 z6#M?<2Z%*f8t@NLFm(=k!ikcQlJP!U@ik_OoI8h}kV!}~S+;Lm z8XJWRKv$?vjw-K$#KAOe6{<>R)!5!5$J4m+Bl3@)I#mlGj*P7B6MvrH`nEAjv{sZD z!m9$2VQ@<)0+^2$)kZ_t*8BumupC=db}~!nXX4m92V(9FFso$QBvN?{qsVp0x^+uU zx|oZe%sLRnuf^h+taXmoBx42}Sg{nJNgX<#syHK!X)SQjU)Z?JNl?!)aGNL!9;Eh1 z7nZJ~zNZ8y5;P!@j_Z%(iZB4~&u)!LDKIl*qhaX6!XpOQUP0OCb99$d7E(m(k5Yzy zwXXMOe|Uz?Cr}2{Hd9g-!dpwf-fj1?iSV^Q1D^XKa%Q%_JY-k@E{!m|fq$ZpCYmcjJGk#hNE z>QRlIa6R6~(vA)h03i(>k2o$)Q*swWg&|eAQ2T(b;^go|pzNko9M0uoKsaCXg7PqS zrao3dG28!-&1McI`IunOKkt(~tcBc-Do_nWA_Z@e#>Iz`1!?>l_+Z5Zlje@l-fk!t zmq7``$FybaOmziC6_JQ2UOJZJCBqgNa+zJj-D|x5{P~|RV}drm9in#1(7d4(Fdhj3 z9fB*ziN?4fOL3zZLMtF}!jKl}%V=jwRqG@$g&GoU(BO+{7MKWpBqtFtVAa?*@`u4& zCsCRbZMdZjrv?zn&qKe@zX*Bq4uLH2j5Ib27ky_YK!-2IhNY@-Ajn(5~!lXh|W$*HH&ifXZ|$86b$UC+S=PaD=

B)NsNH!W?L8ICh|L2}(ixR8;_S;9pu>lezGH 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 diff --git a/bench/comparison/cudss.csv b/bench/comparison/cudss.csv index 27d880b..f7ab1be 100644 --- a/bench/comparison/cudss.csv +++ b/bench/comparison/cudss.csv @@ -1,109 +1,109 @@ -solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,status,device,version,git_sha,date -cudss,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.035060002,0.003521595,0.002295307,0.000462275,0.034522777,0.0034875,0.002263283,0.000407986,798965.0,1.30393272e8,0.0,2.1473371068813558e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.284841065,0.449437059,0.42075667,0.006619135,4.268457182,0.4488586,0.419957507,0.006599641,1.44624555e8,2.28522934388e11,21.0,1.7980039292265598e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.043201537,0.003901651,0.002452095,0.000500465,0.041996133,0.003710314,0.002331657,0.00042721,1.077096e6,1.67140496e8,0.0,4.0165594207132357e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.013016571,0.000992045,0.000437585,0.000256047,0.011950531,0.00095403,0.000347966,0.000232828,15200.0,272110.0,0.0,7.263795568128644e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.012301181,0.00102428,0.000530075,0.000260508,0.012135948,0.000948861,0.000342906,0.000215558,15200.0,272110.0,0.0,1.3950580448410445e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.012808625,0.001063664,0.000351437,0.000256737,0.011981259,0.000957265,0.000350086,0.000197788,15200.0,272110.0,0.0,0.2931576016826416,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054164461,0.001354491,0.000585044,0.000268998,0.052228285,0.001332412,0.000575165,0.000263347,155201.0,3.329818e6,0.0,0.00031641658935317875,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.055415839,0.001396891,0.000584053,0.000375311,0.052421039,0.001355097,0.000572645,0.000304207,155201.0,3.329818e6,0.0,0.00014216981507751586,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.055449663,0.001394636,0.000685033,0.000387386,0.052590347,0.001383987,0.000586224,0.000262167,155201.0,3.329818e6,0.0,7.944102795473919e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.006824223,0.000215898,0.000224577,0.000186648,0.006661405,0.000187898,0.000192018,0.000152769,1268.0,15255.0,0.0,4.086807756802718e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006767104,0.000220878,0.000212078,0.000194688,0.006613235,0.000191978,0.000193448,0.000172188,1268.0,15255.0,0.0,0.00010922717339638167,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006889892,0.000241588,0.000279737,0.000213518,0.006720173,0.000210518,0.000215208,0.000173788,1268.0,15255.0,0.0,1.2042866448431041e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.281285211,0.006836892,0.003838622,0.000852422,0.272735577,0.00557883,0.003732383,0.000717558,2.428175e6,3.17918802e8,0.0,1.8353669652327745e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.340153748,0.055813029,0.050563215,0.001354186,0.338310031,0.055176137,0.050433887,0.001291467,1.7527585e7,2.1925367162e10,2.0,8.288745113779613e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.03530498,0.00354818,0.002290817,0.000705533,0.034725604,0.003480765,0.002266887,0.000680208,798965.0,1.30393272e8,0.0,6.699560630996109e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,4.295647942,0.446945079,0.417489275,0.027600041,4.261842556,0.446283285,0.416775345,0.027464247,1.44624555e8,2.28522934388e11,21.0,1.8268694751270727e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.040825598,0.003803122,0.002420276,0.000757663,0.040062441,0.003774353,0.002349867,0.000710303,1.077096e6,1.67140496e8,0.0,5.134389329571571e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.011754842,0.000911131,0.000341426,0.000374646,0.011458684,0.000834968,0.000324621,0.000266788,15200.0,272110.0,0.0,6.700671713503177e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.011866391,0.000882265,0.000405905,0.000346147,0.011739179,0.000863406,0.000345766,0.000329077,15200.0,272110.0,0.0,1.5241538493958117e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.012169396,0.000888501,0.000358751,0.000260307,0.011675165,0.000854851,0.000332846,0.000252907,15200.0,272110.0,0.0,0.49192728304440614,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.051893503,0.001372387,0.000580934,0.000486955,0.051595996,0.001305798,0.000578154,0.000457122,155201.0,3.329818e6,0.0,0.00039420769649059734,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.052940774,0.001496338,0.00061401,0.000457495,0.050956513,0.001349396,0.000558549,0.00043896,155201.0,3.329818e6,0.0,0.00013727456047160072,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.053323019,0.001336281,0.000701363,0.000461225,0.052040808,0.001320402,0.000560154,0.000442065,155201.0,3.329818e6,0.0,9.791255582978397e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.007245347,0.000198698,0.000240258,0.000220768,0.006748813,0.000185988,0.000209958,0.000183899,1268.0,15255.0,0.0,6.349650263590208e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.006755114,0.000217718,0.000211748,0.000364627,0.006591565,0.000183709,0.000209288,0.000193658,1268.0,15255.0,0.0,0.00017854366933974119,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.006838361,0.000240158,0.000221628,0.000261147,0.006690338,0.000181328,0.000200088,0.000195988,1268.0,15255.0,0.0,3.343267461426919e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.270593913,0.005709276,0.003803843,0.002302468,0.264057988,0.005675784,0.003758177,0.002242522,2.428175e6,3.17918802e8,0.0,1.8493163494148416e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.3287505,0.050543248,0.045663502,0.00557982,0.32678831,0.050412215,0.045301828,0.005529906,1.7527585e7,2.1925367162e10,2.0,8.988148911207075e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,Boeing/bcsstk38,S,8032,355460,Float64,1,1,0.035547276,0.004547345,0.003314338,0.000476385,0.035325259,0.004471816,0.003246062,0.00044544,798965.0,1.30393272e8,0.0,6.496398763236308e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,GHS_psdef/apache2,S,715176,4817870,Float64,1,1,4.445488464,0.518107596,0.489350197,0.006803422,4.395045641,0.517172704,0.48834013,0.006732254,1.44624555e8,2.28522934388e11,21.0,1.5833232788559718e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,HB/bcsstk17,S,10974,428650,Float64,1,1,0.04223345,0.005448602,0.003374267,0.000500055,0.041295614,0.004759053,0.003276558,0.000466355,1.077096e6,1.67140496e8,0.0,3.871657523736132e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_1,S,1088,12860,Float64,1,1,0.012892998,0.00090504,0.000390436,0.000383086,0.012711183,0.000887961,0.000328677,0.000210158,15200.0,272110.0,0.0,2.9856012503869884e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_10,S,1088,12860,Float64,1,1,0.0120357,0.000921386,0.000349386,0.000249257,0.011896031,0.000885042,0.000342756,0.000221558,15200.0,272110.0,0.0,9.524756251521279e-6,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_20,S,1088,12860,Float64,1,1,0.012924046,0.000898801,0.000351147,0.000282048,0.012052111,0.000894021,0.000324507,0.000249868,15200.0,272110.0,0.0,0.10788231601615018,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.016237889,0.000845492,0.000362796,0.000228698,0.016043515,0.000835202,0.000320807,0.000207168,20211.0,196794.0,0.0,2.3998849853705906,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.016180678,0.000867582,0.000353717,0.000284317,0.015647444,0.000817112,0.000324507,0.000254677,20211.0,196794.0,0.0,10.084656255768957,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.01617026,0.000830412,0.000399596,0.000271848,0.015906871,0.000804042,0.000365896,0.000259728,20211.0,196794.0,0.0,6.0336051500002705,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_1,S,11192,136724,Float64,1,1,0.053345349,0.001386526,0.000684413,0.000355206,0.051259324,0.001379215,0.000654863,0.000270188,155201.0,3.329818e6,0.0,0.00029614275663591045,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_10,S,11192,136724,Float64,1,1,0.052355873,0.001393086,0.000642869,0.000278637,0.05116971,0.001380426,0.000632463,0.000273607,155201.0,3.329818e6,0.0,0.0001224562514208483,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_20,S,11192,136724,Float64,1,1,0.053066679,0.001647274,0.000705523,0.000610564,0.051548198,0.001403246,0.000652673,0.000359671,155201.0,3.329818e6,0.0,7.55487743275319e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097397122,0.00153126,0.000816451,0.000421192,0.095319062,0.001504125,0.000765232,0.000366806,202300.0,2.326076e6,0.0,108.0582883952038,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.096375736,0.00154884,0.000827192,0.00044804,0.094609414,0.00151934,0.000785198,0.000433046,202300.0,2.326076e6,0.0,52.17854436066793,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.10036616,0.001595909,0.000805892,0.000412261,0.094218957,0.001523895,0.000779842,0.000397091,202300.0,2.326076e6,0.0,140.0478360719644,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_1,S,118,1282,Float64,1,1,0.006654315,0.000225657,0.000192468,0.000321417,0.006598713,0.000188738,0.000169499,0.000232698,1268.0,15255.0,0.0,9.81468171037147e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_10,S,118,1282,Float64,1,1,0.006688553,0.000193968,0.000229428,0.000264877,0.006625943,0.000181279,0.000205268,0.000243147,1268.0,15255.0,0.0,0.00012883083671537157,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_11,S,118,1282,Float64,1,1,0.006743062,0.000212238,0.000290707,0.000299107,0.006663254,0.000186448,0.000177238,0.000166418,1268.0,15255.0,0.0,1.4434712774694826e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.009205469,0.000216368,0.000280138,0.000264977,0.007392428,0.000182158,0.000174679,0.000189288,2024.0,15061.0,0.0,0.18246516229355206,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007534584,0.000283407,0.000237828,0.000262317,0.007520445,0.000250568,0.000207868,0.000194548,2024.0,15061.0,0.0,0.294793479199583,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007628965,0.000217088,0.000321507,0.000435436,0.007390027,0.000183308,0.000197218,0.000218747,2024.0,15061.0,0.0,0.2209028165354915,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,lap2d_300,S,90000,448800,Float64,1,1,0.25650659,0.007134768,0.005149699,0.000712128,0.251955638,0.00710648,0.005074279,0.000660573,2.428175e6,3.17918802e8,0.0,1.6049723724157528e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt,T15,lap3d_40,S,64000,438400,Float64,1,1,0.33161942,0.062896139,0.058362218,0.001414836,0.325486651,0.062546769,0.058168071,0.001368406,1.7527585e7,2.1925367162e10,2.0,7.679721602411845e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.015821558,0.000827447,0.000370946,0.000600049,0.015663984,0.000792982,0.000363487,0.000540355,20211.0,196794.0,0.0,0.004422323681820168,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.015955475,0.000811912,0.000502855,0.00055033,0.015832857,0.000788533,0.000312181,0.000503565,20211.0,196794.0,0.0,0.016446167821606704,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.015504766,0.000828421,0.000338877,0.000595613,0.015441935,0.000762762,0.000308967,0.000477775,20211.0,196794.0,0.0,0.18897178625860092,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097701808,0.001555304,0.000931341,0.000814286,0.094506549,0.00153716,0.000842992,0.000791527,202300.0,2.326076e6,0.0,5.107425409697022,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.09736267,0.001534901,0.000812772,0.000977825,0.095261481,0.00150829,0.000763362,0.000793712,202300.0,2.326076e6,0.0,1.9129096394710416,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.097420885,0.001554195,0.000825402,0.000957545,0.095711143,0.001541049,0.000786862,0.000806992,202300.0,2.326076e6,0.0,13.86903644125827,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.007758553,0.000222357,0.000215238,0.000718819,0.007514985,0.000194518,0.000187978,0.000370976,2024.0,15061.0,0.0,3.2268591438362523e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007469755,0.000294767,0.000233088,0.001260488,0.007432257,0.000210468,0.000204258,0.000473776,2024.0,15061.0,0.0,9.140251785245421e-6,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007463276,0.000205608,0.000234768,0.000649624,0.007410946,0.000187528,0.000214528,0.000338227,2024.0,15061.0,0.0,2.3982316148866614e-8,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,8,0.011785488,0.001882661,0.000586314,0.000246118,0.011511936,0.001844622,0.000483335,0.000236768,15200.0,272110.0,0.0,3.217810034932607e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,8,0.011965242,0.001865081,0.000561824,0.000326207,0.011498377,0.001847687,0.000488045,0.000250607,15200.0,272110.0,0.0,1.2018641140881662e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,8,0.011830413,0.001971265,0.000492485,0.000279877,0.011569625,0.001867541,0.000478025,0.000260537,15200.0,272110.0,0.0,0.16536169031735817,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,8,0.051920204,0.003998411,0.001876202,0.000474765,0.051258174,0.003969922,0.001604934,0.000445376,155201.0,3.329818e6,0.0,0.00033907536094029506,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,8,0.051939349,0.004605709,0.001562904,0.000503245,0.050949969,0.003924111,0.001534472,0.000461185,155201.0,3.329818e6,0.0,0.0001359772524016248,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,8,0.052882669,0.003996862,0.001566714,0.000630124,0.051098876,0.00389837,0.001545668,0.000469485,155201.0,3.329818e6,0.0,7.836976721473675e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,8,0.007323498,0.000739307,0.000212718,0.000375006,0.006640973,0.000677543,0.000206008,0.000237708,1268.0,15255.0,0.0,8.245295917011054e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,8,0.006737062,0.000748688,0.000207818,0.000195688,0.006662424,0.000647532,0.000190019,0.000158349,1268.0,15255.0,0.0,0.0001559511859180611,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,8,0.007098868,0.000712893,0.000222487,0.000222658,0.006622695,0.000670204,0.000208248,0.000187638,1268.0,15255.0,0.0,1.8847019801264928e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,lu,T19,Rajat/rajat21,G,411676,1893370,Float64,1,1,1.772969221,0.031858759,0.029320553,0.00203524,1.767117448,0.031741144,0.029049092,0.00200654,6.891584e6,5.212013513e9,2.0,6.296735861977335e7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,lu,T19,TSOPF/TSOPF_RS_b39_c7,G,14098,252446,Float64,1,1,0.089234729,0.002627054,0.00102844,0.00045147,0.084698153,0.00255188,0.00098804,0.000327406,1.47e6,9.5459011e7,0.0,2.2410049029105248e29,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011735983,0.000945062,0.000373877,0.000201348,0.011651173,0.000861051,0.000369615,0.000180628,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011578734,0.000933777,0.000396186,0.000173608,0.011425206,0.000859707,0.000341637,0.000159088,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.01208741,0.000910696,0.000363306,0.000201418,0.011559116,0.000860595,0.000344556,0.000179999,19631,622719,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.0526824,0.001506665,0.000690703,0.000211968,0.052155314,0.001414196,0.000675033,0.000197578,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.052461234,0.001679343,0.000685012,0.000216408,0.052247965,0.001424446,0.000645193,0.000199018,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.052776825,0.001430416,0.000689813,0.000218817,0.051988683,0.001410626,0.000616669,0.000181698,165293,4462458,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.00709225,0.000280908,0.000231617,0.000166958,0.006702743,0.000208898,0.000216188,0.000153498,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006898827,0.000267047,0.000323007,0.000171878,0.006725453,0.000240687,0.000239707,0.000155279,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.008140498,0.000256278,0.000237447,0.000179048,0.006923101,0.000236178,0.000220528,0.000146369,1511,23110,0,,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.021474177,0.00102757,0.000483696,0.000259027,0.021152805,0.000912861,0.00045789,0.000241378,73778.0,1.64941e6,0.0,3.708588017598577e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.021688946,0.001047665,0.000480855,0.000242648,0.021428798,0.000942731,0.000450315,0.000230108,71018.0,1.513289e6,0.0,7.862883953651755e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.021701855,0.000969181,0.000678534,0.000264427,0.02117276,0.000937511,0.000487535,0.000239598,68472.0,1.396484e6,0.0,3.7614986115076254e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.12949221,0.002224048,0.001216888,0.000418896,0.128672234,0.002103199,0.001201709,0.000412436,722739.0,1.9670743e7,0.0,0.004891380877560148,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.132934829,0.002223467,0.001392347,0.000418996,0.130164369,0.002191833,0.001245028,0.000380046,730963.0,2.0806467e7,0.0,0.004714071653711646,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.135263866,0.002141514,0.001203538,0.000397316,0.134955923,0.002095214,0.001118759,0.000380156,722763.0,1.9509233e7,0.0,0.015554030920514779,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.008748358,0.000324357,0.000286527,0.000221928,0.008574744,0.000240468,0.000249427,0.000203068,7264.0,137558.0,0.0,8.541235733582555e-13,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.008562856,0.000345377,0.000375377,0.000248797,0.008226709,0.000247698,0.000249388,0.000169018,6926.0,119037.0,0.0,7.951719673608634e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.008398447,0.000271497,0.000324967,0.000226418,0.008249189,0.000239948,0.000309937,0.000210068,6926.0,119037.0,0.0,4.7070448639145856e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,nubatch,T22,batch_of_9,SPD,37194,452598,Float64,1,9,0.129192436,0.002006649,0.00094972,0.000426816,0.128671157,0.001997955,0.000927771,0.000416646,512386.0,1.0980714e7,0.0,0.1855924609238113,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.03519364,0.003551285,0.002242748,0.000455956,0.034483501,0.00345768,0.002195888,0.000443325,798965.0,1.30393272e8,0.0,2.1529756798740355e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.300241032,0.447041143,0.417117744,0.006530704,4.265771335,0.446236761,0.416517738,0.006489032,1.44624555e8,2.28522934388e11,21.0,1.7986750735138067e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.041490758,0.003767072,0.002381005,0.000509775,0.040661166,0.003724293,0.002355786,0.000454925,1.077096e6,1.67140496e8,0.0,4.284380268951044e-11,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011823822,0.000889541,0.000384556,0.000243097,0.011605846,0.000847427,0.000314935,0.000208568,15200.0,272110.0,0.0,3.451095742061928e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011805553,0.000907841,0.000345436,0.000248888,0.011544824,0.000846391,0.000294587,0.000210308,15200.0,272110.0,0.0,1.1718305601301206e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.011582684,0.000858532,0.000392326,0.000239667,0.011541126,0.000847671,0.000316527,0.000210728,15200.0,272110.0,0.0,0.375282906413019,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054624476,0.001330001,0.000754478,0.000290327,0.052442768,0.001317827,0.000562674,0.000262027,155201.0,3.329818e6,0.0,0.00030746890622787316,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.057367709,0.001428326,0.000595444,0.000339016,0.051727384,0.001387711,0.000581155,0.000269007,155201.0,3.329818e6,0.0,0.00014020524088089663,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.054101041,0.001328372,0.000736283,0.000335397,0.053496147,0.001279297,0.000571005,0.000249748,155201.0,3.329818e6,0.0,7.776584912878078e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.007071268,0.000267237,0.000216608,0.000355707,0.006794663,0.000195038,0.000190658,0.000172469,1268.0,15255.0,0.0,6.85483844053459e-7,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.007169144,0.000223568,0.000223628,0.000344817,0.007052829,0.000208938,0.000182609,0.000175548,1268.0,15255.0,0.0,0.0001034655941244147,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006958001,0.000223258,0.000217048,0.000264088,0.006758034,0.000188108,0.000192678,0.000182848,1268.0,15255.0,0.0,1.1091126531769816e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,lap2d_300,SPD,90000,448800,Float64,1,1,0.261020839,0.005727948,0.003799182,0.000702483,0.259065453,0.005713919,0.003768582,0.000657094,2.428175e6,3.17918802e8,0.0,1.8478589965644124e-12,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,solve_algo1,T25,lap3d_40,SPD,64000,438400,Float64,1,1,0.326983407,0.050756211,0.045835803,0.001386986,0.323049685,0.050598516,0.045692599,0.001316497,1.7527585e7,2.1925367162e10,2.0,8.296433336120358e-14,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,hybrid_memory,T26,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.374816114,0.445513119,0.417558463,0.006507555,4.286415223,0.445088838,0.417379808,0.006481426,1.44624555e8,2.28522934388e11,21.0,1.798573273274856e-10,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.053210885,0.001402411,0.000613574,0.000328016,0.05177894,0.001319837,0.000591827,0.000265197,155201.0,3.329818e6,0.0,0.00029085192956193,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.054697406,0.001411285,0.000593029,0.000452441,0.053131121,0.001307366,0.000561254,0.000249587,155201.0,3.329818e6,0.0,0.00014743927960820415,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 -cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.051966932,0.001318071,0.000779362,0.000340887,0.051623132,0.001301527,0.000588474,0.000265438,155201.0,3.329818e6,0.0,7.138105411625885e-5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,samples,status,device,version,git_sha,date +cudss,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.035060002,0.003521595,0.002295307,0.000462275,0.034522777,0.0034875,0.002263283,0.000407986,798965.0,1.30393272e8,0.0,2.1473371068813558e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.284841065,0.449437059,0.42075667,0.006619135,4.268457182,0.4488586,0.419957507,0.006599641,1.44624555e8,2.28522934388e11,21.0,1.7980039292265598e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.043201537,0.003901651,0.002452095,0.000500465,0.041996133,0.003710314,0.002331657,0.00042721,1.077096e6,1.67140496e8,0.0,4.0165594207132357e-11,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.013016571,0.000992045,0.000437585,0.000256047,0.011950531,0.00095403,0.000347966,0.000232828,15200.0,272110.0,0.0,7.263795568128644e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.012301181,0.00102428,0.000530075,0.000260508,0.012135948,0.000948861,0.000342906,0.000215558,15200.0,272110.0,0.0,1.3950580448410445e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.012808625,0.001063664,0.000351437,0.000256737,0.011981259,0.000957265,0.000350086,0.000197788,15200.0,272110.0,0.0,0.2931576016826416,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054164461,0.001354491,0.000585044,0.000268998,0.052228285,0.001332412,0.000575165,0.000263347,155201.0,3.329818e6,0.0,0.00031641658935317875,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.055415839,0.001396891,0.000584053,0.000375311,0.052421039,0.001355097,0.000572645,0.000304207,155201.0,3.329818e6,0.0,0.00014216981507751586,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.055449663,0.001394636,0.000685033,0.000387386,0.052590347,0.001383987,0.000586224,0.000262167,155201.0,3.329818e6,0.0,7.944102795473919e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.006824223,0.000215898,0.000224577,0.000186648,0.006661405,0.000187898,0.000192018,0.000152769,1268.0,15255.0,0.0,4.086807756802718e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006767104,0.000220878,0.000212078,0.000194688,0.006613235,0.000191978,0.000193448,0.000172188,1268.0,15255.0,0.0,0.00010922717339638167,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006889892,0.000241588,0.000279737,0.000213518,0.006720173,0.000210518,0.000215208,0.000173788,1268.0,15255.0,0.0,1.2042866448431041e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.281285211,0.006836892,0.003838622,0.000852422,0.272735577,0.00557883,0.003732383,0.000717558,2.428175e6,3.17918802e8,0.0,1.8353669652327745e-12,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.340153748,0.055813029,0.050563215,0.001354186,0.338310031,0.055176137,0.050433887,0.001291467,1.7527585e7,2.1925367162e10,2.0,8.288745113779613e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.03530498,0.00354818,0.002290817,0.000705533,0.034725604,0.003480765,0.002266887,0.000680208,798965.0,1.30393272e8,0.0,6.699560630996109e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,4.295647942,0.446945079,0.417489275,0.027600041,4.261842556,0.446283285,0.416775345,0.027464247,1.44624555e8,2.28522934388e11,21.0,1.8268694751270727e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.040825598,0.003803122,0.002420276,0.000757663,0.040062441,0.003774353,0.002349867,0.000710303,1.077096e6,1.67140496e8,0.0,5.134389329571571e-11,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.011754842,0.000911131,0.000341426,0.000374646,0.011458684,0.000834968,0.000324621,0.000266788,15200.0,272110.0,0.0,6.700671713503177e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.011866391,0.000882265,0.000405905,0.000346147,0.011739179,0.000863406,0.000345766,0.000329077,15200.0,272110.0,0.0,1.5241538493958117e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.012169396,0.000888501,0.000358751,0.000260307,0.011675165,0.000854851,0.000332846,0.000252907,15200.0,272110.0,0.0,0.49192728304440614,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.051893503,0.001372387,0.000580934,0.000486955,0.051595996,0.001305798,0.000578154,0.000457122,155201.0,3.329818e6,0.0,0.00039420769649059734,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.052940774,0.001496338,0.00061401,0.000457495,0.050956513,0.001349396,0.000558549,0.00043896,155201.0,3.329818e6,0.0,0.00013727456047160072,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.053323019,0.001336281,0.000701363,0.000461225,0.052040808,0.001320402,0.000560154,0.000442065,155201.0,3.329818e6,0.0,9.791255582978397e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.007245347,0.000198698,0.000240258,0.000220768,0.006748813,0.000185988,0.000209958,0.000183899,1268.0,15255.0,0.0,6.349650263590208e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.006755114,0.000217718,0.000211748,0.000364627,0.006591565,0.000183709,0.000209288,0.000193658,1268.0,15255.0,0.0,0.00017854366933974119,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.006838361,0.000240158,0.000221628,0.000261147,0.006690338,0.000181328,0.000200088,0.000195988,1268.0,15255.0,0.0,3.343267461426919e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.270593913,0.005709276,0.003803843,0.002302468,0.264057988,0.005675784,0.003758177,0.002242522,2.428175e6,3.17918802e8,0.0,1.8493163494148416e-12,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.3287505,0.050543248,0.045663502,0.00557982,0.32678831,0.050412215,0.045301828,0.005529906,1.7527585e7,2.1925367162e10,2.0,8.988148911207075e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,Boeing/bcsstk38,S,8032,355460,Float64,1,1,0.035547276,0.004547345,0.003314338,0.000476385,0.035325259,0.004471816,0.003246062,0.00044544,798965.0,1.30393272e8,0.0,6.496398763236308e-11,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,GHS_psdef/apache2,S,715176,4817870,Float64,1,1,4.445488464,0.518107596,0.489350197,0.006803422,4.395045641,0.517172704,0.48834013,0.006732254,1.44624555e8,2.28522934388e11,21.0,1.5833232788559718e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,HB/bcsstk17,S,10974,428650,Float64,1,1,0.04223345,0.005448602,0.003374267,0.000500055,0.041295614,0.004759053,0.003276558,0.000466355,1.077096e6,1.67140496e8,0.0,3.871657523736132e-11,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_1,S,1088,12860,Float64,1,1,0.012892998,0.00090504,0.000390436,0.000383086,0.012711183,0.000887961,0.000328677,0.000210158,15200.0,272110.0,0.0,2.9856012503869884e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_10,S,1088,12860,Float64,1,1,0.0120357,0.000921386,0.000349386,0.000249257,0.011896031,0.000885042,0.000342756,0.000221558,15200.0,272110.0,0.0,9.524756251521279e-6,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_20,S,1088,12860,Float64,1,1,0.012924046,0.000898801,0.000351147,0.000282048,0.012052111,0.000894021,0.000324507,0.000249868,15200.0,272110.0,0.0,0.10788231601615018,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.016237889,0.000845492,0.000362796,0.000228698,0.016043515,0.000835202,0.000320807,0.000207168,20211.0,196794.0,0.0,2.3998849853705906,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.016180678,0.000867582,0.000353717,0.000284317,0.015647444,0.000817112,0.000324507,0.000254677,20211.0,196794.0,0.0,10.084656255768957,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.01617026,0.000830412,0.000399596,0.000271848,0.015906871,0.000804042,0.000365896,0.000259728,20211.0,196794.0,0.0,6.0336051500002705,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_1,S,11192,136724,Float64,1,1,0.053345349,0.001386526,0.000684413,0.000355206,0.051259324,0.001379215,0.000654863,0.000270188,155201.0,3.329818e6,0.0,0.00029614275663591045,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_10,S,11192,136724,Float64,1,1,0.052355873,0.001393086,0.000642869,0.000278637,0.05116971,0.001380426,0.000632463,0.000273607,155201.0,3.329818e6,0.0,0.0001224562514208483,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_20,S,11192,136724,Float64,1,1,0.053066679,0.001647274,0.000705523,0.000610564,0.051548198,0.001403246,0.000652673,0.000359671,155201.0,3.329818e6,0.0,7.55487743275319e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097397122,0.00153126,0.000816451,0.000421192,0.095319062,0.001504125,0.000765232,0.000366806,202300.0,2.326076e6,0.0,108.0582883952038,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.096375736,0.00154884,0.000827192,0.00044804,0.094609414,0.00151934,0.000785198,0.000433046,202300.0,2.326076e6,0.0,52.17854436066793,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.10036616,0.001595909,0.000805892,0.000412261,0.094218957,0.001523895,0.000779842,0.000397091,202300.0,2.326076e6,0.0,140.0478360719644,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_1,S,118,1282,Float64,1,1,0.006654315,0.000225657,0.000192468,0.000321417,0.006598713,0.000188738,0.000169499,0.000232698,1268.0,15255.0,0.0,9.81468171037147e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_10,S,118,1282,Float64,1,1,0.006688553,0.000193968,0.000229428,0.000264877,0.006625943,0.000181279,0.000205268,0.000243147,1268.0,15255.0,0.0,0.00012883083671537157,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_11,S,118,1282,Float64,1,1,0.006743062,0.000212238,0.000290707,0.000299107,0.006663254,0.000186448,0.000177238,0.000166418,1268.0,15255.0,0.0,1.4434712774694826e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.009205469,0.000216368,0.000280138,0.000264977,0.007392428,0.000182158,0.000174679,0.000189288,2024.0,15061.0,0.0,0.18246516229355206,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007534584,0.000283407,0.000237828,0.000262317,0.007520445,0.000250568,0.000207868,0.000194548,2024.0,15061.0,0.0,0.294793479199583,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007628965,0.000217088,0.000321507,0.000435436,0.007390027,0.000183308,0.000197218,0.000218747,2024.0,15061.0,0.0,0.2209028165354915,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,lap2d_300,S,90000,448800,Float64,1,1,0.25650659,0.007134768,0.005149699,0.000712128,0.251955638,0.00710648,0.005074279,0.000660573,2.428175e6,3.17918802e8,0.0,1.6049723724157528e-12,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt,T15,lap3d_40,S,64000,438400,Float64,1,1,0.33161942,0.062896139,0.058362218,0.001414836,0.325486651,0.062546769,0.058168071,0.001368406,1.7527585e7,2.1925367162e10,2.0,7.679721602411845e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.015821558,0.000827447,0.000370946,0.000600049,0.015663984,0.000792982,0.000363487,0.000540355,20211.0,196794.0,0.0,0.004422323681820168,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.015955475,0.000811912,0.000502855,0.00055033,0.015832857,0.000788533,0.000312181,0.000503565,20211.0,196794.0,0.0,0.016446167821606704,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.015504766,0.000828421,0.000338877,0.000595613,0.015441935,0.000762762,0.000308967,0.000477775,20211.0,196794.0,0.0,0.18897178625860092,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.097701808,0.001555304,0.000931341,0.000814286,0.094506549,0.00153716,0.000842992,0.000791527,202300.0,2.326076e6,0.0,5.107425409697022,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.09736267,0.001534901,0.000812772,0.000977825,0.095261481,0.00150829,0.000763362,0.000793712,202300.0,2.326076e6,0.0,1.9129096394710416,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.097420885,0.001554195,0.000825402,0.000957545,0.095711143,0.001541049,0.000786862,0.000806992,202300.0,2.326076e6,0.0,13.86903644125827,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.007758553,0.000222357,0.000215238,0.000718819,0.007514985,0.000194518,0.000187978,0.000370976,2024.0,15061.0,0.0,3.2268591438362523e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.007469755,0.000294767,0.000233088,0.001260488,0.007432257,0.000210468,0.000204258,0.000473776,2024.0,15061.0,0.0,9.140251785245421e-6,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.007463276,0.000205608,0.000234768,0.000649624,0.007410946,0.000187528,0.000214528,0.000338227,2024.0,15061.0,0.0,2.3982316148866614e-8,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,8,0.011785488,0.001882661,0.000586314,0.000246118,0.011511936,0.001844622,0.000483335,0.000236768,15200.0,272110.0,0.0,3.217810034932607e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,8,0.011965242,0.001865081,0.000561824,0.000326207,0.011498377,0.001847687,0.000488045,0.000250607,15200.0,272110.0,0.0,1.2018641140881662e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,8,0.011830413,0.001971265,0.000492485,0.000279877,0.011569625,0.001867541,0.000478025,0.000260537,15200.0,272110.0,0.0,0.16536169031735817,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,8,0.051920204,0.003998411,0.001876202,0.000474765,0.051258174,0.003969922,0.001604934,0.000445376,155201.0,3.329818e6,0.0,0.00033907536094029506,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,8,0.051939349,0.004605709,0.001562904,0.000503245,0.050949969,0.003924111,0.001534472,0.000461185,155201.0,3.329818e6,0.0,0.0001359772524016248,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,8,0.052882669,0.003996862,0.001566714,0.000630124,0.051098876,0.00389837,0.001545668,0.000469485,155201.0,3.329818e6,0.0,7.836976721473675e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,8,0.007323498,0.000739307,0.000212718,0.000375006,0.006640973,0.000677543,0.000206008,0.000237708,1268.0,15255.0,0.0,8.245295917011054e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,8,0.006737062,0.000748688,0.000207818,0.000195688,0.006662424,0.000647532,0.000190019,0.000158349,1268.0,15255.0,0.0,0.0001559511859180611,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ubatch8,T17,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,8,0.007098868,0.000712893,0.000222487,0.000222658,0.006622695,0.000670204,0.000208248,0.000187638,1268.0,15255.0,0.0,1.8847019801264928e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,lu,T19,Rajat/rajat21,G,411676,1893370,Float64,1,1,1.772969221,0.031858759,0.029320553,0.00203524,1.767117448,0.031741144,0.029049092,0.00200654,6.891584e6,5.212013513e9,2.0,6.296735861977335e7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,lu,T19,TSOPF/TSOPF_RS_b39_c7,G,14098,252446,Float64,1,1,0.089234729,0.002627054,0.00102844,0.00045147,0.084698153,0.00255188,0.00098804,0.000327406,1.47e6,9.5459011e7,0.0,2.2410049029105248e29,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011735983,0.000945062,0.000373877,0.000201348,0.011651173,0.000861051,0.000369615,0.000180628,19631,622719,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011578734,0.000933777,0.000396186,0.000173608,0.011425206,0.000859707,0.000341637,0.000159088,19631,622719,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.01208741,0.000910696,0.000363306,0.000201418,0.011559116,0.000860595,0.000344556,0.000179999,19631,622719,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.0526824,0.001506665,0.000690703,0.000211968,0.052155314,0.001414196,0.000675033,0.000197578,165293,4462458,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.052461234,0.001679343,0.000685012,0.000216408,0.052247965,0.001424446,0.000645193,0.000199018,165293,4462458,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.052776825,0.001430416,0.000689813,0.000218817,0.051988683,0.001410626,0.000616669,0.000181698,165293,4462458,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.00709225,0.000280908,0.000231617,0.000166958,0.006702743,0.000208898,0.000216188,0.000153498,1511,23110,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.006898827,0.000267047,0.000323007,0.000171878,0.006725453,0.000240687,0.000239707,0.000155279,1511,23110,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,schur,T20,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.008140498,0.000256278,0.000237447,0.000179048,0.006923101,0.000236178,0.000220528,0.000146369,1511,23110,0,,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.021474177,0.00102757,0.000483696,0.000259027,0.021152805,0.000912861,0.00045789,0.000241378,73778.0,1.64941e6,0.0,3.708588017598577e-12,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.021688946,0.001047665,0.000480855,0.000242648,0.021428798,0.000942731,0.000450315,0.000230108,71018.0,1.513289e6,0.0,7.862883953651755e-13,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.021701855,0.000969181,0.000678534,0.000264427,0.02117276,0.000937511,0.000487535,0.000239598,68472.0,1.396484e6,0.0,3.7614986115076254e-13,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.12949221,0.002224048,0.001216888,0.000418896,0.128672234,0.002103199,0.001201709,0.000412436,722739.0,1.9670743e7,0.0,0.004891380877560148,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,0.132934829,0.002223467,0.001392347,0.000418996,0.130164369,0.002191833,0.001245028,0.000380046,730963.0,2.0806467e7,0.0,0.004714071653711646,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,0.135263866,0.002141514,0.001203538,0.000397316,0.134955923,0.002095214,0.001118759,0.000380156,722763.0,1.9509233e7,0.0,0.015554030920514779,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.008748358,0.000324357,0.000286527,0.000221928,0.008574744,0.000240468,0.000249427,0.000203068,7264.0,137558.0,0.0,8.541235733582555e-13,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.008562856,0.000345377,0.000375377,0.000248797,0.008226709,0.000247698,0.000249388,0.000169018,6926.0,119037.0,0.0,7.951719673608634e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,ldlt_matching,T21,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.008398447,0.000271497,0.000324967,0.000226418,0.008249189,0.000239948,0.000309937,0.000210068,6926.0,119037.0,0.0,4.7070448639145856e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,nubatch,T22,batch_of_9,SPD,37194,452598,Float64,1,9,0.129192436,0.002006649,0.00094972,0.000426816,0.128671157,0.001997955,0.000927771,0.000416646,512386.0,1.0980714e7,0.0,0.1855924609238113,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.03519364,0.003551285,0.002242748,0.000455956,0.034483501,0.00345768,0.002195888,0.000443325,798965.0,1.30393272e8,0.0,2.1529756798740355e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.300241032,0.447041143,0.417117744,0.006530704,4.265771335,0.446236761,0.416517738,0.006489032,1.44624555e8,2.28522934388e11,21.0,1.7986750735138067e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.041490758,0.003767072,0.002381005,0.000509775,0.040661166,0.003724293,0.002355786,0.000454925,1.077096e6,1.67140496e8,0.0,4.284380268951044e-11,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.011823822,0.000889541,0.000384556,0.000243097,0.011605846,0.000847427,0.000314935,0.000208568,15200.0,272110.0,0.0,3.451095742061928e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.011805553,0.000907841,0.000345436,0.000248888,0.011544824,0.000846391,0.000294587,0.000210308,15200.0,272110.0,0.0,1.1718305601301206e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.011582684,0.000858532,0.000392326,0.000239667,0.011541126,0.000847671,0.000316527,0.000210728,15200.0,272110.0,0.0,0.375282906413019,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.054624476,0.001330001,0.000754478,0.000290327,0.052442768,0.001317827,0.000562674,0.000262027,155201.0,3.329818e6,0.0,0.00030746890622787316,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.057367709,0.001428326,0.000595444,0.000339016,0.051727384,0.001387711,0.000581155,0.000269007,155201.0,3.329818e6,0.0,0.00014020524088089663,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.054101041,0.001328372,0.000736283,0.000335397,0.053496147,0.001279297,0.000571005,0.000249748,155201.0,3.329818e6,0.0,7.776584912878078e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.007071268,0.000267237,0.000216608,0.000355707,0.006794663,0.000195038,0.000190658,0.000172469,1268.0,15255.0,0.0,6.85483844053459e-7,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.007169144,0.000223568,0.000223628,0.000344817,0.007052829,0.000208938,0.000182609,0.000175548,1268.0,15255.0,0.0,0.0001034655941244147,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.006958001,0.000223258,0.000217048,0.000264088,0.006758034,0.000188108,0.000192678,0.000182848,1268.0,15255.0,0.0,1.1091126531769816e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,lap2d_300,SPD,90000,448800,Float64,1,1,0.261020839,0.005727948,0.003799182,0.000702483,0.259065453,0.005713919,0.003768582,0.000657094,2.428175e6,3.17918802e8,0.0,1.8478589965644124e-12,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,solve_algo1,T25,lap3d_40,SPD,64000,438400,Float64,1,1,0.326983407,0.050756211,0.045835803,0.001386986,0.323049685,0.050598516,0.045692599,0.001316497,1.7527585e7,2.1925367162e10,2.0,8.296433336120358e-14,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,4.374816114,0.445513119,0.417558463,0.006507555,4.286415223,0.445088838,0.417379808,0.006481426,1.44624555e8,2.28522934388e11,21.0,1.798573273274856e-10,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.053210885,0.001402411,0.000613574,0.000328016,0.05177894,0.001319837,0.000591827,0.000265197,155201.0,3.329818e6,0.0,0.00029085192956193,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.054697406,0.001411285,0.000593029,0.000452441,0.053131121,0.001307366,0.000561254,0.000249587,155201.0,3.329818e6,0.0,0.00014743927960820415,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 +cudss,hybrid_memory,T26,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.051966932,0.001318071,0.000779362,0.000340887,0.051623132,0.001301527,0.000588474,0.000265438,155201.0,3.329818e6,0.0,7.138105411625885e-5,5,ok,NVIDIA GeForce RTX 4080,0.8.0,57e2ea9+dirty,2026-10-02 diff --git a/bench/comparison/sds.csv b/bench/comparison/sds.csv index 8a44ad1..7a8346e 100644 --- a/bench/comparison/sds.csv +++ b/bench/comparison/sds.csv @@ -1,29 +1,61 @@ -solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,status,device,version,git_sha,date -sds,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.051890449,0.023522257,0.023524246,0.001832231,0.051410469,0.023499855,0.023499882,0.001805962,804613.0,1.40793119e8,604.0,1.050998291749151e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,6.347686767,1.034885809,1.022444483,0.074889794,6.265814823,1.028685823,1.021519372,0.07229964,1.29200941e8,1.66491403722e11,123689.0,1.5829650410070863e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.064751431,0.029552157,0.029534024,0.003483474,0.063534974,0.029472688,0.029480481,0.003420696,1.043601e6,1.6795197e8,1300.0,5.332675559338744e-11,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.004484716,0.003884621,0.003847732,0.0020568,0.004451306,0.003870385,0.003837842,0.00204275,11634.0,219042.0,303.0,0.0001499152129335686,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.004559915,0.003614689,0.003610814,0.00206538,0.004440866,0.003593344,0.003595084,0.002040329,11634.0,219042.0,303.0,1.0007128179490731e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.004503516,0.003607394,0.003612954,0.002057379,0.004421135,0.003605835,0.003610514,0.00204536,11634.0,219042.0,303.0,0.0977012881293089,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.049476357,0.039592766,0.039240865,0.019515475,0.048071343,0.039285099,0.038925043,0.018733869,120598.0,2.787739e6,3134.0,0.00028169146220954487,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.048520826,0.038104691,0.038116421,0.019484666,0.048025465,0.037961449,0.037752569,0.019464316,120598.0,2.787739e6,3134.0,0.00014028077734730922,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.049097006,0.03812523,0.03817151,0.019457852,0.04811576,0.037771423,0.037822942,0.019441296,120598.0,2.787739e6,3134.0,7.407112355532926e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.000838792,0.000532905,0.000538805,0.000360116,0.000837712,0.000517615,0.000518015,0.000346416,1027.0,15193.0,33.0,1.6538473403875516e-6,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.0009897,0.000499671,0.000547445,0.000381926,0.000837262,0.000479085,0.000503865,0.000349847,1027.0,15193.0,33.0,0.00015711648509796294,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.001025256,0.000501455,0.000516565,0.000381616,0.000859421,0.000492285,0.000482136,0.000360477,1027.0,15193.0,33.0,1.670170208071547e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.356324524,0.03709501,0.03615737,0.0040768,0.347707286,0.0361488,0.036134991,0.004063689,2.465905e6,3.73611053e8,20495.0,1.7764560196707835e-12,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.388272207,0.223104535,0.223224558,0.015710183,0.382448009,0.222876644,0.222748794,0.015234358,1.438716e7,1.6401480134e10,11066.0,7.475443780134238e-14,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.054339099,0.023679715,0.023563756,0.00307347,0.051834841,0.02356229,0.023560454,0.00303231,804613.0,1.40793119e8,604.0,1.6393219803807206e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,6.40980879,1.031297849,1.022314769,0.257484409,6.291268975,1.023068221,1.01851965,0.255450539,1.29200941e8,1.66491403722e11,123689.0,1.5951527990509154e-10,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.065047407,0.02977353,0.029801308,0.005647859,0.064181421,0.029584785,0.029579275,0.005614173,1.043601e6,1.6795197e8,1300.0,5.886919577134717e-11,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.004464125,0.00386795,0.003872062,0.00206542,0.004447716,0.003849352,0.003852162,0.00206108,11634.0,219042.0,303.0,0.0001499152129335686,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.004659599,0.003608983,0.003600773,0.00205388,0.004447886,0.003579594,0.003580575,0.001837572,11634.0,219042.0,303.0,1.1028908236861046e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.004493895,0.003619108,0.003610204,0.00208505,0.004446125,0.003596975,0.003587225,0.002054209,11634.0,219042.0,303.0,0.31757187210790866,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.049133047,0.039580746,0.03964835,0.019292918,0.048634545,0.039519576,0.039475027,0.019287433,120598.0,2.787739e6,3134.0,0.000392992742458017,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.048452598,0.03830791,0.038403078,0.019356272,0.048091242,0.03819067,0.03833151,0.019344493,120598.0,2.787739e6,3134.0,0.00014411152068572583,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.049065033,0.03837384,0.038382999,0.019356258,0.047930834,0.038297181,0.038311504,0.019348957,120598.0,2.787739e6,3134.0,9.671929703062016e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.000858501,0.000516995,0.000545935,0.000404966,0.000834382,0.000513445,0.000510625,0.000393276,1027.0,15193.0,33.0,2.709170129303515e-6,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.000868732,0.000494035,0.000486415,0.000402116,0.000855792,0.000486355,0.000482685,0.000389536,1027.0,15193.0,33.0,0.00045426768909551265,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.000888871,0.000509215,0.000494545,0.000424136,0.000842331,0.000485426,0.000482595,0.000391186,1027.0,15193.0,33.0,3.7141469401124885e-5,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.323934096,0.036517037,0.036480822,0.009221548,0.320688974,0.036465757,0.036467707,0.009073139,2.465905e6,3.73611053e8,20495.0,1.7990179771326481e-12,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 -sds,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.389936991,0.224155468,0.224043848,0.04919011,0.38503067,0.223895532,0.223768059,0.049077322,1.438716e7,1.6401480134e10,11066.0,8.454273789194102e-14,ok,NVIDIA GeForce RTX 4080,0.1.0,57e2ea9+dirty,2026-10-02 +solver,feature,task,matrix,structure,n,nnz,T,nrhs,nbatch,analysis_s,factorization_s,refactorization_s,solve_s,analysis_min_s,factorization_min_s,refactorization_min_s,solve_min_s,lu_nnz,flops,nsuperpanels,relres,samples,status,device,version,git_sha,date +sds,cholesky_f64,T13,Boeing/bcsstk38,SPD,8032,355460,Float64,1,1,0.055041544,0.023561976,0.023540804,0.001882663,0.05477267,0.023523856,0.023517671,0.001836221,804613,1.40793119e8,604,1.050998291749151e-10,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,GHS_psdef/apache2,SPD,715176,4817870,Float64,1,1,6.075783352,1.031854046,1.023644657,0.076661892,6.004857578,1.026676972,1.023323183,0.073941104,129200941,1.66491403722e11,123689,1.5829650410070863e-10,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,HB/bcsstk17,SPD,10974,428650,Float64,1,1,0.065546234,0.029568025,0.029604894,0.003491196,0.064005437,0.029508741,0.029566311,0.003450174,1043601,1.6795197e8,1300,5.049962573339207e-11,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,1,1,0.004455246,0.003872081,0.00387656,0.002723033,0.004427476,0.003861251,0.003867757,0.002229274,11634,219042.0,303,0.0001499152129335686,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,1,1,0.004783533,0.003635679,0.003674184,0.002090379,0.004704944,0.003616853,0.003617785,0.002076268,11634,219042.0,303,1.0007128179490731e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,1,1,0.004772433,0.003662303,0.003772103,0.00207468,0.004643315,0.003626044,0.003644184,0.00205492,11634,219042.0,303,0.0977012881293089,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,1,1,0.049981892,0.039883353,0.039883884,0.019669037,0.04814711,0.039817768,0.039802259,0.019621681,120598,2.787739e6,3134,0.00028169146220954487,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,1,1,0.04873287,0.038411673,0.038348444,0.019679444,0.047928509,0.038323848,0.038317108,0.019636183,120598,2.787739e6,3134,0.00014028077734730922,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,1,1,0.048956172,0.038327082,0.038384388,0.019673838,0.04874153,0.038309628,0.038284989,0.019523257,120598,2.787739e6,3134,7.407112355532926e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,1,1,0.00096492,0.000525965,0.000555025,0.000402396,0.000899841,0.000506245,0.00051384,0.000361576,1027,15193.0,33,1.6538473403875516e-6,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,1,1,0.001552204,0.000565479,0.000540295,0.000392166,0.0010087,0.000485235,0.000493485,0.000383046,1027,15193.0,33,0.00015711648509796294,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,1,1,0.00093695,0.000490015,0.000539125,0.000379317,0.000872541,0.000487475,0.000495235,0.000340847,1027,15193.0,33,1.670170208071547e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,lap2d_300,SPD,90000,448800,Float64,1,1,0.370827877,0.036380188,0.036289609,0.004104809,0.356950908,0.03629023,0.036283499,0.00404394,2465905,3.73611053e8,20495,1.7761691759148163e-12,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_f64,T13,lap3d_40,SPD,64000,438400,Float64,1,1,0.39802196,0.222990035,0.223344848,0.017043795,0.392282098,0.222942606,0.222917496,0.015558135,14387160,1.6401480134e10,11066,7.478815931690092e-14,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,Boeing/bcsstk38,SPD,8032,355460,Float64,16,1,0.053985858,0.023567186,0.023582937,0.003096266,0.053127947,0.023530144,0.023524176,0.003050938,804613,1.40793119e8,604,1.6616774132045366e-10,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,GHS_psdef/apache2,SPD,715176,4817870,Float64,16,1,6.234490898,1.027368919,1.023103829,0.255904835,6.084311257,1.025134144,1.022538139,0.255507332,129200941,1.66491403722e11,123689,1.59519352774917e-10,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,HB/bcsstk17,SPD,10974,428650,Float64,16,1,0.066237912,0.029497654,0.029602047,0.006562009,0.065259415,0.02945503,0.029526828,0.005622915,1043601,1.6795197e8,1300,5.922473282639887e-11,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_1,SPD,1088,12860,Float64,16,1,0.004700083,0.003873657,0.003877566,0.002180983,0.004562895,0.003854292,0.00384882,0.00205092,11634,219042.0,303,0.0001499152129335686,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_10,SPD,1088,12860,Float64,16,1,0.004559674,0.004448016,0.003637058,0.002134644,0.004472946,0.003651353,0.003604424,0.00209515,11634,219042.0,303,1.1028908236861046e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case118_ieee_condensed_20,SPD,1088,12860,Float64,16,1,0.004737484,0.003700274,0.004006584,0.002048999,0.004496825,0.003602254,0.003609785,0.00200596,11634,219042.0,303,0.31757187210790866,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_1,SPD,11192,136724,Float64,16,1,0.049626492,0.039599661,0.039632746,0.019355258,0.049022436,0.039589098,0.03958507,0.019294657,120598,2.787739e6,3134,0.000392992742458017,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_10,SPD,11192,136724,Float64,16,1,0.04966657,0.038364914,0.038218948,0.019330161,0.048206482,0.038135431,0.038175365,0.019274767,120598,2.787739e6,3134,0.00014411152068572583,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case1354_pegase_condensed_20,SPD,11192,136724,Float64,16,1,0.049616889,0.03822914,0.038125329,0.019383157,0.049367355,0.038117826,0.038098719,0.019352948,120598,2.787739e6,3134,9.671929703062016e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_1,SPD,118,1282,Float64,16,1,0.00097384,0.000555105,0.000542974,0.000449095,0.000866742,0.000521184,0.000535355,0.000358437,1027,15193.0,33,2.709170129303515e-6,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_10,SPD,118,1282,Float64,16,1,0.001064299,0.000510703,0.000504045,0.000485675,0.000858991,0.000500455,0.000486805,0.000375226,1027,15193.0,33,0.00045426768909551265,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,kkt_pglib_opf_case14_ieee_condensed_11,SPD,118,1282,Float64,16,1,0.00094125,0.000521325,0.000543315,0.000446326,0.000925591,0.000490775,0.000487025,0.000401526,1027,15193.0,33,3.7141469401124885e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,lap2d_300,SPD,90000,448800,Float64,16,1,0.334096298,0.036393987,0.036393583,0.009137589,0.333249383,0.036343764,0.036319827,0.009098138,2465905,3.73611053e8,20495,1.7988719466898246e-12,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,cholesky_nrhs16,T12,lap3d_40,SPD,64000,438400,Float64,16,1,0.409275291,0.222932391,0.223009715,0.050472229,0.404915674,0.222682934,0.22295914,0.049418747,14387160,1.6401480134e10,11066,8.447248176670233e-14,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,Boeing/bcsstk38,S,8032,355460,Float64,1,1,0.061063483,0.129022486,0.129089467,0.002818442,0.059272134,0.128936368,0.129019492,0.001903311,804613,1.40793119e8,604,1.2512823581094381e-10,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,GHS_psdef/apache2,S,715176,4817870,Float64,1,1,6.966277483,90.742153005,91.194098803,0.089128092,6.966277483,90.742153005,91.194098803,0.089128092,129200941,1.66491403722e11,123689,1.6291268746741202e-10,1,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,HB/bcsstk17,S,10974,428650,Float64,1,1,0.072706655,0.198275825,0.198263953,0.003797132,0.070868664,0.198257019,0.198193158,0.003681003,1043601,1.6795197e8,1300,3.707249888539958e-11,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_1,S,1088,12860,Float64,1,1,0.00503649,0.0050286,0.005032138,0.002611824,0.004889712,0.004991059,0.005015509,0.002338457,11634,219042.0,303,6.969655897665449e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_10,S,1088,12860,Float64,1,1,0.005121053,0.004988512,0.004894846,0.002376846,0.005033365,0.004834392,0.004850692,0.002365701,11634,219042.0,303,9.740282741453158e-6,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_condensed_20,S,1088,12860,Float64,1,1,0.00504261,0.005042945,0.005025285,0.002379726,0.004871682,0.00499047,0.004990749,0.002369027,11634,219042.0,303,0.07793477586360127,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.054193661,0.013793913,0.013814408,0.007732719,0.052808174,0.013779913,0.013785283,0.007706387,21032,308794.0,1917,0.23695532264533115,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.054115257,0.014978147,0.013323078,0.007690192,0.053494918,0.013254027,0.013263097,0.007660205,20542,292847.0,1906,0.01060874507064105,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.053061332,0.01355436,0.013593394,0.007678673,0.052354006,0.013546596,0.013568231,0.007639475,20507,291377.0,1889,0.027042646838526467,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_1,S,11192,136724,Float64,1,1,0.052076252,0.056332599,0.056272926,0.022579436,0.051053828,0.056288656,0.05625831,0.022551016,120598,2.787739e6,3134,0.00032169280786670235,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_10,S,11192,136724,Float64,1,1,0.052021244,0.055731125,0.055726805,0.022552461,0.051619108,0.055686641,0.05568685,0.022537766,120598,2.787739e6,3134,9.534327884384974e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_condensed_20,S,11192,136724,Float64,1,1,0.05224864,0.056120652,0.056074372,0.022592766,0.051581671,0.056092957,0.056045671,0.022542996,120598,2.787739e6,3134,4.9109638733395656e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,1.034719937,0.146043353,0.146048612,0.078678983,1.018265641,0.146023671,0.146007897,0.078667558,215953,3.404739e6,19624,14.214742644178667,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,1.087224016,0.160531018,0.145358463,0.079023534,1.076392049,0.145818691,0.14531794,0.078921025,220146,3.494638e6,19496,51.66970951161263,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,1.104788265,0.168333076,0.147665805,0.079119723,1.09590177,0.147641951,0.147638537,0.079012984,221292,3.599399e6,19600,15.32248012620186,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_1,S,118,1282,Float64,1,1,0.001169209,0.000614974,0.000628584,0.000418186,0.00103519,0.000600084,0.000603454,0.000394086,1027,15193.0,33,8.086607326073917e-7,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_10,S,118,1282,Float64,1,1,0.001053199,0.001027139,0.000630214,0.000457705,0.00099222,0.000753818,0.000596454,0.000410996,1027,15193.0,33,0.0001562445067991457,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_condensed_11,S,118,1282,Float64,1,1,0.001057939,0.000681173,0.000604554,0.000504465,0.00100525,0.000588785,0.000596604,0.000393426,1027,15193.0,33,5.097826580562365e-6,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.004082119,0.00201686,0.001586234,0.000960371,0.004022189,0.001946523,0.001536285,0.000947731,2139,26663.0,186,1.0697170401067997e-8,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.004873231,0.001818783,0.001604724,0.000947545,0.004666403,0.001732722,0.001578415,0.000934141,2154,27106.0,185,2.7456609715314606e-5,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.003557984,0.001709313,0.001747463,0.000842302,0.002675153,0.001701744,0.001701943,0.000824522,3273,56950.0,85,0.3235038258289765,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,lap2d_300,S,90000,448800,Float64,1,1,0.348791021,0.240367346,0.240674043,0.004701802,0.345909569,0.240345981,0.24044258,0.004654757,2465905,3.73611053e8,20495,1.6832598767896702e-12,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt,T15,lap3d_40,S,64000,438400,Float64,1,1,0.415790411,14.612541103,14.612355501,0.019351862,0.415790411,14.612541103,14.612355501,0.019351862,14387160,1.6401480134e10,11066,9.061811084088796e-14,1,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_1,S,3150,17714,Float64,1,1,0.054299737,0.013801582,0.013799794,0.023410607,0.053704662,0.013783426,0.013765864,0.023257204,21032,308794.0,1917,3.3512086898080463e-9,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_10,S,3150,17714,Float64,1,1,0.054693776,0.01507601,0.013270667,0.022995126,0.053929471,0.01498966,0.013263759,0.022858374,20542,292847.0,1906,5.776933647623207e-9,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case118_ieee_k2_20,S,3150,17714,Float64,1,1,0.05306064,0.013643744,0.013607562,0.022889278,0.052331748,0.013555077,0.013550177,0.022725457,20507,291377.0,1889,7.507645151131128e-9,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_1,S,33811,188063,Float64,1,1,0.991926506,0.146429037,0.146120059,0.243511976,0.98327876,0.146056859,0.146034119,0.242889352,215953,3.404739e6,19624,0.01594796168284804,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_10,S,33811,188063,Float64,1,1,1.091847841,0.149976461,0.145415602,0.239672107,1.08411467,0.145363863,0.145329983,0.239304801,220146,3.494638e6,19496,8.630339939807564,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case1354_pegase_k2_20,S,33811,188063,Float64,1,1,1.123629585,0.150556733,0.147732345,0.240913364,1.097421125,0.147659733,0.147692785,0.239965147,221292,3.599399e6,19600,0.14771862721996226,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_1,S,344,1924,Float64,1,1,0.004375957,0.001593206,0.001583714,0.002756917,0.0039867,0.001559215,0.001540205,0.002722203,2139,26663.0,186,6.896972747993074e-13,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_10,S,344,1924,Float64,1,1,0.00509171,0.001626868,0.00209265,0.003889711,0.004957215,0.001564664,0.001592625,0.003410052,2154,27106.0,185,2.3271477086231642e-14,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 +sds,ldlt_ir2,T16,kkt_pglib_opf_case14_ieee_k2_15,S,344,1924,Float64,1,1,0.002540124,0.002406726,0.001815996,0.002360497,0.002492155,0.001705623,0.001719133,0.002343986,3273,56950.0,85,7.139728621879342e-9,5,ok,NVIDIA GeForce RTX 4080,0.1.0,73b93aa+dirty,2026-10-02 diff --git a/test/test_bench_compare.jl b/test/test_bench_compare.jl index 616cf3e..ca94142 100644 --- a/test/test_bench_compare.jl +++ b/test/test_bench_compare.jl @@ -54,16 +54,16 @@ end cols = ["solver", "feature", "task", "matrix", "structure", "n", "nnz", "T", "nrhs", "nbatch", "analysis_s", "factorization_s", "refactorization_s", "solve_s", "analysis_min_s", "factorization_min_s", "refactorization_min_s", "solve_min_s", - "lu_nnz", "flops", "nsuperpanels", "relres", "status", "device", "version", "git_sha", "date"] - row(solver, feature, matrix, t, status = "ok") = + "lu_nnz", "flops", "nsuperpanels", "relres", "status", "device", "version", "git_sha", "date", "samples"] + row(solver, feature, matrix, t, status = "ok"; samples = "5") = [solver, feature, "T13", matrix, "SPD", "100", "500", "Float64", "1", "1", (status == "ok" ? fill(string(t), 8) : fill("", 8))..., (status == "ok" ? ["1000", "2.0e6", "0", "1.0e-12"] : fill("", 4))..., - status, "GPU", "0.8.0", "abc123", "2026-10-02"] + status, "GPU", "0.8.0", "abc123", "2026-10-02", samples] mktempdir() do dir write_rows(path, rows) = open(io -> writedlm(io, [permutedims(cols); permutedims(reduce(hcat, rows))], ','), path, "w") write_rows(joinpath(dir, "cudss.csv"), [row("cudss", "cholesky_f64", "a", 0.001), row("cudss", "cholesky_f64", "b", 0.002), row("cudss", "ldlt", "a", 0.001)]) - write_rows(joinpath(dir, "sds.csv"), [row("sds", "cholesky_f64", "a", 0.002), row("sds", "cholesky_f64", "b", 0.008), + write_rows(joinpath(dir, "sds.csv"), [row("sds", "cholesky_f64", "a", 0.002), row("sds", "cholesky_f64", "b", 0.008; samples = "1"), row("sds", "cholesky_nrhs16", "a", 0.0, "NotSupportedError: not implemented yet (T99)")]) c = read_rows(joinpath(dir, "cudss.csv")) s = read_rows(joinpath(dir, "sds.csv")) @@ -83,7 +83,8 @@ end @test occursin("| a | 100 | 1 | 2 | 2.00× |", md) # analysis cuDSS 1 ms, SDS 2 ms @test occursin("| a | 100 | 1 | | |", md) # ldlt: SDS cell blank @test occursin("fail", md) && occursin("* SDS on a: NotSupportedError", md) - @test occursin("Not run yet.", md) # features without rows + @test occursin("Not run yet.", md) + @test occursin("limit): SDS on b.", md) # single-run note # features without rows @test occursin("cuDSS 0.8.0 on GPU, repository abc123, 2026-10-02.", md) @test !occursin("comparison.png", md) for f in BF.COMPARE_FEATURES