From e9d3efc865ba5221529e599057c7c043a6bd3258 Mon Sep 17 00:00:00 2001 From: vincentarelbundock Date: Sat, 20 Jul 2024 00:25:03 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vincenta?= =?UTF-8?q?relbundock/tinytable@a0d55efe7852bffd853c78a6f57166e85af60649?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- man/format_tt.html | 126 +- man/group_tt.html | 246 ++-- man/rbind2-tinytable-tinytable-method.html | 92 +- man/theme_tt.html | 34 +- man/tt.html | 88 +- search.json | 8 +- vignettes/custom.html | 204 +-- vignettes/format.html | 362 ++--- vignettes/group.html | 600 ++++---- vignettes/plot.html | 246 ++-- vignettes/style.html | 1230 ++++++++--------- vignettes/theme.html | 128 +- vignettes/tinytable.html | 520 +++---- .../id09fh8aazzgwx8101w4b1.png | Bin 0 -> 2214 bytes .../id0sx3f9fttl01j4n2pc4h.png | Bin 0 -> 1728 bytes .../id1jl4axiwpfkodqz1taih.png | Bin 0 -> 9723 bytes .../id270t048527z4x7e1nesb.png | Bin 0 -> 2077 bytes .../id2trw0fgf2q4zvwmfrdkm.png | Bin 0 -> 1846 bytes .../id5rz99eya9ti70udud53a.png | Bin 0 -> 10964 bytes .../id78lijvj79dogegtgx32y.png | Bin 0 -> 5073 bytes .../id8kwgnt0oig9t6k6g6ayc.png | Bin 0 -> 2072 bytes .../id8nk5717gzkp4n84si72a.png | Bin 0 -> 11898 bytes .../id95rcav5av43g3u85urxx.png | Bin 0 -> 5080 bytes .../idamtey0as80bj5uosylq5.png | Bin 0 -> 5057 bytes .../idcde7pwdo7x3wnujcpq6p.png | Bin 0 -> 548 bytes .../idd0v9391cwize891sn063.png | Bin 0 -> 11912 bytes .../idd2oduyeiw7fh3s3v4myo.png | Bin 0 -> 2444 bytes .../idde4xwgl5peg6mfm8mlhk.png | Bin 0 -> 512 bytes .../iddw76wje1hg09o2us04bs.png | Bin 0 -> 11877 bytes .../ideiig7u6d135oxz67op6e.png | Bin 0 -> 1127 bytes .../idfefv9ibpxq01cdh7v9ep.png | Bin 0 -> 15240 bytes .../idfltsinwlq85n2bs31rww.png | Bin 0 -> 1829 bytes .../idgg3rcy1peaafpq5st0lr.png | Bin 0 -> 8399 bytes .../idgk8u0aa0ll9q36pkskg0.png | Bin 0 -> 12175 bytes .../idhk6lcrqktcyh8c0o7ckr.png | Bin 0 -> 2558 bytes .../idhskv9gv66fmyim1h9rk3.png | Bin 0 -> 529 bytes .../idk224c2616l5bt9j3qmma.png | Bin 0 -> 10264 bytes .../idp1kseloo8glss1e49bo7.png | Bin 0 -> 2564 bytes .../idueb5zt6y4bpf0uh5b9w1.png | Bin 0 -> 2191 bytes .../idv4qxdgicshq1slyuyxm6.png | Bin 0 -> 2250 bytes vignettes/tinytable_tutorial.pdf | Bin 1796490 -> 1791753 bytes 41 files changed, 1942 insertions(+), 1942 deletions(-) create mode 100644 vignettes/tinytable_assets/id09fh8aazzgwx8101w4b1.png create mode 100644 vignettes/tinytable_assets/id0sx3f9fttl01j4n2pc4h.png create mode 100644 vignettes/tinytable_assets/id1jl4axiwpfkodqz1taih.png create mode 100644 vignettes/tinytable_assets/id270t048527z4x7e1nesb.png create mode 100644 vignettes/tinytable_assets/id2trw0fgf2q4zvwmfrdkm.png create mode 100644 vignettes/tinytable_assets/id5rz99eya9ti70udud53a.png create mode 100644 vignettes/tinytable_assets/id78lijvj79dogegtgx32y.png create mode 100644 vignettes/tinytable_assets/id8kwgnt0oig9t6k6g6ayc.png create mode 100644 vignettes/tinytable_assets/id8nk5717gzkp4n84si72a.png create mode 100644 vignettes/tinytable_assets/id95rcav5av43g3u85urxx.png create mode 100644 vignettes/tinytable_assets/idamtey0as80bj5uosylq5.png create mode 100644 vignettes/tinytable_assets/idcde7pwdo7x3wnujcpq6p.png create mode 100644 vignettes/tinytable_assets/idd0v9391cwize891sn063.png create mode 100644 vignettes/tinytable_assets/idd2oduyeiw7fh3s3v4myo.png create mode 100644 vignettes/tinytable_assets/idde4xwgl5peg6mfm8mlhk.png create mode 100644 vignettes/tinytable_assets/iddw76wje1hg09o2us04bs.png create mode 100644 vignettes/tinytable_assets/ideiig7u6d135oxz67op6e.png create mode 100644 vignettes/tinytable_assets/idfefv9ibpxq01cdh7v9ep.png create mode 100644 vignettes/tinytable_assets/idfltsinwlq85n2bs31rww.png create mode 100644 vignettes/tinytable_assets/idgg3rcy1peaafpq5st0lr.png create mode 100644 vignettes/tinytable_assets/idgk8u0aa0ll9q36pkskg0.png create mode 100644 vignettes/tinytable_assets/idhk6lcrqktcyh8c0o7ckr.png create mode 100644 vignettes/tinytable_assets/idhskv9gv66fmyim1h9rk3.png create mode 100644 vignettes/tinytable_assets/idk224c2616l5bt9j3qmma.png create mode 100644 vignettes/tinytable_assets/idp1kseloo8glss1e49bo7.png create mode 100644 vignettes/tinytable_assets/idueb5zt6y4bpf0uh5b9w1.png create mode 100644 vignettes/tinytable_assets/idv4qxdgicshq1slyuyxm6.png diff --git a/man/format_tt.html b/man/format_tt.html index 501fa73f..fddc3bf6 100644 --- a/man/format_tt.html +++ b/man/format_tt.html @@ -687,12 +687,12 @@

Examples

- +
@@ -746,12 +746,12 @@

Examples

- + - + @@ -768,12 +768,12 @@

Examples

-
10 00010 001 10 000
10 000 10 00110 002
9 999
+
@@ -847,12 +847,12 @@

Examples

-
+
@@ -938,12 +938,12 @@

Examples

-
+
@@ -1011,12 +1011,12 @@

Examples

-
+
@@ -1084,12 +1084,12 @@

Examples

-
+
@@ -1168,12 +1168,12 @@

Examples

-
+
diff --git a/man/group_tt.html b/man/group_tt.html index f7681e8b..cbc6ee38 100644 --- a/man/group_tt.html +++ b/man/group_tt.html @@ -478,12 +478,12 @@

Examples

-
+
@@ -652,12 +652,12 @@

Examples

-
+
@@ -849,12 +849,12 @@

Examples

-
+
@@ -1039,12 +1039,12 @@

Examples

-
Hamburgers
+
diff --git a/man/rbind2-tinytable-tinytable-method.html b/man/rbind2-tinytable-tinytable-method.html index 74ff1544..5b0d5c30 100644 --- a/man/rbind2-tinytable-tinytable-method.html +++ b/man/rbind2-tinytable-tinytable-method.html @@ -483,12 +483,12 @@

Examples

-
Foo
+
@@ -599,12 +599,12 @@

Examples

-
Combine two tiny tables.
+
@@ -716,12 +716,12 @@

Examples

-
Combine two tiny tables.
+
@@ -826,12 +826,12 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/theme_tt.html b/man/theme_tt.html index 047e278a..de94ca21 100644 --- a/man/theme_tt.html +++ b/man/theme_tt.html @@ -525,12 +525,12 @@

Examples

-
Combine two tiny tables.
+
diff --git a/man/tt.html b/man/tt.html index a2f2640e..6db29f3d 100644 --- a/man/tt.html +++ b/man/tt.html @@ -608,12 +608,12 @@

Examples

-
+
@@ -713,12 +713,12 @@

Examples

-
+
@@ -941,12 +941,12 @@

Examples

-
+
diff --git a/search.json b/search.json index 10ecf819..78757472 100644 --- a/search.json +++ b/search.json @@ -521,7 +521,7 @@ "href": "man/format_tt.html", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 000\n \n \n 10 000\n 10 001\n \n \n 9 999\n 10 000\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 001\n 10 000\n \n \n 10 001\n 10 002\n \n \n 9 999\n 10 000\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", @@ -533,7 +533,7 @@ "href": "man/format_tt.html#format-columns-of-a-data-frame", "title": "tinytable", "section": "", - "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 000\n 10 000\n \n \n 10 000\n 10 001\n \n \n 9 999\n 10 000\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", + "text": "This function formats the columns of a data frame based on the column type (logical, date, numeric). It allows various formatting options like significant digits, decimal points, and scientific notation. It also includes custom formatting for date and boolean values. If this function is applied several times to the same cell, the last transformation is retained and the previous calls are ignored, except for the escape argument which can be applied to previously transformed data.\n\n\n\nformat_tt(\n x,\n i = NULL,\n j = NULL,\n digits = getOption(\"tinytable_format_digits\", default = NULL),\n num_fmt = getOption(\"tinytable_format_num_fmt\", default = \"significant\"),\n num_zero = getOption(\"tinytable_format_num_zero\", default = FALSE),\n num_suffix = getOption(\"tinytable_format_num_suffix\", default = FALSE),\n num_mark_big = getOption(\"tinytable_format_num_mark_big\", default = \"\"),\n num_mark_dec = getOption(\"tinytable_format_num_mark_dec\", default = getOption(\"OutDec\",\n default = \".\")),\n date = getOption(\"tinytable_format_date\", default = \"%Y-%m-%d\"),\n bool = getOption(\"tinytable_format_bool\", default = function(column)\n tools::toTitleCase(tolower(column))),\n other = getOption(\"tinytable_format_other\", default = as.character),\n replace = getOption(\"tinytable_format_replace\", default = TRUE),\n escape = getOption(\"tinytable_format_escape\", default = FALSE),\n markdown = getOption(\"tinytable_format_markdown\", default = FALSE),\n quarto = getOption(\"tinytable_format_quarto\", default = FALSE),\n fn = getOption(\"tinytable_format_fn\", default = NULL),\n sprintf = getOption(\"tinytable_format_sprintf\", default = NULL),\n ...\n)\n\n\n\n\n\n\n\nx\n\n\nA data frame or a vector to be formatted.\n\n\n\n\ni\n\n\nRow indices where the formatting should be applied.\n\n\n\n\nj\n\n\nColumn indices where the styling should be applied. Can be:\n\n\nInteger vectors indicating column positions.\n\n\nCharacter vector indicating column names.\n\n\nA single string specifying a Perl-style regular expression used to match column names.\n\n\n\n\n\n\ndigits\n\n\nNumber of significant digits or decimal places.\n\n\n\n\nnum_fmt\n\n\nThe format for numeric values; one of ‘significant’, ‘significant_cell’, ‘decimal’, or ‘scientific’.\n\n\n\n\nnum_zero\n\n\nLogical; if TRUE, trailing zeros are kept in \"decimal\" format (but not in \"significant\" format).\n\n\n\n\nnum_suffix\n\n\nLogical; if TRUE display short numbers with digits significant digits and K (thousands), M (millions), B (billions), or T (trillions) suffixes.\n\n\n\n\nnum_mark_big\n\n\nCharacter to use as a thousands separator.\n\n\n\n\nnum_mark_dec\n\n\nDecimal mark character. Default is the global option ‘OutDec’.\n\n\n\n\ndate\n\n\nA string passed to the format() function, such as \"%Y-%m-%d\". See the \"Details\" section in ?strptime\n\n\n\n\nbool\n\n\nA function to format logical columns. Defaults to title case.\n\n\n\n\nother\n\n\nA function to format columns of other types. Defaults to as.character().\n\n\n\n\nreplace\n\n\nLogical, String or Named list of vectors\n\n\nTRUE: Replace NA by an empty string.\n\n\nFALSE: Print NA as the string \"NA\".\n\n\nString: Replace NA entries by the user-supplied string.\n\n\nNamed list: Replace matching elements of the vectors in the list by theirs names. Example:\n\n\nlist(“-” = c(NA, NaN), “Tiny” = -Inf, “Massive” = Inf)\n\n\n\n\n\n\n\n\nescape\n\n\nLogical or \"latex\" or \"html\". If TRUE, escape special characters to display them as text in the format of the output of a tt() table.\n\n\nIf i and j are both NULL, escape all cells, column names, caption, notes, and spanning labels created by group_tt().\n\n\n\n\n\n\nmarkdown\n\n\nLogical; if TRUE, render markdown syntax in cells. Ex: italicized text is properly italicized in HTML and LaTeX.\n\n\n\n\nquarto\n\n\nLogical. Enable Quarto data processing and wrap cell content in a data-qmd span (HTML) or macro (LaTeX). See warnings in the Global Options section below.\n\n\n\n\nfn\n\n\nFunction for custom formatting. Accepts a vector and returns a character vector of the same length.\n\n\n\n\nsprintf\n\n\nString passed to the ?sprintf function to format numbers or interpolate strings with a user-defined pattern (similar to the glue package, but using Base R).\n\n\n\n\n…\n\n\nAdditional arguments are ignored.\n\n\n\n\n\n\nA data frame with formatted columns.\n\n\n\n\nWhen the x data frame includes row names, tinytable can bind them to the first column (without an empty string string as column name). This global option triggers this behavior:\n\noptions(tinytable_tt_rownames = TRUE)\n\nx <- mtcars[1:3, 1:3]\ntt(x)\n\noptions(tinytable_tt_rownames = FALSE)\n\n\n\nThe format_tt(quarto=TRUE) argument activates Quarto data processing for specific cells. This funcationality comes with a few warnings:\n\n\nCurrently, Quarto provides a LaTeX macro, but it does not appear to do anything with it. References and markdown codes may not be processed as expected in LaTeX.\n\n\nQuarto data processing can enter in conflict with tinytable styling or formatting options. See below for how to disable it.\n\n\noptions(tinytable_quarto_disable_processing = TRUE)\nDisable Quarto processing of cell content. Setting this global option to FALSE may lead to conflicts with some tinytable features, but it also allows use of markdown and Quarto-specific code in table cells, such as cross-references.\n\nx <- data.frame(Math = \"x^2^\", Citation = \"@Lovelace1842\")\nfn <- function(z) sprintf(\"<span data-qmd='%s'></span>\", z)\ntt(x) |> format_tt(i = 1, fn = fn)\n\n\nSee this link for more details: https://quarto.org/docs/authoring/tables.html#disabling-quarto-table-processing\n\n\n\nEXPERIMENTAL options(tinytable_html_mathjax = TRUE) inserts MathJax scripts in the HTML document. Warning: This may conflict with other elements of the page if MathJax is otherwise loaded.\n\n\n\n\n\noptions(tinytable_save_pdf_clean = TRUE) deletes temporary and log files.\n\n\noptions(tinytable_save_pdf_engine = “xelatex”): \"xelatex\", \"pdflatex\", \"lualatex\"\n\n\n\n\n\n\nlibrary(\"tinytable\")\n\ndat <- data.frame(\n a = rnorm(3, mean = 10000),\n b = rnorm(3, 10000))\ntab <- tt(dat)\nformat_tt(tab,\n digits = 2,\n num_mark_dec = \",\",\n num_mark_big = \" \")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n 10 001\n 10 000\n \n \n 10 001\n 10 002\n \n \n 9 999\n 10 000\n \n \n \n \n\n\nk <- tt(data.frame(x = c(0.000123456789, 12.4356789)))\nformat_tt(k, digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1, num_fmt = \"decimal\", num_zero = TRUE) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.4\n 99T\n \n \n Food: Halloumi\n 201.4\n 7.3B\n \n \n Food: Tofu\n 0.1\n 29M\n \n \n Food: Beans\n 0.0\n 94K\n \n \n \n \n\n\ny <- tt(data.frame(x = c(123456789.678, 12435.6789)))\nformat_tt(y, digits=3, num_mark_big=\" \")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 123 456 790\n \n \n 12 436\n \n \n \n \n\n\nx <- tt(data.frame(Text = c(\"_italicized text_\", \"__bold text__\")))\nformat_tt(x, markdown=TRUE)\n\n\n\n \n\n \n \n \n \n \n \n Text\n \n \n \n \n \n italicized text\n \n \n bold text\n \n \n \n \n\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\ntt(dat) |> format_tt(escape = TRUE) \n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>", "crumbs": [ "Tutorial (PDF)", "Functions", @@ -702,7 +702,7 @@ "href": "vignettes/format.html", "title": "Formatting", "section": "", - "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1971-12-24\n True \n \n \n 201399\n 201.4 \n 1972-08-08\n True \n \n \n 100188\n 0.13\n 1971-04-19\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n December 24 1971\n True\n \n \n 201 399,18\n 201.4\n August 08 1972\n True\n \n \n 100 188,39\n 0.1\n April 19 1971\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", + "text": "library(tinytable)\noptions(tinytable_tt_digits = 3)\noptions(tinytable_theme_placement_latex_float = \"H\")\nx <- mtcars[1:4, 1:5]\n\n\n\nThe tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1972-07-13\n True \n \n \n 201399\n 201.4 \n 1971-04-29\n True \n \n \n 100188\n 0.13\n 1970-01-22\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n July 13 1972\n True\n \n \n 201 399,18\n 201.4\n April 29 1971\n True\n \n \n 100 188,39\n 0.1\n January 22 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K\n\n\n\n\n\nBy default, format_tt() formats numbers to ensure that the smallest value in a vector (column) has at least a certain number of significant digits. For example,\n\nk <- data.frame(x = c(0.000123456789, 12.4356789))\ntt(k, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12.43568\n \n \n \n \n\n\n\nWe can alter this behavior to ensure to round significant digits on a per-cell basis, using the num_fmt argument in format_tt():\n\ntt(k) |> format_tt(digits = 2, num_fmt = \"significant_cell\")\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12\n \n \n \n \n\n\n\nThe numeric formatting options in format_tt() can also be controlled using global options:\n\noptions(\"tinytable_tt_digits\" = 2)\noptions(\"tinytable_format_num_fmt\" = \"significant_cell\")\ntt(k)\n\n\n\n \n\n \n \n \n \n \n \n x\n \n \n \n \n \n 0.00012\n \n \n 12 \n \n \n \n \n\n\n\n\n\n\nMissing values can be replaced by a custom string using the replace argument (default \"\"):\n\ntab <- data.frame(a = c(NA, 1, 2), b = c(3, NA, 5))\n\ntt(tab)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n NA\n 3\n \n \n 1\n NA\n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt()\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n \n 3\n \n \n 1\n \n \n \n 2\n 5\n \n \n \n \n\n\ntt(tab) |> format_tt(replace = \"-\")\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n \n \n \n \n \n -\n 3\n \n \n 1\n -\n \n \n 2\n 5\n \n \n \n \n\n\n\nWe can also specify multiple value replacements at once using a named list of vectors:\n\ntmp <- data.frame(x = 1:5, y = c(pi, NA, NaN, -Inf, Inf))\ndict <- list(\"-\" = c(NA, NaN), \"-∞\" = -Inf, \"∞\" = Inf)\ntt(tmp) |> format_tt(replace = dict, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n x\n y\n \n \n \n \n \n 1\n 3.1\n \n \n 2\n -\n \n \n 3\n -\n \n \n 4\n -∞\n \n \n 5\n ∞\n \n \n \n \n\n\n\n\n\n\nLaTeX and HTML use special characters to indicate strings which should be interpreted rather than displayed as text. For example, including underscores or dollar signs in LaTeX can cause compilation errors in some documents. To display those special characters, we need to substitute or escape them with backslashes, depending on the output format. The escape argument of format_tt() can be used to do this automatically:\n\ndat <- data.frame(\n \"LaTeX\" = c(\"Dollars $\", \"Percent %\", \"Underscore _\"),\n \"HTML\" = c(\"<br>\", \"<sup>4</sup>\", \"<emph>blah</emph>\")\n)\n\ntt(dat) |> format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n LaTeX\n HTML\n \n \n \n \n \n Dollars $\n <br>\n \n \n Percent %\n <sup>4</sup>\n \n \n Underscore _\n <emph>blah</emph>\n \n \n \n \n\n\n\nWhen applied to a tt() table, format_tt() will determine the type of escaping to do automatically. When applied to a string or vector, we must specify the type of escaping to apply:\n\nformat_tt(\"_ Dollars $\", escape = \"latex\")\n\n[1] \"\\\\_ Dollars \\\\$\"\n\n\n\n\n\nMarkdown can be rendered in cells by using the markdown argument of the format_tt() function (note: this requires installing the markdown as an optional dependency).\n\ndat <- data.frame( markdown = c(\n \"This is _italic_ text.\",\n \"This sentence ends with a superscript.^2^\")\n)\n\ntt(dat) |>\n format_tt(j = 1, markdown = TRUE) |>\n style_tt(j = 1, align = \"c\")\n\n\n\n \n\n \n \n \n \n \n \n markdown\n \n \n \n \n \n This is italic text.\n \n \n This sentence ends with a superscript.2\n \n \n \n \n\n\n\nMarkdown syntax can be particularly useful when formatting URLs in a table:\n\ndat <- data.frame(\n `Package (link)` = c(\n \"[`marginaleffects`](https://www.marginaleffects.com/)\",\n \"[`modelsummary`](https://www.modelsummary.com/)\",\n \"[`tinytable`](https://vincentarelbundock.github.io/tinytable/)\",\n \"[`countrycode`](https://vincentarelbundock.github.io/countrycode/)\",\n \"[`WDI`](https://vincentarelbundock.github.io/WDI/)\",\n \"[`softbib`](https://vincentarelbundock.github.io/softbib/)\",\n \"[`tinysnapshot`](https://vincentarelbundock.github.io/tinysnapshot/)\",\n \"[`altdoc`](https://etiennebacher.github.io/altdoc/)\",\n \"[`tinyplot`](https://grantmcdermott.com/tinyplot/)\",\n \"[`parameters`](https://easystats.github.io/parameters/)\",\n \"[`insight`](https://easystats.github.io/insight/)\"\n ),\n Purpose = c(\n \"Interpreting statistical models\",\n \"Data and model summaries\",\n \"Draw beautiful tables easily\",\n \"Convert country codes and names\",\n \"Download data from the World Bank\",\n \"Software bibliographies in R\",\n \"Snapshots for unit tests using `tinytest`\",\n \"Create documentation website for R packages\",\n \"Extension of base R plot functions\",\n \"Extract from model objects\",\n \"Extract information from model objects\"\n ),\n check.names = FALSE\n)\n\ntt(dat) |> format_tt(j = 1, markdown = TRUE)\n\n\n\n \n\n \n \n Vincent sometimes contributes to these R packages.\n \n \n \n Package (link)\n Purpose\n \n \n \n \n \n marginaleffects\n Interpreting statistical models \n \n \n modelsummary\n Data and model summaries \n \n \n tinytable\n Draw beautiful tables easily \n \n \n countrycode\n Convert country codes and names \n \n \n WDI\n Download data from the World Bank \n \n \n softbib\n Software bibliographies in R \n \n \n tinysnapshot\n Snapshots for unit tests using `tinytest` \n \n \n altdoc\n Create documentation website for R packages\n \n \n tinyplot\n Extension of base R plot functions \n \n \n parameters\n Extract from model objects \n \n \n insight\n Extract information from model objects \n \n \n \n \n\n\n\n\n\n\nOn top of the built-in features of format_tt, a custom formatting function can be specified via the fn argument. The fn argument takes a function that accepts a single vector and returns a string (or something that coerces to a string like a number).\n\ntt(x) |> \n format_tt(j = \"mpg\", fn = function(x) paste0(x, \" mpg\")) |>\n format_tt(j = \"drat\", fn = \\(x) signif(x, 2))\n\n\n\n \n\n \n \n \n \n \n \n mpg\n cyl\n disp\n hp\n drat\n \n \n \n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 21 mpg\n 6\n 160\n 110\n 3.9\n \n \n 22.8 mpg\n 4\n 108\n 93\n 3.8\n \n \n 21.4 mpg\n 6\n 258\n 110\n 3.1\n \n \n \n \n\n\n\nFor example, the scales package which is used internally by ggplot2 provides a bunch of useful tools for formatting (e.g. dates, numbers, percents, logs, currencies, etc.). The label_*() functions can be passed to the fn argument.\nNote that we call format_tt(escape = TRUE) at the end of the pipeline because the column names and cells include characters that need to be escaped in LaTeX: _, %, and $. This last call is superfluous in HTML.\n\nthumbdrives <- data.frame(\n date_lookup = as.Date(c(\"2024-01-15\", \"2024-01-18\", \"2024-01-14\", \"2024-01-16\")),\n price = c(18.49, 19.99, 24.99, 24.99),\n price_rank = c(1, 2, 3, 3),\n memory = c(16e9, 12e9, 10e9, 8e9),\n speed_benchmark = c(0.6, 0.73, 0.82, 0.99)\n)\n\ntt(thumbdrives) |>\n format_tt(j = 1, fn = scales::label_date(\"%e %b\", locale = \"fr\")) |>\n format_tt(j = 2, fn = scales::label_currency()) |>\n format_tt(j = 3, fn = scales::label_ordinal()) |> \n format_tt(j = 4, fn = scales::label_bytes()) |> \n format_tt(j = 5, fn = scales::label_percent()) |>\n format_tt(escape = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n date_lookup\n price\n price_rank\n memory\n speed_benchmark\n \n \n \n \n \n 2024-01-15\n $18.49\n 1st\n 16 GB\n 60%\n \n \n 2024-01-18\n $19.99\n 2nd\n 12 GB\n 73%\n \n \n 2024-01-14\n $24.99\n 3rd\n 10 GB\n 82%\n \n \n 2024-01-16\n $24.99\n 3rd\n 8 GB\n 99%\n \n \n \n \n\n\n\n\n\n\nQuarto automatically applies some data processing to the content of the tables it renders. By default, tinytable disables this processing, because it can enter in conflict with styling and formatting features of the package.\nTo enable Quarto data processing, we can use the quarto argument of the format_tt() function. This argument allows users to mark certain cells explicitly for processing by Quarto, by wrapping them in a special “span” called “data-qmd”, supported by Quarto:\n\nk <- data.frame(Thing = \"qwerty\", Citation = \"@Lovelace1842\")\n\ntt(k) |> format_tt(quarto = TRUE)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nSome users may want to apply Quarto data processing to all tables. This can be done with themes:\n\ntheme_quarto <- function(x) format_tt(x, quarto = TRUE)\noptions(tinytable_tt_theme = theme_quarto)\n\ntt(k)\n\n\n\n \n\n \n \n \n\n\n\nThing\nCitation\n\n\n\n\nqwerty\nLovelace (1842)\n\n\n\n\n \n\n\n\nBack to normal:\n\noptions(tinytable_tt_theme = NULL)\n\nAlternatively, users can set a global option to process all tables in Quarto, but they will then have to mark each cell with special content using format_tt(quarto):\n\noptions(tinytable_quarto_disable_processing = FALSE)\n\ntt(x)\n\n\n\n \n\n \n \n \n\n\n\nmpg\ncyl\ndisp\nhp\ndrat\n\n\n\n\n21.0\n6\n160\n110\n3.90\n\n\n21.0\n6\n160\n110\n3.90\n\n\n22.8\n4\n108\n93\n3.85\n\n\n21.4\n6\n258\n110\n3.08\n\n\n\n\n \n\n\n\nNotice that Quarto is now processing the table, so we lose the default tinytable theme and get the default striped Quarto look.\nBack to normal:\n\noptions(tinytable_quarto_disable_processing = TRUE)", "crumbs": [ "Tutorial (PDF)", "Tutorial", @@ -714,7 +714,7 @@ "href": "vignettes/format.html#numbers-dates-strings-etc.", "title": "Formatting", "section": "", - "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1971-12-24\n True \n \n \n 201399\n 201.4 \n 1972-08-08\n True \n \n \n 100188\n 0.13\n 1971-04-19\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n December 24 1971\n True\n \n \n 201 399,18\n 201.4\n August 08 1972\n True\n \n \n 100 188,39\n 0.1\n April 19 1971\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", + "text": "The tt() function is minimalist; it’s inteded purpose is simply to draw nice tables. Users who want to format numbers, dates, strings, and other variables in different ways should process their data before supplying it to the tt() table-drawing function. To do so, we can use the format_tt() function supplied by the tinytable.\nIn a very simple case—such as printing 2 significant digits of all numeric variables—we can use the digits argument of tt():\n\ndat <- data.frame(\n w = c(143002.2092, 201399.181, 100188.3883),\n x = c(1.43402, 201.399, 0.134588),\n y = as.Date(sample(1:1000, 3), origin = \"1970-01-01\"),\n z = c(TRUE, TRUE, FALSE))\n\ntt(dat, digits = 2)\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143002\n 1.43\n 1972-07-13\n True \n \n \n 201399\n 201.4 \n 1971-04-29\n True \n \n \n 100188\n 0.13\n 1970-01-22\n False\n \n \n \n \n\n\n\nWe can get more fine-grained control over formatting by calling format_tt() after tt(), optionally by specifying the columns to format with j:\n\ntt(dat) |> \n format_tt(\n j = 2:4,\n digits = 1,\n date = \"%B %d %Y\") |>\n format_tt(\n j = 1,\n digits = 2,\n num_mark_big = \" \",\n num_mark_dec = \",\",\n num_fmt = \"decimal\")\n\n\n\n \n\n \n \n \n \n \n \n w\n x\n y\n z\n \n \n \n \n \n 143 002,21\n 1.4\n July 13 1972\n True\n \n \n 201 399,18\n 201.4\n April 29 1971\n True\n \n \n 100 188,39\n 0.1\n January 22 1970\n False\n \n \n \n \n\n\n\nWe can use a regular expression in j to select columns, and the ?sprintf function to format strings, numbers, and to do string interpolation (similar to the glue package, but using Base R):\n\ndat <- data.frame(\n a = c(\"Burger\", \"Halloumi\", \"Tofu\", \"Beans\"),\n b = c(1.43202, 201.399, 0.146188, 0.0031),\n c = c(98938272783457, 7288839482, 29111727, 93945))\ntt(dat) |>\n format_tt(j = \"a\", sprintf = \"Food: %s\") |>\n format_tt(j = 2, digits = 1) |>\n format_tt(j = \"c\", digits = 2, num_suffix = TRUE)\n\n\n\n \n\n \n \n \n \n \n \n a\n b\n c\n \n \n \n \n \n Food: Burger\n 1.432\n 99T\n \n \n Food: Halloumi\n 201.399\n 7.3B\n \n \n Food: Tofu\n 0.146\n 29M\n \n \n Food: Beans\n 0.003\n 94K\n \n \n \n \n\n\n\nFinally, if you like the format_tt() interface, you can use it directly with numbers, vectors, or data frames:\n\nformat_tt(pi, digits = 1)\n\n[1] \"3\"\n\nformat_tt(dat, digits = 1, num_suffix = TRUE)\n\n a b c\n1 Burger 1 99T\n2 Halloumi 201 7B\n3 Tofu 0.1 29M\n4 Beans 0.003 94K", "crumbs": [ "Tutorial (PDF)", "Tutorial", diff --git a/vignettes/custom.html b/vignettes/custom.html index d3354ddd..842a322c 100644 --- a/vignettes/custom.html +++ b/vignettes/custom.html @@ -423,12 +423,12 @@

