From 65036d1d91bff2ae393e1e49cc654d65761ddef2 Mon Sep 17 00:00:00 2001 From: Stephan Sahm Date: Fri, 24 Nov 2023 20:06:11 +0000 Subject: [PATCH] Python and R This only works with Python and R support --- notebooks/1 welcome read this first/R.R | 1116 ++++++++ .../julia.jl} | 236 +- notebooks/1 welcome read this first/python.py | 878 ++++++ .../{languages/R.jl => 2 dashboards/R.R} | 645 +++-- .../{languages => 2 dashboards}/julia.jl | 460 ++-- notebooks/2 dashboards/python.py | 779 ++++++ .../{languages => 2 dashboards}/r_figure.html | 6 +- .../{languages => 2 dashboards}/r_figure.png | Bin notebooks/3 streams/R.R | 1117 ++++++++ .../-introduction-.jl => 3 streams/julia.jl} | 697 +++-- notebooks/3 streams/python.py | 832 ++++++ notebooks/languages/py_figure.html | 14 - notebooks/languages/py_figure.png | Bin 31602 -> 0 bytes notebooks/languages/python.jl | 952 ------- notebooks/new/Cute notes.R | 0 notebooks/new/Exciting program.R | 0 notebooks/new/Fun report.R | 0 notebooks/new/Important notes.R | 0 notebooks/new/Novel notes.jl | 0 notebooks/new/Revolutionary computation.R | 0 notebooks/new/Surprising experiment.R | 0 notebooks/new/Tiny notes.R | 0 notebooks/new/Wonderful story.R | 0 notebooks/streams/finance-example.jl | 2406 ----------------- 24 files changed, 5717 insertions(+), 4421 deletions(-) create mode 100644 notebooks/1 welcome read this first/R.R rename notebooks/{-welcome-read-this-first-.jl => 1 welcome read this first/julia.jl} (93%) create mode 100644 notebooks/1 welcome read this first/python.py rename notebooks/{languages/R.jl => 2 dashboards/R.R} (61%) rename notebooks/{languages => 2 dashboards}/julia.jl (82%) create mode 100644 notebooks/2 dashboards/python.py rename notebooks/{languages => 2 dashboards}/r_figure.html (99%) rename notebooks/{languages => 2 dashboards}/r_figure.png (100%) create mode 100644 notebooks/3 streams/R.R rename notebooks/{streams/-introduction-.jl => 3 streams/julia.jl} (70%) create mode 100644 notebooks/3 streams/python.py delete mode 100644 notebooks/languages/py_figure.html delete mode 100644 notebooks/languages/py_figure.png delete mode 100644 notebooks/languages/python.jl create mode 100644 notebooks/new/Cute notes.R create mode 100644 notebooks/new/Exciting program.R create mode 100644 notebooks/new/Fun report.R create mode 100644 notebooks/new/Important notes.R create mode 100644 notebooks/new/Novel notes.jl create mode 100644 notebooks/new/Revolutionary computation.R create mode 100644 notebooks/new/Surprising experiment.R create mode 100644 notebooks/new/Tiny notes.R create mode 100644 notebooks/new/Wonderful story.R delete mode 100644 notebooks/streams/finance-example.jl diff --git a/notebooks/1 welcome read this first/R.R b/notebooks/1 welcome read this first/R.R new file mode 100644 index 00000000..72a2d8bc --- /dev/null +++ b/notebooks/1 welcome read this first/R.R @@ -0,0 +1,1116 @@ +### A Pluto.jl notebook ### +# v0.19.28 +# Welcome to your R reactive notebook. +library(JuliaCall) +julia_setup(installJulia=TRUE) + + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html <- julia_eval('format_html(ans) = repr("text/html", ans)') +HTML <- function(str) julia_call('HTML', str) +julia_eval('begin + import CommonMark + const md_parser = CommonMark.Parser() + CommonMark.enable!(md_parser, CommonMark.DollarMathRule()) + CommonMark.enable!(md_parser, CommonMark.TableRule()) +end') +MD <- function(str) julia_call('md_parser', str) + + +# This Pluto notebook uses `bind(xyz, ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +julia_eval('begin + import RCall + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + RCall.Const.GlobalEnv[name] = initial_value + ui + end +end') +bind <- function(var, ui) julia_call("bind", sys.call()[[2]], ui) + +# ╔═╡ 99d9441f-0f66-496e-a5ab-6fe0ea73c065 +library(JuliaCall) +julia_setup(installJulia=TRUE) + +# JuliaCall has a bug with throwing errors. +# See https://github.com/Non-Contradiction/JuliaCall/issues/216 +.jcall <- julia_eval("(f, args...; kwargs...) -> f(args...; kwargs...)") +jcall <- function(...){ + obj <- .jcall(...) + if (inherits(obj, 'simpleError') || inherits(obj, "try-error")) stop(obj) + obj +} + +JolinPluto <- julia_eval("using JolinPluto; JolinPluto") + +# ╔═╡ 4e0b77fa-b3df-4bcc-8508-078a3752ddbc +PlutoUI <- julia_eval("using PlutoUI; PlutoUI") + +# ╔═╡ 80f6f9e2-08db-49ca-818b-ff2eff314e35 +JWTs <- julia_eval("using JWTs; JWTs") + +# ╔═╡ 14cd96d2-03da-45c5-b0e8-b2b16afb9e8f +MD(" +# Welcome to Reactive Notebooks + +This is a [Pluto.jl](https://github.com/fonsp/Pluto.jl) notebook, pimped up to be ready to use for production. + +In this Welcome you get to know the basics to get started. +") + +# ╔═╡ 254019ea-82ce-11ee-113f-a10cb102066f +MD(" +## What is this? +A Pluto reactive notebook is divided into **cells** whose output is rendered to your browser for lovely interactivity and visualizations. +") + +# ╔═╡ b02953c3-f85a-4de8-b1be-6d0b6e46d1f6 +MD(" +The simplest example is this very cell (or the above): They are markdown strings which get printed as highlighted text. + +In **development environments** the following controls exist. + +> 👉 👁 The input of this cell is hidden. You can (un)hide it by clicking on the 👁 symbol right left to the cell (it will appear if you hover over the respective cell) + +> 👉 ➕ You can create new cells by clicking on the ➕ sign above or below of an existing cell (left). In the cell you can press `CTRL + M` to turn it into a Markdown cell. + +> 👉 **DELETE** To remove a cell, just delete its content and press DELETE once more. The cell will be gone. + +> 👉 **RUN** To actually run cells, either press `SHIFT + ENTER`, which will save and run the current cell, or save and run the entire file with `CTRL + S`. (The default language is Julia, but we can also use Python or R as you can see in the other example notebooks.) + +That are the basics, so lets see what we can do here. +") + +# ╔═╡ 9a05f443-1a30-4864-a724-1fd9b8eff882 +MD(" +Jolin Cloud comes with a couple of helper functionalities in its package [`JolinPluto`](https://github.com/jolin-io/JolinPluto.jl). You are going to love them! + +The first is `JolinPluto$output_below()`. It will enable that the cell's output comes below the cell's input. + +> BUT WAIT, you are saying, THE OUTPUT IS ALREADY BELOW. Right 🙂, that is because `output_below()` is already activated - try to delete the below cell. + +Pluto's default is actually the oppositie, output ABOVE input, which for many, including myself, is very unintuitive. +") + +# ╔═╡ 7f0e4061-454d-4de5-877b-6aecd7f14081 +jcall(JolinPluto$output_below) + +# ╔═╡ 16db2104-fc77-4be1-b61a-9504a68ec44d +MD(" +The next line is creating a table of contents. Try to remove it. *(Removing is not possible in the prod environment)* +") + +# ╔═╡ 33131f9d-56a9-4a6e-9669-ddc977fabede +jcall(PlutoUI$TableOfContents) # Julia Objects are not converted to R functions + +# ╔═╡ e93ebb0c-e5be-4bb3-a53a-14e4fe3ee43c +MD(" +## Interactivity! Reactivity 🙂 + +So far you would be better of using Jupyter Notebooks, but wait, someone said this is **reactive**. + +Indeed 😎. +") + +# ╔═╡ ac221e0a-8539-456b-8d4c-6c0f8063626f +MD(" +[`PlutoUI`](https://github.com/JuliaPluto/PlutoUI.jl) gives you access to a couple of interactivity helpers. You probably already love its `TableOfContents()`. +") + +# ╔═╡ 81e1f417-84b2-439d-9244-57bff6ff85a5 +bind(number, jcall(PlutoUI$Slider, 1:10)) + +# ╔═╡ 0936d6c5-407e-4dba-9b20-342eb5a53ea1 +bind(icon, jcall(PlutoUI$Select, c("🤔", "🙂", "❤️"))) + +# ╔═╡ 70caa3f7-7034-4ff6-b64d-785d36472a89 +number + +# ╔═╡ a0c0ce4e-a05d-4893-b267-0c0cbfb12002 +strrep(icon, number) + +# ╔═╡ 0fea7069-41c4-4c18-a9dd-49bc8d978b53 +MD(" +Welcome. I hope you played a little with the input widgets above. + +> 👉 `bind` makes a variable reactive to interactive input elements (consisting of HTML, CSS and JavaScript, and e.g. defined by helpers like `PlutoUI$Slider`) + +> 👉 🔄 (REACTIVITY) when changing anything in this reactive notebook, everything else which explicitly depends on it will be reevaluated. This enables interactivity 📊. Your notebook is always up to date. + +Now you can create your first dashboards. +") + +# ╔═╡ e3155af3-b875-4938-870a-474d48f81a84 +MD(" +## Git integration + +Jolin.io Cloud comes with rich version control integration via git and github. + +### Update Requests + +On the overview page (the webpage where all notebooks are listed) you find a section **Update Production**. There you can add a title and description and click **request update**. +") + +# ╔═╡ 563ddf70-384c-4571-8f68-70c6fc250458 +HTML("") + +# ╔═╡ 1926f2ba-5021-4c1c-af30-ea928cea94d2 +MD(" +Clicking **request update** will open a pullrequest including all the current changes. + +If you delete your environment before requesting an update, the current state is still stored inside your github and will be restored when the environment is recreated. Outputs are never stored, which simplifies security concerns. +") + +# ╔═╡ de2375c7-bc80-452a-96e7-3b57d062c17c +MD(" +### Automatic tests +After requesting an update via the Git integration, automatic tests are run for you inside the pull-request (using GitHub Actions with similar token authentication as seen in the next Authentication sections). + +In a test run, no interactivity/reactivity takes place. Instead, default values are used. +") + +# ╔═╡ 910404e5-dd14-4f0b-97eb-d9cfac2b015a +jcall(PlutoUI$Slider, 1:10)$default + +# ╔═╡ a15c23d1-357b-4fd0-b6c8-aa293848e7b6 +MD(' +If you want to access different data dependening on whether your code is run on `dev` / `test` / `prod` you can use a simple if-else on `Sys.getenv("JOLIN_ENVIRONMENT")`: +') + +# ╔═╡ 9c54182e-7c90-4d3a-8100-b2c3500d8d0a +mydata <- if (Sys.getenv("JOLIN_ENVIRONMENT") == "test"){ + "testdata" +} else if (Sys.getenv("JOLIN_ENVIRONMENT") == "prod"){ + "proddata" +} else { + "devdata" +} + +# ╔═╡ bc0437df-1c07-4c6d-9453-eb6b14d068c3 +MD(" +## Cloud Integration + +In Jolin Cloud you can easily integrate your custom cloud or internal infrastructure. + +### Authentication for AWS, Azure, Google Cloud, HashiCrop and others + +How can you authorize this notebook against your Database or Cloud? + +Follow state-of-the-art best practices and do it **token-based** 💳. +") + +# ╔═╡ 2f2845d5-38ce-49cb-8b9b-100fbe7a9e5a +audience <- "youraudience" + +# ╔═╡ 8b39e5d0-1a8e-41c9-8979-46677215379e +token <- jcall(JolinPluto$get_jwt, audience) + +# ╔═╡ 360c850b-35b6-458e-9776-4d0d542c6ec7 +MD(" +Tokens, or more precisely JSON WEB TOKENS (short JWT, sometimes also referred to as OIDC) are like a fancy ticket. Unlike paper tickets, you can actually prove that `cloud.jolin.io` handed out this very ticket. + +> Note, if the notebook is run within the automatic tests, the JWT will come from GitHub itself and be signed by GitHub respectively. + +There are two information which you can and should use for authorization: +> `audience` (corresponds to claim `aud`): This can be set by the user and makes sure that this token is only used for its intended purpose. + +> `sub` claim: This is set by cloud.jolin.io based on the running notebook. It is guaranteed to be like `/env/YOUR_ENVIRONMENT/github.com/YOUR_ORGANIZATION/YOUR_REPO/PATH_WITHIN_REPO`. (For the automated testing, see GitHub's [different sub claim structure](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#filtering-for-a-specific-environment).) +") + +# ╔═╡ 8e8f222b-fa70-47be-ba0e-0386848e7e78 +jcall(JWTs$claims, jcall(JWTs$JWT, jwt=token)) + +# ╔═╡ 105cc02e-0ed2-4c15-a694-1f328a225220 +MD(' +This information is then used by clouds like AWS to authenticate you. For AWS follow the [documentaion to setup an OIDC provider](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html). + +You will need: +- Identity Provider URL (IdP URL): `https://cloud.jolin.io` +- A Trust Realtionship Policy, similar to: +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_NUMBER:oidc-provider/cloud.jolin.io" + }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringLike": { + "cloud.jolin.io:aud": "awsaudience", + "cloud.jolin.io:sub": "/env/*/github.com/YOUR_ORGANIZATION/YOUR_REPO/*" + } + } + } + ] +} +``` +- IMPORTANT: You need to replace `YOUR_AWS_ACCOUNT_NUMBER`, `YOUR_ORGANIZATION`, and `YOUR_REPO`. You may also want to change the audience `cloud.jolin.io:aud` and subject `cloud.jolin.io:sub` to match your particular repository or notebook path. +- For authorizing the automated testing, [follow similar steps](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services#adding-the-identity-provider-to-aws) using github\'s IdP url `https://token.actions.githubusercontent.com` and github\'s [sub claim structure](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#filtering-for-a-specific-environment). +') + +# ╔═╡ 78ae1b1d-0aa9-42b6-b230-13ec54b4926f +MD(' +### Authorization helpers +As soon as you have setup your AWS role with the trust relationship, you can use the following helper to authenticate your notebook. +```julia +JolinPluto$authorize_aws(role_arn, audience="awsaudience") +``` +This will setup the respective AWS credentials for you and works everywhere: On production, development and within the automatic tests. + +Helpers for Azure and Google Cloud are planned. Please reach out to [hello@jolin.io](mailto:hello@jolin.io) if you need them. +') + +# ╔═╡ 5785ce8c-4695-471b-8506-3282a1adb2f9 +MD(" +# Next + +- Take a look at the other example notebooks. +- [plutojl.org](https://plutojl.org/) gives a colourful overview of Pluto +- [Pluto Wiki](https://github.com/fonsp/Pluto.jl/wiki) has some Q&A +- [meetup](https://www.meetup.com/julia-user-group-munich/) - join julia meetup group + +🙂 Enjoy using reactive notebooks. +") + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +' +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +JWTs = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +RCall = "6f49c342-dc21-5d91-9882-a32aef131414" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" + +[compat] +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JWTs = "~0.2.3" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +RCall = "~0.13.18" +Suppressor = "~0.2.6" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "4a82e8a135d594aba93865001b24a0b9ba85654d" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[deps.CategoricalArrays]] +deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] +git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.10.8" + + [deps.CategoricalArrays.extensions] + CategoricalArraysJSONExt = "JSON" + CategoricalArraysRecipesBaseExt = "RecipesBase" + CategoricalArraysSentinelArraysExt = "SentinelArrays" + CategoricalArraysStructTypesExt = "StructTypes" + + [deps.CategoricalArrays.weakdeps] + JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" + StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.Conda]] +deps = ["Downloads", "JSON", "VersionParsing"] +git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.10.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" + +[[deps.Continuables]] +deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] +git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" +uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" +version = "1.0.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.6.1" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.DataTypesBasic]] +git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" +uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" +version = "2.0.3" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprParsers]] +deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] +git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" +uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" +version = "1.2.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.Git]] +deps = ["Git_jll"] +git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.42.0+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.23" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InlineStrings]] +deps = ["Parsers"] +git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.InvertedIndices]] +git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.13.2" + +[[deps.JWTs]] +deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" +uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +version = "0.2.3" + +[[deps.JolinPluto]] +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" +uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "3f43c2aae6aa4a2503b05587ab74f4f6aeff9fd0" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.3.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProxyInterfaces]] +git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" +uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" +version = "1.1.1" + +[[deps.RCall]] +deps = ["CategoricalArrays", "Conda", "DataFrames", "DataStructures", "Dates", "Libdl", "Missings", "REPL", "Random", "Requires", "StatsModels", "WinReg"] +git-tree-sha1 = "3084689b18f9e5e817a6ce9a83a7654d8ad0f2f6" +uuid = "6f49c342-dc21-5d91-9882-a32aef131414" +version = "0.13.18" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.1" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.4.0+0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.ShiftedArrays]] +git-tree-sha1 = "503688b59397b3307443af35cd953a13e8005c16" +uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" +version = "2.0.0" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SimpleMatch]] +git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" +uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.0" + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + + [deps.StatsFuns.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.StatsModels]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsAPI", "StatsBase", "StatsFuns", "Tables"] +git-tree-sha1 = "5cf6c4583533ee38639f73b880f35fc85f2941e0" +uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" +version = "0.7.3" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.3.4" + +[[deps.StructEquality]] +deps = ["Compat"] +git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" +uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" +version = "2.1.0" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.Suppressor]] +deps = ["Logging"] +git-tree-sha1 = "6cd9e4a207964c07bf6395beff7a1e8f21d0f3b2" +uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +version = "0.2.6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.VersionParsing]] +git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.3.0" + +[[deps.WinReg]] +git-tree-sha1 = "cd910906b099402bcc50b3eafa9634244e5ec83b" +uuid = "1b915085-20d7-51cf-bf83-8f477d6f5128" +version = "1.0.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +channels = ["conda-forge", "file:///home/jolin_user/.conda/channel"] + +[deps] +r-magrittr = "" +r = "" +r-base = "" +r-juliacall = "" +""" + +' +# ╔═╡ Cell order: +# ╟─14cd96d2-03da-45c5-b0e8-b2b16afb9e8f +# ╠═254019ea-82ce-11ee-113f-a10cb102066f +# ╟─b02953c3-f85a-4de8-b1be-6d0b6e46d1f6 +# ╠═99d9441f-0f66-496e-a5ab-6fe0ea73c065 +# ╟─9a05f443-1a30-4864-a724-1fd9b8eff882 +# ╠═7f0e4061-454d-4de5-877b-6aecd7f14081 +# ╟─16db2104-fc77-4be1-b61a-9504a68ec44d +# ╠═33131f9d-56a9-4a6e-9669-ddc977fabede +# ╠═e93ebb0c-e5be-4bb3-a53a-14e4fe3ee43c +# ╠═4e0b77fa-b3df-4bcc-8508-078a3752ddbc +# ╟─ac221e0a-8539-456b-8d4c-6c0f8063626f +# ╠═81e1f417-84b2-439d-9244-57bff6ff85a5 +# ╠═0936d6c5-407e-4dba-9b20-342eb5a53ea1 +# ╠═70caa3f7-7034-4ff6-b64d-785d36472a89 +# ╠═a0c0ce4e-a05d-4893-b267-0c0cbfb12002 +# ╟─0fea7069-41c4-4c18-a9dd-49bc8d978b53 +# ╟─e3155af3-b875-4938-870a-474d48f81a84 +# ╟─563ddf70-384c-4571-8f68-70c6fc250458 +# ╟─1926f2ba-5021-4c1c-af30-ea928cea94d2 +# ╟─de2375c7-bc80-452a-96e7-3b57d062c17c +# ╠═910404e5-dd14-4f0b-97eb-d9cfac2b015a +# ╟─a15c23d1-357b-4fd0-b6c8-aa293848e7b6 +# ╠═9c54182e-7c90-4d3a-8100-b2c3500d8d0a +# ╟─bc0437df-1c07-4c6d-9453-eb6b14d068c3 +# ╠═2f2845d5-38ce-49cb-8b9b-100fbe7a9e5a +# ╠═8b39e5d0-1a8e-41c9-8979-46677215379e +# ╟─360c850b-35b6-458e-9776-4d0d542c6ec7 +# ╠═80f6f9e2-08db-49ca-818b-ff2eff314e35 +# ╠═8e8f222b-fa70-47be-ba0e-0386848e7e78 +# ╟─105cc02e-0ed2-4c15-a694-1f328a225220 +# ╟─78ae1b1d-0aa9-42b6-b230-13ec54b4926f +# ╟─5785ce8c-4695-471b-8506-3282a1adb2f9 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/-welcome-read-this-first-.jl b/notebooks/1 welcome read this first/julia.jl similarity index 93% rename from notebooks/-welcome-read-this-first-.jl rename to notebooks/1 welcome read this first/julia.jl index def4c200..bae7c2d5 100644 --- a/notebooks/-welcome-read-this-first-.jl +++ b/notebooks/1 welcome read this first/julia.jl @@ -1,5 +1,5 @@ ### A Pluto.jl notebook ### -# v0.19.42 +# v0.19.28 using Markdown using InteractiveUtils @@ -42,6 +42,8 @@ A Pluto reactive notebook is divided into **cells** whose output is rendered to md""" The simplest example is this very cell (or the above): They are markdown strings which get printed as highlighted text. +In **development environments** the following controls exist. + > 👉 👁 The input of this cell is hidden. You can (un)hide it by clicking on the 👁 symbol right left to the cell (it will appear if you hover over the respective cell) > 👉 ➕ You can create new cells by clicking on the ➕ sign above or below of an existing cell (left). In the cell you can press `CTRL + M` to turn it into a Markdown cell. @@ -69,7 +71,7 @@ Pluto's default is actually the oppositie, output ABOVE input, which for many, i # ╔═╡ 418886cc-1aa0-47f9-8fcf-9539c8534bf7 md""" -The next line is creating a table of contents. Try to remove it. +The next line is creating a table of contents. Try to remove it. *(Removing is not possible in the prod environment)* """ # ╔═╡ 4103985e-c9f9-41dd-9f8f-9d5eb7fa2994 @@ -112,31 +114,15 @@ Welcome. I hope you played a little with the input widgets above. Now you can create your first dashboards. """ -# ╔═╡ 064c3ab8-d96a-4cfa-8306-8553cbe09cf3 +# ╔═╡ 12f32990-afcb-4fdd-86c3-c9728b4d59ac md""" -## Overview page - -Jolin Cloud comes with an overview page which lists all notebooks of the current repository. You opened this very notebook from there. - -### Error reporting -The overview page shows a marker for each running notebook - whether it has an error ⚠️ or not ✅. - -> Go back to the overview page and find that the `welcome` notebook is currently green (there should be a ✅). +## Git integration -Now uncomment the following cell by removing the hashtag `#`. -This will result in an error. +Jolin.io Cloud comes with rich version control integration via git and github. -> When going back to the overview once again, you see that it updated and shows a ⚠️ instead. -""" - -# ╔═╡ 80281461-5f22-4e4c-acbc-6e27bd80d3a8 -# error("this failed") - -# ╔═╡ 12f32990-afcb-4fdd-86c3-c9728b4d59ac -md""" -### Git integration +### Update Requests -On the overview page you also find a section **Update Production**. There you can add a title and description and click **request update**. +On the overview page (the webpage where all notebooks are listed) you find a section **Update Production**. There you can add a title and description and click **request update**. """ # ╔═╡ 405a76f1-62aa-4962-8118-5d84b2d229b9 @@ -151,7 +137,7 @@ If you delete your environment before requesting an update, the current state is # ╔═╡ f6bf4135-e92c-4f16-94da-4381f0873214 md""" -#### Git integration - Automatic tests +### Automatic tests After requesting an update via the Git integration, automatic tests are run for you inside the pull-request (using GitHub Actions with similar token authentication as seen in the next Authentication sections). In a test run, no interactivity/reactivity takes place. Instead, default values are used. @@ -174,15 +160,13 @@ else # all other are dev environments "devdata" end -# ╔═╡ d05385d4-34ab-46b0-bb6b-f6a67dc79625 -md""" -### Featured notebooks -You also find a section with valuable example notebooks from the community. -""" - # ╔═╡ 5dc3d3a8-637b-486e-9138-40d227e5ba3d md""" -## Authentication for AWS (, Azure, Google Cloud, HashiCrop and co) +## Cloud Integration + +In Jolin Cloud you can easily integrate your custom cloud or internal infrastructure. + +### Authentication for AWS, Azure, Google Cloud, HashiCrop and others How can you authorize this notebook against your Database or Cloud? @@ -257,7 +241,7 @@ Helpers for Azure and Google Cloud are planned. Please reach out to [hello@jolin md""" # Next -- Take a look at the other example notebooks. Use julia's `rm(...)` function to delete files you don't want. +- Take a look at the other example notebooks. - [plutojl.org](https://plutojl.org/) gives a colourful overview of Pluto - [Pluto Wiki](https://github.com/fonsp/Pluto.jl/wiki) has some Q&A - [julialang.org/learning](https://julialang.org/learning/) for tutorials on julia @@ -275,26 +259,20 @@ JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" [compat] -JWTs = "~0.2.2" -JolinPluto = "~0.1.43" -PlutoUI = "~0.7.52" +JWTs = "~0.2.3" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -[[AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" - [[AbstractPlutoDingetjes]] deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" +version = "1.2.2" [[ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -307,15 +285,15 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" +version = "0.1.8" [[CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" +version = "0.7.3" [[ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -325,9 +303,9 @@ version = "0.11.4" [[Compat]] deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" +version = "4.10.0" weakdeps = ["Dates", "LinearAlgebra"] [Compat.extensions] @@ -340,9 +318,9 @@ version = "1.0.5+0" [[ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" +version = "2.3.0" [[Continuables]] deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] @@ -382,17 +360,6 @@ git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" version = "1.2.3" -[[ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - [[FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -408,23 +375,17 @@ git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" version = "1.3.0" -[[GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - [[Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" +version = "2.42.0+0" [[HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[Hyperscript]] deps = ["Test"] @@ -434,9 +395,9 @@ version = "0.0.4" [[HypertextLiteral]] deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" +version = "0.9.5" [[IOCapture]] deps = ["Logging", "Random"] @@ -444,20 +405,10 @@ git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" version = "0.2.3" -[[IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - [[InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - [[JLLWrappers]] deps = ["Artifacts", "Preferences"] git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" @@ -478,25 +429,37 @@ version = "1.13.2" [[JWTs]] deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" +version = "0.2.3" [[JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" +version = "0.1.58" + + [JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" [[LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] @@ -505,16 +468,16 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -525,9 +488,9 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" +version = "1.0.3" [[MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -539,10 +502,10 @@ deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" +version = "1.1.9" [[MbedTLS_jll]] deps = ["Artifacts", "Libdl"] @@ -552,12 +515,6 @@ version = "2.28.2+0" [[Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - [[MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.10.11" @@ -579,9 +536,9 @@ version = "1.4.1" [[OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" +version = "3.0.12+0" [[OrderedCollections]] git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" @@ -595,9 +552,9 @@ version = "10.42.0+0" [[Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" +version = "2.8.0" [[Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] @@ -606,9 +563,9 @@ version = "1.9.2" [[PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" +version = "0.7.54" [[PrecompileTools]] deps = ["Preferences"] @@ -618,9 +575,9 @@ version = "1.2.0" [[Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.1" [[Printf]] deps = ["Unicode"] @@ -664,12 +621,6 @@ version = "1.1.0" [[Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -[[SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - [[SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" @@ -711,20 +662,23 @@ deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" +version = "0.1.8" [[URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" +version = "1.5.1" [[UUIDs]] deps = ["Random", "SHA"] @@ -733,18 +687,6 @@ uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -[[XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" - [[Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" @@ -755,16 +697,10 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" version = "5.8.0+0" -[[libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - [[nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[p7zip_jll]] deps = ["Artifacts", "Libdl"] @@ -772,6 +708,10 @@ uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" version = "17.4.0+0" """ +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +""" + # ╔═╡ Cell order: # ╟─d7795a36-b1cd-11ed-12e8-210a8bca4b85 # ╠═6c256a72-e3e2-4206-88c1-38be2de6a937 @@ -789,8 +729,6 @@ version = "17.4.0+0" # ╠═91b37a3c-772c-4ecc-8ce5-6d6aad85eae9 # ╠═3133be06-db22-4434-96b9-e99bdea7ba3e # ╟─dd0a81bd-3f7f-4f1d-907b-7d00883c543d -# ╟─064c3ab8-d96a-4cfa-8306-8553cbe09cf3 -# ╠═80281461-5f22-4e4c-acbc-6e27bd80d3a8 # ╟─12f32990-afcb-4fdd-86c3-c9728b4d59ac # ╟─405a76f1-62aa-4962-8118-5d84b2d229b9 # ╟─97f76fdc-7a18-4a3a-bc6a-732fb4c0295f @@ -798,7 +736,6 @@ version = "17.4.0+0" # ╠═515e330e-9f0a-4db2-962d-3a0805d322df # ╟─2f63060e-c49f-4a28-aad8-533e162efefc # ╠═ea276a93-7bde-4e13-af11-06a9f163dbc4 -# ╟─d05385d4-34ab-46b0-bb6b-f6a67dc79625 # ╟─5dc3d3a8-637b-486e-9138-40d227e5ba3d # ╠═82d655a9-0441-49d6-8488-f8624a378b33 # ╠═c80136a6-440d-4462-b5b9-b219ba789629 @@ -810,3 +747,4 @@ version = "17.4.0+0" # ╟─0ec8ec29-4609-4997-91b5-a126e813c182 # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/1 welcome read this first/python.py b/notebooks/1 welcome read this first/python.py new file mode 100644 index 00000000..8f284320 --- /dev/null +++ b/notebooks/1 welcome read this first/python.py @@ -0,0 +1,878 @@ +### A Pluto.jl notebook ### +# v0.19.28 +# Welcome to your Python reactive notebook. +from juliacall import Main as _jl + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html = _jl.seval('format_html(ans) = repr("text/html", ans)') +HTML = _jl.seval("HTML") +MD = _jl.seval('''begin + import CommonMark + parser = CommonMark.Parser() + CommonMark.enable!(parser, CommonMark.DollarMathRule()) + CommonMark.enable!(parser, CommonMark.TableRule()) + parser +end''') + +# This Pluto notebook uses `bind('xyz', ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +# setup julia reference to python globals (This works both from julia as well as from Python) +_jl.seval('''function(glo) + @eval const pyglobals=$glo +end''')(globals()) +# create the bind fallback function +bind = _jl.seval('''begin + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + pyglobals[name] = initial_value + ui + end +end''') + +# ╔═╡ 89b9f329-1016-4186-b022-0e4ae0d340b4 +from juliacall import Main as jl +JolinPluto = jl.seval("using JolinPluto; JolinPluto") + +# ╔═╡ 508acffe-7ed8-44ca-8383-a11928b06fba +PlutoUI = jl.seval("using PlutoUI; PlutoUI") + +# ╔═╡ 965c2140-0b96-4dbb-8e04-f0d07ba83937 +JWTs = jl.seval("using JWTs; JWTs") + +# ╔═╡ 6fd16ee2-82cd-11ee-2b2c-dd323b1c17ab +MD(""" +# Welcome to Reactive Notebooks + +This is a [Pluto.jl](https://github.com/fonsp/Pluto.jl) notebook, pimped up to be ready to use for production. + +In this Welcome you get to know the basics to get started. +""") + +# ╔═╡ a9acbbae-2b93-4ec3-9dd0-9124c6288a02 +MD(""" +## What is this? +A Pluto reactive notebook is divided into **cells** whose output is rendered to your browser for lovely interactivity and visualizations. +""") + +# ╔═╡ c4d1f04a-8b9b-4f77-93d4-d3b2c3f611e8 +MD(""" +The simplest example is this very cell (or the above): They are markdown strings which get printed as highlighted text. + +In **development environments** the following controls exist. + +> 👉 👁 The input of this cell is hidden. You can (un)hide it by clicking on the 👁 symbol right left to the cell (it will appear if you hover over the respective cell) + +> 👉 ➕ You can create new cells by clicking on the ➕ sign above or below of an existing cell (left). In the cell you can press `CTRL + M` to turn it into a Markdown cell. + +> 👉 **DELETE** To remove a cell, just delete its content and press DELETE once more. The cell will be gone. + +> 👉 **RUN** To actually run cells, either press `SHIFT + ENTER`, which will save and run the current cell, or save and run the entire file with `CTRL + S`. (The default language is Julia, but we can also use Python or R as you can see in the other example notebooks.) + +That are the basics, so lets see what we can do here. +""") + +# ╔═╡ 0d546780-5186-42b3-85d4-c4098257c88f +MD(""" +Jolin Cloud comes with a couple of helper functionalities in its package [`JolinPluto`](https://github.com/jolin-io/JolinPluto.jl). You are going to love them! + +The first is `JolinPluto.output_below()`. It will enable that the cell's output comes below the cell's input. + +> BUT WAIT, you are saying, THE OUTPUT IS ALREADY BELOW. Right 🙂, that is because `output_below()` is already activated - try to delete the below cell. + +Pluto's default is actually the oppositie, output ABOVE input, which for many, including myself, is very unintuitive. +""") + +# ╔═╡ a90aa0c6-cf14-48a1-8800-4b7f99ac36c7 +JolinPluto.output_below() + +# ╔═╡ 880f3cb6-2f6d-41ec-8ccf-82bc9a77b121 +MD(""" +The next line is creating a table of contents. Try to remove it. *(Removing is not possible in the prod environment)* +""") + +# ╔═╡ c50e6ab7-ca98-4166-9bd8-61b888aa83a1 +PlutoUI.TableOfContents() + +# ╔═╡ af546c8d-e629-4dc3-b9a7-7a954910d914 +MD(""" +## Interactivity! Reactivity 🙂 + +So far you would be better of using Jupyter Notebooks, but wait, someone said this is **reactive**. + +Indeed 😎. +""") + +# ╔═╡ 733d57db-3693-4817-91ef-009ad62c26c8 +MD(""" +[`PlutoUI`](https://github.com/JuliaPluto/PlutoUI.jl) gives you access to a couple of interactivity helpers. You probably already love its `TableOfContents()`. +""") + +# ╔═╡ d24dc9e4-6840-414e-bcd5-93e94f653137 +bind("number", PlutoUI.Slider(range(1,10))) + +# ╔═╡ 77eff76d-60a1-4559-82a0-fc83548d7275 +bind("icon", PlutoUI.Select(["🤔", "🙂", "❤️"])) + +# ╔═╡ 0b06c21c-6b5e-43a2-8da4-582adc5565c2 +number + +# ╔═╡ a8b00780-8452-46b2-9571-2d755b8848d4 +icon*number + +# ╔═╡ 856aa9b5-2778-4b96-9dc9-9cc333dd2a30 +MD(""" +Welcome. I hope you played a little with the input widgets above. + +> 👉 `bind` makes a variable reactive to interactive input elements (consisting of HTML, CSS and JavaScript, and e.g. defined by helpers like `PlutoUI.Slider`) + +> 👉 🔄 (REACTIVITY) when changing anything in this reactive notebook, everything else which explicitly depends on it will be reevaluated. This enables interactivity 📊. Your notebook is always up to date. + +Now you can create your first dashboards. +""") + +# ╔═╡ 004956b2-e759-4ec3-b8ac-296d44705dcb +MD(""" +## Git integration + +Jolin.io Cloud comes with rich version control integration via git and github. + +### Update Requests + +On the overview page (the webpage where all notebooks are listed) you find a section **Update Production**. There you can add a title and description and click **request update**. +""") + +# ╔═╡ 726ea3c0-a545-464f-9302-81adf06c4ea5 +HTML("") + +# ╔═╡ 802d08fc-73d4-4bd8-8c2a-e0bba4a60ccc +MD(""" +Clicking **request update** will open a pullrequest including all the current changes. + +If you delete your environment before requesting an update, the current state is still stored inside your github and will be restored when the environment is recreated. Outputs are never stored, which simplifies security concerns. +""") + +# ╔═╡ de65bd54-cbe6-4451-8829-84091da47192 +MD(""" +### Automatic tests +After requesting an update via the Git integration, automatic tests are run for you inside the pull-request (using GitHub Actions with similar token authentication as seen in the next Authentication sections). + +In a test run, no interactivity/reactivity takes place. Instead, default values are used. +""") + +# ╔═╡ bf11b512-c95b-45a7-9a42-8b62dc74b436 +PlutoUI.Slider(range(1,10)).default + +# ╔═╡ 0c05c9c2-e009-41a6-ae4a-911b72836a7e +MD(""" +If you want to access different data dependening on whether your code is run on `dev` / `test` / `prod` you can use a simple if-else on `os.environ["JOLIN_ENVIRONMENT"]`: +""") + +# ╔═╡ ba88fc17-273f-4fe2-80c7-9047c4c5c64b +import os +if os.environ["JOLIN_ENVIRONMENT"] == "test": + mydata = "testdata" +elif os.environ["JOLIN_ENVIRONMENT"] == "prod": + mydata = "proddata" +else: # all other are dev environments + mydata = "devdata" + +# ╔═╡ f6e465d8-1b92-4afd-947a-3da6f3423174 +MD(""" +## Cloud Integration + +In Jolin Cloud you can easily integrate your custom cloud or internal infrastructure. + +### Authentication for AWS, Azure, Google Cloud, HashiCrop and others + +How can you authorize this notebook against your Database or Cloud? + +Follow state-of-the-art best practices and do it **token-based** 💳. +""") + +# ╔═╡ 4fce6665-2a4a-41a7-9021-d2530b4b2bc8 +audience = "youraudience" + +# ╔═╡ 4ff28b8d-d276-4752-a6bf-3921879f77b6 +token = JolinPluto.get_jwt(audience) + +# ╔═╡ f5bba492-350e-42b0-bfc1-3f870a8062e9 +MD(""" +Tokens, or more precisely JSON WEB TOKENS (short JWT, sometimes also referred to as OIDC) are like a fancy ticket. Unlike paper tickets, you can actually prove that `cloud.jolin.io` handed out this very ticket. + +> Note, if the notebook is run within the automatic tests, the JWT will come from GitHub itself and be signed by GitHub respectively. + +There are two information which you can and should use for authorization: +> `audience` (corresponds to claim `aud`): This can be set by the user and makes sure that this token is only used for its intended purpose. + +> `sub` claim: This is set by cloud.jolin.io based on the running notebook. It is guaranteed to be like `/env/YOUR_ENVIRONMENT/github.com/YOUR_ORGANIZATION/YOUR_REPO/PATH_WITHIN_REPO`. (For the automated testing, see GitHub's [different sub claim structure](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#filtering-for-a-specific-environment).) +""") + +# ╔═╡ f61209ab-1ef4-4a03-a669-71a049dd0616 +JWTs.claims(JWTs.JWT(jwt=token)) + +# ╔═╡ fe4dfb2c-a8d3-4de7-a424-a0997a154374 +MD(""" +This information is then used by clouds like AWS to authenticate you. For AWS follow the [documentaion to setup an OIDC provider](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html). + +You will need: +- Identity Provider URL (IdP URL): `https://cloud.jolin.io` +- A Trust Realtionship Policy, similar to: +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_NUMBER:oidc-provider/cloud.jolin.io" + }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringLike": { + "cloud.jolin.io:aud": "awsaudience", + "cloud.jolin.io:sub": "/env/*/github.com/YOUR_ORGANIZATION/YOUR_REPO/*" + } + } + } + ] +} +``` +- IMPORTANT: You need to replace `YOUR_AWS_ACCOUNT_NUMBER`, `YOUR_ORGANIZATION`, and `YOUR_REPO`. You may also want to change the audience `cloud.jolin.io:aud` and subject `cloud.jolin.io:sub` to match your particular repository or notebook path. +- For authorizing the automated testing, [follow similar steps](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services#adding-the-identity-provider-to-aws) using github's IdP url `https://token.actions.githubusercontent.com` and github's [sub claim structure](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#filtering-for-a-specific-environment). +""") + +# ╔═╡ a21674bf-288e-4bfd-bd06-723ef995022b +MD(""" +### Authorization helpers +As soon as you have setup your AWS role with the trust relationship, you can use the following helper to authenticate your notebook. +```julia +JolinPluto.authorize_aws(role_arn, audience="awsaudience") +``` +This will setup the respective AWS credentials for you and works everywhere: On production, development and within the automatic tests. + +Helpers for Azure and Google Cloud are planned. Please reach out to [hello@jolin.io](mailto:hello@jolin.io) if you need them. +""") + +# ╔═╡ dfac1676-625a-4c7a-8df2-cd5f7fb5097b +MD(""" +# Next + +- Take a look at the other example notebooks. +- [plutojl.org](https://plutojl.org/) gives a colourful overview of Pluto +- [Pluto Wiki](https://github.com/fonsp/Pluto.jl/wiki) has some Q&A +- [meetup](https://www.meetup.com/julia-user-group-munich/) - join julia meetup group + +🙂 Enjoy using reactive notebooks. +""") + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +JWTs = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + +[compat] +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JWTs = "~0.2.3" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +PythonCall = "~0.9.15" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "5dbf3b450032c13d1ed51d8ce1f50bea45ba424a" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" + +[[deps.Continuables]] +deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] +git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" +uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" +version = "1.0.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataTypesBasic]] +git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" +uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" +version = "2.0.3" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprParsers]] +deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] +git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" +uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" +version = "1.2.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Git]] +deps = ["Git_jll"] +git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.42.0+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.13.2" + +[[deps.JWTs]] +deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" +uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +version = "0.2.3" + +[[deps.JolinPluto]] +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" +uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProxyInterfaces]] +git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" +uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" +version = "1.1.1" + +[[deps.PythonCall]] +deps = ["CondaPkg", "Dates", "Libdl", "MacroTools", "Markdown", "Pkg", "REPL", "Requires", "Serialization", "Tables", "UnsafePointers"] +git-tree-sha1 = "4999b3e4e9bdeba0b61ede19cc45a2128db21cdc" +uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" +version = "0.9.15" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SimpleMatch]] +git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" +uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StructEquality]] +deps = ["Compat"] +git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" +uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" +version = "2.1.0" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnsafePointers]] +git-tree-sha1 = "c81331b3b2e60a982be57c046ec91f599ede674a" +uuid = "e17b2a0c-0bdf-430a-bd0c-3a23cae4ff39" +version = "1.0.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +[deps] +dill = "" + +[pip.deps] +juliacall = "" +""" + +# ╔═╡ Cell order: +# ╟─6fd16ee2-82cd-11ee-2b2c-dd323b1c17ab +# ╠═a9acbbae-2b93-4ec3-9dd0-9124c6288a02 +# ╟─c4d1f04a-8b9b-4f77-93d4-d3b2c3f611e8 +# ╠═89b9f329-1016-4186-b022-0e4ae0d340b4 +# ╟─0d546780-5186-42b3-85d4-c4098257c88f +# ╠═a90aa0c6-cf14-48a1-8800-4b7f99ac36c7 +# ╟─880f3cb6-2f6d-41ec-8ccf-82bc9a77b121 +# ╠═c50e6ab7-ca98-4166-9bd8-61b888aa83a1 +# ╟─af546c8d-e629-4dc3-b9a7-7a954910d914 +# ╠═508acffe-7ed8-44ca-8383-a11928b06fba +# ╟─733d57db-3693-4817-91ef-009ad62c26c8 +# ╠═d24dc9e4-6840-414e-bcd5-93e94f653137 +# ╠═77eff76d-60a1-4559-82a0-fc83548d7275 +# ╠═0b06c21c-6b5e-43a2-8da4-582adc5565c2 +# ╠═a8b00780-8452-46b2-9571-2d755b8848d4 +# ╟─856aa9b5-2778-4b96-9dc9-9cc333dd2a30 +# ╟─004956b2-e759-4ec3-b8ac-296d44705dcb +# ╟─726ea3c0-a545-464f-9302-81adf06c4ea5 +# ╟─802d08fc-73d4-4bd8-8c2a-e0bba4a60ccc +# ╠═de65bd54-cbe6-4451-8829-84091da47192 +# ╠═bf11b512-c95b-45a7-9a42-8b62dc74b436 +# ╟─0c05c9c2-e009-41a6-ae4a-911b72836a7e +# ╠═ba88fc17-273f-4fe2-80c7-9047c4c5c64b +# ╟─f6e465d8-1b92-4afd-947a-3da6f3423174 +# ╠═4fce6665-2a4a-41a7-9021-d2530b4b2bc8 +# ╠═4ff28b8d-d276-4752-a6bf-3921879f77b6 +# ╟─f5bba492-350e-42b0-bfc1-3f870a8062e9 +# ╠═965c2140-0b96-4dbb-8e04-f0d07ba83937 +# ╠═f61209ab-1ef4-4a03-a669-71a049dd0616 +# ╟─fe4dfb2c-a8d3-4de7-a424-a0997a154374 +# ╟─a21674bf-288e-4bfd-bd06-723ef995022b +# ╟─dfac1676-625a-4c7a-8df2-cd5f7fb5097b +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/languages/R.jl b/notebooks/2 dashboards/R.R similarity index 61% rename from notebooks/languages/R.jl rename to notebooks/2 dashboards/R.R index 2e4a2fc3..62a9f38a 100644 --- a/notebooks/languages/R.jl +++ b/notebooks/2 dashboards/R.R @@ -1,216 +1,237 @@ ### A Pluto.jl notebook ### -# v0.19.42 - -using Markdown -using InteractiveUtils - -# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). -macro bind(def, element) - quote - local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end - local el = $(esc(element)) - global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) - el +# v0.19.28 +# Welcome to your R reactive notebook. +library(JuliaCall) +julia_setup(installJulia=TRUE) + + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html <- julia_eval('format_html(ans) = repr("text/html", ans)') +HTML <- function(str) julia_call('HTML', str) +julia_eval('begin + import CommonMark + const md_parser = CommonMark.Parser() + CommonMark.enable!(md_parser, CommonMark.DollarMathRule()) + CommonMark.enable!(md_parser, CommonMark.TableRule()) +end') +MD <- function(str) julia_call('md_parser', str) + + +# This Pluto notebook uses `bind(xyz, ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +julia_eval('begin + import RCall + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + RCall.Const.GlobalEnv[name] = initial_value + ui end -end - -# ╔═╡ 0058d8f2-eaac-11ed-1b10-7fcdeb83d83a -using RCall, JolinPluto, PlutoUI, DataFrames - -# ╔═╡ 7d64d3df-fdd0-4ca8-978d-81bf5de5f67e -md""" +end') +bind <- function(var, ui) julia_call("bind", sys.call()[[2]], ui) + +# ╔═╡ a8bd1bfc-e111-40ce-abac-4863972d09c9 +library(JuliaCall) +julia_eval("using PlutoUI") +julia_eval("using JolinPluto") +jlcall <- julia_eval("(f, args...; kwargs...) -> f(args...; kwargs...)") +PlutoUI <- julia_eval("PlutoUI") +JolinPluto <- julia_eval("JolinPluto") +JolinPluto$output_below() + +# ╔═╡ fc7a55d0-4d1c-4d80-ba09-72387ffb6e9f +MD(" # R Dashboard We are going to look at CO2 data. -> 👉 3, 1, 2. If you build your own dashboard later, remember that you can completely reorder the cells. For a dashboard this often makes sense in that the final plots and input elements could be moved to the top of the notebook. - -Here we keep normal ordering so that it is easier to understand what goes on. -""" - -# ╔═╡ 97f5fd46-aa22-4bf8-8066-28600db4ad50 -@output_below - -# ╔═╡ d0bd14e3-8d31-49d3-b0ce-5ce8a8bd4066 -TableOfContents() - -# ╔═╡ 45e5fe58-a4b8-41d7-bfd8-f2e18926d068 -md""" -## Installing R dependencies -""" - -# ╔═╡ f7b267a6-2322-4c0c-a3f4-314ae35afc12 -md""" -R does not come with prebuilt binaries for Linux ARM64 architectures. Hence R package need to be compiled from source. All compilation tools are available, but compilation takes a long time. - -As a compromise, the `tidyverse` and `plotly` packages were already precompiled and are readily available on this system. Still, for reproducability and automated testing, always run `install.packages` for *all* your dependencies, including `tidyverse` or `plotly` explicitly. - -⚠️ Installation of dependencies **must be done** via `Rscript`. Using the R string macro won't work for `install.packages`. -""" +> 👉 3, 1, 2. The order of cells does not matter to much for Pluto notebooks. Hence we can easily bring the summary to the top. +") -# ╔═╡ 2f873bd7-437a-4547-ac2f-13b0dd2fa4b9 -run(`Rscript -e "install.packages(c('tidyverse', 'plotly'))"`) +# ╔═╡ 277a40d2-f045-42a5-ad9d-f7d8d11f481f +MD(" +## Installing Dependencies -# ╔═╡ 3e1cf25c-9157-49fc-8d47-f7ac73227798 -md""" -## Calling R from Pluto +This is done automatically for your. As soon as you import a package, it is installed via conda under the hood. +") -Above you have already seen the R in front of the string. This is called a string macro. It will evalute the given (possible multiline) R code and return the last variable to Julia. +# ╔═╡ bab55368-9770-4acc-b86b-c458503688bb +julia_call("PlutoUI.TableOfContents") -First we call some plain Julia code to download the CSV file, which we then process with R. -""" +# ╔═╡ dbc61ab1-3375-47c2-9f57-0e13e179f38d +library(plotly) +library(tidyverse) # the order is important +# the often used curl library needs a special fix to work with conda +# see this issue for updates about curl on conda https://github.com/jeroen/curl/issues/320 +library(curl) +trace(curl::new_handle, exit=quote(handle_setopt(h, cainfo=Sys.getenv("CURL_CA_BUNDLE")))); -# ╔═╡ ba11c397-de55-4e68-b191-6a18d13afb74 -datafile = download("https://nyc3.digitaloceanspaces.com/owid-public/data/co2/owid-co2-data.csv") +# ╔═╡ 7ccca059-cc56-465b-b816-7272ca8706af +MD(" +## Read Data -# ╔═╡ 07987d99-fa13-4d5e-a4fb-2b850ae6d575 -md""" -Using the dollar sign `$` we can bring julia variables to R. This is called interpolation. -""" +The co2 data is taken from [Our World in Data](https://github.com/owid/co2-data). +") -# ╔═╡ fd738a39-1995-44d6-bacb-7a31503aac0f -df = R""" -library(tidyverse) -library(plotly) -read_csv($datafile) -""" +# ╔═╡ 337d6145-50cc-4af7-80f5-fd40bdac874e +mydf <- read_csv("https://nyc3.digitaloceanspaces.com/owid-public/data/co2/owid-co2-data.csv") -# ╔═╡ ae2ea558-dabe-427d-a5eb-685b939fc8b4 -md""" -The function `rcopy(...)` is needed to convert returned R objects to Julia objects. -""" - -# ╔═╡ 1e87466f-85f9-4807-9b0c-054779e936f0 -columns = [rcopy(col) for col in R"colnames($df)"] +# ╔═╡ 78d384ed-9523-4490-b2de-aac05d93907b +columns <- colnames(mydf) -# ╔═╡ 05d43752-6324-43a1-b012-946e378f136e -countries = unique([rcopy(col) for col in R"pull($df, country)"]) +# ╔═╡ 67f197dd-c4f4-4c84-b419-605b8be5331f +countries <- unique(pull(mydf, "country")) -# ╔═╡ 6dd1a7e4-f42d-4400-adb8-0436f5f7bd51 -md""" +# ╔═╡ 43b57ba5-ddb3-4c19-b4fd-37ec067a089e +MD(' ## Interactive visualizations The reactivity comes from Pluto. Hence to define our little input widgets, we do things in Julia. The plotting then can happen on R side. -""" +') -# ╔═╡ 36d171b3-1b6d-458a-a7cd-d21ad4efd35d -md""" +# ╔═╡ b1e9321e-3034-41ce-b773-7f19e600cc05 +MD(' ### Input Widgets Interactive input widgets use the `@bind` macro. ```julia -@bind country PlutoUI.Select(countries; default="World") +bind(country, julia_call("PlutoUI.Select", countries, default="World")) ``` This lets the variable `country` listen for updates on the select input. All these widgets can also be combined into markdown/html code using interpolation. -""" +') -# ╔═╡ 7ea6abdf-5597-42d7-a1c4-f3e56fa3ec3e -choose = md""" -| Parameter | Choose | -| --------- | :----- | -| region 1 | $(@bind country1 PlutoUI.Select(countries; default="World")) | -| region 2 | $(@bind country2 PlutoUI.Select(countries; default="Germany")) | -| compare | $(@bind yaxis PlutoUI.Select(columns; default="co2_per_capita")) | -""" +# ╔═╡ 1ef8e34d-0f6f-4fe0-a941-b9aa7adec0a7 +ui1 <- bind(country1, jlcall(PlutoUI$Select, countries, default="World")) -# ╔═╡ d4a29ec1-f0e3-4edd-a42e-42c97509c204 -(; yaxis, country1, country2) +# ╔═╡ de436ec8-6bea-470d-aa99-e0395168297c +ui2 <- bind(country2, jlcall(PlutoUI$Select, countries, default="Germany")) -# ╔═╡ b0cbfb71-8d8d-42b2-a42c-0c729200b1f2 -xaxis = "year" +# ╔═╡ b60c8044-7d33-4a71-9f29-6c1b23e7358a +ui3 <- bind(yaxis, jlcall(PlutoUI$Select, columns, default="co2_per_capita")) -# ╔═╡ 2aaf5b19-8bf8-4a01-89c0-874e64f23bab -subdf1 = R"$df %>% filter(country == $country1)"; +# ╔═╡ d134a72b-7f03-4696-a167-7ece6893d61e +ui_choose = MD(str_interp(' +| Parameter | Choose | +| --------- | :----------------------- | +| region 1 | <>${format_html(ui1)} | +| region 2 | <>${format_html(ui2)} | +| compare | <>${format_html(ui3)} | +')) -# ╔═╡ a97befe2-35ee-416c-bac0-ca92cc5ba939 -subdf2 = R"$df %>% filter(country == $country2)" +# ╔═╡ ee72cfad-5450-4a0d-8008-902bb20c2b2d +ui_choose -# ╔═╡ 1ea69a2a-6f07-43cf-b78c-858132e5137b -md""" +# ╔═╡ fa404b3b-e5a5-423a-b9c8-2457715cf010 +list(yaxis=yaxis, country1=country1, country2=country2) + +# ╔═╡ be6d2b40-1446-4bde-ba58-182ab6c4d253 +xaxis <- "year" + +# ╔═╡ f8a85c13-3e98-418e-a1ec-8c8fdf8a81ea +columns + +# ╔═╡ 4464998e-c54a-4d9f-b783-abdb876463d8 +help(filter) + +# ╔═╡ 9e25a075-ff64-4e0f-8a45-0e38ab4b033e +country <- "" # dummy variable to please dependency recognition + +# ╔═╡ b6ba5aad-6b60-411b-862f-a72b96144893 +subdf1 <- mydf %>% filter(country == country1) + +# ╔═╡ 12686eb0-85d3-4083-aabf-5b677809e695 +subdf2 <- mydf %>% filter(country == country2) + +# ╔═╡ cbfd700f-f75a-4960-ab61-8c532f7f1f0f +MD(' ### Plot with ggplot -""" +') + +# ╔═╡ 754969ed-1169-4a88-9599-eaafd9521dba +MD(" +So far the R support uses workarounds to show png and html plots. Please contact hello@jolin.io if you like to support displaying these out of the box. +") -# ╔═╡ 3e3f8262-60f2-4189-b767-a83d20b3fde9 -p = R""" +# ╔═╡ e60dcd09-0a3a-408d-be62-cf1186699223 # combine data into one large dataframe -subdf <- rbind($subdf1, $subdf2) -# we need to bring variables into tidy evaluation by combining !! with sym() -ggplot(subdf, aes(!!sym($xaxis), !!sym($yaxis), col=country)) + geom_line() -"""; +subdf <- rbind(subdf1, subdf2); -# ╔═╡ d26049f0-a0ef-472b-ac4c-8a74c6969444 -md""" -Note that we can reuse interactive input components. -""" +# ╔═╡ 948c8696-981c-4f8f-ac57-6f87bdf104ba +# we need to bring variables into tidy evaluation by combining !! with sym() +p <- ggplot(subdf, aes(!!sym(xaxis), !!sym(yaxis), col=country)) + geom_line(); -# ╔═╡ 6820d1c9-4233-49ee-bd87-068a83cf98fa +# ╔═╡ 45a77625-1a00-429e-975e-0355e08d7641 choose -# ╔═╡ e24b0cc2-f4cb-417c-967a-84f64cd9010e -R"ggsave('r_figure.png', plot=$p, height=4)"; LocalResource("r_figure.png") +# ╔═╡ 2598ab9d-db24-4ad7-9d64-d6d6ca4b83de +ggsave("r_figure.png", plot=p, height=4) +output = julia_call("PlutoUI.LocalResource", "r_figure.png") + +# ╔═╡ 4da9978f-d86a-4bcf-857c-4951884b0cd4 +output -# ╔═╡ 7fa31165-3ec4-4fa1-b551-4885cbe4e6e4 -md""" +# ╔═╡ 952bcee3-a1fd-4804-87f4-7f27047a196b +MD(" ### Plotly 🙂 Works too. -""" +") -# ╔═╡ 679eaee0-f783-4985-a939-26f75a11c6f9 -choose - -# ╔═╡ 549518e0-45d5-4754-a414-26c02491989c -R""" -ply = ggplotly($p) +# ╔═╡ d5716467-656c-4f6e-9ee4-58fbbd096e7f +ply <- ggplotly(p) htmlwidgets::saveWidget(ply, "r_figure.html") -"""; JolinPluto.embedLargeHTML(read("r_figure.html", String); width="100%", height=400) +html_text <- paste(readLines("r_figure.html"), collapse = "\n") +JolinPluto$embedLargeHTML(html_text, width="100%", height=400) -# ╔═╡ e77ae33b-6f2f-416e-ad73-e5682e122900 -md""" +# ╔═╡ c508f1e7-5f3f-4600-af91-7694574f26ab +MD(" # Next - [Our World in Data - CO2 Data](https://github.com/owid/co2-data) for more details on the data source -- [`RCall.jl`](https://juliainterop.github.io/RCall.jl/stable/gettingstarted/) for more details on the R interface. - [`PlutoUI.jl`](https://github.com/JuliaPluto/PlutoUI.jl) for more prebuilt input widgets. Happy dashboarding 📈 📊! -""" +") + # ╔═╡ 00000000-0000-0000-0000-000000000001 +' PLUTO_PROJECT_TOML_CONTENTS = """ [deps] -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" RCall = "6f49c342-dc21-5d91-9882-a32aef131414" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" [compat] -DataFrames = "~1.6.1" -JolinPluto = "~0.1.43" -PlutoUI = "~0.7.52" -RCall = "~0.13.17" +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +RCall = "~0.13.18" +Suppressor = "~0.2.6" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.9.4" manifest_format = "2.0" -project_hash = "4382b8414e01bc1f75202300601d380821c2f648" - -[[deps.AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" +project_hash = "fdecd0efca84c1327dfe49b7ccff5127c5218286" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" +version = "1.2.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -223,9 +244,9 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" +version = "0.1.8" [[deps.Calculus]] deps = ["LinearAlgebra"] @@ -253,9 +274,9 @@ version = "0.10.8" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" +version = "0.7.3" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -263,11 +284,17 @@ git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.11.4" +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + [[deps.Compat]] deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" +version = "4.10.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -280,15 +307,21 @@ version = "1.0.5+0" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" +version = "2.3.0" [[deps.Conda]] deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "8c86e48c0db1564a1d49548d3515ced5d604c408" +git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.9.1" +version = "1.10.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" [[deps.Continuables]] deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] @@ -367,17 +400,6 @@ git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" version = "1.2.3" -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -397,23 +419,17 @@ git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" version = "1.3.0" -[[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" +version = "2.42.0+0" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[deps.HypergeometricFunctions]] deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] @@ -429,9 +445,9 @@ version = "0.0.4" [[deps.HypertextLiteral]] deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" +version = "0.9.5" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -439,11 +455,6 @@ git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" version = "0.2.3" -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - [[deps.InlineStrings]] deps = ["Parsers"] git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" @@ -464,11 +475,6 @@ git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" @@ -494,30 +500,46 @@ version = "1.13.2" [[deps.JWTs]] deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" +version = "0.2.3" [[deps.JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" [[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" +version = "1.3.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] @@ -526,16 +548,16 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -562,9 +584,9 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" +version = "1.0.3" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -576,16 +598,22 @@ deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" +version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" version = "2.28.2+0" +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + [[deps.Missings]] deps = ["DataAPI"] git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" @@ -595,12 +623,6 @@ version = "1.1.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.10.11" @@ -633,9 +655,9 @@ version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" +version = "3.0.12+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -655,9 +677,15 @@ version = "10.42.0+0" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] @@ -666,15 +694,15 @@ version = "1.9.2" [[deps.PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" +version = "0.7.54" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" +version = "1.4.3" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -684,15 +712,15 @@ version = "1.2.0" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.1" [[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "ee094908d720185ddbdc58dbe0c1cbe35453ec7a" +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "3f43c2aae6aa4a2503b05587ab74f4f6aeff9fd0" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.7" +version = "2.3.0" [[deps.Printf]] deps = ["Unicode"] @@ -705,9 +733,9 @@ version = "1.1.1" [[deps.RCall]] deps = ["CategoricalArrays", "Conda", "DataFrames", "DataStructures", "Dates", "Libdl", "Missings", "REPL", "Random", "Requires", "StatsModels", "WinReg"] -git-tree-sha1 = "535f5e8dde3b19d7da332002181d89432b38da33" +git-tree-sha1 = "3084689b18f9e5e817a6ce9a83a7654d8ad0f2f6" uuid = "6f49c342-dc21-5d91-9882-a32aef131414" -version = "0.13.17" +version = "0.13.18" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] @@ -744,11 +772,17 @@ version = "0.4.0+0" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" +version = "1.4.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -771,17 +805,11 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -[[deps.SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" +version = "1.2.0" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] @@ -806,15 +834,15 @@ version = "1.9.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "75ebe04c5bed70b91614d684259b661c9e6274a4" +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.0" +version = "0.34.2" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] @@ -831,15 +859,16 @@ version = "1.3.0" InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.StatsModels]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsBase", "StatsFuns", "Tables"] -git-tree-sha1 = "8cc7a5385ecaa420f0b3426f9b0135d0df0638ed" +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsAPI", "StatsBase", "StatsFuns", "Tables"] +git-tree-sha1 = "5cf6c4583533ee38639f73b880f35fc85f2941e0" uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" -version = "0.7.2" +version = "0.7.3" [[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" +version = "0.3.4" [[deps.StructEquality]] deps = ["Compat"] @@ -858,6 +887,12 @@ deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" version = "5.10.1+6" +[[deps.Suppressor]] +deps = ["Logging"] +git-tree-sha1 = "6cd9e4a207964c07bf6395beff7a1e8f21d0f3b2" +uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +version = "0.2.6" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" @@ -870,10 +905,10 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" version = "1.0.1" [[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" +version = "1.11.1" [[deps.Tar]] deps = ["ArgTools", "SHA"] @@ -885,20 +920,23 @@ deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" +version = "0.1.8" [[deps.URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" +version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -917,18 +955,6 @@ git-tree-sha1 = "cd910906b099402bcc50b3eafa9634244e5ec83b" uuid = "1b915085-20d7-51cf-bf83-8f477d6f5128" version = "1.0.0" -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" - [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" @@ -939,16 +965,16 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" version = "5.8.0+0" -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] @@ -956,36 +982,57 @@ uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" version = "17.4.0+0" """ +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +channels = ["conda-forge", "file:///home/jolin_user/.conda/channel"] + +[deps] +r-tidyverse = "" +r-plotly = "" +r-htmlwidgets = "" +r-dplyr = "" +r-htmltools = "" +r = "" +r-base = "" +r-curl = "" +r-juliacall = "" +""" + +' # ╔═╡ Cell order: -# ╟─7d64d3df-fdd0-4ca8-978d-81bf5de5f67e -# ╠═0058d8f2-eaac-11ed-1b10-7fcdeb83d83a -# ╠═97f5fd46-aa22-4bf8-8066-28600db4ad50 -# ╠═d0bd14e3-8d31-49d3-b0ce-5ce8a8bd4066 -# ╟─45e5fe58-a4b8-41d7-bfd8-f2e18926d068 -# ╟─f7b267a6-2322-4c0c-a3f4-314ae35afc12 -# ╠═2f873bd7-437a-4547-ac2f-13b0dd2fa4b9 -# ╟─3e1cf25c-9157-49fc-8d47-f7ac73227798 -# ╠═ba11c397-de55-4e68-b191-6a18d13afb74 -# ╟─07987d99-fa13-4d5e-a4fb-2b850ae6d575 -# ╠═fd738a39-1995-44d6-bacb-7a31503aac0f -# ╟─ae2ea558-dabe-427d-a5eb-685b939fc8b4 -# ╠═1e87466f-85f9-4807-9b0c-054779e936f0 -# ╠═05d43752-6324-43a1-b012-946e378f136e -# ╟─6dd1a7e4-f42d-4400-adb8-0436f5f7bd51 -# ╟─36d171b3-1b6d-458a-a7cd-d21ad4efd35d -# ╠═7ea6abdf-5597-42d7-a1c4-f3e56fa3ec3e -# ╠═d4a29ec1-f0e3-4edd-a42e-42c97509c204 -# ╠═b0cbfb71-8d8d-42b2-a42c-0c729200b1f2 -# ╠═2aaf5b19-8bf8-4a01-89c0-874e64f23bab -# ╠═a97befe2-35ee-416c-bac0-ca92cc5ba939 -# ╟─1ea69a2a-6f07-43cf-b78c-858132e5137b -# ╠═3e3f8262-60f2-4189-b767-a83d20b3fde9 -# ╟─d26049f0-a0ef-472b-ac4c-8a74c6969444 -# ╠═6820d1c9-4233-49ee-bd87-068a83cf98fa -# ╠═e24b0cc2-f4cb-417c-967a-84f64cd9010e -# ╟─7fa31165-3ec4-4fa1-b551-4885cbe4e6e4 -# ╠═679eaee0-f783-4985-a939-26f75a11c6f9 -# ╠═549518e0-45d5-4754-a414-26c02491989c -# ╟─e77ae33b-6f2f-416e-ad73-e5682e122900 +# ╟─fc7a55d0-4d1c-4d80-ba09-72387ffb6e9f +# ╟─ee72cfad-5450-4a0d-8008-902bb20c2b2d +# ╟─4da9978f-d86a-4bcf-857c-4951884b0cd4 +# ╟─277a40d2-f045-42a5-ad9d-f7d8d11f481f +# ╠═a8bd1bfc-e111-40ce-abac-4863972d09c9 +# ╠═bab55368-9770-4acc-b86b-c458503688bb +# ╠═dbc61ab1-3375-47c2-9f57-0e13e179f38d +# ╟─7ccca059-cc56-465b-b816-7272ca8706af +# ╠═337d6145-50cc-4af7-80f5-fd40bdac874e +# ╠═78d384ed-9523-4490-b2de-aac05d93907b +# ╠═67f197dd-c4f4-4c84-b419-605b8be5331f +# ╟─43b57ba5-ddb3-4c19-b4fd-37ec067a089e +# ╟─b1e9321e-3034-41ce-b773-7f19e600cc05 +# ╠═1ef8e34d-0f6f-4fe0-a941-b9aa7adec0a7 +# ╠═de436ec8-6bea-470d-aa99-e0395168297c +# ╠═b60c8044-7d33-4a71-9f29-6c1b23e7358a +# ╠═d134a72b-7f03-4696-a167-7ece6893d61e +# ╠═fa404b3b-e5a5-423a-b9c8-2457715cf010 +# ╠═be6d2b40-1446-4bde-ba58-182ab6c4d253 +# ╠═f8a85c13-3e98-418e-a1ec-8c8fdf8a81ea +# ╠═4464998e-c54a-4d9f-b783-abdb876463d8 +# ╠═9e25a075-ff64-4e0f-8a45-0e38ab4b033e +# ╠═b6ba5aad-6b60-411b-862f-a72b96144893 +# ╠═12686eb0-85d3-4083-aabf-5b677809e695 +# ╟─cbfd700f-f75a-4960-ab61-8c532f7f1f0f +# ╟─754969ed-1169-4a88-9599-eaafd9521dba +# ╠═e60dcd09-0a3a-408d-be62-cf1186699223 +# ╠═948c8696-981c-4f8f-ac57-6f87bdf104ba +# ╠═45a77625-1a00-429e-975e-0355e08d7641 +# ╠═2598ab9d-db24-4ad7-9d64-d6d6ca4b83de +# ╟─952bcee3-a1fd-4804-87f4-7f27047a196b +# ╠═d5716467-656c-4f6e-9ee4-58fbbd096e7f +# ╟─c508f1e7-5f3f-4600-af91-7694574f26ab # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/languages/julia.jl b/notebooks/2 dashboards/julia.jl similarity index 82% rename from notebooks/languages/julia.jl rename to notebooks/2 dashboards/julia.jl index c269a031..11d71476 100644 --- a/notebooks/languages/julia.jl +++ b/notebooks/2 dashboards/julia.jl @@ -1,5 +1,5 @@ ### A Pluto.jl notebook ### -# v0.19.42 +# v0.19.28 using Markdown using InteractiveUtils @@ -17,15 +17,16 @@ end # ╔═╡ 19802f02-dd81-4a5b-8f63-97c49d3bc8c1 using JolinPluto, PlutoUI, HypertextLiteral, CSV, DataFrames, Plots +# ╔═╡ 7d101262-04de-4272-ad86-2bfaf2f2ce13 +using HTTP + # ╔═╡ 05ca2710-857d-4cb6-aff9-66cfa173cc53 md""" # Julia Dashboard We are going to look at CO2 data. -> 👉 3, 1, 2. If you build your own dashboard later, remember that you can completely reorder the cells. For a dashboard this often makes sense in that the final plots and input elements could be moved to the top of the notebook. - -Here we keep normal ordering so that it is easier to understand what goes on. +> 👉 3, 1, 2. The order of cells does not matter to much for Pluto notebooks. Hence we can easily bring the summary to the top. """ # ╔═╡ a239e7bd-deb1-4d9c-83f8-ad8be69dca71 @@ -39,10 +40,10 @@ First time you use a new Julia package, it is going to be precompiled which take plotly() # activate plotly plotting backend # ╔═╡ 2dd702af-2c03-46e7-ae89-4a09dd087f85 -@output_below +@output_below # from JolinPluto # ╔═╡ 11b2cf52-fc74-4f7d-85be-0a5cb42394a4 -TableOfContents() +TableOfContents() # from PlutoUI # ╔═╡ 45308298-25b7-40e3-8643-852f35283675 md""" @@ -113,46 +114,43 @@ md""" The visualization is enhanced by plotly. Note that we can simply reuse the already defined input widgets. """ -# ╔═╡ 31adde32-492f-4c1d-929e-e46ba0a9943a -# little helper to support plotly responsiveness -# see this issue for updates https://github.com/JuliaPlots/Plots.jl/issues/4775 -function plotly_responsive(plt=Plots.current()) - HTML(replace( - Plots.embeddable_html(plt), - # adapt margin as it interfers with responsive - r"\"margin\": \{[^\}]*\},"s => """ - "margin": {"l": 40,"b": 40,"r": 0,"t": 22},""", - # delete extra outer style attribute - not needed at all - r"style=\"[^\"]*\""s => "", - # delete layout width as this interfers with responsiveness - r"\"width\":[^,}]*"s => "", - # add extra config json at the end of the call to Plotly.newPlot - ");" => ", {\"responsive\": true});" - )) +# ╔═╡ aaf50fdb-2955-4c37-9ee1-085f51dd7940 +output = begin + plot(subdata1[!, xaxis], subdata1[!, yaxis], xlabel=xaxis, ylabel=yaxis, label=country1, legend_position=:topleft) + plot!(subdata2[!, xaxis], subdata2[!, yaxis], xlabel=xaxis, ylabel=yaxis, label=country2) + plotly_responsive() # helper from JolinPluto, works only with plotly() backend end -# ╔═╡ a0c1ba81-8be4-40c8-9478-79b79ff56efc +# ╔═╡ aedb04d7-a69d-4fff-bf03-65d01169ccca md""" -# View only certain cells +# Next +- [Our World in Data - CO2 Data](https://github.com/owid/co2-data) for more details on the data source +- [`StatsPlots.jl`](https://github.com/JuliaPlots/StatsPlots.jl) and [`Plots.jl`](https://docs.juliaplots.org/stable/) for plotting +- [`CSV.jl`](https://csv.juliadata.org/stable/) for more on CSV support +- [`DataFrames.jl`](https://dataframes.juliadata.org/stable/) for more on Julia's Dataframes, especially its [comparison to python pandas / R Dataframe](https://dataframes.juliadata.org/stable/man/comparisons/) +- [`PlutoUI.jl`](https://github.com/JuliaPluto/PlutoUI.jl) for more prebuilt input widgets. -Pluto allows you to create dedicated views which only contain the output of a few specified cells. +Happy dashboarding 📈 📊! +""" -For this you need to know the cell-id of each cell. How? Use JolinPluto's helpers `@cell_ids_create_wrapper`, `@get` and `@cell_ids_push!`. It is super easy. +# ╔═╡ 0efc98b1-85b6-477b-adbe-ddc538260a55 +md""" +The first thing we need are the cell-id of each cell which output should be isolated. Use JolinPluto's helpers `@cell_ids_create_wrapper`, `@get` and `@cell_ids_push!`. It is super easy. """ # ╔═╡ d5b97eee-f200-4302-80df-301262b191e5 cell_ids_wrapper = @cell_ids_create_wrapper() -# ╔═╡ a3144b7e-01bf-4a9e-bba9-3d6ac8f9fbf2 -@cell_ids_push! cell_ids_wrapper; choose +# ╔═╡ 3c58b1f3-2a1d-4e27-92e2-62abe4421239 +cell_ids_push!(cell_ids_wrapper); choose -# ╔═╡ aaf50fdb-2955-4c37-9ee1-085f51dd7940 -begin - @cell_ids_push! cell_ids_wrapper - plot(subdata1[!, xaxis], subdata1[!, yaxis], xlabel=xaxis, ylabel=yaxis, label=country1, legend_position=:topleft) - plot!(subdata2[!, xaxis], subdata2[!, yaxis], xlabel=xaxis, ylabel=yaxis, label=country2) - plotly_responsive() -end +# ╔═╡ 055c3fd9-d421-4171-b41e-4f418ee56f8e +cell_ids_push!(cell_ids_wrapper); output + +# ╔═╡ 0dffe565-3ebf-4fa9-bc20-d9f93e5786c2 +md""" +`@cell_ids_create_wrapper` is a bit hidden at very top of this notebook - the final summary outputs are using this macro. +""" # ╔═╡ 2760c6c3-c65c-476f-b3e8-b2d198b4fc87 cell_ids = @get cell_ids_wrapper @@ -163,29 +161,23 @@ Having the cell_ids which auto-update themselves, we can construct a link for th """ # ╔═╡ a6e9add8-195a-4647-8662-d7c5b0251763 -url = "https://cloud.jolin.io/env/$(ENV["JOLIN_ENVIRONMENT"])/$(ENV["JOLIN_REPO"])/open?path=%2Fhome%2Fjolin_user%2Frepo%2Fnotebooks%2Flanguages%2Fjulia.jl" +url_open = "$(ENV["JOLIN_SITE"])/env/$(ENV["JOLIN_ENVIRONMENT"])/$(ENV["JOLIN_REPO"])/open?path=$(HTTP.escapeuri(split(@__FILE__, "#")[1]))" # ╔═╡ 797c7401-cae3-449f-b29c-0592da2da69b suffix_cell_ids = join("&isolated_cell_id=$id" for id in cell_ids) # ╔═╡ 8da59c96-2097-438d-b1bc-6c0721cf109f -link_view = @htl """ +link_view = @htl """👉 open dedicated view """ -# ╔═╡ 3871e8eb-af72-4588-8ce8-cbca96cfc552 -link_view - -# ╔═╡ aedb04d7-a69d-4fff-bf03-65d01169ccca +# ╔═╡ a0c1ba81-8be4-40c8-9478-79b79ff56efc md""" -# Next -- [Our World in Data - CO2 Data](https://github.com/owid/co2-data) for more details on the data source -- [`StatsPlots.jl`](https://github.com/JuliaPlots/StatsPlots.jl) and [`Plots.jl`](https://docs.juliaplots.org/stable/) for plotting -- [`CSV.jl`](https://csv.juliadata.org/stable/) for more on CSV support -- [`DataFrames.jl`](https://dataframes.juliadata.org/stable/) for more on Julia's Dataframes, especially its [comparison to python pandas / R Dataframe](https://dataframes.juliadata.org/stable/man/comparisons/) -- [`PlutoUI.jl`](https://github.com/JuliaPluto/PlutoUI.jl) for more prebuilt input widgets. +# Extra: View only certain cells -Happy dashboarding 📈 📊! +Pluto allows you to create dedicated views which only contain the output of a few specified cells. + +$link_view """ # ╔═╡ 00000000-0000-0000-0000-000000000001 @@ -193,6 +185,7 @@ PLUTO_PROJECT_TOML_CONTENTS = """ [deps] CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" @@ -201,31 +194,26 @@ PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" [compat] CSV = "~0.10.11" DataFrames = "~1.6.1" -HypertextLiteral = "~0.9.4" -JolinPluto = "~0.1.43" +HTTP = "~1.10.0" +HypertextLiteral = "~0.9.5" +JolinPluto = "~0.1.58" Plots = "~1.39.0" -PlutoUI = "~0.7.52" +PlutoUI = "~0.7.54" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.9.4" manifest_format = "2.0" -project_hash = "29d4fe3889f9d69a2c626c866fb7486c774791a4" - -[[deps.AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" +project_hash = "9eafa0660ce821c3f1d17f15925b8a3b048b668d" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" +version = "1.2.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -238,9 +226,9 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" +version = "0.1.8" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -262,15 +250,15 @@ version = "1.16.1+1" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" +version = "0.7.3" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "d9a8f86737b665e15a9641ecbac64deef9ce6724" +git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.23.0" +version = "3.24.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -298,9 +286,9 @@ version = "0.12.10" [[deps.Compat]] deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" +version = "4.10.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -313,9 +301,9 @@ version = "1.0.5+0" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" +version = "2.3.0" [[deps.Continuables]] deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] @@ -381,6 +369,12 @@ deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" + [[deps.ExceptionUnwrapping]] deps = ["Test"] git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" @@ -399,17 +393,6 @@ git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" version = "1.2.3" -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - [[deps.FFMPEG]] deps = ["FFMPEG_jll"] git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" @@ -417,16 +400,16 @@ uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" version = "0.4.1" [[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" +version = "4.4.4+1" [[deps.FilePathsBase]] deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "e27c4ebe80e8699540f2d6c805cc12203b614f12" +git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.20" +version = "0.9.21" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -473,15 +456,15 @@ version = "3.3.8+0" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "d73afa4a2bb9de56077242d98cf763074ab9a970" +git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.9" +version = "0.72.10" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "1596bab77f4f073a14c62424283e7ebff3072eca" +git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.9+1" +version = "0.72.10+0" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -495,23 +478,17 @@ git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" version = "1.3.0" -[[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" +version = "2.42.0+0" [[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" +version = "2.76.5+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -526,9 +503,9 @@ version = "1.0.2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -544,9 +521,9 @@ version = "0.0.4" [[deps.HypertextLiteral]] deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" +version = "0.9.5" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -554,11 +531,6 @@ git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" version = "0.2.3" -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - [[deps.InlineStrings]] deps = ["Parsers"] git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" @@ -579,11 +551,6 @@ git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" @@ -591,9 +558,9 @@ version = "1.0.0" [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" +git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.5" +version = "0.1.6" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -615,15 +582,27 @@ version = "1.13.2" [[deps.JWTs]] deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" +version = "0.2.3" [[deps.JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -656,9 +635,9 @@ uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" version = "2.10.1+0" [[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" +version = "1.3.1" [[deps.Latexify]] deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] @@ -677,12 +656,12 @@ version = "0.16.1" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] @@ -691,7 +670,7 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -721,10 +700,10 @@ uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" version = "1.42.0+0" [[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -769,9 +748,9 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" +version = "1.0.3" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -789,10 +768,10 @@ deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" +version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] @@ -813,12 +792,6 @@ version = "1.1.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.10.11" @@ -857,9 +830,9 @@ version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" +version = "3.0.12+0" [[deps.Opus_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -879,9 +852,9 @@ version = "10.42.0+0" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" +version = "2.8.0" [[deps.Pipe]] git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" @@ -933,15 +906,15 @@ version = "1.39.0" [[deps.PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" +version = "0.7.54" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" +version = "1.4.3" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -951,15 +924,15 @@ version = "1.2.0" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.1" [[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "ee094908d720185ddbdc58dbe0c1cbe35453ec7a" +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "3f43c2aae6aa4a2503b05587ab74f4f6aeff9fd0" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.7" +version = "2.3.0" [[deps.Printf]] deps = ["Unicode"] @@ -971,10 +944,10 @@ uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" version = "1.1.1" [[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] -git-tree-sha1 = "364898e8f13f7eaaceec55fd3d08680498c0aa6e" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.4.2+3" +version = "6.5.3+1" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] @@ -1003,9 +976,9 @@ version = "1.2.2" [[deps.RelocatableFolders]] deps = ["SHA", "Scratch"] -git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.0" +version = "1.0.1" [[deps.Requires]] deps = ["UUIDs"] @@ -1019,15 +992,15 @@ version = "0.7.0" [[deps.Scratch]] deps = ["Dates"] -git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a" +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.0" +version = "1.2.1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" +version = "1.4.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -1051,17 +1024,11 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -[[deps.SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" +version = "1.2.0" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] @@ -1074,20 +1041,21 @@ version = "1.9.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "75ebe04c5bed70b91614d684259b661c9e6274a4" +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.0" +version = "0.34.2" [[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" +version = "0.3.4" [[deps.StructEquality]] deps = ["Compat"] @@ -1118,10 +1086,10 @@ uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" version = "1.0.1" [[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" +version = "1.11.1" [[deps.Tar]] deps = ["ArgTools", "SHA"] @@ -1139,20 +1107,23 @@ deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" +version = "0.1.8" [[deps.URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" +version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -1169,9 +1140,9 @@ version = "0.4.1" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" +git-tree-sha1 = "242982d62ff0d1671e9029b52743062739255c7e" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.17.0" +version = "1.18.0" [deps.Unitful.extensions] ConstructionBaseUnitfulExt = "ConstructionBase" @@ -1192,11 +1163,17 @@ git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" version = "0.2.0" +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + [[deps.Wayland_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+0" +version = "1.21.0+1" [[deps.Wayland_protocols_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1216,16 +1193,10 @@ uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" version = "1.6.1" [[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "da69178aacc095066bad1f69d2f59a60a1dd8ad1" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" +version = "2.12.0+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] @@ -1235,9 +1206,21 @@ version = "1.1.34+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cf2c7de82431ca6f39250d2fc4aacd0daa1675c0" +git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.4+0" +version = "5.4.5+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.0.10+1" + +[[deps.Xorg_libSM_jll]] +deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] +git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.3+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] @@ -1317,6 +1300,12 @@ git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" version = "1.1.2+0" +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + [[deps.Xorg_xcb_util_image_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" @@ -1376,11 +1365,23 @@ git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.5+0" +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" +git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.29.0+0" +version = "0.35.1+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1399,34 +1400,46 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" version = "5.8.0+0" +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" version = "2.0.2+0" +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" version = "1.6.38+0" -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" version = "1.3.7+1" +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] @@ -1447,13 +1460,19 @@ version = "3.5.0+0" [[deps.xkbcommon_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+0" +version = "1.4.1+1" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ """ # ╔═╡ Cell order: # ╟─05ca2710-857d-4cb6-aff9-66cfa173cc53 +# ╟─3c58b1f3-2a1d-4e27-92e2-62abe4421239 +# ╟─055c3fd9-d421-4171-b41e-4f418ee56f8e # ╟─a239e7bd-deb1-4d9c-83f8-ad8be69dca71 # ╠═19802f02-dd81-4a5b-8f63-97c49d3bc8c1 # ╠═d650c1fc-9601-41fa-b69b-1ede5b875345 @@ -1474,17 +1493,18 @@ version = "1.4.1+0" # ╠═8d48cc04-91c5-4861-b2b2-925157297f71 # ╠═426c4994-f47f-465d-b2ca-c40d2a77d73e # ╟─2397576c-b463-4e93-89ce-ffa4718791aa -# ╠═a3144b7e-01bf-4a9e-bba9-3d6ac8f9fbf2 -# ╟─aaf50fdb-2955-4c37-9ee1-085f51dd7940 -# ╟─31adde32-492f-4c1d-929e-e46ba0a9943a +# ╠═aaf50fdb-2955-4c37-9ee1-085f51dd7940 +# ╟─aedb04d7-a69d-4fff-bf03-65d01169ccca # ╟─a0c1ba81-8be4-40c8-9478-79b79ff56efc -# ╟─3871e8eb-af72-4588-8ce8-cbca96cfc552 +# ╟─0efc98b1-85b6-477b-adbe-ddc538260a55 # ╠═d5b97eee-f200-4302-80df-301262b191e5 +# ╟─0dffe565-3ebf-4fa9-bc20-d9f93e5786c2 # ╠═2760c6c3-c65c-476f-b3e8-b2d198b4fc87 # ╟─bb942d86-c926-4e49-aed2-4914ac5fd839 +# ╠═7d101262-04de-4272-ad86-2bfaf2f2ce13 # ╠═a6e9add8-195a-4647-8662-d7c5b0251763 # ╠═797c7401-cae3-449f-b29c-0592da2da69b # ╠═8da59c96-2097-438d-b1bc-6c0721cf109f -# ╟─aedb04d7-a69d-4fff-bf03-65d01169ccca # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/2 dashboards/python.py b/notebooks/2 dashboards/python.py new file mode 100644 index 00000000..12c04a8e --- /dev/null +++ b/notebooks/2 dashboards/python.py @@ -0,0 +1,779 @@ +### A Pluto.jl notebook ### +# v0.19.28 +# Welcome to your Python reactive notebook. +from juliacall import Main as _jl + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html = _jl.seval('format_html(ans) = repr("text/html", ans)') +HTML = _jl.seval("HTML") +MD = _jl.seval('''begin + import CommonMark + parser = CommonMark.Parser() + CommonMark.enable!(parser, CommonMark.DollarMathRule()) + CommonMark.enable!(parser, CommonMark.TableRule()) + parser +end''') + +# This Pluto notebook uses `bind('xyz', ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +# setup julia reference to python globals (This works both from julia as well as from Python) +_jl.seval('''function(glo) + @eval const pyglobals=$glo +end''')(globals()) +# create the bind fallback function +bind = _jl.seval('''begin + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + pyglobals[name] = initial_value + ui + end +end''') + +# ╔═╡ 6a1b15b8-56da-43ed-be16-3d93c8b68978 +MD(""" +# Python Dashboard + +We are going to look at CO2 data. + +> 👉 3, 1, 2. The order of cells does not matter to much for Pluto notebooks. Hence we can easily bring the summary to the top. +""") + +# ╔═╡ 91209c08-a69a-4329-b829-3ad2804b41c5 +MD(""" +## Installing Dependencies + +This is done automatically for your. As soon as you import a package, it is installed via conda under the hood. +""") + +# ╔═╡ 5ecae7ea-7a17-11ee-3e1a-534a3b5b0996 +from juliacall import Main as jl +PlutoUI = jl.seval("import PlutoUI; PlutoUI") +JolinPluto = jl.seval("import JolinPluto; JolinPluto") +JolinPluto.output_below() + +# ╔═╡ 899451c9-6c1b-42cd-94ce-ed3635842af7 +PlutoUI.TableOfContents() + +# ╔═╡ 8bd55519-c06a-4785-80ed-96c25d23e972 +import pandas as pd +import plotly +from matplotlib import pyplot as plt + +# ╔═╡ 67345dc6-856b-41c0-ab90-4496141520a9 +MD(""" +## Import Data + +We use open co2 data from [Our World in Data - CO2 Data](https://github.com/owid/co2-data). +""") + +# ╔═╡ 49fed3b2-8c0b-457c-97a7-8cb21a5d8726 +df = pd.read_csv("https://nyc3.digitaloceanspaces.com/owid-public/data/co2/owid-co2-data.csv") + +# ╔═╡ 1a5f1145-2584-47c8-88bf-ea52cad9ae0d +columns = list(df.columns) + +# ╔═╡ 14750079-e345-462b-977c-9fdfdbe83496 +countries = list(dict.fromkeys(df["country"])) # simple unique + +# ╔═╡ ab5a27d6-b726-4469-8483-1d7228097b7d +MD(""" +## Interactive visualizations + +The reactivity comes from Pluto. The interactive widgets come from PlutoUI. The plotting happens on python side. Also plotly works awesomely well. +""") + +# ╔═╡ 80e19cbe-5449-4d58-9ca9-c9a3179c370c +MD(""" +### Input Widgets + +Interactive input widgets use the special `bind` function. +```julia +bind("country", PlutoUI.Select(countries; default="World")) +``` +This lets the variable `country` listen for updates on the select input. + +All these widgets can also be combined into markdown and html code using interpolation. +""") + +# ╔═╡ 368c8c63-5ed0-4e88-89b7-5628bdeed06c +ui1 = bind("country1", PlutoUI.Select(countries, default="World")) + +# ╔═╡ 3fae101a-1122-48ac-8b62-36429944da21 +ui2 = bind("country2", PlutoUI.Select(countries, default="Germany")) + +# ╔═╡ 3f43a3f2-2758-4b76-9d5f-746e69dd8ef7 +ui3 = bind("yaxis", PlutoUI.Select(columns, default="co2_per_capita")) + +# ╔═╡ c553549f-8774-4b70-8ec7-4e4ef20af9ca +choose = MD(f""" +| Parameter | Choose | +| --------- | :-------------------- | +| region 1 | {jl.format_html(ui1)} | +| region 2 | {jl.format_html(ui2)} | +| compare | {jl.format_html(ui3)} | +""") + +# ╔═╡ 82e89aad-4d2d-405d-8efb-21aa4d504f88 +choose + +# ╔═╡ bcb51149-f4fc-470a-bbd8-883e0c6f53b5 +{"yaxis": yaxis, "country1": country1, "country2": country2} + +# ╔═╡ 018774fc-05c3-4c64-a538-75059c7edf35 +xaxis = "year" # we fix the xaxis to be year + +# ╔═╡ e06da19f-244e-4ddb-a306-4eec59833131 +subdf1 = df[df["country"] == country1]; + +# ╔═╡ d4fb6d3a-8a0a-4623-9478-5130b84518cf +subdf2 = df[df["country"] == country2] + +# ╔═╡ 52cb65af-dc1e-4da3-b6ef-430fa70b967a +MD(""" +### Plotting using Matplotlib + +Works seamlessly. +""") + +# ╔═╡ 2029f4ad-64a9-42be-a4b9-98e2d6d67113 +figure, ax = plt.subplots() +ax.plot(subdf1[xaxis], subdf1[yaxis], label=country1) +ax.plot(subdf2[xaxis], subdf2[yaxis], color="orange", label=country2) +ax.legend(loc="upper left") +ax.set_xlabel(xaxis) +ax.set_ylabel(yaxis) +figure + +# ╔═╡ 8bf00ea5-9246-41da-9dc0-b218702e0998 +MD(""" +### Plotly works too + +We can make every matplotlib plot into a lovely interactive plotly plot. +""") + +# ╔═╡ 13663c56-b998-427f-8378-f77288432a0a +output = plotly.tools.mpl_to_plotly(figure).update_layout( + # enable responsive layout + autosize=True, width=None, height=None, + # reduce margins + margin={'l': 2, 'r':2, 't':24, 'b': 2}, +) + +# ╔═╡ 478fac9b-87db-4fc7-9783-23e3cd297f3c +output + +# ╔═╡ 37df6253-a4fd-4b2b-b77d-d8e7e6f3f34f +MD(""" +# Next +- [Our World in Data - CO2 Data](https://github.com/owid/co2-data) for more details on the data source +- [`PlutoUI`](https://github.com/JuliaPluto/PlutoUI.jl) for more prebuilt input widgets. + +Happy dashboarding 📈 📊! +""") + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + +[compat] +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +PythonCall = "~0.9.15" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "0b4bfcb0aa2933b5bb3a3ec0baa81eccbaa544de" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" + +[[deps.Continuables]] +deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] +git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" +uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" +version = "1.0.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataTypesBasic]] +git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" +uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" +version = "2.0.3" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprParsers]] +deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] +git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" +uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" +version = "1.2.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Git]] +deps = ["Git_jll"] +git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.42.0+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.13.2" + +[[deps.JWTs]] +deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" +uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +version = "0.2.3" + +[[deps.JolinPluto]] +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" +uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProxyInterfaces]] +git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" +uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" +version = "1.1.1" + +[[deps.PythonCall]] +deps = ["CondaPkg", "Dates", "Libdl", "MacroTools", "Markdown", "Pkg", "REPL", "Requires", "Serialization", "Tables", "UnsafePointers"] +git-tree-sha1 = "4999b3e4e9bdeba0b61ede19cc45a2128db21cdc" +uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" +version = "0.9.15" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SimpleMatch]] +git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" +uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StructEquality]] +deps = ["Compat"] +git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" +uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" +version = "2.1.0" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnsafePointers]] +git-tree-sha1 = "c81331b3b2e60a982be57c046ec91f599ede674a" +uuid = "e17b2a0c-0bdf-430a-bd0c-3a23cae4ff39" +version = "1.0.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +[deps] +pandas = "" +matplotlib = "" +plotly = "" +dill = "" + +[pip.deps] +juliacall = "" +""" + +# ╔═╡ Cell order: +# ╟─6a1b15b8-56da-43ed-be16-3d93c8b68978 +# ╟─82e89aad-4d2d-405d-8efb-21aa4d504f88 +# ╟─478fac9b-87db-4fc7-9783-23e3cd297f3c +# ╟─91209c08-a69a-4329-b829-3ad2804b41c5 +# ╠═5ecae7ea-7a17-11ee-3e1a-534a3b5b0996 +# ╠═899451c9-6c1b-42cd-94ce-ed3635842af7 +# ╠═8bd55519-c06a-4785-80ed-96c25d23e972 +# ╟─67345dc6-856b-41c0-ab90-4496141520a9 +# ╠═49fed3b2-8c0b-457c-97a7-8cb21a5d8726 +# ╠═1a5f1145-2584-47c8-88bf-ea52cad9ae0d +# ╠═14750079-e345-462b-977c-9fdfdbe83496 +# ╟─ab5a27d6-b726-4469-8483-1d7228097b7d +# ╟─80e19cbe-5449-4d58-9ca9-c9a3179c370c +# ╠═368c8c63-5ed0-4e88-89b7-5628bdeed06c +# ╠═3fae101a-1122-48ac-8b62-36429944da21 +# ╠═3f43a3f2-2758-4b76-9d5f-746e69dd8ef7 +# ╠═c553549f-8774-4b70-8ec7-4e4ef20af9ca +# ╠═bcb51149-f4fc-470a-bbd8-883e0c6f53b5 +# ╠═018774fc-05c3-4c64-a538-75059c7edf35 +# ╠═e06da19f-244e-4ddb-a306-4eec59833131 +# ╠═d4fb6d3a-8a0a-4623-9478-5130b84518cf +# ╟─52cb65af-dc1e-4da3-b6ef-430fa70b967a +# ╠═2029f4ad-64a9-42be-a4b9-98e2d6d67113 +# ╟─8bf00ea5-9246-41da-9dc0-b218702e0998 +# ╠═13663c56-b998-427f-8378-f77288432a0a +# ╟─37df6253-a4fd-4b2b-b77d-d8e7e6f3f34f +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/languages/r_figure.html b/notebooks/2 dashboards/r_figure.html similarity index 99% rename from notebooks/languages/r_figure.html rename to notebooks/2 dashboards/r_figure.html index d75281c6..877c029c 100644 --- a/notebooks/languages/r_figure.html +++ b/notebooks/2 dashboards/r_figure.html @@ -1933,9 +1933,9 @@
-
+
- - + + diff --git a/notebooks/languages/r_figure.png b/notebooks/2 dashboards/r_figure.png similarity index 100% rename from notebooks/languages/r_figure.png rename to notebooks/2 dashboards/r_figure.png diff --git a/notebooks/3 streams/R.R b/notebooks/3 streams/R.R new file mode 100644 index 00000000..382385c9 --- /dev/null +++ b/notebooks/3 streams/R.R @@ -0,0 +1,1117 @@ +### A Pluto.jl notebook ### +# v0.19.28 +# Welcome to your R reactive notebook. +library(JuliaCall) +julia_setup(installJulia=TRUE) + + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html <- julia_eval('format_html(ans) = repr("text/html", ans)') +HTML <- function(str) julia_call('HTML', str) +julia_eval('begin + import CommonMark + const md_parser = CommonMark.Parser() + CommonMark.enable!(md_parser, CommonMark.DollarMathRule()) + CommonMark.enable!(md_parser, CommonMark.TableRule()) +end') +MD <- function(str) julia_call('md_parser', str) + + +# This Pluto notebook uses `bind(xyz, ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +julia_eval('begin + import RCall + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + RCall.Const.GlobalEnv[name] = initial_value + ui + end +end') +bind <- function(var, ui) julia_call("bind", sys.call()[[2]], ui) + +# ╔═╡ 5471a2c4-ca3a-42d8-8c3a-7b31ee2751a6 +library(JuliaCall) +julia_setup(installJulia = TRUE) +jcall <- julia_eval("(f, args...; kwargs...) -> f(args...; kwargs...)") +PlutoUI <- julia_eval("using PlutoUI; PlutoUI") +JolinPluto <- julia_eval("using JolinPluto; JolinPluto") +julia_eval("using Dates") + +jcall(JolinPluto$output_below) + +# ╔═╡ 2643eae5-c7eb-4505-ada0-5469e31b0e8b +MD(" +# Self-updating Reactive Notebooks + +This is a small introduction about how to include and process continuous updates right in your reactive notebook. +") + +# ╔═╡ fa1682bb-832a-443f-b395-38f596b5acff +MD(" +We are simulating **financial data** (also called random walk) which is streamed onto a `Channel` object, read from it, and processed. + +You should be able to take this demo and adapt it to whatever continuous updates you may have at your company. +") + +# ╔═╡ 89c12b18-0d81-49d7-96a4-4914f22ea268 +jcall(PlutoUI$TableOfContents) + +# ╔═╡ 55614242-97ff-44ba-a91d-aebf26b1a349 +MD(" +## Create updates + +The simplest way to create updates is to repeatedly look whether some updates are available, and if so, putting them onto a queue, also called channel. +") + +# ╔═╡ 41e55219-23d7-42ee-9a52-41ec19f9fa87 +# This is a simple ingestion function. +# Note that it gets the current time as an argument +get_next <- function(){ + if (runif(1) > 0.9){ + "skip_value" + } else { + rnorm(1) + } +} + +# ╔═╡ 479eeff3-08de-4b33-adc9-aa122d5d4e80 +# This channel object holds a single item. +# ChannelWithRepeatedFill(get_next, 2, ...) would hold 2 elements. +channel = JolinPluto$ChannelWithRepeatedFill(get_next, 1, sleep_seconds=2.0, skip_value="skip_value") + +# ╔═╡ 14a13a52-0ad9-460e-a061-66b77401f8cb +MD(" +Your channel is now filling up. +") + +# ╔═╡ 22e1ab54-c82a-47b5-9003-d9aade7a95af +MD(" +## Fetch updates + +Having a channel full of updates, we can make Pluto read updates again and again and again.
+🪄 It is like magic 🪄 + +You can even disable updates for some time by opening the cell *menu* (the three dots top-right in the cell) and choose *Disable Cell*. +") + +# ╔═╡ f553b104-ad93-40cf-b543-03816851e549 +myupdate = JolinPluto$repeat_take(channel) + +# ╔═╡ 7c93dba1-1240-4b3e-b1e4-816a54b11a18 +MD(" +Let's collect these updates. For this a helper `create_bounded` is used which creates a bounded vector with maximum length. +") + +# ╔═╡ 06dbf7f5-bfb7-4641-a49e-043b98ca12b8 +MD("We change our update using `shift` and `variance` to make it more interactive.") + +# ╔═╡ 1da91e02-820b-11ee-1f92-f7346b778573 +MD(" +## User Interfaces + +Let's control `shift` and `variance` using user inputs. +") + +# ╔═╡ 12094397-79c2-4657-b10b-ea0e994c0d14 +ui1 <- bind(shift, jcall(PlutoUI$Slider, c(-3, -1, 0, 1, 3), default=0, show_value=TRUE)) +ui2 <- bind(variance, jcall(PlutoUI$Slider, c(1, 2, 10, 100), default=1, show_value=TRUE)) +list(ui1, ui2) + +# ╔═╡ 58b9e006-6176-4408-bdb1-e9a9f78ddc82 +MD(" +The above two lines create ui elements which update `shift` and `variance` respectively. + +You can try it by moving the above sliders. +") + +# ╔═╡ 8b6f51be-3fbb-4de2-98bf-44ad6b461940 +list(shift, variance) + +# ╔═╡ 4de78a2a-cebd-41a7-b00a-420ec17d1265 +MD(" +You can combine multiple input elements into arbitrary Markdown or HTML. +") + +# ╔═╡ 619b70e6-35dc-4916-bb6d-3cee6f19860a +library(stringr) + +# ╔═╡ c1a0e9c4-6df5-44a2-93ac-0c49dc5e516e +ui_choose = MD(str_interp(' +| | Choose | +| --------- | :------------------ | +| shift | <>${format_html(ui1)} | +| variance | <>${format_html(ui2)} | +')) + +# ╔═╡ aa621cef-af43-434d-b4e4-5f563749ea00 +ui_choose + +# ╔═╡ b5e0f819-e31b-4c0b-8fb5-2948de20f1e8 +MD(" +## Plotting + +Finally we build or graph. +") + +# ╔═╡ 77bc244c-5375-46eb-b7d6-d42180ed2bd3 +library(ggplot2) + +# ╔═╡ 3b68d0c5-00e7-40ef-a244-14b487f515b9 +# because files are syncronized to git, +# it is good to use temporary files for quickly changing intermediate files +output_file <- tempfile(fileext=".png") + +# ╔═╡ 771f6705-2e8c-428d-bc68-2f25db3c5de3 +MD(" +## Helpers + +We can change the order as we want - Pluto is tracking the dependencies for us. +") + +# ╔═╡ 0afd2336-4e47-49be-bcd0-3f949743c981 +create_bounded <- function(maxlen){ + # env is passed by reference + bounded <- new.env() + bounded$values <- c() + bounded$append <- function(next_elem){ + if (length(bounded$values) == maxlen){ + bounded$values <<- c(bounded$values[-1], next_elem) + } else { + bounded$values <<- c(bounded$values, next_elem) + } + } + bounded +} + +# ╔═╡ 8b1efe17-b364-4b29-8d67-258eae67afa0 +maxlen <- 20 +first_element <- 0.0 + +bounded <- create_bounded(maxlen) +bounded$append(first_element) +bounded$values + +# ╔═╡ 260aac7b-aa5c-4481-b6a8-e5799a9c2eae +noise <- myupdate * sqrt(variance) + shift +prev_value <- tail(bounded$values, n=1) +next_value <- prev_value + noise +bounded$append(next_value) + +# ╔═╡ 7241cf6f-61e7-4cbc-a98d-a4b5ffb64dc9 +# ╠═╡ show_logs = false +# depend on myupdate to auto trigger this cells +myupdate + +# ggplot understands dataframes best +mydf <- data.frame(x=1:length(bounded$values), y=bounded$values) + +# As of now Pluto R support has still some difficulties to understand non-standard syntax. Using !!sym() is a good workaround. Please write hello@jolin.io if you are interested in support for non-standard syntax. +p <- ggplot(mydf, aes(!!sym("x"), !!sym("y"))) + geom_line() + +# Plotting is currently still done via files. +# Please write hello@jolin.io if you are interested in better out-of-the-box support for plots. +ggsave(output_file, plot=p, height=4) +output <- jcall(PlutoUI$LocalResource, output_file) + +# ╔═╡ 66acdbe3-bb9a-46db-8689-38dfd4b658bc +output + +# ╔═╡ 77af2b87-291e-45d4-95d1-20ce054323d3 +MD(" +# Next + +- take a look at the other example notebooks + +That was probably your first streaming report ever 😎. +") + +# ╔═╡ d4163859-b13b-4af8-a777-f230b1ab9989 +MD(" +# Memory tracking + +For long running notebooks, it is important to make sure that no memory leaks appear. +") + +# ╔═╡ 7f81df5f-3b3a-47ab-9b92-c77aa19a9db7 +memory_tracking <- create_bounded(400) + +# ╔═╡ babd833a-3022-4616-8e65-f897d2b23a6d +MD(" +We use some julia code for time manipulations. `lubridate` works too. +") + +# ╔═╡ 3581b47a-f386-4805-8f0b-efd8365d96ed +next_time_rounded_by_10_seconds <- function() julia_eval('ceil(now(), Second(10))') +mytime <- next_time_rounded_by_10_seconds() + +# ╔═╡ 51dd7e14-e04e-4c03-ac06-1d0682040f7c +library(lubridate) +minute(mytime) + +# ╔═╡ 75f9b5b3-ea1c-4d0e-b537-6ce13322ff4b +# because files are syncronized to git, +# it is good to use temporary files for quickly changing intermediate files +memory_file <- tempfile(fileext=".png") + +# ╔═╡ dc3e8083-c903-4e15-8557-59ab65de6f3e +# ╠═╡ show_logs = false +# magic to repeat this very cell every 10 seconds +JolinPluto$repeat_at(next_time_rounded_by_10_seconds()) + +# collect memory usage +julia_eval('GC.gc(true); GC.gc(false)') +memory_tracking$append(julia_eval('Base.gc_live_bytes() / 2^20')) + +# plot it +df_memory <- data.frame( + time=1:length(memory_tracking$values), + MB=memory_tracking$values +) +p_memory <- ggplot(df_memory, aes(!!sym("time"), !!sym("MB"))) + geom_line() +ggsave(memory_file, plot=p_memory, height=4) +jcall(PlutoUI$LocalResource, memory_file) + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +' +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" +JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +RCall = "6f49c342-dc21-5d91-9882-a32aef131414" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" + +[compat] +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +RCall = "~0.13.18" +Suppressor = "~0.2.6" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "88e09e55ca80ae65cab0d3f967e276b6214546d1" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[deps.CategoricalArrays]] +deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] +git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.10.8" + + [deps.CategoricalArrays.extensions] + CategoricalArraysJSONExt = "JSON" + CategoricalArraysRecipesBaseExt = "RecipesBase" + CategoricalArraysSentinelArraysExt = "SentinelArrays" + CategoricalArraysStructTypesExt = "StructTypes" + + [deps.CategoricalArrays.weakdeps] + JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" + StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.Conda]] +deps = ["Downloads", "JSON", "VersionParsing"] +git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.10.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" + +[[deps.Continuables]] +deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] +git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" +uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" +version = "1.0.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.6.1" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.DataTypesBasic]] +git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" +uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" +version = "2.0.3" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprParsers]] +deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] +git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" +uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" +version = "1.2.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.Git]] +deps = ["Git_jll"] +git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.42.0+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.23" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InlineStrings]] +deps = ["Parsers"] +git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.InvertedIndices]] +git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.13.2" + +[[deps.JWTs]] +deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" +uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +version = "0.2.3" + +[[deps.JolinPluto]] +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" +uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "3f43c2aae6aa4a2503b05587ab74f4f6aeff9fd0" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.3.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProxyInterfaces]] +git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" +uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" +version = "1.1.1" + +[[deps.RCall]] +deps = ["CategoricalArrays", "Conda", "DataFrames", "DataStructures", "Dates", "Libdl", "Missings", "REPL", "Random", "Requires", "StatsModels", "WinReg"] +git-tree-sha1 = "3084689b18f9e5e817a6ce9a83a7654d8ad0f2f6" +uuid = "6f49c342-dc21-5d91-9882-a32aef131414" +version = "0.13.18" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.1" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.4.0+0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.ShiftedArrays]] +git-tree-sha1 = "503688b59397b3307443af35cd953a13e8005c16" +uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" +version = "2.0.0" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SimpleMatch]] +git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" +uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.0" + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + + [deps.StatsFuns.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.StatsModels]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsAPI", "StatsBase", "StatsFuns", "Tables"] +git-tree-sha1 = "5cf6c4583533ee38639f73b880f35fc85f2941e0" +uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" +version = "0.7.3" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.3.4" + +[[deps.StructEquality]] +deps = ["Compat"] +git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" +uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" +version = "2.1.0" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.Suppressor]] +deps = ["Logging"] +git-tree-sha1 = "6cd9e4a207964c07bf6395beff7a1e8f21d0f3b2" +uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +version = "0.2.6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.VersionParsing]] +git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.3.0" + +[[deps.WinReg]] +git-tree-sha1 = "cd910906b099402bcc50b3eafa9634244e5ec83b" +uuid = "1b915085-20d7-51cf-bf83-8f477d6f5128" +version = "1.0.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +channels = ["conda-forge", "file:///home/jolin_user/.conda/channel"] + +[deps] +r-lubridate = "" +r-ggplot2 = "" +r-stringr = "" +r = "" +r-base = "" +r-juliacall = "" +""" + +' +# ╔═╡ Cell order: +# ╟─2643eae5-c7eb-4505-ada0-5469e31b0e8b +# ╟─aa621cef-af43-434d-b4e4-5f563749ea00 +# ╟─66acdbe3-bb9a-46db-8689-38dfd4b658bc +# ╟─fa1682bb-832a-443f-b395-38f596b5acff +# ╠═5471a2c4-ca3a-42d8-8c3a-7b31ee2751a6 +# ╠═89c12b18-0d81-49d7-96a4-4914f22ea268 +# ╟─55614242-97ff-44ba-a91d-aebf26b1a349 +# ╠═41e55219-23d7-42ee-9a52-41ec19f9fa87 +# ╠═479eeff3-08de-4b33-adc9-aa122d5d4e80 +# ╟─14a13a52-0ad9-460e-a061-66b77401f8cb +# ╟─22e1ab54-c82a-47b5-9003-d9aade7a95af +# ╠═f553b104-ad93-40cf-b543-03816851e549 +# ╟─7c93dba1-1240-4b3e-b1e4-816a54b11a18 +# ╠═8b1efe17-b364-4b29-8d67-258eae67afa0 +# ╟─06dbf7f5-bfb7-4641-a49e-043b98ca12b8 +# ╠═260aac7b-aa5c-4481-b6a8-e5799a9c2eae +# ╟─1da91e02-820b-11ee-1f92-f7346b778573 +# ╠═12094397-79c2-4657-b10b-ea0e994c0d14 +# ╟─58b9e006-6176-4408-bdb1-e9a9f78ddc82 +# ╠═8b6f51be-3fbb-4de2-98bf-44ad6b461940 +# ╟─4de78a2a-cebd-41a7-b00a-420ec17d1265 +# ╠═619b70e6-35dc-4916-bb6d-3cee6f19860a +# ╠═c1a0e9c4-6df5-44a2-93ac-0c49dc5e516e +# ╟─b5e0f819-e31b-4c0b-8fb5-2948de20f1e8 +# ╠═77bc244c-5375-46eb-b7d6-d42180ed2bd3 +# ╠═3b68d0c5-00e7-40ef-a244-14b487f515b9 +# ╠═7241cf6f-61e7-4cbc-a98d-a4b5ffb64dc9 +# ╟─771f6705-2e8c-428d-bc68-2f25db3c5de3 +# ╠═0afd2336-4e47-49be-bcd0-3f949743c981 +# ╟─77af2b87-291e-45d4-95d1-20ce054323d3 +# ╟─d4163859-b13b-4af8-a777-f230b1ab9989 +# ╠═7f81df5f-3b3a-47ab-9b92-c77aa19a9db7 +# ╟─babd833a-3022-4616-8e65-f897d2b23a6d +# ╠═3581b47a-f386-4805-8f0b-efd8365d96ed +# ╠═51dd7e14-e04e-4c03-ac06-1d0682040f7c +# ╠═75f9b5b3-ea1c-4d0e-b537-6ce13322ff4b +# ╠═dc3e8083-c903-4e15-8557-59ab65de6f3e +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/streams/-introduction-.jl b/notebooks/3 streams/julia.jl similarity index 70% rename from notebooks/streams/-introduction-.jl rename to notebooks/3 streams/julia.jl index 9405ec4b..6db45fea 100644 --- a/notebooks/streams/-introduction-.jl +++ b/notebooks/3 streams/julia.jl @@ -1,5 +1,5 @@ ### A Pluto.jl notebook ### -# v0.19.42 +# v0.19.28 using Markdown using InteractiveUtils @@ -14,187 +14,206 @@ macro bind(def, element) end end -# ╔═╡ dc208762-8ce3-4c2e-831b-41eb942222a9 -using JolinPluto, PlutoUI, OnlineStats, Plots, Dates +# ╔═╡ b9e65ffc-18c4-48ca-a657-13bdcfa338ac +begin + using JolinPluto, PlutoUI, Dates + JolinPluto.output_below() +end -# ╔═╡ 377c20da-9b0d-4988-8d48-5d61e6c2f5e2 +# ╔═╡ f982f685-56a7-40ca-b9b3-e7a783c49bd7 using DataStructures -# ╔═╡ 1b817d06-ea92-11ed-37bc-1b2a379b913b +# ╔═╡ fb5f6d18-5b26-4012-9d8f-d8d5eb316002 +using Plots + +# ╔═╡ eed504cc-83d8-11ee-1256-c1fec17d8788 md""" -# Self-updating Reactive Notebooks +# Self-updating Reactive Notebooks This is a small introduction about how to include and process continuous updates right in your reactive notebook. """ -# ╔═╡ 41a7ca1e-a1ec-44d4-ae7b-b9cf50fde4ab -@output_below - -# ╔═╡ 4b04b5b2-322d-4cd4-9b3f-29dd7f32c0e6 -TableOfContents() - -# ╔═╡ e0696644-a4b7-4867-b6f0-0f8de801a5e0 +# ╔═╡ ef0a6231-faac-42f3-af5a-f0dd168538f6 md""" -## Channels +We are simulating **financial data** (also called random walk) which is streamed onto a `Channel` object, read from it, and processed. + +You should be able to take this demo and adapt to whatever continuous updates you may have at your company. """ -# ╔═╡ 34ff22d9-aea9-4902-8574-4fcad16085d8 +# ╔═╡ 30ae245f-f4a8-4aa2-8992-d564e5d0f563 +PlutoUI.TableOfContents() + +# ╔═╡ e6f1e1ef-8fc9-46f8-a7a9-9e174305de09 md""" -In julia the communication between parallel processes is typically realized via `Channel` objects. You `put!` things into it and `take!` things out again. Buffering, blocking, etc. is all done automatically for you. +## Create updates -Hence we recommend using `Channel`s to organize your streaming. Use `JolinPluto.@Channel` which integrates julia's standard Channel with Pluto. +The simplest way to create updates is to repeatedly look whether some updates are available, and if so, putting them onto a queue, also called channel. """ -# ╔═╡ e1b5c1c8-b778-4354-ac3f-ad0758f3ff40 -# buffers 10 elements -randomstream = @Channel(10) do ch +# ╔═╡ 698985dd-b081-4da8-a3ba-ac35a2e86b59 +# This channel object holds a single item. +# Channel(2) would hold 2 elements. +channel = @Channel(1) do ch while true - # put a random numbers onto channel - update = randn() - put!(ch, update) - sleep(1) + put!(ch, randn()) + sleep(2) end end -# ╔═╡ 5ac8318d-1ddc-43d1-bdd7-d75b98ea78ce +# ╔═╡ 113e0c89-1589-45ab-9646-8cfc71768842 md""" -Having such a stream of updates (here only pseudo random numbers), let's first take a update manually +Every second this tries to put a random values into the channel. If the channel is full, it simply blocks until it has capacity again. """ -# ╔═╡ c1d041e0-871f-492c-b2cc-e3fc15840627 -manual_update = take!(randomstream) - -# ╔═╡ 201f95bc-050b-4b9e-a8a8-965f29c6376d +# ╔═╡ 8d2ee184-4012-4706-b0ac-8d4e35d1dc9d md""" -In production we don't want to manually rerun the `take!`. Thankfully this got automatized for us in [`JolinPluto.@repeat_take!`](https://github.com/jolin-io/JolinPluto.jl). -""" - -# ╔═╡ abbe9af3-fd1c-4c69-8b1e-39cdf823eaa5 -update = @repeat_take! randomstream +## Fetch updates -# ╔═╡ 2722cbfc-9882-47d2-be86-b8732b7fff50 -md""" -Awesome! We have continuous updates. +Having a channel full of updates, we can make Pluto read updates again and again and again. -## Visualization +You can even disable updates for some time by opening the cell *menu* (the three dots top-right in the cell) and choose *Disable Cell*. +""" -Below you see one example how you can evaluate the stream using [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl). +# ╔═╡ 95c9d8eb-fcd7-48e0-a607-ffa4c9f9b8ac +update = @repeat_take! channel -We fit a self-adapting histogram and plot it. +# ╔═╡ 1831e3f6-0067-4516-b596-40c3cc5a1db7 +md""" +Let's collect these updates. """ -# ╔═╡ 8888c142-ade8-433f-bd49-262f5c1c98c9 +# ╔═╡ 9284050f-13b9-433f-9b35-49555faf698b +begin + max_length = 20 + first_element = 0.0 + + bounded_collection = CircularBuffer{Float64}(max_length) + push!(bounded_collection, first_element) +end + +# ╔═╡ 960dbccd-f8e7-43b1-babb-c046c5501b92 md""" -| Parameter | Choose | -| ----------- | :--- | -| number of bins | $(@bind nbins Select([5, 10, 100, 1000], default=100)) | -| smoothing parameter | $(@bind m Slider(0:1:10, default=4, show_value=true)) | +## User Interfaces + +Let's control `shift` and `variance` using user inputs. """ -# ╔═╡ caf2172a-6cca-4dfe-a2b3-1596772176a2 -o = Ash(ExpandingHist(nbins), m) +# ╔═╡ 3b0ebdf4-f318-411a-8734-f45701969e02 +begin + ui1 = @bind shift Slider([-3, -1, 0, 1, 3], default=0, show_value=true) + ui2 = @bind variance Slider([1, 2, 10, 100], default=1, show_value=true) + ui1, ui2 +end -# ╔═╡ dd47cddd-5dc8-452b-8b4a-c1098156cb2f +# ╔═╡ c46a7eed-5357-4031-8e0b-8d96473d3a16 begin - fit!(o, [update]) - plot(o) + noise = update * sqrt(variance) + shift + prev_value = bounded_collection[end] + next_value = prev_value + noise + push!(bounded_collection, next_value) end -# ╔═╡ 335a52f6-c156-460a-a3e7-d0253db94629 +# ╔═╡ 1b0a3564-a78c-4f76-b367-6d2366cb3f86 md""" -## Repeat without Channel +The above two lines create ui elements which update `shift` and `variance` respectively. -For a simple time-based repetition, there is a second magic macro `@repeat_at`. You usually use it like +You can try it by moving the above sliders. +""" -```julia -result = @repeat_at(compute_next_time()) do datetime - # load data, etc. - # the variable `datetime` contains the current time for the repeated event - datetime -end -``` +# ╔═╡ 8999f0f1-3604-49e5-bf3b-b31e8a7f305e +shift, variance + +# ╔═╡ f2eef049-e715-4e1a-b9e9-280325193ad9 +md""" +You can combine multiple input elements into arbitrary Markdown or HTML. +""" -In the following example we use `ceil(now(), Second(10))` instead of compute_next_time(). -- This is normal julia code, using the Dates package. It will return the current time rounded up to 10 Seconds. -- i.e. the repetition will trigger every 10 Seconds. +# ╔═╡ ffba49c2-6dc3-4a78-985c-0f6c4e2448d3 +choose = md""" +| | choose | +|----------|:-------| +| shift | $ui1 | +| variance | $ui2 | """ -# ╔═╡ 8f9abcd1-f7af-43d8-b4f3-22568926de6f -value, time = @repeat_at(ceil(now(), Second(10))) do t - rand(), t -end +# ╔═╡ bd6e7590-b9a4-4d07-86e7-ed6a28a3da0d +choose -# ╔═╡ 1b6abf77-24d9-4db5-afee-3d90f23def59 +# ╔═╡ 883f5836-f233-4a48-a659-c47d55aed05f md""" -## Memory tracking - -Sometimes you may introduce silent memory leaks. This can happen for instance if you redefine functions a lot. +## Plotting -Here an example how you can track memory. +Finally we build or graph. """ -# ╔═╡ cbf8bc21-3ff2-4af6-b7f4-6c919bf6d827 -memories = CircularBuffer{Float64}(150) - -# ╔═╡ 0f3fcdea-6646-46d9-8be6-f278cb40c7db +# ╔═╡ b8085389-9679-432f-ae5a-fb9b29148f42 begin - value - GC.gc(true); GC.gc(false) # it is recommended to run both versions - push!(memories, Base.gc_live_bytes() / 2^20) - plot(memories, ylabel="MB") + # depend on update to auto trigger this cells + update + output = plot(bounded_collection) end -# ╔═╡ 72d54a3c-9371-4db9-9fed-5e8fa0343283 +# ╔═╡ 084b7ac4-6874-48fa-a79d-24fb13490bf9 +output + +# ╔═╡ 1b7274fc-826d-4510-a3df-2f7c3a4b3a31 md""" # Next +- take a look at the other example notebooks - [OnlineStats.jl](https://github.com/joshday/OnlineStats.jl) for more awesome visualizations and realtime analysis That was probably your first streaming report ever 😎. """ +# ╔═╡ 95002bdd-0f7e-45a4-ad4c-1b9f04216094 +md""" +# Memory tracking + +For long running notebooks, it is important to make sure that no memory leaks appear. +""" + +# ╔═╡ f8e9230e-3181-4bc1-ae12-816b1c9e0e1b +memory_tracking = CircularBuffer{Float64}(400) + +# ╔═╡ 57a4a0f8-9d50-4a26-86d4-bb99d5697aa6 +begin + @repeat_at ceil(now(), Second(10)) + # run Garbage Collector (it is recommended to run both versions) + GC.gc(true); GC.gc(false) + push!(memory_tracking, Base.gc_live_bytes() / 2^20) + plot(memory_tracking, ylabel="MB") +end + # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -OnlineStats = "a15396b6-48d5-5d58-9928-6d29437db91e" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" [compat] DataStructures = "~0.18.15" -JolinPluto = "~0.1.43" -OnlineStats = "~1.6.3" +JolinPluto = "~0.1.58" Plots = "~1.39.0" -PlutoUI = "~0.7.52" +PlutoUI = "~0.7.54" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.9.4" manifest_format = "2.0" -project_hash = "402b4bf8081f1e868150a96d53a044b149c2ff50" - -[[deps.AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" +project_hash = "8c5969c88051571cd93b031ac231c478093eb5bd" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" - -[[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" +version = "1.2.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -207,9 +226,9 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" +version = "0.1.8" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -223,23 +242,17 @@ git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" version = "1.16.1+1" -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" +version = "0.7.3" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "d9a8f86737b665e15a9641ecbac64deef9ce6724" +git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.23.0" +version = "3.24.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -252,11 +265,13 @@ deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statist git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" version = "0.10.0" -weakdeps = ["SpecialFunctions"] [deps.ColorVectorSpace.extensions] SpecialFunctionsExt = "SpecialFunctions" + [deps.ColorVectorSpace.weakdeps] + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" @@ -265,9 +280,9 @@ version = "0.12.10" [[deps.Compat]] deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" +version = "4.10.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -280,9 +295,9 @@ version = "1.0.5+0" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" +version = "2.3.0" [[deps.Continuables]] deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] @@ -321,20 +336,6 @@ git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" version = "1.9.1" -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "938fe2981db009f531b6332e31c58e9584a2f9bd" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.100" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - [[deps.DocStringExtensions]] deps = ["LibGit2"] git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" @@ -346,11 +347,11 @@ deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] @@ -370,17 +371,6 @@ git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" version = "1.2.3" -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - [[deps.FFMPEG]] deps = ["FFMPEG_jll"] git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" @@ -388,25 +378,14 @@ uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" version = "0.4.1" [[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" +version = "4.4.4+1" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random"] -git-tree-sha1 = "a20eaa3ad64254c61eeb5f230d9306e937405434" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.6.1" -weakdeps = ["SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - [[deps.FixedPointNumbers]] deps = ["Statistics"] git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" @@ -445,15 +424,15 @@ version = "3.3.8+0" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "d73afa4a2bb9de56077242d98cf763074ab9a970" +git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.9" +version = "0.72.10" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "1596bab77f4f073a14c62424283e7ebff3072eca" +git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.9+1" +version = "0.72.10+0" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -467,23 +446,17 @@ git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" version = "1.3.0" -[[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" +version = "2.42.0+0" [[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" +version = "2.76.5+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -498,9 +471,9 @@ version = "1.0.2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -508,12 +481,6 @@ git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" version = "2.8.1+1" -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - [[deps.Hyperscript]] deps = ["Test"] git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" @@ -522,9 +489,9 @@ version = "0.0.4" [[deps.HypertextLiteral]] deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" +version = "0.9.5" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -532,11 +499,6 @@ git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" version = "0.2.3" -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" @@ -546,16 +508,11 @@ git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - [[deps.JLFzf]] deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" +git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d" uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.5" +version = "0.1.6" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -577,15 +534,27 @@ version = "1.13.2" [[deps.JWTs]] deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" +version = "0.2.3" [[deps.JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -618,9 +587,9 @@ uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" version = "2.10.1+0" [[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" +version = "1.3.1" [[deps.Latexify]] deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] @@ -639,12 +608,12 @@ version = "0.16.1" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] @@ -653,7 +622,7 @@ uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -683,10 +652,10 @@ uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" version = "1.42.0+0" [[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -731,9 +700,9 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" +version = "1.0.3" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -751,10 +720,10 @@ deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" +version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] @@ -775,12 +744,6 @@ version = "1.1.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.10.11" @@ -801,18 +764,6 @@ git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" version = "1.3.5+1" -[[deps.OnlineStats]] -deps = ["AbstractTrees", "Dates", "Distributions", "LinearAlgebra", "OnlineStatsBase", "OrderedCollections", "Random", "RecipesBase", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"] -git-tree-sha1 = "d3f41f18b9abaa2c64e8e0c43921df9b61ec8d02" -uuid = "a15396b6-48d5-5d58-9928-6d29437db91e" -version = "1.6.3" - -[[deps.OnlineStatsBase]] -deps = ["AbstractTrees", "Dates", "LinearAlgebra", "OrderedCollections", "Statistics", "StatsBase"] -git-tree-sha1 = "790f151a4650b77850ec2313eae034e99823dafe" -uuid = "925886fa-5bf2-5e8e-b522-a9147a512338" -version = "1.6.1" - [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" @@ -831,15 +782,9 @@ version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" +version = "3.0.12+0" [[deps.Opus_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -857,17 +802,11 @@ deps = ["Artifacts", "Libdl"] uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" version = "10.42.0+0" -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.17" - [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" +version = "2.8.0" [[deps.Pipe]] git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" @@ -919,9 +858,9 @@ version = "1.39.0" [[deps.PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" +version = "0.7.54" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -931,9 +870,9 @@ version = "1.2.0" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" +version = "1.4.1" [[deps.Printf]] deps = ["Unicode"] @@ -945,16 +884,10 @@ uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" version = "1.1.1" [[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] -git-tree-sha1 = "364898e8f13f7eaaceec55fd3d08680498c0aa6e" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.4.2+3" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.8.2" +version = "6.5.3+1" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] @@ -983,9 +916,9 @@ version = "1.2.2" [[deps.RelocatableFolders]] deps = ["SHA", "Scratch"] -git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.0" +version = "1.0.1" [[deps.Requires]] deps = ["UUIDs"] @@ -993,27 +926,15 @@ git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.0" -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" [[deps.Scratch]] deps = ["Dates"] -git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a" +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.0" +version = "1.2.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -1037,34 +958,16 @@ version = "1.1.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -[[deps.SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" +version = "1.2.0" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.1" - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - - [deps.SpecialFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" @@ -1072,29 +975,15 @@ version = "1.9.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "75ebe04c5bed70b91614d684259b661c9e6274a4" +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.0" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.34.2" [[deps.StructEquality]] deps = ["Compat"] @@ -1108,10 +997,6 @@ git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" version = "1.10.0" -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" @@ -1138,20 +1023,23 @@ deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] [[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" +version = "0.1.8" [[deps.URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" +version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -1168,9 +1056,9 @@ version = "0.4.1" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" +git-tree-sha1 = "242982d62ff0d1671e9029b52743062739255c7e" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.17.0" +version = "1.18.0" [deps.Unitful.extensions] ConstructionBaseUnitfulExt = "ConstructionBase" @@ -1191,11 +1079,17 @@ git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" version = "0.2.0" +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + [[deps.Wayland_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+0" +version = "1.21.0+1" [[deps.Wayland_protocols_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1204,16 +1098,10 @@ uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" version = "1.25.0+0" [[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "da69178aacc095066bad1f69d2f59a60a1dd8ad1" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" +version = "2.12.0+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] @@ -1223,9 +1111,21 @@ version = "1.1.34+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cf2c7de82431ca6f39250d2fc4aacd0daa1675c0" +git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.4+0" +version = "5.4.5+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.0.10+1" + +[[deps.Xorg_libSM_jll]] +deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] +git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.3+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] @@ -1305,6 +1205,12 @@ git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" version = "1.1.2+0" +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + [[deps.Xorg_xcb_util_image_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" @@ -1364,11 +1270,23 @@ git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.5+0" +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + [[deps.fzf_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" +git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.29.0+0" +version = "0.35.1+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1387,34 +1305,46 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" version = "5.8.0+0" +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" version = "2.0.2+0" +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" version = "1.6.38+0" -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" version = "1.3.7+1" +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] @@ -1435,33 +1365,44 @@ version = "3.5.0+0" [[deps.xkbcommon_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+0" +version = "1.4.1+1" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ """ # ╔═╡ Cell order: -# ╟─1b817d06-ea92-11ed-37bc-1b2a379b913b -# ╠═dc208762-8ce3-4c2e-831b-41eb942222a9 -# ╠═41a7ca1e-a1ec-44d4-ae7b-b9cf50fde4ab -# ╠═4b04b5b2-322d-4cd4-9b3f-29dd7f32c0e6 -# ╟─e0696644-a4b7-4867-b6f0-0f8de801a5e0 -# ╟─34ff22d9-aea9-4902-8574-4fcad16085d8 -# ╠═e1b5c1c8-b778-4354-ac3f-ad0758f3ff40 -# ╟─5ac8318d-1ddc-43d1-bdd7-d75b98ea78ce -# ╠═c1d041e0-871f-492c-b2cc-e3fc15840627 -# ╟─201f95bc-050b-4b9e-a8a8-965f29c6376d -# ╠═abbe9af3-fd1c-4c69-8b1e-39cdf823eaa5 -# ╟─2722cbfc-9882-47d2-be86-b8732b7fff50 -# ╟─8888c142-ade8-433f-bd49-262f5c1c98c9 -# ╠═caf2172a-6cca-4dfe-a2b3-1596772176a2 -# ╠═dd47cddd-5dc8-452b-8b4a-c1098156cb2f -# ╟─335a52f6-c156-460a-a3e7-d0253db94629 -# ╠═8f9abcd1-f7af-43d8-b4f3-22568926de6f -# ╟─1b6abf77-24d9-4db5-afee-3d90f23def59 -# ╠═377c20da-9b0d-4988-8d48-5d61e6c2f5e2 -# ╠═cbf8bc21-3ff2-4af6-b7f4-6c919bf6d827 -# ╠═0f3fcdea-6646-46d9-8be6-f278cb40c7db -# ╟─72d54a3c-9371-4db9-9fed-5e8fa0343283 +# ╟─eed504cc-83d8-11ee-1256-c1fec17d8788 +# ╟─bd6e7590-b9a4-4d07-86e7-ed6a28a3da0d +# ╟─084b7ac4-6874-48fa-a79d-24fb13490bf9 +# ╟─ef0a6231-faac-42f3-af5a-f0dd168538f6 +# ╠═b9e65ffc-18c4-48ca-a657-13bdcfa338ac +# ╠═30ae245f-f4a8-4aa2-8992-d564e5d0f563 +# ╟─e6f1e1ef-8fc9-46f8-a7a9-9e174305de09 +# ╠═698985dd-b081-4da8-a3ba-ac35a2e86b59 +# ╟─113e0c89-1589-45ab-9646-8cfc71768842 +# ╟─8d2ee184-4012-4706-b0ac-8d4e35d1dc9d +# ╠═95c9d8eb-fcd7-48e0-a607-ffa4c9f9b8ac +# ╟─1831e3f6-0067-4516-b596-40c3cc5a1db7 +# ╠═f982f685-56a7-40ca-b9b3-e7a783c49bd7 +# ╠═9284050f-13b9-433f-9b35-49555faf698b +# ╠═c46a7eed-5357-4031-8e0b-8d96473d3a16 +# ╟─960dbccd-f8e7-43b1-babb-c046c5501b92 +# ╠═3b0ebdf4-f318-411a-8734-f45701969e02 +# ╟─1b0a3564-a78c-4f76-b367-6d2366cb3f86 +# ╠═8999f0f1-3604-49e5-bf3b-b31e8a7f305e +# ╟─f2eef049-e715-4e1a-b9e9-280325193ad9 +# ╠═ffba49c2-6dc3-4a78-985c-0f6c4e2448d3 +# ╟─883f5836-f233-4a48-a659-c47d55aed05f +# ╠═fb5f6d18-5b26-4012-9d8f-d8d5eb316002 +# ╠═b8085389-9679-432f-ae5a-fb9b29148f42 +# ╟─1b7274fc-826d-4510-a3df-2f7c3a4b3a31 +# ╟─95002bdd-0f7e-45a4-ad4c-1b9f04216094 +# ╠═f8e9230e-3181-4bc1-ae12-816b1c9e0e1b +# ╠═57a4a0f8-9d50-4a26-86d4-bb99d5697aa6 # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/3 streams/python.py b/notebooks/3 streams/python.py new file mode 100644 index 00000000..f7fba275 --- /dev/null +++ b/notebooks/3 streams/python.py @@ -0,0 +1,832 @@ +### A Pluto.jl notebook ### +# v0.19.28 +# Welcome to your Python reactive notebook. +from juliacall import Main as _jl + +# This Pluto notebook uses `format_html`, `MD` and `HTML` to build rich outputs inside Pluto. For running this notebook outside of Pluto, the following definitions are important. +format_html = _jl.seval('format_html(ans) = repr("text/html", ans)') +HTML = _jl.seval("HTML") +MD = _jl.seval('''begin + import CommonMark + parser = CommonMark.Parser() + CommonMark.enable!(parser, CommonMark.DollarMathRule()) + CommonMark.enable!(parser, CommonMark.TableRule()) + parser +end''') + +# This Pluto notebook uses `bind('xyz', ...)` for interactivity. When running this notebook outside of Pluto, the following 'mock version' of `bind` gives bound variables a default value (instead of an error). +# setup julia reference to python globals (This works both from julia as well as from Python) +_jl.seval('''function(glo) + @eval const pyglobals=$glo +end''')(globals()) +# create the bind fallback function +bind = _jl.seval('''begin + function bind(name, ui) + initial_value_getter = try + Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value + catch + b -> missing + end + initial_value = Core.applicable(Base.get, ui) ? Base.get(ui) : initial_value_getter(ui) + pyglobals[name] = initial_value + ui + end +end''') + +# ╔═╡ 040b90c8-8ed3-4497-866a-bed69b2e27e1 +from juliacall import Main as jl +jl.seval("using Dates") +JolinPluto = jl.seval("import JolinPluto; JolinPluto") +PlutoUI = jl.seval("import PlutoUI; PlutoUI") +JolinPluto.output_below() + +# ╔═╡ 172fbef1-3f9e-4ca2-bdc5-8d2755d62c34 +MD(""" +# Self-updating Reactive Notebooks + +This is a small introduction about how to include and process continuous updates right in your reactive notebook. +""") + +# ╔═╡ 35229634-2c40-4de9-8911-a61ceb32f663 +MD(""" +We are simulating **financial data** (also called random walk) which is streamed onto a python queue, read from it, and processed. + +You should be able to take this demo and adapt to whatever continuous updates you may have at your company. +""") + +# ╔═╡ fa392c32-7ed6-11ee-02d6-e5f4f5490be6 +import queue +import threading +import time +import random +import math +from collections import deque +from matplotlib import pyplot as plt + +# ╔═╡ 83f49510-e63b-45af-9c5e-0686f10d154f +PlutoUI.TableOfContents() + +# ╔═╡ a421c2ba-f2b4-463a-bfb1-e05e5879e918 +MD(""" +## Create updates + +The simplest way to create updates is to create a queue and ... +- start a separate thread to look for updates +- if there is an update put it onto the queue. +""") + +# ╔═╡ 6ffa64f4-0126-4536-912f-387d4ad9bbf5 +q = queue.Queue(maxsize=2) + +# ╔═╡ e4b67d9e-b974-470e-ab59-20f04117deb1 +def thread_queueput_random(stop_event): + while not stop_event.is_set(): + x = random.gauss() + q.put(x) + time.sleep(2) + +# ╔═╡ 7e148569-41e8-444f-a039-f5e91839bcfc +stop_event = JolinPluto.start_python_thread(thread_queueput_random) + +# ╔═╡ ad6a5da9-304c-4d09-b59f-c35c31123b18 +MD(""" +Your queue is now filling up. +""") + +# ╔═╡ 07e65d43-6f09-4221-acfb-de05a64283e6 +MD(""" +## Fetch updates + +Having a channel full of updates, we can make Pluto read updates again and again and again.
+🪄 It is like magic 🪄 + +You can even disable updates for some time by opening the cell *menu* (the three dots top-right in the cell) and choose *Disable Cell*. +""") + +# ╔═╡ ff1a1833-a060-4939-bf96-50d6bbc2b974 +update = JolinPluto.repeat_queueget(q) + +# ╔═╡ d8f62255-a239-45bc-8042-0eda43caff8a +MD(""" +Let's collect these updates. +""") + +# ╔═╡ 97fcba32-bbca-4570-a4da-4a8438a5e10f +maxlen = 20 +first_element = 0.0 +bounded_collection = deque([first_element], maxlen) + +# ╔═╡ c0afe0d1-3eb8-4274-b4cc-018097d1bdb2 +MD(""" +## User Interfaces + +Let's control `shift` and `variance` using user inputs. +""") + +# ╔═╡ 09f75fd2-6096-48d5-8f80-fd775e01025f +ui1 = bind("shift", PlutoUI.Slider([-3, -1, 0, 1, 3], default=0, show_value=True)) +ui2 = bind("variance", PlutoUI.Slider([1, 2, 10, 100], default=1, show_value=True)) +ui1, ui2 + +# ╔═╡ 5095d2c5-7b3c-4cb7-b694-d7ce4b32fd90 +noise = update * math.sqrt(variance) + shift +prev_element = bounded_collection[-1] +next_element = prev_element + noise + +bounded_collection.append(next_element) +bounded_collection + +# ╔═╡ 34eb23e8-b0a6-4edc-911b-bedd8dd0a232 +MD(""" +The above two lines create ui elements which update `shift` and `variance` respectively. + +You can try it by moving the above sliders. +""") + +# ╔═╡ 149ee90f-d5ea-4791-8bad-3f3f260d9f28 +shift, variance + +# ╔═╡ b6d0153c-e777-421f-8699-02340e0ad273 +MD(""" +You can combine multiple input elements into arbitrary Markdown or HTML. +""") + +# ╔═╡ da871125-8067-4441-b5df-d76d609bc46d +# The <>... wrapper is needed because most MD parsers don't parse inline html well. Using <>... is our super useful little extension. +choose = MD(f''' +| | choose | +|----------|:------------------------| +| shift | <>{format_html(ui1)} | +| variance | <>{format_html(ui2)} | +''') + +# ╔═╡ 16609b7c-0fa7-41d3-8dd4-4a99aaeeb0d7 +choose + +# ╔═╡ 10246e4d-66e3-41fb-b92c-4900e0d5454b +MD(""" +## Plotting + +Finally we build or graph. +""") + +# ╔═╡ 5f277b91-20ef-448c-83f8-3ee504644f3b +# depend on update to auto trigger this cells +update +figure, ax = plt.subplots() +ax.plot(bounded_collection) +figure + +# ╔═╡ 60a9e137-1f35-4268-ad10-be6104431e04 +figure + +# ╔═╡ e232f3f9-9687-4b1a-9428-47f9aef9ec6b +MD(""" +# Next + +- take a look at the other example notebooks + +That was probably your first streaming report ever 😎. +""") + +# ╔═╡ 6a1f8649-eb6b-47b5-bae2-b834f7f79f69 +MD(""" +# Memory tracking + +For long running notebooks, it is important to make sure that no memory leaks appear. +""") + +# ╔═╡ 0316b6ed-5fa7-41e1-8230-616150c3b2a0 +memory_tracking = deque([], 400) + +# ╔═╡ 7d670f9f-6fd5-40fa-ac82-4a6b034a2b7c +MD(""" +We use some julia code for time manipulations. It automatically converts to datetimes. +""") + +# ╔═╡ bc23101c-fdee-4fa8-a2e0-105d73eeefb5 +def next_time_rounded_by_X_seconds(x): + return jl.ceil(jl.now(), jl.Second(x)) + +dtime = next_time_rounded_by_X_seconds(10) +dtime, dtime.minute + +# ╔═╡ 36679b5b-5fcc-499b-bd0e-74556d34daf3 +# magic to repeat this very cell every 10 seconds +JolinPluto.repeat_at(next_time_rounded_by_X_seconds(10)) + +# run Garbage Collector (it is recommended to run both versions) +jl.GC.gc(True); jl.GC.gc(False) +memory_tracking.append(jl.Base.gc_live_bytes() / 2**20) + +figure2, ax2 = plt.subplots() +ax2.plot(memory_tracking) +ax2.set_ylabel("MB") +figure2 + +# ╔═╡ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +CommonMark = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" +JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + +[compat] +CommonMark = "~0.8.12" +CondaPkg = "~0.2.22" +JolinPluto = "~0.1.58" +PlutoUI = "~0.7.54" +PythonCall = "~0.9.15" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.4" +manifest_format = "2.0" +project_hash = "c1f70bcdae1c24af50e9e5dcfcd1482c74815bf5" + +[[deps.AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "793501dcd3fa7ce8d375a2c878dca2296232686e" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.2.2" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BitFlags]] +git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.8" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.CommonMark]] +deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] +git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" +version = "0.8.12" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.CondaPkg]] +deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] +git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" +uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" +version = "0.2.22" + +[[deps.Continuables]] +deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] +git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" +uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" +version = "1.0.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataTypesBasic]] +git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" +uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" +version = "2.0.3" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprParsers]] +deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] +git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" +uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" +version = "1.2.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Git]] +deps = ["Git_jll"] +git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.3.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "bb8f7cc77ec1152414b2af6db533d9471cfbb2d1" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.42.0+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[deps.HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.5" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JSON3]] +deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] +git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.13.2" + +[[deps.JWTs]] +deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] +git-tree-sha1 = "4b4111b7d649426874d4eec78f87871f90f8e541" +uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" +version = "0.2.3" + +[[deps.JolinPluto]] +deps = ["AbstractPlutoDingetjes", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs", "UUIDs"] +git-tree-sha1 = "5406ce394a65b8e01c160da059ab11b7bb6e1d15" +uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" +version = "0.1.58" + + [deps.JolinPluto.extensions] + AWSExt = "AWS" + PlotsExt = "Plots" + PythonExt = "PythonCall" + RCallExt = "RCall" + + [deps.JolinPluto.weakdeps] + AWS = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicroMamba]] +deps = ["Pkg", "Scratch", "micromamba_jll"] +git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" +uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" +version = "0.1.14" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] +git-tree-sha1 = "bd7c69c7f7173097e7b5e1be07cee2b8b7447f51" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.54" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProxyInterfaces]] +git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" +uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" +version = "1.1.1" + +[[deps.PythonCall]] +deps = ["CondaPkg", "Dates", "Libdl", "MacroTools", "Markdown", "Pkg", "REPL", "Requires", "Serialization", "Tables", "UnsafePointers"] +git-tree-sha1 = "4999b3e4e9bdeba0b61ede19cc45a2128db21cdc" +uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" +version = "0.9.15" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SimpleMatch]] +git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" +uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StructEquality]] +deps = ["Compat"] +git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" +uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" +version = "2.1.0" + +[[deps.StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnsafePointers]] +git-tree-sha1 = "c81331b3b2e60a982be57c046ec91f599ede674a" +uuid = "e17b2a0c-0bdf-430a-bd0c-3a23cae4ff39" +version = "1.0.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.micromamba_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "66d07957bcf7e4930d933195aed484078dd8cbb5" +uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" +version = "1.4.9+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" +""" + +# ╔═╡ 00000000-0000-0000-0000-000000000003 +PLUTO_CONDAPKG_TOML_CONTENTS = """ +[deps] +matplotlib = "" +dill = "" + +[pip.deps] +juliacall = "" +""" + +# ╔═╡ Cell order: +# ╟─172fbef1-3f9e-4ca2-bdc5-8d2755d62c34 +# ╟─16609b7c-0fa7-41d3-8dd4-4a99aaeeb0d7 +# ╟─60a9e137-1f35-4268-ad10-be6104431e04 +# ╟─35229634-2c40-4de9-8911-a61ceb32f663 +# ╠═fa392c32-7ed6-11ee-02d6-e5f4f5490be6 +# ╠═040b90c8-8ed3-4497-866a-bed69b2e27e1 +# ╠═83f49510-e63b-45af-9c5e-0686f10d154f +# ╟─a421c2ba-f2b4-463a-bfb1-e05e5879e918 +# ╠═6ffa64f4-0126-4536-912f-387d4ad9bbf5 +# ╠═e4b67d9e-b974-470e-ab59-20f04117deb1 +# ╠═7e148569-41e8-444f-a039-f5e91839bcfc +# ╟─ad6a5da9-304c-4d09-b59f-c35c31123b18 +# ╟─07e65d43-6f09-4221-acfb-de05a64283e6 +# ╠═ff1a1833-a060-4939-bf96-50d6bbc2b974 +# ╟─d8f62255-a239-45bc-8042-0eda43caff8a +# ╠═97fcba32-bbca-4570-a4da-4a8438a5e10f +# ╠═5095d2c5-7b3c-4cb7-b694-d7ce4b32fd90 +# ╟─c0afe0d1-3eb8-4274-b4cc-018097d1bdb2 +# ╠═09f75fd2-6096-48d5-8f80-fd775e01025f +# ╟─34eb23e8-b0a6-4edc-911b-bedd8dd0a232 +# ╠═149ee90f-d5ea-4791-8bad-3f3f260d9f28 +# ╟─b6d0153c-e777-421f-8699-02340e0ad273 +# ╠═da871125-8067-4441-b5df-d76d609bc46d +# ╟─10246e4d-66e3-41fb-b92c-4900e0d5454b +# ╠═5f277b91-20ef-448c-83f8-3ee504644f3b +# ╟─e232f3f9-9687-4b1a-9428-47f9aef9ec6b +# ╟─6a1f8649-eb6b-47b5-bae2-b834f7f79f69 +# ╠═0316b6ed-5fa7-41e1-8230-616150c3b2a0 +# ╟─7d670f9f-6fd5-40fa-ac82-4a6b034a2b7c +# ╠═bc23101c-fdee-4fa8-a2e0-105d73eeefb5 +# ╠═36679b5b-5fcc-499b-bd0e-74556d34daf3 +# ╟─00000000-0000-0000-0000-000000000001 +# ╟─00000000-0000-0000-0000-000000000002 +# ╟─00000000-0000-0000-0000-000000000003 diff --git a/notebooks/languages/py_figure.html b/notebooks/languages/py_figure.html deleted file mode 100644 index 9d92ead0..00000000 --- a/notebooks/languages/py_figure.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -
-
- - \ No newline at end of file diff --git a/notebooks/languages/py_figure.png b/notebooks/languages/py_figure.png deleted file mode 100644 index 73d4a940b24473b4eeef5609aeaee9bcf14ad928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31602 zcmeEu^;^{K+vdzr4jmHGl1fQ;3P>p!bjScYbV>IB3Mc|1(y4+dEe%7AARsMBH;jPN z-Ld!h-F@HP{R{SoeU3wUV201!am9I^*LnH!zODutF(WYq0wL4VRC@@4z)%nfbnXfv z_=&{8)Nk-b##7zc^N}mk)5q%BQ^-9lPd6u5PbYh8cJHUpJnUUv#Dt`TL(f5I`cEf1 zwm0wcr0zY3XkCFf9u|b%$oU){Ha05sp#<%1(Oq5|WMN{VZe(#fVK{9tTED{g8KwC^ z`OS&8tup8ie>L>sI<^N}n#od@i*>P#xcdR)?Nkl|s z%t^Aam5Pcg-d~tByrDt<;lqbzli?L~pYY4z2b;5crlx7bR=B(5TpO>592(LuY%P0E zjp2!U`4ZZ5>%NmyQQH9S<)Gh7OK+2smQDlY8E!(IV6HW;;5BMx@MJ@tlt@dBdt_-~_D-$kM1?%2s;zsp;$8ML|bdcY^eOpsY>$-rz-NanO@4}?oIyy4GTkLY) zYdJofGb(7~&rwm83fho#EqnW$tZ|W*mEs(noWfc}a9(^*)%)4oD8XmVv=b9=_d9dVf zx8XVZ+Y8aRsA*`zyBBvdyZifj#l_zx=*oWSsv@Bm`i`vl>bJX;ME*!kO)X6syj#S5 zL2YMu*Q6=1ZgZ;T1&NlfE^@s5sXS`edU9rO~CIl0teF{ zsByIf*Oj6a(zH2scD$P^>CC7QaPVY%q0OLAFGD)MHIl+(G0|wS#6k}2GgaPC)U4WR z+v2dD$(53gt$#T?qz?tfbCbB zcE07l3l;&^UJ-cwO!0J0EJ?s5%!(nyZz=U%V&d_}17qVKMJ5%#`@=>iH7+bKU%nik zIV?eMSkE;01)gnpfQS=$yt`as-S+BE@B{}(@%JQpL@T!J>`ozPJo^VPh}r!Isp-(e zkm-d@^u@eb6lvjQ$O`T@PS8?) zPB@l69r&RBnnjKd-H@Av1xy_Z~ial)h6K9fjYN5ra%uB+@R&jL%H?a^3h0yD^O0c32oJNzkkvTqigH z3b41=Y)V;AyOSQ=zmEZT^>;9jBwf|keNl9SD*Tj&oH_dO~h6SA-IA>WtRO7mT)k(^%l^{T|Qj!kNSOBTciTX)7q7)dx zy*WwQ=)cb)A(04-%>8J~sy&X4LiyP<(P^}gE!b~Qx>VdFU75U*ji;@`1x`WqR8;Og z#aoOM_XIfxk-wb_rDu+B{n=+)wT{mjK=PwzLoO8_3-Cuo_RO|gg@sg~>PL96V3rw!Xf zaKCo8-j~a+avZ-bCkORjHF9Ulqn~BBUQhA(Ie1w7yLa#CUKM$zNV{_=oo(S28W!&u zK)&6DSo$r}zKV`c1wU^LI7CiV+MD}Kd!22yQk?B{-!czAUi93UO11y>Y54T~!^e+x zOKFa^t0m~8gGpBtw71}|e7#XaCyv4D#ZBSKpT2fd%);!e9X5@(zu%g0qTl-6nE+gB zN2GMT#+6NK+LOjIVQp&FAS4>YyVFd!9 zsBz`|PWHKM-+TVq#m$%d>PCe)7o6N#5?U19ft`QFUowaDo;ggYVI+-Pz1ONCwzgqt zXvkrCvdXc;%(c;Awegc)b{_~Qg_$AP7^wpJ*x1;m?8`IW%d=&rpyiGF)shGTA&$Yc z-^qHAmm5&3MTH0I0mac8VRwG=pyCt`7|0{T&0Om8W=cU=dY_y7{ZLv;sz&BEh>nQ) zObGQfO$JL3HcVlpjZ=m529a^G@z=2C^L5vT?RF-zGwEX_;~LUY?@$YlU-TdS+c zz6=m0V>fO4SRrXhZUj37*n#(Hfb5%hgIK$dJRn z7OP!&#b0}}Qs@|z`RniZzn+plz97pO(%Pmu_xW$tzRwAybGzIB%8~dm%u1OvX^Z+x zsbo52X?eKDqhBc;X1Ave5ji+T<#}8igFm>_3rcRPrs$zODJzYl?x=5T7Y` zA`q~bFHSdWq(!Ny;KY-&!t~yc50_tgThvrPB1N4jZHoYx7t9 zsFWNlXhCYG((&s!tc$+B%DY>;r`fhkM4#%6rlMWu=r&5ePjEji^hsK&U=@N2{sB5n-zkcHKjYswjiOfm^5D)L!kQU> zeq1<`m(R$}WIG8q-kaKet7<66n=G!f^wewpBZ4fiHK5H z6YxYRK5sY3tc`oBb`E$O8oY-8OnlVXqZ^$g^k9j(S~#RjsW#zJC3h@vQ46E@CvD${)>zlQK!Z z9(^1T!>Zsv=P4^fiU;DN&aKAp?`}Sddi^>V1T+DY^5?~7HKJB6_#ZxeU=Tx+PF6eb zPCJ6X@1{$}fRg~x=9+@P_$`o!Jf6?Osn%WSvw^k{RN>zJ$cuB3`xz>FdGE=_T7&UeE zVc(cuWUDY~pX{oDsHo@>*s;l1YXZ(Yujhsy>2b@+P5P{l6r1^7o*y2A7-~}Gkhpo4 zeX++|(y*g#SZu1^9DH88H>gv0ak82!3C>-u7b6cl$YR+g!JYjjg>2bQnHW_kwD? zt7Gt-87b%&JY{k6CoWG;uXyFtILh1{j}P~P)^Pb;Z(y@H^t$kV&~!|st>83WPYZJ5 zdeq>1RianXy(Q61t_|^GebV6)jw5eUQ~yq~ZocHrnoH1AoL9O$rf5Fyb%opz6kNnb zP!>5ui-C)k!qTM=(L%7ftbh%xo)nQOpV^=c_x5X$DgV`CgX%>lS7Dw zNLJFhj*BDaL150p(bg@>(OLNe0|;96L4@C$4g@>@T&idP!a8mus0$fc8;T4|t{_}E zNnNHmzkXl{i@e2Ttq?S0T zslJR&($D=UcxB`I??z=)J7(~O1z1}a3V1^vZ!d<>v6?tmM?m>E#p43Z2~;nhu(BPI zo2R|wjrmB7&>?;)Ug&Pv;Ht2{GE9=*yR<5~zcTQV2m)dp#8;kG)@$WEKwX8?oQjGw zKIUdp&lWq`XP#7i@?ec4LZLV6qf47F(m=Ec!yyqWs&54J=F0Z=_Qi+$GaUgG!syUQ zGN$&K#sFOGk=`GA^cS2)jL55~p)cA5ZU${%Ye=N)(K4s>IlptpBih(bv)sdb4t}J) zI%PeB-frpred|MojA5BuO)9>3*28VnR>;1crUJmyT9RgsXzSuZ0RM2<5}1vQOVja^ zDNQXE=bbn4@u98rIc7C3y{w}EN#d@5IV(U25es+fIS2|TqCgIPe$cSf#outcftEjA zs|b$OR}0g=2cP?8FvEDJ?o{OR8kh%cMm?^ z*#>^~Y&p|sCtv9t4gz$tWpHOFZ*~uev3~#_r?(6g0c+li`MaB+pXL7wpbHW2HDg>{ zx@Md4EsBbBCD@8gsO~p4GdWT6V}D#p_@A>~Bxc8KQ1rZHRwxbCBI(Iu+hkBKt*=LM zzQv4F3HP|n^=$U;CemPjYb{ZWwGknP@9vs!@Ko%-QyI8uzqmuqc3N(n29wERgJ^y zu99LXXw=z=4RSrU{X^_Jw` zytUCi9a>cahO_&l$n-!r_l!6xH)y($UrxE?1qdFHH~w`lneqRsM;brO&8foU4U##G~ioYfYI z5rO9$Y?DN~=Lchsr!U&lNwk+;V0`CzHJ}n_POnF)12EZ|4v84GSq$I0!-ab6CAcyKv zPtV;2EEW!je>qj>7(7@z%OBr3C+*r{7yqy&*Gx#x|3Vuf0mc#g(ToqFcST39cvc_!y!(W;d_i+z#j4>WWp)og-Ugg8 z3~)K`Gyz@169GkEJY_vZ<4G#QPn(~Y2VRMh?5EF9cMhUfM(O4sE9sVYslNVDpXNND zwG^Oazb_641j%nZ_0!(sVW;cDN5N4WPh-DMUaGfA%n+ODOX=J$GElRv5S*}eW~To6 z&qkPw?V86UcvbBLJnMc2Hk{&B2zI|1blM%8Tx7h#(M^MCX&h<44!wtCHGd4e673m5 zzetyYPF-@>67v;=^c@)35)y^|(611jvh{u%Jp^nC_r^f%X_pbyPKxwHKp6T*2HD!` z1zFh&o3h%gaer;Tf_EGm|M<~ol^=HSf0{un#|ymi0+Nm4l^d2QN?vKXl#UmSL^mY< zF=o#yKcZ3Z9i-egcy^^J`BC@3Fd1VZc}Q&tu-Mooa6Jv-8tD0@+kG3i$46^z#FT3T)gUmV+R zpf?q9UvcS1(sib1+&0@;B^Pkc_Z`xp<|fNGk?F$aPZ#V-UFqHIC2L<5#i+yHwyr?Z zy8lzZKa1%Hp;yFbV~TG%E9k%^R&GPudvoRL2V|Zz-`QW3O z(5DFEnD9569-V0)f+&A=uS9WSaMZ+mP&9yDe(&fQ^}na31qYN#Q%7B0ogif@u;b4k zeV{UFy@Z|l)#masRuwAx^gpJrL>k?MzHr>bs8zZ3gLMb<_%x25gzmobjSa2ju0 zHK)VCP~!%jeFZIMu{&8T@W?HKf{h%*;xqLPRMT~r7pLQBpIg~M2iF1)H=d4_S%HAm zd064QZ5_=C_^$4&8w9On2W2C(1f-PIgq;aJ*dWWa^^03pSSRD)gn}@YqFzG?@7)xX z6+@L`NYS#I8kgpAeF!=Y9b8Fp)3#+skNrGE_(*YVH{Ne1k)kgBdP#QP{7Z?6A2nub zYTqdW;Rq@Ik6WehcJ5J;3%>Y(SGHO4YMK1f>E2yynScKH_*kw-^3CC~^XDJ>QEa3P zWjnez6wJ5H4~V;4s2y+OTx;7QnpPRr_p8Tyc@oJq(&toR03|j2=k5&v%~dBs$j|UR z(G3gRs8nRYk?lQv_{0Bxb%=m;E-LKn*ri#vXjV*L z=2f{zasP{%%ENGW$@Ikd%GWN*sq3*)*FD|?!;1bFtYB|y+MFgG4mSs=J5>4|d$8HT zHr}B+KkxtNu`bsjEbYdOccK{&q^0GQH}3q%aP<-&4Ey)otG2h>rIy@Bb&6v0xMgVA zkHvSTSMy)(npuYCiD4|9?wJp+{d?ou1%yvhD~jG@M_@`*Uf$)cx7vm^?Bmlx}$ zttBC5^vU8Nl>$y)ZdPK_CE1iIl9svwKBtFZDBJXKqfcG-KKoT)n`?qQ?)W*ww`7rY z=^YkA<&t##T%<(lEU(0RyeNH|Ew`sa{qEO}){o_mY|7~OOXN2rm=1zQ z%H6dp{@vI&>=xhAiSH3ozE-ElqX}R5iY-J+ZTSlly-6ay_wo1|vb0Q+$6oy3c9}`> zl4hS6e(j3I#7ivs89-Kf7X>O5wph+QS)K$_q-TBo@3(q4;Stdr$oDozfAh=dPw@XcXO9hg^|AJWkh=@XG>bGDUGXC*))7!Ysq~?baf&A&OZ}%&PETJ zH{r9d!zy}BNC@P5ZM-f=^tw!h=UAoZ$uwo#@OW3#JbM9tL2}9{Prq2E}wgkfS8s*NW zFVB`bGDuZL)_O^7TPzVrM)3}5!W8$v-qv6P`G_{i(8(ms55zkUw*15I5UsB%H>X!F+QAubX) zn+4}>Sf=+*7*FuI!i;O_%ag*;S45W#<(m(vjD4^Bb``zUE3mJC&mGQ&^bdV`q@|_x z4Oy`b3ORkh8DUb^z%3O3EkH{S(efN#WLDFch5(;?e04)~@^i^Z`#{nQ-ZbYCy(K3E zs)wzo`UcC0JS5-(*qj+nw*IgG6H#DyD{T9h>Xx%?K>v-4m)B#$K0iJ=d9)=S zxJt!N-`yC^YRTB@9y4gqV?*~1gdePSb(U7k>Y_R+M#o_oX$#fMl27eS;2k~6uwsxu z-}`kodwI?V>QGjQYtu0gSU;{(HxD`A7ra&w6(yd(5RP13vvX#4PL+as(i>&)k3nCY zB045%mv^cwoy;E=N}56ClR%1o6CeNWZ+`ZM+_Iq(P{uC0{@&D}J^ zSb8eBZxeo5c$ItQ(|LnSMQ-sCr_uAeGxr8i?=T35i9+|vStOWxgkL)>^Q8k?Pew+j zDI4?|#eJdxcdkDpH0NdjN$(wiBa)+gMjjz~LOy1Rur0e1wAu~)%tbnTlg@qR;!Vd3 z6%!TxGxWt8Z>y)L$HCxR7eE`j`4!_>8Y(I!KA9)gD=-(u*eh<|QH6mVPqWkCBa-X3 z4t{F%aJl{UbOXI0LN!m>_TF4>{HFwEAhCn{5%Y0rV^jzIVFBYZ)K{AhQw9LFjuNf( zJ)woLv4#dL#Q8eqD4T97UPrT276m-~$IequaIm6TjbUJ?_uAOE0)s+L zP0buYy-s;gI^*c(y^ZN~!1wI_`4~ri?OG?GF&wOhKug%DM1JdCS_g2|(k(8J)a1`D z2#Vs1z`L#V zEHD7<7Bo2#%r-e+dXd;~L~OsoAE&w;fZCpZIjvdrrNN|3P-AA0=^{jQ>tPCPx1(tK z%t;=Y8hp$nSY!Z!0#0p;U%%*yCY@j-nl3FmK2CXzOmBpFHk0s3Meb8B@3=+rL!E^3;04JUB;~^I@!wq4O=al#QqT% zBVmzNn55?Pjz~JG^WXvqVfCLZN^0na^`(Ab-V6>dXwH4k*gLjqHtvOyI~`C)F(Fu& zi@yHXuXj`%@yC)WdBO`wq_^5ABqup>OgS#7!b$zitVRQ9<8&y}Em~q0`Cvw&enrHH zxmUY9D97R$&L8;Zus_~tzlE2)(i^o{O(}4oe6mu7m0qBUc}o3_aQ&HiYMq^% z4egq!nTGiDc1eXh_N?3CJ%$z-LB2U^OeCv+)Odxh$ACJ0d_qDi4$As1XGTuDj5alb zKsmf}%D$>`B_=%K0dF2^mzLoEWNn%y0+N1H+0!qgg0C>`bsVSR;JI) ze4^3g`98VL@1Von$(_6fnCWMLxUca1`>?PTcwETjk$BN%w4eM5LDUM&YQ3i;FOn(5 z(h@d?)|%H6Bhe$Y4e)TR%^)+>pb>`&L3@7uKx`p)E%5*){QLKBh%jhfHXSXH@T=k; z_Kd!@zd177Rf>(m55L~Rnw1|)$|`A==Z;z-bh!ylhJ5<;>1|dPxpL{_#uTxRDJeG) zV5Kv4|MS}-q$yI@B>N=UC{o~fm&V(Hb`9fvP*QStyk1G4k5%sY@hBZgzrvw;)A@lJ z#HDfH5Lfm2A8z!5O?CoGPasxTP3`Q1G>zzTdI$EBq?NT;R=3{>DnEF12*?C~H6Jmv z&F?Js-sFXN(i4^!JM^>LIEL5Mlrfr4@Pkq52nFvtafrjI!qJ8{jVu*(-GS?FRUsDTo~uZ?sevY;Cyjn13C?m+wLvh z>*M$Z%Em8n#Ec|HI5}j15fyr?JQ_sRF>6=}iSNSqmrrbMjpVYyeS_w>V3a1n)v}d0!Z=Ap!X2(ES&3Iwk+ttOv$JZ4W1xk+1 zKw6BDgwpJ9;+*!&D!zFw1cg{~*v$z5t5vQe>QVi2oAMARNhZ+JE)~U&u6tMb?>n@| zvN#%m{^x=oVA>1n>QRZ1YCcJ{30dDP5)cs`_}Ufl6ntSJA#!1U6bMlOQ66QHkdR;j zO*jWy#T9(=piIe^MWfQ+Ko|*`O`TXf_MDGa+ZZ2Mbkiu`!?%Y+6Cj}fzY6hO9f^_K zY>M1uo!BsI zk8hXAzp$CJ3;^vuaKyjE(0|E8m_AhILg89dldjEq7HDr$HpPZ^E%wJsmuDU%|1Q#~ za+Z0`l|q8(ay0iV9Py16M~h4?x3_oP5Y(f^(9u%D=PK=g1tuusWIT@HpeR~eWWmzL zJCI+LzQm>DF!a^iEh|2oL6@LjWYK$m^zB}pfoZJILS#FnItrx;;rBT$ATb8Ta-k!k zFp9H!p?2-cbFPuinY#3z>eiGyFL>w*8W<|A?9SVfbd+$!y(G}^1riTH6X3dz@thi_ zEN?-^QnjE_hOAwuWF&ej18Oi|1sY|+%Rzs?OO-jH=Yvje)ish?l0qO%02#wG;LT-r z0~~(NW8Y=3&m%ur zX4qeFs=yH-#Ahlads0*Ycfcg+#4ab7zP9Eh=`;okUUQFL3ByQUV8Dwkze9?I5Ozmu zls-4Fu8GG1^U&?v(RSTd0dW}yHG-Pgx?PW^zxBy=_EnqQDNwHf$wD{ikl9&1!HK7i z_t!q{7ZVuwACMZ1Pe#kOwZ!10`UG;{+*CC2)jqMFnwmw8 zGj5zr%Nb!WO%*KZ%cwC+bZ!UVd?-e| z|11;q@rub+)N;LcbW7Z5Q$j)wAIm=Njz;cOt7fEcZv?Bld)2OvR>JJD&qYR)< zRW0BzT>O0OHEe+Mh(TFDTMX>?=I1mBtBG?p5q*`N=CCi?-exrcB3TYI&JNH)Jj4YU z7gEGib#-;1$}>FPrU#94(8tj^+?WOewj7N(R(YU;@s-~{Oa2t4ne(L~vY6&-%a>>f3fi8-{@pf_tYrtzjNyP(}FP4l+atpLMcSoBq5^b}q${Ybmxk(JlasoNN z*tnuE(vtFT_HBO6^4oG2`CZZWU_6kuBq-bbS{kkmM<`raZLo+TDZ`-5!C)?ND{NCnQed|^jDf6jk1yAlXLv6x3Biu+e*PI&VVqbd$(VyALJAuESSqp z&|R1b*jyaYU|R&Kczg2nHIr1VYx8+hZ+dS?%mrwy<3va}AzW3{C$QM@`doFjwA^Qh zw^D2%jSbk#hG@=HPG}G4c#>T!T+Ga!ccSR?*Z<2nNU(M7ivA_9coaU~ zPEjtDB`E-+190McpG|UQAiQ+_lI)Ic-v<2a>3Yyc-7+h#mxWU!+1cH|sZ6RTU9fL; zgud)cR3LjfgoOGIKL)*2=R)|>D7y|9X%m#mL)ZK=$5~B@v;1|7KEKQ_vKCn`C-j5{ z&|v=f#|{AOGn7wKD-RvI_*$IaYxsrO7*XwxR~(&BMpBDk1}toCs*VPz3kkP?pal>4 zR2Vc~T{m~Zv1|i*)h@WR9dKg1OX;pV-)Z!=z}JzJG=POcs~CFHH9yk_(|OmuGD81tb0VVsTwC&dFF^=!n%7S|_ScvhF95Kuikvkc@@ z3lt$ocsN28f@`mimRNvdsczEqY*u3u#6C0OozyxKe{}mFgF^K+4 z_Fe>8)nhSsbhsn5L`qf&p-a{qy0U59yvp>80073-<)U|xc8bB2J|wjpd~UsFc0(=; zNYj|4T%G_a%HG;|0+6HM$K&9Ji27SFkJfP4;gIPy%Q}%qP#8BB+ z-}?etGAMztez{z2fFl;0=iO-2-cpZ*7mPLW;^L&V4iUTC2l*B}Jb93{mT|kC2%X=j_~^dj7PS6qZZl3W`uq_+&(H>lbL zLcYsC10N%CIS#+J%Rn)`*n!|DdP?VsA8c%hIH%@xlMp(D5zQwHI5?eB}%0mt6xg=l#u3#jdbFH^a+! zGE*zb5v%l!cnNgIEb8g>z)S(UzH#&Be1FJ=Sjfq*YzQuj-fGx_89nyPYa0L?VYf^y zmG2~pk>I!DHaV(~Xf&w#WC)=UlAMgif||u6HMKmWzRDm2=I?!n8&$*7!=aRNQI>lV*6w<%3JyDM}StoG0kSv(vwU=NNUwvb>Cq zE!nOEtW1ULY!h9qrWzN7cIXY{juE36i^1Q(d$gERJygHHvdPTX+58*R8OGKXs*yD8 zm4PjfgObAR|Bxa+hrm9=**VDQe!}OzGDKK;T>%*2{U>6CCuk_=we7`~02Rfzc*`D% z6LLYBgHvC02$nE?x`#{)!cUX*Dt(>15|ncs2!wYSXfZ9?3O8r) zOC=N0A@8j$Fk~|X_y!R5w0KZ?#*g$E-2d93?F`7e*auL7f_D(s0#4|j;_UmtuNQ>C zM`|gA#RExmsFmaWah&F0nqSAIj5Qy%sB{6$_$IW-5ISYHJ@r0s?hE(0sJz>e?QSiW zp<=(uGRPb6ru|)*@vIPHlZz72w)?{lG|K6{NZiIo3a8G^j{Dm_3(?Y6c3HGur$U-N zBKVm|B(v%eoL$cB(Wrom>O(Ru6@#cCr@P63Sz3dQlu&W()7^*XSTQs;`mK5tM``{n zw1-_mDO@F-1{}llv0&O|)mRZiN{3CtgOaM{s4&WWzcmYw{uL8U9-yMd^+8>QQ|WHb zG(AUP z*H`xJE$zr{3(Szm^*?3a`^`0)Z%97l|8%MOh4yhRFE1}52UN1#lM4v?f?$;`To2uP zp?#Xi22yNd$1zLy0If3U5O$>k&1T)w=rMAFM?Zt4*p|Mm!yrCaqJxWa^OPTY^-B#( z8vxI7Gb8GvGrc5$-G2D11W;L6?blhhy z8Zm}pg|hcu^0??m||@2+N)wdMtWT0(A_)yX=^1=gHc`nSi?AZ*_k3h}$-R zbZ=B-X4HM6530`8n&{!l#WY{)GY1*ZMut1*)8=V;O${$um0gaX$3^ue(nSds$dXg` znEZILIE?ACz|1`Fb~6aM_Y}yH^hZxR;EAB^000oq$1tpJ5@hixT5w`v1SGg#w$jBB zCtJ`S)$uXXJ_Lx+63Q3*u$1OJ9s(K(8QX`H~RP=mhA6{Z>3x*Rrqkv9;@q+Y`Z1baLvs!V=r<{3(gv5}I8rnZ#Pr49O`wi6WxKBy_G`cbb8k_a5Bgf354u-!4ERW@ zMH00~O{aqcXy+kbsFNo_8Poy;csWKc06Kx%Z}1lolv@G~R;HX!H9H4b%P`2KSHZbm z7=mp|bo7sRb^J^O2wH>dxlh5#L>F)Yk>L>n^EAAtbxZF0Wava@oyK}p_pFfxhJy?T zj{xD?rEoZ<3Pi+`>11&otw2^(yW1yM2h?uGJ`_PBPn`IZa^fKmx-vc#M+_BsB#>#^0vvRExi7P`zuy*vg5ua3FaVMS zWNV`JOP-E2UB4hA+Mf|{|=Qp-o@B3JK091FqqUgs)W zaSXD+RDt*nDh@_z5@TBB_z1w-{VW920egQ2@E~T+(b2D>D!oe1UJ)C6=tDADu75WP zo=JxoGU9=o@l=1uo%-cET#?14i%~$#2R#5DM#iHcILc+_wQ4 zNC#s8*#y8X%YWr2P$VMTUthz+yye!ZJwKQnuk+xIli!JIqXMhU8PwLn92H9CJ|hsu zIqE%9M>f7X@^Y1(Qb!3h@40gch*VVfN!sTx5#570kQ zqHug`n-xRNgHYno<_@xQ8NSCMrJnshH-fLjU{X|=AUFko;Q_(@@3VkD8(a4la~S&U zu&fcw{IYwo9A|bU@1C?KCF8>1ST-EtOpEzQqpXo@;EYJ6>KZ3X1uGlwYXSfB%vTOCWk;h+5S%NLk0pkFKx zT}|`01IZAjAfWPn_SFT}LI|(LcLRFd*9;;sl=EaYbV(5dT0~F4kD691#X-qnQgZu; ziP65fhXJI}6UtVlm~-epYX+h4tSdWdj2$MJdbb^N--o`e=ERnwm=ztx{0PK?-KE~b zQ7_P0X~S+KYKY8lRYz(5Vt#C(@OOJzVDyb_J*u(crS%~GZaz{Pc1AHh{y-vpiOTR!h>3mNFQ$2%{Nl8oMgb*d>!u@ z(2#H_dBYri(~4)$n`1dIIhb>yq3W z(VW(Cu?CC%3tzT1Sc9$^IFlk2YO+A#tkI9}vO$b+{{$pwk{cHsDn-NIP^n?y4DFvE ze5?g_sCD=5lcTM9oTGFE;IIkqu4O$_@y|19AUT$cPW;HI<1HbPu93Dzo37N8-ol4I`XrFn&!nMGne_| znwf(CrT`L>Mt&#_si`?E@P%1kAXt5}0R_*Owd(^jPH2A(eXi{Y1p<`D>E^xzq>qQq z5jDmX*aSLPjZ5l3+u%Xn%fw&U_GJ*U#*b4x`NuTi$~{097rN6^m;P_{y* z-Of+;0c#?DvY#pIWewuELEk>0Q$ZXq8yN*%g^WJNdfZTuLx0B`H1uTFX2aLY7lD1W z8$PO}{5^!`Bl1Z-i zsWk-J6}^1s$s~Lw_c963H$NXMUW|+p=lIaMED9l-^&yQR?MzEe%^HvB%QQa{+=bOT zjf)bJGGJn)W_|!F36rA|Zd_Ah&7TW&RIL7gt~WQ%f@SrADLKEr0gdr`FaFJ@Q=wbU zXQEOwz8`02RMm3t)G=WUn(TH~0_K0n{y6Cj%n)vwn&=^pVZk#7?YT$EAk?5=F)NV& zd_>3{*<%BW4MqV3H3keg#$|vx3ueW@6g(nwH_-SN2|n`$a~b0Tn^OLJc8V8AHn_<& z5xbx47kl|i+k3zCJjS0UOLU*Uj5^YP{Ac_TakndAI9P4(-MwE0v-22IqAIqh)_ku- zjnQtD*YLrkXDh1ZDGI{Qs&Z)(^e|v(`3<)Yn=e_=)4F%>l7@it7#t)&kYn@VB;^+M z;`0>orgu|CU)+53>FB(PgQMg3y@UEQ#)CjeDhYc?x?f2UiVL-0e4*0YjkyXMYt5ce zJZ1yvUd*MAc*p%$n&J3&VOQ>hN`7%0jLyVNyDWo6FN4vNiW_{O=iDt+3i*_2yMc@s zAtF9ZTb4CWh1?klG^e*Es@RY1+y#>D;N3A-3yg*VBw8E_h)Wm`lv&)45^&x~Fa}}J zHw$`n3=!YBlg+Ik0LnY~w@@f&VK4UJWABrjHnGQJg!@PTh=60Su!c~RZnAcF8r<+vTJ&5U__8PUo*;?-)nE=P&2l7j6o}j)1%3-p> zzAwf%WagzkTrCRqH()NB1V7Cd`8#1oDsA|0epD71G(;4CGB65wmfkJr~??vAWkExD`mq29aGk{Hsj zZTB;xloOjjfVS;|5%d=j6#zD@-2N92=phB2?7g??pfe`0RLiYnIs4|suXn(3ETx$S z0op09T)x{Jy{VmKUmz1sNLpdr%yF`{I0?x7mE;0fTuZa@<1 zF{s5G|MqQ*#HhLI|C|gH&*~t%=FyA&{fng~UNNiIY6QK`z{{cM;Vkzcu^j$mT)sX?l3mO7=CO|G-g26gCKq+822h4=vX2ozI zVT6E}WAN(VOR>q{pv_jR6nyV`OcCUcK?!7|z`x|C({)6x0|VY?Aw>MAE1-O}vbwIN zHLP<2Mu0(li63#kG(t}PH5zGm7lGatMGKuPR1 zu?Qko-<+-wKLL@CqqPAS)86s}OpWJoF_m}wK(ydk$p zlY}Rf-Zn{T8CB+eFN7kV{i<6KrJmBccml5;4;TyvETeVBxN(&Ot!{n-z$wNoSy7r; zr;zEp)(er!PYQ+yhDru(AfSb(_j26(g!cJ!DTS;wJ{0%jDJ0UT(tBDh-VjGOgZZC| zr`>cj!Kcn(W-AKxjsmya%)Q5-f=1y`5FS;$GFB*pOfRJ)$hAr`sb1Wh6ruLYq)wT%FdDI>LQrr;04;&GF^X5x1fLqdaj2o~6Cie_>?M(>^Y@F@87;QXd==x2kOiQ7HCAKf z2K#&cniR|p>8}R@4oOQ-uLeNOc%C1Vuw%1c!4ZFRXD@ND=s)-hw)z5BrYUEt$O3w{ zEafG?n2pb6pHI;qXUTJSNR@$Q@uG;Abr`w3^ zpM`t?$L!^58S7E4H0OtkKz~2i4tX4~UWJpRfMI#}uABLgEfD;l0Rf34FC~?I&|tUG ztv{aiK(>Rgf&ZOsYg3_-RymF*H0lV4<-pvT)cE-Llv^v=yQCx-B`a$msHR%MNWCEF zmFGgI^4`ew%Wrr_RDG=kRmF`#0kGQ2aVPnMF&o^_n$uWWXjIe{P|U>qx&}$ljgAuk z{=RLFPuO;-o#Lx(+DIp;MmAuE1j2KP_44vkuKdx}tQ?&ADNUUs89zBg#Rz$RRRz5p zo`*wIApYta8e$-a6t;qe%ex-B?)*(`FV_k`N(u!i_cPFYI2=s%Hq;{0H@BNO)dOop z5;U5peq6&#@ZI@fr6z|bNdPB4*#j+-Za`g1`n?64Mr!y#(K_!1I^@9`*ac_2qmrAX z5}H#JPDKO+vm{QRrPSO^$eXM<_Me7&H}~UDleJ>mW$6^nJ1FxQ z9U{TIuLU$;kv%Vv!+iDhYI!Cs_xQc_L5)xUhJ3}40>UjMWm%%NJQ7m+`}}FZk>4Rz zH5(thsKE2nPlnl4isFJmhW`t5n80#Bze%ppz2nSDo! zOCibN#ztk^Z*ePzQ3T6Hq_P!T+4u|5oN_;#|Do^C+a?^afy_GgCef+3{pxQ?zIjob z4i4FOq2;~cK>z^>PWst9uYA073;gpMpQ?or_aI;O-BZ(7XUzNR&+96qN%Ji9873*{ zj_RM~lgS;llMUz+^*s0w##5sG9jZ!&(b_ zu(@!dIN<3f*y-b_L(t%Y&Fl_y6{bO0Q ziA^1SY%N8*guAD|PR0K!wC@#tJ_7QsW1Pm=o-~fBNr84LHe6LHb$Kdp3oC&vA6zHa zOm%X8?W|G-z{BG02@HdB@?>j*hopPoZnST}Uzd^~4;cb(p~BXJ;rXzKE*GQPQ>@`% zR3Fuze0MR(iu0DO{aq`hCgC2s{OE++x+YaD;?!r*AJwb=Z!gSeti;|hLMOi&`I=z5 z-$i1Dk2tf-MeD1ve}v{fcvg_0-fu1F{VDB6-|CZqc|`c-S5Ehfk@nFffTs>>`S?)rq5q?`vyQ5={oec`6cMCULP|hE zrKMX50VPZjrBkFEX=#)YB&1OhlUzxVa@1k5guCc#Bk(R#x_T;Hp4O^4};`b?h7(ooa`P#A)yiVAzx( zt{*3bN#b+a6-Ob6h)sYgLQCTe-EYo`&xHiGy#toYCt67fl|i>l>vGSs+U*l+#k)xn z5+keNmDhIrpU^pI|0KSvCK9qvJ~gF264Rf!qt0d|peW;lNXT#EoQg;tj;h@sWq3R+ zm$z$8o_mt#ljZ%mgpuQ_;7A>w329cu5fl@LLK*144tV5wb*QJ?HQQ)~?lV|%4*nuw z-_b98J8Ep;slt0`cdH^^=U7inJ>lXDf5KW>wb^Zn+4rWP;v0M3*lWdMuz{hx4XdyCSxpaV zsvL{|bfQoOyryG`-5T>~?9>c=7|M^@R-g$a0BiN$j^AHfQ4O zOBh>C#?q7|HT67Z`Baw2dcyAE0tTVBz^KI;GAuN=4Fh|j#CEl16yH?}$DC&^3|ju^ zst8lkZK0o24W*-*7XnLt;033(-y%M!!h&5-lWmjdG0vj*#1_b~S=-y#uZbh>_jDMJ zR$WduX3nziU=<8M`DE&x2I=g~j@u6qUdV?<(`HrUxZL__Tj6JJ>exT%80v0DnA%r>S=lZ_Z+P7XL;{r zNhZQecasq^2XY8q|HGcU_M0W_Ielm#e!(c?CyR8xt2yZ6eEg8U?lVWdL-t7tW{xdm zQVv&x@+WHM;1u)3KecB`QayB`(NjIWP`_Uf*}A_Zk~kV)?&7)~*`F&J%9PlqQPy;2 zSg62E?BIG+9xqE6#&eB`{4-O+kW{#lSfR*=m)_laY^>suu;S&on~9)lF(1R!R*X~~ z$;0)S;2}5@ml+e%u_^fi(zy^h1D z@Y1SX+MTmqLaXaVI<+K8eOc!n!a}6_in_n1IJk{q19txV_cevBwCw1rDGU}JNMZ23 zf9rImS^pjm(^+6dy1HVk1kH*bwBXpHF=l1BqL78#6x2!%}osMaqT7vct!37o*iZ3 z6-*H8m~UBCU9F$A&~QWVU#;(&6#3@KtP-$aF6r8Q?qsd=wHj9Pr`*@>vaLO?hQ9ox z;Gzq6<54RB977tp;D`e8tM)Dt58FHB7}Q1=8;GAO!5C{X>3nWg*Mg%ibwm0u&d{0V zb!xZ56BLTC(V>ZaGI>8rMgClA!cb-NZvLQo!ayb-+fK$w^#!|uSoh96R&+p-&R-e@N{=6QR0%Sq^&cG83u7uf`PjEPF%q#-paO#JfkW@hHkj zHZPpMW1`E1sLRJ9_bdycCO$S7WZ5A`bU3=()lSrb9kuDr}FZf;?fsr z+n#=2pzd8s_H)Q|mz3SP(o4d~n3h7AaJ*7#C9P*h@6~HMmWrZ6QM&)=Wo$WOH(N`l z%HA2uz6iyB*C=MX@RGQ^oUWC9V#aS6#||rH5yhGva>9R+{D-mzmwAE(L%I@li0eM% z#32qoKc2-c^g(@D-+HdhWp$mMLIDv9r?UDJ^obMyiY4nNaM3hykgZ#o&&d2ms0*>H z=TV*y%;tJyAE`vXK(fjV&#nU`IQx;ME5uPr4%<=AF#*ry53iSQ!mscjp5duXi6qi~ z-nt_*>l>NbXm9ZRMU~NdAip0H%H~Qi) zN>ai3dtzyhNT^41eslxVBt+kGvIXitRnfd*uE&i^C(A?K0$1sdF?HVfYuVSu-pp2J zqr`37b+3DNu_Esr@z=TJ(Epq4XzXVyFXZ7Eg0g25{q zYH~tLqw>5Zt<5rw#r+f9PzSAAh)!(!J=O56e-UbxyFXr~bhQef1q6Vs_i(#Y-7{4F zaZ$h3RnZFE0qK`@l8OYTA*M(bVvi?-0!CfNrn#mkK>J3aJA7=F{EnCXU11_ zwrA4m2ajGuuQNkpnj&LY8t5Iu$BT{y3bB$}?XVW@fju{}L=XLGbs3B^#Ud+rC8Io@6;ybmFC;#1W> z;XN!(XZ6Idf_|}==LTp``}-m+G+K{d35XS*cc1gHvn6e(8~JgQ{9Vy~7+crM40FAX zu;YPmi#FjgEIt;&F_+%8QqiLksyXBvJo60>dNc2MM?c+8z33jHe?*q5u!QI{yj$L` zwhHb)wf;WLJ-&Yv$L)*Tj~MNsPB)jSAX$;^{$zY1Wn55J+UnK}va00WKK~>4j{y`& zPppnlG{;VCs8A5@exFvwM;?z7tS@T>o5H5v-##lyK;CVLRvpL9tXYK^ubnQTbs&lU z=+Y;JrGFz)e&@XPjLdV~2GSDID?h?m9dW3lD)!wRL{YHy&!(ryzCc8p6yk29=&4L@ zZf2YeQ>|K^+?K282Dul~_)QKE)(kY6v*XW72P&+ssh}S1S}k>YL00bv999F$0w0#p zx0>`OAxG|uUJ%3SmztRgk%LB$8OR}AZ-b$_y|K{O$h>WmtAp#zlk0o4gKPSZB_Zzw z$;LaaXGv0?vajvrZgky3Mn%alo~w2^%cr;_zj*AU2OY|e?rrWf@Lg3I_9$kEs`N5b zMXjFNa}wA-K>cQSB&XCjk?nUDl@$~D;Y83yQ8XQ!^@;Q) z_N124bB{)0_M8g|(DTf{b>B4jmR7Am7|xNtgXrnY__y_zQ#xpow}23=a0q06(NZ1Q zbN|#SP+>`}jFd9Lh=EPTYdLDx=5UJ1gwxRNi48W8jj77ueZURnhhe;4+}tB1wX3XK zhDEF{fj#fj>Vg!ON)Bq?P5rEXScDN@u@Oi(3X0{Iwf7FPE84X(GZb^AvQ~LSW46P9 zGu|~-S@iHBb9OQm>API$wJ!`~zB_9cmw=jb9OGpTIiC=rw;kl=U0;U0^VN0EV|FUtm7PxZTrQ| zedekp^Cho~uBPvWph7={Z{3%r;Rcl#^O3S}NREMiq6H}e0=p3@BQ6?@vKSA~NGpi; zDxpYo@#_sjY3(4Dl-%>u@$OAH_%tt8iv+Jk-*Gd%(E`g=ce{DSX#AdP=>`!!IUU!H znP|`K1}rZ-TI0;O0dtloK%5Bgr+pi3X zg?xa$%Poe1`u)uqT7{0AY4QO#q?ZLt3}^XLo^W8}r~?%82#4_3GIMJ(Hukprb=Y`$ z!=Yq@r0ic_iVEy$X?H^5MX37h)jcdjFK#ZLSU8d%J4sk^j5RNH%k$;yOl4+!9vTz9 zxz6RncF(STt^KHoB_3wYqtPK7molX^olT}eJi5jzy zo{ZtT7vbVNA@)KkDEz(hm>H*yM|W;`)@GNzRZzS+fkU^fttmV)JBU*uYc!@l{(&Rz z+9K)jQX;aPx|Qj38@QCDn;qV8G`hUD?PAwDi{Yldo198*neg1^c+w(Z&(z`9ZJx~T z_cv|c%tukT{m#LHE~Cn0+s5OtTGl&=;!bN$u-HnO4>VFk)hp#iF8lw&JiPw%A~{c` zd#O0-qtUBYM82}pi{-O+J7k5!rLU6rAy0*dOaN@8O?|CyBvjG*k*YP?MFQ_fHT>*N zb#~Rvki?+h{_yZ#=3lh7=+Qz}WNy<&lMG>+qS~kiv z89E#zKwIF#eCoGI8cmP15f6b z`d3;eW>(wi#RM6D&n;L9ZjRY*I`k*@d~NJ+koOO#ev)5;sZg@}3GvFaiOZ%LDY*z2 zwasm3&;-#zrKY7ZYz`q!)=-w&W0;$ry+wG*)N)^JeE3Oi6hZip*%zMFf2T4s`sHrm zxE;i|abO%iIUL%RFYo2ZMy>iS?NEC$YA(J&n)!=9u@nP$#}H? zew$zN;#@nvHg=r7(&VO}Qn0u+u#UU|I_?`N zBS1lliG{@nsvPg$y~~0HtZK)dUrFH>sy-azsWbfVn`DF5Uw@6 z{wM0|qGruERokpp;cOXPw(UOe4(1awSP+P~tL~_%kX&R{N&zlyO)@n6bu9js#jl<6 zk8+A@I<^cb!)dCK3}pA}=)f#yt{r11^-vsxNxv$NMZ^W1_)wnWg;L159}-`9Yl9i? zSwnXCUaNwJ`qXE2a(GRqLs$Aj1JW)`t`qrhge`pCKm5kBxBZ>}gr{7mcvsTSnhkYQ zDu@@>^nK?DLZzdExpOK3i8O3+5}e)s4zu-`kZ+#p1F!oTvz;ExQLVlC>T0?X5SWbb zK$RDWpC@tpc0`%1uU&JwoNMfSiUj|Sol{OOyUjnl!~1$mOdcb8JK-nmtsY0OAF`>; zhu3yt2NRA*m?4b|(UK-_qbB=m>KOeSqY09l!H4*+e5^kry#&z%e zppqbv`Xt0A7~7ll$(kVc&GoDS_fMUpx1zg-Jb02TPYSPi>4d3#HBhP#_?udk`Dvc7 zB#hNFaPPriH3;xfG>`x$6qF!XIx$aLa;5d{)4Iv*aZdP4%JKT&#td1m(tz|?OXG=X zAJlYAS=qt1k+_IcA@_deOwZWS>~s=J+)CE_!aE z3#`T1ofzwkeVTnDmgwWV$$y$2w^@#JtEt=Lt+wBq{t^?Nx2ixcAu4OLd9#{!J>I8H z`%!vcKwouFaA1$>e?B4o9%b}#$z(pu*@H1nbicoomuY1!xz=uRb}Ji1x^N7L44a~D z7>1QiQX=M6x{s?zZw#-*uzGCoFtudFWGN=Th zFMN#0RbgT3ab`C{mwMke4EVPdNSGrh{v3p3ea<8NrhOU|Bo=y4NI^w&n8 zKvO4EMgGP4Th}uk+fFX8Qz5aRu%LuN$>;os(L{Ks&`a2_PK!O*R++bcLwvHgeg#GG z<)`!1Vkfa;Nbb5oD4E!kfIe}`4S2A7Fa{=>rOP+BYTUL8V~;M(UuyYCMPgy?#=d1*{sCPyR4j<bMz&ug$n%pbsY}q747=scL(g%4ztbA5 z%6F#H4ehn_9iZtE$x&?9v0Lb4dY3QJ#($%WZ5)xL4w6#1qb7#G*K%lVrDYj8elXN?~tC`5A5dBtSykrS2sS{AOXHdY)2SSI_eD;^8;-Vs^u+lJ=&IrZ$Gm6z2cF`_HI;=rNw~$~VDE zPb=lIV^g73Zp{19v#Q$sk#+&;i1-!%Cd`+v0^mCNw`i`3Y@26(H6^zUtCR8=XxBlH z;n$9$7t^Ozfn@{7$hiKT-SJvCYBwoE&VXu0pEiC9WE3U zBzKh;I$$ssl_Uo~M`}iU$(iTW#t2^~2{DR^Nw4E=aYj z9ZdX0j4RWZi^OG3%ea=m-nERtm}bj$LnlHZr8eRB2-of4<&CEG@XsTTudUKZls~%{ zQAm*!av+b{6R1*Wo_wAr^JT01RGQMgFl+Y}xH^JT&2Wr}6N<^V-6cnT`6+$QVL;^Z z^LudofTXn&LqaRWQ7pWyBSX4!vab=g%+Xg4D#|1iR!{7`+P#je1%|2Az|ZXO&C+`6sFJE zfRpCGVbS>P+5BNr@3Xw+;c5ql%5Tb&vYw@6T7Rdr|w}wTTU=n!Js~ z+^d@<1rV4!(jvPml5=`AN^$OygQ~1|FudsxDODPCXNtZND+V@YU*6Lq^Kzd3fM+Aqqyrb#9WH`7tn{HXdk}N!*L-_w^fib1P_ zy5Y{NqW!&bioFG)%VKW!`^AG;TK%>zwwEN+HmB)J&kH14oGjZ9@C3BYO7FTEQk#&d z%nGq>r#?9R9ew_Z?6s>1#p8*Fq`B*55-xtHts6sDj;oH9xaW6&o^Ye^60mxE=JOtY z<)<1%)~>`JgRZ{NoALYiP2=7qmaMUOJg;uOxdgq$pfKVYs98d2Kjlv-K@)LBUdj1J zr;6RDJK9duX)n%mm0b8&?N=uY3j031A0Pc;2L@KSxLkRG`sT=qL_ zWyV5eXURng5*`+P%?z-hydBXOr2lQuUO}w3BKdP=S^E5g(Pue@gX2XfiX%csC{x0W z`5=Ykg;guarFjQbQj@g$By8uc-@Gwol2kg_HlvARe)74a?XMp3wP3GSzq~^UJEySr z?yDXtn0gpH76e3ldM$T72I78oVKpE&%Fv>kvggThB5=8W?_)Gsb3;wg&>Lvc42NNl z@AJieZ)NMS3F?R*&^ zY3Ch3P3?+?0{QXpp_4B4!wAA~Q{(G-gg_5%n3;fdC~eo~?^`!Mm$k~kw8=Vp47bT> zu)RLALcCX-b~evWvlL%tx%Vy9dQzY_g0l^%Kf%Z~;D!-xIC=5m0NKLe(ROiY&IOWwEbnhv zvL1R6!iBlzizdQ}AbtG1jf;TdgFs!w7)MwzSOu9QAugaE<$SyL5Sz`;-1XR75(j|? z?l0+_-gj{kg@)B>U?a_f?z%vfBmcf)bnGh!$x54+_(+Dg7gX=;oVRP$GBgQXG0lmc zRpv>tk= zM=u!Yk%+lRd|9|eb=UdTxd{@neDcp*D#6Cia9xV;`hqnmWezrqXts84SnTF5hzJ{DXtz*VniA~ziGuu%fYR4x!;(gNWY{ z#Z1)t;gK>8NL+82<49@wtd9Ckh;2R?potv%66lC!>MCXwQu$*}US_WH=UjRNWj&6o z)lgKH(Vb?K<-CyTmxsjn#Xpx3Thow;pOvMF4Hg=k(ye)qUJ-q-smjm7(!bfHlB?G= zj$P&(e4KDEys3F7;^_!~4Q;Qn4@sv=gh9RHy9;b0?TV4zZ!gednPs5PohlRj5ju?Q zgB>HtF8j-Tye*r0xeM+@0xCK>8bL%6FuK(OI&4YI6P!H?z$Su{CSS&()hr7=f6{(>~taY!!KU=eE3 zkdA}jKk1odMd*>=V(g6Z7D{D4(*xF`jlu#gYO>zmCnqG6yj}q$^gpqVAODN-1)qjS z009g5Mnq6xrbb4tG-@i|xmhT`?$Az1{C-5~@hiuuxt$ot>B^(2=G_J|^2hhx6eKa1 zR1D>s6$&g&6Ug$3dGZW&3uA|aM9dlJ1gSm?3Xy2~4vdtYn+Z&p*wlKWLC+T+M9Adp zKLAOy0SiI%Pr1c|<}->37b@H6*yrqh$!7E7rI-Yl9ch^a`D_XY&3y;1HdwOU6im42 zQo<%Eeko>HMsZ(hh^#W?FIlB=Dv>+&r$|C>3%cGvN1uCeWVrX; z^b$#|cN2CZP%K6`J@&)fyYC7mVi=3Jn)xxEsb|ss^J#uBtU}2uE3`pktLVLB6;47g zN=8BPID052HdZ71*1W*~Qpq(9diae{T4uRH&bNzeNYPDG-h6_-H8yX8KE7%t5qzr5 zE*E*?`TP0tLS1;aJ@Mtt5s2<+#2n2-asf2a(AcQ94?V%;rWW26M0)^@9S8drU7)c; zkFGz!#$&;5XLA^H(g&#t_!X!8kj)E8*@5H2Fr2E?fIAA7Em;O@}8aq>jnt6W)dx5dQry5P&cLhk*5e|MJD2 zmvsVBP8Xv9IsTpndBKB?lWO|b_|M?3MYDv|4p5HAkEZ`MX zDIqLh{{wdb-?1_gENG0~!+>ckcqpa&p!+}HEuZ}DbiQyax8&r_S+kiAcHwSqzXx5b?Gf44E3c>~yr zsSZHrsAB{mn*`|`z?EyxNCuEH&cegI3gHFZiJY>@^UzM-g^Si}$ynNK?dX_Gi?>Al zm7oG}u)Ep;`KX68aWK&km7J*k{GF#yFCn@%&{1XED)YD{o$PUJkMj3!YcL2~dx6`* z$A}1NL&Iz6gWlYM0;2~}kcj2qpDOIx?c#?Ke=m$d8PpJP%aQdIsQW+u2>9!*jr)*B zz|YCb;=@PP9j$P9mec7}Xz>JhKv&+eYUtONX8Q>oV_Rl!bRpOsUTzwg8Ca2-L(z z;J{^%9g0%?$O_h1@6gE)_HXjMd(+sy%mLl}UGnQm(TXAa~3 zP8or_(6G2n9K9|A{AsE}44oQprYAg}83B8x5NH)C?(5HjLnA5}cFlu!PK|;FR4^D8 z2wtD|QtO@*u^zuO1(Pqw*0Ldxyb*vnW}xM#6R~Xo0~vu6=z=*+!jxJi>y-|NxkgK5)EIj@TnwjM|6xUHY**R)eE zo*R2JM-L;Yw)QPvIY?bIkCx2AM6Kc1FB`-otUVC~h47Dj=k-a-Ac=H`mFc_3_ zdemn@yk`J^{+W$rf$LI1!EF_(V|$Dl05YlhUwv3D?3y#pSSsA=a@riY54GHLq@=rv zM1+Ju$_Qrk*u(j|TTrvOso}EVs-Xq>RTKc_QHUc!aB%P~j97YiGu&hMWS^RNi)5h7 z;v*(#`uh69Ab`zCKra`x%#T%zH8(eBX;nr;+8-z@XrM}KqQFQ7=s;PHXaK^)-(OtY zxw8)4HP)bW36G0=S3gl}S-J^uy4#i`!nH?PAa;KR(3Plupl9z(vb!gxRls0zDwIUn zHSh(*SBATKivrN$tw|E`kh})*F^)U;Ql@0`^?6r~i}gHZQ=wwiLY8zOd&ONl&H?1e zvmE97_x0hYYs|Jr&4&T!=G71Sf)=jItUqYWI=Yrg0Z=s|JUP(c?d{Jc(|~?WSA|t1 zPLEn3$*KjhjzcWWU|QdUSJ?-8N%@37Ex;@?~a+@&74b7xipH0gP@i$n4Kn@>+U7B@xaD+e9F z6AkEtL7-uGnzAOe{yS)k={KB{mXUGi!@w{?MsM*F34{1^td66F2B1znkER%7C0qp| z4Q>Q-q!IgW<)eds^ehm#P^}#qMMaT7`cZ#lVQid+JbevxM*-`BWuN)pF;JggLiw|l!2kmTZYAY$Oz;N zdZp^eq5;0X~IK}<&DBz6GALiFcKbz!_;5 zOSSJyg-8W01pNDGfM&yoxDtMaRi_ceX6iEx2ikFQ2O2PxCY;cRiR4sNCQzHgD5$FL z9s@AqAO}2FPV`}!paB{|c)oGl6@>G|3qlq{V1XU{k6i;~izcXEj~sA*#R$NRih$i0 zSqoE#0I@b^fhgmV6^@*e(iq4@-DMyb4bIBSy44R)kS0dUF_!$|MT3Th25RK*;4?U3 ze1d(Ut(9!z;!?rueqawlz%S&o!PL-99Q^HIFx<9A%>47yZKHSj zuuyG(ZQU)am7NB&C$aJRX<_?n(SH8fousQf~giiokRv4wdx6#nP&Vr<@1hGGf zxErvJn_zRW-wvBaV29Lc0+i_E5dR`ra}&Uw&kxRxo3PU(z}YoWu?;#^gY+@hBuNhh z;#I)ObA#$1V%GF*3_;y#6dJF?0$gA@Dhi&ZFPEJ_esCimwy)m12%(tPvg|Ez9X23T z#a$~!ABTV(&L43%19>Q`YEmmmiro9r5HTRHxQs!g8xP&r>IjZjoX}H$Kg)P&;2=~s zFblgZ6F_2dqN5<28iXYN;!A-(1<_7hj#ed*|MR8>rK5~3DWH9V;K&kIL6iBvpR2a}ULxBgj17O}sUW^kh^iJKsa3CYiAYIJVEI9qZ2#2J zs-6cIVGBe!Z3q$(F)Ymq2@HI=!N#2J4+%KJ^RR_*B5qyKglPavJmTxf0}D2&f@Ohn z`r2)DW2ObDpvd4Kz|Q6^0K*#nYm$=Olmx=}Yc~*~+z3qRfA&rA(P}o~8>F73DKT+! zhConBRyo?f*qaGY=K`=6&H-?_Va680mE8tS8YSn821M01VFk$;dxX|~7i@&0kx@54 z{|ez*V)hZ^GGuf>Y;_yNS1Q62_yGG-hKt0Z201-Ky3TK6F!-Btw+ey{IJvic!AQ$C zNFi;J-i@Z|iT6%Vj^TEgAmp3|#9JV>t);yktQSR)&kliBQjPoJKY-;o{<9BdhpND` z${HL;8C;inp?1Oij}gvHVgJvN<^O&>`N!}5e}DN%inPIQ<-=Fy@8ExpQj}AX&5_pi F{%>MaLSg^_ diff --git a/notebooks/languages/python.jl b/notebooks/languages/python.jl deleted file mode 100644 index 5b0b107d..00000000 --- a/notebooks/languages/python.jl +++ /dev/null @@ -1,952 +0,0 @@ -### A Pluto.jl notebook ### -# v0.19.42 - -using Markdown -using InteractiveUtils - -# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). -macro bind(def, element) - quote - local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end - local el = $(esc(element)) - global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) - el - end -end - -# ╔═╡ 709da6de-e873-4fa6-8065-9ac8c03be1b7 -using PyCall, Conda, JolinPluto, PlutoUI, HypertextLiteral - -# ╔═╡ 9b3e674f-d7e0-41f2-94fe-b884e3220f37 -using DataFrames # always place imports on their own line - -# ╔═╡ 312dfe5a-0ff0-4a3f-907a-2d2c115e2754 -begin - Base.getindex(o::PyObject, s) = py"$o[$s]" - Base.setindex!(o::PyObject, v, s) = py"$o[$s] = $v" -end - -# ╔═╡ 3fa2cf9e-eaa3-11ed-29ac-6de296b44861 -md""" -# Python Dashboard - -We are going to look at CO2 data. - -> 👉 3, 1, 2. If you build your own dashboard later, remember that you can completely reorder the cells. For a dashboard this often makes sense in that the final plots and input elements could be moved to the top of the notebook. - -Here we keep normal ordering so that it is easier to understand what goes on. -""" - -# ╔═╡ 4f6fa5f9-0849-411a-8eee-ee9e636cb8b7 -md""" -Enable indexing syntax for Python object. -""" - -# ╔═╡ e11fa66a-7ec5-47de-b05e-e45227f36a46 -@output_below - -# ╔═╡ 976409d5-3ba3-4e85-ae1a-1308ff678303 -TableOfContents() - -# ╔═╡ b504e1e3-a358-4ba7-a72a-ef5d0cddc5ea -md""" -## Installing Python dependencies -""" - -# ╔═╡ b80fc25b-9fcb-482e-91c2-2d731e5dca4c -md""" -PyCall.jl python dependencies are handled via Conda. Conda is awesome, as it gives you access to precompiled python packages, even for Linux ARM64 🙂. -""" - -# ╔═╡ 8587f3ab-9563-491d-bae7-790688eb4283 -Conda.add(["numpy", "pandas", "matplotlib", "plotly"]) - -# ╔═╡ afa20ae0-e7e0-46c8-9b96-3811feb33a78 -md""" -Accessing python modules from reactive notebooks is best done via `PyCall.pyimport`, which binds the python package to a julia variable. -""" - -# ╔═╡ a201edd1-0529-4ec1-b609-f571bace3627 -begin -pd = pyimport("pandas") -plotly = pyimport("plotly") -plt = pyimport("matplotlib.pyplot") -end - -# ╔═╡ 84ad50dd-f98e-41b2-a4d7-7e27d90d7931 -md""" -## Calling Python from Pluto - -Calling Python from Julia is like like using normal Julia. Or if you like, using Julia feels like using Python. - -First a mere julia call to download the data. -""" - -# ╔═╡ 0bc98db0-91a4-4c42-93ab-807d8c657ff6 -datafile = download("https://nyc3.digitaloceanspaces.com/owid-public/data/co2/owid-co2-data.csv") - -# ╔═╡ ceeec493-05b4-481a-bc2f-0788a39ab3cb -md""" -Now we call Python. -""" - -# ╔═╡ 0d668fc3-aa02-462c-806b-5122c7f76f49 -df = pd.read_csv(datafile) - -# ╔═╡ 7b8dec72-c934-420a-9105-bcf137c68e67 -df[df["country"] == "Germany"] - -# ╔═╡ ebaddfcf-2ee3-4144-8ee7-a5fdb656f92a -md""" -Key python objects are autoconverted to and from julia. Others get wrapped into a `PyObject`. -""" - -# ╔═╡ 08ecc631-9cb0-49ee-a310-6916b6dfca36 -typeof(df) - -# ╔═╡ 717650a9-a3e0-47e2-bb8a-105ad5c37125 -df.columns - -# ╔═╡ 2182213e-6159-4745-96db-79f612da2b66 -md""" -Most julia functions work out of the box on these python objects -""" - -# ╔═╡ fe706ad3-f39c-4c90-9fce-ef31879f0032 -columns = collect(df.columns) - -# ╔═╡ dbbf3043-94bc-490e-b48a-667e91b1a75b -countries = unique(df["country"]) - -# ╔═╡ 1bc2f0e4-42db-42c0-ab98-3b333fe46181 -md""" -## Interactive visualizations - -The reactivity comes from Pluto. The interactive widgets come from PlutoUI. The plotting happens on python side. Also plotly works awesomely. -""" - -# ╔═╡ 554db612-df7a-49d1-8b03-455ffea12881 -md""" -### Input Widgets - -Interactive input widgets use the `@bind` macro. -```julia -@bind country PlutoUI.Select(countries; default="World") -``` -This lets the variable `country` listen for updates on the select input. - -All these widgets can also be combined into markdown/html code using interpolation. -""" - -# ╔═╡ 56d600b9-b02a-4982-bef8-7ae07632816d -choose = md""" -| Parameter | Choose | -| --------- | :----- | -| region 1 | $(@bind country1 PlutoUI.Select(countries; default="World")) | -| region 2 | $(@bind country2 PlutoUI.Select(countries; default="Germany")) | -| compare | $(@bind yaxis PlutoUI.Select(columns; default="co2_per_capita")) | -""" - -# ╔═╡ 0e0c377c-1ec8-4136-bd36-040caa69631a -(;yaxis, country1, country2) - -# ╔═╡ 7dfc8421-d881-429a-81b4-daf31adae9b1 -xaxis = "year" # we fix the xaxis to be year - -# ╔═╡ 0d22e8cb-6dfc-4778-b274-f1187381846c -subdf1 = df[df["country"] == country1]; - -# ╔═╡ 5de9257a-790c-404c-a05a-3c4ae377614b -subdf2 = df[df["country"] == country2] - -# ╔═╡ 162713e1-7411-464b-a674-426fad2713dc -md""" -### Plotting using Matplotlib - -Works seamlessly. -""" - -# ╔═╡ b2206650-e3f4-4e18-88ce-7614e5c80638 -begin - figure, ax = plt.subplots() - ax.plot(subdf1[xaxis], subdf1[yaxis], label=country1) - ax.plot(subdf2[xaxis], subdf2[yaxis], color="orange", label=country2) - ax.legend(loc="upper left") - ax.set_xlabel(xaxis) - ax.set_ylabel(yaxis) -end - -# ╔═╡ a6268d19-45db-419d-8168-516cbc205190 -choose - -# ╔═╡ 1e66d44c-f750-4c3c-8d9d-709ebb45a979 -figure.savefig("py_figure.png"); LocalResource("py_figure.png") - -# ╔═╡ 7a9108c9-fb68-4680-a56c-de5cd770974c -md""" -### Plotly works too - -We can make every matplotlib plot into a lovely interactive plotly plot. -""" - -# ╔═╡ 92a4c56c-1072-4772-9fa2-de38f6cf3fdf -choose - -# ╔═╡ 68ba199a-e41e-4738-9dc9-4557a0003452 -plotly.tools.mpl_to_plotly(figure).update_layout( - # enable responsive layout - autosize=true, width=nothing, height=nothing, - # reduce margins - margin=py"{'l': 2, 'r':2, 't':24, 'b': 2}", -) - -# ╔═╡ 97347c11-8200-4bf7-9329-8675d02e7a30 -md""" -## Defining python functions and classes - -For python things which are not easily mapped to julia syntax, there are string macros -- `py"..."` will eval the string as python code and return the result. -- `py\"\"\"... multiple lines ...\"\"\"` will exec the code (without returning anything). - -> 😎 Using the dollar sign `$` we can bring julia variables or code to python. This is called interpolation. -""" - -# ╔═╡ a15906a6-413e-459a-b10d-ca504f3df0eb -dict = py"{'number': int('3'), 'bool': $(isodd(3))}" - -# ╔═╡ 0ae0a5c8-a2c8-4162-a4c7-61f9a263284b -md""" -When using multiline py strings, prefer not to use interpolation `$`, but make the python code as self-contained as possible. -""" - -# ╔═╡ 4f5ba7e8-a147-46f2-8114-474db75e7ff5 -begin - py""" - import numpy as np - class PyTools: - @staticmethod - def sin(n): - return np.sin(n) - """ - pytools = py"PyTools" -end - -# ╔═╡ 6cb12ea6-ca09-42b8-850e-2fcdbdb745ba -pytools.sin(1) - -# ╔═╡ 9f34091f-2f8d-41bd-82b2-0f0075613f71 -md""" -> ⚠️ When using multiline py strings be careful: -> - variables defined in python, won't be available in other Pluto cells. You need to get them back to Pluto right away using single line py strings. -> - variables interpolated with `$` will be invalid when accessed in a new cell. For instance in the above example, we shall not define numpy on julia via `np = pyimport("numpy")` and then use `np` inside `PyTools` as `$np.sin(n)`, because when we call the `pytools.sin` function in another cell, the numpy reference won't work. -""" - -# ╔═╡ 97d534c9-e0d5-4a65-9eda-531adb4afc36 -md""" -## Final Tip -If you want to transfer a julia DataFrame to Python, you need to use `pairs(eachcol(df))` -""" - -# ╔═╡ cc66dbda-f4fc-4da6-9239-55da358b94c6 -begin - julia_df = DataFrame(x=[1,2,3], y=["a", "b", "c"]) - python_df = pd.DataFrame(pairs(eachcol(julia_df))) -end - -# ╔═╡ b27cd066-84e4-4e56-b9ae-864cb2fd50be -md""" -# Next -- [Our World in Data - CO2 Data](https://github.com/owid/co2-data) for more details on the data source -- [`PyCall.jl`](https://github.com/JuliaPy/PyCall.jl) for more details on the Python interface. -- [`Pandas.jl`](https://github.com/JuliaPy/Pandas.jl) for a julia wrapper for Python pandas, which builds on top of PyCall.jl, hence interacts well with this setup. -- [`PlutoUI.jl`](https://github.com/JuliaPluto/PlutoUI.jl) for more prebuilt input widgets. - -Happy dashboarding 📈 📊! -""" - -# ╔═╡ 00000000-0000-0000-0000-000000000001 -PLUTO_PROJECT_TOML_CONTENTS = """ -[deps] -Conda = "8f4d0f93-b110-5947-807f-2305c1781a2d" -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" - -[compat] -Conda = "~1.9.1" -DataFrames = "~1.6.1" -HypertextLiteral = "~0.9.4" -JolinPluto = "~0.1.43" -PlutoUI = "~0.7.52" -PyCall = "~1.96.1" -""" - -# ╔═╡ 00000000-0000-0000-0000-000000000002 -PLUTO_MANIFEST_TOML_CONTENTS = """ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.2" -manifest_format = "2.0" -project_hash = "94593c369a3aabb2b8917367b2bbeacc43ebcf8a" - -[[deps.AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" - -[[deps.AbstractPlutoDingetjes]] -deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" -uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" - -[[deps.Conda]] -deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "8c86e48c0db1564a1d49548d3515ced5d604c408" -uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.9.1" - -[[deps.Continuables]] -deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] -git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" -uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" -version = "1.0.3" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" - -[[deps.DataTypesBasic]] -git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" -uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" -version = "2.0.3" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" - -[[deps.ExprParsers]] -deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] -git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" -uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" -version = "1.2.3" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.Git]] -deps = ["Git_jll"] -git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" -uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" -version = "1.3.0" - -[[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - -[[deps.Git_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" -uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" - -[[deps.Hyperscript]] -deps = ["Test"] -git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" -uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" -version = "0.0.4" - -[[deps.HypertextLiteral]] -deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" -uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" - -[[deps.IOCapture]] -deps = ["Logging", "Random"] -git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" -uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" -version = "0.2.3" - -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.13.2" - -[[deps.JWTs]] -deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" -uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" - -[[deps.JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" -uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" - -[[deps.MIMEs]] -git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" -uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" -version = "0.1.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" - -[[deps.PlutoUI]] -deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" -uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.0" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "ee094908d720185ddbdc58dbe0c1cbe35453ec7a" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.7" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProxyInterfaces]] -git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" -uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" -version = "1.1.1" - -[[deps.PyCall]] -deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"] -git-tree-sha1 = "43d304ac6f0354755f1d60730ece8c499980f7ba" -uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" -version = "1.96.1" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleMatch]] -git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" -uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" -version = "1.1.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" - -[[deps.StructEquality]] -deps = ["Compat"] -git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" -uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" -version = "2.1.0" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" - -[[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" - -[[deps.URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.VersionParsing]] -git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" -uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" -version = "1.3.0" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" -""" - -# ╔═╡ Cell order: -# ╟─3fa2cf9e-eaa3-11ed-29ac-6de296b44861 -# ╠═709da6de-e873-4fa6-8065-9ac8c03be1b7 -# ╟─4f6fa5f9-0849-411a-8eee-ee9e636cb8b7 -# ╠═312dfe5a-0ff0-4a3f-907a-2d2c115e2754 -# ╠═e11fa66a-7ec5-47de-b05e-e45227f36a46 -# ╠═976409d5-3ba3-4e85-ae1a-1308ff678303 -# ╟─b504e1e3-a358-4ba7-a72a-ef5d0cddc5ea -# ╟─b80fc25b-9fcb-482e-91c2-2d731e5dca4c -# ╠═8587f3ab-9563-491d-bae7-790688eb4283 -# ╟─afa20ae0-e7e0-46c8-9b96-3811feb33a78 -# ╠═a201edd1-0529-4ec1-b609-f571bace3627 -# ╟─84ad50dd-f98e-41b2-a4d7-7e27d90d7931 -# ╠═0bc98db0-91a4-4c42-93ab-807d8c657ff6 -# ╟─ceeec493-05b4-481a-bc2f-0788a39ab3cb -# ╠═0d668fc3-aa02-462c-806b-5122c7f76f49 -# ╠═7b8dec72-c934-420a-9105-bcf137c68e67 -# ╟─ebaddfcf-2ee3-4144-8ee7-a5fdb656f92a -# ╠═08ecc631-9cb0-49ee-a310-6916b6dfca36 -# ╠═717650a9-a3e0-47e2-bb8a-105ad5c37125 -# ╟─2182213e-6159-4745-96db-79f612da2b66 -# ╠═fe706ad3-f39c-4c90-9fce-ef31879f0032 -# ╠═dbbf3043-94bc-490e-b48a-667e91b1a75b -# ╟─1bc2f0e4-42db-42c0-ab98-3b333fe46181 -# ╟─554db612-df7a-49d1-8b03-455ffea12881 -# ╠═56d600b9-b02a-4982-bef8-7ae07632816d -# ╠═0e0c377c-1ec8-4136-bd36-040caa69631a -# ╠═7dfc8421-d881-429a-81b4-daf31adae9b1 -# ╠═0d22e8cb-6dfc-4778-b274-f1187381846c -# ╠═5de9257a-790c-404c-a05a-3c4ae377614b -# ╟─162713e1-7411-464b-a674-426fad2713dc -# ╠═b2206650-e3f4-4e18-88ce-7614e5c80638 -# ╠═a6268d19-45db-419d-8168-516cbc205190 -# ╠═1e66d44c-f750-4c3c-8d9d-709ebb45a979 -# ╟─7a9108c9-fb68-4680-a56c-de5cd770974c -# ╠═92a4c56c-1072-4772-9fa2-de38f6cf3fdf -# ╠═68ba199a-e41e-4738-9dc9-4557a0003452 -# ╟─97347c11-8200-4bf7-9329-8675d02e7a30 -# ╠═a15906a6-413e-459a-b10d-ca504f3df0eb -# ╟─0ae0a5c8-a2c8-4162-a4c7-61f9a263284b -# ╠═4f5ba7e8-a147-46f2-8114-474db75e7ff5 -# ╠═6cb12ea6-ca09-42b8-850e-2fcdbdb745ba -# ╟─9f34091f-2f8d-41bd-82b2-0f0075613f71 -# ╟─97d534c9-e0d5-4a65-9eda-531adb4afc36 -# ╠═9b3e674f-d7e0-41f2-94fe-b884e3220f37 -# ╠═cc66dbda-f4fc-4da6-9239-55da358b94c6 -# ╟─b27cd066-84e4-4e56-b9ae-864cb2fd50be -# ╟─00000000-0000-0000-0000-000000000001 -# ╟─00000000-0000-0000-0000-000000000002 diff --git a/notebooks/new/Cute notes.R b/notebooks/new/Cute notes.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Exciting program.R b/notebooks/new/Exciting program.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Fun report.R b/notebooks/new/Fun report.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Important notes.R b/notebooks/new/Important notes.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Novel notes.jl b/notebooks/new/Novel notes.jl new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Revolutionary computation.R b/notebooks/new/Revolutionary computation.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Surprising experiment.R b/notebooks/new/Surprising experiment.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Tiny notes.R b/notebooks/new/Tiny notes.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/new/Wonderful story.R b/notebooks/new/Wonderful story.R new file mode 100644 index 00000000..e69de29b diff --git a/notebooks/streams/finance-example.jl b/notebooks/streams/finance-example.jl deleted file mode 100644 index 7c1f87df..00000000 --- a/notebooks/streams/finance-example.jl +++ /dev/null @@ -1,2406 +0,0 @@ -### A Pluto.jl notebook ### -# v0.19.42 - -using Markdown -using InteractiveUtils - -# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). -macro bind(def, element) - quote - local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end - local el = $(esc(element)) - global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) - el - end -end - -# ╔═╡ 7947dbfd-5a0a-4ba1-98ff-bc80da747d9f -using Plots, HTTP, JolinPluto, PlutoUI, PlutoHooks, PlutoLinks, JSON3, Dates, RxInfer, Statistics, DataStructures - -# ╔═╡ eb553bfd-f15c-4e0e-a967-b3e99837130c -md""" -# Finance example - -This example illustrates an advanced real-time analysis. Cryptocurrencies are very handy for this purpose, as they fluctuate very rapidly and there exist free access real-time APIs. - -Alternatively you can imagine sensor data which monitors a wind turbine, or medical data monitoring some patient, or some e-commerce customer data. The general structure is everywhere the same: You want modern applied mathematics on top of a stream of updates. -""" - -# ╔═╡ 3b24b13d-d2c2-4690-9de6-6558d6bfc08c -md""" -# Report Bitcoin - -Enjoy the insights given to you by an online learning probabilistic model. -- anomalies -- forecast -- hidden state -""" - -# ╔═╡ 7575d294-7fde-4488-8a34-cb59b9d78886 -md""" -# Implementation Details - -The online learning algorithm has three steps -1. getting new raw data -2. watermarking - aggregating raw data into fixed windows -3. real-time probabilistic modelling of the regular data -""" - -# ╔═╡ 454397d7-9864-436a-8290-64991e23d68f -md""" -Some general setups first: -""" - -# ╔═╡ d59c98f3-2884-4827-9e82-86dd9bcdba75 -@output_below - -# ╔═╡ a35fc419-a4c5-43b7-902c-ff2611b8cebd -TableOfContents() - -# ╔═╡ f4659ca6-f686-452d-8e3c-7b9a1f765e00 -md""" -## Read raw data from Binance API - -The binance API let's subscripe to websocket which delivers updates by the second. That is really cool. -""" - -# ╔═╡ 71f5bdc7-cd6a-4761-adea-b07582a53f52 -trading = "btceur" # you can try "etheur" - -# ╔═╡ 236cc9e6-2b01-4d86-83f4-0d2b17003ea8 -md""" -let's connect to binance -""" - -# ╔═╡ f537883b-fd0e-4529-919c-744802eec7fe -BINANCE_API_WS = "wss://stream.binance.com:9443/ws/$trading@miniTicker" - -# ╔═╡ 71722dc8-6e82-4575-a772-41e8f212e475 -function fill_channel_prod(channel) - while true - try - HTTP.WebSockets.open(BINANCE_API_WS; verbose=false) do ws - for message in ws - update = JSON3.read(message) - put!(channel, update) - end - end - catch ex - # because of timeouts it can happen that we need to reconnect - isa(ex, HTTP.WebSockets.WebSocketError) || rethrow() - end - @info "repeating" - sleep(0.5) - end -end - -# ╔═╡ ff47b595-3de5-4ea7-af19-c2ca2560bc71 -md""" -The very same notebook is run as test without reactivity. Hence we need to care about reasonable fallbacks. - -It turns out that the binance API anyway does not work from Github Actions, hence this is the perfect place to insert dummy data for testing. -""" - -# ╔═╡ a64f3d38-5154-418d-9eec-37c4de4d25e5 -function fill_channel_test(channel) - for _ in 1:20 - message = """{ - "e": "24hrMiniTicker", - "E": 1688136657013, - "s": "BTCEUR", - "c": "27654.23000000", - "o": "28023.87000000", - "h": "28788.87000000", - "l": "27150.00000000", - "v": "1439.25780000", - "q": "40539656.84534090" - }""" - put!(channel, JSON3.read(message)) - end -end - -# ╔═╡ ef2f3e46-5421-4b8e-a492-8c7c2e0f46c9 -md""" -We use a Julia Channel to manage our stream of updates. - -This has several advantages: -- Incoming messages are automatically buffered. I.e. if the Channel buffer is full, the `put!` operation will automatically wait till there is again some space free. -- There is an existing infrastructure around Channels, giving your more tools and also better knowledge sharing. -""" - -# ╔═╡ 946dd27a-0456-495f-b0d8-918f59d89989 -channel = @Channel(10) do channel - if ENV["JOLIN_ENVIRONMENT"] == "test" - fill_channel_test(channel) - else # on prod and dev connect to the real API endpoint - fill_channel_prod(channel) - end -end - -# ╔═╡ 827df769-e105-4964-b15f-a72453ae70db -md""" -Having such a channel we can use `JolinPluto.@repeat_take!` to grab an update from it, again and again and again and again... -""" - -# ╔═╡ 637c398d-9d47-4936-8902-91ad54350c65 -update = @repeat_take! channel - -# ╔═╡ 0688a4e8-9b9a-4613-9802-009e36fc6c15 -md""" -Having this update we can proceed the simple Pluto way and define our calculations. -""" - -# ╔═╡ 505be305-f484-429b-a6a7-b25e995caa0c -begin - raw_price = parse(Float64, update.c) - raw_eventtime = Dates.unix2datetime(div(update.E, 1000)) - raw_price, raw_eventtime -end - -# ╔═╡ 41b0c0f8-dfb9-40a3-9ba8-6d15986120b7 -md""" -Not everything should be run if a new update arrives. For example we would like to store a history of the last n updates. - -We can simply do so by using different cells which do not depend on `update`. -Pluto recognizes that these cells should not be rerun. -""" - -# ╔═╡ cf188b1f-ef72-4108-a3ac-55114b9e9674 -raw_n = 1000 - -# ╔═╡ 5158e35b-a24f-44a1-9d6b-8f5137ac0088 -begin - raw_prices = CircularBuffer{Float64}(raw_n) - raw_eventtimes = CircularBuffer{DateTime}(raw_n) -end; - -# ╔═╡ 989afc03-eae2-4738-8b51-0f0c9c2ab631 -md""" -Let's add our new update to the history, and plot everything. -""" - -# ╔═╡ 7f6ca5bf-4927-4f1d-80f4-2e780e2a7d3a -plot_raw = begin - push!(raw_prices, raw_price) - push!(raw_eventtimes, raw_eventtime) - plot(raw_eventtimes, raw_prices, xrotation = 10, xlabel="time", ylabel="EURO", label="bitcoin") -end - -# ╔═╡ d1f656b3-e683-4e32-b3bb-01b713f9be8a -md""" -## Watermarking - Bring raw data into regular windows - -In many realtime applications we cannot use the raw data stream, as events may come irregularly and sometimes even out of order. - -For such cases it is handy to add a second sampling step which guarantees that the data is well behaved. -""" - -# ╔═╡ 1a5d0168-8c58-4521-a11d-af838d74fe42 -md""" -We make the **interval length** interactive with some reasonable defaults. Note that we can simply reuse this interactive element later on to define an overall interactivity overview. -""" - -# ╔═╡ 98c5088b-953e-4196-bc38-00f70c3ee4ef -ui_interval = @bind interval Select([Second(sec) => "$sec seconds" for sec in [2, 5, 10, 30, 60]], default=Second(10)) - -# ╔═╡ 7a0930d5-9d8c-41cb-bd42-6744a1834a2f -md""" -`JolinPluto.@repeat_at` is a handy helper which ensures that we run some code again at a fixed time. Combined with some `Dates.DateTime` magic we can use this to run code every `x` seconds. - -We do not do any fancy aggregation, just taking the last price. -""" - -# ╔═╡ e9b0b206-6102-4729-b6d4-90d38302996e -regular_price, regular_eventtime = @repeat_at(ceil(now(), interval)) do t - # wait for first raw_price to arrive - while isempty(raw_prices) - sleep(1) - end - price = raw_prices[end] - price, t -end - -# ╔═╡ 238200a6-7ce7-4eb1-ac73-fe9f0d9a360c -md""" -Like for the raw prices we also want to collect regular prices into a small history. -""" - -# ╔═╡ e0786c60-fe71-4a9f-9c5a-5f08c5c32828 -regular_n = 50 - -# ╔═╡ 420b4e1d-4a30-49a7-90e1-9d7f90468d0e -begin - regular_prices = CircularBuffer{Float64}(regular_n) - regular_eventtimes = CircularBuffer{DateTime}(regular_n) -end; - -# ╔═╡ f6b99f30-0402-4b58-b612-750395469a95 -md""" -Add the new regular price to the history and plot it. We don't -""" - -# ╔═╡ 13e37702-ee63-4dca-8412-bb589e09c439 -plot_regular = begin - push!(regular_prices, regular_price) - push!(regular_eventtimes, regular_eventtime) - plot(regular_eventtimes, regular_prices, xrotation = 10, xlabel="time", ylabel="EURO", label="bitcoin") -end - -# ╔═╡ 9c9ac205-3b97-4507-93e2-484ad33b6ca0 -md""" -## Modelling - Probabilistic online learner -""" - -# ╔═╡ 2d953622-7a2a-4885-a74e-5510f0668a9e -md""" -For initializations of the probabilistic distributions, we need a good first guess for the average value. It is handy to use the first price which arrives. - -How to do that? -1. Depend on `regular_price` so that Pluto really runs the initialization only after the first regular values arrived. -2. Have an if-else to check whether the regular_price is actually the first one. - -The following is needed for 2.: -""" - -# ╔═╡ 30da98dc-7fc9-4d93-9b29-c3d583f9851d -md""" -For our probabilistic part we again have some history and state. -- history of predictions (called posteriors), combined with the actual prices and eventtimes -- probabilistic information about the currently learned model (called priors) -""" - -# ╔═╡ 8090b5db-b6e8-4124-ac03-92405162baa7 -md""" -The variance priors can be reused even after pressing reset button. They are our current best guess for the system. -""" - -# ╔═╡ 796379fd-ad89-4aa4-8321-8b6107284b54 -begin - # the higher the prior(modeling precision), the smaller the variance between jumps - # taken from longer runs - prior_x_τ = Ref(GammaShapeRate(1.0, 70)) - # high y precision - small general noise - prior_y_τ = Ref(GammaShapeRate(40.0, 0.05)) - - # will be initialized on first raw_price - prior_x = Ref{NormalMeanPrecision{Float64}}() -end; - -# ╔═╡ 93255b47-200c-424c-b333-f5a1e1630b17 -md""" -### Build probabilistic model - random walk - -Our actual model is using [RxInfer.jl](https://github.com/biaslab/RxInfer.jl) to build a super efficient online learner. - -A standard problem with online learners is to guarantee that they actually learn the right thing. -- one way to solve this is to relearn every time on a sliding history of enough data, which usually involves a lot of recomputations on every step -- Bayesian probabilistic modelling offers a great alternative, as the number of already seen data points is implicitly stored in the prior and respected when including a new data point. This allows for much safer and much quicker online learners. -""" - -# ╔═╡ 378f4c94-db87-4fde-8eba-663b01006104 -begin - @model function kalman_filter(prior_x_mean_var, prior_x_τ, prior_y_τ) - - x_prev ~ Normal(mean = prior_x_mean_var[1], precision = prior_x_mean_var[2]) - - # Random walk with flexible precision - x_τ ~ Gamma(shape = shape(prior_x_τ), rate = rate(prior_x_τ)) - x ~ Normal(mean = x_prev, precision = x_τ) - - # Noisy observation (y_rv to also store posterior) - y_τ ~ Gamma(shape = shape(prior_y_τ), rate = rate(prior_y_τ)) - y = datavar(Float64) - y ~ Normal(mean = x, precision = y_τ) - end - - # We assume the following factorisation between variables - # in the variational distribution - @constraints function filter_constraints() - q(x_prev, x, x_τ, y_τ) = q(x_prev, x)q(x_τ)q(y_τ) - end -end - -# ╔═╡ acd379a2-d95e-48de-a36d-5dc7c6894040 -md""" -The easiest way to ensure to parts are always run together is to put them into one cell. Here we want to ensure that the prior is always initialized. -""" - -# ╔═╡ ac70b579-181a-4f61-9dec-18965ca6ea49 -md""" -That is our inference result. We successfully updated our probabilistic model (learned so to say) to include the new data point. -""" - -# ╔═╡ 9b4ff68d-24e3-4015-8031-ddaf5055639e -md""" -### Collecting results - -Let's collect our results and use our probabilistic prediction to assess for anomalies. Events which are very rare are of extra importance in all kind of timeseries. -""" - -# ╔═╡ 0f33723c-cab0-4ea5-80ef-bc50d641c196 -md""" -computing outliers -""" - -# ╔═╡ a9ed7079-02d0-4420-8d4e-223f1d03b7e8 -md""" -### Plotting - -Now we have everything together and can construct a summary plot. - -The interactive input widgets are going to be reused in the overall report summary. -""" - -# ╔═╡ e488f8d0-3aaf-44f1-9088-dbd237c58317 -ui_forecast_n = @bind forecast_n Select([i => "$i steps" for i in [2, 10, 20, 50]], default=10) - -# ╔═╡ 6b063743-e9d9-403c-b4ac-b8d7aa75c617 -ui_ci_percent = @bind ci_percent Slider(20:1:99, default=95, show_value=true) - -# ╔═╡ 831b68b4-111b-11ee-1f8e-a7ede5e71437 -begin - ui_reset = @bind reset_button Button("Reset") - - md""" - | | choose | - |---------|:-------| - | confidence interval | $ui_ci_percent %| - | forecast | $ui_forecast_n | - | sampling interval | $ui_interval | - | reset | $ui_reset| - """ -end - -# ╔═╡ ec8cef56-ff09-4436-8608-16024a3a5b4b -begin - # combine all possible reset events - reset_button - trading - interval - reset = "" -end - -# ╔═╡ c60d7481-322e-4a47-8e6e-15116d104ae4 -# this is a resetable counter -reset; counter_regular_price = Ref(0) - -# ╔═╡ b130240a-2897-44f0-ae4f-4ac9bed340fc -begin - regular_price - # only the first counts are interesting for initializations - if counter_regular_price[] < 20 - # increment counter if raw_price changed - counter_regular_price[] += 1 - end - counter_regular_price[] -end - -# ╔═╡ 9dd967b2-99c0-4a02-851f-c6fa8cda78c7 -begin - if counter_regular_price[] == 1 - # (re)initialize x-priors the first time a new raw price arrives - prior_x[] = NormalMeanPrecision(regular_price, mean(prior_x_τ[])) - end - result = inference( - model = kalman_filter(mean_var(prior_x[]), prior_x_τ[], prior_y_τ[]), - data = (y = regular_price,), - constraints = filter_constraints(), - initmarginals = (x = prior_x[], x_τ = prior_x_τ[], y_τ = prior_y_τ[]), - ) -end - -# ╔═╡ 49e5f8fc-8ce7-4e08-bd48-834cc3d425c3 -result.posteriors - -# ╔═╡ 3df99def-8409-46c5-8726-fb78b41f1a76 -begin - # reinitialize these histories when pressing the reset button - reset - - # probability stuff which follows below but has same time granularity as regular - prob_posteriors = CircularBuffer{Any}(regular_n) - prob_eventtimes = CircularBuffer{DateTime}(regular_n) - prob_prices = CircularBuffer{Float64}(regular_n) -end; - -# ╔═╡ 3036c804-dc63-4c1e-a9f4-e7153565a28c -ci = ci_percent / 100.0 - -# ╔═╡ eeafe646-eb8c-44d2-b66d-3933a6ccff3d -σ_ci = quantile(Normal(), 1 - (1 - ci) / 2) - -# ╔═╡ 2b185eb8-af14-4e4d-8a53-794a387ad39f -md""" -## Helpers - -Some extra functionalities which we can keep separate. -""" - -# ╔═╡ 06107a41-2d86-4d4b-9c22-f8f829f5b2db -function rand_y(posterior; given_x=nothing, n_steps_into_the_future=0) - x = isnothing(given_x) ? rand(posterior[:x]) : given_x - for i in 1:n_steps_into_the_future - x = rand(NormalMeanPrecision(x, rand(posterior[:x_τ]))) - end - y = rand(NormalMeanPrecision(x, rand(posterior[:y_τ]))) - return y -end - -# ╔═╡ fa03cac3-087a-4cbe-9eba-61e3fe9bd1ae -function rand_x(posterior; given_x=nothing, n_steps_into_the_future=0) - x = isnothing(given_x) ? rand(posterior[:x]) : given_x - for i in 1:n_steps_into_the_future - x = rand(NormalMeanPrecision(x, rand(posterior[:x_τ]))) - end - return x -end - -# ╔═╡ 7315b614-a6e4-4533-84e5-14957e452334 -md""" -### Predict - -For all steps in order to plot anomalies everywhere. -""" - -# ╔═╡ 42891661-6848-421f-8a47-d9de74ee40b9 -function predict_all() - pred_posteriors = [prob_posteriors[1]; prob_posteriors] - pred_y_means = Vector{Float64}(undef, length(pred_posteriors)) - pred_y_stds = Vector{Float64}(undef, length(pred_posteriors)) - - for i in eachindex(pred_posteriors) - pred_y_means[i], pred_y_stds[i] = mean_std( - rand_y(pred_posteriors[i], n_steps_into_the_future=1) for _ in 1:10_000 - ) - end - - pred_eventtimes = [prob_eventtimes; prob_eventtimes[end] + interval] - pred_eventtimes, pred_y_means, pred_y_stds -end - -# ╔═╡ 5a2d9326-b025-4e53-9a9b-d9d15484957e -md""" -### Forecast - -Forecast some steps into the future -""" - -# ╔═╡ 37c3455e-fa03-4345-9173-7554f5643b8d -function _forecast_y(posterior; n_steps_into_the_future) - forecast_x = [] - forecast_x_prev = rand_x(posterior; n_steps_into_the_future) - for i in 1:forecast_n - push!(forecast_x, forecast_x_prev) - forecast_x_prev = rand_x(posterior, given_x=forecast_x_prev, n_steps_into_the_future=1) - end - forecast_y = [rand_y(posterior, given_x = x) for x in forecast_x] -end - -# ╔═╡ 4c3a0f66-608c-4c6e-bc2f-bdeb0a80ea90 -function forecast_y(eventtime, posterior, n_steps_into_the_future=1) - samples = [ - _forecast_y(posterior; n_steps_into_the_future) - for i in 1:10_000 - ] - forecast_means = Vector{Float64}(undef, forecast_n) - forecast_stds = Vector{Float64}(undef, forecast_n) - - for i in 1:forecast_n - forecast_means[i], forecast_stds[i] = mean_std( - samples[s][i] for s in eachindex(samples) - ) - end - start_eventtime = eventtime + n_steps_into_the_future*interval - forecast_eventtimes = [start_eventtime + (i-1)*interval for i in 1:forecast_n] - return forecast_eventtimes, forecast_means, forecast_stds -end - -# ╔═╡ 9181d244-ffb6-4aca-935d-2014fe032cc6 -begin - prior_x_τ[] = result.posteriors[:x_τ] - prior_y_τ[] = result.posteriors[:y_τ] - prior_x[] = result.posteriors[:x] - - push!(prob_posteriors, result.posteriors) - push!(prob_eventtimes, regular_eventtime) - push!(prob_prices, regular_price) - - pred_eventtimes, pred_y_means, pred_y_stds = predict_all() - - forecast_eventtimes, forecast_y_means, forecast_y_stds = forecast_y(regular_eventtime, result.posteriors) -end; - -# ╔═╡ 4036d449-2d18-4ca1-8e1d-c2214b0e416b -begin - # independent cell, because this depends on CI - prob_outliers = map(1:length(prob_prices)) do i - price, y_mean, y_std = prob_prices[i], pred_y_means[i], pred_y_stds[i] - y_ci = y_std * σ_ci - isoutlier = price < (y_mean - y_ci) || (y_mean + y_ci) < price - return isoutlier - end - - prob_marker_color_outliers = map(b -> b ? :orange : :blue, prob_outliers) -end; - -# ╔═╡ a647e18a-e5ef-48a9-bcd9-05fa7bbdb730 -plot_bayes = begin - plot(pred_eventtimes, pred_y_means, - ribbon = pred_y_stds .* σ_ci, - label = "Hidden state with $(ci_percent)% confidence", xlabel="time", ylabel="EURO", - xrotation = 10) - plot!(forecast_eventtimes, forecast_y_means, - ribbon = forecast_y_stds .* σ_ci, - label = "Forecast with $(ci_percent)% confidence", xlabel="time", ylabel="EURO", - xrotation = 10) - - scatter!(prob_eventtimes, prob_prices, label = "Aggregated Observations", markercolor=prob_marker_color_outliers) - scatter!([], [], label="Warning", markercolor=:orange) -end - -# ╔═╡ ed3826e4-0ca1-443b-88e1-227799da5216 -md""" -## Final plot - -Let's combine everything together -""" - -# ╔═╡ f7043f0a-2127-44db-a76e-430d143245d9 -plot_total = begin - raw_price - - initial_time = if isempty(prob_eventtimes) - DateTime(0) - else - prob_eventtimes[begin] - end - raw_prop_eventtimes = [t for t in raw_eventtimes if t >= initial_time] - raw_prop_prices = [p for (t, p) in zip(raw_eventtimes, raw_prices) if t >= initial_time] - - - plot(pred_eventtimes, pred_y_means, - ribbon = pred_y_stds .* σ_ci, - label = "Hidden state with $(ci_percent)% confidence", xlabel="time", ylabel="EURO", - xrotation = 10, - legend=(0.33, 1.25), top_margin=20*Plots.mm) - - plot!(forecast_eventtimes, forecast_y_means, - ribbon = forecast_y_stds .* σ_ci, - label = "Forecast with $(ci_percent)% confidence", xlabel="time", ylabel="EURO", - xrotation = 10) - - plot!(raw_prop_eventtimes, raw_prop_prices, label="Raw observations") - - scatter!(prob_eventtimes, prob_prices, label = "Aggregated observations", markercolor=prob_marker_color_outliers) - scatter!([], [], label="Warning", markercolor=:orange) -end - -# ╔═╡ 61e935f6-15d8-455f-aa9d-50c28b6b233f -plot_total - -# ╔═╡ 0d0fe636-a973-48a0-9f21-9b1ea32b2b3d -md""" -# Memory tracking - -Checking that the code can be run as infinite stream without Out-Of-Memory problems. -""" - -# ╔═╡ 44d27c89-60d5-4ecf-82d4-36f5d54756ea -list_gc_live_bytes = CircularBuffer{Float64}(400) - -# ╔═╡ f745f9dc-b996-41f5-9e8e-40828fd27f60 -begin - regular_price - GC.gc(true); GC.gc(false) # it is recommended to run both versions - push!(list_gc_live_bytes, Base.gc_live_bytes() / 2^20) - plot(list_gc_live_bytes, ylabel="MB") -end - -# ╔═╡ 00000000-0000-0000-0000-000000000001 -PLUTO_PROJECT_TOML_CONTENTS = """ -[deps] -DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" -HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" -JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -JolinPluto = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -PlutoHooks = "0ff47ea0-7a50-410d-8455-4348d5de0774" -PlutoLinks = "0ff47ea0-7a50-410d-8455-4348d5de0420" -PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -RxInfer = "86711068-29c9-4ff7-b620-ae75d7495b3d" -Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[compat] -DataStructures = "~0.18.15" -HTTP = "~1.9.14" -JSON3 = "~1.13.2" -JolinPluto = "~0.1.43" -Plots = "~1.39.0" -PlutoHooks = "~0.0.5" -PlutoLinks = "~0.1.6" -PlutoUI = "~0.7.52" -RxInfer = "~2.11.3" -""" - -# ╔═╡ 00000000-0000-0000-0000-000000000002 -PLUTO_MANIFEST_TOML_CONTENTS = """ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.2" -manifest_format = "2.0" -project_hash = "3a36cf402fe0a62ac85db7700da624baab3f9fe1" - -[[deps.AWS]] -deps = ["Base64", "Compat", "Dates", "Downloads", "GitHub", "HTTP", "IniFile", "JSON", "MbedTLS", "Mocking", "OrderedCollections", "Random", "SHA", "Sockets", "URIs", "UUIDs", "XMLDict"] -git-tree-sha1 = "9efa8450bf5d15f50739c9c20210ab48e70dcf5a" -uuid = "fbe9abb3-538b-5e4e-ba9e-bc94f4f92ebc" -version = "1.90.3" - -[[deps.AbstractPlutoDingetjes]] -deps = ["Pkg"] -git-tree-sha1 = "91bd53c39b9cbfb5ef4b015e8b582d344532bd0a" -uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.2.0" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.11" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayInterfaceCore]] -deps = ["LinearAlgebra", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "e5f08b5689b1aad068e01751889f2f615c7db36d" -uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" -version = "0.1.29" - -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "4aff5fa660eb95c2e0deb6bcdabe4d9a96bc4667" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "0.8.18" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.BitTwiddlingConvenienceFunctions]] -deps = ["Static"] -git-tree-sha1 = "0c5f81f47bbbcf4aea7b2959135713459170798b" -uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.5" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "89e0654ed8c7aebad6d5ad235d6242c2d737a928" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.3" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CloseOpenIntervals]] -deps = ["Static", "StaticArrayInterface"] -git-tree-sha1 = "70232f82ffaab9dc52585e0dd043b5e0c6b714f1" -uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.12" - -[[deps.CodeTracking]] -deps = ["InteractiveUtils", "UUIDs"] -git-tree-sha1 = "a1296f0fe01a4c3f9bf0dc2934efbf4416f5db31" -uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "1.3.4" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "02aa26a4cf76381be7f66e020a3eddeb27b0a092" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.2" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "d9a8f86737b665e15a9641ecbac64deef9ce6724" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.23.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "e460f044ca8b99be31d35fe54fc33a5c33dd8ed7" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.9.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" - -[[deps.CompositeTypes]] -git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" -uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" -version = "0.1.3" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "5372dbbf8f0bdb8c700db5367132925c0771ef7e" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "fe2838a593b5f776e1597e086dcd47560d94e816" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.3" -weakdeps = ["IntervalSets", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.Continuables]] -deps = ["DataTypesBasic", "ExprParsers", "OrderedCollections", "SimpleMatch"] -git-tree-sha1 = "96107b5ecb77d0397395cec4a95a28873e124204" -uuid = "79afa230-ca09-11e8-120b-5decf7bf5e25" -version = "1.0.3" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.CpuId]] -deps = ["Markdown"] -git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" -uuid = "adafc99b-e345-5852-983c-f28acb93d879" -version = "0.3.1" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" - -[[deps.DataTypesBasic]] -git-tree-sha1 = "0ebf9d9def6135849a9da8d2a1f144d0c467b81c" -uuid = "83eed652-29e8-11e9-12da-a7c29d64ffc9" -version = "2.0.3" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "938fe2981db009f531b6332e31c58e9584a2f9bd" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.100" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.DomainIntegrals]] -deps = ["CompositeTypes", "DomainSets", "FastGaussQuadrature", "GaussQuadrature", "HCubature", "IntervalSets", "LinearAlgebra", "QuadGK", "StaticArrays"] -git-tree-sha1 = "12b085bc1703d949539e333f823eaa875c60b03e" -uuid = "cc6bae93-f070-4015-88fd-838f9505a86c" -version = "0.4.4" - -[[deps.DomainSets]] -deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] -git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" -uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.6.7" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" - -[[deps.ExprParsers]] -deps = ["ProxyInterfaces", "SimpleMatch", "StructEquality"] -git-tree-sha1 = "d7508fa0337cee19e380ad5fbc7ac698ecc471ba" -uuid = "c5caad1f-83bd-4ce8-ac8e-4b29921e994e" -version = "1.2.3" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" - -[[deps.FastGaussQuadrature]] -deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "0f478d8bad6f52573fb7658a263af61f3d96e43a" -uuid = "442a2c76-b920-505d-bb47-c5924d526838" -version = "0.5.1" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "7072f1e3e5a8be51d525d64f63d3ec1287ff2790" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.13.11" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.21.1" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.1+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.8+0" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "d73afa4a2bb9de56077242d98cf763074ab9a970" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.9" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "1596bab77f4f073a14c62424283e7ebff3072eca" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.9+1" - -[[deps.GaussQuadrature]] -deps = ["SpecialFunctions"] -git-tree-sha1 = "eb6f1f48aa994f3018cbd029a17863c6535a266d" -uuid = "d54b0c1a-921d-58e0-8e36-89d8069c0969" -version = "0.5.8" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Git]] -deps = ["Git_jll"] -git-tree-sha1 = "51764e6c2e84c37055e846c516e9015b4a291c7d" -uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" -version = "1.3.0" - -[[deps.GitHub]] -deps = ["Base64", "Dates", "HTTP", "JSON", "MbedTLS", "Sockets", "SodiumSeal", "URIs"] -git-tree-sha1 = "5688002de970b9eee14b7af7bbbd1fdac10c9bbe" -uuid = "bc5e4493-9b4d-5f90-b8aa-2b2bcaad7a26" -version = "5.8.2" - -[[deps.Git_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "d8be4aab0f4e043cc40984e9097417307cce4c03" -uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.36.1+2" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" - -[[deps.GraphPPL]] -deps = ["MacroTools", "TupleTools"] -git-tree-sha1 = "36d1953626dcb87e87824488167a5a27e6046424" -uuid = "b3f8163a-e979-4e85-b43e-1f63d8c8b42c" -version = "3.1.0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HCubature]] -deps = ["Combinatorics", "DataStructures", "LinearAlgebra", "QuadGK", "StaticArrays"] -git-tree-sha1 = "e95b36755023def6ebc3d269e6483efa8b2f7f65" -uuid = "19dc6840-f33b-545b-b366-655c7e3ffd49" -version = "1.5.1" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HostCPUFeatures]] -deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "eb8fed28f4994600e29beef49744639d985a04b2" -uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.16" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.Hyperscript]] -deps = ["Test"] -git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" -uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" -version = "0.0.4" - -[[deps.HypertextLiteral]] -deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" -uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" - -[[deps.IOCapture]] -deps = ["Logging", "Random"] -git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" -uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" -version = "0.2.3" - -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IntervalSets]] -deps = ["Dates", "Random"] -git-tree-sha1 = "8e59ea773deee525c99a8018409f64f19fb719e6" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.7" -weakdeps = ["Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsStatisticsExt = "Statistics" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.5" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "95220473901735a0f4df9d1ca5b171b568b2daa3" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.13.2" - -[[deps.JWTs]] -deps = ["Base64", "Downloads", "JSON", "MbedTLS", "Random"] -git-tree-sha1 = "a1f3ded6307ef85cc18dec93d9b993814eb4c1a0" -uuid = "d850fbd6-035d-5a70-a269-1ca2e636ac6c" -version = "0.2.2" - -[[deps.JolinPluto]] -deps = ["AWS", "Base64", "Continuables", "Dates", "Git", "HTTP", "HypertextLiteral", "JSON3", "JWTs"] -git-tree-sha1 = "370855bbef5079a65789e10883ea73020125d2c0" -uuid = "5b0b4ef8-f4e6-4363-b674-3f031f7b9530" -version = "0.1.43" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" - -[[deps.JuliaInterpreter]] -deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "81dc6aefcbe7421bd62cb6ca0e700779330acff8" -uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.25" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" - -[[deps.Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] -git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.1" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "88b8f66b604da079a627b6fb2860d3704a6729a1" -uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.14" - -[[deps.LazyArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "MatrixFactorizations", "SparseArrays", "StaticArrays"] -git-tree-sha1 = "7402f6be1a28a05516c6881596879e6d18d28039" -uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "0.22.18" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.26" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" - -[[deps.LoopVectorization]] -deps = ["ArrayInterface", "ArrayInterfaceCore", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "c88a4afe1703d731b1c4fdf4e3c7e77e3b176ea2" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.165" - - [deps.LoopVectorization.extensions] - ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] - SpecialFunctionsExt = "SpecialFunctions" - - [deps.LoopVectorization.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.LoweredCodeUtils]] -deps = ["JuliaInterpreter"] -git-tree-sha1 = "60168780555f3e663c536500aa790b6368adc02a" -uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "2.3.0" - -[[deps.MIMEs]] -git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" -uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" -version = "0.1.4" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" - -[[deps.ManualMemory]] -git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" -uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.8" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MatrixFactorizations]] -deps = ["ArrayLayouts", "LinearAlgebra", "Printf", "Random"] -git-tree-sha1 = "0ff59b4b9024ab9a736db1ad902d2b1b48441c19" -uuid = "a3b82374-2e81-5b9e-98ce-41277c0e4c87" -version = "0.9.6" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "963b004d15216f8129f6c0f7d187efa136570be0" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.7.7" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.17" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "716e24b21538abc91f6205fd1d8363f39b442851" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.2" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.42.2+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.1.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.39.0" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PlutoHooks]] -deps = ["InteractiveUtils", "Markdown", "UUIDs"] -git-tree-sha1 = "072cdf20c9b0507fdd977d7d246d90030609674b" -uuid = "0ff47ea0-7a50-410d-8455-4348d5de0774" -version = "0.0.5" - -[[deps.PlutoLinks]] -deps = ["FileWatching", "InteractiveUtils", "Markdown", "PlutoHooks", "Revise", "UUIDs"] -git-tree-sha1 = "8f5fa7056e6dcfb23ac5211de38e6c03f6367794" -uuid = "0ff47ea0-7a50-410d-8455-4348d5de0420" -version = "0.1.6" - -[[deps.PlutoUI]] -deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] -git-tree-sha1 = "e47cd150dbe0443c3a3651bc5b9cbd5576ab75b7" -uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.52" - -[[deps.PolyesterWeave]] -deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "240d7170f5ffdb285f9427b92333c3463bf65bf6" -uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.2.1" - -[[deps.PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.0" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "ae36206463b2395804f2787ffe172f44452b538d" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.8.0" - -[[deps.ProxyInterfaces]] -git-tree-sha1 = "848a4470b54820cba8c4642840e9cea8345ff520" -uuid = "9b3bf0c4-f070-48bc-ae01-f2584e9c23bc" -version = "1.1.1" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] -git-tree-sha1 = "364898e8f13f7eaaceec55fd3d08680498c0aa6e" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.4.2+3" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.8.2" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.ReactiveMP]] -deps = ["DataStructures", "Distributions", "DomainIntegrals", "DomainSets", "FastGaussQuadrature", "ForwardDiff", "HCubature", "LazyArrays", "LinearAlgebra", "LoopVectorization", "MacroTools", "Optim", "PositiveFactorizations", "Random", "Rocket", "SpecialFunctions", "StaticArrays", "StatsBase", "StatsFuns", "TinyHugeNumbers", "TupleTools", "Unrolled"] -git-tree-sha1 = "8012910e3ef448f4f33ab169f11968449b04476a" -uuid = "a194aa59-28ba-4574-a09c-4a745416d6e3" -version = "3.9.2" - - [deps.ReactiveMP.extensions] - ReactiveMPOptimisersExt = "Optimisers" - ReactiveMPRequiresExt = "Requires" - ReactiveMPZygoteExt = "Zygote" - - [deps.ReactiveMP.weakdeps] - Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.0" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Revise]] -deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "1e597b93700fa4045d7189afa7c004e0584ea548" -uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.5.3" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - -[[deps.Rocket]] -deps = ["DataStructures", "Sockets", "Unrolled"] -git-tree-sha1 = "0009c2b1244837dde73d5152e5d2446976ad2646" -uuid = "df971d30-c9d6-4b37-b8ff-e965b2cb3a40" -version = "1.7.1" - -[[deps.RxInfer]] -deps = ["DataStructures", "Distributions", "DomainSets", "GraphPPL", "LinearAlgebra", "MacroTools", "Optim", "ProgressMeter", "Random", "ReactiveMP", "Reexport", "Rocket", "TupleTools"] -git-tree-sha1 = "bd738d0d262bc2b3be12156d7f71e7e7c5818196" -uuid = "86711068-29c9-4ff7-b620-ae75d7495b3d" -version = "2.11.3" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMDTypes]] -git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" -uuid = "94e857df-77ce-4151-89e5-788b33177be4" -version = "0.1.0" - -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "4b8586aece42bee682399c4c4aee95446aa5cd19" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.39" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleMatch]] -git-tree-sha1 = "78750b67a6cb3b6140be99f2fb56ae26ad28104b" -uuid = "a3ae8450-d22f-11e9-3fe0-77240e25996f" -version = "1.1.0" - -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SodiumSeal]] -deps = ["Base64", "Libdl", "libsodium_jll"] -git-tree-sha1 = "80cef67d2953e33935b41c6ab0a178b9987b1c99" -uuid = "2133526b-2bfb-4018-ac12-889fb3908a75" -version = "0.1.1" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.1" - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - - [deps.SpecialFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - -[[deps.Static]] -deps = ["IfElse"] -git-tree-sha1 = "f295e0a1da4ca425659c57441bcb59abb035a4bc" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.8" - -[[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Requires", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "03fec6800a986d191f64f5c0996b59ed526eda25" -uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.4.1" -weakdeps = ["OffsetArrays", "StaticArrays"] - - [deps.StaticArrayInterface.extensions] - StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" - StaticArrayInterfaceStaticArraysExt = "StaticArrays" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "9cabadf6e7cd2349b6cf49f1915ad2028d65e881" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.2" -weakdeps = ["Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.2" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StructEquality]] -deps = ["Compat"] -git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" -uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" -version = "2.1.0" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.ThreadingUtilities]] -deps = ["ManualMemory"] -git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.2" - -[[deps.TinyHugeNumbers]] -git-tree-sha1 = "d1bd5b57d45431fcbf2db38d3e17453a603e76ad" -uuid = "783c9a47-75a3-44ac-a16b-f1ab7b3acf04" -version = "1.0.0" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" - -[[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" - -[[deps.TupleTools]] -git-tree-sha1 = "3c712976c47707ff893cf6ba4354aa14db1d8938" -uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.3.0" - -[[deps.URIs]] -git-tree-sha1 = "b7a5e99f24892b6824a954199a45e9ffcc1c70f0" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.0" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.17.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.Unrolled]] -deps = ["MacroTools"] -git-tree-sha1 = "6cc9d682755680e0f0be87c56392b7651efc2c7b" -uuid = "9602ed7d-8fef-5bc8-8597-8f21381861e8" -version = "0.1.5" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "b182207d4af54ac64cbc71797765068fdeff475d" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.64" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+0" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.25.0+0" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.XMLDict]] -deps = ["EzXML", "IterTools", "OrderedCollections"] -git-tree-sha1 = "d9a3faf078210e477b291c79117676fca54da9dd" -uuid = "228000da-037f-5747-90a9-8195ccbf91a5" -version = "0.4.1" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cf2c7de82431ca6f39250d2fc4aacd0daa1675c0" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.4+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.29.0+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+0" -""" - -# ╔═╡ Cell order: -# ╟─eb553bfd-f15c-4e0e-a967-b3e99837130c -# ╟─3b24b13d-d2c2-4690-9de6-6558d6bfc08c -# ╟─831b68b4-111b-11ee-1f8e-a7ede5e71437 -# ╟─61e935f6-15d8-455f-aa9d-50c28b6b233f -# ╟─7575d294-7fde-4488-8a34-cb59b9d78886 -# ╟─454397d7-9864-436a-8290-64991e23d68f -# ╠═7947dbfd-5a0a-4ba1-98ff-bc80da747d9f -# ╠═d59c98f3-2884-4827-9e82-86dd9bcdba75 -# ╠═a35fc419-a4c5-43b7-902c-ff2611b8cebd -# ╟─f4659ca6-f686-452d-8e3c-7b9a1f765e00 -# ╠═71f5bdc7-cd6a-4761-adea-b07582a53f52 -# ╠═ec8cef56-ff09-4436-8608-16024a3a5b4b -# ╟─236cc9e6-2b01-4d86-83f4-0d2b17003ea8 -# ╠═f537883b-fd0e-4529-919c-744802eec7fe -# ╠═71722dc8-6e82-4575-a772-41e8f212e475 -# ╟─ff47b595-3de5-4ea7-af19-c2ca2560bc71 -# ╠═a64f3d38-5154-418d-9eec-37c4de4d25e5 -# ╟─ef2f3e46-5421-4b8e-a492-8c7c2e0f46c9 -# ╠═946dd27a-0456-495f-b0d8-918f59d89989 -# ╟─827df769-e105-4964-b15f-a72453ae70db -# ╠═637c398d-9d47-4936-8902-91ad54350c65 -# ╟─0688a4e8-9b9a-4613-9802-009e36fc6c15 -# ╠═505be305-f484-429b-a6a7-b25e995caa0c -# ╟─41b0c0f8-dfb9-40a3-9ba8-6d15986120b7 -# ╠═cf188b1f-ef72-4108-a3ac-55114b9e9674 -# ╠═5158e35b-a24f-44a1-9d6b-8f5137ac0088 -# ╟─989afc03-eae2-4738-8b51-0f0c9c2ab631 -# ╠═7f6ca5bf-4927-4f1d-80f4-2e780e2a7d3a -# ╟─d1f656b3-e683-4e32-b3bb-01b713f9be8a -# ╟─1a5d0168-8c58-4521-a11d-af838d74fe42 -# ╠═98c5088b-953e-4196-bc38-00f70c3ee4ef -# ╟─7a0930d5-9d8c-41cb-bd42-6744a1834a2f -# ╠═e9b0b206-6102-4729-b6d4-90d38302996e -# ╟─238200a6-7ce7-4eb1-ac73-fe9f0d9a360c -# ╠═e0786c60-fe71-4a9f-9c5a-5f08c5c32828 -# ╠═420b4e1d-4a30-49a7-90e1-9d7f90468d0e -# ╠═f6b99f30-0402-4b58-b612-750395469a95 -# ╠═13e37702-ee63-4dca-8412-bb589e09c439 -# ╟─9c9ac205-3b97-4507-93e2-484ad33b6ca0 -# ╟─2d953622-7a2a-4885-a74e-5510f0668a9e -# ╠═c60d7481-322e-4a47-8e6e-15116d104ae4 -# ╠═b130240a-2897-44f0-ae4f-4ac9bed340fc -# ╠═30da98dc-7fc9-4d93-9b29-c3d583f9851d -# ╠═3df99def-8409-46c5-8726-fb78b41f1a76 -# ╠═8090b5db-b6e8-4124-ac03-92405162baa7 -# ╠═796379fd-ad89-4aa4-8321-8b6107284b54 -# ╟─93255b47-200c-424c-b333-f5a1e1630b17 -# ╠═378f4c94-db87-4fde-8eba-663b01006104 -# ╟─acd379a2-d95e-48de-a36d-5dc7c6894040 -# ╠═9dd967b2-99c0-4a02-851f-c6fa8cda78c7 -# ╠═49e5f8fc-8ce7-4e08-bd48-834cc3d425c3 -# ╟─ac70b579-181a-4f61-9dec-18965ca6ea49 -# ╟─9b4ff68d-24e3-4015-8031-ddaf5055639e -# ╠═9181d244-ffb6-4aca-935d-2014fe032cc6 -# ╟─0f33723c-cab0-4ea5-80ef-bc50d641c196 -# ╠═3036c804-dc63-4c1e-a9f4-e7153565a28c -# ╠═eeafe646-eb8c-44d2-b66d-3933a6ccff3d -# ╠═4036d449-2d18-4ca1-8e1d-c2214b0e416b -# ╟─a9ed7079-02d0-4420-8d4e-223f1d03b7e8 -# ╠═e488f8d0-3aaf-44f1-9088-dbd237c58317 -# ╠═6b063743-e9d9-403c-b4ac-b8d7aa75c617 -# ╠═a647e18a-e5ef-48a9-bcd9-05fa7bbdb730 -# ╟─2b185eb8-af14-4e4d-8a53-794a387ad39f -# ╠═06107a41-2d86-4d4b-9c22-f8f829f5b2db -# ╠═fa03cac3-087a-4cbe-9eba-61e3fe9bd1ae -# ╟─7315b614-a6e4-4533-84e5-14957e452334 -# ╠═42891661-6848-421f-8a47-d9de74ee40b9 -# ╟─5a2d9326-b025-4e53-9a9b-d9d15484957e -# ╠═37c3455e-fa03-4345-9173-7554f5643b8d -# ╠═4c3a0f66-608c-4c6e-bc2f-bdeb0a80ea90 -# ╟─ed3826e4-0ca1-443b-88e1-227799da5216 -# ╠═f7043f0a-2127-44db-a76e-430d143245d9 -# ╟─0d0fe636-a973-48a0-9f21-9b1ea32b2b3d -# ╠═44d27c89-60d5-4ecf-82d4-36f5d54756ea -# ╠═f745f9dc-b996-41f5-9e8e-40828fd27f60 -# ╟─00000000-0000-0000-0000-000000000001 -# ╟─00000000-0000-0000-0000-000000000002