Bootstrap classes

-
+
@@ -528,12 +528,12 @@

Bootstrap classes

-
+
@@ -634,12 +634,12 @@

Bootstrap classes

-
+
@@ -743,12 +743,12 @@

CSS declarations

-
+
@@ -894,12 +894,12 @@

CSS rules

-
+
@@ -1063,12 +1063,12 @@

CSS rules

-
+
diff --git a/vignettes/format.html b/vignettes/format.html index 30b8dd1f..3c4fb78e 100644 --- a/vignettes/format.html +++ b/vignettes/format.html @@ -441,12 +441,12 @@

Numbers, dates,
-

+
@@ -506,19 +506,19 @@

Numbers, dates,

- + - + - + @@ -544,12 +544,12 @@

Numbers, dates,
-

143002 1.431971-12-241972-07-13 True
201399 201.4 1972-08-081971-04-29 True
100188 0.131971-04-191970-01-22 False
+
@@ -609,19 +609,19 @@

Numbers, dates,

- + - + - + @@ -644,12 +644,12 @@

Numbers, dates,
-

143 002,21 1.4December 24 1971July 13 1972 True
201 399,18 201.4August 08 1972April 29 1971 True
100 188,39 0.1April 19 1971January 22 1970 False
+
@@ -756,12 +756,12 @@

Significan
-

+
@@ -831,12 +831,12 @@

Significan
-

+
@@ -908,12 +908,12 @@

Significan
-

+
@@ -988,12 +988,12 @@

Replacement

-
+
@@ -1068,12 +1068,12 @@

Replacement

-
+
@@ -1148,12 +1148,12 @@

Replacement

-
+
@@ -1233,12 +1233,12 @@

Replacement

-
+
@@ -1332,12 +1332,12 @@

Escape special c
-

+
@@ -1432,12 +1432,12 @@

Markdown

-
+
@@ -1540,12 +1540,12 @@

Markdown

-
+

Vincent sometimes contributes to these R packages.

@@ -1660,12 +1660,12 @@

Custom functions

-

Vincent sometimes contributes to these R packages.

+
@@ -1780,12 +1780,12 @@

Custom functions

-
+
@@ -1891,12 +1891,12 @@

Quarto data process
-

+
@@ -1969,12 +1969,12 @@

Quarto data process
-

Thing
+
@@ -2050,12 +2050,12 @@

Quarto data process
-

Thing
+
diff --git a/vignettes/group.html b/vignettes/group.html index bc2b8ddb..a59d2934 100644 --- a/vignettes/group.html +++ b/vignettes/group.html @@ -416,12 +416,12 @@

Rows

-
mpg
+
@@ -612,12 +612,12 @@

Rows

-
+
@@ -746,12 +746,12 @@

Rows

-
+
@@ -879,12 +879,12 @@

Rows

-
+
@@ -1023,12 +1023,12 @@

Rows

-
+
@@ -1251,12 +1251,12 @@

Columns

-
+
@@ -1455,12 +1455,12 @@

Columns

-
Hamburgers
+
@@ -1685,12 +1685,12 @@

Columns

-
Hamburgers
+
diff --git a/vignettes/plot.html b/vignettes/plot.html index 1c28659b..ddc664e4 100644 --- a/vignettes/plot.html +++ b/vignettes/plot.html @@ -427,12 +427,12 @@

Inserting image
-

Hello
+
@@ -510,12 +510,12 @@

Inserting image
-

+
@@ -614,12 +614,12 @@

Built-in plots

-
+
@@ -694,24 +694,24 @@

Built-in plots

- - - - + + + + - - - - + + + + - - - - + + + +
mpg
hp
qsec
@@ -740,12 +740,12 @@

Custom plots: Base
- +
@@ -800,15 +800,15 @@

Custom plots: Base

- + - + - +
mpg
hp
qsec
@@ -841,12 +841,12 @@

Custom plots: g
- +
@@ -901,15 +901,15 @@

Custom plots: g

- + - + - +
mpg
hp
qsec
@@ -958,12 +958,12 @@

Custom plots: g
- +
@@ -1033,21 +1033,21 @@

Custom plots: g

- - - + + + - - - + + + - - - + + +
Adelie
Chinstrap
Gentoo
@@ -1069,12 +1069,12 @@

Fontawesome

- +
diff --git a/vignettes/style.html b/vignettes/style.html index a0a8b0dd..dc85bf51 100644 --- a/vignettes/style.html +++ b/vignettes/style.html @@ -445,12 +445,12 @@

Cells, rows, columns
-

+
@@ -557,12 +557,12 @@

Cells, rows, columns
-

+
@@ -669,12 +669,12 @@

Cells, rows, columns
-

+
@@ -795,12 +795,12 @@

Cells, rows, columns
-

+
@@ -911,12 +911,12 @@

Cells, rows, columns
-

+
@@ -1026,12 +1026,12 @@

Cells, rows, columns
-

+
@@ -1138,12 +1138,12 @@

Cells, rows, columns
-

+
@@ -1253,12 +1253,12 @@

Cells, rows, columns
-

+
@@ -1374,12 +1374,12 @@

Cells, rows, columns
-

+
@@ -1501,12 +1501,12 @@

Colors

-
+
@@ -1620,12 +1620,12 @@

Alignment

-
+
@@ -1715,12 +1715,12 @@

Alignment

-
+
@@ -1820,12 +1820,12 @@

Alignment

-
+
@@ -1909,12 +1909,12 @@

Font size

-
+
@@ -2035,12 +2035,12 @@

Spanning cell
-

+
@@ -2143,12 +2143,12 @@

Spanning cell
-

+
@@ -2261,12 +2261,12 @@

Spanning cell
-

+
@@ -2374,12 +2374,12 @@

Spanning cell
-

+
@@ -2455,12 +2455,12 @@

Spanning cell
-

+
@@ -2540,12 +2540,12 @@

Headers

-
+
@@ -2638,12 +2638,12 @@

Headers

-
+
@@ -2743,12 +2743,12 @@

Headers

-
+
@@ -2867,12 +2867,12 @@

Conditional styling
-

+
@@ -3006,12 +3006,12 @@

Vectorized sty
-

+
@@ -3139,12 +3139,12 @@

Vectorized sty
-

+
@@ -3275,12 +3275,12 @@

Vectorized sty
-

+
@@ -3429,12 +3429,12 @@

Lines (borders)

-
+
@@ -3544,12 +3544,12 @@

Lines (borders)

-
+
@@ -3660,12 +3660,12 @@

Lines (borders)

-
+
@@ -3751,12 +3751,12 @@

Cell padding
-

+
diff --git a/vignettes/theme.html b/vignettes/theme.html index f240773b..59794e92 100644 --- a/vignettes/theme.html +++ b/vignettes/theme.html @@ -415,12 +415,12 @@

Visual themes

-
+
@@ -615,12 +615,12 @@

Visual themes

-
+
@@ -907,12 +907,12 @@

Custom themes

-
Always use the same caption.
+
diff --git a/vignettes/tinytable.html b/vignettes/tinytable.html index 0770e662..ccbe3a9e 100644 --- a/vignettes/tinytable.html +++ b/vignettes/tinytable.html @@ -419,12 +419,12 @@

Tiny Tables

-
Always use the same caption.
+
@@ -526,12 +526,12 @@

Width

-
+
@@ -630,12 +630,12 @@

Width

-
+
@@ -735,12 +735,12 @@

Width

-
+
@@ -863,12 +863,12 @@

Width

-
+
@@ -998,12 +998,12 @@

Width

-
+
@@ -1078,12 +1078,12 @@

Footnotes

-
+

A full-width table with wrapped text in cells and a footnote.

@@ -1156,12 +1156,12 @@

Footnotes

-

A full-width table with wrapped text in cells and a footnote.

+
@@ -1272,12 +1272,12 @@

Footnotes

-
+
@@ -1404,12 +1404,12 @@

Captions and
-

+
@@ -1541,12 +1541,12 @@

Math

-
+
@@ -1626,12 +1626,12 @@

Line breaks
-

+
@@ -1780,12 +1780,12 @@

Combination an
-

+
@@ -1876,12 +1876,12 @@

Combination an
-

+
@@ -1958,12 +1958,12 @@

Combination an
-

+
@@ -2074,12 +2074,12 @@

Combination an
-

Combine two tiny tables.
+
@@ -2194,12 +2194,12 @@

Combination an
-

Combine two tiny tables.
+
@@ -2306,12 +2306,12 @@

Combination an
-

Combine two tiny tables.
+
diff --git a/vignettes/tinytable_assets/id09fh8aazzgwx8101w4b1.png b/vignettes/tinytable_assets/id09fh8aazzgwx8101w4b1.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1ff0a72c3081fd6daa5eed5888dce5ffbea85b GIT binary patch literal 2214 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 L(pD@%mrJaRt&sLPCm)igtE( zE-o&9etsb#A<@y%X=!OiMMcx6PoFt+=KT5dmn~biV#SJ;D_5>tw{HFV^&2*9c=qhs zt5>hyy?gim{re9eKK%Uo^Y`!HfB*jd_wV2T|No757V0uEus3?TIEGZrd3!5-QiM5= ztE1%!%k;=w|E=~i`b_Pb#~n~{S6hK`p8dX`3~Rop{bF#Kci|yp3m?BiNd?2g!^|AA zat<#(FgUfd3s~7SfTZSqIzNB=uk0$5FTz!)!t>XCef%XSL;cH??Uyb0ziEGY^Mce6L{I69$iia5h08hSc5~RezKC%dRZ3C_h_~0R zU%!0&wrRj1t$XnH%e8Alz!2sKg{7vGy#g?Fmvj7W07}kN`oav1fl*0n1;U4)=G%XL z`}?K&S3M|jWAFLeulVl{4E6i2FQ&BY>%O4LSu4IUSm>9Y({hzBu`Pa{FLraxophmG z&`NdTd!-VuQHAsho?lDq_y715Hs5!@Pu$cC>U(F$+50Pg@pM|=c|o0XuA0+)m6BN; zwUaJnDvb&b&j7h!Tfh3g{W6h-hnK&7-mmHU;zOn|wDtm5Yz^1B|NaG5V#!q}4Bmcq z`k(qs>wtHh{+Id7)-&yKL9Ooi_&-!F{BKn&`apI6-l!My%l;o_(Ess!vCzLG`wuY5 hJEN<{s5gJ`=Py*$3fz{=3#{iEJYD@<);T3K0RTp-m~;RD literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id2trw0fgf2q4zvwmfrdkm.png b/vignettes/tinytable_assets/id2trw0fgf2q4zvwmfrdkm.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cc9f629224963722c35431d023f15477b01514 GIT binary patch literal 1846 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f@(b_@aRt(9YHAJ+4lXV( zuCA_retv<0fq8j(<>lq`=g(iUV#UgpE7z}IzhT3MW5h! zK7Rc8<;$0^U%&qT{rk_KKmY&#|7&pk76Sv@Vow*xkcv5PFMCcBbrWzoc+F;kAg9W^ z`oOmrxYmfb{JlQ+o%#x|?(bh1E56Q?`^%8v|DvGb!b66IhZ&vPnOpeSIb`_+tYj2Q zEF4}G9PsAf#+)pOycz~CS% z!d|@pzv9>5i>CE$7hVE+`Eqy9bgPtD%@h4~zCZ7otB{qf(|o~EVu**q&tJ1w%YJ+^vl-C-s8ph!5~=TR2T97ug*f@Pj{={r*qB~ zSh${Jlo$;InxumX>+9D1`gf84#}@lmzV-K|7ao4C4lc=Y7V%_D#Or;Dm-{RFAh_;t w(!%-*Zj--X*R;$RxB9S%6R8HlV*CgBO>x<$zvO2L0xLiUPgg&ebxsLQ0LD)B!TQ)0s`RveIO_ZgoMC@2S8XDh=>4DQ6MG;9zF!(;y^+INJ;`JDIhHk9z6n& z9|IW~AS(;x>`0qd9=m?ygfU`4jaRIKbz|9S~y8{mo;OPmxynwei@bLk@zTo+D;O7VY z{Xswg2n+--UVxw=5F89bLO^IJ2nz$@;UFRcL`H&_FF{lkh>iv^F#rYwv9aLQD-ah4 zUcUx!-hj7n!Mk@LJ{}|_fW$=E8|37G++2{C2lDd)91aQ!Kw%*$DgwpDprizpmV&Y}@cA<+F9#JBpt2HFRe|bi zP*VeHYr&T;Gz5l+!N>?09R*`!0D%DG<6vR}OiqHSDKI?^ zW@fqy|IIuL7A;v-3`#CRcX-!TCZJ-=au&|5q@UacBX+NU-UgxioFsbw) z%WWa?v@?w!mXI$G-XYrzg#Pn2F*cPZAqlL_r@~e#7Ld}Xq4fEK&E={%Ig}-R73Cm( z1V#yK)xY#j^gKl7#JPwwj4fx@z>v#L)V?Eev@Xs)l-1);g&~r*GeL}RMCPrtIb3-7 zq00t;{|H&X8yG5+9yz^>4`IiqY@6Tqm0@h6zfUxO)Qso|V=MKug75z$iRKLx^gqlS z{FD84?6e#oaz}v%Gn~CQLKqR*yj|#VbUuD0@pbc9iOpn9GHpV-?-lQYFeM)AxhgW0 zPCi6s3{59#{R-~~vCy97xxMMk@Exgzrb3)ZqU)1md1?=>_H3!VUxBYEgA`heE&5AW z5}%Ho^fT7nfmx#r6)PsHRq9`O$|@5{)n8668pP=hHG6(whjq4hu|m{%j=P$yxbQNj zaeJGMo9}p9INBiZ@Mfkzr&%kV4}44ctVFiNynos0^5S#G+Pj^_AC za?_O0kQh^7thIlv#>L&1DMD`(=uykPziBe^W95#4u?K7PLu3o?(_&DLi_(R(wuy3A z)7YE3C}Ua^0*~fDjGV8-_Sgs?_LX=_#da3vaE{*}zvg>aO@*WGMSsRR-Rp#k*MWl{ z@%AQ#sgDF;$FOiE_Ykqd7BlJHs_Z}`DiH~%{6bEBfl#|^1F-AmzJl) zYfKi}Jr|*lA`hsLKiMM=f9iLw`A_rOxvEu-h=CsG^0QTxBu0LXz5mdW<3Pdvh6<YK~jRosQc{rp(2y*LOLiZ7$v#HV3`D$GuM!9+Rv4rm@VX;MjaHTjlL> z&;-oj^^=G^i?q5Qma7LUyy#4E&Q`RC!Njk>XQe<_rHR&Ba>h%0e~ z?U@}()^|-o4pL~OjgEul=g39mXHt1QxVJpSb4l3!oP`sQt@!z-so|Uu(KVUm8-Z@V|lH<^0x(;1duDPCXS6-KCgUeSk@SJ53Siri) zj9kxPdquU3^k^FmVa{;2QgN*>YyPhkQegSD@Z$Nc3s%zAsgl@E=2P7t+rIm>>|2rs zUyYvr65JLzk161Evna(Q74RsD&3%Kmf6o}2)@1tCWCHf3`Xpn1K;Yg1;rbR6T?mA4 zioS-a4rwu0kV%%x8y}E)NSlX0B%0Uj^b9GIpZjRyS@w#^V8!o>!U!ox_=+Nlp5cPz zroXgTtsVSKN&Xo2I4dx(B(PpalX{?S=)XpJqc_L%|2f4{sC6|-ed0?iJ(q9T93)7f zx%!rF%?w+zpSQ1v>Zx4&)ELy0RGWUa(C}uEG&&-^=$Mw$rXBcN%Sel!b$O}jFiC~~ zR?nW?iK)rx2!DOLNh@GU+@sC_o&@O-ohdRYmiv_N|8=c|q1m{0)UeV1KgpKf+7aH^ zPR8&rpU*lV6+eSx4eOhk*8RV2kwiF+CA(P^6OqR89WgV7tB8s|#bE zxf$L1K0pPRcjv2hn9MY@5ort)U&d_mY$Da$UrD6&w5LsCF7y}+|vW*_4}sU zk7?btg6|qZS-{bcnB+AEBqwe5;H%uD#D%{Que(NRAy@a2nTk#!k$RkOgw$aB(JE^Fvv2g4VicUx?R< znxr?Pi&Knfc9+>bIU`CFvDBhpX6*GksUw>U-4(~;wtByo58uAu$y^ z{2I}v5=qbOdiYs=i?!eAXxzZCk2FmebwxXpb29R%EYXL&|KD#-Htjh3NcT$8ENr+< ztPGOry6OEz1MMc=Q{TiPi|_N568&g@8aB!8q6}w+&AjKmeD~7j2ygy{ze>xuL0TY? zv*+H83kBV0#T)^50l8mSY8mU|rdnrR&`53u`?Aq?g*5%50e*)0Xh z_j5rko5D|hQRrIu%zwpS)C^R&^!tkU?9<-~cpbKO?G+@iEZ2zE6YN8mNfj^ML?#Np z2lfwqV(t2@pm}iR8&{rCIBaJ4JU2F7Kv&PwEMhuq1)tH04sM0?={oOhdtksTlJLB= z;*pO*KT!qmof)d9vp9wg2#=AppnNO^y-JOV ztS+0Yu04NfEQ9IJ~8fW&FF9VIs(dh}IUno1EHZdhQ5?3k}tU{Fy0VP{+l&^$|%c!@?ETXeyq8dD2|cjl#o!{_+01dJ4T~X?*!NuA4N^ zCo_w&3c8$$S1lpTAo*7MU(w==t|RFMFH+$b23L#1d(?!Py@7R6#V)ky-(^X!{xn1< z=ad>AwCk0fb$T}Ae;ngC`|0cb>JC;(Z9k}td>|8>J4+W}n5ZiF%mBmrQHr@xM4N~& z$(UsB&;E(okvZ=(av6RHLJ3m_1}4_*iNjd!L1m#^eil zur`#|{-H+mm8FESUo#DGg{!azh>2=a$-?QpQ_9uCnOrk=d#DtqI@rRYaVaf)F5(bo zK@Y+ol1v|h1^3@Bcw7oS^YB#jJ&>mwG$TuVUmXgWhjr2=MCgz`!Q>CcUe{A5WOi=H z*OnF+hCc-@kDJ2j_=WS&n`Upm<6hj0)yYECD0LKFM}DGf>b+=g=OG`xf-k~6Sv8(E zU5%G?;Sek;SHcEtzQ+3#KKeeC`Lsw2`GxM9N%ep+wWC|3?Nk$(8!>w!LFLX<{RD9|y4A=Y>*#=0=XlmGMN5e%W z3a^(#W{WhC0Q#FIA35vuP-iOLEk}ymezSQ$M_sA$8M7+~oXK4yyd^jB;k=V*=MGKB zy9sVofmd0U%Y#?f17r`X^ebF^ex`0#6NG(GXR4`bFHtLfZ#<|NvbIU-k$-;liai@i zg=U%3$-!Y86tnq4%)OC?^4M4LV#l@F?3Sa5Sa0%> zA-0To3I-m%46&*)d@)s%!Ug14AFN+|!?H=n$&LyWl8D`ZR5digh0-&SZk(%f2q~;Q zc=C&$GG}sIl_)3BmOh*NndXTkQ#cjrMoj63qh&N%Fz2I;85*evP(}8ClR>QY%uefH zQgf&hih4eM>rUHjpviKuLO&+`X39$Ft@J94oJGeywT=Q_qjK_y+MxjT;}ko!V^y{4 zCByqc*A&a4!zhMczkmFMD>PC$zoq<%!i9Fq#F%)SpDYE#MyTGzOw<`0X{e1mg(L9p%URpHp-!E8PQlxN0CjIOj9VX%j_w3C4$v!BR zv&C+|k0HnQFR48yl^0?BH+8w^x1dx->;V0_QOqLZq=zVxoa_=0+LKFNQ|bN17}8rR z_A$c-c~r7HqR^=0l#(SHs5`dwL-Mk?;j^>P2(yKy?(ymun4eJt>B0qiWyH1SSHZboPwW8t$zYX}pGd@v&a@hWV*!!@ips3X-DYRRiCf(Ray& zOoolVa2a1S%r(jA2_#{zL4d?IH~!s*8;6Bbzj_-q!v9TEdv5AJliPW#-DQ{-grwh_ z+qh&dl2R&2P3JJE5(>x<98QF{8=&~h>`#8x!iCXm;?ek5xF*nw5luf!QVKwIGXK+# z7M)U7lQ>nO@=_&3AfM>M^f>o#e^9hwD`sv`4v_ zc%QnPaqD??)m>e9UbM_EWI!V}v$F7?*Wr=k0)d4y)%;mA?EEZs+l*Y-7khoa+?EFY z5OrPqDI42$Lvr3d#LY@k_!q8}lyIMxUDy#hM300Svx|_dGluz*tS&15YWW)!Am49h z)iH$#r_AOtPvN_F4!aRISFG=ZS|-0tiR5zJeYN9`&ZVYYg3Dpu6FPl3t$M_|DpB2N z5~qiZRPCUxAFqj6brzK>%svfC@w^(LFa!y*?K*)>Qt#4)Jv^Yx#Di`^>zRhHyO|qs z0-dK;XHnn(yrN(^JRX{zT#=JmDw%^RF#emNtY(aTef6;}{PVP-{hO!!UYe-PU++q4 z|Jj>a=(NB(mj&b}lP|QzNsc;lvEhrH(oPA`JL#{px_AS z@>fjH$TAg`b4EN))1-6}N&X3T!@DE=CPMNXYpMjnGUpi-eNvC6X$vq3BttDdBEo^}~NMRTG5IKs( ztu5Di)@rP5E#2cexpxxnc+KS7wf>xlH7Vjc+D;1FN$@kdPua&r2KT(b_-IP=pYCDQ z05|)?*VPAch|>HUG;ZI2I8iDts&V8DO34x>%Xp;SZy} zg{NM#6o%JjpOf|r<^=lcl1IGR(zSD-l$kfZ?;o$+m09A#;HVb2X8pypmXYp5x!MC; z%pT@5A6Ym0lM}VBpCrE?E*$l}Nf-8jm89{!r>TecJ3eV$nlJU?hAgw)l7FRw0p zq8H=7u(<})q4}pA0#-_U^E?RGD~4RX+9ZoySKRvVp{9=dslxqiJ*!tukh_@USb)$e ziNAtQk;lG1yH?E~{EFq#(b0$(o4g(D&elce1<8rkvyWFcW_@*cOpr%}Ki-)Q(;5fC z>YA0{U+ACTPj#^bUKsCKPdgh@=&!2^rM%r0gqMTtV~ z6K|b&st&_U;sZ+|)M&r5p~N)g)35&-NColxH!@bFmGF)4J5| z5%kb;qrRc)G6I1!@XXK~s>t^5Q(C7l4)(dY3**>MvrFHGutZjY;Xf!lXI2)Cod5ey zra9*BXP1)~B`6-$McLT=bZoa~WXeKL-47)l|FEa!uZAv|NfSj-6&fO2eo(i2#rU@WNap%ESpEpKev;d)==W zt@>Zx2vP+pcn>Y9o_~?N89(DVm^i2rUH`3T!M~~tmP0Nkh_1a=NiWd-nml6JgPT6y z)RyZg}+`0ryj;e5|2d@=?hoj+bftoYnaFvyO5QMw|P=f*VhYTLW527%cM{#iy%MH`e#;^g-3a?|dLpeWb0Yk^hY?c{nu@(WsSf;CvGS4L zWg$oWA!$P73H~v=X!YW!iYG>NVk4!({^wa60@@`cORXQ8R`YB#1Jz7PJne`66Rlc^ zy#q0-cFxo@Ltgld_>2rP;Y5Yof|t*k>WaAVH?FGQ9$Y?3+fV#MgQ=d4DR<16V6xV? z7e4g~h7`+x0(!|)?r@JFad$*EkNhQWNX$=U#{7Rm4`bVOESz5E_eQ#AEm_>DZQtWO zZn(JW?$E9dbf$G7pEPJHM=Yy!%nWopynnJHGhZF49bQuN(0qLBFJTASzY1){K&hpX zhgs!_G3DPP655xFJeT#4vwoZox}2Q98dyF;%W`3|j$TA^0pe+)-hUcl;r#e) z5gr=z=Wzn4e?mWr=PxX1jV|O5$TEASV2)BMaGS)oeF8c`eBCX>oy<6>vyq+=ZqSWs z|L3jI#GZ|Fm<~(IXX0>bh7|Vl=2v~{QR&Psp@8$}9OP}J-wIYt|J(68Qy!oO)j=Xl zv6JGOqS;RKp3GnUJH}bJAvn3JA~|T<@XEKELqFFp;Xzr7>Pyp@58D-XkLWe{A5qLf zv=D2{EDR;TjwKnf&HH`j%6L%PQ{FKQLNpRbGW(L(!$^_pSZsyJiVcpmS-Xs1`DWCN zTZU92*kLohW*O!y8+4gCY_A_KqB-)qOpXhvmY>=`jMY&=jul488tPq#_Q+n~s*|XH z_hl3mncMa@v2^=+Nt^#zRjXaEn9INAF2eutlsNPJQ=r?-&8#}^17@{L;X|8w=9-{W zY!^nQ6d`dA4HzDDqS@Uj-o76Zm$}D~3qKncDnYD_1 zs#C>}FSS(IQIcmlju1UM_NIt$_9H#O9SI%XRsIj&=N-5mDyf4Q&5;mWG%*h=@KT#lsz@wSyhCxCiCZAxaVIo8j^AGn9Z-$w<_@EDaCUP;iM&1#(AmQ> znnMR;dQtQSvl=M(CmBWeDdZ&>ubUOE{QnwMxoSwWX`n~f$e$R^$<3?NgeXqEFk2eF zt8GAZ)+zPmXP2M?_olby&5Sr`x%dDdY^cIYTk%gkFt3v6QgYW8V2 zdvq4MlwDZcHiz&*uuCtp9vy(i?)N5MZ1>1~qp`bEu6IE~0-l$EKJfB3B_=Q{1AO8# z#C=;F$BSP(FI-LwscYn=H(!@{80D?Yzh9(wGMrO~4i?&QZ^;nf;8w|2CRH0nyzz2+ za9V94ceZ?%_|?buh4;8D{kE%*KrDVfe2Gg(1FEN%^P-9`3$LE0=Z>4XOGrO7iFB@O z^_{fSV&r<+WGIi3B9}ylM~A~R&hvw*fyop?6=V>muxq3pHQbb_94z{LEv51Yk4o0l z4r%d|rXi!tCbdBK$TZ;(Y+@gJRjJVX$Pwn%ey$!lEvEeDwDgU5qHS-Xy(<~#8E)zt z1-@b}>g_*9PG;b-h#fxifu4W|9{ey$D^3&TjtC;^XpEm?mztduo6BXV8~GG5Hb+Vj zSV6Sv^>8KEq{Jy{KrEv#b0Z`ph6ANGE}OB|!`4Hh;xb3T{JSKhs>S?=_ik5)V&wSP zsr_m%#AwbbBm%3K^_?l=;Q+YRGV(W4Z{)_JlFJeSyvX7ADGzeG zF7o^!^br+uxc5=s7~U;2czsZOc3121U8KrCmb=Etr*LUw%(@x!SD{i<8(m)fHOq3c zzWP)AC3HDD_s2kmq9xHxtFqY-FP@?5m(h+GPtqJR^?5^Zz1a1HB_8)V?$DrO`&Wgn(MECb( zbq(eu)!CXSPNC5R8NF#m8NCF=*LbKKg%T&&3U{YxN%;ZE#+6QNSIknlwP%nrQVSuw zIHA>Bxk7ENKlS3V)#jDXn*dvN^YZzl*NC{nv!H@Z^60LYF@?RZQkrYa#*c~pe0!aW z$FboxkgQ#))W}USh_#-|r=g21`no3~isceA9GEq98P@m#Kl(pbq!ywv=G(-YaPqI&=Ri8KKM&!Cw91PSe;?)bG`HY{@f;R_E2kC_zNH7kxx zvc$q7jJdrF5Nb@2bRX5;gxnuB_+)c*?{YN+`ut{qAhUPI#PO&Ms+L3~C+$Ob^=&>4 zp_3%*I>5G2GC<*Cyk;2trI5ITvYG;2@N)vM>o4z-+1biM(Y-r-htY;c8g}n^QBU=A z*m=imzNk2*GB4SlyFVWa7La3@G_Q+ZFC-4fy6=An|31FWbDQj;eTAK#2Tl9$AYKIh zQb`K_G;k5sfQWqMt^pSC#@MvX3~j&A)X!`4(#=TS?j0BEL?5oFZ}Dlx+4L-+WzrWH z6JTaFJ2!XDF5ClXI&!v6XLT~i?YGP0$jP5P`rab%)dK0!|5n=JV&#I=S2{g=t0pS> zSvFT~*b+OFr4zK7KZ@-eIanp`3a_lb2!DQt z_Y}TNz9Z+~g#L*KDf^G9?9uZ#^wRM4@f!A!XPF#Cw3uq8z*N+4SmJ3A*}vo3hY-qg zhF2QGUgW-(^l$ zs7)5uj+}4db|Xg8qmzHMm7ax*LzslQz z8H(;F8_s3NT2Hak%E;qdQ{p{k!|gwNWT)*6?|Qq_UU*9?ZozE3BbzK*QjZ{nL&rAE zK5-D4WXFCM@p_<8REVkV$fP5mLRPl%^&=zu;{0jQ_+<$1b#si?M@%4pA93cuIw=w( zes?!XKq&9Gk{PdTAHCLvc9CY^lgRXT#KiI89pe?9TbbJB{eh|ti(6BghCZG-3SB!t zO0QVXmj>vr5EzV%_S&3#iFwPK326VN4iL z6`_TXiNfzal&iuk<{(ne9fYxE;w5Zxpt$m_Ef-0)OfaS~@;YL0cKn1bn%$dHWXzpa zs}v5RMhLEX8fVO7;_zUUUeMj^`$U-*b)k6$H+%f-3HC|YcILlj+I-rsbp5-QrrnU{m z=ZSp)Elms9=f1PxCVA+F2l3fpJL0?UM=Ghf)tv`?GnaaB9PJ;?5oAlA(Hp3Xf^(g! zfzNR#8CIREmTx$Sl6}KttGRqFrjofxI)c1a+xypm9Ma8L!!sF@+5^2nk{r&85 z*NT4xq8>)uCfe*eKotdc)V-i0!Z$}r8YVH4GB2#DW^wQ!Sg)DBnyOy4x!|^vcC-X7 zTfE4Nw6C!i*wzV?O#cxGp?reLid|~V{Fw-RNG;~m$c+5_6E1(qkyv4O9%|EIfC^3; zofJ$;gSIJ%=Z4bbu^S=is6!fPq^R0B&KdK`v;_{o-ns2iJR#;si5>L4M&S3%zO))H zEUJBT+g!xIDH?mussa-x>f8zyjrDBV<-aA6264o{J4myLtSGNWjE{bWw=Hn|Pj1mo z(**H~xy9Mejv|&nAWRoiMnMCHCS*Pe4sM-Dm6-sKZj;GB-cM*bKg>cmjWIS{&JCXU{HY{ z-+79H>;%@Wfg)zvzE;P@=x}18`d~{wp|D*QWHcof8$sUhyw^S*7z&*3G(2r2pIVDG z#yf~DKQHP$FI$8jP70+Aq6iDjTMKK&XhlB}#>{i&$tDJt2#-ES@z1Eh?ZAofykA1Q zrjOk)p~Q>6lFC5HJ}S8l8Ye?Me&mFrPunvLY>%xNKgz%K-7Pm|VmIs{qn8&-4|^#} zb)^ycYt{VL80HOump-->#K`jz^wc3K*Q@DoF*y8kcsE6nG!dU~N73tq3BKDo=Jf$W zM5ZJPPa^L!#NbD*nrR~=$^O4>_u?)Oru-pzOU5D`4U4cokG<8Ws8ND;aa}=g$q0pF zJq`a~OgYO9&7+RUxediPt|#07nqqDEFoVD{z$>aPeq?#u<`5HTL)5bfQ)8m?es1bf z=BUNN^A_z}=C!eLSVYpK$t?qo?0oC)6~eN#0yEc?LQbtaayM3k?{5EyTCy*(vM*w8 bJhH3AV#+gADF>L_s#qE-y2{m1+vxuT3#HOJ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id78lijvj79dogegtgx32y.png b/vignettes/tinytable_assets/id78lijvj79dogegtgx32y.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfe3c01c20bb9d917fb6f681803a4b5169b01a3 GIT binary patch literal 5073 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 K$0o%2^#1{gI{m-^ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id8kwgnt0oig9t6k6g6ayc.png b/vignettes/tinytable_assets/id8kwgnt0oig9t6k6g6ayc.png new file mode 100644 index 0000000000000000000000000000000000000000..80279d32d61766aace7757c19c30139e2ae503e5 GIT binary patch literal 2072 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fstE82aRt%}3JQjXhDJt4 zwzjtR_Vx}A4lXV(-rnARetsb#A>rZSIXOAGxw%C}MWv;s<>lpFU0pprJu_#{T(M%s z%9ShEuV24m!-g$ewwyV0=F+80w{G2f@ZiCV7cbttdGq$|+jsBYy?_7y!-o&wzJ2@o z^XIQ$zkdJz{r~@eosU5=3=Hhio-U3d6?5KRW}hVBF5nWFB6y-&-=XjK{Q&V5y%DTW ze1iVoV_mje{r}|a2dezv*)dE|FR^I2@Q}f&otZhD<=F1M*K z>fQbRr1e3+pn05g<;o^0m2}PtF#s0;Wu*FCq(rU0#4(bRoFKPjKOKU>bGu z7qoJ1nFmb09Ja16L`J&8CkHP4udVF#f0y@p?XM5B+H5NW;pVOj=}zgQ3(vQl({h^6IXAS$PS|QS9TiT^cKZKzb@rcMGY$h?7$f}4 zU;OT~-^XR#Ud(YH4DLe-n%@r>2_IIyS6$W0uea-Lf4=UQ>-sgTe~DWM4f`Ztzz literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id8nk5717gzkp4n84si72a.png b/vignettes/tinytable_assets/id8nk5717gzkp4n84si72a.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1e6473044bd1b6291d02ab49d447586fdcca56 GIT binary patch literal 11898 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/id95rcav5av43g3u85urxx.png b/vignettes/tinytable_assets/id95rcav5av43g3u85urxx.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2ec079d343f0019c3277ffd9ec92fb9d02e0d GIT binary patch literal 5080 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 M_fxQVhM#9%cDVzRF)}`ogNA^leJ`P zLMjz8GLsf-it#9tnS|);`i{Pn@9g)#|0nl-UH8%Nstdtha@U?+A|fJ^4*%M?iHL~t zMMSna!^Qqi?ijRGiin6FaB=dm{Ts!_#U&&pBqb#g2m}&|M4?b`_!yR8mq>R#wJfFe)l4s;a7c_wH3wQ&U%0*U-?|w{M@O zrsjbI2eh=b4jw$Ht*w3N&>mNCC#K6Gd=+UEwhK5E)M#jd* zCMG7Prlw|QW>_rN+}s?8!&z8ZSXx>hJ9f;<$_kIiTU%S(*x1u zIyyNyIXgQO2!!LukGr_IxVpN!xw(0GczAkxdU<&fi9~O2Zyz5Y5{cyN>+9#|M<$c~ z{ryj#JbCKWsne%VpE+|TC@3g6I5;FEVPkii(Pkj*f|m zp-?DsadGkS@d*hDiHV69FJ4SaN=i;nPDx2gO-)TpOG{5rzkK=fl`B`SUcH)`nVFT9 zm6MZ0r_*oTxRINio0pfDpPye)P*7M{SX^9OQc_Y@R#skKe*5Bs;awp?^ah= z*VfiD7z`$p$zrkU>gpOA8X6lLo12>-Jb2L3($d=6+TPyY(b4hf(WA$YA9r_m_w@Ai z_Vzw|_N=e3@5PH3uU@?x7#J8F92^=N8Xg`V85!a6c%!4E@87@w@ZrPQ*x1Cx#MIQ( zr%#_gfBrl>JIm+u=jZ1a78bsJ`?k2axU{siyuAG5$B&hj6`@eLy1Kfywzjdc@%#7h z&CSg}fBsDVu8 zxSQ6&(58cJw<}*PN`ap)d%4L-s^U>sjvn1R|9vTc=WU-L)8N4$7YjC4I!6toCsvIH z27H*hqLJkM^?yYE#eiZM)tGKE8X`W0vki$do7#qlnIGe)z~IW?MgF(kFCma%_={%Q z@r|&L<}dwxUd+^PZgHQpY+A`$x9zc^oo9%578rWU=AGMEXoZNd5mZMup)O2UY0a~U z^bo=H*Koq~-mz>N_fD>!#9!7ZmsR(4Mifd zYvAJ{ip-g>zjKS@co93LXy+U0(CI<*h#%X8A5%p@#f2BbooCA9Ms^BG))0K$Wv)Oo zFJZ!33~J5DLw6LBUuwKd@bnC-T9;Jwqn)qRQMt4$rrnf2{j#U}euw*5na4EB+1#!Ty$0K^XV0 zb9YiWua_@0TQX!@Xe3S>o#VXhlcu@i$gG%sexY7H#-OxNr{BCGmbEUT>O(u9dMV>> z(VX)Zo{GAzfj92f9L`u74*GrD0`V^b?58p}A}#D-ahVi3FjKjNF_?GQT2Y;@Z^z5Os-tfZT=ic(>W(;vP>U(UQJ`9JR)Qb(3<`@UuGQNr$3zLS zTzimuD@51=XXV@;CPkP{qn+jRYA-RM``7`V-?&cyOCHM>UQ)$V9gB2hQhd^ zvp`g_@yOx0H`)1}RXWnZK&l_K<7=6`zjywqrn?Do(2G|7=-Uo5h0M5XUjLdvD}PY> zX<7T_%SA607mrkqbZls|+3U8~^PVd1G<*Kbb?z0cX&(#7T(4C-ia*ZXLCJerNb#Zu zprye5^A?mF4llpDs+^!%^Is}7E=%3IEf+-!VWEIi1Y_oDCy&imNGuBl$7$JzakVtR zsX*3QQ*hi~KSa{F#arLO@}?c&{uylwjZwSgr4qc|hJW=JzAWHGY%Tq0>Ry3H{78Z) z@1U^BPL)=kA_lF$;SRzmiYVYWg89*L^eINT%|3yK={%oN|DUAB$X$!i2QoP`Z%>bx zeXQDWp>kXiVBfun)DE-sY^XQq2pmVY9^t+|d(TTHKF^N7TwJ3|2xP3ksM5gGc{9*N z%6-50Vl$**vpA%F!raR;W%b2#kD$gTE;XD1=xJ#;ffXz!tn2kczSh(d*C$^s~nMJ%OC!2 zrF?VvA*(Nq1;^zkGu)4iSqW1j{{ija)at&Bd|$zneiBH-Jd1{|XN^8p4jwqhN0)jA zpSeWhSwA_9r%%OFY>ndaxP70|z?a7!#%D5ckm-IEeP3|+297fn`}KkiPHz$o1U_~v zI9;^9P59K@o}XV-soQ51&6QqJ0*SPb&a{UFoIw{F*mt1?3P1F~A7|L`H*D4CJhv-y zhnm*1INFE1+mGZIJ{eb|z}ccK?o01b1`vr+7knRNq&3OW&)nQA_`XP7J=LJXy}u#{ zX2hQG%Y0@MVVBOaCf%uj78K1JS&;=ZDERSf<3_b}b6R+0*kd!<{$=yPop|JYt(nY6 zUa32s<4D82c@4ST>)Q;Hf#XWmAt$BpcYrGvYJ$ihmUdK6AEX6b;aIPc$FE2qF~6Zh zp<#9zU%&RuLpQ=f5zH8_(|szd&All=fEoJs%2y0xS@!dac;ux?&gq+`^_c2lIF9y_ zn_zNA4M{jI3&P@jl{4Js7=82dc;xv@9g?l#UPB|=G>kXBLt^w|O?mBcIIb~~d$O(i zR-aZ)1}6>jjGHc3-zluV#3?hxI_X96+sm!Srm_4s1aEnh0 zT@P&&i;;q}^K7BI)nS_?!f_F>Ad<ZN~yQ_TmH z42SPSEscsGz3+X4UB`45pdW6>pNag*0*_$1tdsh9l{tMOzN)Y!k=K7x2d|Qu*tO@- z3KPJE+wxCuTC)cZ1pZe5SbeqOpN?80_P(B*4wqFG=s#qw?he$MsRBZ17SA<=a_TAj zetROXa_l#J*-zlJUW9z{bdG(Pr{3Yz(D>O>fOH7YuTt`g(0dX>&3`MVCUBi)66N&6 zTbhhre+R|w5QtpxXpkLPsRp!XZ1}y^wFSF&05vW#~H z6;CvfU$>#w_f^!c?yL@t`7)+}@A|w)Xx8IRso{Q9K;paNqZ)vsfX3n(Xfx{{a3vr6 z-z$u#UWgKW^HT=oocjKVJy&~=7{2S>9kRym!SpvfsRclGz@vMc6(c*Tl|W{|zTMHOX`{)xJj0^Ua|szf93*rO zHb-u134eBD#JL~$q)&nsb7#Zgi$f4KyL*XKz#_uD5?tAh`734ucj(!rz}Q;i!&Bsp zq)s3rKrw7-_k1)zgG&-yI1`Rjcss`-{pAfV3HX%N2PWU1P6l`hb-hP>MwiV{LzPd;)sOo%&VKU9+^cEu~Mv!QdB*a&8;vAMss<-G}6??Yje zxZ6}oYB4|zxNo;m?;|`aSml<8c8=efm}>kju_;;rsu$byuu8cVpk*yt+Iz`QD3vi2 z$hWL5*p6siV8!WKS1>2gCf)T76I2Q6eZY2#_S{OSnK5;e&n}hD@E)rse?gf`Y2HWz1i*|B#=4qOxxU^71aIOeG6V8VZF?xkO{W|M8|Nmy=}GK~nX263_5jF?)R@~2_&KPl&V8*(^>XlGK&l|VfnGg0@tM1kCg$6Q}r<3f?tj$ zIOM)0>iaVn=<5HjDaeMLQ$AX_M8uzcOiOZM!y?PxTQ(<1t+$^L?&+o!sqjeTYbxMe zJXuVNm`q^L?fZpZKP5zT!){7$nT}_2{M{l%ejj#Z&p%s3t&@enr!#FKKfPCJoP@}O zZY%P_hw?K?{F?UB?Qiar*-N%2D!}A+A%8l5l&9!lxBw!5{MvV?e}Hrhi&^JTpr&4| zUAe?UEWbTg$e9KS!U_4Q7=HVE=ti$&1;aSmyuf;BycT0(E^G%@`=U$)R_D<$*_o~C zPDQ{{zWG>i7x1Sq(nw$+3Ay%$U8btfh4Sr9R1haRxsq9*LiiO#R-eQY8>|n|Ft(oC z5p}rxK7_D~)EA85pq*j~NS6Dr>@;xI$!$o!Eu2j7>-Ahr-?C5{I+-<3g)sGzI)a{k z(6FdFSK&g0cOQOF3%1G|2%l?iPKQ+*ciIwn_~-B zBz=qB>Om04ZY-ulw`ddW>02j+XHvXdsKuwOW;2pvKmM4_0yK|_LZfAl+Uix-mQ8^P z;{K0%0>5>>G1Y&|;Uv%dCSr#?QjtvTn|R=66!@p@+w#Xfzurh%yc|d}nD2a6EWJML zm)sdM1F!ORD`bX=B`vHCOYGK49RJap z^IXN339iO1C2tgE$oo!q6X%alxse(BRgGF&oOQk_ zJ9=3xKdEk=T>4$TP*d(geD1MnoN`>#f7pdYOm>)!%r2TuJzaQgp&Gye|)(P-?4p)qZ08?j3!!ZS8&cwfTF_)v{}|V1-{4BK*%Uo_EgrspE!qpJ#6P_h-s({xA-5 z;kESBUspU`xLi77`L+AiT-?{*B(&m&dIx9ix?A<<*z3{_>xx%@>jCns%;$c;|8M?= zb!HM_5GZK7<4xtbGO4{kV=5RquG#sE#Yzjy23%U+RScf4elF{r5}E+Z C(&yj+ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idd0v9391cwize891sn063.png b/vignettes/tinytable_assets/idd0v9391cwize891sn063.png new file mode 100644 index 0000000000000000000000000000000000000000..cba1148dde2cbac22768179b25d24971c2b81b77 GIT binary patch literal 11912 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 MEvX;@{$?2Te^F4R`v3p{ literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idd2oduyeiw7fh3s3v4myo.png b/vignettes/tinytable_assets/idd2oduyeiw7fh3s3v4myo.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2927f987468f0422573b4de9faa09fdf1ea03a GIT binary patch literal 2444 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fIuPI!;>ya##>&Rd#ly?P zFCZW+Dj)(xVnX7Q(n=~a%4#wyYO4B1YHDhlCKg(z7TRW3Iu_Qt7B;$;HhNaJ`quWQ zPHqkk4$dKwE-o&vuC6}useV9^m=OpBso8;PIjMDRY4zt=%zm z|LIu=&(5Def5FLX3r}5NeCFozi+5M7Sg~^D%2ih%t-bMV{rdGAHf%U{?AXbZC(oQY zbL-ZvckkYP`0(N5$B$pWeEItI>+j#c|NQy$|Ns9zj^(o%7&zKJT^vIy=DfWeeJM3m z(Cwm=qoAn1>OEJM5C@Sxix+&^AHL_|<<1|)?8af!s(Zw0Hin%`pU?dN`@Few3}0IK z%oR#@FfKgI%ORWR@S=d(sa;yY>Q2LjhipKp4~yFWy;P5`t@@Supg!)yh5x@leO|lo z&-vS{9^YRs&%RIPOV@=+mlvW7H+Njnc1jmq7~XPD$!R^uT-TO3 zL91?#y-Fowf>o|Bbd>0$(4Xt?=K7qkWXupV+&B4h||1anJg?~OF z-^%B&Kp(dZU@(j6mEZmF9F%#C%87tRX-GoZe}uSj54{l)5J z?>#6re-Lf^H$8m5{@1_L{efOx`hG6ZtLE|6z>@L(yT9ks?LlQ^`2Sy1TmSu3Kj8Pj pD(H|uw`|2iPArWB)OJHW!(#8#(;CA=8iCC#22WQ%mvv4FO#pePX9EBL literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idde4xwgl5peg6mfm8mlhk.png b/vignettes/tinytable_assets/idde4xwgl5peg6mfm8mlhk.png new file mode 100644 index 0000000000000000000000000000000000000000..5e33c88b48ac9fae9fd4c33a022920566f8e8e3a GIT binary patch literal 512 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%0AdNbE50x{a@ zGX)l$esr|9KJlm?DF5yZNa+*yAo(n>0q>xF^&?^NqF3|JLhmZjPrPe)$0TN5vrd@s3uvmek}c{`{FsexBlm!V%LE&-cdPp>szxklqGFkon0bd zl=s@17Gh5V%!7h5I1cMF>)n3rQhghQqt%mBZht(&5``Tmf;WIL?goI;z3xTXkKvl< zi?7G%&BvHXY1-;(i&YUvTVE{X?cf7~yNQYP!FcmUr^OiO8fsilZjAh3AFrN;=Moz@ z94Z5}721aY z*kd*E3h~04a=z}HM$te|u``hkx;9pGHOzyqvj|)uAQCHf5HvL_@CY2_O=F*G?V`sG zjFx$YYYb?rN|`cXjJvre4x4N({Ia`%B^#T_8vN2{xG0X=bIE}vUiQ`Cys_s0x?kAi zYq+3?LQW4HunQbqKJQsuKT;q$&Ks1Hf8*Nw{q_BAjSOXRr-=6!3SX|i45OSco9l$T z>k1%38Mnn$S?nGet?;)3n_GFVZj#f*n_^T~fAtCv+`LVu0%XEyG}!Bod-i{TNKW7v zj}z<>Y(ydiDXVbR3kcZ)pDoBJ!Ix-s3x>-DzXS?jbrvV8R4_RlPSkC?)&5E>qQd!G z;hRpF2^y_8w<*&pJAft>F5+g4gu^Q7%bU4d)5sM_?xc~mCDq65aK3fh3To6xV|%>e zuVTBDp1suL`qo*u1f~<9H7Yl;L{p~lXf3o9IQ6QypRTI3pliq8Mgge6ggX4cfQGw8 ztHF6}IqI)H0}s>s+>bzWY6WDU>oZKv08OD*yu zQKEULRSq>tjY0ay0aeHcPce1Jh>JPyw=Kf}4?6zAyR84MEyS_7aVx<)jgI~o(g+%R zB}-X-pvRR^b9g2nft#m$@6|TZDsS7COp^FQU5vmxO-l4?K|Uuye7U#5(cS1g;?DV_ zDi)GU(vZ2ntf%<&E2Ew>7PSy?kw9%H$AG~mBla>tF()0v?I0=v3?$c&AEsRxc z2uMz>x4Skn*!^o+Lx-z+jBhHF%1?GG9T~d)?6nAN;u-pU@6=;@q-PdfjVAq;m(OOL z%}#=_bU<_(tyGBZ-DN#lko-_D!qtK^t(sL^=Qq1+Jvu5ro(cni>xc`t(TWPDJ?}j_ z#5~}WehHXgI+cNjvhL@nMv7*N+S|#Gse=!#R)wZNOl!tbm4L2~T(h3P&q7AdC1O@& z8W6VK^?uz@eZCm}I(sZu9~&ITB+W6)@E!3kE`{S?R;wCjoaz&N(>1sw^C@4|KBN!y zO(DEi%+siF4Yo+7sm`XPlVYJ^q0jnj46LlI9NZjq^E3N0`~FCfo&FsW^LSJC}aJDa#`1!5^!XE=o|Xx(bqCp%vZK`-y7gOtgC5?o=AH%UR0& z{EfE8Q2!_%twdV!dx+NwOJAS7XihuiY6)*VQ=2PiHOkA((bg2>-qRR z;#K^spdBF^0`obFFvvMM?iyw8rMv^+oW||B{>Q=Mx&(jU1Ldf+v1!IE6&dc7=)5e4 zT=l%jWZk!41HJ|*1w`pZ%A$Y&%r`C0@KhRK?WHD|ii|yu1nunQ7?X1*pIAXm#HqNc z=e=9f4MdyeJv2j`d8v4r7uUHewOV63B*tlt0V3zw9Dy&)MpFx7G+w1&^P`6Y+EhpiB!(KzC;XZ@<|Mq5+|RFV|Rx4`H-uSV+ro5jC1Q z>gBO)FLQcTiUAWZGP5muDQy#f>Tu9q6T%6}USU(49cgL(Or0QO_Fo%T&0axQbN}WO%Nl-4T~(K zv41R)d=)U@D0%fn_XS#in8WsXFV;fmqI3`Xj3qdibA{7nrC-3lw3jsN-zy|()hudy z+4BP{rGBDZ@d@t}AItoM;t!G?n+I1|g7r1}PYrJV0P-i)EMx@`sX*Ij+;4FiqtlRt z=^>~B%)(QtZtAuDXMJmS`uQKwJ^i4&r;@>zp`^l?aQOY1{3kYZ(7D2V$}4ghEJM0# zejfRI50W6mYq4iI%rPuz20=`h;kN+N!`%v7KF4qNlbB9$o^C?CEh=g#@=e>C6hGD` zgA@UoFNKtwwu!VgrmUG>vJ5n`!hduH#v~Z$KCD-vngUWW^O{(eQNq-%S{tueur#C6v>`{T9}8oR6A2 zvmN0Op!)IL^Tl{(h2salAfrR87$*BSCNvdZvw=o}T&QX?C&@>6tY@_-(XSt%qCO+I z69Ew#WdxlJz1;R{pHFsDzEc~+;em6gAA>xkL}L2W`a!|3-%MoRTpV=i;bL!AX#uIB zi=FFiSP;6?rRZ@5H6(|8DW;gOVc6>ax^{OeX>nmula|UB7W05ajqKPQ`Am zsF@DIVj~pq1W(Z(bN$cjExAJ8zupZN%+Ckf>KCHfw*v; zU&^A9nOh*46E_w9+!iw=x^I1n?#>4$*mmrm#So1aqDF1o7B#LaUeg>TK^Kk{{g0iDJ+$7kg@V?j?S^7&y<0UAE2MOx{2s@3{ zi*Uk`i{u|sSK$MY3X_R4 zo8%r_@&%2imra0Fo|Nmh{S%i9vWG9ooL_-cq>BXJ52&bo=A>&wgfHi7P8l|b)<*DE z#LO{uA5!`-W?&M*S6h8CdYpH^cQ>s?W&M<7@&)ZN-yWj4#^`+cvEYHMAYh4PD3JNz zh?j$-iQ!1cpbapJX4Ew0xwG%VK%9l=qr=PxAb~+U1$x9&6>sdf$+c;`B)s+*R0(Hnz^)8UT%6e>#R`y4)NQ27T`WCBC~bF1)gQ4UbenztMxS-3gFdA zYNyV^EpO)iOj#al#!fyy-rIuK#(^yrEZ<{p?P)K^!PIp^|h7BB~z0+C0=T1a1T4i(cfAzK!PtaHmwv zRkO8N@gwRb{I~;m8f|7$oO;L0@6U*;50MXO@REz)fsK{T^a!znvjf%-e|dC}eZ8+Q z5dEJ?IC(UIS*Kc;T7xVUd}g-ZE(p*h6@gb`j75ec*`F3Z#aZ}xj=giucCd7!lq?qA}WUQ#9FO^1r8Ym4xd*Du#k%&wo| zgCO~tkaFdwAZG9Vz^ZG1gOjh6YgH!bf`HKdJ904Va_QYeI3Vss8WR5z7;U`8D@qQ( zv4W~L%MKv%FkluvH|vdNWLgBwsvca+JPAMUAsilLhPyGLkB$x}RVyOAw%*!m(SAYT z`JQltZYKgWgFlG$*(AvTM&DgeiLSgkps=-To7!lzBcAQ}69k0;%lvYr`=~+M;iPSi z@oOLr2$ItZELU!O-}XE$O}4!IL9e(SD+5Ny$jCy{sii#7MF5>G)o;EoiZ}_T8djGp z+lSgePfL=$iFrrn6cY}rRrQ{Zxna|pY;Yc#+og+x{nU~!izrc{;jrC0e~eYz*3cYG z{~|ngr!N^Z*MUW=c$T?YtAVFRK!LN->Z36ue4Bwe=6D~%EZ`D4N4aE6`B2T=jm0ma z6G}Z#u)zW13DJXF<+}XZcNRSr9T8-}>945m%g-kgHin`iV*2BFHRwSM0udqzIg)X+ z@zdxE{_wr&rM2z(KvL{Clw|j;+nuBJ8KF+Uwt;WiMVcNUSxMz(j?>?{B(uQr(Hy%I z_&da|_dh8~22514L04^R!=li}vF`bYxthG+K^+CHdbtz*cr5@0)mh z54%I-o!uROH2k_d`l@?$Vj?KapoTeb@`dK$R-Gi7<&0cr8nG!F5AaNd;#_>VS&@_G zTSI#ALPp)`Iwc+$Ucg17d|-4idS&#Gyr0&!9O)?YkHYII3Qw>G)8u}wcbso|!POGQ zl+63R|ACi^$7vcex0a1GQ5`$^tqKx{pT7&YyaumJB#UbHYB=T_rEDq50fDsr+Um20 z41jIR8(Gx486#DW3Y#st810%UezDYmsR`o=)7^m!+G@+(TgKd?DasMFtmEwXukd)X+gPvy03F;J_^d^D4q^6P&>ekb>O zevPNoYtfuKH^F$0GM~MEZ}tLL-P$0x|9G|M{My2ddUPbd5nQnO=+>jb$;-@RJOLUHkTlksu^iIMEz_*CxEA5Y5##Yg+!q^zxCl8i;@LGGRFE3O*4#nwO`L# zhXbJ~w6tc5*e<}C{Zs0&Zx%*L?cQ|t<5}Ee^Yl%f+QEuvP zIZP>~vbOW??d_C!Cz&24&t+6`UeUk7TbYjp>m{t=xKwp)S6 z?LtL)KnLga1q|-9>1O?Um&e+3^@F`-?~vi=(9qCaCq2;-+o$F2-zm|E^X&FD{nzuE zwjQM z2$5;ymCj;0-Z9|r=esJUs0#|_dr$A7(P%{2(tOrnGU%oGQ4mdst1@6sJ_noLHV0~ zit|W;y(P->zTN!?s0Sz%>i+%v_wL;T|FuKep`W5RY&vH?%p^)WUAn-wzun07^ZI38 z!L~nK6A|nAd3kQ59H#44+*QX5TcFU+i@Wac@2{|XxHu`X<}y7$KQ9FS2EY9M=YPy| zq;+t3p!8D78Z7~wXbjeg@$+D<#s(+h2PoA|JiNm*1EA1B-7^Yw|)Pp?moS< zzEFRHvz>7#cnTf4kZF=@nD^enf9Q`b_g#mpY7W_?xi2|7Y0j7W%px_4c&M~aBp#x) z4|7+onf1{Lpj(K|1Pw*?GrmTIhNYV1;{|EaY-rWEI literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/ideiig7u6d135oxz67op6e.png b/vignettes/tinytable_assets/ideiig7u6d135oxz67op6e.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9656bb267d9baf153edd9f92ec0ccfba89d90b GIT binary patch literal 1127 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+fQVH-0an+J$aM59?uCDIv z?Ck35nlWR>%$YOir!%~J_wN1s_y3nN{Qv*|+%+Q;paK6pT^vIy=DfXpoA;1|0LwvE z=4TV@_boZVe&W$Ct)_`?w)zQ`#a|d6d~e}nbZTc<=-hBY(cy)FLJ5a}6$^(f6HvIA zJ?#4oOUCZmH|HOCRJQQ&FWgFTm@q1g8LFdUG8!f**$hX5_m;?5b_h`Y&g2R`A> zd7JP4JNUEeOOt=hd3XIEC!T$N|8w$r{e1iB+n=a+%-;hnIT$=${an^LB{Ts5AWTbI literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idfefv9ibpxq01cdh7v9ep.png b/vignettes/tinytable_assets/idfefv9ibpxq01cdh7v9ep.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac33e121545a4b551927b2fe78037fdd3f6ce7 GIT binary patch literal 15240 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idgg3rcy1peaafpq5st0lr.png b/vignettes/tinytable_assets/idgg3rcy1peaafpq5st0lr.png new file mode 100644 index 0000000000000000000000000000000000000000..d7222e0ff7be019556caf27e3f140f3db2b94f13 GIT binary patch literal 8399 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 literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idhskv9gv66fmyim1h9rk3.png b/vignettes/tinytable_assets/idhskv9gv66fmyim1h9rk3.png new file mode 100644 index 0000000000000000000000000000000000000000..82861ab5fd3e952e89b50c9a7cd62d32927913c0 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#hD`B=`NlpMaE5fKP}kkp92_%Krl={~tX2 z|G=sL2TmU^d+!JoWh)8t3ufT4bV~i7@VKN3D8gCb5n0T@pr;JNj1^1m%Ydd%_H=O! zshIQj*6F^c01=l!mp}jG^Qu!kF6`re5q`&1Wlq!Pl#<6LZ_n05r{0VG!pF%iB&MR{ z5iwzdLZaiLrWRHV0ZaDRM(c|#zsvsjId`yX@_S>vs$tp%;)`GJvDKNu!L4?vsdGbu z64A{6t*!r^>gO!h*S{`fn}2`TH{t)i_rLcf#~;6ZGjPWJU$?&5DzDj4(7z#pH1s%v z`T2`}o%!2irdO|%R{wH(bMWuV5Bt`ZOYSx6`kH!Qdrf2fUk|t6`<|}8b5&gIODk(_ zqGNo-1tOW+Yf@`DYzzA8R2J7pf4{hO?VDG#^HMDm9qkyB9&WlMCBJ$;FwPh}UHx3v IIVCg!00q9^&;S4c literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idk224c2616l5bt9j3qmma.png b/vignettes/tinytable_assets/idk224c2616l5bt9j3qmma.png new file mode 100644 index 0000000000000000000000000000000000000000..3c358e84980a069cfd70fd235142faca34023813 GIT binary patch literal 10264 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 BJZS&` literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_assets/idp1kseloo8glss1e49bo7.png b/vignettes/tinytable_assets/idp1kseloo8glss1e49bo7.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba387fc3e1135765e809dcc4044514a6a01b861 GIT binary patch literal 2564 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{C!05}t3=~;nymb+f`W)aB;>ya#&dSct$<4#f z%g4>f&nF}-AS@~%A}TB)B_XFEDX%E4q#~!PA+N5f00bIZikjNWItFU`#+oJ;+GbXI zR1_q8Zo-U3d6?5KRZr`SwD%fz* zaDkHB97FA{q;rvhXBd6<{J;Ez=}S~_Z~XmT&)@uIy85-e*8d(`-o44~{}>jim+WA6 zYPVLvNv;3$`>gk$*9*Tt2^6S$x^?;absru%zdyNH;mfJj>-QJ7F6ZB?-rsaV+bLae zVR*|qC8zZqb6s2F1g*L`_9~T#30Aqj&{6u*bs^H_h3LY~9is|IgNNcop~v;td40^I zcK*L}_EzKfCMjh5g^Vy)XTE095>C zlIHsTzb+gv+zib2zvf&p1{MLeelH|}#etprmmXk_pD$eH2F(5EIc=4JCBgHSd7wxs zb~+C%A--5HOdmAb(t=;)|9vTRUj*n2`JKKC|G)Vhzxxn3(EY!Zw`+cx|L4b~>|ZN@ z9{6{HbC5Zm)bKr1-1={OeB2|`h3D^vyx9Nqi|O=l&#hM1&eQ&KzwYDi@E;u)p66+O ziLd=L$@%xO@2}THD^lC;2X9`oW3ST;@I@GuzL_B*01O89mbxZj z+Ng7Qp$ya#&cVga$-~RV z%g4>fFDxM`A}J-Mpd_WJEUly>qpYT+rK6&2psHu6ZfK%uVxetjrDtVpWMpLJ;p^bw z;1(Y19h)3eT%DMhm|EACR^OhUo}Sa*Uo&e-{k)YO9UYUmA6~Iy#mbc{*WP%xe*O9l z8#e6Ty?f7|JqHdPICkvVjT<-a-Me@H{{46F-hKG+;p4}TKY#xG|NsBWJ@?)-FtBg& zba4!+nDh2>cv(uQfJ?fQoE)-#4~{wifBta6zq|V^^G@fs|9igq zck{1`->-J)ZkPQfKmSiffRnn{i@7a+Q!ZF@&ed30E@Tzx^j@W8QOiBg7cQK8Ctv6k zs#0Gltop@oRN?Rqo|lK?`Cfg0YyRBR>HU{y>Fi&xeVhGRWnp>MM%xEb`rGc$Q6Irc zVVB02`1`xFRFZrj-_yfxnySGovZ-pq7Umw{SXN4OSw8<{K5fkCt9aNECI?(APzU1+s?zhUA2 zeZVZ4&mH^X^Jw^ylYIL7?QQo1GxNM${T0s?}9f+8X! zIyySW#>OTlCbqV=c6N3S4i1ivj!sTaE-o&Gg@xtiXU?2IfBuRUE7q=E zyMF!pUAuPe-@pIRp+jfRoH=*y+=UAlZrr$W>(;HickkZ2ckllF`_G;|d-3AMyLazC zeE9J5=g;52fB*ga_us#N|NsA2eJV16fq{eF)5S5QV$R#kFE8bW^0r-E+@VpX(JR|j z74qZVe>UB}vabSG&YU}Srs2ATbzh%VerJn$AN!rTp~|V9wS|wHLsm?{N=Kn2!r{e+ zh6{;|3lB4aB<6ja|Go9!-M^)GTwi4FuMK}O{cim6SfH@8u2J#z-7YpENmTXrt2|K>Zl zzU;h{$BWEjXZ@?T+={!GaN1rOr5Ell|9Skp-MY_#TqacV{{8?(M!1zrMQIsrG1vQKkt6GI)26Pc^qHg zf6DxxS`_l#R`At**B9k4_o+Mm1zMkGnYw?P-Jg5} zZ;IWY*N3Km7q&_lo!52YbIZBN*5yiHY!()WJzU9Q>;Ga-XoZ&3`C%;mXa0q3&bjUa zRk{m5b2zP6Es=A4v9;x#GRNL&7b;m6UKg_JSNIa;^jxqd&ijQ;6ZI7Dul>I7g8nY{ zw*P{^Zj0ZQcCcKyzxLi<#wo(PE<`%Ka7t%f$UT>}MXy9mfJy=ny6vz3tS&t+uTrA% zef6t8dyf|Z?=C}VKa?s9wJtm0Ul;p)vOTBlyYD+MJgmc8*`ex0ss-sUabV|#{crw> zJZP_})cLag`vK#>uiaJuJa%Gt6UI_YBf0Ovej9%lBlp#e&A>(pgQu&X%Q~loCIH|} B8%qEH literal 0 HcmV?d00001 diff --git a/vignettes/tinytable_tutorial.pdf b/vignettes/tinytable_tutorial.pdf index 100b06cbec6712abf67385c5ac223f1b88f05a8d..b66c930897cfc11c1bd6ad3053bc271672bbb51d 100644 GIT binary patch delta 38893 zcmY&;Wl$bX(CrHZ2<~pd-Q7uW5AN>nE{hX_1$TFMcM0xKaCdk2`+Q&BANT$^Ra-kV zyFESKr%%nyZ;)L?wO#GKGr-0sBn0o`>TG6Y2k*JkrQK#v!Hqikj`a>Dn(&uElZM5R zz|mYMZChl{GE=k9erMAItH%7ERa@RAWL?SQwlq>r{3Z^xC@qivSvCswkpdbg@PGf^ z1Gwi13n~bI7*kVH_o$@BF6q)nOzL@l6;Z5owkS;IMBC#0y&G!BhYmp|_C<=q*jPV<$IlHrvbURGE$C;ZBedJlv+_rwY1G$i}*fherfP~ z!tvqo@hL?RtnhnycAof`@F4v2;uh)9Z<&buubaoy$B*5d6@D52RkDm-G#)f9;rl?f zUn|(Czj9fz9BG&@ui)GGw9UTi9zjn-S3GpKWB7Hv=eJ|{mjHq_7lQ_k1}p3IXykYB ziSc@?EyVIeS;XTn3K3nzkuM5J3%fGKajBRi6X>AdcbpcbXVFK2)EJ!IeJ`A!g z1(AmZu2gGFzsu7iAP5MG2 zPs*loP3o^&*noexo3T0l?=bTd@uf}PC_oWp4)^bG`m(o|YisC; zyY@hTdRs_+nmmRY9t|5a8rk2@UD5m|Cj28=_d?ydH8Nl?Q9i6l2>C_m2z%eg2i3YN ze1h|KnWOA4Dttpk)N*|R7Uu8CC}vJG69jw|w5sAB1$p4DUFqpO2c_|i588;3iu9{G z&nZ4u|o|gwEz9pYq98SJM+ivzuxDy%p_m>(O@kp+V9JlDcINq_y<0d z$aZzXm=Qq3)SPQhMq?zvWSJm5V1`_}vnoiE=l4i$)i1-lLiH@TbX z&TKrTB<;iZU%E`i&X{h%cdKOeS-Re_e2xKCWR%p6!(&TiclZ#@OLP zomqg8Al9%J=|WqG-onYBz-1804J zV2lxMXn66Bk~Tx*SBd$ja2a^11fATqg2zWv2Xd_l?+~XKM$$<`;aM#d2<<45FVwf% z0^yMSnUtWRAG#pL>3@`(e652*LNv%gdK)5A{vEJVD|9KkApvng{SRiZDq2@$W2NvL54SKAB`!^q z!a;!I)dTOVFY?n$kaZWWh_%)Em;;QO&1uvx`|bEK@wI|9569783AGlUjz1)#UzFWO z*cR}ZNed!wg{IQg|63aS*D7?VXIa-9wPY`iq%=~RA@)$z-)}alin=BC*TD)9v&auK zIjhcOG=)w!SCw;G3J+1?n{Om=mfc(J^Zj56{+Gq-%J*DKjWw$KECA_PEftE_c-gU3 z^o|~f*VSyM5o}=RBqBNHmBl(qAN4nn^`e!7mrE1vP7OMJt2b7wyb`YR(ZF1?ROeu- zKhkYn`y0!*N)3d-ul-d_4kyY$1xj)#>qJNOKB-yV0q%6eWizra3$-l{;a<=nQOdEj zg?4v|N{VxT5-cOp_oMhP#ze*G=nKWrG<<#8YpH;h+CfS%Oi6-cNkpWQi~K57TQKaqN#K1KRH$a)^W$c?4kc( z*M@t?K6F)0HWDZWJldo4kZmf8R(E4ByK(nO2)Lg+0$VI!RlfTuc#Jc(474Jw9A;uE zPyJbkYbUJltIX}~|9MFIOZ0E(BL1<4KXT^5;%(+CtR?o2U*nHs$IOXj^=eCH4ZPu| z|0dXZQ7`l0rrrsH4FnYifX*#P(V;Iv^jZn*t_45yleNk8q)Jy^wN=+in;eOEl@SU$ zlC-;VBJANpRZLrM&E|U0>@hsc5O`|<`ZL&!N z@66G`W-VV(HiKp;C&G?d5A);&@y#DOb|}6&)};TO4&6mo#8CIn19B0z`3obkV!vAj zfr#R$c*Nmporgn~1ou7QyS&wsv&+tCJ6QCT+zuSSYA3`!gf7Q~7)Dzw)SoChO_j^e z@vHlVhwkwBY11&>c}>-qG-~?aY7*tN?H@S>e%0Akey@ra<>^!#;Ji>DX*~~4B==aE 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
  • o#`Z{FtKB-I4tu;<-P4+f@Dq3;0!9yP zeQuvzPY5^RT%B}M{jJF>SYDq=`xQ{+{z6*Bu zY%e)JJnvpUP9Gel8%}<)#N7W}dT{c^9YbpDNGw>{!pGq4o_888_w5~cxsbKphGriv zc{+mX;=Z*p4Z-+2<6ysKdK5AgCyb%MYJu-k9ptTHoO_1cf^uZZs)X)>Mx#k=m}yjx z$c=yEs8y_n?l)9Ac5x^EZ&`1QFiZD+FDO^N*{HEN5>%>8Li=qYksph~M3fRUS%xlh zPJ_0-Y;07q_`%@o^^p*uI)4#)J2O&DjEy_@)s_AUv&8IQf|)F3a^x*DwsvDC9d~+t zdxI?5W7LAoqVy*v5T{QOK3gX(W-W*E-x372l?o=;gz6O6H zHk&Wb&WjPCbYNXZ3(jog8Ft0udwNuM%A_?n%lduRM>siXV8J&r*5)46mLq$yhe7E4 zbbcZ7cax!VoD2G8WI|jiSh3VnKQrWn%IBHq8JnqxO9SR9RYRK5YD(bE_(zaQep$%~ znLt>v2q89qUSQq;_Hl5!&R-2}w=|*u5K))p|CWK7J7<>;Hdn(#@xZ_L``c(DSOM3HU z7W59uw^i~VswbbF75qFDY}kIh*icsApIX6$nsDvf%C0O2|CWF$I;>5d0|M6QU#^DX zbprCbX7G|Ryr`<`lcg|KLS%_hOp)i}9p_R9UJty}OAtC(-&E%NI_9%eUq(hlv}NSP zR&dhs;D~L2ecuH%_xcc=$VR#UIP*H28Uc@{(Y);rIQ6@;w0Py3M{F)*>dy6;acq%Y zxDf?rU9`OV?+e3Tekvk4bW^LdM}kr@wd}gpoUbylgc{Vet+p$#dFBt{ZiyLcgq))>}HjO0fx?5)2dh}dGl|!MOdZBKkdID))bM`#M$?sVOo-) zPPxEwz^Xf3oyZx|0DPH8>5Ypiau%BV&?s_^O;KrN+<4s*xv+YDBdpU6%uDrrczsB^ z_-3YnD^sbzFwI%m{<0TLti99H^>@DLn>9#?Fr<-R==bUf-L~7x%rAEr1CHdSCA$2G zx^fit`rYMh8sjO4-(LsJz9+2&HvM&ZVaE$$wqe&B2xszP?#%JkPKo?F2g77~HcEif zQaY><-2#7CoK3npsI|7RY`R`_RO9DZL5yGo1j>%jFR^bxv_-nS1*AMvur`XSQ&A`b z_hlMjNf3NL$)@pUY1iq}t!M`clt|FE+dXTF^6}9KIeSoWE(yEf;Mc|U#mU1F?F+*7 zoS$(NXZP@S5YcxiK~Lfql{vY_QI4=VVtL^Eq>0Wn22e;JvByL6I>N@$D7V7&ph~m? zBv=GFlh3Nk_Xza0eVmz|9zT3+Q$y^mgHoX-$ul%2$)U^oO@H^vs!bk}BnAG*wyQI} zn1rglx`3^GJj1bFCvEu7T~0{ay}f#Wcv2sZG_bw)QyMD2lB_KOst7{aZZ%ixI8)&= zV>y@qeLsKtr&y)prX>dpTKdK!*xzLqxEh%ku55$%=SJ1>M|-j(YI>>@zWB7F1AUIQ zhn7%%yAHJ?H@vJ{!E=CxvaiZh%105rD1ZIJIi8NEesY`HO!+knU{u%9q0M$hw@<;t z{f**JY>&d*%pZ0w)ulE*Tqu!LKVgb_5tAK1JI7mV%BWxHE9*OM7la%BCz&W1$Ox&x zf-FJbar60&s;}otx&2qp=VAa>SIy@sGK(5ypCQIBFBFP9yRt(*DIY)*;`yz7C0LX# z^3}CO4X%%n0*{8S=gh?CS(1{G#{Sv>w)Z$i3I3P$Kep;+V_hpU~f( zw!WZLh9hZiu%q}uA8T8UPW02rbl&JEZRfh#-L9ZdPFMn^FPo9@i;?D5}++p2nW z1)TbsXet+yM_?lbSbB=4n&{#!=^xh_P;~^gMjB1{N!S$RmNW4_pTJ1Fn8N*RPCNOq z*^4|ff@gDDgbdZtyjP!KjGIzH=itlPe@?;zqSj8`=iJMyEB`!J%$=V2f!v{ZvCJ74 zw>^(CF`wVfg|=~mtY;lZbBlwL(dj*w!f-DCHRiX%qwuhYR39X?a+~C_fA0U94WAvR zfrK-CbiVTUX3I|6S5}*1Kc<}zKQG*lcwD2GV;&46O=oqXLG>>-@BH_pySD2yXwt7O zUW1M_E_q{a%tB#|VYdq}5b&mf-4WvKZwD+dqlf9W@JT#IG6GxqY+b@UaPHL9P>u{*(Khow(U9l-!j5q~6oKwEimK-zxT(jriwqX1K?{GMV-92;hdauiIt_EHF%( zOEYo$;|I-;iv${OLAVk`MbEF9TR8N^BcxOs_emR6Nu^7cOun)#-|&sAg-L^@XkWTG z)*u*6DwDE!LP!JJZjnCWg%@?oB&ABIzZCQ2lZ1Xs(mgm4R^D*j3;O7N?%Qa?0V;R5 zlpGhFVmtA{9`9az6MzC2Cx1)(v;vpn^9IiXZ>#TmKHK3i0hwVyc<>ErW67_>2yDDk z|7W~kw0CNaW0-^AM|jNP&*At&*pnUppt|hvY_0pfS|wchEpucyJU-QbyMn1bt1cB= z%WarGUPedK?#uYYeyVSxLB$AfNZuH8v6W%oG`#MoLzRk2UI+YQ=p&&Oq!YJ&aNY6j z1X1U#&+WgU6*_eC4-}mfJ}EG*Q?FLxAoaYZQ5*>Ht`eL*PbTPv`mOS~gqfj8O($eO z7{5RouMQS+xj+4vf_~4g0&6HBa_r!_f|8*&F_dMHa86E|HL;A9>M9&#Lj62o)OQMF z^EJqMf++`XZ0<{R_?AoD9*fYW$x`f~)+K$sj+1z;C!;Z-1j+4v-*t>~TKO8{=@;(l z2lWB;2cJHG`2h9mxF`r|BVCBay*T2C6|8lz=}f`cqWh)-xpFwM8F~hcLgGRm1GY#v6I0W`Wyj6 zj46r2K!h3k89_`mD)3SkU%6QJf*K}C)W_xV)a0AX^!da}PP=yiK+9n{m3?r2K9S9# zSqlv^OW+!z3zXja47#N)s#O6#vpZpeR>!+M`@uY8*&)fGnXD866i-1ER;YZgbb-#) z_HAE;0BBKDEJrW`N=OlCCSCrF9?bKi*#8}LIM%)o7kjY92;%%}hg~=kyMw>Q3~Ji* zN)WRUT!#&eBdL~8Z&x`7lfVTAoYp#I7$XV71$w;bt)xuE9ur;?f`H8WqG02s_$^M* zt%)vQBbevdV$dFRIP{bh=54ag1LEB26h#K}WOi=xftrjVy~dH|PNblYOLul#Fb{vf zC&+4GoignE;-D|cs=rh?&D`NO@EJ4{M7R+K66p&9l})=*K!`tWiGflMxFk^W47Vge zIJEy^P~#}Vh}s(f7-{X>o>&erqQ-hk#8_TbXeKd1;I1LYha>`XG zK~*FR3x{$dk>{Z%YE57q!R3P^|Fp$sE3cLKs9$dVy$pE9$wmomWNLO(GjUp7s7x*c zNSw$V0JuI`JlziZdSJiyJ@e~Z6@VB3*C$r>Cx!Pi-feDnzLzxwS{1}QY-h*_2EH7` zzxOC-Katn=FMxPMo3pUO-*ar`YToteai>1cq>Y;f%A12X>n$&pW07uj$4^@biw<%q zy)BXODxyfBl6nudod=+~KK^A#gcuFJFW@(zqtd>VqF0>|-OV!=G!9iqxTKb5Cd}n2 zATW~m;OxW?;vV<=Q8Lj8dAE<$yXY3`LJO=mL$CjGqjY0s!}Yki)OP_|roX{p1hevs zO#gN$e0wK#5(M2P&JIUSyyETuS*3JA*4_32ol?F!FoMyw5;sc&)NHW*w|zl&1FL{S z0H--Zl4X-LhrUD*wOnekHTO|7+ki`^d3*`+F{CdDmdQl4(Trvp6 z`k{&{_Ywc`z3dFtbT(9wlS^?6fD17Ml4fpUU91mfCO&~;PAe@W_feISiD)f*3j%RI zKGc{#H4e?tIWYug+l0nJ-(uHEaB_HCpV zFkalg!hSF3chv%DNbxH^D=mr#_|23z&l7lh?{Vw53^34_dWzC8`nvqh`})%Xb^T$x z#(BCO;%EJKbENM1E&jwNP+kmIRM&o08fQ;Kx6M~EuT!`6lsCqBc;h`Ztv!U>Ai?Bi zXr7j_O|aeZm>S6|pxElBwxh;^tlyrgmemV?1#(HOqvWUbJ8delbR+w^I#^uD%!B4{ zx}uUk5m&0!L4W0Ko8un@t=fn6Jp7i-rti3?s2}cJ+>Dr*YUK*-6^5*+@&_#ZhikLT zbSK67*OmI1t?h88&MD&=+?k6+f^MvS$9wQ78 zzbGEZNO{A^h`b^t?RD85VLze^ah^Z_mrXv$eD{)F!Z^RtB0TTrBDcPa;B?7oX)r;1 zQMd!1lya%>q=-^dzQDJzmuG+Gzx|Qg(^Vu1_e|4F{N5PhT*oml@_wM86{aY$qB5Ky znOb8!%Q&43n7_4^Y+H&*yu_>Sj` z+Up%{(UQJXFO9_!QZuD1%&h_A9OUjY^QU53d`k|`QAYv5vnTW&r zWLk}Kaue7+@a5(%Qs0#w3=oSeum6@(l-8m*)R5oin#*xV?WSv#T%3Vd?zA&X{%xS? z2-GS!6y()5FW+WW948%>LS>G2U9)(LIPU@TkjIvZUmegzJI9gw9XGgBj1b8GGcDw92Ci^#eZ=7r7htg&zvk)@{}d>9Mibo^H66RQ?+m6 za!*JV3s6akg-wv4AmgB^Y-)bjm3?dpb^zCUeyf4!R}tt*1-NV4a$>O#3cf1#bPfZ$ zaw!`%>T*9A|C8o{@TBOESP-_K#Gc+<75GvO6i9M|MQoXw6&Y*QE%ju(-PPJ>zxhQAiz)FqZ;tjB$D()C+%1sF zoxa{_2x~R;i<*Y0kDNBz29(8CoyWwdtCy|AWBxH zF0Ptovabwpu7s(N@IF|hQLUfl+s%ercB7UP)We58j%i-aHX!9Y;ufeCu!G*T=5(VG zHb)6RzfQ&1P7pLQ1I}(vwv0!#H%2YD8}#bfQCEv6=kkq|L^~3-(l_OicI2d?os}p7yzD5vOq8=KQ1=kymvGls%O5D|JR_ZO`U& zYMm>>FAPDq88ml4&i@IJ5N`JTCK~g@IN>;@d@S3AQRI-qh_wo)R2|4BwB3|dem_D( zaZ*G?H5bn2YZ(2t`!UAGPaU8hgCDmjpJ_q|jnne) zyIV>-X*qHD$by8hNmH=i=99+Z0ugN<>xnvnXCw21lN=_g`CA8b4-$2}B z3{GYddJT@RJg}nDo^bE4ue*BtlEB@MKBYbPXszF@($^}_MiGlmuJ~>)ylMUh4Fx6_ z8&dpZ>(8G$2Lko3TX2go$rFJ$C;Je-q)m;2W$RMx_1zcMVj{(E(b51Yk!EHL?u1yA zE*PFFBY?cjsEH*YT}s_ch4bzCCK|{hPX+y33)u)-|)_WTIXBCzOY2y|-5$ zUSPOt>8+>PEG(%@zD0Dbk;va{AGhytzSEL%xyAo-VE?jn8Vf{lGcW~r%W)Nss90rO zYLk7JZ|5rQTM;ykWnnNh-lh;Git$T!^AAF!3Zo zW3?}nK^Qzbnx}w`<;A{}a?v9>|IllyV0(L z-pgBv<@uK?H&|Le0{U%+E{-|Z1L44y_iZ*)cDh>N{4sl9hK%X%T-f0B&#RGZ(9{W- zMuOV$(M)~1TvyyOc$QrAJXRhYmSJ(aM`BJ}JXqY|+ z9fG&2crw~+nB4Jt!|q@6?&u-5HHS}vmOfl&u+xQSj_q9|9Nzc-pqe|Ho}l4w(l6HD z3Q-1baG4K8EaEXo6|;=iK5?09p0>RyyuT6Nb#m~JUIp^)R1OGmv@08Pq3EZQGCW~`}&h@vT{W&NCQY?b`pz-&*q5g1XYG#fb~5{tQ*s2sV$g-=%4;NKmI_*9T zd__#1$_IA?5>+`?aNRfaif1?gqqh7+^Iu0K&coMBr0Jl6_aE8q>p8O#gnN+Z@&v`X za$jC`0|C{osX>M2A5S$(^y(>2>7oF-dAisJ&=`2yLjDjl^2Jgaohc=GFKVBTdxKx< z6#5*wU;NLrWV`;_AC@H4wQG!de+7g@+spNFt6wpNOKe_~`ql{^_;+CUoc7`b~U86e6nw%qP54I4?F zl$@B$qMn?LL(`q<6|Pkto?+^xx~!pzV|A;M0{_Np{arm_8F{a3^d{8G0ndT`NkU2E;_(tr_mN{IakKtb+1a6wWPjz7|ncX%Ij_%dgsd`CNr$P9M)xb*hVkpC5((lt9uSo5S<1^AllLPa=7M-9|GUF3fsfeyo48Yb+%d~ z6kUx#h4gkBgkG>jG-5UJliF_Xu-*o}cSC$5iD?$+_8+d5rDd_%@NZ8d23z8SS!s=V zQ?TFq4jg)RaNepsk}oz_CZP&&C+0BEASt z1-fyrqGi4TKY%@R#5dbL^4g_|%!TTbk zl)o7Fy8fP7vX0q*i)k>yz#4qY$yl7oI*DZ3w1ZlKDGV>ze+1t-67djl#Smw2tgQjj z)I*)rF##_OW^=99B%lYN&28>#C;s{Z<9CJ|g?8~U83VrXB8qC30zbm}P7&F&s>NOk zlynZZ02CTNGckv-KyG_*VUpnenn$65nfs;o0=!7accRox zDQ>7_h?45E=bHCKh1)I0hweiyULigcUDGpc1^n7&@DslL-z08LWJm2;w(?Vou43iE zC=|6NPyfibQb!vxgze=|%{jAZKDH$k!4hgetx z-N$}8ze#pk<@ZSy#Y(U~8~&SP3!jeg-}{qc{p9^H>;Z0Q5>LJ*`giwPcFme_rVPac zNI+*~QQcmW>cpD1#svR25wd87uQeKCZdd9L6)G3}aLEq7 zm`rO}#Q&*2mAb5JuZhH7g3&$W!}QGnyV6m!dMs-Fk@SbA8S^`(cctI_>hY#J@Jqp9 z4S0h9>SB6a{B}`Maw*2N#7{;LGK1K}#A0oFsry5IkL2dWRz4(ixqa8`eY695)9cs* zp5v{#PpxCi-;mq$0XJ=V<3W#1zlKrW9CS9FD{4NtMf!``4@Zm$uHB_@tYHKcSk-Wz z5h~0A^@^%TFn{C!`K``)uKFjBm`Gl^-7#ZWkJ;@U%~hiIo{Do6s#|IeL5k62#JTRf zwd0s9hhzOh2=s&=lJ2FXOj7vLD64vmrmDY~RV1cb7m$t43)XQP(Xwa{_4F3-SZ`>#{pRtfg50K1F~L(|CE z+&o>?2ru^Sboelio3Tbp3g=C&AkRn=e24byBZj!y{ul4TdwnTJ$}%Z{?&AQn)J0^t zM^m^vWQ(RZ=-aZj3qo5VtPqFu692pqr4rT7$|Wv!HAq7&Bs6iyIqrG+r#{Ex6Z~ja zPquW8v}!EEH{~(k%40cY?|Q`0Er#Hf@Eh-B!uV58-8RioXw}luC9GJr5qCuNu{JT~ z@XSfDR)Xfyn$D(J(48p2`nfr9Hfmd)YOLJ#aVA?1OWol3Rs2S<6C>@Jxb#83?P8g` zLrtQAxd=1dzg(lMAYv^J{$pvJl?p0se2#zFUi`FXnRhy-BwCO~@muu? zrzKIjVi)21mq|HoU`Xug6SiW`4`bofVQV7WSlyX4nGkD#&f`C=t&%pMwEhfvN{go!_r zPA2G>X9+%UV!83D#MBn0=B9VQp65HJJ9mgw;X=b=N zm&Q~PmE2E6ma(^NGD%RS&MnnZ_x?pNgsqJ2Gq5Zw#dt`aYhSjEVR~g#5^#k;o6kW0 z(fM`2O46|c*L_)D5HM%PZoYFF!ctD3$efo6NSTddHWQk(xEp2=VPv>RmB{2%&ZM(p z0-l`>P!>~dBqcUZ6BMYcM!Ht;hA@@0Qjq4Y0^(+)7R(fw_uPKRn=_TI11@+22xU`@ z^Im9sT_jbX9(z7XQK4znf4)&{Bg3!~HKDips$|+^QV;FfmRn_R@Yme314CRCUP{IE z2~Lqwhc6)9){p82j4mAc0OjM9=7V3x100}Tkudo~4UMedf1+!mvw&A%CdOcjw$z|IQv{1MV~!;RePmY)E5r_^?2#cz+6a{<%)^9)S~F|8!(?#c7(+FYhl^nFT76IIrzmchpzl1v#KyIXe2ZM zdngz440=!7j4DvC|1OjG-zID7xACq+RT$)%w5rdZP#eGD7|{}zh6>HxJiC5cL!Kuj zt3a`kGnRq$6=T>(G)=H?!fpsqjIp`kU=6a zwlGhp8c9sU2R&A2HsU%`rh%;VN9OVf^eqarp1ZtHCb%2TtxjW<4cArV>yVFyuTI7w z?Q@mMxUC(e5>q>kbJSF;xOHe;m27(aHXn9?Nz_;5Wbe(_=D|LAS-WPtg9iVUr+}CD z3v2pj(z4LN6UP}U@LNMj+3|^a`77@J#n&I%4^Yr%4M|^(lZ6rm zL%7PINz8hjkv$9Hss^(`pL1FtQ>I_NaeU}t3#@%Dn*tPnU4e21zFol^hK&006aasDBn zaayu_dvTyfm02N6$PH9obPJZ8pl&-h7hVl~A2(h?3FJZ&>!6k=FY<{(5IxYpEmOJK zTUwa;OABYO^BWuqdSK23Wwfh&?t9*Uvt1KZTOJ@g>Q1unIsVsA_c0Fp=5M?oNvz3l zw1E1>7_h5Z*!!UYsSgc!Bpbvs%p|-A{6Xhpz3EJhL<)TE65Bu#NO(4s&P?~lH!FnR z0%?w^aq%-P0dYL6Hy$7B(T8d9Giv@~zW2>B(;LFm4)XlSxJ^k{$N!~&|A36tJGV;yV;(G8|EfgLkJ)6n^7 zHNR27wZ23jNmFX!MAjRd@NErH3T0!99VC4dwe}R~K57Wmt&pe8dW z?R_!JZD!Ezo`E=G;Y1~QXd`GQwbUA1TZdl*Evh?(LuFq022z5`XD|5Q7Te`hov)sV zW(m#uC=ZZcH}Dt4SA-UI-T9-Je2R-o4wWy&4tw&#<%IxJ0$c&8Hz-l8ck~l7W3zOO zBz&A!)pz_XzE-3;d{a1pot=Z5^ZzS&(Dx2hTp;dg%wSKeAMZ)y`clvoQTA2tOUZvd za+NRYs;fxHA#MhZkFUC1HRY zRNParJ`Ze*E&64&9C3<>Nv3-+TTqcUMO<5ifGGmL8T)mWwLs=g$Fk?gc)ze=>!WW@G zJp0jW2(SO_I`DAn%8YGd@Hoqa6rwdkVa|p!7|fy)r>8d}X3q94*wKPmTG+zbh!Djz zLFC3x8kT6!#f}h#BZ03Xtq9@5*^Lkd+X*o9!j&ehFmnndM47G!oCu|<4R$a%2*^xz zdts!R<)~d#2vJzCvi3ga^ZKznVdNE_SK^os|8*S?jVojuQ_ou_!HEh!tN#-Ekwce% z6{9=*)0B~w^x~R3X-->;#7A4|>9QiuV&ZQZ2LV6Dj7z^z=3mz>LKOSujoOS|0G7u2 zkPt;-*-aC3n0S6{=kTLfop{^dU>KBx2M&Vc0>@6l&ts+6%tmbUl<#U>rQ@boJU?h3 zSl9>{5`_wauu_LNo30!l;;}uhW9ta4H@lxt18Fy3`~<=Wl#9{T8ublqwgP%Z5HB+P z;5U(U>kodV%?>-7F8Ja*iB3oW4TWddauV;GLTB_3`0RH34zw+|EOqj8esJ)=m`;7l z+OSfWyib;|?%R@Rk+zPF-g5CPIIiW9b_O;+pd>;@|avOg68;o9TY_m%i$ zz#Hxf@2X2{(FH#PruRIq2yWMZv=6nVjZUWn9Z|-bk4@(t$(qDi=S^NzR+8}44DmMbY#|I3@Mh`pj>3p8X zTeK5|R}I$B$!P+1T>|g`t8&40(rYqOrxC4J!kDzS;N8|BhG%1?{f~VbytH&YelqF> zwft+O=~A44UkeYxo32%4wodteWu1JR4P2E2%oF3U7HfZG`P6#GY~v6%)c;y|6%T!? zBG;V}*!yE=iJSK?QmjnRD2JSMIBdXWP(T{`T;UU1JBcYF40A(GYiCcO@>*3w?iRQwBRMtG8VbfIu_Gr_Pz zo|{TG%G)qzPulN`OWr#m8*kuE`*KTRdE$?oT}V8KXMKpWfqkHSvz@%dGzK4oh<#n4 z^=|sZ1Gbio#h@o*z@BjyZj6Pf*+%p39SJk5#NU6L*w3vV0J~o((Xf`BRLCXfK1yA% zimzQW#WWJwQAXLj5wTDY_?1=OJEjUIglELS`q_p0-n10d&i5;9Em>`_JACLH{&z8< z?eP@hArmmcQnJhMu-dw3Q5MS;Wt{umwX^F={LYRynyzv+057@yAt{Z!dcrbA2b%h( zjc`knUvg#QkCxdyjm1>0@vWF|?&G~>6eD_M7I%AIf6&(lpVqqE zZ@)t3*V*3;o{o3T0>E!?O-}Xt8?3TpIJv)iF*O?UCx);Z@Ku73G@=YKN8GN%F(J?v zM73mzoZ+`}my)$cl7x}#`?oMYznm0v=*-dx756E{fYc?jTzW?=)60{9@k}r#Ys7Lw zM)z44WY2M9?)3R4I%6zLG2z%9vV_s&B2OMYCTRB!W3+HZ%GD=h-@2>c3Y;T(J}v2L z7H!WEa7ACmaHCPRiYUY!^M)XxlPR^&ojh6_*mKN`VBA_5@{Qe9DDvV9CjE+Id`J09(EGS|W~w>PeuSn`mm^bo z<&jw~ICb10N?$#+-)8dJVOYpENlTZ8S!)3gSn_sNlRd+*64PK{mf{tf>jGO))8SOBXiH)PKzxoD1#g1MF@XT)ty!D(q%X&I~ za$=$%eoMa~<|3Ykp zI1r_GamZGs}$X6ZB3Ludg-rKy;t!^FwcPojE>hhSS8<~O)@*?NAgWi{_pG!Ty`wQKWS z=dX?B5l?P6Ahkqi7Wg}`?!5D**ROUBa{Om@K6J(rv4rffGGqr1L$(9$i1{m7xbqgC zY1!u*`>S~Kdm6BXYdW|u*#R+p+}(u2au12{jl|*7ZY(F0RC|V>RrVF#T`P!7J1nt# zhcQ^{+~rYOr#APt$pa>@wVgMNVyJNQh$X73VYtJZ{{4YXzv%fp`qI-!#UF`#fS4pV zzTge77Ev9U)c3QEu!Qt-F;(-8pzQ>xW?Ia~KcvyzSDYsg!|0Sp$^k4D@`KkTz5hbh z!Mv9~!P!oIns6~2#JIUh*->3iQQ!$g_9Ge=cptOfib&&|sF*|3hOMRD&m@#Quazyl z>9|*q8{oE6^5GsvmE4LzGh4A9{uAdH!xf|zKq_lj;qxx^$iTm3@@zj+{3EAIU{Xtz z&MQ`Y+KU^t_9F4)h7KgblGmIaY%?WaUK9&xdHE#%iAcEc>~E1oM#=Xm=ge99*Fm{u zzszFOnLbDIBb~6u_z2S8b3@BOIz@;4X3cs5v5!f+Ck3zQGPLQ>SLaS~ymImu>TCP( z*9+$+oT**uuTySlCJKFa?k*^wR%1w>@s_In$GuN=l@KtzGY7P(OVWFty&Rx(7od+) z7^n%T%Iy#A*s+#BWERbxZadGoZsDVsrpEs*MJ+-o&uxpop4I(zLIY1_KDN%cB+tOH zZO!tJzd*QOfUUu5Bj1hpa8IU7HD2D29uP?T*nLkQsFg*1vnNg-fbsN=SESAcrZ| z%BPuVbBbhuXg){)QQP2sSwy50^F?-)6TMw13@gNQQxI5dI1ZYsOC)?lZM(6E^k)+P z_mJqsEAaH=sl{;OPT&Cs)vJo{^8%OV<|GM48(2(d}Mx=ygX2AD%$gn5;?G%1`giA8g z{5ihA5(mg7!R$XPjM455^^o%)vscHm{8e+Vf6_V+EyVyLz?93R{p{m1^{zXikZ57tig3GjGmqjmc8jQd}f>WQ3e zn$77Mej&*9+lsY2NTr9t`ARsT+t~e=bqAZAVR8;EeJ4!jE)wZWwnej5DZ!!(7gT(` z>?C=8`S-I46K|Mx$Z}u4140t?oF-&HzeeeI`P({a*hW3Pl1`de@lRT4j*jrZU_Cq^ zq$j&$9w*5^n|%`7%^{zp{w|RSb_*MEF?`xqPsGO07yi=QGMZq#tE>eHe@GMsq-Px+u2H^If8~g@lf)m% zbBP}nF0(n}rR~DPb?))umb)P@y$U}{H^U|A$$N1r4!bVVhIeNv_D@REqdgLB{F01- zZ8>er8g2%sQ4?A!YgotfblhzvndXlD2N=|4V@ z5=}~tz>mJFVJFam&m}|Kn@ZOzjr?{E*xjaU9ve468xUpNTh;vCMuTTwnb2pUyNkew zMGvra%8=u?m7n=9@Q`_c^+mGLi6ZY$y?~Q*#!LA!O((71+>1vP`<|@b8<) zz+bbAjBF?UZMVvV-`6Rj7xb{T$P#GjAEE4KN%YnMT_eLuo=U#$Ywx=hu} zCsBZ^p!>MKRARrH^(^{w~4Z%TyZ~3-rP)Tj5$~0C^^sOC$frRv|k{9ky z&h=j+__!3B8dKf!?6E%;va{lyJIYD&9@Q8p%Js3y^)t53q=aq^Rl2j0#Qn$Ew7Jy- z;})@`j@7R#Eoc+4fr(TNSfqCR_K@p8@jWbi7uy_dDYrbVL|6Q2k$b`eG>@-SZHK=9 z*{3z|(C0m4F@khR;Rgc~YXf<60yC8NwDTN4PHqgC{bH&wg=e(fzg{lJd9EgSW1H6^ zu_Fyj!$5}LgW{v{#MPC1Cw*agQ-ADz4#`)@`<_?yu1S#P=JB(6mY5pMXyh* zDO?$+Y#!$i_K`9XmAm}NM%yg^n`UMxouPuu?dtiDJXQ6wBZ8AtkEvpLkm-~CZ(o&5 z=d`|{%#x1+hKIS8v|C-=>OK7=73ELvi1Dr_mhmY&TWy|Ye-X0M{qRik?+!()7ce03 zo8_>JUyK|x)J9(cCQV~ODS9sjTC@Q8j+c_fxL(93iwr6S%S}cK==Z$#kzAN{yxL>- zLEi1=NYzXJWI=xZ>k|gPfuE7n;Uq`_jy>wIm@l2%jM1tX27=Bz+>J)R64ru0-<%xn z7TpcHe{TUFg`E?gBlF?-wJm5@1R`{yEl<$MHxD`i2fe<)e;gxTp`ULWo)34G#Npp{ zNQX(S{KqE?h6nDOakMmcpM5;|D*ADs73aZeRWq$B&cRc|$aTmjctlV3wNpbO3)>`i!y)qE zFa~n<)rEV2z98~JgVj-nXoB|uO@aLBSHn#BGRnuE^@^_9Lnp}=SsE8|pT9OOk45`j zVRLob!sBUCdq^-jy-Z$-mHk)al?*N-@YM~|0|w|7`Isk+>F@z8cc>>|XPVq_Z0%O{ zTbhwB>$ok+E#?FCg#^6_1M+`FKh6rG$GEtN0}WaMy$=8KWi-Vh9c?B(q8`c-K`F1S zktNan19sBxzVX58jkvxw(NE^rGNEUMVOkl{@|Qa&OWN&U%;qT$Uofvux{m(FHHskq zYH&ffXlA(Fqz|j%#Z_6))5i ze3(4U;hw|X-Kr+h#3NNkhqt>9zTRQEb-oWuPncLjg>)aV+x?#t1 zsv_apDQz$qi+ifM({>a`kiN7&0_v7>q)R*Q2eOA|0|_3IcXQu3_m}7^eBJ;s+M*#! z9(~iZEtbcL^YP!hCA7L4dyMRsb8n`wi$xv}+WmMh zgE(WtaB(U7;3?{E*&=SHNpmbo@(}7d^|xBLcLx8G#dsK2C;*KQH@+@GVoNM|!dAB8 zkSNr^DN-=k$$u(@vS{$PkN*0#7V?^;LbDJT5W>ThW2rsTe`SjzcF^G^B?u~6>^c07v&S4h~^w&ICFLHcjZw- zFOE=bA6*+_LX_9d9k#l}enbAxj5r>m@>`+HA@e{b&Co9br>&3nl<`#TuCtL8&Cz~5 z6jwaO6j|9KdZVE>?+j2c=C~ftwHJVY=Co$MXClQC^YuFL`6DlkaLiyFI?ZE`d%So% zviFW=-2BCexUAy7d&KIa;^v$aX>Du?I$zGr*8`ax?05_jq;AH=8EF-syHuJ3!#dn~ zo&%u!5c6x7>cr?r;{C>4DLTEEybIp2y!kH}#6rc`7Z|Tegp?#As30*pH;wor+N0c{ z_bu3zl4yA2hkCEtC+{%W&7{J|hcLBd;WQ8G0C{E~qqA8t@D!ftr)hQ6CU1Ab1^d=Y z+uJ$v1H!H3UPeV!t3|5X68H^U_K>k%F)Co=$O_f*`^HoIVYTS@jYgLqDL{aC0)2&8 z);Fq#P-oOsD>teOntruw{gw&Xr@a8?hMX?h>R%&&suEbNDvUnIqLz+rD7y08>*&sw znxf`!@Y?5upmu~Buil0Y8Qv&xwzgxfEnPU~t7^6Eot4xM&m3;P;B>JvOSFSm;TpSZl#`8B?hi~ERKeUzYb=+<=jgNQYm(vVz+a_K z2gPJlBMz5HKInaHdf4>6GtadRs=$vL5sAHQ%~81QAMLdFN)57YvHr5%y%Mh>!gn$U z6Q_L~Mw?gEOn!*b&j>Na1RYLVywP?C1lBFB!~EGb?35GHjRkQr{u86wEyVO(K7QLu)6B@b-aMLvn_Qls9MzgY92f>+x%JL@j|FTEW>5ZS5C&|zA36#f z$&9WLi%e}ic<&qr0w~y}2Oki?&0lquBRG)SnBCsxeR+@M`H4FXk(XM2Z5r*kd=eO| ziYK;>{xWkf|KHV;?Dnbm_9YZ6-Z5w&ioY1$L>-{^LS`H2n3eT)l5=D5O@Zv*FO)Ta z$doMSckYDTd*^L=-zNiee+V#Df$LG-)cGl+b4%u|eR3)Fc$e!cztLNTZ@4ydqoU-3 z?TYbd>pTMh#GN2etbsab7(;>yjSQFXA|~oY`#yn zd5n6vWgMCO(AaN7w4GR1P~;JUn2Ms;LEDWqIod z!|WsXrZ1e6k+8(R#tbly?1)UKz0-wY^+Xk!VtU^DqjMu-JdZ9-0n;S=yk~UfJPdiX zlH443S3~G~DgZ07XY@(QR-}#dC2R2D0Jd&{5|5dZIU0$?pIn3@abjNPvwP( zFCvcFuXi#P(DPW;&4SI|>{l-g^y*w^wpQ9Lvrqqar~aEr*yaOH;Dr>sUagz#A5Vr#!I+ep=vVbvEW*eywHc z`;eB3SE|Ku5Rg!(uh<_ql$d9B4 zBvj##0;;Jww<_jqvrkna_a+>^H9JhXaJ#ve-241(XMPl*y8DT|e~tjIN%GPneUoJN z$*yrWj-HT@&5!kO57Vd#%_j~xqMczG{PvLZiuWdXZ^Cj5PdSRiWZfh}Gi?9GCu_aj z-P+b6o3Th8JKvKqn@~+3k%|~wD*~2S*dqc4{H&8V&T?=e?yZa6Ph@~!Pzr_m6*Xc~ ztpFQx!({+xVPQ~J2>!SCDYgfFv2V$nka&dbJ}O@wy6>JngzCQG46yq6aubi5RT?AW z&rM(b7WZe7kgG~}eqKuQ&$)-hO`}qlcuEhhbYrdz2X|EY8TC~SXq7QbYc^dtQ9x)bZEe3fB|UOtvR!_#yvlv`IJ@~x{kI(t^@prO?%M7K zq~Z@2l?y(KRh7(U=Nc;-l?7dg*nPg(*9$xX>_OEHo1`&jRnqv4V}-nFS>SP8N$=P6 z`$iC8rRDWe^!q)R4v`>Iz+Rh|)87MO{EE8}mE4^a>O*1skV8=Ejd+~FFCYXOPWv~4 z?HEMXV~3rCWjiKz`;A=px`byg)*8tdmnbpCeL}0?^8A)RIJRwey4t9lpUsL47sG%--!!Uc~&!d z*GI$N-JKD)Fpj`9adY(u&VT#Tt91FEg?PQgRxshf2xh%*|0rER?87sX+4GqCBW+-_ z->LY`gl^-$=MOoBinE` zY`r-lbuhW%EJ0je(5Q_Cc~$G?ErCF!_V>%qOhw1Wrm^-cCG zHAk2Un-2YsW~gkmB!Cr8XqR@}o)lKb^tRClUPF&)#!v!XGegYxt;SaXml0f?Yw~iU0CuK43FFlkg8M ztmeyxWOjVKFI~?KR@vRvIHUX)<`pdl_q*ILe?Q3!Kin_vNnDi+ax758mk9hJ;k0Q- zd@aLj?O8{lD64o9^>z7gidkrbsxLlWj8=XBO(b-N&?H5Pa>yH9>tL4;Ob}^k-Wc!x zUvrSRPVjUkg=EfpVL-0NxSh~a+M@3-@he`>qQHS4hkQ@lu-dE97`Pu{#ty{^pGc80 zlO8?)4h{Ifm_FcT+eWC|l_>&WI^wF40ufkeYpp4Grqz zMvQ2k|GNKHIlwa}CxnJ3dfcr)(o2q5KSe%v8>CX0!5JoY>V3OZ%ED28AEuf-(59({`#EHqz3Zp?WJm9 zMBJizG)V}rPCPB5wP^!iH+F&jWguu8{#Cv(K)Z}ySS3~IH-quW3rig&dptJ6)4{`} zaKf2;!A8r#gt=00-Q+f70QmjExFhrLQwpMq^HsfTdo$=9|7$6N$9`@Ex9R@?!} z{MOf~w?uc0cI!S`gDL%%8FOH)w4x+2owH|AXUfXhzL_*Xj2M_iWBsctsmgFOBR3p= zmnpDj2m`HvGiRA`hi=Q;TKPwW%02Q&R!D6W%8>J-sY5$Jn6jkD4b#EPkFu}b#GYa; zx}TH#nej7O)I!~(b&SWs>1cx;Ror7U%W8Dnf9B8xQhRdwrsdJZlCE?P$6!7D)vL%= z=*`vPv;;p8rUO=91PQ+7qkGb1uLu0>rds0z)?I)8ARm}Fzdg>Yw(>)UUBbr;B9|`z z9SdyZ!Gh%ioz(KoY?^~vM{OHz7cn~5zq;t{b_M}tetyQ=X%agdS`~g#kb3F8F$c!} zMIG!c&rBGxu={mSV)ibiT!y9Z28MDuMk!b;s;TioHNbu$arEGeRsGhBpx`-7j_N^> zCPaI*XiB}FqV%16q4tD^s5q*h!0l3=ck~p6XDM><1+i}{DEQX<#rySjaMegNnYf&}BsYb9_(mss^hFkeq+LW?$u8AN>V25(Yk&*J z=HrI!|5q>8`G+*l?xQ1T2G$uni{8G7Ui|QdR7bhPV)=g5;EOU{p)hXtJ0H_KR$xB! zp?rElJN4-Wdqef>=AtNc}}3n@t0@j zSzR-H-re2-7aaeIcThDLqd;}(Lp%9y=Nh^8yyEPmYNbqSp1(-CMz?X&l!EkLVGJhd zWXH!m-N8rf%&kV-yMST%#W1ZveiS*>mG17gev*W_?IOoFjmj`jTnL z{IzIesT4$72u_%k;nO~})_&{zwRs7rt-_8f2!!pHVh`PxHSe1by?(jp#Y=2u#}sx` zQ*0aq-Y$hx-V}|e$qtS8`myVtKA9`Z9AUOe*t_-_)n*Rf!+Q7`kZa4zAsK`ImS?3 z?VcK(3mZ|(Y>75Aci1A|gGevV2ELx_ZB~zlZm1CDICV${t?B7V@9|Vdodu-K zlgubJ#-cXlxG-J+jI9(pZHf0wSExyKTRm-*F@9hZ+TM}sR@yKY0AwpA&N%lJ_B(Yw zpCs=6svC8Bt-NP&eKPu zh2sE05ti+AXVCs*Q4^yHetr#P80@%F-?rVIp>{hMN8^F-A|FI%@XiBq68{F>*Cea$ zyhZ%i5jOep@3~nhDV&w@IO`9~H;11;8nYe1a*kXHz?}LL>yk(%r$rvr(|q;*Tj8kx zWLR+2rI!c}Z_1@PeRnqZ1;e+^UsvTL8xbvn?)SCbe_hwa?s%5b|JRGj#*thr-8Fw* z2Z93|nR${RdPXRMb90;-IeU8@XPhh93&rpKa&Q9v$k0A35caaL-~DTye#|Vn3c+N{ zX4TUJ!u~tCr69h^8XBhsi8(6!^f#olg44h7rp}8H`B`$kA^CRmaS!(0?8tbnmZ90z zNB?2j_4!5esRHly_G!~nF``Ds(%3?A;U94A zE|I3B%;W?43q1T(IHO%oERqVZ@Y_RlT?jqL47?V4@=2P~9PCkj|s5vib48>LE z9;)%UBnW%E^fA{*;>#X!hH9lE3L3tiqAXo8H!t)1rC$yqXTp?cQ@AJpee~bIkADNq z4Zai08;&V}D0+>@-5-iYVEoV#iWPu3#J|=E2K7}z!J(FdX@sSFyC%ltJkoJC*28dYzVmb|9)R;;r4?G`H>-drn$=a}EfDtZ)~D zCublr**wZcg}R-qxHw96_;v1u>@%Wh-&Ec9h|&@$sr^NWi4%QaBQD^IiCY2Arm*Fw zYq*zjV21>K5O3$+Wv0;Vt0lsAi*Y9wMNvm^p0VfjHwnL*jA`kU-#jZ>=|@cX><)rqRXYUy#g6|8LIbHC z=czv(QwooKqHmOYd_L6vHb9y$&3OA#N>#K`mLEp;!zX<(B$G0x>`Rw4in6MTaF}sN zrNW+#Od8}B8I`a{%yo_XQ(+A)m`P5b+Bw9+ozaF;iVqqlP%`AQAg|Gz8!_9J7PfLv zi&s`bW1A=#mgrpkRy_QNB>xMpSfTaUGUgQP$c59n8gZM5b7^S+>opNBvpZld0MT}5 zwV~+451?Yw+6$-q6tggt_ltj>V(Q&<%4o?9DtNAL8MWzbvVVC)v5 zcmSD;6e!H*;?@k@KJblN{G0FC1xS-e-}7*%JhRTy*Gnc zTM-Gkepx)Ro6JpsjvM>+U7|6pTcv#jO6tNuljwB zH)IFrsT~<}(zlg@CTyQ%S9UMG4)Wd%QRn<=MDVQ0rSzu|Iyn_%^+xPP6r`Uw1H!`Y zLx}Jf@ivz_@BZCd%j8#FOhFMwIw-8Fw3pqAe<$|kjDQP}u4;C-B`MhmPME(=WxK}T zAUAlM!E7Y=(2|%3$5=X8+9{(cZO9ET3yMi=JtcP zZ+xWT$uJj|MuhSB{EiC*4uEIRxjeiH_2O>B2<#%+s+sPlqH-6cFG8{eKj0zIn>C9|rETThou* zTK0TVz~Lw~8j(r88etJBGs^Uw4C`q-YEUl3_l$q#%>)2MCY1%f9>iu{!CQ zz<%?bvHyAF+*{C_s7=-S)9I~<&H4IU)jFpTIn01AzP(TB9U(so%&mYon+ZyW0y|6>AEHrR;--v`B*6Ie1tLt7ETf^bVCMVx)%W44#x?Q(bc5q=A4_wH(13`x5?}9pnoWyJ13wwK*RLVTo`q zD8k1Fg@3r;)?JYAUr+erqMg<&1)?~o-Nr}GjFeXO&+sac57B*3;?{AYnX|3j@Wx6} zm-|Iu%evqxikj`f24>MWhWb4Rs{y=ivb7%A^QkGd93AnwJ@=1f9NhI_Y ziGrpuiaNW!o${$4B`Lnmv=3J9C$+-fnNzrm5`|MdCUO>ac^OxBdn=`%wI2NYzPPb$ zWO6HR&=Sz-l%?n~nY`fo2X;&vZKgGPIiF7k(4*!ak4kCvU(R>V_p?Q9qNvUNo-gTn zw$#mf1Pi;<2g`K8q77x))6{9Z{KioLESZnMJ};6`>+b(6t-jgrE<2Mr{I~&AB|Wl| zeL69%s5atIY&s6RtoJQqpPcx~m1s>4#&@Vfss^B)#6O+roKDE#^1;Z&S{VEE)P1wH z`k!t18Sk)!r?U5nfT@t(?jXoHCwmnaDmfW@l;OGH@yBbeIG2C*XLe`K%ONJm^){+K zR&Vx#`yVe3LTc9LW2)S4^3w_TJ*^H+_^T_t*N($3F;P{lG2}DXR4R>VoY${xl$k2+ z{y^)wSb*<=qO1F^NMc}?aosEU*E+S_{&U;W*W^NQjTDjJ@9TaAz-T3DygGe)uzGZ`fx(hU7J7i`en(9?R_bj=NMy)Qoe-M!`sD#!<>z zLYS;!kZ^d)B^Fb0eLcM1o($gm%b0Y76wsZ@p;`JZjQ_?=158olO0$?GH~20Y#{G64 zp`k7uwFXf?3RKsKkfI8LY(s}2l{uuyldX&o+df_z?06jvIkj%>G!wb!VLARJ-MR%K zk0uRGwBB@IAK&lqer%BHPGp^-|1otyUWK_GxEmZ^oid;nmUN2gWcyt(=BW|H0W8iX zmt*;&UrmH^chz{@h}yAbe|Z;re+=Wy8H@Eg;8Xjqk9tpWlaHK3^H%M-8(p{ZEsc8Q zWv>bDwcMogEXwO(r2I_0ok4jpp!dDsiEe20gxnI0yt)E9rG9K|XI;uqURQDYF4;gG zdqd`#N6?frDmV97)k+zkNBOi)0bup&8R;YjaGv_9CiE=)X9=CPa2rW)PGXg7g9=br zaCU`Ddu-6&dU`}4Jc7b|2L%D{@S0{Bp_}fY)xyZ?vIN9f+dt(Qmb=pDo-6upxA=5N z0azv`kzNM?DDEhV-&Q)jv?1zdUh|)$3i4`m0(vK@^FF^g9aK3{;Tb?^!abgJfvAuo z30s2~|G`?=n!&C@96Y2nNbDhDjW`H*7WX$!YxL5;S>GygS|}CA;Z%ECg?7#$=Xt3`UO`6s+1%y6pYa@8`zd?K zb1GAA5oU9Wv=-i&4@v``)(GSjJKmLQ=K8*MiK1hQfVgqlztai)GCsFd;fctt81zpq zEu-artgbgnrw$$QNrn-EQBZ+(jZJRM2vZF2dWrCmGt|%_q9?Xq(IkpG)#=+M8};*; z0z4Xm;!6zB1L;P@P)))q`r58T*0pc>w$j|~QSv%R7fkU-WngbRj8xR?&kjDW<#o=T z2;L);%Cgr1dpXk^mN*Mb@>2pcm|Q|^$@x0j^7!h3S8sLwo$ck!wlF0PVXC~n z<4=0G@YT=fs5In!z3aL=ncyWq+01A4`EEFU^`GdNnA0gj4)v2aLJ5-Tudy=D;a!>| z$EtyF6=CW2Xn=b`8%=P@9a7g^|>XZJSs5j(oJX38h) zqv3XOj*4D)@zMFhT4jm*lqAdKCA@I@W-08+Q1w(f?^wCj?=-Ky0-7u!D{VLSmW-ng~11Ez0Y&`HX)Dw1^!n9HvTa33p`z>a2 zE5Ro(=cg;pTT^{2s%}O8R7jnkK{99NI+6W`4rs-&t0u2u1-5-A-&8+JnwR=?S5Xi6^H%<~Blp*LsXmq5Um6y}uj4)X?kf;#W*x_vUkPsBs1aepu^b_(h5)8vC z6B(mSQC2?C^#oUU@;T z6lj(*Del+)DQR@pO-(-g;4RvRG^|VDK_$m$#yfCvua4|o({EfRXXvL>=nl@&@lq`l-FZ}=hASo^0~NKQKOIIo1o z(Zee50!DUO^eWtDS-(%$oPw$qH|1m3Fwnj=DkgPSW-2_y2j6NYF%h)O*N1y_9J+@S zr|*(uNc!}i#8&xu@gMq+W!0b_#~smOK6q%}*CHQ`W37n93_%l6dCo;(D482`HtOj|X={@%c-!PR3hI2aZJiMmtZ6SsVBGKm zbWU+*7p@}e^8UG@5XUaN#qxunQR~e2O6N85(kR0oKR-PT{L&5Ra@R&*{iSB8t9f38 z{}y7&J3=M94xS{mL%D-qxf2y_CAt&2E}tcx!>jM!S3pOgXDQ($mweoGNTHL$XK=4z zusHk6m)u)cp6i6=d}8&s-eCZK#>y$&FJ;qGnFCC`7H};-UXQf8AFVH`&3;wHt4zsM z*evy~xk>5zF`{Mgvs%0$aU)zhMDe^+%kiEkF45*!9&dm|u6txFc<^)r%83-g_-^_R z^H?Ss;K~8k89Jo&fODAcpE3_QV=f-#$#_LBfUYOI$e#E`WLJ#_9e7gzfr;2^Y0S4@ z_%Ym^WWbJ|{^0HNYv8+Vy?f$v{`}V_)eE`L9j!1;b+nx6kW62H#8C>5b7oUq;=_I0 zHgJy8yVpU^@Qh)pB2EGsWZ$7`<}E6MY4=x$RS+TPl*t477vcFX$|uPqxZLkhS_wfD zhhnELvkQ59KD zKp>P?HD~1j%c)Tfh1H5;LiUV?D4yuAf3&J@dmXH+r+-FZNy@p#Y_ZG%Fdt3w;kPGR z`CQ%_wP{o*0r8dVB4{=#=fn@el9a7;FAz+JM1xZN6e@f8eSTXQDuTsx%|gYo?U%6v zksA#Mq!JQOC_aueT-PbJT85+ZV3}}&EtutHhPJ(N4kaCz^Ti~L<`oXUxHS=PC;4jq z6I(IS`+k-!aP~`X(uCjy=SW(4Io~9Ln&TIlafSRC&}Pd4p0|nnsBDoP(y2PX_~mLN z#Kg*B2`liEr&g}S7q@yg>~x3$eXS~QifbIq-do%F)OJ9@x~0P+mPkE@t2$zhxcpZh z&KM|fk55JRZ{*eadS#b{uAk}BLSIL`4oo!WZ$K&Zytx6#-{0ooZVz~O_dY1XmooW#H;HxAekre4^G9O2kU2ni zC>Jszx=$YrwU1Utc^}MT1tNL!($O&K31~$t?r~=#KmxNGaiu90CSFCJl7p>wNp1oA z@E~MY?tG?vCV2tFNX5NkFLZFA1^;$O_6zbV{y}4Tr9Wzs7BuhfSfZiFE(mSsiU@h1 zaqmR?M5JXu;2DBy*jRLK6zB4u9fHE?bLqGx@AUQ;u*+qo8NPJO5BiFcSJrJ@)E*z* zq>y$H_gYzqKpjxf=7-)z-N6-T061($fv?1HN?Oj3PYq0_z^17#N|ZsOI1JKAp8FH7 zMwJtq`>4;#+sVdde#^DJvl;aEX>gzjG4g39Sl!;;+eAQ60xZa&&m)JJ zF2}E*G6|ErYxRL1TZ4a6|30Z*Nh<|4oY@VhEd8&YOVA&`vB{1=l1iF3LDqeRF=}S74thKICynX1Cz9{;7598Y7l(r%! zQ(ZmBH4KYJEDDulyA5S6=tq9vX^Sb@$vS*v4h$yz+yaKGq!VZ`2sQj^nuC~pPn`lU z>7ZRh-?*9N``7$fNw6m)T}LRK16fBQse5gVNbc7&kMsI=Gk(xL(AT`?(=89cELumGrmLNzuCN~((=4}=Uwq6)66nSEwbncGP6 zO=O?T;0@vU}?!)z{%gtk<9;=Q9;_Mw^2rd{O-2F5o}j$5zX=jSkEv?(}qKx4y%L zvzsq{zRNEnkpX3U9Y5Nw#CYNJVhQW9Em~X2GZ0|E3`tB zikCT1AAvG~ziBUE5Tox(7ZqIhFkTmyedoyt?OPaBIVa=J9Hqd%yFsI*Q}|oH$MY_o zjk3*Y4{;|3-uw4Jbwd!9t&P~RddxpWNDI;5Uvh5>y#Cl?3Fvz%X;qYM;bhV=4SQ*= zLdPnYZ#cB?>xJfy9N_pmZ)Z=dPv`m*fkdz5z-K<@;%2E_#>FtbFT5`T4trF?U3$+Y z68oGklxqIt)~p(2Abs73c<;?a!ogf;`{s4zgmohYB2bB}FdQ4p+~-h>?#}|JUSQ7s zLw|~I02Sq3onU!W^re(b?*eR#}xcyJEnO%J+kw! zv2TCdn8L+5^2sR;GePcLNvj47UV>IY)xLTkEiHw>qBO^EqFSvC%4B&FwzT!$mmHO> z^wuRLC2dF@kY4H zU|{39;5I1x-pWgz7&QoeouI~jKMHqZIlr5&KTSYRd9KQ;kwI?Q)#Pl-z>wkE7lL)f zB$bJ->OBdnId*m8jcSylVh6?-yQg2c7bBbv>96r2>|^16MO?zWDm{YUR|^IDrxQG7 zW)qUkbL7cO(a%xsWy3N1qT1^*3H>+qyFZ3sjOB=>f_ByE`+dj9OURz1*!TV-x|(>* zf3l9U@KBnN_Wc$gPw?^jk8)h~ZioW3%s79Rid(W6-}-nqV*HxNY6*N8UwEVTNK=}7 zC!tr_7ojjlZ*{fu9Vn#h)=&=o%MpF2z1ek!nAR@7SI$d{{mhm!@;2FP`QgZerAYF0 z!v8CK<9W>a?sIERzy-;xr)b0|gZeK^191~|L8_gHuh5#*L4X2TBs=;Eu1~fQ6nF%-o^ZMhFz~;?rFR>{FPabyBwVv5T7&E1>5CQhV~cUOS^_M)v`u@2)Yn@e0y&)` z$|sD9RJzlqlLyKba_Vu4K&v+agQlOAhkwu!5muQLe9xnw&7iA_Li#1G1oDhVrw(Z@`_*^uHx9R^AsQE zPRP-VkUSAIM63-6kPji=@Cll)(Y~dC$@EJgwUm=ooY!BcGBcBXrSzN@p$d_TB%wr#$$O6OS@%$9H{fmOJ+F}f<&Sp zzMn~4Ua@_L=9&~9q#)VG@kz_6@xB)CzSVt?q(=&%r14(IROZ~pWRb~IKkNi*FWk|Q z(@MiRg3UE724G%pZvefvvO}@}&EaUk*T`Kl^({Fe*S?u9K8aQ9@lsejSIo+~ngev- zV5R3hD9AvR8pOA56{uHjm9TBdknNKc5MiIa?OVhw@}ObuQ4YHPFkPo5(BxeWH!j2O zBM($-eObkN<+^21R@|qwW3(!%Ct~Ii`iXV7l3G68))I2&T302x=XJoT=9tO(or(CW z`$xI&mq2jooT*@~uWoiKyES%Ox_qi5E?%>gYFvq*R@{4-NV6+?=LXuY=NrXzNVle) z-8sla6*XNBYN9_*BaCY7{;GI7InMpLAmBQ23uMweBhrznAMKxX`=-Fft}Op^;MXk$)8?GV9UqWAlVTj*jj=CHQN9isFgb zfTnRtYKnudOc1Q)`SPzj&3dn)ol%oV4eMcN9qqkjFp;2AC*qkoe>zF6`WWxvB7hZ0 zbt|G}(Awc!`2iS)2+LRn1(!ETQxYDVa+Fa0_1BzYfSMTjw0W`unzf?o-EGhSrmo<8 z1#R$<>5%|&m*UWR-F^8n`YPukTG6-g9PvPMBlWh05^xHbV+c*blz$peO#P;0mwD?c zC)o=T)FkyDY(LG9O8G4ajwdaD%h?{rE6i*HZ4@Ev!G$@b^SqmC}AlG+U4*Ms(I2F)nojvp+gLHhsFHC zf8*wUqNsYgRs2Dpt%FaDYIdRZGEvXYBbMBEKTq@!#KWr~g%OxC0XRx{Ie` zvK&_Y1|_R>_tR=#UjZhkeB?Ow&DUw7611P*4r=`S9W}%f$~)MV2}14jzo95&`@k35 z#d-xu5#&V*>eVwxZ0J#fNma0Noz7!qXj#%p<&;l`70gn*_s1*3E6`hzl9I0lcI_XI|)_ftgNz--zczZ!r#5|;P z_>Wv=>e(HAm4x0^Zw5=LkwM$aLHcMQ)j8mAMzzx8(n;}6behmzODKRp^Yo`N)%ElT zj#K_Ro#QZs9w_nbNU9>vx$Vm^#_W`C^fRi0qhUkDa}%-9GXe9Je^yc-XkMP*H;d7R(wBUMQBoGpl<@_exTEE$jb1{Y$exfIfU&U_3VVv!kV&KSGss8}`yH?E zbSp}zShvSONwynaT^^;A(oaQU-PG&pX+{hc2&HR5u5k6|R|s3<$^3b=)(8nHv;5I* zH$kOvZhCh1s&gdWsp;j~`~8KP=iSZlvra`V2}K}5Qc{v5Y#6k3#VgjLutuTE5ml};a4TOYB>y!LN~*bhL0 zf)A~ZyYm@+^-Lq6aQnSTCXIn0MPxo3;lA^g4P2~LPVgVgJ(LLfy^rd=QZZA+Tq;VZ z_BcT**m9X)z}#elcyY@EnjKBXf`91&o@tCe)Z%v~$~$=@icYqS^=5S}>AGofl-156 zGV@TNoSt#YM67J|;j~v#SKD%RZ0Y^FQ*U$p;)gi@$f2$wwWOT@>xjZl$*rRBvQ%_^ z`<=tT$jU8EF{2EcI^45qJ~)C&*_B9ep-wX|88gf=D?_gTX;*)+rsZVzNy**>S`>@* zzOi~?2`1&NOUac%iF@9_29;s$; zmrHflWY+Mdf8JaeJoEw&X=D0Oe=0(dLO@?F`#ifZQWEYbNPEt38W32QNIGy=%d~&; zg<$&J4~@PEA?Lp^m*Vle%iK47z%#|>lZV&Qw)Km?S1hILj}oZ=Hc3bfue61u>iEsp zbg*Rm`7w%*hrGKo#=VmF)aX&gk&jwV`X|H-ek*4;Jdm~GeBHbIif!LCJF}=*Fxt|1 zNfSM~JV@}<@$^4G0@~y2sjXCFJA0LIHS=;4lcHbs%Eb_pM0|E$j#f}K!2S3Re_AH< zG!q4tvfg4>P|fq=Dl2j(Eck&{(y_ES+*P5<4F-|-s;eEQ{$=g-Fg#L@FP(7?s&qea z|55%`w760Tp)F#lb|9aO;e4&TOSxl8vES%@t6%DsJyKz2X|^63IY}g>*afNnX&V$6 z!hI^Nm|`{f<#82x-;)9O`?)h~h<5fR;hX2&DfPVb;>7eS)X*9qh7P&J2hVQ~alJ>Nr-MJr><$%QW359XOMw zW_;*bspjYAb(cJ&`hJ2Wri$_TUYMSrBHcLG>Mo)aC+f=?(p+W6Q82xN*s9ZbQaBDYEYgC}2>yOy1$xnMlj~~(=W`~qv zQqoNA{R4~|)(BzS93U%cA~{FY?3A@Xq}km&1{ zKb%xl9v-%i`YI{`{7!N+8Rv*fLp9-Fza9}%s20K%Hg1nGdOFimZSAx-u4hHJl zzs)_eqzgPKRLX~gu?DQTSDQi|LqFbh_&Yn7LXKO;d)(1~y6c_syI*(rd|F0U`%zul zq<*Mjbg*v04iP>6DNxy#Q_emkQpTQNKefC-f8ARh@NoSX0JGH^xgp-K$SVyHpyvdW zG*~M?!w7kZ_7+nf!28lP7SIs10_t#e8$u64G(q|f#C&SmtOa++RM z9Erp9*RI0(nfdt`>w!4`nTJ^#^KfC)51|F?-&6Cgi>;+g88^mqdjXoNLTQ)Zf$wmJ z*VK!2gM#37;LvH^Z%b)zinCXr@m{KA(`4Yz8&{}O<4I}$J!*+OF4|_e%`q!-^qggj z{i`200keE0@1v<^dVZp^J$qW>HIzfln;iKG(ID@dZ)4%)q+jM6`atKOPZysI$%)<6 zI;Q$mdaB;HeH=1-T}R;cWKTm_w^i;$8FddkH#NAS{@;tvJZ)&n!eR6x%n@TCK)~8C ze`M`*LndVZ6LSD}D!d&uo2DE0Ys(yKU=NS++S;YG#l?`fJA0_xl*}2WI&_ zpeU~<5Ii-|8_yTI%@~%6G4Og2c%iOD7uz=r^ZtHKYVW2>wpm6PfNtQ-M;b?d!cNf~ zcc>+AFp~x|&o3~THI@4VogHOhHOHO1nZ9Hz8BujhA-J1gh<564++TdtxED(hMLO$% ziy>7B_ue)rm^?Kn-dn6G?7l-7w~?4CE;C#RU^k6&rz?2y+P=TY*4k|ON##U#sfjT% z&q}{V7HrTW942>2Shpci^LHLZ8h7k1H6S=1SjG+uN#+Xc+;pZ`+54W7{~uhRtE-Yp zApRM$aq5TBChTkDkm-QBqMx-c6!wZRX7vBKXNhB=4(;+Jn!MR^S6YLWGVCGExK7go ze0X?K1(J=sK0Uy^>|&40F}h>b%*K)by(uPj5x%(3eIw$nUPd3It<{j`cVeDS4r215 zd|+aZyU``}#i%YwxXKzjX*pURC$xDCD35j#%u9F?rO9=`dy%$G99nX1J>r6z4>ca1 zR!0=N+8VqHt@|EqpXeJZ0552VuLwLWDYL8h2E&dIw4NsUW`AlSuT2nK^B?MIlE1*l zzvMkl^nFlyAme&3O&=0K62{T8{0Z>pHWy3X4qSXPWeRj_HMsxUn!7=Q1^J*|Jb~57 z0Fyf($O1w3svg$1!%)+cN$pj8n}7EYCd^ULTT3AgXL$!0F+$q4`+T` zh?@A2GbVP+|*x$#4vsXL`qk>JyP>j!*dt|zxg{ian zOfgRc{aXpSQnAXjY5a)TaCtD+y{^z*5X@4^Jn-wSu zlctM30EHh3Z$hukC5N%^`4A@s{f!w5b_0HnBNRiVU_ZmNu>zfIFqB_Yp%*9a7!?YO z`WT*xV`Y2?%7UV%EMrh<{%1QK*gUT8RHlOf{uhMcDZ{f(ojuR#O-3kVs9%vYSnez| z9!4$ayZ4iD@g2J`!p(j+1p#+jIuu<-5Z>29(%jcV>Q@E(IbGD6j2d7;`OVJDd}BMu zO}KSdmm&2Q=xH*PkB&AzHZLS(Vbh5>wD4=jn-z88 zR9VWKb6W$-<>BgL3xNInAbKano2rdwHImgJyMA~@)4SMdCYc0mQCu#+FG-P(iCM8% zROUqN1v-=pJ@BG*okA7p7uWH=jB~LwCYOBmpybX@!=yEfpwn9H&GPVH>{LC zB9bc+HIyg`T-zZ$ax|iGc3XJK&J7qp9)h+!3Iwa)@MxI6xqf`0J-8uOwT+ydq>rR&47L0h7H6&*-@Nyj?wy0oeLn6U_+WHwmt{Q!DS+^t zB8c3p$@9vA&#_zH>xa`}{mJmt|Jaay1o-}6UQ(kJ6NhCkg8uba=9>lXsQ1AnGL$fS zC+b?K+5&r zL{%bYyUUKXv~*O%N1s*h++0eHE9Vn&F5?9*`5!ZV78+hBgY^G(JO;V6Nm1bQs8Ys;pUEls&e5L;JlpZi1^f|HfCt&>L5}r+S*cd+24H zL+`7Pu!K03$JS>EASL~zbL3)@7%Y$hHFjxjNPdYEvahj!%bhNsA()^wDt07_BS%7XXy1bzp_*a@laM-UXh@^^#o#uXujzI#!=YV zmr6VqGhGI}EYg|&KVXS;@;lNayU!w_$Y%4JAkW2CIlugKZhF&S^&5`Zh{HaU$ z!p<`%Kl?1}b1X~L`J}okm&o?}=!ypR9qckGUy=nXcvjE;$)^9Re+oG1diV9U9v4sQ zzgK*7^`U)wPTNmwvc{znS|6-k|GE3z#x3r_m?etMz0!6z3jFC3vo-9D6Dtc-ZA%L{ zjGVd`cezRu=kraSG~x73MO#-h{HQ9jY!J8G-ArhM>-!n%YlN{?!@qp5v;BBCd7CXI z^w9gaNIG8lfgQglVv%wT{G~CbrmVB6oue<-s09p9=aSbQu9N<~NpU`7E@Pv^uC)eL z%X{ha@9_GK(jeRAhTC|=RjXerce(EJywq|UoU_VoZ<^0_KshW$^LM>7RgRx8w=Z|@ z@7I@yWj5`k-EUd$rE$(Jem}JV7$oJ>sab{s&&fEK-mQ;(_|tx?_U*PDS!RnjFIp~K zh`_~J{ngG=qBNK8FdhW?c5syeR@UX;y_tI=E8vo8s^Z?YQ)}SK?<$3`u8Jw8rgpZB z-F?&CQH_050cpF})2GVa+Izd(YJ7%fto!}t>lKXa1kCSHlg?yld0`2F7sv)&Y7vV4 zG2UNBqxdZG0dy#0vFup!mh#H}XZbMn`FOe0jk;3vXW^D4FM%+E<$SxPo)6q#KN3Z0 z1ruKQf(?;3Eggto=rXil;Aa~jxPRMR!jZmI%=M4cw7rm$2_`&A?$Z0E5^6tEvpxzd z`0X6-c)$%S1_KKN5xa>2z2lP@VIOVm|7z@G4Bw$l1Ue@GVFbexKF%)cN6-XC*ZC!k zp^VKAgFr*7tZ~ZdWu|Jwre@(A%q%xUre;F}re==!*j@vDRFMteQ!?Di9Kt|D6S{E; z`#O21%E3So#|D=8Qo;^u!*^}g4a-G0VZR;Jo7mc82nprj1QYcy(G|`;L#k>1%IH?1 zRDsdqgyv+4C|(jc5i`tfsI$x{61jxpqsS-{39Gn`$Ab!3rlZl^NUh+78Q%{03Gl{y z=JTu-_L!;X3r{rU8%tCc$IqWaPgUJ~>~C+76fyRg|B_9|0hbcM&h($?ssy&~V?ypY zroBs72_y=c2x2Zm%nvP*KmOvJQrt)zPF|ac^!BV%_aSYx>9c=X>ZR3*tSkA*ELjSK zk#eRICo&Sgh(vWx(Se0&HZ{==nH|B2NByUiM97KDkI%1ncP~!XE$-FJL?9=<~Z}_QQXF4JYXo)dHy=mobuo;F3n*jFyQ^Mz?%0GOkGoNZBcs2Knpoyh?y*T zIs&UJ@*wHXj5=zt6=E`CBxU7`KZ%P6qgMO=sUp;k`d>)W9RFwh^)bPRp1)!6xJM_( zRa$)|siC0#GG|Xl&&%7Ch=aS#HB9pES4-fXE)*&`M;pO81TIK63Eo(y(%6Qnj9=Nv zqv%7%JqadLhS#fcBEPT8wMN~s{LR=P3F8;5uCA9WIG%D;#%D`=Qo_r=ynKsJ{-^eK zbYA;=KW&;gKN8^kU9l}j5%p&n%nWP^*1o-*a%iCKDcF%s#J#3=l#vYV7B2T4R@JfSJnfYLfOK~!x0_8C1XI) zdBRV?KM;H8kSo$`o@05h4J72K9Zui1wk)~s%Vi)Fc!8ah(MrAk}Dt)WVPJ>=~}^W?#v%^pzgmE#A0K zTD%&|%`DTOE59ly8QW3f$!|MO2QFkVOqvs#Ls?B(7*xayPkdp3x+~n}vWo^oh zU$3UwOL<)N<|=sEIUHrFXdX%9?s02d?E0!vhK5QEKv^*`?i8)LvZSU?5923}3i{MY zEVN>D>y4lJ3AFkcoLI6#kx+f=3=mQJrlSiB`C)7HT0WE4*bU@~lYgeCxzJ;zsm?>7 z`g$q^^-BoaQ$oO&9EOI(J3J4SnBk6&{NM-8ymvtzb!B6Ip(h+(Ta2<>c#D~`uwLK^ z3Xe=4s<-(HWq-9-PMZ90i1p+tAj1*&a0(5zs_ucO~ zVIKC`fY|9e>*|hW zjB}_!bJpF@+evi;>_1W_zlM}OUdAVW+ErS}?rZ!kCOMY)+IX5bVy0ZkJtm;qF zuOFWn_jYq-8lbFBi}bLy(!{}sg6-u!2(fRx@*Mizc0#ZSSVXVfFMTd}rNK3M+c);$dG9#ClUzlQ{5sv(r8#{~ zy&b6TDt>UdhzdvG0N{MAKQ3GRU2Xv`2Bib=liSz$7R}TTKf3f;FCkSe$IHr|UOC%| zYwA=L{cRbLMy3&4*rcL4(TAmlE+R}haQrLO(qP{P=h`y#Gn|+GO;oht(!?Nq%fTT_*5zEq6F)li8t}}Ow<5g zJ|Q3v=Yz@?($IMeD&aaND_A1pU&6)CAu^f0u_lsZ^HB3W0(eYs7%ot!CSem89D-Oo z@?7tQ#S1Vabc%cwb=jL)VIc_@6WSJI`UvPBoy{JZENa4UE7{i%l5{4)OO^H@y64x= zRHA)mu;%t@Uwm+p(=OaUn9us3h?Agi(?^URdj5)G@DY`(DYQwxv^5amobqI*>g)0k z2TKf)VZGkV^5tWpsS%EQ@e>+WQ#BVS^51q?thB2vaVVm810Ro^zas|W1rUI$U3hM=z(HIkzi#O(1y_;!ZU>#Pdy!b=bC0Djvj z!`k2MjmtUn6qJCbv}MQ_uIyg^$XKuHjUIEjeV2;1fVn zJ5wn^FhHW>-{745B&Ef;!Y#vuX&gc(ArsFbg@QU4B_etFqOjh`chA8t*m}nngESXw zcu?WCC-+W;!MDn}BuB&f{^=GYga03Dqo+A|en>sne*u-Z`QI|fa0*Q_QA}T?J3rZw zwu-Mi3?E~cy%P`UUO?oRGs=?mCI>smW3`J!5(YXHYDMtRh&Tu3;KGakszFH@^4&i|w@bSIA#}X|2pt}o z6_+;jp>f?mLbrtnRGwHdJ#|#3T^ga-LK{Y~y{-m-LvwmGM-2tZQBQNVv>6hC)J9eYz~Z5>gD*`+0r{u) zC~bCLl8hGqtu6P5Gg2eVCnf`OTnQ4TlPLQcf8-m&Oe$XL?~iUj@BaQ;g4)(?BDkKu z$_a2wz!x^cYC9evo`?avG)AK#79X*FxPowv41CJ=KWAjFQAiB;R!}-+-V5wryR5Ue ze-XZ_q4kr2Us}krL5+VVnPOAR2&HkW6NGgt5>V8(3}2~#EycdG9Jc`vmk2;%WY;%a z5nWz9xgw{?2kgkVF3sQUgX;Ir;DMF;=jbd*@Pqr+VzZUoEiKxs#1CJzuwQ#~vig5FK7C)Zd!iY{{G8t;F3wZ1dFUkucpe z>tcGh#8Q;P6K%RBsc8o^)E5>d~qq$_F-5wRqnTJ0Id_+ zMVcWO2xRUI?1~Jd+cEVZ#V!vP{Fr!x3VU+`p4(ry1U|`_CMxL0`Yi3Hk=uFHqN3(u zWO4c!@#p#&U&!A%$1T*S>kO^=c)|F~{8_z)Y4SpcmO>88UYKF>QG@3<+I$5@h0J5x zFmx}A%V?-X8P>&}G}(ek08eq)G>Cs@X9|A)KT#!7-XZ88^ZXL|F<3E>yLi5lU|{1- zwJ|P%?b*^1%f2K}iN3!QJIwTv2Hf=D+3+^yqC@^<(2_`Av3~OFxHpx9?%OCWN(B$+kHOo^_MAgKZgab8KwdztzzH0u8A9X5>biu< zierXmGg#~=^>V;K?Lhh~zpNpJn`yZnEB>Kz>$4IWz+4K3m4SoDPvqpN$LNHf{h%97^graNOu*P*@L8Z9?1x;k^%E>sMt z-`N#Is^pE;MYSo3h-KBunkfx+Q$w;gG~eZSLw-kNd6tfBUG}Oe9Ln$rQAc>-ElY{e zU|jt`Q&P-_g(#a>zlaWE4#pVDLw;8Z0-zo;tNr;{PDUX_5z-SVEa4JLp3Dbt8BRk! zu~1NJA`~_l>BH?$jWeJ$q?IR&6yS+Xs4t;}sa_DY#gSf(eozHL`)QS3W*e~NOzko6 z>4XgzsWO;HD~PGukH-@19fVa1iCY+)hcNRUQk^EsdfdBF2uaU@S;L=$pKPW#53o=s zBYU9Aoh%jSy-!<7=LnNJp;Sv61b?zi-oqhu%aq<^OCYDc{KrmdS8wAptvp{4GR^4p zY`nA&XjK`tVUVk)(qD#eB8J#s_?v`K81Ae@0W)+(^wwZ{oiP(qB@O~Jf3khFh$&T% z*1|OHn2{@j9X8ywXxj*vqZn%(3?PP|!ivhD#FIG}FGykVx&xghU?0IQU1*}?Dg|Q# zb1xX4lR{bh+pLLmius`TkZnet!QzN@pS3U}jVXpN0$JgB7l;2VpsYD@0I^!Xxw$C1|lwYGyf~-h&dW=sugzCt5PjsanJbvPm*Zd1~I-A zh9|SvFXoylCaiDPg;C*gAw^n;T5j=5SGX8oGNlY;NH26kn8^)V;p5Do2*J#`{#Ds6`a!Ppv zuLEbApbDw0@A_&G+X%XvX$%T<_c^!ElM0e>j!hkjP)^|GfdkmV%?$(?$`e+0G0vy- zF7M*w+!Ymgb9&WswP)5b4#0uIhbNnTfE%}_tg)^|9KFaK<6p^3=_)r1;!M)IY|Y}3 z@6HZ6)3`CXKhF0w%g@tFuW2<*PC9z3l^3gB1`21LV?2he^aLSNr<8(~geF8$DrksX zdSLE&Dl_dQ7nu@j7rOw9V;Xxi=>6Zwom@4uV-iX?3`N{BU=;RecGzS$^%ST}wQ15K z#7IkV;u5ELSQ2q)z7GU0?l`vURaTpz``=Tsv>N;n#LncIaECk_viA5Rvzgv$At zUR4HxFz8I68X};2>Boo8v|^O-+)*K7z(K;;o=RjNscI67Zs(ND1ocG_JAd7WmO6~I zD3CBX5pQS$;fuadUJs1@0_;eyWWA%&xWz_`-wmwFA$cyAN@l7lW@StB(^@CH1H~{<3?G`>?sp`83dDA-IiiA>k8z%66&UT-BgyvYcPt%Yl(roIR*)-dZa-5y?%EEW zv!+S~oZ)jOpF|nEIkB!no$N<5oB?FqP((fpBZ)IvFL)BE%!{Qjl$p=MBM#ES#=x?q4nz*=iUir;E!*pP2f&|*Kffbr*NL_!seNlR|VK<8a z$aBPvQk}>$Fv5uEB(nn^30L;9Vao;8(@2y=n8#6GgQQ8%c?cmdV?RG_c;Y`hUhO%% z-MzZ{d7YovcVn)Pb@{%wKW*ota!p`=R0!+__Ul%p#wpHS`^3FtluJQdiPaokzp{nR zukV5TRP8zB88(JZ_@gqt8+o!61q?<3h5$oDx>Ti=YD&W%x{)3SeLdya+yZybrU+Po zYn?!=R?hW^vY&NIjulvXK)bM6J2FM1sK11)zrQs-UPjvb&|F3i0mZl%ldovAsD`^Z zJ5(NxTAn7U>=a&PD!C!HajB>xiM6mKSZmXRhOEZzU!;%{3+#W`24$+Gns_f&ciuKSGKD1{7z2b~U zMn!A~bT*(*M76LB(Mw{Coh=8GNJkOXtdfP<(-V^ukK>QZ&=;=18SsyZgcs2&q@?4@ z)CWUcAoBZY9>IUbuU->YLW znXiNc0cKO(2>l+AJUSo~=4UdP2UTPqVUuI|%r^J;9h}79Ymm2?+I&>qKX^!tzQlz` zM^0TJ$(GMBk*HY@%TcM_Au&HtmdIS`BXeezZ6t_`78!Dp?^$j#*GrH5tX$>6GuM~n zOtNBi!+Ee%@E!?k#z_G%zoKM=v(Lh zxze0KWDDwvGLJl9&D^>ro)Qv?pxwAyDx0~nN2f>F<~12I1fRtA_}IvJ8~(^Ypx1uo zPhh{6a4FgCsu*Gk9<`d)=G^2Cn%G3r{rY=nY{FPQ=w%GU#M#xEJ+2XG!0&an*9x%;?mL2cG|udteU&79#1vYV73)B)T?9!tndQ(bYFe^09Q{}wtlTzx$8de zp^hH4Z%#zpzR&K=?<14do)1j1ubzHx-mMRzpV;1Bf`Y0*AdI`9VW$_jkv+ZI1ovfA zXHU0GQY-#Vl`$eJ>7@JkBTicmnAI-+9LBMCIXlF69zlcb%J-cCy!==$Qh`sy<&ZJ- zxeuC%Fqi;~B+Kvz%+fIMb(B{~2^QtP@A~sCVUT3|G$$(zm&(nDBnI0YoPtW4WF;n?a#oql$k~oKN;fkTA1{TNQ58LK>-eIBOI{{U}gkA=CC9XDC_Vq?RvVKX>So zkNd^<;bZ_!>dOB1*6f?|pNMlT$~2!1nJx!w$APs_S_bqo6Okku9u@J6bKpa%*+QdF z*%ly@u6Dkr=vOy|s$3Se{TEf42h+twLF(p%g2CzC-D^WZfWQcYeYb5sgKlpPf4HwH zlFIKm`jwKFuhJ*Ns34lrZpGv(Ae}3M_QBzam zn!xGwp7sa5Fr0o*Nprf`Gei7Y7ZYK6gQ==}c z9!_yrJ028kgnGC%yKFbB-5$O=*q3Bnds|sRP9nV*PPMm{ZH~0F%b*)<9@=v0C;)5& z^IeCXiAM!P+*y7&9Ir~PgmaOrbA*eY5~mG*Y5iy@A!>m<7Edv|)Is25%O9^)KWc`MFkv@ii(;*uFRKL{oF9R?J^d?q12cR*_M7Dbq~ zV+HDDqd4pIOTNU1ZO1Rjay-}#1H?JtC9h4_X14V(hUgNM7gIY+HgnJrangVVj}!pz zF8iP(KMW4-=~(|x?14-J+zMenPC}tzxSbCP;g}~#@<|GKgXI9{F3L&_! z62jOrDxk*R3#)jc-I4e&!1X5x%R~H?{Qz}o(gE9TK=%*PI94M#4Nvceu=~;VWwRyK z5}2iYFxa`N;lzk>?u8QEV1ku{wD^L6>)JZ~oSyiUX=?=tYd4l_(e)=%#H^Q1#nZd) zdV4*1%o?4;zLQS1FT%6OI1Jq)8E!(99-J}TjEg0X>Xxlbo|z|;r5!;qkxTyP&eYW? z1DBwvwZd^p2jE*>r~BG`h#Ybb6(`KA;3FCG73F6lL0J#MZ#S!;A-tc2R8-F3Ok%Yx zcGKQfKjfR*qDk-j=Z3O@2PEgCGNd#oW<2z?2YEak5mOFM4i;t(4h~j!E>mV^GiGik zCN?uRZZH5!<4kfiN&ogd;wv{c_}GGt6$-#noyESKTE-KthfkY; z3pM7_=pDfhP-j9dH({@cWv`)_>!pewT+;e_Yyv;m_k$Ew1Bv5O6vY6Ha&PaJus(+)xD=GJ#w{% z_wG;b0-TR2(Fq{xl}TQ%-@O^}RXa>^7}Aj#5mogX=`6hm{~E`O3K0d3eOi7xBQ+}G zct6va&10aS(|y!2)2Ct>SC7187Lt>o=SJX_M=uJGDa}+OQhI44mT2G-X`qPEW%NfT z2*3N=^#Lecx_vJe2h6P4Uqs|M%9UAaGDze$>Y2H3LILP@8U2#U*#Ecf47Zb^3q2|2 zFjJb1v7hebD07&tdgx=TqnE*3RWG|ulPi&GUtD=|=Er?~)|`^M^a4PO1+;u{dg6PF z1%-T3dR=Z+hIpZ-612sZZFZ0gGu-~Bub%(nulZY2X3H4fdV_Oseg+hm+q&blspH00 zIk`vac}75K9O|`MqK(GHOiyKt_Fph8=PYe;Rl4Df+b9igXR2n@qn+sd@mLw--YCNS zfj~qb#0tgU`1lH27zOd(Id|3M>hAj2wUkzhGzzMcEz0?dQY&Iq9B;`sq;03K_8|Qh zwEHc4KL2O2g6UP9s~@Oh9eq`cQqy8Zi@x&*U3LJPDS?|Mj%hZm!-fHN-5)yPuJ1`U zuKc=@MImpMc5Ibmp%pIj0`hnXlldM+HnSRL&IdGe9y1DLtbObuY^UOwO|CIr_lTsl z=j{^fK9UJ5==10wd0Xgu&M{Rgbwg+8dWGf5q$>Ewnfz?};<4mU>(rYm^A8doWt+O> zc9{SNTj@kzm3eM;6WMw@z!BbYbMc&EcVm}>O=Zg#UK-bAriw+52e_@}kM~R2?F`BB ze17|!z{h%vEx+kMck81yZxb_5X&;1n#h=#SdgGqEdmpRo!ZZKbJ^R!RoxhKz4F$5;>o(~Hf;Xv z??ATp`87GJ=Q8N_>)~_Wp2@eDhIM(Q$(s}*@m3qe=^Hdg7FR)T5muoN9V~s9WDDfS zbWi4P*Pqm{MwhrDcYmBRNwylfb~0Hqjd##IRXUo6?Y$!pVXmw$6M=1S@UK)?+LwT~ zTjy8qr^&6`=SlW`tHE$it{LB*^?>q4+M#B&BaZ_pXU&sXe&zWK(nsVyBL;gT?}!c* z&P~jfksB6+{Ke2mE&s3#19AtD$VxFcWgDAR#_!7d)Y#__*e%Lab;f8G2XQ*553)Ux7wiITF zk0V6xe*P2ml8K-=v%7`0d9YU8s;OHRY+$S+mKVPcc&60 zE7#`a&2M}|Hz)#o>E763Pr+s5Ns2??7T|RY1keO_ZQ+>ku(n7`#)qPu0N)q}X61l| zRgbuOQOAz_(~QGjo;XR$KqkX@H_Ic!X?@qEL)p5s7)5145U-qJ!mHtDR?-u<{qDk# zm;~D3ik-~KQ&fHGC>obiO%L7tgdgtWL>Rj5s}~A(g8H9WM(c!u*h7;Z+o!Clu1SGv zc1Wx5j$Qa}=%5gz3W^BfNUuS&MWx z;3s#SH0}5av0qs3*7oVSw~vG?xy(TF$wmb5J-T064)P%1zy|O{D+Ig-O&_OJDV`uW z(I}Yy9(BzQV0FTrme_&++rP*aW@Q>(8bRsNqc)S1}#jo<@&?nsrYVBEd z+~_unz8V}35DFKno4JH39DYz6#nQp;0;*dI#fDgRaHS*55e5&2+p3N!-puT@1@u^d z(=XbLfDA6YTfo_G+Kd65B~t+Is4{lU6P{}Iir9&NTUb&*_-yY?@cM#>Vc@alQ@s-j zL+?P#m-!7Ay;xdD@~Yn17L0il#Hv0$y*NB3B+f00m1y0XPtC>xXM?9&;k=HNn41iA zgZ!SK?zaS1;>5p3s85E}n#pn@}C$nwKmF zn^txZp_2#A?+6_cz>SYGw3e?HfY7)HUE$XiLm9`L^_6!q_CXpgymAw_=)p|vDCPwi zJd=-~g-`F?5eqoHo1P~DueDeun@afM+e`#u+fw+nYdp_*{krSRnazuB+{10RjqHL( z^jc>06#%IIH1~_iz)9(PTw`G4{3tM9tk2lh)0w2G= z(56|+FdfB$@yN0DLA%(yw(y<{CP&3b)&Y9G`O#i#@}?(P{(b*U bLm5n$wyuFk2+z&N%*g^vPA;w}0sDUd`a)!}
  • Combine two tiny tables.