From 1adf4b1e2304680ab64e878b1b7781f7320fedb8 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 17 Dec 2024 19:14:50 +0000 Subject: [PATCH] build based on 348f26b --- stable | 2 +- v0.6 | 1 + v0.6.0/404.html | 25 ++ v0.6.0/UserGuide/cache.html | 32 ++ v0.6.0/UserGuide/chunk.html | 125 ++++++ v0.6.0/UserGuide/combine.html | 55 +++ v0.6.0/UserGuide/compute.html | 419 ++++++++++++++++++ v0.6.0/UserGuide/convert.html | 73 +++ v0.6.0/UserGuide/create.html | 75 ++++ v0.6.0/UserGuide/faq.html | 391 ++++++++++++++++ v0.6.0/UserGuide/group.html | 235 ++++++++++ v0.6.0/UserGuide/read.html | 217 +++++++++ v0.6.0/UserGuide/select.html | 303 +++++++++++++ v0.6.0/UserGuide/types.html | 29 ++ v0.6.0/UserGuide/write.html | 98 ++++ v0.6.0/api.html | 33 ++ v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.js | 5 + .../UserGuide_cache.md.CNZf6SxC.lean.js | 5 + v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.js | 98 ++++ .../UserGuide_chunk.md.Dz_Pl7wS.lean.js | 98 ++++ .../assets/UserGuide_combine.md.CYRygboX.js | 28 ++ .../UserGuide_combine.md.CYRygboX.lean.js | 28 ++ .../assets/UserGuide_compute.md.Cw7KNL6a.js | 392 ++++++++++++++++ .../UserGuide_compute.md.Cw7KNL6a.lean.js | 392 ++++++++++++++++ .../assets/UserGuide_convert.md.BrjNUsxl.js | 46 ++ .../UserGuide_convert.md.BrjNUsxl.lean.js | 46 ++ v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.js | 48 ++ .../UserGuide_create.md.BHpYpbEJ.lean.js | 48 ++ v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.js | 364 +++++++++++++++ .../assets/UserGuide_faq.md.Dszaf3B5.lean.js | 364 +++++++++++++++ v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.js | 208 +++++++++ .../UserGuide_group.md.CQTmxQ_F.lean.js | 208 +++++++++ v0.6.0/assets/UserGuide_read.md.DSkKxuq0.js | 229 ++++++++++ .../assets/UserGuide_read.md.DSkKxuq0.lean.js | 229 ++++++++++ v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.js | 276 ++++++++++++ .../UserGuide_select.md.Bf5ROjBp.lean.js | 276 ++++++++++++ v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.js | 2 + .../UserGuide_types.md.Dhld7Jdg.lean.js | 2 + v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.js | 71 +++ .../UserGuide_write.md.0ZWfSdMj.lean.js | 71 +++ v0.6.0/assets/api.md.BwYaKzGE.js | 5 + v0.6.0/assets/api.md.BwYaKzGE.lean.js | 5 + v0.6.0/assets/app.mQqI8xFX.js | 1 + .../chunks/@localSearchIndexroot.c345pPCL.js | 1 + .../chunks/VPLocalSearchBox.C9W46vo6.js | 8 + v0.6.0/assets/chunks/framework.BcwRT4E8.js | 18 + v0.6.0/assets/chunks/theme.DdBYlEdc.js | 2 + v0.6.0/assets/cyhvrkj.B7KFIfDV.jpeg | Bin 0 -> 110829 bytes .../development_contribute.md.ViU6tjjp.js | 3 + ...development_contribute.md.ViU6tjjp.lean.js | 3 + .../development_contributors.md.Cd7cXlnH.js | 1 + ...velopment_contributors.md.Cd7cXlnH.lean.js | 1 + v0.6.0/assets/dzarsbx.C5U_qDue.jpeg | Bin 0 -> 51860 bytes v0.6.0/assets/frwqpez.DX1O6I5P.jpeg | Bin 0 -> 57194 bytes v0.6.0/assets/get_started.md.Dg6qSFuW.js | 53 +++ v0.6.0/assets/get_started.md.Dg6qSFuW.lean.js | 53 +++ v0.6.0/assets/idgplot.Blc9BtwN.jpeg | Bin 0 -> 99058 bytes v0.6.0/assets/index.md.sSTW_XSN.js | 9 + v0.6.0/assets/index.md.sSTW_XSN.lean.js | 9 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes .../inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes .../inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes .../assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes .../inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes .../assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes .../inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes .../inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes .../inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes .../assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes .../inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes .../assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes .../inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes v0.6.0/assets/jkytbph.C-WFBMfk.png | Bin 0 -> 81291 bytes v0.6.0/assets/lnenoem.DldUI1n7.jpeg | Bin 0 -> 39462 bytes v0.6.0/assets/mbalbzx.96k_BqPR.jpeg | Bin 0 -> 101963 bytes v0.6.0/assets/mmzaksu.BJNzQY3Z.png | Bin 0 -> 677879 bytes v0.6.0/assets/obatlyf.D9rvatPm.png | Bin 0 -> 112073 bytes v0.6.0/assets/oowdcxc.B7b9FwLj.jpeg | Bin 0 -> 14327 bytes v0.6.0/assets/pdifvqr.Dwd2F2F-.jpeg | Bin 0 -> 56623 bytes v0.6.0/assets/ssvwqbb.Cj8iZQLt.jpeg | Bin 0 -> 74261 bytes v0.6.0/assets/style.BBiGcebh.css | 1 + v0.6.0/assets/taklqov.CQ9uchq9.jpeg | Bin 0 -> 103094 bytes ...torials_mean_seasonal_cycle.md.DULEkUTS.js | 73 +++ ...ls_mean_seasonal_cycle.md.DULEkUTS.lean.js | 73 +++ .../tutorials_other_tutorials.md.gX_yHCMN.js | 1 + ...orials_other_tutorials.md.gX_yHCMN.lean.js | 1 + .../tutorials_plottingmaps.md.P5QZbTPm.js | 110 +++++ ...tutorials_plottingmaps.md.P5QZbTPm.lean.js | 110 +++++ v0.6.0/assets/weuosxb.Bcyn0CpL.jpeg | Bin 0 -> 34801 bytes v0.6.0/assets/xzwnmje.-RBZ8LkA.jpeg | Bin 0 -> 55280 bytes v0.6.0/assets/zvezrog.B074eX2X.jpeg | Bin 0 -> 39465 bytes v0.6.0/development/contribute.html | 30 ++ v0.6.0/development/contributors.html | 28 ++ v0.6.0/favicon.ico | Bin 0 -> 384638 bytes v0.6.0/get_started.html | 80 ++++ v0.6.0/hashmap.json | 1 + v0.6.0/index.html | 36 ++ v0.6.0/logo.png | Bin 0 -> 384638 bytes v0.6.0/logo.svg | 324 ++++++++++++++ v0.6.0/siteinfo.js | 1 + v0.6.0/tutorials/mean_seasonal_cycle.html | 100 +++++ v0.6.0/tutorials/other_tutorials.html | 28 ++ v0.6.0/tutorials/plottingmaps.html | 137 ++++++ v0.6.0/vp-icons.css | 1 + versions.js | 3 +- 106 files changed, 6955 insertions(+), 2 deletions(-) create mode 120000 v0.6 create mode 100644 v0.6.0/404.html create mode 100644 v0.6.0/UserGuide/cache.html create mode 100644 v0.6.0/UserGuide/chunk.html create mode 100644 v0.6.0/UserGuide/combine.html create mode 100644 v0.6.0/UserGuide/compute.html create mode 100644 v0.6.0/UserGuide/convert.html create mode 100644 v0.6.0/UserGuide/create.html create mode 100644 v0.6.0/UserGuide/faq.html create mode 100644 v0.6.0/UserGuide/group.html create mode 100644 v0.6.0/UserGuide/read.html create mode 100644 v0.6.0/UserGuide/select.html create mode 100644 v0.6.0/UserGuide/types.html create mode 100644 v0.6.0/UserGuide/write.html create mode 100644 v0.6.0/api.html create mode 100644 v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.js create mode 100644 v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.lean.js create mode 100644 v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.js create mode 100644 v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.lean.js create mode 100644 v0.6.0/assets/UserGuide_combine.md.CYRygboX.js create mode 100644 v0.6.0/assets/UserGuide_combine.md.CYRygboX.lean.js create mode 100644 v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.js create mode 100644 v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.lean.js create mode 100644 v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.js create mode 100644 v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.lean.js create mode 100644 v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.js create mode 100644 v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.lean.js create mode 100644 v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.js create mode 100644 v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.lean.js create mode 100644 v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.js create mode 100644 v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.lean.js create mode 100644 v0.6.0/assets/UserGuide_read.md.DSkKxuq0.js create mode 100644 v0.6.0/assets/UserGuide_read.md.DSkKxuq0.lean.js create mode 100644 v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.js create mode 100644 v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.lean.js create mode 100644 v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.js create mode 100644 v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.lean.js create mode 100644 v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.js create mode 100644 v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.lean.js create mode 100644 v0.6.0/assets/api.md.BwYaKzGE.js create mode 100644 v0.6.0/assets/api.md.BwYaKzGE.lean.js create mode 100644 v0.6.0/assets/app.mQqI8xFX.js create mode 100644 v0.6.0/assets/chunks/@localSearchIndexroot.c345pPCL.js create mode 100644 v0.6.0/assets/chunks/VPLocalSearchBox.C9W46vo6.js create mode 100644 v0.6.0/assets/chunks/framework.BcwRT4E8.js create mode 100644 v0.6.0/assets/chunks/theme.DdBYlEdc.js create mode 100644 v0.6.0/assets/cyhvrkj.B7KFIfDV.jpeg create mode 100644 v0.6.0/assets/development_contribute.md.ViU6tjjp.js create mode 100644 v0.6.0/assets/development_contribute.md.ViU6tjjp.lean.js create mode 100644 v0.6.0/assets/development_contributors.md.Cd7cXlnH.js create mode 100644 v0.6.0/assets/development_contributors.md.Cd7cXlnH.lean.js create mode 100644 v0.6.0/assets/dzarsbx.C5U_qDue.jpeg create mode 100644 v0.6.0/assets/frwqpez.DX1O6I5P.jpeg create mode 100644 v0.6.0/assets/get_started.md.Dg6qSFuW.js create mode 100644 v0.6.0/assets/get_started.md.Dg6qSFuW.lean.js create mode 100644 v0.6.0/assets/idgplot.Blc9BtwN.jpeg create mode 100644 v0.6.0/assets/index.md.sSTW_XSN.js create mode 100644 v0.6.0/assets/index.md.sSTW_XSN.lean.js create mode 100644 v0.6.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 v0.6.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 v0.6.0/assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 v0.6.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 v0.6.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 v0.6.0/assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 v0.6.0/assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 v0.6.0/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 v0.6.0/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 v0.6.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 v0.6.0/assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 v0.6.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 v0.6.0/assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 v0.6.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 v0.6.0/assets/jkytbph.C-WFBMfk.png create mode 100644 v0.6.0/assets/lnenoem.DldUI1n7.jpeg create mode 100644 v0.6.0/assets/mbalbzx.96k_BqPR.jpeg create mode 100644 v0.6.0/assets/mmzaksu.BJNzQY3Z.png create mode 100644 v0.6.0/assets/obatlyf.D9rvatPm.png create mode 100644 v0.6.0/assets/oowdcxc.B7b9FwLj.jpeg create mode 100644 v0.6.0/assets/pdifvqr.Dwd2F2F-.jpeg create mode 100644 v0.6.0/assets/ssvwqbb.Cj8iZQLt.jpeg create mode 100644 v0.6.0/assets/style.BBiGcebh.css create mode 100644 v0.6.0/assets/taklqov.CQ9uchq9.jpeg create mode 100644 v0.6.0/assets/tutorials_mean_seasonal_cycle.md.DULEkUTS.js create mode 100644 v0.6.0/assets/tutorials_mean_seasonal_cycle.md.DULEkUTS.lean.js create mode 100644 v0.6.0/assets/tutorials_other_tutorials.md.gX_yHCMN.js create mode 100644 v0.6.0/assets/tutorials_other_tutorials.md.gX_yHCMN.lean.js create mode 100644 v0.6.0/assets/tutorials_plottingmaps.md.P5QZbTPm.js create mode 100644 v0.6.0/assets/tutorials_plottingmaps.md.P5QZbTPm.lean.js create mode 100644 v0.6.0/assets/weuosxb.Bcyn0CpL.jpeg create mode 100644 v0.6.0/assets/xzwnmje.-RBZ8LkA.jpeg create mode 100644 v0.6.0/assets/zvezrog.B074eX2X.jpeg create mode 100644 v0.6.0/development/contribute.html create mode 100644 v0.6.0/development/contributors.html create mode 100644 v0.6.0/favicon.ico create mode 100644 v0.6.0/get_started.html create mode 100644 v0.6.0/hashmap.json create mode 100644 v0.6.0/index.html create mode 100644 v0.6.0/logo.png create mode 100644 v0.6.0/logo.svg create mode 100644 v0.6.0/siteinfo.js create mode 100644 v0.6.0/tutorials/mean_seasonal_cycle.html create mode 100644 v0.6.0/tutorials/other_tutorials.html create mode 100644 v0.6.0/tutorials/plottingmaps.html create mode 100644 v0.6.0/vp-icons.css diff --git a/stable b/stable index 4abbe463..e07d136c 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v0.5.14 \ No newline at end of file +v0.6.0 \ No newline at end of file diff --git a/v0.6 b/v0.6 new file mode 120000 index 00000000..e07d136c --- /dev/null +++ b/v0.6 @@ -0,0 +1 @@ +v0.6.0 \ No newline at end of file diff --git a/v0.6.0/404.html b/v0.6.0/404.html new file mode 100644 index 00000000..df8bad91 --- /dev/null +++ b/v0.6.0/404.html @@ -0,0 +1,25 @@ + + + + + + 404 | YAXArrays.jl + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/cache.html b/v0.6.0/UserGuide/cache.html new file mode 100644 index 00000000..cdc425b2 --- /dev/null +++ b/v0.6.0/UserGuide/cache.html @@ -0,0 +1,32 @@ + + + + + + Caching YAXArrays | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
+ds = open_dataset("path/to/source")
+cachesize = 500 #MB
+cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
+cache(yax,maxsize = 1000)
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/chunk.html b/v0.6.0/UserGuide/chunk.html new file mode 100644 index 00000000..f3e5e9bb --- /dev/null +++ b/v0.6.0/UserGuide/chunk.html @@ -0,0 +1,125 @@ + + + + + + Chunk YAXArrays | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
+a = YAXArray(rand(10,20))
+a_chunked = setchunks(a, (5,10))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

And the saved file is also splitted into Chunks.

julia
f = tempname()
+savecube(a_chunked, f, backend=:zarr)
+Cube(f).chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Alternatively chunk sizes can be given by dimension name, so the following results in the same chunks:

julia
a_chunked = setchunks(a, (Dim_2=10, Dim_1=5))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Chunking Datasets

Setchunks can also be applied to a Dataset.

Set Chunks by Axis

Set chunk size for each axis occuring in a Dataset. This will be applied to all variables in the dataset:

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds, Dict("Dim_1"=>5, "Dim_2"=>10, "Dim_3"=>2))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

Saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking by Variable

The following will set the chunk size for each Variable separately and results in exactly the same chunking as the example above

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds,(x = (5,10), y = Dict("Dim_1"=>5), z = (Dim_1 = 5, Dim_2 = 10, Dim_3 = 2)))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking for all variables

The following code snippet only works when all member variables of the dataset have the same shape and sets the output chunks for all arrays.

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10,20)), z = YAXArray(rand(10,20)))
+dschunked = setchunks(ds,(5,10))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:1)   (1:5, 11:20, 1:1)
+ (6:10, 1:10, 1:1)  (6:10, 11:20, 1:1)
+
+[:, :, 2] =
+ (1:5, 1:10, 2:2)   (1:5, 11:20, 2:2)
+ (6:10, 1:10, 2:2)  (6:10, 11:20, 2:2)
+
+[:, :, 3] =
+ (1:5, 1:10, 3:3)   (1:5, 11:20, 3:3)
+ (6:10, 1:10, 3:3)  (6:10, 11:20, 3:3)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+
+Variables: 
+x, y, z

Suggestions on how to improve or add to these examples is welcome.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/combine.html b/v0.6.0/UserGuide/combine.html new file mode 100644 index 00000000..d53666eb --- /dev/null +++ b/v0.6.0/UserGuide/combine.html @@ -0,0 +1,55 @@ + + + + + + Combine YAXArrays | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+first_half = YAXArray((YAX.time(1:6),), rand(6))
+second_half = YAXArray((YAX.time(7:12),), rand(6))
+whole_year = cat(first_half, second_half, dims = 1)
┌ 12-element YAXArray{Float64, 1} ┐
+├─────────────────────────────────┴─────────────────────────────── dims ┐
+  ↓ time Sampled{Int64} [1, 2, …, 11, 12] ForwardOrdered Regular Points
+├───────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────────────────── loaded in memory ┤
+  data size: 96.0 bytes
+└───────────────────────────────────────────────────────────────────────┘

concatenatecubes to a new dimension

Here we use concatenatecubes to combine two arrays of different variables that have the same dimensions. The resulting array combined has an additional dimension variable indicating from which array the element values originates. Note that using a Dataset instead is a more flexible approach in handling different variables.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+temperature = YAXArray((YAX.time(1:6),), rand(6))
+precipitation = YAXArray((YAX.time(1:6),), rand(6))
+cubes = [temperature,precipitation]
+var_axis = Variables(["temp", "prep"])
+combined = concatenatecubes(cubes, var_axis)
┌ 6×2 YAXArray{Float64, 2} ┐
+├──────────────────────────┴──────────────────────────────── dims ┐
+  ↓ time      Sampled{Int64} 1:6 ForwardOrdered Regular Points,
+  → Variables Categorical{String} ["temp", "prep"] ReverseOrdered
+├─────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└─────────────────────────────────────────────────────────────────┘
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/compute.html b/v0.6.0/UserGuide/compute.html new file mode 100644 index 00000000..de8e1ee5 --- /dev/null +++ b/v0.6.0/UserGuide/compute.html @@ -0,0 +1,419 @@ + + + + + + Compute YAXArrays | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

  • Use arithmetics to add or multiply numbers to each element of an array

  • Use map to apply a more complex functions to every element of an array

  • Use mapslices to reduce a dimension, e.g. to get the mean over all time steps

  • Use mapCube to apply complex functions on an array that may change any dimensions

Let's start by creating an example dataset:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8638599930441428
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2[1,2,3] == a[1,2,3] + 5
true

map

Apply a function on every element of an array individually:

julia
offset = 5
+map(a) do x
+    (x + offset) / 2 * 3
+end
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This keeps all dimensions unchanged. Note, that here we can not access neighboring elements. In this case, we can use mapslices or mapCube instead. Each element of the array is processed individually.

The code runs very fast, because map applies the function lazily. Actual computation will be performed only on demand, e.g. when elements were explicitly requested or further computations were performed.

mapslices

Reduce the time dimension by calculating the average value of all points in time:

julia
import Statistics: mean
+mapslices(mean, a, dims="Time")
┌ 10×15 YAXArray{Union{Missing, Float64}, 2} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘

There is no time dimension left, because there is only one value left after averaging all time steps. We can also calculate spatial means resulting in one value per time step:

julia
mapslices(mean, a, dims=("lat", "lon"))
┌ 30-element YAXArray{Union{Missing, Float64}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

mapCube

mapCube is the most flexible way to apply a function over subsets of an array. Dimensions may be added or removed.

Operations over several YAXArrays

Here, we will define a simple function, that will take as input several YAXArrays. But first, let's load the necessary packages.

julia
using YAXArrays, Zarr
+using YAXArrays: YAXArrays as YAX
+using Dates

Define function in space and time

julia
f(lo, la, t) = (lo + la + Dates.dayofyear(t))
f (generic function with 1 method)

now, mapCube requires this function to be wrapped as follows

julia
function g(xout, lo, la, t)
+    xout .= f.(lo, la, t)
+end
g (generic function with 1 method)

INFO

Note the . after f, this is because we will slice across time, namely, the function is broadcasted along this dimension.

Here, we do create YAXArrays only with the desired dimensions as

julia
julia> lon_yax = YAXArray(lon(range(1, 15)))
15-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lon Sampled{Int64} 1:15 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 120.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> lat_yax = YAXArray(lat(range(1, 10)))
10-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 80.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

And a time Cube's Axis

julia
tspan = Date("2022-01-01"):Day(1):Date("2022-01-30")
+time_yax = YAXArray(YAX.time(tspan))
┌ 30-element YAXArray{Date, 1} ┐
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the following can be extended to arbitrary YAXArrays with additional data and dimensions.

Let's generate a new cube using mapCube and saving the output directly into disk.

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims(), InDims(), InDims("time")),
+           outdims = OutDims("time", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
30×15×10 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

"time axis goes first"

Note that currently the time axis in the output cube goes first.

Check that it is working

julia
julia> gen_cube.data[1, :, :]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

but, we can generate a another cube with a different output order as follows

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims("lon"), InDims(), InDims()),
+           outdims = OutDims("lon", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
15×10×30 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

INFO

Note that now the broadcasted dimension is lon.

we can see this by slicing on the last dimension now

julia
gen_cube.data[:, :, 1]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

which outputs the same as the gen_cube.data[1, :, :] called above.

OutDims and YAXArray Properties

Here, we will consider different scenarios, namely how we deal with different input cubes and how to specify the output ones. We will illustrate this with the following test example and the subsequent function definitions.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Zarr
+using Random
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(range(1, 4, length=4)),
+    lat(range(1, 3, length=3)),
+    Variables(["a", "b"])
+)
+
+Random.seed!(123)
+data = rand(1:5, 5, 4, 3, 2)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3×2 YAXArray{Int64, 4} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

One InDims to many OutDims

In the following function, note how the outputs are defined first and the inputs later.

julia
function one_to_many(xout_one, xout_two, xout_flat, xin_one)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2.(xin_one)
+    xout_flat .= sum(xin_one)
+    return nothing
+end
+
+f1(xin) = xin + 1
+f2(xin) = xin + 2
f2 (generic function with 1 method)

now, we define InDims and OutDims:

julia
indims_one   = InDims("Time")
+# outputs dimension
+properties_one = Dict{String, Any}("name" => "plus_one")
+properties_two = Dict{String, Any}("name" => "plus_two")
+
+outdims_one = OutDims("Time"; properties=properties_one)
+outdims_two = OutDims("Time"; properties=properties_two)
+outdims_flat = OutDims(;) # it will get the default `layer` name if open as dataset
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(one_to_many, yax_test,
+    indims = indims_one,
+    outdims = (outdims_one, outdims_two, outdims_flat));

let's see the second output

julia
ds[2]
┌ 5×4×3×2 YAXArray{Union{Missing, Int64}, 4} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "name" => "plus_two"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Many InDims to many OutDims

Let's consider a second test set

julia
properties_2d = Dict("description" => "2d dimensional test cube")
+yax_2d = YAXArray(axlist[2:end], rand(-1:1, 4, 3, 2), properties_2d)
┌ 4×3×2 YAXArray{Int64, 3} ┐
+├──────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  → lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ↗ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├─────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "2d dimensional test cube"
+├─────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 192.0 bytes
+└─────────────────────────────────────────────────────────────────────────┘

The function definitions operating in this case are as follows

julia
function many_to_many(xout_one, xout_two, xout_flat, xin_one, xin_two, xin_drei)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2mix.(xin_one, xin_two)
+    xout_flat .= sum(xin_drei) # this will reduce the time dimension if we set outdims = OutDims()
+    return nothing
+end
+f2mix(xin_xyt, xin_xy) = xin_xyt - xin_xy
f2mix (generic function with 1 method)

Specify path in OutDims

julia
indims_one   = InDims("Time")
+indims_2d   = InDims() # ? it matches only to the other 2 dimensions and uses the same values for each time step
+properties = Dict{String, Any}("name"=> "many_to_many_two")
+outdims_one = OutDims("Time")
+outdims_two = OutDims("Time"; path = "test_mm.zarr", properties)
+outdims_flat = OutDims()
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(many_to_many, (yax_test, yax_2d, yax_test),
+    indims = (indims_one, indims_2d, indims_one),
+    outdims = (outdims_one, outdims_two, outdims_flat));

And we can open the one that was saved directly to disk.

julia
ds_mm = open_dataset("test_mm.zarr")
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{DateTime} [2022-01-01T00:00:00, …, 2022-01-05T00:00:00] ForwardOrdered Irregular Points,
+  → lon  Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points)
+
+Variables: 
+a, b

Different InDims names

Here, the goal is to operate at the pixel level (longitude, latitude), and then apply the corresponding function to the extracted values. Consider the following toy cubes:

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (lon(1:4), lat(1:3), Dim{:depth}(1:7),)
+yax_2d = YAXArray(axlist, rand(-3.0:0.0, 4, 3, 7))
┌ 4×3×7 YAXArray{Float64, 3} ┐
+├────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon   Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  → lat   Sampled{Int64} 1:3 ForwardOrdered Regular Points,
+  ↗ depth Sampled{Int64} 1:7 ForwardOrdered Regular Points
+├───────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────── loaded in memory ┤
+  data size: 672.0 bytes
+└───────────────────────────────────────────────────────────┘

and

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(1:4), lat(1:3),)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

and the corresponding functions

julia
function mix_time_depth(xin_xyt, xin_xyz)
+    s = sum(abs.(xin_xyz))
+    return xin_xyt.^2 .+ s
+end
+
+function time_depth(xout, xin_one, xin_two)
+    xout .= mix_time_depth(xin_one, xin_two)
+    # Note also that there is no dot anymore in the function application!
+    return nothing
+end
time_depth (generic function with 1 method)

with the final mapCube operation as follows

julia
ds = mapCube(time_depth, (yax_test, yax_2d),
+    indims = (InDims("Time"), InDims("depth")), # ? anchor dimensions and then map over the others.
+    outdims = OutDims("Time"))
┌ 5×4×3 YAXArray{Union{Missing, Float64}, 3} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘
  • TODO:
    • Example passing additional arguments to function.

    • MovingWindow

    • Multiple variables outputs, OutDims, in the same YAXArray

Creating a vector array

Here we transform a raster array with spatial dimension lat and lon into a vector array having just one spatial dimension i.e. region. First, create the raster array:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+raster_arr = YAXArray(axlist, data)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Then, create a Matrix with the same spatial dimensions indicating to which region each point belongs to:

julia
regions_mat = map(Iterators.product(raster_arr.lon, raster_arr.lat)) do (lon, lat)
+    1 <= lon < 10 && 1 <= lat < 5 && return "A"
+    1 <= lon < 10 && 5 <= lat < 10 && return "B"
+    10 <= lon < 15 && 1 <= lat < 5 && return "C"
+    return "D"
+end
+regions_mat = DimArray(regions_mat, (raster_arr.lon, raster_arr.lat))
┌ 10×15 DimArray{String, 2} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0   1.28571  1.57143  1.85714  …  4.14286  4.42857  4.71429  5.0
+  1.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  2.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  3.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  4.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  5.0   "A"   "A"      "A"      "A"     …   "A"      "A"      "A"      "B"
+  6.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  7.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  8.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  9.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+ 10.0   "C"   "C"      "C"      "C"     …   "C"      "C"      "C"      "D"

which has the same spatial dimensions as the raster array at any given point in time:

julia
DimArray(raster_arr[time = 1])
┌ 10×15 DimArray{Float64, 2} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0       1.28571   1.57143    …  4.42857   4.71429   5.0
+  1.0  0.17593   0.417937  0.0723492     0.178603  0.781773  0.875658
+  2.0  0.701332  0.15394   0.685454      0.372761  0.984803  0.472308
+  3.0  0.120997  0.829062  0.684389      0.463503  0.840389  0.536399
+  ⋮                                   ⋱                      ⋮
+  8.0  0.145747  0.432286  0.465103      0.889583  0.514979  0.671662
+  9.0  0.538981  0.497189  0.167676      0.595405  0.752417  0.93986
+ 10.0  0.824354  0.376135  0.551732   …  0.101524  0.121947  0.508557

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+points_of_regions = map(enumerate(regions)) do (i,region)
+    region => findall(isequal(region), regions_mat)
+end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
+  "A" => [CartesianIndex(1, 1), CartesianIndex(2, 1), CartesianIndex(3, 1), Car…
+  "B" => [CartesianIndex(1, 15), CartesianIndex(2, 15), CartesianIndex(3, 15), …
+  "C" => [CartesianIndex(10, 1), CartesianIndex(10, 2), CartesianIndex(10, 3), …
+  "D" => [CartesianIndex(10, 15)]

Finally, we can transform the entire raster array:

julia
vector_array = mapCube(
+    raster_arr,
+    indims=InDims("lon", "lat"),
+    outdims=OutDims(Dim{:region}(regions))
+) do xout, xin
+    for (region_pos, points) in enumerate(points_of_regions.vals)
+        # aggregate values of points in the current region at the current date
+        xout[region_pos] = sum(view(xin, points))
+    end
+end
┌ 4×30 YAXArray{Union{Missing, Float64}, 2} ┐
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ region Categorical{String} ["A", "B", "C", "D"] ForwardOrdered,
+  → time   Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

This gives us a vector array with only one spatial dimension, i.e. the region. Note that we still have 30 points in time. The transformation was applied for each date separately.

Hereby, xin is a 10x15 array representing a map at a given time and xout is a 4 element vector of missing values initially representing the 4 regions at that date. Then, we set each output element by the sum of all corresponding points

Distributed Computation

All map methods apply a function on all elements of all non-input dimensions separately. This allows to run each map function call in parallel. For example, we can execute each date of a time series in a different CPU thread during spatial aggregation.

The following code does a time mean over all grid points using multiple CPUs of a local machine:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Distributed
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
+
+addprocs(2)
+
+@everywhere begin
+  using YAXArrays
+  using Zarr
+  using Statistics
+end
+
+@everywhere function mymean(output, pixel)
+  @show "doing a mean"
+     output[:] .= mean(pixel)
+end
+
+mapCube(mymean, a, indims=InDims("time"), outdims=OutDims())

In the last example, mapCube was used to map the mymean function. mapslices is a convenient function that can replace mapCube, where you can omit defining an extra function with the output argument as an input (e.g. mymean). It is possible to simply use mapslice

julia
mapslices(mean  skipmissing, a, dims="time")

It is also possible to distribute easily the workload on a cluster, with little modification to the code. To do so, we use the ClusterManagers package.

julia
using Distributed
+using ClusterManagers
+addprocs(SlurmManager(10))
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/convert.html b/v0.6.0/UserGuide/convert.html new file mode 100644 index 00000000..c9c7722d --- /dev/null +++ b/v0.6.0/UserGuide/convert.html @@ -0,0 +1,73 @@ + + + + + + Convert YAXArrays | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
+
+m = rand(5,10)
+a = YAXArray(m)
┌ 5×10 YAXArray{Float64, 2} ┐
+├───────────────────────────┴─────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
+ 0.265797  0.789891  0.611084  0.845983  …  0.918555  0.870826   0.348362
+ 0.665723  0.241882  0.426519  0.581312     0.949935  0.0214057  0.152534
+ 0.83556   0.456765  0.197238  0.645758     0.74732   0.652339   0.935631
+ 0.337926  0.151146  0.673373  0.169284     0.75269   0.166212   0.0358348
+ 0.594514  0.364288  0.78467   0.830391     0.128204  0.174934   0.0210077

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+
+lon, lat = X(25:1:30), Y(25:1:30)
+time = Ti(2000:2024)
+ras = Raster(rand(lon, lat, time))
+a = YAXArray(dims(ras), ras.data)
julia
ras2 = Raster(a)

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+using YAXArrayBase
+
+dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
+a = yaxconvert(YAXArray, dim_arr)
┌ 5×6 YAXArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────┘

Convert YAXArray to DimArray:

julia
dim_arr2 = yaxconvert(DimArray, a)
┌ 5×6 DimArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────┘
+ ↓ →  10.0       11.0        12.0        13.0       14.0       15.0
+ 1     0.862644   0.872575    0.0620649   0.193109   0.475725   0.953391
+ 2     0.203714   0.770949    0.731779    0.71314    0.687891   0.435994
+ 3     0.492817   0.718667    0.0702532   0.926096   0.225542   0.100622
+ 4     0.268675   0.0566881   0.916686    0.973332   0.744521   0.052264
+ 5     0.540514   0.215973    0.617023    0.796375   0.13205    0.366625

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/create.html b/v0.6.0/UserGuide/create.html new file mode 100644 index 00000000..9babe0bc --- /dev/null +++ b/v0.6.0/UserGuide/create.html @@ -0,0 +1,75 @@ + + + + + + Create YAXArrays and Datasets | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+a1 = YAXArray(rand(10, 20, 5))
┌ 10×20×5 YAXArray{Float64, 3} ┐
+├──────────────────────────────┴───────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 7.81 KB
+└──────────────────────────────────────────────────────────────────────┘

The dimensions have only generic names, e.g. Dim_1 and only integer values. We can also specify the dimensions with custom names enabling easier access:

julia
using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data2 = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a2 = YAXArray(axlist, data2, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2.properties
Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
julia
a2.axes
(↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+→ lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)

Create a Dataset

julia
data3 = rand(30, 10, 15)
+a3 = YAXArray(axlist, data3, properties)
+
+arrays = Dict(:a2 => a2, :a3 => a3)
+ds = Dataset(; properties, arrays...)
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)
+
+Variables: 
+a2, a3
+
+Properties: Dict(:origin => "user guide")
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/faq.html b/v0.6.0/UserGuide/faq.html new file mode 100644 index 00000000..b08f89cc --- /dev/null +++ b/v0.6.0/UserGuide/faq.html @@ -0,0 +1,391 @@ + + + + + + Frequently Asked Questions (FAQ) | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
10×10×5 YAXArray{Float64, 3}
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 3.91 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> caxes(c) # former way of doing it
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

WARNING

To get the axes of a YAXArray use the dims function instead of the caxes function

julia
julia> dims(c)
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

INFO

Also, use DD.rebuild(c, values) to copy axes from c and build a new cube but with different values.

rebuild

As an example let's consider the following

julia
using YAXArrays
+using DimensionalData
+
+c = YAXArray(ones(Int, 10,10))
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────┘

then creating a new c with the same structure (axes) but different values is done by

julia
julia> new_c = rebuild(c, rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the type is now Float64. Or, we could create a new structure but using the dimensions from yax explicitly

julia
julia> c_c = YAXArray(dims(c), rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

which achieves the same goal as rebuild.

Obtain values from axes and data from the cube

There are two options to collect values from axes. In this examples the axis ranges from 1 to 10.

These two examples bring the same result

julia
collect(getAxis("Dim_1", c).val)
+collect(c.axes[1].val)
10-element Vector{Int64}:
+  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10

to collect data from a cube works exactly the same as doing it from an array

julia
julia> c[:, :, 1]
10×10 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I concatenate cubes

It is possible to concatenate several cubes that shared the same dimensions using the [concatenatecubes]@ref function.

Let's create two dummy cubes

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+axlist = (
+    YAX.time(range(1, 20, length=20)),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15))
+    )
+
+data1 = rand(20, 10, 15)
+ds1 = YAXArray(axlist, data1)
+
+data2 = rand(20, 10, 15)
+ds2 = YAXArray(axlist, data2)

Now we can concatenate ds1 and ds2:

julia
julia> dsfinal = concatenatecubes([ds1, ds2], Dim{:Variables}(["var1", "var2"]))
20×10×15×2 YAXArray{Float64, 4}
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+time      Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon       Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat       Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+Variables Categorical{String} ["var1", "var2"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 46.88 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I subset a YAXArray ( Cube ) or Dataset?

These are the three main datatypes provided by the YAXArrays libray. You can find a description of them here. A Cube is no more than a YAXArray, so, we will not explicitly tell about a Cube.

Subsetting a YAXArray

Let's start by creating a dummy YAXArray.

Firstly, load the required libraries

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data, however the intervals notation should be used instead, i.e. `a .. b`.

Define the time span of the YAXArray

julia
t = Date("2020-01-01"):Month(1):Date("2022-12-31")
Date("2020-01-01"):Dates.Month(1):Date("2022-12-01")

create YAXArray axes

julia
axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
(↓ Lon  1:10,
+→ Lat  1:10,
+↗ Time Date("2020-01-01"):Dates.Month(1):Date("2022-12-01"))

create the YAXArray

julia
y = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
┌ 10×10×36 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 28.12 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Now we subset the YAXArray by any dimension.

Subset YAXArray by years

julia
ytime = y[Time=Between(Date(2021,1,1), Date(2021,12,31))]
┌ 10×10×12 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-01-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by a specific date

julia
ytime2 = y[Time=At(Date("2021-05-01"))]
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────── dims ┐
+  ↓ Lon Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────┘

Subset YAXArray by a date range

julia
ytime3 = y[Time=Date("2021-05-01") .. Date("2021-12-01")]
┌ 10×10×8 YAXArray{Int64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-05-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 6.25 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by longitude and latitude

julia
ylonlat = y[Lon=1 .. 5, Lat=5 .. 10]
┌ 5×6×36 YAXArray{Int64, 3} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 8.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subsetting a Dataset

In a dataset, we can have several variables (YAXArrays) that share some or all of their dimensions.

Subsetting a Dataset whose variables share all their dimensions

This works for YAXArrays. Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
+
+var1 = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
+var2 = YAXArray(axes, reshape((1:3600)*5, (10, 10, 36)))
+
+ds = Dataset(; var1=var1, var2=var2)
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2
julia
ds_lonlat = ds[Lon=1 .. 5, Lat=5 .. 10]
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2

Subsetting a Dataset whose variables share some but not all of their dimensions

In this case, if we subset by the common dimension/s, this works the same as for YAXArrays, Cubes, and datasets that share all their dimensions.

But we can also subset a variable by the values of another variable with which it shares some dimensions.

Warning

If your data is not loaded into memory, the selection will be too slow. So, you have load into memory, at least, the variable with which you make the selection.

Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" selector for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+common_axis = Dim{:points}(1:100)
+time_axis =   YAX.Time(t)
+
+# Note that longitudes and latitudes are not dimensions, but YAXArrays
+longitudes = YAXArray((common_axis,), rand(1:369, 100)) # 100 random values taken from 1 to 359
+latitudes  = YAXArray((common_axis,), rand(0:90, 100))  # 100 random values taken from 0 to 90
+temperature = YAXArray((common_axis, time_axis), rand(-40:40, (100, 36)))
+
+ds = Dataset(; longitudes=longitudes, latitudes=latitudes, temperature=temperature)
YAXArray Dataset
+Shared Axes: 
+  (↓ points Sampled{Int64} 1:100 ForwardOrdered Regular Points)
+
+Variables: 
+latitudes, longitudes
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

Select all points between 20ºN and 85ºN, and 0ºE to 180ºE

julia
ds_subset = ds[points = Where(p-> ds["latitudes"][p]  >= 20 && ds["latitudes"][p]  <= 80 &&
+                             ds["longitudes"][p] >= 0  && ds["longitudes"][p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+longitudes_yasxa = readcubedata(ds["longitudes"])
+ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
+                             longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Cubes with more than 3 dimensions

julia
julia> map((x, y) -> x * y, dsfinal[Variables=At("var1")], dsfinal[Variables=At("var2")])
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

To add some complexity, we will multiply each value for π and then divided for the sum of each time step. We will use the ds1 cube for this purpose.

julia
julia> mapslices(ds1, dims=("Lon", "Lat")) do xin
+           (xin * π) ./ maximum(skipmissing(xin))
+       end
10×15×20 YAXArray{Union{Missing, Float64}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I use the CubeTable function?

The function "CubeTable" creates an iterable table and the result is a DataCube. It is therefore very handy for grouping data and computing statistics by class. It uses OnlineStats.jl to calculate statistics, and weighted statistics can be calculated as well.

Here we will use the ds1 Cube defined previously and we create a mask for data classification.

Cube containing a mask with classes 1, 2 and 3.

julia
julia> classes = YAXArray((getAxis("lon", dsfinal), getAxis("lat", dsfinal)), rand(1:3, 10, 15))
10×15 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
using GLMakie
+GLMakie.activate!()
+# This is how our classification map looks like
+fig, ax, obj = heatmap(classes;
+    colormap=Makie.Categorical(cgrad([:grey15, :orangered, :snow3])))
+cbar = Colorbar(fig[1,2], obj)
+fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
+using OnlineStats
+## visualization of the CubeTable
+c_tbl = DataFrame(t[1])
+first(c_tbl, 5)

In this line we calculate the Mean for each class

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes))
3-element YAXArray{Union{Missing, Float64}, 1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 24.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

We can also use more than one criteria for grouping the values. In the next example, the mean is calculated for each class and timestep.

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes, :time))
3×20 YAXArray{Union{Missing, Float64}, 2}
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points,
+time    Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I assign variable names to YAXArrays in a Dataset

One variable name

julia
julia> ds = YAXArrays.Dataset(; (:a => YAXArray(rand(10)),)...)
YAXArray Dataset
+Shared Axes:
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+a

Multiple variable names

julia
keylist = (:a, :b, :c)
+varlist = (YAXArray(rand(10)), YAXArray(rand(10,5)), YAXArray(rand(2,5)))
julia
julia> ds = YAXArrays.Dataset(; (keylist .=> varlist)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  b
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+  Variables: 
+  a
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  c

WARNING

You will not be able to save this dataset, first you will need to rename those dimensions with the same name but different values.

Ho do I construct a Dataset from a TimeArray

In this section we will use MarketData.jl and TimeSeries.jl to simulate some stocks.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using MarketData, TimeSeries
+
+stocks = Dict(:Stock1 => random_ohlcv(), :Stock2 => random_ohlcv(), :Stock3 => random_ohlcv())
+d_keys = keys(stocks)
KeySet for a Dict{Symbol, TimeSeries.TimeArray{Float64, 2, DateTime, Matrix{Float64}}} with 3 entries. Keys:
+  :Stock3
+  :Stock1
+  :Stock2

currently there is not direct support to obtain dims from a TimeArray, but we can code a function for it

julia
getTArrayAxes(ta::TimeArray) = (YAX.time(timestamp(ta)), Variables(colnames(ta)), );

then, we create the YAXArrays as

julia
yax_list = [YAXArray(getTArrayAxes(stocks[k]), values(stocks[k])) for k in d_keys];

and a Dataset with all stocks names

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock3
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock1
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock2

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+
+Variables: 
+Stock1, Stock2, Stock3

now they are printed together, showing that is exactly the same axis structure for all variables.

Create a YAXArray with unions containing Strings

julia
test_x = stack(Vector{Union{Int,String}}[[1, "Test"], [2, "Test2"]])
+yax_string = YAXArray(test_x)
┌ 2×2 YAXArray{Union{Int64, String}, 2} ┐
+├───────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 121.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

or simply with an Any type

julia
test_bool = ["Test1" 1 false; 2 "Test2" true; 1 2f0 1f2]
+yax_bool = YAXArray(test_bool)
┌ 3×3 YAXArray{Any, 2} ┐
+├──────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 172.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

WARNING

Note that although their creation is allowed, it is not possible to save these types into Zarr or NetCDF.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/group.html b/v0.6.0/UserGuide/group.html new file mode 100644 index 00000000..273c9d1d --- /dev/null +++ b/v0.6.0/UserGuide/group.html @@ -0,0 +1,235 @@ + + + + + + Group YAXArrays and Datasets | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+using YAXArrays: YAXArrays as YAX
+using NetCDF
+using Downloads
+using Dates
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+filename = Downloads.download(url_path, "rasm.nc")
+ds_o = Cube(filename)
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
_FillValue = ds_o.properties["_FillValue"]
+ds = replace(ds_o[:,:,:], _FillValue => NaN) # load into memory and replace _FillValue by NaN
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

GroupBy: seasons

function weighted_seasons(ds) ... end
julia
function weighted_seasons(ds)
+    # calculate weights 
+    tempo = dims(ds, :time)
+    month_length = YAXArray((tempo,), daysinmonth.(tempo))
+    g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
+    sum_days = sum.(g_tempo, dims=:time)
+    weights = map(./, g_tempo, sum_days)
+    # unweighted seasons
+    g_ds = groupby(ds, YAX.time => seasons(; start=December))
+    mean_g = mean.(g_ds, dims=:time)
+    mean_g = dropdims.(mean_g, dims=:time)
+    # weighted seasons
+    g_dsW = broadcast_dims.(*, weights, g_ds)
+    weighted_g = sum.(g_dsW, dims = :time);
+    weighted_g = dropdims.(weighted_g, dims=:time)
+    # differences
+    diff_g = map(.-, weighted_g, mean_g)
+    seasons_g = lookup(mean_g, :time)
+    return mean_g, weighted_g, diff_g, seasons_g
+end

INFO

In what follows, note how we are referencing the time dimension via YAX.time. This approach is used to avoid name clashes with time (Time) from Base (Dates). For convenience, we have defined the Dimensions time and Time in YAXArrays.jl, which are only accessible when explicitly called.

Now, we continue with the groupby operations as usual

julia
julia> g_ds = groupby(ds, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Float64,2},1}
+├──────────────────────────────────────────────────┴───────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+x, y, time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  275×205×9 YAXArray
+ :Mar_Apr_May  275×205×9 YAXArray
+ :Jun_Jul_Aug  275×205×9 YAXArray
+ :Sep_Oct_Nov  275×205×9 YAXArray

And the mean per season is calculated as follows

julia
julia> mean_g = mean.(g_ds, dims=:time)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843;;;]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762;;;]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537;;;]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404;;;]

dropdims

Note that now the time dimension has length one, we can use dropdims to remove it

julia
julia> mean_g = dropdims.(mean_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404]

seasons

Due to the groupby function we will obtain new grouping names, in this case in the time dimension:

julia
seasons_g = lookup(mean_g, :time)
Categorical{Symbol} Unordered
+wrapping: 4-element Vector{Symbol}:
+ :Dec_Jan_Feb
+ :Mar_Apr_May
+ :Jun_Jul_Aug
+ :Sep_Oct_Nov

Next, we will weight this grouping by days/month in each group.

GroupBy: weight

Create a YAXArray for the month length

julia
tempo = dims(ds, :time)
+month_length = YAXArray((tempo,), daysinmonth.(tempo))
┌ 36-element YAXArray{Int64, 1} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 288.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now group it by season

julia
julia> g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Int64,0},1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  9-element YAXArray
+ :Mar_Apr_May  9-element YAXArray
+ :Jun_Jul_Aug  9-element YAXArray
+ :Sep_Oct_Nov  9-element YAXArray

Get the number of days per season

julia
julia> sum_days = sum.(g_tempo, dims=:time)
4-element DimArray{YAXArray{Int64, 1, DimensionalData.DimVector{Int64, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Tuple{}, Vector{Int64}, Symbol, DimensionalData.Dimensions.Lookups.NoMetadata}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  [270]
+ :Mar_Apr_May  [276]
+ :Jun_Jul_Aug  [276]
+ :Sep_Oct_Nov  [273]

weights

Weight the seasonal groups by sum_days

julia
julia> weights = map(./, g_tempo, sum_days)
4-element DimArray{YAXArray{Float64, 1, Vector{Float64}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1} groupby
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704]
+ :Mar_Apr_May     [0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319]
+ :Jun_Jul_Aug     [0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319]
+ :Sep_Oct_Nov     [0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989]

Verify that the sum per season is 1

julia
julia> sum.(weights)
4-element DimArray{Float64, 1}
+├────────────────────────────────┴─────────────────────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  1.0
+ :Mar_Apr_May  1.0
+ :Jun_Jul_Aug  1.0
+ :Sep_Oct_Nov  1.0

weighted seasons

Now, let's weight the seasons

julia
julia> g_dsW = broadcast_dims.(*, weights, g_ds)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.32149 1.33565; NaN NaN … 1.29564 1.32555; … ; NaN NaN … 1.3188 1.3169; NaN NaN … 1.17863 1.18434;;; NaN NaN … 1.29816 1.34218; NaN NaN … 1.30113 1.35483; … ; NaN NaN … 1.30142 1.31753; NaN NaN … 1.16258 1.17647;;; NaN NaN … 1.34549 1.37878; NaN NaN … 1.36836 1.41634; … ; NaN NaN … 1.34832 1.38364; NaN NaN … 1.17852 1.16713]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.87705 1.90365; NaN NaN … 2.30018 2.35432; … ; NaN NaN … 2.41049 2.43254; NaN NaN … 2.65105 2.69085;;; NaN NaN … 1.86457 1.90712; NaN NaN … 2.2894 2.34818; … ; NaN NaN … 2.3866 2.41241; NaN NaN … 2.61197 2.64976;;; NaN NaN … 1.89237 1.8984; NaN NaN … 2.29473 2.312; … ; NaN NaN … 2.36142 2.36126; NaN NaN … 2.56632 2.59085]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 3.21209 3.25153; NaN NaN … 3.23 3.28008; … ; NaN NaN … 3.12575 3.15532; NaN NaN … 3.2434 3.26274;;; NaN NaN … 3.17434 3.21699; NaN NaN … 3.18892 3.24375; … ; NaN NaN … 3.06755 3.1083; NaN NaN … 3.19241 3.22211;;; NaN NaN … 3.1437 3.15644; NaN NaN … 3.16631 3.18583; … ; NaN NaN … 3.03361 3.05846; NaN NaN … 3.16581 3.16824]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 2.97047 3.00388; NaN NaN … 2.77587 2.80759; … ; NaN NaN … 2.60175 2.60918; NaN NaN … 1.4947 1.52419;;; NaN NaN … 2.94534 2.97649; NaN NaN … 2.75891 2.79502; … ; NaN NaN … 2.57695 2.59212; NaN NaN … 1.46506 1.49909;;; NaN NaN … 2.9192 2.93743; NaN NaN … 2.7593 2.77687; … ; NaN NaN … 2.57873 2.63006; NaN NaN … 1.48367 1.50089]

apply a sum over the time dimension and drop it

julia
julia> weighted_g = sum.(g_dsW, dims = :time);
+
+julia> weighted_g = dropdims.(weighted_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1181 11.372; NaN NaN … 11.3069 11.5743]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1242 21.0057; NaN NaN … 21.4198 21.1644]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2747 27.9362; NaN NaN … 28.6122 28.0465]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.73 21.7341; NaN NaN … 21.986 21.959]

Calculate the differences

julia
julia> diff_g = map(.-, weighted_g, mean_g)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.019016 -0.0115514; NaN NaN … -0.0183003 -0.00990356]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.0121037 -0.0123091; NaN NaN … -0.0127077 -0.0117519]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.00709111 -0.00693713; NaN NaN … -0.00684233 -0.00722034]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 0.0180572 0.0182373; NaN NaN … 0.0178074 0.018571]

All the previous steps are equivalent to calling the function defined at the top:

julia
mean_g, weighted_g, diff_g, seasons_g = weighted_seasons(ds)

Once all calculations are done we can plot the results with Makie.jl as follows:

julia
using CairoMakie
+# define plot arguments/attributes
+colorrange = (-30,30)
+colormap = Reverse(:Spectral)
+highclip = :red
+lowclip = :grey15
+cb_label =  ds_o.properties["long_name"]
"Surface air temperature"
julia
with_theme(theme_ggplot2()) do
+    hm_o, hm_d, hm_w = nothing, nothing, nothing
+    # the figure
+    fig = Figure(; size = (850,500))
+    axs = [Axis(fig[i,j], aspect=DataAspect()) for i in 1:3, j in 1:4]
+    for (j, s) in enumerate(seasons_g)
+        hm_o = heatmap!(axs[1,j], mean_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_w = heatmap!(axs[2,j], weighted_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_d = heatmap!(axs[3,j], diff_g[time=At(s)]; colorrange=(-0.1,0.1), lowclip, highclip,
+            colormap=:diverging_bwr_20_95_c54_n256)
+    end
+    Colorbar(fig[1:2,5], hm_o, label=cb_label)
+    Colorbar(fig[3,5], hm_d, label="Tair")
+    hidedecorations!.(axs, grid=false, ticks=false, label=false)
+    # some labels
+    [axs[1,j].title = string.(s) for (j,s) in enumerate(seasons_g)]
+    Label(fig[0,1:5], "Seasonal Surface Air Temperature", fontsize=18, font=:bold)
+    axs[1,1].ylabel = "Unweighted"
+    axs[2,1].ylabel = "Weighted"
+    axs[3,1].ylabel = "Difference"
+    colgap!(fig.layout, 5)
+    rowgap!(fig.layout, 5)
+    fig
+end

which shows a good agreement with the results first published by Joe Hamman.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/read.html b/v0.6.0/UserGuide/read.html new file mode 100644 index 00000000..dcb086e8 --- /dev/null +++ b/v0.6.0/UserGuide/read.html @@ -0,0 +1,217 @@ + + + + + + Read YAXArrays and Datasets | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

open_dataset

The usual method for reading any format is using this function. See its docstring for more information.

YAXArrays.Datasets.open_dataset Function
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+using Zarr
+path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
+store = zopen(path, consolidated=true)
+ds = open_dataset(store)
YAXArray Dataset
+Shared Axes: 
+None
+Variables: 
+height
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
+  Variables: 
+  tas
+
+Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
+├─────────────────────────────────────┴────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"         => "K"
+  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
+  "name"          => "tas"
+  "cell_methods"  => "area: mean time: point"
+  "cell_measures" => "area: areacella"
+  "long_name"     => "Near-Surface Air Temperature"
+  "coordinates"   => "height"
+  "standard_name" => "air_temperature"
+  "_FillValue"    => 1.0f20
+  "comment"       => "near-surface (usually, 2 meter) air temperature"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 69.02 GB
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
+Threads.@threads for i in 1:10
+    @lock my_lock @info ds.tos[1, 1, 1]
+end
[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+using ArchGDAL
+using Downloads: download
+
+path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
+
+Variables: 
+Blue, Green, Red
+
+Properties: Dict{String, Any}("projection" => "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

julia
readcubedata(ds.tos)
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/select.html b/v0.6.0/UserGuide/select.html new file mode 100644 index 00000000..cb201501 --- /dev/null +++ b/v0.6.0/UserGuide/select.html @@ -0,0 +1,303 @@ + + + + + + Select YAXArrays and Datasets | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Select a YAXArray

Get the sea surface temperature of the Dataset:

julia
tos = ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

which is the same as:

julia
tos = ds.cubes[:tos]
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Select elements

Using positional integer indexing:

julia
tos[lon = 1, lat = 1]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1), lat = At(-79.5)]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Using special types:

julia
using CFTime
+time1 = DateTime360Day(2001,01,16)
+tos[time = At(time1)]
┌ 180×170 YAXArray{Union{Missing, Float32}, 2} ┐
+├──────────────────────────────────────────────┴──────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────────────────┴ metadata ┐
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├───────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 119.53 KB
+└────────────────────────────────────────────────────────────────────────────────┘

Select ranges

Here we subset an interval of a dimension using positional integer indexing.

julia
tos[lon = 1:10, lat = 1:10]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:19.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:-70.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1.0:2:19), lat = At(-79.5:1:-70.5)]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 3.0, …, 17.0, 19.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} [-79.5, -78.5, …, -71.5, -70.5] ForwardOrdered Irregular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Read more about the At selector in the package DimensionalData. Get values within a tolerances:

julia
tos[lon = At(1:10; atol = 1)]
┌ 10×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 1.0, …, 9.0, 9.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 159.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Closed and open intervals

Although a Between(a,b) function is available in DimensionalData, is recommended to use instead the a .. b notation:

julia
tos[lon = 90 .. 180]
┌ 45×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This describes a closed interval in which all points were included. More selectors from DimensionalData are available, such as Touches, Near, Where and Contains.

julia
using IntervalSets
julia
julia> tos[lon = OpenInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon = ClosedInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:open,:closed}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:closed,:open}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

See tutorials for use cases.

Get a dimension

Get values, .e.g., axis tick labels, of a dimension that can be used for subseting:

julia
collect(tos.lat)
┌ 170-element DimArray{Float64, 1} ┐
+├──────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+└─────────────────────────────────────────────────────────────────────┘
+ -79.5  -79.5
+ -78.5  -78.5
+ -77.5  -77.5
+ -76.5  -76.5
+ -75.5  -75.5
+ -74.5  -74.5
+
+  85.5   85.5
+  86.5   86.5
+  87.5   87.5
+  88.5   88.5
+  89.5   89.5

These values are defined as lookups in the package DimensionalData:

julia
lookup(tos, :lon)
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0

which is equivalent to:

julia
tos.lon.val
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0
+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/types.html b/v0.6.0/UserGuide/types.html new file mode 100644 index 00000000..a3d4346e --- /dev/null +++ b/v0.6.0/UserGuide/types.html @@ -0,0 +1,29 @@ + + + + + + Types | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimensions

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

Lon, Lat, time

For convenience, several Dimensions have been defined in YAXArrays.jl, but only a few have been exported. The remaining dimensions can be used by calling them explicitly. See the next table for an overview

Dimensionexportedusage: using YAXArrays: YAXArrays as YAX
lonlon or YAX.lon
LonLon or YAX.Lon
longitudelongitude or YAX.longitude
LongitudeLongitude or YAX.Longitude
latlat or YAX.lat
LatLat or YAX.Lat
latitudelatitude or YAX.latitude
LatitudeLatitude or YAX.Latitude
timeYAX.time
TimeYAX.Time
rlatYAX.rlat
rlonYAX.rlon
lat_cYAX.lat_c
lon_cYAX.lon_c
heightYAX.height
depthYAX.depth
VariablesVariables or YAX.Variables

INFO

If the dimension you are looking for is not in that table, you can define your own by doing

julia
using DimensionalData: @dim, XDim # If you want it to be a subtype of XDim
+@dim newDim XDim "Your newDim label"

Sometimes, when you want to operate on a specific dimension in your dataset (for example, a dimension named date), then doing

julia
groupby(ds, Dim{:date} => seasons())

should do the job.

+ + + + \ No newline at end of file diff --git a/v0.6.0/UserGuide/write.html b/v0.6.0/UserGuide/write.html new file mode 100644 index 00000000..ad4fa9b9 --- /dev/null +++ b/v0.6.0/UserGuide/write.html @@ -0,0 +1,98 @@ + + + + + + Write YAXArrays and Datasets | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
+savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

zarr compression

Save a dataset to Zarr format with compression:

julia
n = 9 # compression level, number between 0 (no compression) and 9 (max compression)
+compression = Zarr.BloscCompressor(; clevel=n)
+
+savedataset(ds; path="ds_c.zarr", driver=:zarr, compressor=compression)

More on Zarr Compressors. Also, if you use this option and don't notice a significant improvement, please feel free to open an issue or start a discussion.

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
+savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
+ds_c_info = stat("ds_c.nc")
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

YAXArrays.Datasets.savedataset Function
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+  Variables: 
+  tos
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
+Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now, save to disk with

julia
r = savecube(a, "skeleton.zarr", layername="skeleton", driver=:zarr, skeleton=true, overwrite=true)

WARNING

overwrite=true will delete your previous .zarr file before creating a new one.

Note also that if layername="skeleton" is not provided then the default name for the cube variable will be layer.

Now, we check that all the values are missing

julia
all(ismissing, r[:,:,:])
true

If using FillArrays is not possible, using the zeros function works as well, though it does allocate the array in memory.

INFO

The skeleton argument is also available for savedataset.

Using the toy array defined above we can do

julia
ds = Dataset(skeleton=a) # skeleton will the variable name
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+
+Variables: 
+skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
+ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ds_array = ds_open["skeleton"]
+ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

indeed, those entries had been updated.

+ + + + \ No newline at end of file diff --git a/v0.6.0/api.html b/v0.6.0/api.html new file mode 100644 index 00000000..a0ea3527 --- /dev/null +++ b/v0.6.0/api.html @@ -0,0 +1,33 @@ + + + + + + API Reference | YAXArrays.jl + + + + + + + + + + + + + + + + + +
Skip to content

API Reference

This section describes all available functions of this package.

Public API

YAXArrays.getAxis Method
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.Cubes Module

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source

YAXArrays.Cubes.YAXArray Type
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

YAXArrays.Cubes.caxes Function

Returns the axes of a Cube

source

YAXArrays.Cubes.caxes Method
julia
caxes

Embeds Cube inside a new Cube

source

YAXArrays.Cubes.concatenatecubes Method
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

YAXArrays.Cubes.readcubedata Method
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Cubes.subsetcube Function

This function calculates a subset of a cube's data

source

YAXArrays.DAT.InDims Type
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

YAXArrays.DAT.MovingWindow Type
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

YAXArrays.DAT.OutDims Method
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

YAXArrays.DAT.CubeTable Method
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

YAXArrays.DAT.cubefittable Method
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

YAXArrays.DAT.fittable Method
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

YAXArrays.Datasets.Dataset Type

Dataset object which stores an OrderedDict of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source

YAXArrays.Datasets.Dataset Method
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

YAXArrays.Datasets.Cube Method
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

YAXArrays.Datasets.open_dataset Method
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

YAXArrays.Datasets.open_mfdataset Method
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

YAXArrays.Datasets.savecube Method
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

YAXArrays.Datasets.savedataset Method
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

YAXArrays.Datasets.to_dataset Method
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

Internal API

YAXArrays.YAXDefaults Constant

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

YAXArrays.findAxis Method
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.getOutAxis Method
julia
getOutAxis

source

YAXArrays.get_descriptor Method
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

YAXArrays.match_axis Method
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+This is used to find different axes and to make certain axis description the same.
+For example to disregard differences of captialisation.

source

YAXArrays.Cubes.CleanMe Type
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

YAXArrays.Cubes.clean Method
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

YAXArrays.Cubes.copydata Method
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

YAXArrays.Cubes.optifunc Method
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

YAXArrays.DAT.DATConfig Type

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

YAXArrays.DAT.InputCube Type

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

YAXArrays.DAT.OutputCube Type

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

YAXArrays.DAT.YAXColumn Type
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

YAXArrays.DAT.cmpcachmisses Method

Function that compares two cache miss specifiers by their importance

source

YAXArrays.DAT.getFrontPerm Method

Calculate an axis permutation that brings the wanted dimensions to the front

source

YAXArrays.DAT.getLoopCacheSize Method

Calculate optimal Cache size to DAT operation

source

YAXArrays.DAT.getOuttype Method
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

YAXArrays.DAT.getloopchunks Method
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
+This computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

YAXArrays.DAT.permuteloopaxes Method
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Datasets.collectfromhandle Method

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source

YAXArrays.Datasets.createdataset Method
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

YAXArrays.Datasets.getarrayinfo Method

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source

YAXArrays.Datasets.testrange Method

Test if data in x can be approximated by a step range

source

+ + + + \ No newline at end of file diff --git a/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.js b/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.js new file mode 100644 index 00000000..a1758d3f --- /dev/null +++ b/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.js @@ -0,0 +1,5 @@ +import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BcwRT4E8.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
+ds = open_dataset("path/to/source")
+cachesize = 500 #MB
+cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
+cache(yax,maxsize = 1000)
`,5)]))}const g=a(n,[["render",h]]);export{o as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.lean.js b/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.lean.js new file mode 100644 index 00000000..a1758d3f --- /dev/null +++ b/v0.6.0/assets/UserGuide_cache.md.CNZf6SxC.lean.js @@ -0,0 +1,5 @@ +import{_ as a,c as i,a2 as e,o as t}from"./chunks/framework.BcwRT4E8.js";const o=JSON.parse('{"title":"Caching YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/cache.md","filePath":"UserGuide/cache.md","lastUpdated":null}'),n={name:"UserGuide/cache.md"};function h(l,s,p,r,c,d){return t(),i("div",null,s[0]||(s[0]=[e(`

Caching YAXArrays

For some applications like interactive plotting of large datasets it can not be avoided that the same data must be accessed several times. In these cases it can be useful to store recently accessed data in a cache. In YAXArrays this can be easily achieved using the cache function. For example, if we open a large dataset from a remote source and want to keep data in a cache of size 500MB one can use:

julia
using YAXArrays, Zarr
+ds = open_dataset("path/to/source")
+cachesize = 500 #MB
+cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
+cache(yax,maxsize = 1000)
`,5)]))}const g=a(n,[["render",h]]);export{o as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.js b/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.js new file mode 100644 index 00000000..dfdfa708 --- /dev/null +++ b/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.js @@ -0,0 +1,98 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
+a = YAXArray(rand(10,20))
+a_chunked = setchunks(a, (5,10))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

And the saved file is also splitted into Chunks.

julia
f = tempname()
+savecube(a_chunked, f, backend=:zarr)
+Cube(f).chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Alternatively chunk sizes can be given by dimension name, so the following results in the same chunks:

julia
a_chunked = setchunks(a, (Dim_2=10, Dim_1=5))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Chunking Datasets

Setchunks can also be applied to a Dataset.

Set Chunks by Axis

Set chunk size for each axis occuring in a Dataset. This will be applied to all variables in the dataset:

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds, Dict("Dim_1"=>5, "Dim_2"=>10, "Dim_3"=>2))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

Saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking by Variable

The following will set the chunk size for each Variable separately and results in exactly the same chunking as the example above

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds,(x = (5,10), y = Dict("Dim_1"=>5), z = (Dim_1 = 5, Dim_2 = 10, Dim_3 = 2)))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking for all variables

The following code snippet only works when all member variables of the dataset have the same shape and sets the output chunks for all arrays.

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10,20)), z = YAXArray(rand(10,20)))
+dschunked = setchunks(ds,(5,10))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:1)   (1:5, 11:20, 1:1)
+ (6:10, 1:10, 1:1)  (6:10, 11:20, 1:1)
+
+[:, :, 2] =
+ (1:5, 1:10, 2:2)   (1:5, 11:20, 2:2)
+ (6:10, 1:10, 2:2)  (6:10, 11:20, 2:2)
+
+[:, :, 3] =
+ (1:5, 1:10, 3:3)   (1:5, 11:20, 3:3)
+ (6:10, 1:10, 3:3)  (6:10, 11:20, 3:3)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+
+Variables: 
+x, y, z

Suggestions on how to improve or add to these examples is welcome.

`,36)]))}const c=a(l,[["render",h]]);export{g as __pageData,c as default}; diff --git a/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.lean.js b/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.lean.js new file mode 100644 index 00000000..dfdfa708 --- /dev/null +++ b/v0.6.0/assets/UserGuide_chunk.md.Dz_Pl7wS.lean.js @@ -0,0 +1,98 @@ +import{_ as a,c as i,a2 as n,o as p}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Chunk YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/chunk.md","filePath":"UserGuide/chunk.md","lastUpdated":null}'),l={name:"UserGuide/chunk.md"};function h(e,s,t,k,r,d){return p(),i("div",null,s[0]||(s[0]=[n(`

Chunk YAXArrays

Thinking about chunking is important when it comes to analyzing your data, because in most situations this will not fit into memory, hence having the fastest read access to it is crucial for your workflows. For example, for geo-spatial data do you want fast access on time or space, or... think about it.

To determine the chunk size of the array representation on disk, call the setchunks function prior to saving.

Chunking YAXArrays

julia
using YAXArrays, Zarr
+a = YAXArray(rand(10,20))
+a_chunked = setchunks(a, (5,10))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

And the saved file is also splitted into Chunks.

julia
f = tempname()
+savecube(a_chunked, f, backend=:zarr)
+Cube(f).chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Alternatively chunk sizes can be given by dimension name, so the following results in the same chunks:

julia
a_chunked = setchunks(a, (Dim_2=10, Dim_1=5))
+a_chunked.chunks
2×2 DiskArrays.GridChunks{2, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+ (1:5, 1:10)   (1:5, 11:20)
+ (6:10, 1:10)  (6:10, 11:20)

Chunking Datasets

Setchunks can also be applied to a Dataset.

Set Chunks by Axis

Set chunk size for each axis occuring in a Dataset. This will be applied to all variables in the dataset:

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds, Dict("Dim_1"=>5, "Dim_2"=>10, "Dim_3"=>2))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

Saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking by Variable

The following will set the chunk size for each Variable separately and results in exactly the same chunking as the example above

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10)), z = YAXArray(rand(10,20,5)))
+dschunked = setchunks(ds,(x = (5,10), y = Dict("Dim_1"=>5), z = (Dim_1 = 5, Dim_2 = 10, Dim_3 = 2)))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:2)   (1:5, 11:20, 1:2)
+ (6:10, 1:10, 1:2)  (6:10, 11:20, 1:2)
+
+[:, :, 2] =
+ (1:5, 1:10, 3:4)   (1:5, 11:20, 3:4)
+ (6:10, 1:10, 3:4)  (6:10, 11:20, 3:4)
+
+[:, :, 3] =
+ (1:5, 1:10, 5:5)   (1:5, 11:20, 5:5)
+ (6:10, 1:10, 5:5)  (6:10, 11:20, 5:5)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+y
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+  Variables: 
+  x
+
+  Additional Axes: 
+  (↓ Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  → Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  z

Set chunking for all variables

The following code snippet only works when all member variables of the dataset have the same shape and sets the output chunks for all arrays.

julia
using YAXArrays, Zarr
+ds = Dataset(x = YAXArray(rand(10,20)), y = YAXArray(rand(10,20)), z = YAXArray(rand(10,20)))
+dschunked = setchunks(ds,(5,10))
+Cube(dschunked).chunks
2×2×3 DiskArrays.GridChunks{3, Tuple{DiskArrays.RegularChunks, DiskArrays.RegularChunks, DiskArrays.RegularChunks}}:
+[:, :, 1] =
+ (1:5, 1:10, 1:1)   (1:5, 11:20, 1:1)
+ (6:10, 1:10, 1:1)  (6:10, 11:20, 1:1)
+
+[:, :, 2] =
+ (1:5, 1:10, 2:2)   (1:5, 11:20, 2:2)
+ (6:10, 1:10, 2:2)  (6:10, 11:20, 2:2)
+
+[:, :, 3] =
+ (1:5, 1:10, 3:3)   (1:5, 11:20, 3:3)
+ (6:10, 1:10, 3:3)  (6:10, 11:20, 3:3)

saving...

julia
f = tempname()
+savedataset(dschunked, path=f, driver=:zarr)
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points)
+
+Variables: 
+x, y, z

Suggestions on how to improve or add to these examples is welcome.

`,36)]))}const c=a(l,[["render",h]]);export{g as __pageData,c as default}; diff --git a/v0.6.0/assets/UserGuide_combine.md.CYRygboX.js b/v0.6.0/assets/UserGuide_combine.md.CYRygboX.js new file mode 100644 index 00000000..beb5b367 --- /dev/null +++ b/v0.6.0/assets/UserGuide_combine.md.CYRygboX.js @@ -0,0 +1,28 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const E=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function h(l,s,p,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+first_half = YAXArray((YAX.time(1:6),), rand(6))
+second_half = YAXArray((YAX.time(7:12),), rand(6))
+whole_year = cat(first_half, second_half, dims = 1)
┌ 12-element YAXArray{Float64, 1} ┐
+├─────────────────────────────────┴─────────────────────────────── dims ┐
+  ↓ time Sampled{Int64} [1, 2, …, 11, 12] ForwardOrdered Regular Points
+├───────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────────────────── loaded in memory ┤
+  data size: 96.0 bytes
+└───────────────────────────────────────────────────────────────────────┘

concatenatecubes to a new dimension

Here we use concatenatecubes to combine two arrays of different variables that have the same dimensions. The resulting array combined has an additional dimension variable indicating from which array the element values originates. Note that using a Dataset instead is a more flexible approach in handling different variables.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+temperature = YAXArray((YAX.time(1:6),), rand(6))
+precipitation = YAXArray((YAX.time(1:6),), rand(6))
+cubes = [temperature,precipitation]
+var_axis = Variables(["temp", "prep"])
+combined = concatenatecubes(cubes, var_axis)
┌ 6×2 YAXArray{Float64, 2} ┐
+├──────────────────────────┴──────────────────────────────── dims ┐
+  ↓ time      Sampled{Int64} 1:6 ForwardOrdered Regular Points,
+  → Variables Categorical{String} ["temp", "prep"] ReverseOrdered
+├─────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└─────────────────────────────────────────────────────────────────┘
`,10)]))}const g=i(t,[["render",h]]);export{E as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_combine.md.CYRygboX.lean.js b/v0.6.0/assets/UserGuide_combine.md.CYRygboX.lean.js new file mode 100644 index 00000000..beb5b367 --- /dev/null +++ b/v0.6.0/assets/UserGuide_combine.md.CYRygboX.lean.js @@ -0,0 +1,28 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const E=JSON.parse('{"title":"Combine YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/combine.md","filePath":"UserGuide/combine.md","lastUpdated":null}'),t={name:"UserGuide/combine.md"};function h(l,s,p,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Combine YAXArrays

Data is often scattered across multiple files and corresponding arrays, e.g. one file per time step. This section describes methods on how to combine them into a single YAXArray.

cat along an existing dimension

Here we use cat to combine two arrays consisting of data from the first and the second half of a year into one single array containing the whole year. We glue the arrays along the first dimension using dims = 1: The resulting array whole_year still has one dimension, i.e. time, but with 12 instead of 6 elements.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+first_half = YAXArray((YAX.time(1:6),), rand(6))
+second_half = YAXArray((YAX.time(7:12),), rand(6))
+whole_year = cat(first_half, second_half, dims = 1)
┌ 12-element YAXArray{Float64, 1} ┐
+├─────────────────────────────────┴─────────────────────────────── dims ┐
+  ↓ time Sampled{Int64} [1, 2, …, 11, 12] ForwardOrdered Regular Points
+├───────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────────────────── loaded in memory ┤
+  data size: 96.0 bytes
+└───────────────────────────────────────────────────────────────────────┘

concatenatecubes to a new dimension

Here we use concatenatecubes to combine two arrays of different variables that have the same dimensions. The resulting array combined has an additional dimension variable indicating from which array the element values originates. Note that using a Dataset instead is a more flexible approach in handling different variables.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+temperature = YAXArray((YAX.time(1:6),), rand(6))
+precipitation = YAXArray((YAX.time(1:6),), rand(6))
+cubes = [temperature,precipitation]
+var_axis = Variables(["temp", "prep"])
+combined = concatenatecubes(cubes, var_axis)
┌ 6×2 YAXArray{Float64, 2} ┐
+├──────────────────────────┴──────────────────────────────── dims ┐
+  ↓ time      Sampled{Int64} 1:6 ForwardOrdered Regular Points,
+  → Variables Categorical{String} ["temp", "prep"] ReverseOrdered
+├─────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└─────────────────────────────────────────────────────────────────┘
`,10)]))}const g=i(t,[["render",h]]);export{E as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.js b/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.js new file mode 100644 index 00000000..cf7c9119 --- /dev/null +++ b/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.js @@ -0,0 +1,392 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function l(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

Let's start by creating an example dataset:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8638599930441428
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2[1,2,3] == a[1,2,3] + 5
true

map

Apply a function on every element of an array individually:

julia
offset = 5
+map(a) do x
+    (x + offset) / 2 * 3
+end
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This keeps all dimensions unchanged. Note, that here we can not access neighboring elements. In this case, we can use mapslices or mapCube instead. Each element of the array is processed individually.

The code runs very fast, because map applies the function lazily. Actual computation will be performed only on demand, e.g. when elements were explicitly requested or further computations were performed.

mapslices

Reduce the time dimension by calculating the average value of all points in time:

julia
import Statistics: mean
+mapslices(mean, a, dims="Time")
┌ 10×15 YAXArray{Union{Missing, Float64}, 2} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘

There is no time dimension left, because there is only one value left after averaging all time steps. We can also calculate spatial means resulting in one value per time step:

julia
mapslices(mean, a, dims=("lat", "lon"))
┌ 30-element YAXArray{Union{Missing, Float64}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

mapCube

mapCube is the most flexible way to apply a function over subsets of an array. Dimensions may be added or removed.

Operations over several YAXArrays

Here, we will define a simple function, that will take as input several YAXArrays. But first, let's load the necessary packages.

julia
using YAXArrays, Zarr
+using YAXArrays: YAXArrays as YAX
+using Dates

Define function in space and time

julia
f(lo, la, t) = (lo + la + Dates.dayofyear(t))
f (generic function with 1 method)

now, mapCube requires this function to be wrapped as follows

julia
function g(xout, lo, la, t)
+    xout .= f.(lo, la, t)
+end
g (generic function with 1 method)

INFO

Note the . after f, this is because we will slice across time, namely, the function is broadcasted along this dimension.

Here, we do create YAXArrays only with the desired dimensions as

julia
julia> lon_yax = YAXArray(lon(range(1, 15)))
15-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lon Sampled{Int64} 1:15 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 120.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> lat_yax = YAXArray(lat(range(1, 10)))
10-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 80.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

And a time Cube's Axis

julia
tspan = Date("2022-01-01"):Day(1):Date("2022-01-30")
+time_yax = YAXArray(YAX.time(tspan))
┌ 30-element YAXArray{Date, 1} ┐
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the following can be extended to arbitrary YAXArrays with additional data and dimensions.

Let's generate a new cube using mapCube and saving the output directly into disk.

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims(), InDims(), InDims("time")),
+           outdims = OutDims("time", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
30×15×10 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

"time axis goes first"

Note that currently the time axis in the output cube goes first.

Check that it is working

julia
julia> gen_cube.data[1, :, :]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

but, we can generate a another cube with a different output order as follows

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims("lon"), InDims(), InDims()),
+           outdims = OutDims("lon", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
15×10×30 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

INFO

Note that now the broadcasted dimension is lon.

we can see this by slicing on the last dimension now

julia
gen_cube.data[:, :, 1]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

which outputs the same as the gen_cube.data[1, :, :] called above.

OutDims and YAXArray Properties

Here, we will consider different scenarios, namely how we deal with different input cubes and how to specify the output ones. We will illustrate this with the following test example and the subsequent function definitions.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Zarr
+using Random
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(range(1, 4, length=4)),
+    lat(range(1, 3, length=3)),
+    Variables(["a", "b"])
+)
+
+Random.seed!(123)
+data = rand(1:5, 5, 4, 3, 2)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3×2 YAXArray{Int64, 4} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

One InDims to many OutDims

In the following function, note how the outputs are defined first and the inputs later.

julia
function one_to_many(xout_one, xout_two, xout_flat, xin_one)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2.(xin_one)
+    xout_flat .= sum(xin_one)
+    return nothing
+end
+
+f1(xin) = xin + 1
+f2(xin) = xin + 2
f2 (generic function with 1 method)

now, we define InDims and OutDims:

julia
indims_one   = InDims("Time")
+# outputs dimension
+properties_one = Dict{String, Any}("name" => "plus_one")
+properties_two = Dict{String, Any}("name" => "plus_two")
+
+outdims_one = OutDims("Time"; properties=properties_one)
+outdims_two = OutDims("Time"; properties=properties_two)
+outdims_flat = OutDims(;) # it will get the default \`layer\` name if open as dataset
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(one_to_many, yax_test,
+    indims = indims_one,
+    outdims = (outdims_one, outdims_two, outdims_flat));

let's see the second output

julia
ds[2]
┌ 5×4×3×2 YAXArray{Union{Missing, Int64}, 4} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "name" => "plus_two"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Many InDims to many OutDims

Let's consider a second test set

julia
properties_2d = Dict("description" => "2d dimensional test cube")
+yax_2d = YAXArray(axlist[2:end], rand(-1:1, 4, 3, 2), properties_2d)
┌ 4×3×2 YAXArray{Int64, 3} ┐
+├──────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  → lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ↗ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├─────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "2d dimensional test cube"
+├─────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 192.0 bytes
+└─────────────────────────────────────────────────────────────────────────┘

The function definitions operating in this case are as follows

julia
function many_to_many(xout_one, xout_two, xout_flat, xin_one, xin_two, xin_drei)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2mix.(xin_one, xin_two)
+    xout_flat .= sum(xin_drei) # this will reduce the time dimension if we set outdims = OutDims()
+    return nothing
+end
+f2mix(xin_xyt, xin_xy) = xin_xyt - xin_xy
f2mix (generic function with 1 method)

Specify path in OutDims

julia
indims_one   = InDims("Time")
+indims_2d   = InDims() # ? it matches only to the other 2 dimensions and uses the same values for each time step
+properties = Dict{String, Any}("name"=> "many_to_many_two")
+outdims_one = OutDims("Time")
+outdims_two = OutDims("Time"; path = "test_mm.zarr", properties)
+outdims_flat = OutDims()
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(many_to_many, (yax_test, yax_2d, yax_test),
+    indims = (indims_one, indims_2d, indims_one),
+    outdims = (outdims_one, outdims_two, outdims_flat));

And we can open the one that was saved directly to disk.

julia
ds_mm = open_dataset("test_mm.zarr")
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{DateTime} [2022-01-01T00:00:00, …, 2022-01-05T00:00:00] ForwardOrdered Irregular Points,
+  → lon  Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points)
+
+Variables: 
+a, b

Different InDims names

Here, the goal is to operate at the pixel level (longitude, latitude), and then apply the corresponding function to the extracted values. Consider the following toy cubes:

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (lon(1:4), lat(1:3), Dim{:depth}(1:7),)
+yax_2d = YAXArray(axlist, rand(-3.0:0.0, 4, 3, 7))
┌ 4×3×7 YAXArray{Float64, 3} ┐
+├────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon   Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  → lat   Sampled{Int64} 1:3 ForwardOrdered Regular Points,
+  ↗ depth Sampled{Int64} 1:7 ForwardOrdered Regular Points
+├───────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────── loaded in memory ┤
+  data size: 672.0 bytes
+└───────────────────────────────────────────────────────────┘

and

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(1:4), lat(1:3),)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

and the corresponding functions

julia
function mix_time_depth(xin_xyt, xin_xyz)
+    s = sum(abs.(xin_xyz))
+    return xin_xyt.^2 .+ s
+end
+
+function time_depth(xout, xin_one, xin_two)
+    xout .= mix_time_depth(xin_one, xin_two)
+    # Note also that there is no dot anymore in the function application!
+    return nothing
+end
time_depth (generic function with 1 method)

with the final mapCube operation as follows

julia
ds = mapCube(time_depth, (yax_test, yax_2d),
+    indims = (InDims("Time"), InDims("depth")), # ? anchor dimensions and then map over the others.
+    outdims = OutDims("Time"))
┌ 5×4×3 YAXArray{Union{Missing, Float64}, 3} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Creating a vector array

Here we transform a raster array with spatial dimension lat and lon into a vector array having just one spatial dimension i.e. region. First, create the raster array:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+raster_arr = YAXArray(axlist, data)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Then, create a Matrix with the same spatial dimensions indicating to which region each point belongs to:

julia
regions_mat = map(Iterators.product(raster_arr.lon, raster_arr.lat)) do (lon, lat)
+    1 <= lon < 10 && 1 <= lat < 5 && return "A"
+    1 <= lon < 10 && 5 <= lat < 10 && return "B"
+    10 <= lon < 15 && 1 <= lat < 5 && return "C"
+    return "D"
+end
+regions_mat = DimArray(regions_mat, (raster_arr.lon, raster_arr.lat))
┌ 10×15 DimArray{String, 2} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0   1.28571  1.57143  1.85714  …  4.14286  4.42857  4.71429  5.0
+  1.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  2.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  3.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  4.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  5.0   "A"   "A"      "A"      "A"     …   "A"      "A"      "A"      "B"
+  6.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  7.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  8.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  9.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+ 10.0   "C"   "C"      "C"      "C"     …   "C"      "C"      "C"      "D"

which has the same spatial dimensions as the raster array at any given point in time:

julia
DimArray(raster_arr[time = 1])
┌ 10×15 DimArray{Float64, 2} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0       1.28571   1.57143    …  4.42857   4.71429   5.0
+  1.0  0.17593   0.417937  0.0723492     0.178603  0.781773  0.875658
+  2.0  0.701332  0.15394   0.685454      0.372761  0.984803  0.472308
+  3.0  0.120997  0.829062  0.684389      0.463503  0.840389  0.536399
+  ⋮                                   ⋱                      ⋮
+  8.0  0.145747  0.432286  0.465103      0.889583  0.514979  0.671662
+  9.0  0.538981  0.497189  0.167676      0.595405  0.752417  0.93986
+ 10.0  0.824354  0.376135  0.551732   …  0.101524  0.121947  0.508557

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+points_of_regions = map(enumerate(regions)) do (i,region)
+    region => findall(isequal(region), regions_mat)
+end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
+  "A" => [CartesianIndex(1, 1), CartesianIndex(2, 1), CartesianIndex(3, 1), Car…
+  "B" => [CartesianIndex(1, 15), CartesianIndex(2, 15), CartesianIndex(3, 15), …
+  "C" => [CartesianIndex(10, 1), CartesianIndex(10, 2), CartesianIndex(10, 3), …
+  "D" => [CartesianIndex(10, 15)]

Finally, we can transform the entire raster array:

julia
vector_array = mapCube(
+    raster_arr,
+    indims=InDims("lon", "lat"),
+    outdims=OutDims(Dim{:region}(regions))
+) do xout, xin
+    for (region_pos, points) in enumerate(points_of_regions.vals)
+        # aggregate values of points in the current region at the current date
+        xout[region_pos] = sum(view(xin, points))
+    end
+end
┌ 4×30 YAXArray{Union{Missing, Float64}, 2} ┐
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ region Categorical{String} ["A", "B", "C", "D"] ForwardOrdered,
+  → time   Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

This gives us a vector array with only one spatial dimension, i.e. the region. Note that we still have 30 points in time. The transformation was applied for each date separately.

Hereby, xin is a 10x15 array representing a map at a given time and xout is a 4 element vector of missing values initially representing the 4 regions at that date. Then, we set each output element by the sum of all corresponding points

Distributed Computation

All map methods apply a function on all elements of all non-input dimensions separately. This allows to run each map function call in parallel. For example, we can execute each date of a time series in a different CPU thread during spatial aggregation.

The following code does a time mean over all grid points using multiple CPUs of a local machine:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Distributed
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
+
+addprocs(2)
+
+@everywhere begin
+  using YAXArrays
+  using Zarr
+  using Statistics
+end
+
+@everywhere function mymean(output, pixel)
+  @show "doing a mean"
+     output[:] .= mean(pixel)
+end
+
+mapCube(mymean, a, indims=InDims("time"), outdims=OutDims())

In the last example, mapCube was used to map the mymean function. mapslices is a convenient function that can replace mapCube, where you can omit defining an extra function with the output argument as an input (e.g. mymean). It is possible to simply use mapslice

julia
mapslices(mean  skipmissing, a, dims="time")

It is also possible to distribute easily the workload on a cluster, with little modification to the code. To do so, we use the ClusterManagers package.

julia
using Distributed
+using ClusterManagers
+addprocs(SlurmManager(10))
`,138)]))}const o=i(p,[["render",l]]);export{g as __pageData,o as default}; diff --git a/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.lean.js b/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.lean.js new file mode 100644 index 00000000..cf7c9119 --- /dev/null +++ b/v0.6.0/assets/UserGuide_compute.md.Cw7KNL6a.lean.js @@ -0,0 +1,392 @@ +import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Compute YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/compute.md","filePath":"UserGuide/compute.md","lastUpdated":null}'),p={name:"UserGuide/compute.md"};function l(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Compute YAXArrays

This section describes how to create new YAXArrays by performing operations on them.

Let's start by creating an example dataset:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.8638599930441428
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2[1,2,3] == a[1,2,3] + 5
true

map

Apply a function on every element of an array individually:

julia
offset = 5
+map(a) do x
+    (x + offset) / 2 * 3
+end
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This keeps all dimensions unchanged. Note, that here we can not access neighboring elements. In this case, we can use mapslices or mapCube instead. Each element of the array is processed individually.

The code runs very fast, because map applies the function lazily. Actual computation will be performed only on demand, e.g. when elements were explicitly requested or further computations were performed.

mapslices

Reduce the time dimension by calculating the average value of all points in time:

julia
import Statistics: mean
+mapslices(mean, a, dims="Time")
┌ 10×15 YAXArray{Union{Missing, Float64}, 2} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘

There is no time dimension left, because there is only one value left after averaging all time steps. We can also calculate spatial means resulting in one value per time step:

julia
mapslices(mean, a, dims=("lat", "lon"))
┌ 30-element YAXArray{Union{Missing, Float64}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

mapCube

mapCube is the most flexible way to apply a function over subsets of an array. Dimensions may be added or removed.

Operations over several YAXArrays

Here, we will define a simple function, that will take as input several YAXArrays. But first, let's load the necessary packages.

julia
using YAXArrays, Zarr
+using YAXArrays: YAXArrays as YAX
+using Dates

Define function in space and time

julia
f(lo, la, t) = (lo + la + Dates.dayofyear(t))
f (generic function with 1 method)

now, mapCube requires this function to be wrapped as follows

julia
function g(xout, lo, la, t)
+    xout .= f.(lo, la, t)
+end
g (generic function with 1 method)

INFO

Note the . after f, this is because we will slice across time, namely, the function is broadcasted along this dimension.

Here, we do create YAXArrays only with the desired dimensions as

julia
julia> lon_yax = YAXArray(lon(range(1, 15)))
15-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lon Sampled{Int64} 1:15 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 120.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> lat_yax = YAXArray(lat(range(1, 10)))
10-element YAXArray{Int64, 1}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 80.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

And a time Cube's Axis

julia
tspan = Date("2022-01-01"):Day(1):Date("2022-01-30")
+time_yax = YAXArray(YAX.time(tspan))
┌ 30-element YAXArray{Date, 1} ┐
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the following can be extended to arbitrary YAXArrays with additional data and dimensions.

Let's generate a new cube using mapCube and saving the output directly into disk.

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims(), InDims(), InDims("time")),
+           outdims = OutDims("time", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
30×15×10 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

"time axis goes first"

Note that currently the time axis in the output cube goes first.

Check that it is working

julia
julia> gen_cube.data[1, :, :]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

but, we can generate a another cube with a different output order as follows

julia
julia> gen_cube = mapCube(g, (lon_yax, lat_yax, time_yax);
+           indims = (InDims("lon"), InDims(), InDims()),
+           outdims = OutDims("lon", overwrite=true, path="my_gen_cube.zarr", backend=:zarr,
+           outtype = Float32)
+           # max_cache=1e9
+       )
15×10×30 YAXArray{Union{Missing, Float32}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Int64} 1:15 ForwardOrdered Regular Points,
+lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "missing_value" => 1.0f32
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 17.58 KB
+└──────────────────────────────────────────────────────────────────────────────┘

INFO

Note that now the broadcasted dimension is lon.

we can see this by slicing on the last dimension now

julia
gen_cube.data[:, :, 1]
15×10 Matrix{Union{Missing, Float32}}:
+  3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0
+  4.0   5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0
+  5.0   6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0
+  6.0   7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0
+  7.0   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0
+  8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
+  9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0
+ 10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0
+ 11.0  12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0
+ 12.0  13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0
+ 13.0  14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0
+ 14.0  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0
+ 15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
+ 16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0
+ 17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0  25.0  26.0

which outputs the same as the gen_cube.data[1, :, :] called above.

OutDims and YAXArray Properties

Here, we will consider different scenarios, namely how we deal with different input cubes and how to specify the output ones. We will illustrate this with the following test example and the subsequent function definitions.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Zarr
+using Random
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(range(1, 4, length=4)),
+    lat(range(1, 3, length=3)),
+    Variables(["a", "b"])
+)
+
+Random.seed!(123)
+data = rand(1:5, 5, 4, 3, 2)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3×2 YAXArray{Int64, 4} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

One InDims to many OutDims

In the following function, note how the outputs are defined first and the inputs later.

julia
function one_to_many(xout_one, xout_two, xout_flat, xin_one)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2.(xin_one)
+    xout_flat .= sum(xin_one)
+    return nothing
+end
+
+f1(xin) = xin + 1
+f2(xin) = xin + 2
f2 (generic function with 1 method)

now, we define InDims and OutDims:

julia
indims_one   = InDims("Time")
+# outputs dimension
+properties_one = Dict{String, Any}("name" => "plus_one")
+properties_two = Dict{String, Any}("name" => "plus_two")
+
+outdims_one = OutDims("Time"; properties=properties_one)
+outdims_two = OutDims("Time"; properties=properties_two)
+outdims_flat = OutDims(;) # it will get the default \`layer\` name if open as dataset
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(one_to_many, yax_test,
+    indims = indims_one,
+    outdims = (outdims_one, outdims_two, outdims_flat));

let's see the second output

julia
ds[2]
┌ 5×4×3×2 YAXArray{Union{Missing, Int64}, 4} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time      Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 1 entry:
+  "name" => "plus_two"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Many InDims to many OutDims

Let's consider a second test set

julia
properties_2d = Dict("description" => "2d dimensional test cube")
+yax_2d = YAXArray(axlist[2:end], rand(-1:1, 4, 3, 2), properties_2d)
┌ 4×3×2 YAXArray{Int64, 3} ┐
+├──────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ lon       Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  → lat       Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
+  ↗ Variables Categorical{String} ["a", "b"] ForwardOrdered
+├─────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "2d dimensional test cube"
+├─────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 192.0 bytes
+└─────────────────────────────────────────────────────────────────────────┘

The function definitions operating in this case are as follows

julia
function many_to_many(xout_one, xout_two, xout_flat, xin_one, xin_two, xin_drei)
+    xout_one .= f1.(xin_one)
+    xout_two .= f2mix.(xin_one, xin_two)
+    xout_flat .= sum(xin_drei) # this will reduce the time dimension if we set outdims = OutDims()
+    return nothing
+end
+f2mix(xin_xyt, xin_xy) = xin_xyt - xin_xy
f2mix (generic function with 1 method)

Specify path in OutDims

julia
indims_one   = InDims("Time")
+indims_2d   = InDims() # ? it matches only to the other 2 dimensions and uses the same values for each time step
+properties = Dict{String, Any}("name"=> "many_to_many_two")
+outdims_one = OutDims("Time")
+outdims_two = OutDims("Time"; path = "test_mm.zarr", properties)
+outdims_flat = OutDims()
OutDims((), :auto, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}(), false, Array, :input, 1)
julia
ds = mapCube(many_to_many, (yax_test, yax_2d, yax_test),
+    indims = (indims_one, indims_2d, indims_one),
+    outdims = (outdims_one, outdims_two, outdims_flat));

And we can open the one that was saved directly to disk.

julia
ds_mm = open_dataset("test_mm.zarr")
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{DateTime} [2022-01-01T00:00:00, …, 2022-01-05T00:00:00] ForwardOrdered Irregular Points,
+  → lon  Sampled{Float64} 1.0:1.0:4.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points)
+
+Variables: 
+a, b

Different InDims names

Here, the goal is to operate at the pixel level (longitude, latitude), and then apply the corresponding function to the extracted values. Consider the following toy cubes:

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (lon(1:4), lat(1:3), Dim{:depth}(1:7),)
+yax_2d = YAXArray(axlist, rand(-3.0:0.0, 4, 3, 7))
┌ 4×3×7 YAXArray{Float64, 3} ┐
+├────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon   Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  → lat   Sampled{Int64} 1:3 ForwardOrdered Regular Points,
+  ↗ depth Sampled{Int64} 1:7 ForwardOrdered Regular Points
+├───────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├───────────────────────────────────────── loaded in memory ┤
+  data size: 672.0 bytes
+└───────────────────────────────────────────────────────────┘

and

julia
Random.seed!(123)
+data = rand(3.0:5.0, 5, 4, 3)
+
+axlist = (YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-05")),
+    lon(1:4), lat(1:3),)
+
+properties = Dict("description" => "multi dimensional test cube")
+yax_test = YAXArray(axlist, data, properties)
┌ 5×4×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 1 entry:
+  "description" => "multi dimensional test cube"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

and the corresponding functions

julia
function mix_time_depth(xin_xyt, xin_xyz)
+    s = sum(abs.(xin_xyz))
+    return xin_xyt.^2 .+ s
+end
+
+function time_depth(xout, xin_one, xin_two)
+    xout .= mix_time_depth(xin_one, xin_two)
+    # Note also that there is no dot anymore in the function application!
+    return nothing
+end
time_depth (generic function with 1 method)

with the final mapCube operation as follows

julia
ds = mapCube(time_depth, (yax_test, yax_2d),
+    indims = (InDims("Time"), InDims("depth")), # ? anchor dimensions and then map over the others.
+    outdims = OutDims("Time"))
┌ 5×4×3 YAXArray{Union{Missing, Float64}, 3} ┐
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-05") ForwardOrdered Regular Points,
+  → lon  Sampled{Int64} 1:4 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Int64} 1:3 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Creating a vector array

Here we transform a raster array with spatial dimension lat and lon into a vector array having just one spatial dimension i.e. region. First, create the raster array:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+raster_arr = YAXArray(axlist, data)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Then, create a Matrix with the same spatial dimensions indicating to which region each point belongs to:

julia
regions_mat = map(Iterators.product(raster_arr.lon, raster_arr.lat)) do (lon, lat)
+    1 <= lon < 10 && 1 <= lat < 5 && return "A"
+    1 <= lon < 10 && 5 <= lat < 10 && return "B"
+    10 <= lon < 15 && 1 <= lat < 5 && return "C"
+    return "D"
+end
+regions_mat = DimArray(regions_mat, (raster_arr.lon, raster_arr.lat))
┌ 10×15 DimArray{String, 2} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0   1.28571  1.57143  1.85714  …  4.14286  4.42857  4.71429  5.0
+  1.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  2.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  3.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  4.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  5.0   "A"   "A"      "A"      "A"     …   "A"      "A"      "A"      "B"
+  6.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  7.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  8.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+  9.0   "A"   "A"      "A"      "A"         "A"      "A"      "A"      "B"
+ 10.0   "C"   "C"      "C"      "C"     …   "C"      "C"      "C"      "D"

which has the same spatial dimensions as the raster array at any given point in time:

julia
DimArray(raster_arr[time = 1])
┌ 10×15 DimArray{Float64, 2} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────────────────┘
+  ↓ →  1.0       1.28571   1.57143    …  4.42857   4.71429   5.0
+  1.0  0.17593   0.417937  0.0723492     0.178603  0.781773  0.875658
+  2.0  0.701332  0.15394   0.685454      0.372761  0.984803  0.472308
+  3.0  0.120997  0.829062  0.684389      0.463503  0.840389  0.536399
+  ⋮                                   ⋱                      ⋮
+  8.0  0.145747  0.432286  0.465103      0.889583  0.514979  0.671662
+  9.0  0.538981  0.497189  0.167676      0.595405  0.752417  0.93986
+ 10.0  0.824354  0.376135  0.551732   …  0.101524  0.121947  0.508557

Now we calculate the list of corresponding points for each region. This will be re-used for each point in time during the final mapCube. In addition, this avoids the allocation of unnecessary memory.

julia
regions = ["A", "B", "C", "D"]
+points_of_regions = map(enumerate(regions)) do (i,region)
+    region => findall(isequal(region), regions_mat)
+end |> Dict |> sort
OrderedCollections.OrderedDict{String, Vector{CartesianIndex{2}}} with 4 entries:
+  "A" => [CartesianIndex(1, 1), CartesianIndex(2, 1), CartesianIndex(3, 1), Car…
+  "B" => [CartesianIndex(1, 15), CartesianIndex(2, 15), CartesianIndex(3, 15), …
+  "C" => [CartesianIndex(10, 1), CartesianIndex(10, 2), CartesianIndex(10, 3), …
+  "D" => [CartesianIndex(10, 15)]

Finally, we can transform the entire raster array:

julia
vector_array = mapCube(
+    raster_arr,
+    indims=InDims("lon", "lat"),
+    outdims=OutDims(Dim{:region}(regions))
+) do xout, xin
+    for (region_pos, points) in enumerate(points_of_regions.vals)
+        # aggregate values of points in the current region at the current date
+        xout[region_pos] = sum(view(xin, points))
+    end
+end
┌ 4×30 YAXArray{Union{Missing, Float64}, 2} ┐
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ region Categorical{String} ["A", "B", "C", "D"] ForwardOrdered,
+  → time   Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 960.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

This gives us a vector array with only one spatial dimension, i.e. the region. Note that we still have 30 points in time. The transformation was applied for each date separately.

Hereby, xin is a 10x15 array representing a map at a given time and xout is a 4 element vector of missing values initially representing the 4 regions at that date. Then, we set each output element by the sum of all corresponding points

Distributed Computation

All map methods apply a function on all elements of all non-input dimensions separately. This allows to run each map function call in parallel. For example, we can execute each date of a time series in a different CPU thread during spatial aggregation.

The following code does a time mean over all grid points using multiple CPUs of a local machine:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using Dates
+using Distributed
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a = YAXArray(axlist, data, properties)
+
+addprocs(2)
+
+@everywhere begin
+  using YAXArrays
+  using Zarr
+  using Statistics
+end
+
+@everywhere function mymean(output, pixel)
+  @show "doing a mean"
+     output[:] .= mean(pixel)
+end
+
+mapCube(mymean, a, indims=InDims("time"), outdims=OutDims())

In the last example, mapCube was used to map the mymean function. mapslices is a convenient function that can replace mapCube, where you can omit defining an extra function with the output argument as an input (e.g. mymean). It is possible to simply use mapslice

julia
mapslices(mean  skipmissing, a, dims="time")

It is also possible to distribute easily the workload on a cluster, with little modification to the code. To do so, we use the ClusterManagers package.

julia
using Distributed
+using ClusterManagers
+addprocs(SlurmManager(10))
`,138)]))}const o=i(p,[["render",l]]);export{g as __pageData,o as default}; diff --git a/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.js b/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.js new file mode 100644 index 00000000..95f9bd08 --- /dev/null +++ b/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.js @@ -0,0 +1,46 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),t={name:"UserGuide/convert.md"};function p(l,s,h,r,k,d){return e(),i("div",null,s[0]||(s[0]=[n(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
+
+m = rand(5,10)
+a = YAXArray(m)
┌ 5×10 YAXArray{Float64, 2} ┐
+├───────────────────────────┴─────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
+ 0.265797  0.789891  0.611084  0.845983  …  0.918555  0.870826   0.348362
+ 0.665723  0.241882  0.426519  0.581312     0.949935  0.0214057  0.152534
+ 0.83556   0.456765  0.197238  0.645758     0.74732   0.652339   0.935631
+ 0.337926  0.151146  0.673373  0.169284     0.75269   0.166212   0.0358348
+ 0.594514  0.364288  0.78467   0.830391     0.128204  0.174934   0.0210077

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+
+lon, lat = X(25:1:30), Y(25:1:30)
+time = Ti(2000:2024)
+ras = Raster(rand(lon, lat, time))
+a = YAXArray(dims(ras), ras.data)
julia
ras2 = Raster(a)

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+using YAXArrayBase
+
+dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
+a = yaxconvert(YAXArray, dim_arr)
┌ 5×6 YAXArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────┘

Convert YAXArray to DimArray:

julia
dim_arr2 = yaxconvert(DimArray, a)
┌ 5×6 DimArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────┘
+ ↓ →  10.0       11.0        12.0        13.0       14.0       15.0
+ 1     0.862644   0.872575    0.0620649   0.193109   0.475725   0.953391
+ 2     0.203714   0.770949    0.731779    0.71314    0.687891   0.435994
+ 3     0.492817   0.718667    0.0702532   0.926096   0.225542   0.100622
+ 4     0.268675   0.0566881   0.916686    0.973332   0.744521   0.052264
+ 5     0.540514   0.215973    0.617023    0.796375   0.13205    0.366625

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,23)]))}const g=a(t,[["render",p]]);export{c as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.lean.js b/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.lean.js new file mode 100644 index 00000000..95f9bd08 --- /dev/null +++ b/v0.6.0/assets/UserGuide_convert.md.BrjNUsxl.lean.js @@ -0,0 +1,46 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const c=JSON.parse('{"title":"Convert YAXArrays","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/convert.md","filePath":"UserGuide/convert.md","lastUpdated":null}'),t={name:"UserGuide/convert.md"};function p(l,s,h,r,k,d){return e(),i("div",null,s[0]||(s[0]=[n(`

Convert YAXArrays

This section describes how to convert variables from types of other Julia packages into YAXArrays and vice versa.

WARNING

YAXArrays is designed to work with large datasets that are way larger than the memory. However, most types are designed to work in memory. Those conversions are only possible if the entire dataset fits into memory. In addition, metadata might be lost during conversion.

Convert Base.Array

Convert Base.Array to YAXArray:

julia
using YAXArrays
+
+m = rand(5,10)
+a = YAXArray(m)
┌ 5×10 YAXArray{Float64, 2} ┐
+├───────────────────────────┴─────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

Convert YAXArray to Base.Array:

julia
m2 = collect(a.data)
5×10 Matrix{Float64}:
+ 0.265797  0.789891  0.611084  0.845983  …  0.918555  0.870826   0.348362
+ 0.665723  0.241882  0.426519  0.581312     0.949935  0.0214057  0.152534
+ 0.83556   0.456765  0.197238  0.645758     0.74732   0.652339   0.935631
+ 0.337926  0.151146  0.673373  0.169284     0.75269   0.166212   0.0358348
+ 0.594514  0.364288  0.78467   0.830391     0.128204  0.174934   0.0210077

Convert Raster

A Raster as defined in Rasters.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types:

julia
using Rasters
+
+lon, lat = X(25:1:30), Y(25:1:30)
+time = Ti(2000:2024)
+ras = Raster(rand(lon, lat, time))
+a = YAXArray(dims(ras), ras.data)
julia
ras2 = Raster(a)

Convert DimArray

A DimArray as defined in DimensionalData.jl has a same supertype of a YAXArray, i.e. AbstractDimArray, allowing easy conversion between those types.

Convert DimArray to YAXArray:

julia
using DimensionalData
+using YAXArrayBase
+
+dim_arr = rand(X(1:5), Y(10.0:15.0), metadata = Dict{String, Any}())
+a = yaxconvert(YAXArray, dim_arr)
┌ 5×6 YAXArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────── loaded in memory ┤
+  data size: 240.0 bytes
+└──────────────────────────────────────────────────────────────────┘

Convert YAXArray to DimArray:

julia
dim_arr2 = yaxconvert(DimArray, a)
┌ 5×6 DimArray{Float64, 2} ┐
+├──────────────────────────┴───────────────────────────────── dims ┐
+  ↓ X Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 10.0:1.0:15.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+└──────────────────────────────────────────────────────────────────┘
+ ↓ →  10.0       11.0        12.0        13.0       14.0       15.0
+ 1     0.862644   0.872575    0.0620649   0.193109   0.475725   0.953391
+ 2     0.203714   0.770949    0.731779    0.71314    0.687891   0.435994
+ 3     0.492817   0.718667    0.0702532   0.926096   0.225542   0.100622
+ 4     0.268675   0.0566881   0.916686    0.973332   0.744521   0.052264
+ 5     0.540514   0.215973    0.617023    0.796375   0.13205    0.366625

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

`,23)]))}const g=a(t,[["render",p]]);export{c as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.js b/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.js new file mode 100644 index 00000000..a9b48e2d --- /dev/null +++ b/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.js @@ -0,0 +1,48 @@ +import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+a1 = YAXArray(rand(10, 20, 5))
┌ 10×20×5 YAXArray{Float64, 3} ┐
+├──────────────────────────────┴───────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 7.81 KB
+└──────────────────────────────────────────────────────────────────────┘

The dimensions have only generic names, e.g. Dim_1 and only integer values. We can also specify the dimensions with custom names enabling easier access:

julia
using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data2 = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a2 = YAXArray(axlist, data2, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2.properties
Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
julia
a2.axes
(↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+→ lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)

Create a Dataset

julia
data3 = rand(30, 10, 15)
+a3 = YAXArray(axlist, data3, properties)
+
+arrays = Dict(:a2 => a2, :a3 => a3)
+ds = Dataset(; properties, arrays...)
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)
+
+Variables: 
+a2, a3
+
+Properties: Dict(:origin => "user guide")
`,16)]))}const o=a(e,[["render",p]]);export{g as __pageData,o as default}; diff --git a/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.lean.js b/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.lean.js new file mode 100644 index 00000000..a9b48e2d --- /dev/null +++ b/v0.6.0/assets/UserGuide_create.md.BHpYpbEJ.lean.js @@ -0,0 +1,48 @@ +import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse('{"title":"Create YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/create.md","filePath":"UserGuide/create.md","lastUpdated":null}'),e={name:"UserGuide/create.md"};function p(l,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Create YAXArrays and Datasets

This section describes how to create arrays and datasets by filling values directly.

Create a YAXArray

We can create a new YAXArray by filling the values directly:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+a1 = YAXArray(rand(10, 20, 5))
┌ 10×20×5 YAXArray{Float64, 3} ┐
+├──────────────────────────────┴───────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(20) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 7.81 KB
+└──────────────────────────────────────────────────────────────────────┘

The dimensions have only generic names, e.g. Dim_1 and only integer values. We can also specify the dimensions with custom names enabling easier access:

julia
using Dates
+
+axlist = (
+    YAX.time(Date("2022-01-01"):Day(1):Date("2022-01-30")),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+)
+data2 = rand(30, 10, 15)
+properties = Dict(:origin => "user guide")
+a2 = YAXArray(axlist, data2, properties)
┌ 30×10×15 YAXArray{Float64, 3} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 35.16 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
a2.properties
Dict{Symbol, String} with 1 entry:
+  :origin => "user guide"
julia
a2.axes
(↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+→ lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)

Create a Dataset

julia
data3 = rand(30, 10, 15)
+a3 = YAXArray(axlist, data3, properties)
+
+arrays = Dict(:a2 => a2, :a3 => a3)
+ds = Dataset(; properties, arrays...)
YAXArray Dataset
+Shared Axes: 
+  (↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
+  → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points)
+
+Variables: 
+a2, a3
+
+Properties: Dict(:origin => "user guide")
`,16)]))}const o=a(e,[["render",p]]);export{g as __pageData,o as default}; diff --git a/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.js b/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.js new file mode 100644 index 00000000..2e9d89da --- /dev/null +++ b/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.js @@ -0,0 +1,364 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const t="/YAXArrays.jl/v0.6.0/assets/lnenoem.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
10×10×5 YAXArray{Float64, 3}
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 3.91 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> caxes(c) # former way of doing it
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

WARNING

To get the axes of a YAXArray use the dims function instead of the caxes function

julia
julia> dims(c)
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

INFO

Also, use DD.rebuild(c, values) to copy axes from c and build a new cube but with different values.

rebuild

As an example let's consider the following

julia
using YAXArrays
+using DimensionalData
+
+c = YAXArray(ones(Int, 10,10))
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────┘

then creating a new c with the same structure (axes) but different values is done by

julia
julia> new_c = rebuild(c, rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the type is now Float64. Or, we could create a new structure but using the dimensions from yax explicitly

julia
julia> c_c = YAXArray(dims(c), rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

which achieves the same goal as rebuild.

Obtain values from axes and data from the cube

There are two options to collect values from axes. In this examples the axis ranges from 1 to 10.

These two examples bring the same result

julia
collect(getAxis("Dim_1", c).val)
+collect(c.axes[1].val)
10-element Vector{Int64}:
+  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10

to collect data from a cube works exactly the same as doing it from an array

julia
julia> c[:, :, 1]
10×10 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I concatenate cubes

It is possible to concatenate several cubes that shared the same dimensions using the [concatenatecubes]@ref function.

Let's create two dummy cubes

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+axlist = (
+    YAX.time(range(1, 20, length=20)),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15))
+    )
+
+data1 = rand(20, 10, 15)
+ds1 = YAXArray(axlist, data1)
+
+data2 = rand(20, 10, 15)
+ds2 = YAXArray(axlist, data2)

Now we can concatenate ds1 and ds2:

julia
julia> dsfinal = concatenatecubes([ds1, ds2], Dim{:Variables}(["var1", "var2"]))
20×10×15×2 YAXArray{Float64, 4}
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+time      Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon       Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat       Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+Variables Categorical{String} ["var1", "var2"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 46.88 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I subset a YAXArray ( Cube ) or Dataset?

These are the three main datatypes provided by the YAXArrays libray. You can find a description of them here. A Cube is no more than a YAXArray, so, we will not explicitly tell about a Cube.

Subsetting a YAXArray

Let's start by creating a dummy YAXArray.

Firstly, load the required libraries

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data, however the intervals notation should be used instead, i.e. \`a .. b\`.

Define the time span of the YAXArray

julia
t = Date("2020-01-01"):Month(1):Date("2022-12-31")
Date("2020-01-01"):Dates.Month(1):Date("2022-12-01")

create YAXArray axes

julia
axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
(↓ Lon  1:10,
+→ Lat  1:10,
+↗ Time Date("2020-01-01"):Dates.Month(1):Date("2022-12-01"))

create the YAXArray

julia
y = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
┌ 10×10×36 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 28.12 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Now we subset the YAXArray by any dimension.

Subset YAXArray by years

julia
ytime = y[Time=Between(Date(2021,1,1), Date(2021,12,31))]
┌ 10×10×12 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-01-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by a specific date

julia
ytime2 = y[Time=At(Date("2021-05-01"))]
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────── dims ┐
+  ↓ Lon Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────┘

Subset YAXArray by a date range

julia
ytime3 = y[Time=Date("2021-05-01") .. Date("2021-12-01")]
┌ 10×10×8 YAXArray{Int64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-05-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 6.25 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by longitude and latitude

julia
ylonlat = y[Lon=1 .. 5, Lat=5 .. 10]
┌ 5×6×36 YAXArray{Int64, 3} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 8.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subsetting a Dataset

In a dataset, we can have several variables (YAXArrays) that share some or all of their dimensions.

Subsetting a Dataset whose variables share all their dimensions

This works for YAXArrays. Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
+
+var1 = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
+var2 = YAXArray(axes, reshape((1:3600)*5, (10, 10, 36)))
+
+ds = Dataset(; var1=var1, var2=var2)
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2
julia
ds_lonlat = ds[Lon=1 .. 5, Lat=5 .. 10]
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2

Subsetting a Dataset whose variables share some but not all of their dimensions

In this case, if we subset by the common dimension/s, this works the same as for YAXArrays, Cubes, and datasets that share all their dimensions.

But we can also subset a variable by the values of another variable with which it shares some dimensions.

Warning

If your data is not loaded into memory, the selection will be too slow. So, you have load into memory, at least, the variable with which you make the selection.

Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" selector for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+common_axis = Dim{:points}(1:100)
+time_axis =   YAX.Time(t)
+
+# Note that longitudes and latitudes are not dimensions, but YAXArrays
+longitudes = YAXArray((common_axis,), rand(1:369, 100)) # 100 random values taken from 1 to 359
+latitudes  = YAXArray((common_axis,), rand(0:90, 100))  # 100 random values taken from 0 to 90
+temperature = YAXArray((common_axis, time_axis), rand(-40:40, (100, 36)))
+
+ds = Dataset(; longitudes=longitudes, latitudes=latitudes, temperature=temperature)
YAXArray Dataset
+Shared Axes: 
+  (↓ points Sampled{Int64} 1:100 ForwardOrdered Regular Points)
+
+Variables: 
+latitudes, longitudes
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

Select all points between 20ºN and 85ºN, and 0ºE to 180ºE

julia
ds_subset = ds[points = Where(p-> ds["latitudes"][p]  >= 20 && ds["latitudes"][p]  <= 80 &&
+                             ds["longitudes"][p] >= 0  && ds["longitudes"][p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+longitudes_yasxa = readcubedata(ds["longitudes"])
+ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
+                             longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Cubes with more than 3 dimensions

julia
julia> map((x, y) -> x * y, dsfinal[Variables=At("var1")], dsfinal[Variables=At("var2")])
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

To add some complexity, we will multiply each value for π and then divided for the sum of each time step. We will use the ds1 cube for this purpose.

julia
julia> mapslices(ds1, dims=("Lon", "Lat")) do xin
+           (xin * π) ./ maximum(skipmissing(xin))
+       end
10×15×20 YAXArray{Union{Missing, Float64}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I use the CubeTable function?

The function "CubeTable" creates an iterable table and the result is a DataCube. It is therefore very handy for grouping data and computing statistics by class. It uses OnlineStats.jl to calculate statistics, and weighted statistics can be calculated as well.

Here we will use the ds1 Cube defined previously and we create a mask for data classification.

Cube containing a mask with classes 1, 2 and 3.

julia
julia> classes = YAXArray((getAxis("lon", dsfinal), getAxis("lat", dsfinal)), rand(1:3, 10, 15))
10×15 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
using GLMakie
+GLMakie.activate!()
+# This is how our classification map looks like
+fig, ax, obj = heatmap(classes;
+    colormap=Makie.Categorical(cgrad([:grey15, :orangered, :snow3])))
+cbar = Colorbar(fig[1,2], obj)
+fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
+using OnlineStats
+## visualization of the CubeTable
+c_tbl = DataFrame(t[1])
+first(c_tbl, 5)

In this line we calculate the Mean for each class

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes))
3-element YAXArray{Union{Missing, Float64}, 1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 24.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

We can also use more than one criteria for grouping the values. In the next example, the mean is calculated for each class and timestep.

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes, :time))
3×20 YAXArray{Union{Missing, Float64}, 2}
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points,
+time    Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I assign variable names to YAXArrays in a Dataset

One variable name

julia
julia> ds = YAXArrays.Dataset(; (:a => YAXArray(rand(10)),)...)
YAXArray Dataset
+Shared Axes:
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+a

Multiple variable names

julia
keylist = (:a, :b, :c)
+varlist = (YAXArray(rand(10)), YAXArray(rand(10,5)), YAXArray(rand(2,5)))
julia
julia> ds = YAXArrays.Dataset(; (keylist .=> varlist)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  b
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+  Variables: 
+  a
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  c

WARNING

You will not be able to save this dataset, first you will need to rename those dimensions with the same name but different values.

Ho do I construct a Dataset from a TimeArray

In this section we will use MarketData.jl and TimeSeries.jl to simulate some stocks.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using MarketData, TimeSeries
+
+stocks = Dict(:Stock1 => random_ohlcv(), :Stock2 => random_ohlcv(), :Stock3 => random_ohlcv())
+d_keys = keys(stocks)
KeySet for a Dict{Symbol, TimeSeries.TimeArray{Float64, 2, DateTime, Matrix{Float64}}} with 3 entries. Keys:
+  :Stock3
+  :Stock1
+  :Stock2

currently there is not direct support to obtain dims from a TimeArray, but we can code a function for it

julia
getTArrayAxes(ta::TimeArray) = (YAX.time(timestamp(ta)), Variables(colnames(ta)), );

then, we create the YAXArrays as

julia
yax_list = [YAXArray(getTArrayAxes(stocks[k]), values(stocks[k])) for k in d_keys];

and a Dataset with all stocks names

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock3
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock1
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock2

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+
+Variables: 
+Stock1, Stock2, Stock3

now they are printed together, showing that is exactly the same axis structure for all variables.

Create a YAXArray with unions containing Strings

julia
test_x = stack(Vector{Union{Int,String}}[[1, "Test"], [2, "Test2"]])
+yax_string = YAXArray(test_x)
┌ 2×2 YAXArray{Union{Int64, String}, 2} ┐
+├───────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 121.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

or simply with an Any type

julia
test_bool = ["Test1" 1 false; 2 "Test2" true; 1 2f0 1f2]
+yax_bool = YAXArray(test_bool)
┌ 3×3 YAXArray{Any, 2} ┐
+├──────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 172.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

WARNING

Note that although their creation is allowed, it is not possible to save these types into Zarr or NetCDF.

`,149)]))}const E=i(l,[["render",h]]);export{o as __pageData,E as default}; diff --git a/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.lean.js b/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.lean.js new file mode 100644 index 00000000..2e9d89da --- /dev/null +++ b/v0.6.0/assets/UserGuide_faq.md.Dszaf3B5.lean.js @@ -0,0 +1,364 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const t="/YAXArrays.jl/v0.6.0/assets/lnenoem.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
10×10×5 YAXArray{Float64, 3}
+├──────────────────────────────┴───────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 3.91 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> caxes(c) # former way of doing it
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

WARNING

To get the axes of a YAXArray use the dims function instead of the caxes function

julia
julia> dims(c)
(Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)

INFO

Also, use DD.rebuild(c, values) to copy axes from c and build a new cube but with different values.

rebuild

As an example let's consider the following

julia
using YAXArrays
+using DimensionalData
+
+c = YAXArray(ones(Int, 10,10))
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────┘

then creating a new c with the same structure (axes) but different values is done by

julia
julia> new_c = rebuild(c, rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

note that the type is now Float64. Or, we could create a new structure but using the dimensions from yax explicitly

julia
julia> c_c = YAXArray(dims(c), rand(10,10))
10×10 YAXArray{Float64, 2}
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

which achieves the same goal as rebuild.

Obtain values from axes and data from the cube

There are two options to collect values from axes. In this examples the axis ranges from 1 to 10.

These two examples bring the same result

julia
collect(getAxis("Dim_1", c).val)
+collect(c.axes[1].val)
10-element Vector{Int64}:
+  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10

to collect data from a cube works exactly the same as doing it from an array

julia
julia> c[:, :, 1]
10×10 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+Dim_1 Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I concatenate cubes

It is possible to concatenate several cubes that shared the same dimensions using the [concatenatecubes]@ref function.

Let's create two dummy cubes

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+axlist = (
+    YAX.time(range(1, 20, length=20)),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15))
+    )
+
+data1 = rand(20, 10, 15)
+ds1 = YAXArray(axlist, data1)
+
+data2 = rand(20, 10, 15)
+ds2 = YAXArray(axlist, data2)

Now we can concatenate ds1 and ds2:

julia
julia> dsfinal = concatenatecubes([ds1, ds2], Dim{:Variables}(["var1", "var2"]))
20×10×15×2 YAXArray{Float64, 4}
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+time      Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon       Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat       Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+Variables Categorical{String} ["var1", "var2"] ForwardOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 46.88 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I subset a YAXArray ( Cube ) or Dataset?

These are the three main datatypes provided by the YAXArrays libray. You can find a description of them here. A Cube is no more than a YAXArray, so, we will not explicitly tell about a Cube.

Subsetting a YAXArray

Let's start by creating a dummy YAXArray.

Firstly, load the required libraries

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data, however the intervals notation should be used instead, i.e. \`a .. b\`.

Define the time span of the YAXArray

julia
t = Date("2020-01-01"):Month(1):Date("2022-12-31")
Date("2020-01-01"):Dates.Month(1):Date("2022-12-01")

create YAXArray axes

julia
axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
(↓ Lon  1:10,
+→ Lat  1:10,
+↗ Time Date("2020-01-01"):Dates.Month(1):Date("2022-12-01"))

create the YAXArray

julia
y = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
┌ 10×10×36 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 28.12 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Now we subset the YAXArray by any dimension.

Subset YAXArray by years

julia
ytime = y[Time=Between(Date(2021,1,1), Date(2021,12,31))]
┌ 10×10×12 YAXArray{Int64, 3} ┐
+├─────────────────────────────┴────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-01-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by a specific date

julia
ytime2 = y[Time=At(Date("2021-05-01"))]
┌ 10×10 YAXArray{Int64, 2} ┐
+├──────────────────────────┴───────────────────────── dims ┐
+  ↓ Lon Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat Sampled{Int64} 1:10 ForwardOrdered Regular Points
+├──────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────── loaded in memory ┤
+  data size: 800.0 bytes
+└──────────────────────────────────────────────────────────┘

Subset YAXArray by a date range

julia
ytime3 = y[Time=Date("2021-05-01") .. Date("2021-12-01")]
┌ 10×10×8 YAXArray{Int64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2021-05-01"):Dates.Month(1):Date("2021-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 6.25 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subset YAXArray by longitude and latitude

julia
ylonlat = y[Lon=1 .. 5, Lat=5 .. 10]
┌ 5×6×36 YAXArray{Int64, 3} ┐
+├───────────────────────────┴──────────────────────────────────────────── dims ┐
+  ↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 8.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Subsetting a Dataset

In a dataset, we can have several variables (YAXArrays) that share some or all of their dimensions.

Subsetting a Dataset whose variables share all their dimensions

This works for YAXArrays. Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" option for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+axes = (Lon(1:10), Lat(1:10), YAX.Time(t))
+
+var1 = YAXArray(axes, reshape(1:3600, (10, 10, 36)))
+var2 = YAXArray(axes, reshape((1:3600)*5, (10, 10, 36)))
+
+ds = Dataset(; var1=var1, var2=var2)
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 1:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2
julia
ds_lonlat = ds[Lon=1 .. 5, Lat=5 .. 10]
YAXArray Dataset
+Shared Axes: 
+  (↓ Lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → Lat  Sampled{Int64} 5:10 ForwardOrdered Regular Points,
+  ↗ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+
+Variables: 
+var1, var2

Subsetting a Dataset whose variables share some but not all of their dimensions

In this case, if we subset by the common dimension/s, this works the same as for YAXArrays, Cubes, and datasets that share all their dimensions.

But we can also subset a variable by the values of another variable with which it shares some dimensions.

Warning

If your data is not loaded into memory, the selection will be too slow. So, you have load into memory, at least, the variable with which you make the selection.

Let's make an example.

julia
using YAXArrays
+using Dates # To generate the dates of the time axis
+using DimensionalData # To use the "Between" selector for selecting data
+
+t = Date("2020-01-01"):Month(1):Date("2022-12-31")
+common_axis = Dim{:points}(1:100)
+time_axis =   YAX.Time(t)
+
+# Note that longitudes and latitudes are not dimensions, but YAXArrays
+longitudes = YAXArray((common_axis,), rand(1:369, 100)) # 100 random values taken from 1 to 359
+latitudes  = YAXArray((common_axis,), rand(0:90, 100))  # 100 random values taken from 0 to 90
+temperature = YAXArray((common_axis, time_axis), rand(-40:40, (100, 36)))
+
+ds = Dataset(; longitudes=longitudes, latitudes=latitudes, temperature=temperature)
YAXArray Dataset
+Shared Axes: 
+  (↓ points Sampled{Int64} 1:100 ForwardOrdered Regular Points)
+
+Variables: 
+latitudes, longitudes
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ Time Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

Select all points between 20ºN and 85ºN, and 0ºE to 180ºE

julia
ds_subset = ds[points = Where(p-> ds["latitudes"][p]  >= 20 && ds["latitudes"][p]  <= 80 &&
+                             ds["longitudes"][p] >= 0  && ds["longitudes"][p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+longitudes_yasxa = readcubedata(ds["longitudes"])
+ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
+                             longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
+                             ) # Where
+              ] # ds
YAXArray Dataset
+Shared Axes: 
+None
+Variables with additional axes:
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  latitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
+  Variables: 
+  longitudes
+
+  Additional Axes: 
+  (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
+  → Time   Sampled{Date} Date("2020-01-01"):Dates.Month(1):Date("2022-12-01") ForwardOrdered Regular Points)
+  Variables: 
+  temperature

How do I apply map algebra?

Our next step is map algebra computations. This can be done effectively using the 'map' function. For example:

Multiplying cubes with only spatio-temporal dimensions

julia
julia> map((x, y) -> x * y, ds1, ds2)
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Cubes with more than 3 dimensions

julia
julia> map((x, y) -> x * y, dsfinal[Variables=At("var1")], dsfinal[Variables=At("var2")])
20×10×15 YAXArray{Float64, 3}
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

To add some complexity, we will multiply each value for π and then divided for the sum of each time step. We will use the ds1 cube for this purpose.

julia
julia> mapslices(ds1, dims=("Lon", "Lat")) do xin
+           (xin * π) ./ maximum(skipmissing(xin))
+       end
10×15×20 YAXArray{Union{Missing, Float64}, 3}
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+time Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 23.44 KB
+└──────────────────────────────────────────────────────────────────────────────┘

How do I use the CubeTable function?

The function "CubeTable" creates an iterable table and the result is a DataCube. It is therefore very handy for grouping data and computing statistics by class. It uses OnlineStats.jl to calculate statistics, and weighted statistics can be calculated as well.

Here we will use the ds1 Cube defined previously and we create a mask for data classification.

Cube containing a mask with classes 1, 2 and 3.

julia
julia> classes = YAXArray((getAxis("lon", dsfinal), getAxis("lat", dsfinal)), rand(1:3, 10, 15))
10×15 YAXArray{Int64, 2}
+├──────────────────────────┴───────────────────────────────────────────── dims ┐
+lon Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+lat Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 1.17 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
using GLMakie
+GLMakie.activate!()
+# This is how our classification map looks like
+fig, ax, obj = heatmap(classes;
+    colormap=Makie.Categorical(cgrad([:grey15, :orangered, :snow3])))
+cbar = Colorbar(fig[1,2], obj)
+fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
+using OnlineStats
+## visualization of the CubeTable
+c_tbl = DataFrame(t[1])
+first(c_tbl, 5)

In this line we calculate the Mean for each class

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes))
3-element YAXArray{Union{Missing, Float64}, 1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 24.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

We can also use more than one criteria for grouping the values. In the next example, the mean is calculated for each class and timestep.

julia
julia> fitcube = cubefittable(t, Mean, :values, by=(:classes, :time))
3×20 YAXArray{Union{Missing, Float64}, 2}
+├───────────────────────────────────────────┴──────────────────────────── dims ┐
+classes Sampled{Int64} [1, 2, 3] ForwardOrdered Irregular Points,
+time    Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 480.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

How do I assign variable names to YAXArrays in a Dataset

One variable name

julia
julia> ds = YAXArrays.Dataset(; (:a => YAXArray(rand(10)),)...)
YAXArray Dataset
+Shared Axes:
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+
+Variables: 
+a

Multiple variable names

julia
keylist = (:a, :b, :c)
+varlist = (YAXArray(rand(10)), YAXArray(rand(10,5)), YAXArray(rand(2,5)))
julia
julia> ds = YAXArrays.Dataset(; (keylist .=> varlist)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  b
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points)
+  Variables: 
+  a
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+  Variables: 
+  c

WARNING

You will not be able to save this dataset, first you will need to rename those dimensions with the same name but different values.

Ho do I construct a Dataset from a TimeArray

In this section we will use MarketData.jl and TimeSeries.jl to simulate some stocks.

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+using DimensionalData
+using MarketData, TimeSeries
+
+stocks = Dict(:Stock1 => random_ohlcv(), :Stock2 => random_ohlcv(), :Stock3 => random_ohlcv())
+d_keys = keys(stocks)
KeySet for a Dict{Symbol, TimeSeries.TimeArray{Float64, 2, DateTime, Matrix{Float64}}} with 3 entries. Keys:
+  :Stock3
+  :Stock1
+  :Stock2

currently there is not direct support to obtain dims from a TimeArray, but we can code a function for it

julia
getTArrayAxes(ta::TimeArray) = (YAX.time(timestamp(ta)), Variables(colnames(ta)), );

then, we create the YAXArrays as

julia
yax_list = [YAXArray(getTArrayAxes(stocks[k]), values(stocks[k])) for k in d_keys];

and a Dataset with all stocks names

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock3
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock1
+
+  Additional Axes: 
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+  Variables: 
+  Stock2

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+Shared Axes:
+  (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
+Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
+
+Variables: 
+Stock1, Stock2, Stock3

now they are printed together, showing that is exactly the same axis structure for all variables.

Create a YAXArray with unions containing Strings

julia
test_x = stack(Vector{Union{Int,String}}[[1, "Test"], [2, "Test2"]])
+yax_string = YAXArray(test_x)
┌ 2×2 YAXArray{Union{Int64, String}, 2} ┐
+├───────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 121.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

or simply with an Any type

julia
test_bool = ["Test1" 1 false; 2 "Test2" true; 1 2f0 1f2]
+yax_bool = YAXArray(test_bool)
┌ 3×3 YAXArray{Any, 2} ┐
+├──────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  summarysize: 172.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

WARNING

Note that although their creation is allowed, it is not possible to save these types into Zarr or NetCDF.

`,149)]))}const E=i(l,[["render",h]]);export{o as __pageData,E as default}; diff --git a/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.js b/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.js new file mode 100644 index 00000000..c27f0e2a --- /dev/null +++ b/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.js @@ -0,0 +1,208 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const t="/YAXArrays.jl/v0.6.0/assets/mmzaksu.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+using YAXArrays: YAXArrays as YAX
+using NetCDF
+using Downloads
+using Dates
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+filename = Downloads.download(url_path, "rasm.nc")
+ds_o = Cube(filename)
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
_FillValue = ds_o.properties["_FillValue"]
+ds = replace(ds_o[:,:,:], _FillValue => NaN) # load into memory and replace _FillValue by NaN
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

GroupBy: seasons

function weighted_seasons(ds) ... end
julia
function weighted_seasons(ds)
+    # calculate weights 
+    tempo = dims(ds, :time)
+    month_length = YAXArray((tempo,), daysinmonth.(tempo))
+    g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
+    sum_days = sum.(g_tempo, dims=:time)
+    weights = map(./, g_tempo, sum_days)
+    # unweighted seasons
+    g_ds = groupby(ds, YAX.time => seasons(; start=December))
+    mean_g = mean.(g_ds, dims=:time)
+    mean_g = dropdims.(mean_g, dims=:time)
+    # weighted seasons
+    g_dsW = broadcast_dims.(*, weights, g_ds)
+    weighted_g = sum.(g_dsW, dims = :time);
+    weighted_g = dropdims.(weighted_g, dims=:time)
+    # differences
+    diff_g = map(.-, weighted_g, mean_g)
+    seasons_g = lookup(mean_g, :time)
+    return mean_g, weighted_g, diff_g, seasons_g
+end

INFO

In what follows, note how we are referencing the time dimension via YAX.time. This approach is used to avoid name clashes with time (Time) from Base (Dates). For convenience, we have defined the Dimensions time and Time in YAXArrays.jl, which are only accessible when explicitly called.

Now, we continue with the groupby operations as usual

julia
julia> g_ds = groupby(ds, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Float64,2},1}
+├──────────────────────────────────────────────────┴───────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+x, y, time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  275×205×9 YAXArray
+ :Mar_Apr_May  275×205×9 YAXArray
+ :Jun_Jul_Aug  275×205×9 YAXArray
+ :Sep_Oct_Nov  275×205×9 YAXArray

And the mean per season is calculated as follows

julia
julia> mean_g = mean.(g_ds, dims=:time)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843;;;]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762;;;]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537;;;]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404;;;]

dropdims

Note that now the time dimension has length one, we can use dropdims to remove it

julia
julia> mean_g = dropdims.(mean_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404]

seasons

Due to the groupby function we will obtain new grouping names, in this case in the time dimension:

julia
seasons_g = lookup(mean_g, :time)
Categorical{Symbol} Unordered
+wrapping: 4-element Vector{Symbol}:
+ :Dec_Jan_Feb
+ :Mar_Apr_May
+ :Jun_Jul_Aug
+ :Sep_Oct_Nov

Next, we will weight this grouping by days/month in each group.

GroupBy: weight

Create a YAXArray for the month length

julia
tempo = dims(ds, :time)
+month_length = YAXArray((tempo,), daysinmonth.(tempo))
┌ 36-element YAXArray{Int64, 1} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 288.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now group it by season

julia
julia> g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Int64,0},1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  9-element YAXArray
+ :Mar_Apr_May  9-element YAXArray
+ :Jun_Jul_Aug  9-element YAXArray
+ :Sep_Oct_Nov  9-element YAXArray

Get the number of days per season

julia
julia> sum_days = sum.(g_tempo, dims=:time)
4-element DimArray{YAXArray{Int64, 1, DimensionalData.DimVector{Int64, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Tuple{}, Vector{Int64}, Symbol, DimensionalData.Dimensions.Lookups.NoMetadata}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  [270]
+ :Mar_Apr_May  [276]
+ :Jun_Jul_Aug  [276]
+ :Sep_Oct_Nov  [273]

weights

Weight the seasonal groups by sum_days

julia
julia> weights = map(./, g_tempo, sum_days)
4-element DimArray{YAXArray{Float64, 1, Vector{Float64}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1} groupby
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704]
+ :Mar_Apr_May     [0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319]
+ :Jun_Jul_Aug     [0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319]
+ :Sep_Oct_Nov     [0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989]

Verify that the sum per season is 1

julia
julia> sum.(weights)
4-element DimArray{Float64, 1}
+├────────────────────────────────┴─────────────────────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  1.0
+ :Mar_Apr_May  1.0
+ :Jun_Jul_Aug  1.0
+ :Sep_Oct_Nov  1.0

weighted seasons

Now, let's weight the seasons

julia
julia> g_dsW = broadcast_dims.(*, weights, g_ds)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.32149 1.33565; NaN NaN … 1.29564 1.32555; … ; NaN NaN … 1.3188 1.3169; NaN NaN … 1.17863 1.18434;;; NaN NaN … 1.29816 1.34218; NaN NaN … 1.30113 1.35483; … ; NaN NaN … 1.30142 1.31753; NaN NaN … 1.16258 1.17647;;; NaN NaN … 1.34549 1.37878; NaN NaN … 1.36836 1.41634; … ; NaN NaN … 1.34832 1.38364; NaN NaN … 1.17852 1.16713]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.87705 1.90365; NaN NaN … 2.30018 2.35432; … ; NaN NaN … 2.41049 2.43254; NaN NaN … 2.65105 2.69085;;; NaN NaN … 1.86457 1.90712; NaN NaN … 2.2894 2.34818; … ; NaN NaN … 2.3866 2.41241; NaN NaN … 2.61197 2.64976;;; NaN NaN … 1.89237 1.8984; NaN NaN … 2.29473 2.312; … ; NaN NaN … 2.36142 2.36126; NaN NaN … 2.56632 2.59085]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 3.21209 3.25153; NaN NaN … 3.23 3.28008; … ; NaN NaN … 3.12575 3.15532; NaN NaN … 3.2434 3.26274;;; NaN NaN … 3.17434 3.21699; NaN NaN … 3.18892 3.24375; … ; NaN NaN … 3.06755 3.1083; NaN NaN … 3.19241 3.22211;;; NaN NaN … 3.1437 3.15644; NaN NaN … 3.16631 3.18583; … ; NaN NaN … 3.03361 3.05846; NaN NaN … 3.16581 3.16824]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 2.97047 3.00388; NaN NaN … 2.77587 2.80759; … ; NaN NaN … 2.60175 2.60918; NaN NaN … 1.4947 1.52419;;; NaN NaN … 2.94534 2.97649; NaN NaN … 2.75891 2.79502; … ; NaN NaN … 2.57695 2.59212; NaN NaN … 1.46506 1.49909;;; NaN NaN … 2.9192 2.93743; NaN NaN … 2.7593 2.77687; … ; NaN NaN … 2.57873 2.63006; NaN NaN … 1.48367 1.50089]

apply a sum over the time dimension and drop it

julia
julia> weighted_g = sum.(g_dsW, dims = :time);
+
+julia> weighted_g = dropdims.(weighted_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1181 11.372; NaN NaN … 11.3069 11.5743]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1242 21.0057; NaN NaN … 21.4198 21.1644]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2747 27.9362; NaN NaN … 28.6122 28.0465]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.73 21.7341; NaN NaN … 21.986 21.959]

Calculate the differences

julia
julia> diff_g = map(.-, weighted_g, mean_g)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.019016 -0.0115514; NaN NaN … -0.0183003 -0.00990356]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.0121037 -0.0123091; NaN NaN … -0.0127077 -0.0117519]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.00709111 -0.00693713; NaN NaN … -0.00684233 -0.00722034]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 0.0180572 0.0182373; NaN NaN … 0.0178074 0.018571]

All the previous steps are equivalent to calling the function defined at the top:

julia
mean_g, weighted_g, diff_g, seasons_g = weighted_seasons(ds)

Once all calculations are done we can plot the results with Makie.jl as follows:

julia
using CairoMakie
+# define plot arguments/attributes
+colorrange = (-30,30)
+colormap = Reverse(:Spectral)
+highclip = :red
+lowclip = :grey15
+cb_label =  ds_o.properties["long_name"]
"Surface air temperature"
julia
with_theme(theme_ggplot2()) do
+    hm_o, hm_d, hm_w = nothing, nothing, nothing
+    # the figure
+    fig = Figure(; size = (850,500))
+    axs = [Axis(fig[i,j], aspect=DataAspect()) for i in 1:3, j in 1:4]
+    for (j, s) in enumerate(seasons_g)
+        hm_o = heatmap!(axs[1,j], mean_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_w = heatmap!(axs[2,j], weighted_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_d = heatmap!(axs[3,j], diff_g[time=At(s)]; colorrange=(-0.1,0.1), lowclip, highclip,
+            colormap=:diverging_bwr_20_95_c54_n256)
+    end
+    Colorbar(fig[1:2,5], hm_o, label=cb_label)
+    Colorbar(fig[3,5], hm_d, label="Tair")
+    hidedecorations!.(axs, grid=false, ticks=false, label=false)
+    # some labels
+    [axs[1,j].title = string.(s) for (j,s) in enumerate(seasons_g)]
+    Label(fig[0,1:5], "Seasonal Surface Air Temperature", fontsize=18, font=:bold)
+    axs[1,1].ylabel = "Unweighted"
+    axs[2,1].ylabel = "Weighted"
+    axs[3,1].ylabel = "Difference"
+    colgap!(fig.layout, 5)
+    rowgap!(fig.layout, 5)
+    fig
+end

which shows a good agreement with the results first published by Joe Hamman.

',66)]))}const N=i(l,[["render",p]]);export{y as __pageData,N as default}; diff --git a/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.lean.js b/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.lean.js new file mode 100644 index 00000000..c27f0e2a --- /dev/null +++ b/v0.6.0/assets/UserGuide_group.md.CQTmxQ_F.lean.js @@ -0,0 +1,208 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const t="/YAXArrays.jl/v0.6.0/assets/mmzaksu.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+using YAXArrays: YAXArrays as YAX
+using NetCDF
+using Downloads
+using Dates
+using Statistics
[ Info: new driver key :netcdf, updating backendlist.

Seasonal Averages from Time Series of Monthly Means

The following reproduces the example in xarray by Joe Hamman.

Where the goal is to calculate the seasonal average. And in order to do this properly, is necessary to calculate the weighted average considering that each month has a different number of days.

Download the data

julia
url_path = "https://github.com/pydata/xarray-data/raw/master/rasm.nc"
+filename = Downloads.download(url_path, "rasm.nc")
+ds_o = Cube(filename)
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

WARNING

The following rebuild should not be necessary in the future, plus is unpractical to use for large data sets. Out of memory groupby currently is work in progress. Related to https://github.com/rafaqz/DimensionalData.jl/issues/642

julia
_FillValue = ds_o.properties["_FillValue"]
+ds = replace(ds_o[:,:,:], _FillValue => NaN) # load into memory and replace _FillValue by NaN
┌ 275×205×36 YAXArray{Float64, 3} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ x    Sampled{Int64} 1:275 ForwardOrdered Regular Points,
+  → y    Sampled{Int64} 1:205 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 7 entries:
+  "units"          => "C"
+  "coordinates"    => "yc xc"
+  "name"           => "Tair"
+  "long_name"      => "Surface air temperature"
+  "type_preferred" => "double"
+  "_FillValue"     => 9.96921e36
+  "time_rep"       => "instantaneous"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 15.48 MB
+└──────────────────────────────────────────────────────────────────────────────┘

GroupBy: seasons

function weighted_seasons(ds) ... end
julia
function weighted_seasons(ds)
+    # calculate weights 
+    tempo = dims(ds, :time)
+    month_length = YAXArray((tempo,), daysinmonth.(tempo))
+    g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
+    sum_days = sum.(g_tempo, dims=:time)
+    weights = map(./, g_tempo, sum_days)
+    # unweighted seasons
+    g_ds = groupby(ds, YAX.time => seasons(; start=December))
+    mean_g = mean.(g_ds, dims=:time)
+    mean_g = dropdims.(mean_g, dims=:time)
+    # weighted seasons
+    g_dsW = broadcast_dims.(*, weights, g_ds)
+    weighted_g = sum.(g_dsW, dims = :time);
+    weighted_g = dropdims.(weighted_g, dims=:time)
+    # differences
+    diff_g = map(.-, weighted_g, mean_g)
+    seasons_g = lookup(mean_g, :time)
+    return mean_g, weighted_g, diff_g, seasons_g
+end

INFO

In what follows, note how we are referencing the time dimension via YAX.time. This approach is used to avoid name clashes with time (Time) from Base (Dates). For convenience, we have defined the Dimensions time and Time in YAXArrays.jl, which are only accessible when explicitly called.

Now, we continue with the groupby operations as usual

julia
julia> g_ds = groupby(ds, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Float64,2},1}
+├──────────────────────────────────────────────────┴───────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+x, y, time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  275×205×9 YAXArray
+ :Mar_Apr_May  275×205×9 YAXArray
+ :Jun_Jul_Aug  275×205×9 YAXArray
+ :Sep_Oct_Nov  275×205×9 YAXArray

And the mean per season is calculated as follows

julia
julia> mean_g = mean.(g_ds, dims=:time)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843;;;]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762;;;]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537;;;]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404;;;]

dropdims

Note that now the time dimension has length one, we can use dropdims to remove it

julia
julia> mean_g = dropdims.(mean_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1372 11.3835; NaN NaN … 11.3252 11.5843]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1363 21.018; NaN NaN … 21.4325 21.1762]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2818 27.9432; NaN NaN … 28.619 28.0537]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.7119 21.7158; NaN NaN … 21.9682 21.9404]

seasons

Due to the groupby function we will obtain new grouping names, in this case in the time dimension:

julia
seasons_g = lookup(mean_g, :time)
Categorical{Symbol} Unordered
+wrapping: 4-element Vector{Symbol}:
+ :Dec_Jan_Feb
+ :Mar_Apr_May
+ :Jun_Jul_Aug
+ :Sep_Oct_Nov

Next, we will weight this grouping by days/month in each group.

GroupBy: weight

Create a YAXArray for the month length

julia
tempo = dims(ds, :time)
+month_length = YAXArray((tempo,), daysinmonth.(tempo))
┌ 36-element YAXArray{Int64, 1} ┐
+├───────────────────────────────┴──────────────────────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTimeNoLeap} [CFTime.DateTimeNoLeap(1980-09-16T12:00:00), …, CFTime.DateTimeNoLeap(1983-08-17T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 288.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now group it by season

julia
julia> g_tempo = groupby(month_length, YAX.time => seasons(; start=December))
4-element DimGroupByArray{YAXArray{Int64,0},1}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+├────────────────────────────────────────────────────────────────── group dims ┤
+time
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  9-element YAXArray
+ :Mar_Apr_May  9-element YAXArray
+ :Jun_Jul_Aug  9-element YAXArray
+ :Sep_Oct_Nov  9-element YAXArray

Get the number of days per season

julia
julia> sum_days = sum.(g_tempo, dims=:time)
4-element DimArray{YAXArray{Int64, 1, DimensionalData.DimVector{Int64, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Tuple{}, Vector{Int64}, Symbol, DimensionalData.Dimensions.Lookups.NoMetadata}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  [270]
+ :Mar_Apr_May  [276]
+ :Jun_Jul_Aug  [276]
+ :Sep_Oct_Nov  [273]

weights

Weight the seasonal groups by sum_days

julia
julia> weights = map(./, g_tempo, sum_days)
4-element DimArray{YAXArray{Float64, 1, Vector{Float64}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, Dict{String, Any}}, 1} groupby
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704, 0.114815, 0.114815, 0.103704]
+ :Mar_Apr_May     [0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319]
+ :Jun_Jul_Aug     [0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319, 0.108696, 0.112319, 0.112319]
+ :Sep_Oct_Nov     [0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989, 0.10989, 0.113553, 0.10989]

Verify that the sum per season is 1

julia
julia> sum.(weights)
4-element DimArray{Float64, 1}
+├────────────────────────────────┴─────────────────────────────────────── dims ┐
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  1.0
+ :Mar_Apr_May  1.0
+ :Jun_Jul_Aug  1.0
+ :Sep_Oct_Nov  1.0

weighted seasons

Now, let's weight the seasons

julia
julia> g_dsW = broadcast_dims.(*, weights, g_ds)
4-element DimArray{YAXArray{Float64, 3, Array{Float64, 3}, Tuple{YAXArrays.time{DimensionalData.Dimensions.Lookups.Sampled{CFTime.DateTimeNoLeap, Vector{CFTime.DateTimeNoLeap}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Irregular{Tuple{Nothing, Nothing}}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.32149 1.33565; NaN NaN … 1.29564 1.32555; … ; NaN NaN … 1.3188 1.3169; NaN NaN … 1.17863 1.18434;;; NaN NaN … 1.29816 1.34218; NaN NaN … 1.30113 1.35483; … ; NaN NaN … 1.30142 1.31753; NaN NaN … 1.16258 1.17647;;; NaN NaN … 1.34549 1.37878; NaN NaN … 1.36836 1.41634; … ; NaN NaN … 1.34832 1.38364; NaN NaN … 1.17852 1.16713]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 1.87705 1.90365; NaN NaN … 2.30018 2.35432; … ; NaN NaN … 2.41049 2.43254; NaN NaN … 2.65105 2.69085;;; NaN NaN … 1.86457 1.90712; NaN NaN … 2.2894 2.34818; … ; NaN NaN … 2.3866 2.41241; NaN NaN … 2.61197 2.64976;;; NaN NaN … 1.89237 1.8984; NaN NaN … 2.29473 2.312; … ; NaN NaN … 2.36142 2.36126; NaN NaN … 2.56632 2.59085]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 3.21209 3.25153; NaN NaN … 3.23 3.28008; … ; NaN NaN … 3.12575 3.15532; NaN NaN … 3.2434 3.26274;;; NaN NaN … 3.17434 3.21699; NaN NaN … 3.18892 3.24375; … ; NaN NaN … 3.06755 3.1083; NaN NaN … 3.19241 3.22211;;; NaN NaN … 3.1437 3.15644; NaN NaN … 3.16631 3.18583; … ; NaN NaN … 3.03361 3.05846; NaN NaN … 3.16581 3.16824]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … NaN NaN; NaN NaN … NaN NaN;;; … ;;; NaN NaN … 2.97047 3.00388; NaN NaN … 2.77587 2.80759; … ; NaN NaN … 2.60175 2.60918; NaN NaN … 1.4947 1.52419;;; NaN NaN … 2.94534 2.97649; NaN NaN … 2.75891 2.79502; … ; NaN NaN … 2.57695 2.59212; NaN NaN … 1.46506 1.49909;;; NaN NaN … 2.9192 2.93743; NaN NaN … 2.7593 2.77687; … ; NaN NaN … 2.57873 2.63006; NaN NaN … 1.48367 1.50089]

apply a sum over the time dimension and drop it

julia
julia> weighted_g = sum.(g_dsW, dims = :time);
+
+julia> weighted_g = dropdims.(weighted_g, dims=:time)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 11.1181 11.372; NaN NaN … 11.3069 11.5743]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.1242 21.0057; NaN NaN … 21.4198 21.1644]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 28.2747 27.9362; NaN NaN … 28.6122 28.0465]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 21.73 21.7341; NaN NaN … 21.986 21.959]

Calculate the differences

julia
julia> diff_g = map(.-, weighted_g, mean_g)
4-element DimArray{YAXArray{Float64, 2, Matrix{Float64}, Tuple{Dim{:x, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}, Dim{:y, DimensionalData.Dimensions.Lookups.Sampled{Int64, UnitRange{Int64}, DimensionalData.Dimensions.Lookups.ForwardOrdered, DimensionalData.Dimensions.Lookups.Regular{Int64}, DimensionalData.Dimensions.Lookups.Points, DimensionalData.Dimensions.Lookups.NoMetadata}}}, DimensionalData.Dimensions.Lookups.NoMetadata}, 1}
+├──────────────────────────────────────────────────────────────────────── dims ┤
+time Categorical{Symbol} [:Dec_Jan_Feb, :Mar_Apr_May, :Jun_Jul_Aug, :Sep_Oct_Nov] Unordered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{Symbol, Any} with 1 entry:
+  :groupby => :time=>CyclicBins(month; cycle=12, step=3, start=12)…
+└──────────────────────────────────────────────────────────────────────────────┘
+ :Dec_Jan_Feb  …  [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.019016 -0.0115514; NaN NaN … -0.0183003 -0.00990356]
+ :Mar_Apr_May     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.0121037 -0.0123091; NaN NaN … -0.0127077 -0.0117519]
+ :Jun_Jul_Aug     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … -0.00709111 -0.00693713; NaN NaN … -0.00684233 -0.00722034]
+ :Sep_Oct_Nov     [NaN NaN … NaN NaN; NaN NaN … NaN NaN; … ; NaN NaN … 0.0180572 0.0182373; NaN NaN … 0.0178074 0.018571]

All the previous steps are equivalent to calling the function defined at the top:

julia
mean_g, weighted_g, diff_g, seasons_g = weighted_seasons(ds)

Once all calculations are done we can plot the results with Makie.jl as follows:

julia
using CairoMakie
+# define plot arguments/attributes
+colorrange = (-30,30)
+colormap = Reverse(:Spectral)
+highclip = :red
+lowclip = :grey15
+cb_label =  ds_o.properties["long_name"]
"Surface air temperature"
julia
with_theme(theme_ggplot2()) do
+    hm_o, hm_d, hm_w = nothing, nothing, nothing
+    # the figure
+    fig = Figure(; size = (850,500))
+    axs = [Axis(fig[i,j], aspect=DataAspect()) for i in 1:3, j in 1:4]
+    for (j, s) in enumerate(seasons_g)
+        hm_o = heatmap!(axs[1,j], mean_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_w = heatmap!(axs[2,j], weighted_g[time=At(s)]; colorrange, lowclip, highclip, colormap)
+        hm_d = heatmap!(axs[3,j], diff_g[time=At(s)]; colorrange=(-0.1,0.1), lowclip, highclip,
+            colormap=:diverging_bwr_20_95_c54_n256)
+    end
+    Colorbar(fig[1:2,5], hm_o, label=cb_label)
+    Colorbar(fig[3,5], hm_d, label="Tair")
+    hidedecorations!.(axs, grid=false, ticks=false, label=false)
+    # some labels
+    [axs[1,j].title = string.(s) for (j,s) in enumerate(seasons_g)]
+    Label(fig[0,1:5], "Seasonal Surface Air Temperature", fontsize=18, font=:bold)
+    axs[1,1].ylabel = "Unweighted"
+    axs[2,1].ylabel = "Weighted"
+    axs[3,1].ylabel = "Difference"
+    colgap!(fig.layout, 5)
+    rowgap!(fig.layout, 5)
+    fig
+end

which shows a good agreement with the results first published by Joe Hamman.

',66)]))}const N=i(l,[["render",p]]);export{y as __pageData,N as default}; diff --git a/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.js b/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.js new file mode 100644 index 00000000..56c7d08a --- /dev/null +++ b/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.js @@ -0,0 +1,229 @@ +import{_ as d,c as r,j as s,a,G as n,a2 as l,w as e,B as p,o}from"./chunks/framework.BcwRT4E8.js";const b=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),g={name:"UserGuide/read.md"},E={class:"jldocstring custom-block",open:""};function c(u,i,y,F,m,C){const h=p("Badge"),t=p("PluginTabsTab"),k=p("PluginTabs");return o(),r("div",null,[i[6]||(i[6]=s("h1",{id:"Read-YAXArrays-and-Datasets",tabindex:"-1"},[a("Read YAXArrays and Datasets "),s("a",{class:"header-anchor",href:"#Read-YAXArrays-and-Datasets","aria-label":'Permalink to "Read YAXArrays and Datasets {#Read-YAXArrays-and-Datasets}"'},"​")],-1)),i[7]||(i[7]=s("p",null,"This section describes how to read files, URLs, and directories into YAXArrays and datasets.",-1)),i[8]||(i[8]=s("h2",{id:"open-dataset",tabindex:"-1"},[a("open_dataset "),s("a",{class:"header-anchor",href:"#open-dataset","aria-label":'Permalink to "open_dataset"'},"​")],-1)),i[9]||(i[9]=s("p",null,[a("The usual method for reading any format is using this function. See its "),s("code",null,"docstring"),a(" for more information.")],-1)),s("details",E,[s("summary",null,[i[0]||(i[0]=s("a",{id:"YAXArrays.Datasets.open_dataset",href:"#YAXArrays.Datasets.open_dataset"},[s("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),i[1]||(i[1]=a()),n(h,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[2]||(i[2]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),i[10]||(i[10]=l(`

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+using Zarr
+path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
+store = zopen(path, consolidated=true)
+ds = open_dataset(store)
YAXArray Dataset
+Shared Axes: 
+None
+Variables: 
+height
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
+  Variables: 
+  tas
+
+Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
+├─────────────────────────────────────┴────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"         => "K"
+  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
+  "name"          => "tas"
+  "cell_methods"  => "area: mean time: point"
+  "cell_measures" => "area: areacella"
+  "long_name"     => "Near-Surface Air Temperature"
+  "coordinates"   => "height"
+  "standard_name" => "air_temperature"
+  "_FillValue"    => 1.0f20
+  "comment"       => "near-surface (usually, 2 meter) air temperature"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 69.02 GB
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
+Threads.@threads for i in 1:10
+    @lock my_lock @info ds.tos[1, 1, 1]
+end
[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+using ArchGDAL
+using Downloads: download
+
+path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
+
+Variables: 
+Blue, Green, Red
+
+Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,27)),n(k,null,{default:e(()=>[n(t,{label:"single variable"},{default:e(()=>i[3]||(i[3]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),n(t,{label:"with the `:` operator"},{default:e(()=>i[4]||(i[4]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),n(t,{label:"Complete Dataset"},{default:e(()=>i[5]||(i[5]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` +`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),i[11]||(i[11]=l(`

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

`,21))])}const D=d(g,[["render",c]]);export{b as __pageData,D as default}; diff --git a/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.lean.js b/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.lean.js new file mode 100644 index 00000000..56c7d08a --- /dev/null +++ b/v0.6.0/assets/UserGuide_read.md.DSkKxuq0.lean.js @@ -0,0 +1,229 @@ +import{_ as d,c as r,j as s,a,G as n,a2 as l,w as e,B as p,o}from"./chunks/framework.BcwRT4E8.js";const b=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),g={name:"UserGuide/read.md"},E={class:"jldocstring custom-block",open:""};function c(u,i,y,F,m,C){const h=p("Badge"),t=p("PluginTabsTab"),k=p("PluginTabs");return o(),r("div",null,[i[6]||(i[6]=s("h1",{id:"Read-YAXArrays-and-Datasets",tabindex:"-1"},[a("Read YAXArrays and Datasets "),s("a",{class:"header-anchor",href:"#Read-YAXArrays-and-Datasets","aria-label":'Permalink to "Read YAXArrays and Datasets {#Read-YAXArrays-and-Datasets}"'},"​")],-1)),i[7]||(i[7]=s("p",null,"This section describes how to read files, URLs, and directories into YAXArrays and datasets.",-1)),i[8]||(i[8]=s("h2",{id:"open-dataset",tabindex:"-1"},[a("open_dataset "),s("a",{class:"header-anchor",href:"#open-dataset","aria-label":'Permalink to "open_dataset"'},"​")],-1)),i[9]||(i[9]=s("p",null,[a("The usual method for reading any format is using this function. See its "),s("code",null,"docstring"),a(" for more information.")],-1)),s("details",E,[s("summary",null,[i[0]||(i[0]=s("a",{id:"YAXArrays.Datasets.open_dataset",href:"#YAXArrays.Datasets.open_dataset"},[s("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),i[1]||(i[1]=a()),n(h,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[2]||(i[2]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),i[10]||(i[10]=l(`

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+using Zarr
+path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
+store = zopen(path, consolidated=true)
+ds = open_dataset(store)
YAXArray Dataset
+Shared Axes: 
+None
+Variables: 
+height
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
+  Variables: 
+  tas
+
+Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
+├─────────────────────────────────────┴────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"         => "K"
+  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
+  "name"          => "tas"
+  "cell_methods"  => "area: mean time: point"
+  "cell_measures" => "area: areacella"
+  "long_name"     => "Near-Surface Air Temperature"
+  "coordinates"   => "height"
+  "standard_name" => "air_temperature"
+  "_FillValue"    => 1.0f20
+  "comment"       => "near-surface (usually, 2 meter) air temperature"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 69.02 GB
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
+Threads.@threads for i in 1:10
+    @lock my_lock @info ds.tos[1, 1, 1]
+end
[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+using ArchGDAL
+using Downloads: download
+
+path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
+
+Variables: 
+Blue, Green, Red
+
+Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,27)),n(k,null,{default:e(()=>[n(t,{label:"single variable"},{default:e(()=>i[3]||(i[3]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),n(t,{label:"with the `:` operator"},{default:e(()=>i[4]||(i[4]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),n(t,{label:"Complete Dataset"},{default:e(()=>i[5]||(i[5]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` +`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),i[11]||(i[11]=l(`

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

`,21))])}const D=d(g,[["render",c]]);export{b as __pageData,D as default}; diff --git a/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.js b/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.js new file mode 100644 index 00000000..71aa7a7a --- /dev/null +++ b/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.js @@ -0,0 +1,276 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,d,k){return e(),i("div",null,s[0]||(s[0]=[n(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Select a YAXArray

Get the sea surface temperature of the Dataset:

julia
tos = ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

which is the same as:

julia
tos = ds.cubes[:tos]
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Select elements

Using positional integer indexing:

julia
tos[lon = 1, lat = 1]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1), lat = At(-79.5)]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Using special types:

julia
using CFTime
+time1 = DateTime360Day(2001,01,16)
+tos[time = At(time1)]
┌ 180×170 YAXArray{Union{Missing, Float32}, 2} ┐
+├──────────────────────────────────────────────┴──────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────────────────┴ metadata ┐
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├───────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 119.53 KB
+└────────────────────────────────────────────────────────────────────────────────┘

Select ranges

Here we subset an interval of a dimension using positional integer indexing.

julia
tos[lon = 1:10, lat = 1:10]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:19.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:-70.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1.0:2:19), lat = At(-79.5:1:-70.5)]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 3.0, …, 17.0, 19.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} [-79.5, -78.5, …, -71.5, -70.5] ForwardOrdered Irregular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Read more about the At selector in the package DimensionalData. Get values within a tolerances:

julia
tos[lon = At(1:10; atol = 1)]
┌ 10×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 1.0, …, 9.0, 9.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 159.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Closed and open intervals

Although a Between(a,b) function is available in DimensionalData, is recommended to use instead the a .. b notation:

julia
tos[lon = 90 .. 180]
┌ 45×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This describes a closed interval in which all points were included. More selectors from DimensionalData are available, such as Touches, Near, Where and Contains.

julia
using IntervalSets
julia
julia> tos[lon = OpenInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon = ClosedInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:open,:closed}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:closed,:open}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

See tutorials for use cases.

Get a dimension

Get values, .e.g., axis tick labels, of a dimension that can be used for subseting:

julia
collect(tos.lat)
┌ 170-element DimArray{Float64, 1} ┐
+├──────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+└─────────────────────────────────────────────────────────────────────┘
+ -79.5  -79.5
+ -78.5  -78.5
+ -77.5  -77.5
+ -76.5  -76.5
+ -75.5  -75.5
+ -74.5  -74.5
+
+  85.5   85.5
+  86.5   86.5
+  87.5   87.5
+  88.5   88.5
+  89.5   89.5

These values are defined as lookups in the package DimensionalData:

julia
lookup(tos, :lon)
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0

which is equivalent to:

julia
tos.lon.val
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0
`,56)]))}const g=a(t,[["render",p]]);export{u as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.lean.js b/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.lean.js new file mode 100644 index 00000000..71aa7a7a --- /dev/null +++ b/v0.6.0/assets/UserGuide_select.md.Bf5ROjBp.lean.js @@ -0,0 +1,276 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BcwRT4E8.js";const u=JSON.parse('{"title":"Select YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/select.md","filePath":"UserGuide/select.md","lastUpdated":null}'),t={name:"UserGuide/select.md"};function p(l,s,h,o,d,k){return e(),i("div",null,s[0]||(s[0]=[n(`

Select YAXArrays and Datasets

The dimensions or axes of an YAXArray are named making it easier to subset or query certain ranges of an array. Let's open an example Dataset used to select certain elements:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Select a YAXArray

Get the sea surface temperature of the Dataset:

julia
tos = ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

which is the same as:

julia
tos = ds.cubes[:tos]
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Select elements

Using positional integer indexing:

julia
tos[lon = 1, lat = 1]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1), lat = At(-79.5)]
┌ 24-element YAXArray{Union{Missing, Float32}, 1} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 96.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Using special types:

julia
using CFTime
+time1 = DateTime360Day(2001,01,16)
+tos[time = At(time1)]
┌ 180×170 YAXArray{Union{Missing, Float32}, 2} ┐
+├──────────────────────────────────────────────┴──────────────── dims ┐
+  ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────────────────┴ metadata ┐
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├───────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 119.53 KB
+└────────────────────────────────────────────────────────────────────────────────┘

Select ranges

Here we subset an interval of a dimension using positional integer indexing.

julia
tos[lon = 1:10, lat = 1:10]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:19.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:-70.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Same but using named indexing:

julia
tos[lon = At(1.0:2:19), lat = At(-79.5:1:-70.5)]
┌ 10×10×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├───────────────────────────────────────────────┴──────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 3.0, …, 17.0, 19.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} [-79.5, -78.5, …, -71.5, -70.5] ForwardOrdered Irregular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 9.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Read more about the At selector in the package DimensionalData. Get values within a tolerances:

julia
tos[lon = At(1:10; atol = 1)]
┌ 10×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} [1.0, 1.0, …, 9.0, 9.0] ForwardOrdered Irregular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 159.38 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Closed and open intervals

Although a Between(a,b) function is available in DimensionalData, is recommended to use instead the a .. b notation:

julia
tos[lon = 90 .. 180]
┌ 45×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

This describes a closed interval in which all points were included. More selectors from DimensionalData are available, such as Touches, Near, Where and Contains.

julia
using IntervalSets
julia
julia> tos[lon = OpenInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon = ClosedInterval(90, 180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:open,:closed}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘
julia
julia> tos[lon =Interval{:closed,:open}(90,180)]
45×170×24 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────────┴─────────────────────── dims ┐
+lon  Sampled{Float64} 91.0:2.0:179.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 717.19 KB
+└──────────────────────────────────────────────────────────────────────────────┘

See tutorials for use cases.

Get a dimension

Get values, .e.g., axis tick labels, of a dimension that can be used for subseting:

julia
collect(tos.lat)
┌ 170-element DimArray{Float64, 1} ┐
+├──────────────────────────────────┴──────────────────────────── dims ┐
+  ↓ lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points
+└─────────────────────────────────────────────────────────────────────┘
+ -79.5  -79.5
+ -78.5  -78.5
+ -77.5  -77.5
+ -76.5  -76.5
+ -75.5  -75.5
+ -74.5  -74.5
+
+  85.5   85.5
+  86.5   86.5
+  87.5   87.5
+  88.5   88.5
+  89.5   89.5

These values are defined as lookups in the package DimensionalData:

julia
lookup(tos, :lon)
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0

which is equivalent to:

julia
tos.lon.val
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
+wrapping: 1.0:2.0:359.0
`,56)]))}const g=a(t,[["render",p]]);export{u as __pageData,g as default}; diff --git a/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.js b/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.js new file mode 100644 index 00000000..8ea18c67 --- /dev/null +++ b/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.js @@ -0,0 +1,2 @@ +import{_ as e,c as a,a2 as i,o as s}from"./chunks/framework.BcwRT4E8.js";const p=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),d={name:"UserGuide/types.md"};function o(l,t,n,r,c,h){return s(),a("div",null,t[0]||(t[0]=[i(`

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimensions

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

Lon, Lat, time

For convenience, several Dimensions have been defined in YAXArrays.jl, but only a few have been exported. The remaining dimensions can be used by calling them explicitly. See the next table for an overview

Dimensionexportedusage: using YAXArrays: YAXArrays as YAX
lonlon or YAX.lon
LonLon or YAX.Lon
longitudelongitude or YAX.longitude
LongitudeLongitude or YAX.Longitude
latlat or YAX.lat
LatLat or YAX.Lat
latitudelatitude or YAX.latitude
LatitudeLatitude or YAX.Latitude
timeYAX.time
TimeYAX.Time
rlatYAX.rlat
rlonYAX.rlon
lat_cYAX.lat_c
lon_cYAX.lon_c
heightYAX.height
depthYAX.depth
VariablesVariables or YAX.Variables

INFO

If the dimension you are looking for is not in that table, you can define your own by doing

julia
using DimensionalData: @dim, XDim # If you want it to be a subtype of XDim
+@dim newDim XDim "Your newDim label"

Sometimes, when you want to operate on a specific dimension in your dataset (for example, a dimension named date), then doing

julia
groupby(ds, Dim{:date} => seasons())

should do the job.

`,16)]))}const y=e(d,[["render",o]]);export{p as __pageData,y as default}; diff --git a/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.lean.js b/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.lean.js new file mode 100644 index 00000000..8ea18c67 --- /dev/null +++ b/v0.6.0/assets/UserGuide_types.md.Dhld7Jdg.lean.js @@ -0,0 +1,2 @@ +import{_ as e,c as a,a2 as i,o as s}from"./chunks/framework.BcwRT4E8.js";const p=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/types.md","filePath":"UserGuide/types.md","lastUpdated":null}'),d={name:"UserGuide/types.md"};function o(l,t,n,r,c,h){return s(),a("div",null,t[0]||(t[0]=[i(`

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimensions

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

Lon, Lat, time

For convenience, several Dimensions have been defined in YAXArrays.jl, but only a few have been exported. The remaining dimensions can be used by calling them explicitly. See the next table for an overview

Dimensionexportedusage: using YAXArrays: YAXArrays as YAX
lonlon or YAX.lon
LonLon or YAX.Lon
longitudelongitude or YAX.longitude
LongitudeLongitude or YAX.Longitude
latlat or YAX.lat
LatLat or YAX.Lat
latitudelatitude or YAX.latitude
LatitudeLatitude or YAX.Latitude
timeYAX.time
TimeYAX.Time
rlatYAX.rlat
rlonYAX.rlon
lat_cYAX.lat_c
lon_cYAX.lon_c
heightYAX.height
depthYAX.depth
VariablesVariables or YAX.Variables

INFO

If the dimension you are looking for is not in that table, you can define your own by doing

julia
using DimensionalData: @dim, XDim # If you want it to be a subtype of XDim
+@dim newDim XDim "Your newDim label"

Sometimes, when you want to operate on a specific dimension in your dataset (for example, a dimension named date), then doing

julia
groupby(ds, Dim{:date} => seasons())

should do the job.

`,16)]))}const y=e(d,[["render",o]]);export{p as __pageData,y as default}; diff --git a/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.js b/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.js new file mode 100644 index 00000000..6849ff7e --- /dev/null +++ b/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.js @@ -0,0 +1,71 @@ +import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/framework.BcwRT4E8.js";const C=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),d={name:"UserGuide/write.md"},r={class:"jldocstring custom-block",open:""};function o(g,s,c,E,y,u){const t=h("Badge");return k(),n("div",null,[s[3]||(s[3]=a(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
+savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

zarr compression

Save a dataset to Zarr format with compression:

julia
n = 9 # compression level, number between 0 (no compression) and 9 (max compression)
+compression = Zarr.BloscCompressor(; clevel=n)
+
+savedataset(ds; path="ds_c.zarr", driver=:zarr, compressor=compression)

More on Zarr Compressors. Also, if you use this option and don't notice a significant improvement, please feel free to open an issue or start a discussion.

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
+savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
+ds_c_info = stat("ds_c.nc")
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+  Variables: 
+  tos
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
+Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now, save to disk with

julia
r = savecube(a, "skeleton.zarr", layername="skeleton", driver=:zarr, skeleton=true, overwrite=true)

WARNING

overwrite=true will delete your previous .zarr file before creating a new one.

Note also that if layername="skeleton" is not provided then the default name for the cube variable will be layer.

Now, we check that all the values are missing

julia
all(ismissing, r[:,:,:])
true

If using FillArrays is not possible, using the zeros function works as well, though it does allocate the array in memory.

INFO

The skeleton argument is also available for savedataset.

Using the toy array defined above we can do

julia
ds = Dataset(skeleton=a) # skeleton will the variable name
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+
+Variables: 
+skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
+ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ds_array = ds_open["skeleton"]
+ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; diff --git a/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.lean.js b/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.lean.js new file mode 100644 index 00000000..6849ff7e --- /dev/null +++ b/v0.6.0/assets/UserGuide_write.md.0ZWfSdMj.lean.js @@ -0,0 +1,71 @@ +import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/framework.BcwRT4E8.js";const C=JSON.parse('{"title":"Write YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/write.md","filePath":"UserGuide/write.md","lastUpdated":null}'),d={name:"UserGuide/write.md"},r={class:"jldocstring custom-block",open:""};function o(g,s,c,E,y,u){const t=h("Badge");return k(),n("div",null,[s[3]||(s[3]=a(`

Write YAXArrays and Datasets

Create an example Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Write Zarr

Save a single YAXArray to a directory:

julia
using Zarr
+savecube(ds.tos, "tos.zarr", driver=:zarr)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.zarr", driver=:zarr)

zarr compression

Save a dataset to Zarr format with compression:

julia
n = 9 # compression level, number between 0 (no compression) and 9 (max compression)
+compression = Zarr.BloscCompressor(; clevel=n)
+
+savedataset(ds; path="ds_c.zarr", driver=:zarr, compressor=compression)

More on Zarr Compressors. Also, if you use this option and don't notice a significant improvement, please feel free to open an issue or start a discussion.

Write NetCDF

Save a single YAXArray to a directory:

julia
using NetCDF
+savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
+savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
+ds_c_info = stat("ds_c.nc")
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
+Shared Axes:
+None
+Variables with additional axes:
+  Additional Axes: 
+  (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+  Variables: 
+  tos
+
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
+Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
+├────────────────────────────────────────────┴─────────────────────────── dims ┐
+Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 400.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

Now, save to disk with

julia
r = savecube(a, "skeleton.zarr", layername="skeleton", driver=:zarr, skeleton=true, overwrite=true)

WARNING

overwrite=true will delete your previous .zarr file before creating a new one.

Note also that if layername="skeleton" is not provided then the default name for the cube variable will be layer.

Now, we check that all the values are missing

julia
all(ismissing, r[:,:,:])
true

If using FillArrays is not possible, using the zeros function works as well, though it does allocate the array in memory.

INFO

The skeleton argument is also available for savedataset.

Using the toy array defined above we can do

julia
ds = Dataset(skeleton=a) # skeleton will the variable name
YAXArray Dataset
+Shared Axes: 
+  (↓ Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(4) ForwardOrdered Regular Points,
+  ↗ Dim_3 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points)
+
+Variables: 
+skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
+ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ds_array = ds_open["skeleton"]
+ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; diff --git a/v0.6.0/assets/api.md.BwYaKzGE.js b/v0.6.0/assets/api.md.BwYaKzGE.js new file mode 100644 index 00000000..831492f5 --- /dev/null +++ b/v0.6.0/assets/api.md.BwYaKzGE.js @@ -0,0 +1,5 @@ +import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.BcwRT4E8.js";const cs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",c,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

source

',5))]),e("details",b,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",k,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

source

',7))]),e("details",q,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",P,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+This is used to find different axes and to make certain axis description the same.
+For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",V,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",R,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

where a description of the desired variable chunks can take one of the following forms:

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const bs=n(d,[["render",ns]]);export{cs as __pageData,bs as default}; diff --git a/v0.6.0/assets/api.md.BwYaKzGE.lean.js b/v0.6.0/assets/api.md.BwYaKzGE.lean.js new file mode 100644 index 00000000..831492f5 --- /dev/null +++ b/v0.6.0/assets/api.md.BwYaKzGE.lean.js @@ -0,0 +1,5 @@ +import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.BcwRT4E8.js";const cs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",c,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

source

',5))]),e("details",b,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",k,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

source

',7))]),e("details",q,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",P,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+This is used to find different axes and to make certain axis description the same.
+For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",V,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",R,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

where a description of the desired variable chunks can take one of the following forms:

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/348f26b5b14e4b2c11f3705612425ef7377edce5/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const bs=n(d,[["render",ns]]);export{cs as __pageData,bs as default}; diff --git a/v0.6.0/assets/app.mQqI8xFX.js b/v0.6.0/assets/app.mQqI8xFX.js new file mode 100644 index 00000000..69e46535 --- /dev/null +++ b/v0.6.0/assets/app.mQqI8xFX.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.DdBYlEdc.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.BcwRT4E8.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/v0.6.0/assets/chunks/@localSearchIndexroot.c345pPCL.js b/v0.6.0/assets/chunks/@localSearchIndexroot.c345pPCL.js new file mode 100644 index 00000000..1fe64731 --- /dev/null +++ b/v0.6.0/assets/chunks/@localSearchIndexroot.c345pPCL.js @@ -0,0 +1 @@ +const e='{"documentCount":116,"nextId":116,"documentIds":{"0":"/YAXArrays.jl/v0.6.0/UserGuide/cache.html#Caching-YAXArrays","1":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Chunk-YAXArrays","2":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Chunking-YAXArrays","3":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Chunking-Datasets","4":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Set-Chunks-by-Axis","5":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Set-chunking-by-Variable","6":"/YAXArrays.jl/v0.6.0/UserGuide/chunk.html#Set-chunking-for-all-variables","7":"/YAXArrays.jl/v0.6.0/UserGuide/combine.html#Combine-YAXArrays","8":"/YAXArrays.jl/v0.6.0/UserGuide/combine.html#cat-along-an-existing-dimension","9":"/YAXArrays.jl/v0.6.0/UserGuide/combine.html#concatenatecubes-to-a-new-dimension","10":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Compute-YAXArrays","11":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Modify-elements-of-a-YAXArray","12":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#arithmetics","13":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#map","14":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#mapslices","15":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#mapCube","16":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Operations-over-several-YAXArrays","17":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#OutDims-and-YAXArray-Properties","18":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#One-InDims-to-many-OutDims","19":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Many-InDims-to-many-OutDims","20":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Specify-path-in-OutDims","21":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Different-InDims-names","22":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Creating-a-vector-array","23":"/YAXArrays.jl/v0.6.0/UserGuide/compute.html#Distributed-Computation","24":"/YAXArrays.jl/v0.6.0/UserGuide/convert.html#Convert-YAXArrays","25":"/YAXArrays.jl/v0.6.0/UserGuide/convert.html#Convert-Base.Array","26":"/YAXArrays.jl/v0.6.0/UserGuide/convert.html#Convert-Raster","27":"/YAXArrays.jl/v0.6.0/UserGuide/convert.html#Convert-DimArray","28":"/YAXArrays.jl/v0.6.0/UserGuide/create.html#Create-YAXArrays-and-Datasets","29":"/YAXArrays.jl/v0.6.0/UserGuide/create.html#Create-a-YAXArray","30":"/YAXArrays.jl/v0.6.0/UserGuide/create.html#Create-a-Dataset","31":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Frequently-Asked-Questions-(FAQ)","32":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Extract-the-axes-names-from-a-Cube","33":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#rebuild","34":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Obtain-values-from-axes-and-data-from-the-cube","35":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#How-do-I-concatenate-cubes","36":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#How-do-I-subset-a-YAXArray-(-Cube-)-or-Dataset?","37":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Subsetting-a-YAXArray","38":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Subsetting-a-Dataset","39":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-all-their-dimensions","40":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-some-but-not-all-of-their-dimensions","41":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#How-do-I-apply-map-algebra?","42":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#How-do-I-use-the-CubeTable-function?","43":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#How-do-I-assign-variable-names-to-YAXArrays-in-a-Dataset","44":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#One-variable-name","45":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Multiple-variable-names","46":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Ho-do-I-construct-a-Dataset-from-a-TimeArray","47":"/YAXArrays.jl/v0.6.0/UserGuide/faq.html#Create-a-YAXArray-with-unions-containing-Strings","48":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#Group-YAXArrays-and-Datasets","49":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#Seasonal-Averages-from-Time-Series-of-Monthly-Means","50":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#Download-the-data","51":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#GroupBy:-seasons","52":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#dropdims","53":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#seasons","54":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#GroupBy:-weight","55":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#weights","56":"/YAXArrays.jl/v0.6.0/UserGuide/group.html#weighted-seasons","57":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#Read-YAXArrays-and-Datasets","58":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#open-dataset","59":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#Read-Zarr","60":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#Read-NetCDF","61":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#Read-GDAL-(GeoTIFF,-GeoJSON)","62":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#Load-data-into-memory","63":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#readcubedata","64":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#open-mfdataset","65":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#along-a-new-dimension","66":"/YAXArrays.jl/v0.6.0/UserGuide/read.html#along-a-existing-dimension","67":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Select-YAXArrays-and-Datasets","68":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Select-a-YAXArray","69":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Select-elements","70":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Select-ranges","71":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Closed-and-open-intervals","72":"/YAXArrays.jl/v0.6.0/UserGuide/select.html#Get-a-dimension","73":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#types","74":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#yaxarray","75":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#dataset","76":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#(Data)-Cube","77":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#dimensions","78":"/YAXArrays.jl/v0.6.0/UserGuide/types.html#Lon,-Lat,-time","79":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Write-YAXArrays-and-Datasets","80":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Write-Zarr","81":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#zarr-compression","82":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Write-NetCDF","83":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#netcdf-compression","84":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Overwrite-a-Dataset","85":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Append-to-a-Dataset","86":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Save-Skeleton","87":"/YAXArrays.jl/v0.6.0/UserGuide/write.html#Update-values-of-dataset","88":"/YAXArrays.jl/v0.6.0/api.html#API-Reference","89":"/YAXArrays.jl/v0.6.0/api.html#Public-API","90":"/YAXArrays.jl/v0.6.0/api.html#Internal-API","91":"/YAXArrays.jl/v0.6.0/development/contribute.html#Contribute-to-YAXArrays.jl","92":"/YAXArrays.jl/v0.6.0/development/contribute.html#Contribute-to-Documentation","93":"/YAXArrays.jl/v0.6.0/development/contribute.html#Build-docs-locally","94":"/YAXArrays.jl/v0.6.0/get_started.html#Getting-Started","95":"/YAXArrays.jl/v0.6.0/get_started.html#installation","96":"/YAXArrays.jl/v0.6.0/get_started.html#quickstart","97":"/YAXArrays.jl/v0.6.0/get_started.html#updates","98":"/YAXArrays.jl/v0.6.0/tutorials/mean_seasonal_cycle.html#Mean-Seasonal-Cycle-for-a-single-pixel","99":"/YAXArrays.jl/v0.6.0/tutorials/mean_seasonal_cycle.html#Define-the-cube","100":"/YAXArrays.jl/v0.6.0/tutorials/mean_seasonal_cycle.html#Plot-results:-mean-seasonal-cycle","101":"/YAXArrays.jl/v0.6.0/tutorials/other_tutorials.html#Other-tutorials","102":"/YAXArrays.jl/v0.6.0/tutorials/other_tutorials.html#General-overview-of-the-functionality-of-YAXArrays","103":"/YAXArrays.jl/v0.6.0/tutorials/other_tutorials.html#Table-style-iteration-over-YAXArrays","104":"/YAXArrays.jl/v0.6.0/tutorials/other_tutorials.html#Combining-multiple-tiff-files-into-a-zarr-based-datacube","105":"/YAXArrays.jl/v0.6.0/#How-to-Install-YAXArrays.jl?","106":"/YAXArrays.jl/v0.6.0/#Want-interoperability?","107":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#Plotting-maps","108":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#Heatmap-plot","109":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#Wintri-Projection","110":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#Moll-projection","111":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#3D-sphere-plot","112":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#algebraofgraphics-jl","113":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#faceting","114":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#Time-series","115":"/YAXArrays.jl/v0.6.0/tutorials/plottingmaps.html#analysis"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,86],"1":[2,1,58],"2":[2,2,57],"3":[2,2,9],"4":[4,4,76],"5":[4,4,76],"6":[5,4,81],"7":[2,1,31],"8":[5,2,82],"9":[5,2,92],"10":[2,1,119],"11":[5,2,30],"12":[1,2,72],"13":[1,2,120],"14":[1,2,88],"15":[1,2,22],"16":[4,3,211],"17":[4,3,100],"18":[5,7,128],"19":[5,7,98],"20":[4,7,90],"21":[3,3,150],"22":[4,3,245],"23":[2,2,138],"24":[2,1,52],"25":[3,2,85],"26":[2,2,41],"27":[2,2,122],"28":[4,1,14],"29":[3,4,109],"30":[3,4,45],"31":[5,1,19],"32":[7,5,77],"33":[1,11,90],"34":[8,5,76],"35":[5,5,90],"36":[10,5,33],"37":[3,14,142],"38":[3,14,18],"39":[9,14,69],"40":[13,14,158],"41":[7,5,113],"42":[8,5,168],"43":[11,5,1],"44":[3,15,24],"45":[3,15,59],"46":[8,5,139],"47":[7,5,79],"48":[4,1,32],"49":[8,4,35],"50":[3,4,131],"51":[2,4,170],"52":[1,6,101],"53":[1,6,48],"54":[2,4,111],"55":[1,6,84],"56":[2,6,348],"57":[4,1,14],"58":[2,4,75],"59":[2,6,187],"60":[2,6,251],"61":[5,6,90],"62":[4,6,42],"63":[1,10,142],"64":[2,4,94],"65":[4,6,87],"66":[4,6,93],"67":[4,1,165],"68":[3,4,105],"69":[2,4,115],"70":[2,4,129],"71":[4,4,143],"72":[3,4,71],"73":[1,1,16],"74":[1,1,113],"75":[1,1,78],"76":[3,1,70],"77":[1,1,32],"78":[3,2,100],"79":[4,1,146],"80":[2,4,19],"81":[2,5,52],"82":[2,4,20],"83":[2,5,44],"84":[3,4,73],"85":[4,4,157],"86":[2,4,154],"87":[4,4,93],"88":[2,1,10],"89":[2,2,597],"90":[2,2,463],"91":[4,1,15],"92":[3,4,40],"93":[3,5,75],"94":[2,1,1],"95":[1,2,34],"96":[1,2,199],"97":[1,2,49],"98":[7,1,73],"99":[3,7,133],"100":[5,7,48],"101":[2,1,49],"102":[6,2,12],"103":[5,2,38],"104":[9,2,1],"105":[6,1,37],"106":[3,1,21],"107":[2,1,136],"108":[2,2,21],"109":[2,1,47],"110":[2,2,34],"111":[3,2,45],"112":[2,2,158],"113":[1,4,170],"114":[2,4,136],"115":[1,4,39]},"averageFieldLength":[3.4137931034482767,3.922413793103448,93.04310344827586],"storedFields":{"0":{"title":"Caching YAXArrays","titles":[]},"1":{"title":"Chunk YAXArrays","titles":[]},"2":{"title":"Chunking YAXArrays","titles":["Chunk YAXArrays"]},"3":{"title":"Chunking Datasets","titles":["Chunk YAXArrays"]},"4":{"title":"Set Chunks by Axis","titles":["Chunk YAXArrays","Chunking Datasets"]},"5":{"title":"Set chunking by Variable","titles":["Chunk YAXArrays","Chunking Datasets"]},"6":{"title":"Set chunking for all variables","titles":["Chunk YAXArrays","Chunking Datasets"]},"7":{"title":"Combine YAXArrays","titles":[]},"8":{"title":"cat along an existing dimension","titles":["Combine YAXArrays"]},"9":{"title":"concatenatecubes to a new dimension","titles":["Combine YAXArrays"]},"10":{"title":"Compute YAXArrays","titles":[]},"11":{"title":"Modify elements of a YAXArray","titles":["Compute YAXArrays"]},"12":{"title":"Arithmetics","titles":["Compute YAXArrays"]},"13":{"title":"map","titles":["Compute YAXArrays"]},"14":{"title":"mapslices","titles":["Compute YAXArrays"]},"15":{"title":"mapCube","titles":["Compute YAXArrays"]},"16":{"title":"Operations over several YAXArrays","titles":["Compute YAXArrays","mapCube"]},"17":{"title":"OutDims and YAXArray Properties","titles":["Compute YAXArrays","mapCube"]},"18":{"title":"One InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"19":{"title":"Many InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"20":{"title":"Specify path in OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"21":{"title":"Different InDims names","titles":["Compute YAXArrays","mapCube"]},"22":{"title":"Creating a vector array","titles":["Compute YAXArrays","mapCube"]},"23":{"title":"Distributed Computation","titles":["Compute YAXArrays"]},"24":{"title":"Convert YAXArrays","titles":[]},"25":{"title":"Convert Base.Array","titles":["Convert YAXArrays"]},"26":{"title":"Convert Raster","titles":["Convert YAXArrays"]},"27":{"title":"Convert DimArray","titles":["Convert YAXArrays"]},"28":{"title":"Create YAXArrays and Datasets","titles":[]},"29":{"title":"Create a YAXArray","titles":["Create YAXArrays and Datasets"]},"30":{"title":"Create a Dataset","titles":["Create YAXArrays and Datasets"]},"31":{"title":"Frequently Asked Questions (FAQ)","titles":[]},"32":{"title":"Extract the axes names from a Cube","titles":["Frequently Asked Questions (FAQ)"]},"33":{"title":"rebuild","titles":["Frequently Asked Questions (FAQ)","Extract the axes names from a Cube"]},"34":{"title":"Obtain values from axes and data from the cube","titles":["Frequently Asked Questions (FAQ)"]},"35":{"title":"How do I concatenate cubes","titles":["Frequently Asked Questions (FAQ)"]},"36":{"title":"How do I subset a YAXArray ( Cube ) or Dataset?","titles":["Frequently Asked Questions (FAQ)"]},"37":{"title":"Subsetting a YAXArray","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"38":{"title":"Subsetting a Dataset","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"39":{"title":"Subsetting a Dataset whose variables share all their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"40":{"title":"Subsetting a Dataset whose variables share some but not all of their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"41":{"title":"How do I apply map algebra?","titles":["Frequently Asked Questions (FAQ)"]},"42":{"title":"How do I use the CubeTable function?","titles":["Frequently Asked Questions (FAQ)"]},"43":{"title":"How do I assign variable names to YAXArrays in a Dataset","titles":["Frequently Asked Questions (FAQ)"]},"44":{"title":"One variable name","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"45":{"title":"Multiple variable names","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"46":{"title":"Ho do I construct a Dataset from a TimeArray","titles":["Frequently Asked Questions (FAQ)"]},"47":{"title":"Create a YAXArray with unions containing Strings","titles":["Frequently Asked Questions (FAQ)"]},"48":{"title":"Group YAXArrays and Datasets","titles":[]},"49":{"title":"Seasonal Averages from Time Series of Monthly Means","titles":["Group YAXArrays and Datasets"]},"50":{"title":"Download the data","titles":["Group YAXArrays and Datasets"]},"51":{"title":"GroupBy: seasons","titles":["Group YAXArrays and Datasets"]},"52":{"title":"dropdims","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"53":{"title":"seasons","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"54":{"title":"GroupBy: weight","titles":["Group YAXArrays and Datasets"]},"55":{"title":"weights","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"56":{"title":"weighted seasons","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"57":{"title":"Read YAXArrays and Datasets","titles":[]},"58":{"title":"open_dataset","titles":["Read YAXArrays and Datasets"]},"59":{"title":"Read Zarr","titles":["Read YAXArrays and Datasets","open_dataset"]},"60":{"title":"Read NetCDF","titles":["Read YAXArrays and Datasets","open_dataset"]},"61":{"title":"Read GDAL (GeoTIFF, GeoJSON)","titles":["Read YAXArrays and Datasets","open_dataset"]},"62":{"title":"Load data into memory","titles":["Read YAXArrays and Datasets","open_dataset"]},"63":{"title":"readcubedata","titles":["Read YAXArrays and Datasets","open_dataset","Load data into memory"]},"64":{"title":"open_mfdataset","titles":["Read YAXArrays and Datasets"]},"65":{"title":"along a new dimension","titles":["Read YAXArrays and Datasets","open_mfdataset"]},"66":{"title":"along a existing dimension","titles":["Read YAXArrays and Datasets","open_mfdataset"]},"67":{"title":"Select YAXArrays and Datasets","titles":[]},"68":{"title":"Select a YAXArray","titles":["Select YAXArrays and Datasets"]},"69":{"title":"Select elements","titles":["Select YAXArrays and Datasets"]},"70":{"title":"Select ranges","titles":["Select YAXArrays and Datasets"]},"71":{"title":"Closed and open intervals","titles":["Select YAXArrays and Datasets"]},"72":{"title":"Get a dimension","titles":["Select YAXArrays and Datasets"]},"73":{"title":"Types","titles":[]},"74":{"title":"YAXArray","titles":["Types"]},"75":{"title":"Dataset","titles":["Types"]},"76":{"title":"(Data) Cube","titles":["Types"]},"77":{"title":"Dimensions","titles":["Types"]},"78":{"title":"Lon, Lat, time","titles":["Types","Dimensions"]},"79":{"title":"Write YAXArrays and Datasets","titles":[]},"80":{"title":"Write Zarr","titles":["Write YAXArrays and Datasets"]},"81":{"title":"zarr compression","titles":["Write YAXArrays and Datasets","Write Zarr"]},"82":{"title":"Write NetCDF","titles":["Write YAXArrays and Datasets"]},"83":{"title":"netcdf compression","titles":["Write YAXArrays and Datasets","Write NetCDF"]},"84":{"title":"Overwrite a Dataset","titles":["Write YAXArrays and Datasets"]},"85":{"title":"Append to a Dataset","titles":["Write YAXArrays and Datasets"]},"86":{"title":"Save Skeleton","titles":["Write YAXArrays and Datasets"]},"87":{"title":"Update values of dataset","titles":["Write YAXArrays and Datasets"]},"88":{"title":"API Reference","titles":[]},"89":{"title":"Public API","titles":["API Reference"]},"90":{"title":"Internal API","titles":["API Reference"]},"91":{"title":"Contribute to YAXArrays.jl","titles":[]},"92":{"title":"Contribute to Documentation","titles":["Contribute to YAXArrays.jl"]},"93":{"title":"Build docs locally","titles":["Contribute to YAXArrays.jl","Contribute to Documentation"]},"94":{"title":"Getting Started","titles":[]},"95":{"title":"Installation","titles":["Getting Started"]},"96":{"title":"Quickstart","titles":["Getting Started"]},"97":{"title":"Updates","titles":["Getting Started"]},"98":{"title":"Mean Seasonal Cycle for a single pixel","titles":[]},"99":{"title":"Define the cube","titles":["Mean Seasonal Cycle for a single pixel"]},"100":{"title":"Plot results: mean seasonal cycle","titles":["Mean Seasonal Cycle for a single pixel"]},"101":{"title":"Other tutorials","titles":[]},"102":{"title":"General overview of the functionality of YAXArrays","titles":["Other tutorials"]},"103":{"title":"Table-style iteration over YAXArrays","titles":["Other tutorials"]},"104":{"title":"Combining multiple tiff files into a zarr based datacube","titles":["Other tutorials"]},"105":{"title":"How to Install YAXArrays.jl?","titles":[]},"106":{"title":"Want interoperability?","titles":[]},"107":{"title":"Plotting maps","titles":[]},"108":{"title":"Heatmap plot","titles":["Plotting maps"]},"109":{"title":"Wintri Projection","titles":[]},"110":{"title":"Moll projection","titles":["Wintri Projection"]},"111":{"title":"3D sphere plot","titles":["Wintri Projection"]},"112":{"title":"AlgebraOfGraphics.jl","titles":["Wintri Projection"]},"113":{"title":"Faceting","titles":["Wintri Projection","AlgebraOfGraphics.jl"]},"114":{"title":"Time series","titles":["Wintri Projection","AlgebraOfGraphics.jl"]},"115":{"title":"Analysis","titles":["Wintri Projection","AlgebraOfGraphics.jl"]}},"dirtCount":0,"index":[["δlon",{"2":{"109":1}}],["✘",{"2":{"78":8}}],["✔",{"2":{"78":9}}],["├──────────────────────┴────────────────────────────────────────",{"2":{"47":1}}],["├──────────────────────────┴─────────────────────────",{"2":{"37":1}}],["├──────────────────────────┴────────────────────────────────────",{"2":{"96":1}}],["├──────────────────────────┴─────────────────────────────────────",{"2":{"33":1}}],["├──────────────────────────┴─────────────────────────────────────────────",{"2":{"34":1,"42":1}}],["├──────────────────────────┴────────────────────────────────────────",{"2":{"19":1}}],["├──────────────────────────┴─────────────────────────────────",{"2":{"27":2}}],["├──────────────────────────┴────────────────────────────────",{"2":{"9":1}}],["├───────────────────────────┴───────────────────────────────────",{"2":{"25":1}}],["├───────────────────────────┴────────────────────────────────────────────",{"2":{"22":1,"37":1}}],["├─────────────────────────────┴──────────────────────────────────────────",{"2":{"37":2,"114":1}}],["├──────────────────────────────┴─────────────────────────────────",{"2":{"29":1}}],["├──────────────────────────────┴─────────────────────────────────────────",{"2":{"16":1,"32":1}}],["├────────────────────────────────┴───────────────────────────────────────",{"2":{"55":1,"113":1}}],["├───────────────────────────────────┴────────────────────────────────────",{"2":{"99":1}}],["├─────────────────────────────────────┴──────────────────────────────────",{"2":{"59":1}}],["├───────────────────────────────────────┴───────────────────────",{"2":{"47":1}}],["├────────────────────────────────────────",{"2":{"37":1}}],["├───────────────────────────────────────────┴────────────────────────────",{"2":{"22":1,"42":1}}],["├──────────────────────────────────────────────┴────────────────",{"2":{"69":1}}],["├────────────────────────────────────────────────┴───────────────────────",{"2":{"42":1,"54":1,"70":1,"71":5}}],["├────────────────────────────────────────────────",{"2":{"27":1,"37":1}}],["├─────────────────────────────────────────────────",{"2":{"21":1}}],["├─────────────────────────────────────────────────┴──────────────────────",{"2":{"14":1,"60":1,"63":3,"68":2,"69":2}}],["├──────────────────────────────────────────────────┴─────────────────────",{"2":{"51":1}}],["├────────────────────────────────────────────────────",{"2":{"29":1,"33":1}}],["├────────────────────────────────────────────────────────",{"2":{"27":2}}],["├───────────────────────────────────────────────────────────",{"2":{"25":1,"47":2,"96":1}}],["├────────────────────────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"14":2,"16":3,"17":1,"18":1,"21":2,"22":2,"29":2,"32":1,"33":3,"34":1,"37":4,"41":3,"42":3,"50":1,"54":1,"63":3,"86":1,"96":1,"99":1,"114":1}}],["├─────────────────────────────────────────────────────────────────",{"2":{"69":1}}],["├──────────────────────────────────────────────────────────────────",{"2":{"51":1,"54":1}}],["├─────────────────────────────────────────────────────────────────────┴",{"2":{"69":1}}],["├────────────────────────────────────────────────────────────────────────",{"2":{"51":1,"52":1,"54":1,"55":1,"56":3}}],["├────────────────────────────────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"21":2,"22":3,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":2,"70":3,"71":5,"86":1,"96":1,"99":1,"113":1,"114":1}}],["├───────────────────────────────────────────────────────────────",{"2":{"16":2,"19":1,"35":1,"50":1,"59":1,"60":1,"64":1,"68":2,"69":2,"70":3,"71":5,"113":1}}],["├─────────────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────────",{"2":{"9":1,"19":1}}],["├─────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────",{"2":{"25":1,"47":2,"96":1}}],["├──────────────────────────────────────────────────",{"2":{"9":1}}],["├───────────────────────────────────────────────┴────────────────────────",{"2":{"16":2,"41":1,"70":2}}],["├────────────────────────────────────────────┴───────────────────────────",{"2":{"14":1,"18":1,"21":1,"86":1}}],["├─────────────────────────────────────────",{"2":{"21":1}}],["├──────────────────────────────────┴────────────────────────────",{"2":{"72":1}}],["├─────────────────────────────────┴──────────────────────────────────────",{"2":{"35":1,"50":2,"96":1}}],["├─────────────────────────────────┴───────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────┴────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"16":2,"22":1,"29":1,"41":2,"54":1}}],["├────────────────────────────┴────────────────────────",{"2":{"21":1}}],["├────────────────────────────┴───────────────────────────────────────────",{"2":{"17":1,"21":1,"22":1,"33":2,"37":1,"64":1}}],["π",{"2":{"41":2,"98":1,"100":1}}],[">var",{"2":{"99":1}}],[">dates",{"2":{"99":1}}],[">month",{"2":{"89":1}}],[">abs",{"2":{"89":1}}],[">=",{"2":{"40":4}}],[">",{"2":{"40":2,"41":2,"99":1}}],["└──────────────────────────────────────────────────────────┘",{"2":{"37":1}}],["└───────────────────────────────────────────────────────────┘",{"2":{"21":1}}],["└──────────────────────────────────────────────────────────────────┘",{"2":{"27":2}}],["└──────────────────────────────────────────────────────────────────────┘",{"2":{"29":1,"33":1}}],["└────────────────────────────────────────────────────────────────────────────────┘",{"2":{"69":1}}],["└──────────────────────────────────────────────────────────────────────────────┘",{"2":{"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"21":2,"22":4,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":2,"70":3,"71":5,"86":1,"96":1,"99":1,"113":1,"114":1}}],["└─────────────────────────────────────────────────────────────────────────┘",{"2":{"19":1}}],["└───────────────────────────────────────────────────────────────────────┘",{"2":{"8":1}}],["└─────────────────────────────────────────────────────────────────────┘",{"2":{"25":1,"47":2,"72":1,"96":1}}],["└─────────────────────────────────────────────────────────────────┘",{"2":{"9":1}}],["`diskarrays",{"2":{"90":1}}],["`a",{"2":{"37":1}}],["`layer`",{"2":{"18":1}}],["quickstart",{"0":{"96":1}}],["query",{"2":{"67":1}}],["querying",{"2":{"63":1}}],["questions",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["quot",{"2":{"16":2,"42":2,"86":4,"89":8,"90":12,"112":2}}],["jj+1",{"2":{"60":1,"67":1,"79":1,"85":1}}],["jj",{"2":{"60":1,"67":1,"79":1,"85":1}}],["joinname",{"2":{"89":1}}],["joinname=",{"2":{"89":1}}],["job",{"2":{"78":1}}],["journal",{"2":{"60":1,"67":1,"79":1,"85":1}}],["joe",{"2":{"49":1,"56":1}}],["j",{"2":{"56":8}}],["jan",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["jl",{"0":{"91":1,"105":1,"112":1},"1":{"92":1,"93":1,"113":1,"114":1,"115":1},"2":{"26":1,"27":1,"42":1,"46":2,"50":1,"51":1,"56":1,"74":1,"77":1,"78":1,"91":1,"93":2,"95":1,"96":2,"97":3,"103":1,"105":2,"112":2,"115":1}}],["jussieu",{"2":{"60":1,"67":1,"79":1,"85":1}}],["just",{"2":{"22":1,"74":1,"76":1,"89":1,"90":2}}],["jul",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["juliaδlon",{"2":{"109":1}}],["juliax",{"2":{"98":1}}],["juliaplt",{"2":{"112":1,"113":4,"114":1}}],["juliapkg>",{"2":{"95":1,"97":1,"105":1}}],["juliapermuteloopaxes",{"2":{"90":1}}],["juliaproperties",{"2":{"19":1}}],["juliacopydata",{"2":{"90":1}}],["juliacollect",{"2":{"34":1,"72":1}}],["juliaclean",{"2":{"90":1}}],["juliacube",{"2":{"89":1}}],["juliacubefittable",{"2":{"89":1}}],["juliacubetable",{"2":{"89":1}}],["juliacaxes",{"2":{"89":1}}],["julian",{"2":{"81":1,"83":1}}],["juliaspecs",{"2":{"115":1}}],["juliastore",{"2":{"112":1}}],["juliasavecube",{"2":{"89":1}}],["juliasavedataset",{"2":{"80":1,"82":1,"84":2,"89":1}}],["juliasetchunks",{"2":{"89":1,"90":1}}],["juliaseasons",{"2":{"53":1}}],["juliaglmakie",{"2":{"108":1}}],["juliagroupby",{"2":{"78":1}}],["juliagetloopchunks",{"2":{"90":1}}],["juliagetouttype",{"2":{"90":1}}],["juliagetoutaxis",{"2":{"90":1}}],["juliaget",{"2":{"90":1}}],["juliagetaxis",{"2":{"89":1}}],["juliagettarrayaxes",{"2":{"46":1}}],["juliagen",{"2":{"16":1}}],["julialon",{"2":{"107":1}}],["julialookup",{"2":{"72":1}}],["julialatitudes",{"2":{"40":1}}],["juliaoptifunc",{"2":{"90":1}}],["juliaopen",{"2":{"58":1,"89":2}}],["juliaoutdims",{"2":{"89":1}}],["juliaoffset",{"2":{"13":1}}],["juliawith",{"2":{"56":1}}],["julia>",{"2":{"56":1,"93":1,"99":2,"105":2}}],["juliaurl",{"2":{"50":1}}],["juliausing",{"2":{"0":1,"2":1,"4":1,"5":1,"6":1,"8":1,"9":1,"10":1,"16":1,"17":1,"22":1,"23":2,"25":1,"26":1,"27":1,"29":2,"32":1,"33":1,"35":1,"37":1,"39":1,"40":1,"42":2,"46":1,"48":1,"56":1,"59":1,"60":1,"61":1,"64":1,"65":1,"66":1,"67":1,"69":1,"71":1,"78":1,"79":1,"80":1,"82":1,"86":1,"96":1,"98":1,"106":4,"107":1,"111":1,"112":1,"113":1}}],["juliakeylist",{"2":{"45":1}}],["juliaylonlat",{"2":{"37":1}}],["juliaytime3",{"2":{"37":1}}],["juliaytime2",{"2":{"37":1}}],["juliaytime",{"2":{"37":1}}],["juliay",{"2":{"37":1}}],["juliayaxcolumn",{"2":{"90":1}}],["juliayaxarray",{"2":{"89":1}}],["juliayax",{"2":{"0":1,"46":2}}],["juliato",{"2":{"89":1}}],["juliatos",{"2":{"68":2,"69":2,"70":3,"71":1,"72":1}}],["juliatempo",{"2":{"54":1}}],["juliatest",{"2":{"47":2}}],["juliat",{"2":{"37":1,"42":1,"98":1}}],["juliatspan",{"2":{"16":1}}],["juliamutable",{"2":{"90":1}}],["juliamatch",{"2":{"90":1}}],["juliamapcube",{"2":{"89":2}}],["juliamapslices",{"2":{"14":1,"23":1}}],["juliamovingwindow",{"2":{"89":1}}],["juliamy",{"2":{"60":1}}],["juliamean",{"2":{"56":1}}],["juliam2",{"2":{"25":1}}],["julia",{"2":{"24":1,"50":1,"60":1,"90":1,"93":1,"95":2,"96":1,"97":2,"105":2}}],["juliavector",{"2":{"22":1}}],["juliadata",{"2":{"112":1}}],["juliadataset",{"2":{"89":1}}],["juliadata3",{"2":{"30":1}}],["juliadim",{"2":{"27":1,"112":1,"113":1,"114":1}}],["juliadimarray",{"2":{"22":1}}],["juliads2",{"2":{"85":1}}],["juliads",{"2":{"18":2,"20":2,"21":1,"39":1,"40":1,"58":1,"59":1,"60":1,"63":2,"83":1,"86":2,"87":3,"89":1}}],["juliar",{"2":{"86":1}}],["juliareadcubedata",{"2":{"63":1,"89":1}}],["juliaregions",{"2":{"22":2}}],["juliaras2",{"2":{"26":1}}],["juliarandom",{"2":{"21":2}}],["juliaindims",{"2":{"18":1,"20":1,"89":1}}],["juliaimport",{"2":{"14":1,"95":1}}],["juliajulia>",{"2":{"16":5,"32":3,"33":2,"34":1,"35":1,"41":3,"42":3,"44":1,"45":1,"46":2,"51":2,"52":1,"54":2,"55":2,"56":3,"66":1,"71":4,"85":1,"86":1,"99":2,"105":1,"107":3}}],["juliaall",{"2":{"86":1}}],["juliaaxes",{"2":{"37":1}}],["juliaa2",{"2":{"12":2,"29":2,"96":1}}],["juliaa",{"2":{"2":1,"11":3}}],["juliafig",{"2":{"98":1,"100":1,"109":1,"110":1}}],["juliafindaxis",{"2":{"90":1}}],["juliafittable",{"2":{"89":2}}],["juliafiles",{"2":{"65":2,"89":2}}],["juliafunction",{"2":{"16":1,"18":1,"19":1,"21":1,"51":1,"89":1,"90":1,"99":1}}],["juliaf",{"2":{"2":1,"4":1,"5":1,"6":1,"16":1}}],["jun",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["∘",{"2":{"23":1}}],["|>",{"2":{"22":2,"112":1,"114":1}}],["⋱",{"2":{"22":1}}],["⋮",{"2":{"22":2,"72":1,"99":1}}],["^2",{"2":{"21":1}}],["⬔",{"2":{"17":1,"18":1,"35":1,"65":1,"96":1}}],["921",{"2":{"87":2}}],["923876",{"2":{"87":2}}],["926096",{"2":{"27":1}}],["991508",{"2":{"87":2}}],["957463",{"2":{"96":1}}],["952795",{"2":{"96":1}}],["958973",{"2":{"96":1}}],["95",{"2":{"56":1}}],["959705",{"2":{"96":1}}],["95965",{"2":{"87":2}}],["959",{"2":{"56":1}}],["953391",{"2":{"27":1}}],["97",{"2":{"113":1}}],["97643",{"2":{"96":1}}],["97649",{"2":{"56":1}}],["973442",{"2":{"96":1}}],["973332",{"2":{"27":1}}],["97047",{"2":{"56":1}}],["94534",{"2":{"56":1}}],["9404",{"2":{"51":1,"52":1}}],["9432",{"2":{"51":1,"52":1}}],["949935",{"2":{"25":1}}],["982108",{"2":{"96":1}}],["986",{"2":{"56":1}}],["98",{"2":{"40":6}}],["984803",{"2":{"22":1}}],["900",{"2":{"113":1}}],["908084",{"2":{"96":1}}],["903079",{"2":{"96":1}}],["90365",{"2":{"56":1}}],["90712",{"2":{"56":1}}],["90",{"2":{"40":2,"61":1,"71":5,"112":2,"113":2}}],["9122",{"2":{"61":1}}],["9192",{"2":{"56":1}}],["91",{"2":{"32":1,"71":5}}],["916686",{"2":{"27":1}}],["918555",{"2":{"25":1}}],["9375",{"2":{"59":2,"107":1,"113":1,"114":1}}],["93743",{"2":{"56":1}}],["9362",{"2":{"56":1}}],["935631",{"2":{"25":1}}],["93986",{"2":{"22":1}}],["9",{"2":{"16":14,"22":2,"34":1,"37":1,"50":2,"54":4,"70":4,"81":2,"83":1,"90":1}}],["96x71x19",{"2":{"60":1,"67":1,"79":1,"85":1}}],["96f0",{"2":{"60":1,"67":1,"79":1}}],["9682",{"2":{"51":1,"52":1}}],["96921e36",{"2":{"50":2}}],["960",{"2":{"17":1,"18":1,"22":1}}],["96",{"2":{"8":1,"9":1,"40":6,"69":2,"85":1}}],["8×1×24",{"2":{"114":1}}],["8901",{"2":{"61":1}}],["89",{"2":{"59":4,"60":2,"61":1,"63":3,"67":1,"68":2,"69":1,"70":1,"71":5,"72":3,"79":1,"85":1,"107":2,"113":2}}],["8984",{"2":{"56":1}}],["89237",{"2":{"56":1}}],["85",{"2":{"72":2,"109":1,"110":1}}],["850",{"2":{"56":1}}],["85ºn",{"2":{"40":1}}],["85714",{"2":{"22":1}}],["88",{"2":{"35":1,"59":4,"72":2,"96":1,"107":2,"113":2}}],["889583",{"2":{"22":1}}],["81",{"2":{"29":1}}],["86",{"2":{"72":2}}],["86457",{"2":{"56":1}}],["862644",{"2":{"27":1}}],["8638599930441428",{"2":{"11":1}}],["833498",{"2":{"96":1}}],["831968",{"2":{"87":2}}],["830391",{"2":{"25":1}}],["83556",{"2":{"25":1}}],["879677",{"2":{"96":1}}],["87",{"2":{"72":2}}],["87705",{"2":{"56":1}}],["872575",{"2":{"27":1}}],["870826",{"2":{"25":1}}],["875658",{"2":{"22":1}}],["847062",{"2":{"87":2}}],["840",{"2":{"64":1}}],["840389",{"2":{"22":1}}],["84",{"2":{"61":2}}],["845983",{"2":{"25":1}}],["828388",{"2":{"96":1}}],["825496",{"2":{"96":1}}],["827727",{"2":{"96":1}}],["82421875",{"2":{"61":2}}],["824354",{"2":{"22":1}}],["829062",{"2":{"22":1}}],["8",{"2":{"16":12,"22":2,"34":1,"37":1,"60":2,"63":3,"67":1,"68":2,"79":1,"85":1,"99":1}}],["80871",{"2":{"96":1}}],["80759",{"2":{"56":1}}],["800",{"2":{"33":3,"34":1,"37":1,"114":1}}],["80",{"2":{"16":1,"40":2}}],["v",{"2":{"60":1,"67":1,"79":1,"85":1}}],["v1",{"2":{"60":2,"67":2,"79":2,"85":2,"95":1}}],["v20190710",{"2":{"59":1,"107":2,"112":1}}],["vol",{"2":{"60":1,"67":1,"79":1,"85":1}}],["volume",{"2":{"46":4}}],["voilà",{"2":{"46":1}}],["visit",{"2":{"115":1}}],["visual",{"2":{"112":2,"113":4,"114":1,"115":1}}],["visualizations",{"2":{"112":1}}],["visualization",{"2":{"42":1}}],["video",{"2":{"101":1}}],["videos",{"2":{"101":1}}],["via",{"2":{"51":1}}],["vice",{"2":{"24":1}}],["view",{"2":{"22":1,"96":1}}],["version",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"89":1,"97":2,"105":1,"107":1}}],["versa",{"2":{"24":1}}],["verify",{"2":{"55":1,"87":1}}],["very",{"2":{"13":1,"42":1,"74":1}}],["vector",{"0":{"22":1},"2":{"22":4,"34":1,"47":1,"51":1,"53":1,"54":3,"55":2,"56":1,"66":1,"74":1,"89":2,"90":3}}],["val",{"2":{"34":2,"72":1}}],["vals",{"2":{"22":1}}],["value",{"2":{"12":1,"14":3,"16":2,"41":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":4,"90":1,"112":2,"113":6,"114":1,"115":1}}],["values=ds1",{"2":{"42":1}}],["values",{"0":{"34":1,"87":1},"2":{"9":1,"20":1,"21":1,"22":2,"28":1,"29":2,"32":2,"33":1,"34":1,"40":3,"42":4,"45":1,"46":2,"65":2,"66":1,"70":1,"72":2,"74":1,"75":1,"86":1,"87":3,"89":9,"96":1,"107":1}}],["varoables",{"2":{"89":1}}],["variant",{"2":{"59":1,"107":1}}],["variable",{"0":{"5":1,"43":1,"44":1,"45":1},"1":{"44":1,"45":1},"2":{"5":1,"9":1,"40":3,"59":1,"63":2,"86":2,"89":1,"90":6,"96":1,"98":1,"99":1,"100":1,"107":1}}],["variables=at",{"2":{"41":2,"96":1}}],["variables",{"0":{"6":1,"39":1,"40":1},"2":{"4":5,"5":4,"6":2,"9":4,"17":2,"18":1,"19":1,"20":1,"21":1,"24":1,"30":1,"35":2,"38":1,"39":2,"40":11,"44":1,"45":4,"46":11,"59":4,"60":1,"61":1,"62":1,"63":1,"65":3,"66":1,"67":1,"75":1,"76":1,"78":3,"79":1,"85":4,"86":1,"89":5,"90":1,"96":2,"107":4}}],["varlist",{"2":{"45":2}}],["var2=var2",{"2":{"39":1}}],["var2",{"2":{"35":2,"39":3,"41":1}}],["var1=var1",{"2":{"39":1}}],["var1",{"2":{"35":2,"39":3,"41":1}}],["var",{"2":{"9":2,"98":2,"99":2,"100":2}}],["uv",{"2":{"111":1}}],["u",{"2":{"99":1}}],["up",{"2":{"89":1}}],["updates",{"0":{"97":1}}],["updated",{"2":{"87":1}}],["update",{"0":{"87":1},"2":{"87":2,"89":1}}],["updating",{"2":{"48":1,"87":1}}],["ucar",{"2":{"60":1,"67":1,"75":1,"79":1}}],["urls",{"2":{"57":1}}],["url",{"2":{"50":1,"59":1}}],["unreleased",{"2":{"105":1}}],["unpermuted",{"2":{"90":2}}],["unpractical",{"2":{"50":1}}],["underlying",{"2":{"89":1,"90":1,"97":1}}],["unlike",{"2":{"76":1}}],["unweighted",{"2":{"51":1,"56":1}}],["unique",{"2":{"99":1}}],["unidata",{"2":{"60":1,"67":1,"75":1,"79":1}}],["unit",{"2":{"61":1}}],["unitrange",{"2":{"51":2,"52":2,"56":6}}],["units",{"2":{"50":2,"59":1,"60":2,"63":6,"68":4,"69":6,"70":6,"71":10,"113":1,"114":1}}],["unions",{"0":{"47":1}}],["union",{"2":{"14":2,"16":4,"18":2,"20":1,"21":1,"22":1,"41":1,"42":2,"47":2,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"86":2,"87":1}}],["unordered",{"2":{"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3}}],["unnecessary",{"2":{"22":1}}],["unchanged",{"2":{"13":1}}],["usage",{"2":{"78":1}}],["usually",{"2":{"59":1,"74":2,"75":2,"113":1,"114":1}}],["usual",{"2":{"51":1,"58":1}}],["us",{"2":{"22":1,"66":1}}],["useable",{"2":{"58":1,"89":1}}],["used",{"2":{"22":1,"23":1,"37":1,"51":1,"67":1,"72":1,"73":1,"74":1,"77":1,"78":1,"89":6,"90":3,"112":1}}],["uses",{"2":{"20":1,"42":1,"60":1}}],["userguide",{"2":{"92":2}}],["users",{"2":{"90":1}}],["user",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1,"90":1}}],["use",{"0":{"42":1},"2":{"0":1,"8":1,"9":1,"10":4,"13":1,"23":2,"32":2,"37":1,"39":1,"40":1,"41":1,"42":2,"46":2,"48":1,"50":1,"52":1,"62":1,"64":1,"66":1,"71":2,"76":1,"81":1,"86":1,"89":4,"90":1,"101":1,"103":1,"105":1,"107":2}}],["useful",{"2":{"0":1,"76":1}}],["using",{"2":{"0":1,"8":2,"9":2,"10":2,"16":3,"17":4,"22":3,"23":8,"27":1,"29":1,"32":1,"33":2,"35":2,"37":2,"39":2,"40":2,"41":1,"42":1,"46":3,"48":5,"58":1,"59":2,"60":3,"61":2,"62":1,"64":1,"65":1,"66":1,"67":2,"69":3,"70":2,"78":1,"79":2,"85":1,"86":3,"96":1,"97":1,"98":2,"99":2,"105":1,"107":3,"111":1,"112":6}}],["+proj=moll",{"2":{"110":1}}],["+",{"2":{"12":2,"13":1,"16":2,"18":2,"21":1,"64":2,"65":1,"98":1,"109":1,"112":1,"115":1}}],["kwargs",{"2":{"89":5,"90":2}}],["know",{"2":{"63":1}}],["k",{"2":{"46":5,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["keyword",{"2":{"58":1,"85":1,"89":7,"90":2}}],["key",{"2":{"48":1,"89":1}}],["keys=",{"2":{"58":1,"89":1}}],["keyset",{"2":{"46":1}}],["keys",{"2":{"46":7,"58":3,"89":4}}],["keylist",{"2":{"45":1}}],["keeps",{"2":{"13":1}}],["keep",{"2":{"0":1,"90":1,"112":1}}],["kb",{"2":{"10":1,"12":1,"13":1,"14":1,"16":2,"22":1,"29":2,"32":1,"35":1,"37":4,"41":3,"42":1,"69":1,"70":3,"71":5,"96":1,"99":1}}],["↗",{"2":{"10":1,"12":1,"13":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":3,"22":1,"29":3,"30":1,"32":3,"35":1,"37":5,"39":2,"41":3,"50":2,"51":1,"59":2,"60":2,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"70":3,"71":5,"79":1,"85":2,"86":2,"96":1,"107":1,"113":1,"114":1}}],["0e8",{"2":{"89":1}}],["04",{"2":{"114":1}}],["0436",{"2":{"96":1}}],["04t00",{"2":{"65":1,"66":1,"114":1}}],["0465",{"2":{"56":1}}],["029247418895843032",{"2":{"99":1}}],["022312156353890087",{"2":{"99":1}}],["02345835017256051",{"2":{"99":1}}],["0247931",{"2":{"96":1}}],["02t00",{"2":{"65":1,"66":2}}],["02",{"2":{"59":1,"65":2}}],["0210077",{"2":{"25":1}}],["0214057",{"2":{"25":1}}],["0f20",{"2":{"59":1,"60":2,"63":6,"68":4,"69":6,"70":6,"71":10,"113":1,"114":1}}],["0f32",{"2":{"16":2}}],["039451611552802975",{"2":{"99":1}}],["03528277758302477",{"2":{"99":1}}],["0358348",{"2":{"25":1}}],["03t00",{"2":{"66":1}}],["03",{"2":{"65":2}}],["03361",{"2":{"56":1}}],["06417594925348342",{"2":{"99":1}}],["06159722707791853",{"2":{"99":1}}],["06t00",{"2":{"66":1}}],["062270000476910094",{"2":{"99":1}}],["0625",{"2":{"59":2,"107":1,"113":1}}],["0620649",{"2":{"27":1}}],["06755",{"2":{"56":1}}],["08158557886952912",{"2":{"99":1}}],["08058305464254185",{"2":{"99":1}}],["0833026",{"2":{"96":1}}],["08",{"2":{"50":2,"54":1}}],["09689360224777122",{"2":{"99":1}}],["0962708",{"2":{"96":1}}],["0940127",{"2":{"87":2}}],["09",{"2":{"50":2,"54":1}}],["0ºe",{"2":{"40":1}}],["0750790675265741",{"2":{"99":1}}],["07t00",{"2":{"66":2}}],["07",{"2":{"59":2,"64":1,"107":1,"113":1,"114":1}}],["0702532",{"2":{"27":1}}],["0723492",{"2":{"22":1}}],["00722034",{"2":{"56":1}}],["00709111",{"2":{"56":1}}],["00684233",{"2":{"56":1}}],["00693713",{"2":{"56":1}}],["00990356",{"2":{"56":1}}],["0057",{"2":{"56":1}}],["00388",{"2":{"56":1}}],["00",{"2":{"20":4,"46":16,"50":8,"54":4,"59":9,"60":8,"63":12,"65":4,"66":16,"67":4,"68":8,"69":8,"70":12,"71":20,"79":4,"85":4,"107":5,"113":6,"114":4}}],["05742042630154354",{"2":{"99":1}}],["0571978",{"2":{"96":1}}],["05611581504766607",{"2":{"99":1}}],["0566881",{"2":{"27":1}}],["05846",{"2":{"56":1}}],["0537",{"2":{"51":1,"52":1}}],["052264",{"2":{"27":1}}],["05t00",{"2":{"20":1,"66":1}}],["05",{"2":{"17":2,"18":1,"21":3,"37":3,"64":1}}],["01t21",{"2":{"113":2}}],["01t03",{"2":{"59":2,"107":1,"113":1,"114":1}}],["01t00",{"2":{"20":1,"46":4,"59":2,"107":1}}],["0174532925199433",{"2":{"61":1}}],["0178074",{"2":{"56":1}}],["0114824",{"2":{"96":1}}],["0117519",{"2":{"56":1}}],["0115514",{"2":{"56":1}}],["0127077",{"2":{"56":1}}],["0123091",{"2":{"56":1}}],["0121037",{"2":{"56":1}}],["019016",{"2":{"56":1}}],["018571",{"2":{"56":1}}],["0182373",{"2":{"56":1}}],["0180572",{"2":{"56":1}}],["0183003",{"2":{"56":1}}],["018",{"2":{"51":1,"52":1}}],["01",{"2":{"10":6,"12":3,"13":3,"14":3,"16":12,"17":6,"18":3,"20":2,"21":9,"22":9,"23":3,"29":9,"30":3,"37":22,"39":8,"40":11,"46":8,"59":5,"60":4,"63":6,"64":2,"65":6,"66":8,"67":2,"68":4,"69":6,"70":6,"71":10,"79":2,"85":2,"98":2,"99":4,"107":5,"113":5,"114":5}}],["0",{"2":{"8":1,"9":1,"10":6,"11":2,"12":6,"13":6,"14":7,"16":303,"17":7,"18":7,"19":7,"20":6,"21":10,"22":75,"25":36,"27":45,"29":12,"30":6,"33":3,"34":1,"35":9,"37":1,"40":4,"41":27,"42":11,"47":2,"54":2,"55":40,"56":19,"59":7,"60":10,"61":6,"63":12,"64":1,"67":6,"68":8,"69":6,"70":14,"71":20,"72":7,"79":6,"81":1,"83":1,"84":1,"85":6,"86":1,"87":40,"89":2,"90":1,"96":80,"97":1,"98":2,"99":19,"100":1,"107":4,"109":2,"110":2,"111":2,"112":1,"113":4,"114":5}}],["┤",{"2":{"8":2,"9":2,"10":2,"12":2,"13":2,"14":4,"16":10,"17":2,"18":2,"19":2,"21":6,"22":5,"25":2,"27":3,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":4,"52":2,"54":6,"55":3,"56":6,"59":2,"60":2,"63":6,"64":2,"68":4,"69":5,"70":6,"71":10,"86":2,"96":4,"99":2,"113":2,"114":2}}],["┐",{"2":{"8":2,"9":2,"10":2,"12":2,"13":2,"14":4,"16":10,"17":2,"18":2,"19":2,"21":6,"22":8,"25":2,"27":4,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":3,"52":1,"54":5,"55":3,"56":3,"59":2,"60":2,"63":6,"64":2,"68":4,"69":7,"70":6,"71":10,"72":2,"86":2,"96":4,"99":2,"113":2,"114":2}}],["┌",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":4,"25":1,"27":2,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"72":1,"86":1,"96":2,"99":1,"113":1,"114":1}}],["768",{"2":{"114":1}}],["76",{"2":{"72":2}}],["700",{"2":{"115":1}}],["70",{"2":{"70":3}}],["7030",{"2":{"61":1}}],["701332",{"2":{"22":1}}],["730",{"2":{"100":1}}],["7341",{"2":{"56":1}}],["73",{"2":{"56":1}}],["731779",{"2":{"27":1}}],["790617",{"2":{"96":1}}],["79472",{"2":{"96":1}}],["79",{"2":{"60":2,"63":3,"67":1,"68":2,"69":2,"70":4,"71":5,"72":3,"79":1,"85":1}}],["79502",{"2":{"56":1}}],["796375",{"2":{"27":1}}],["757781",{"2":{"96":1}}],["75",{"2":{"72":2}}],["7593",{"2":{"56":1}}],["75891",{"2":{"56":1}}],["75269",{"2":{"25":1}}],["752417",{"2":{"22":1}}],["776172",{"2":{"96":1}}],["77687",{"2":{"56":1}}],["77",{"2":{"72":2}}],["77587",{"2":{"56":1}}],["770949",{"2":{"27":1}}],["743343",{"2":{"96":1}}],["748725",{"2":{"96":1}}],["746259",{"2":{"87":2}}],["74",{"2":{"72":2}}],["744521",{"2":{"27":1}}],["74732",{"2":{"25":1}}],["716721",{"2":{"96":1}}],["716952",{"2":{"87":2}}],["717",{"2":{"71":5}}],["71",{"2":{"70":1}}],["7158",{"2":{"51":1,"52":1}}],["7119",{"2":{"51":1,"52":1}}],["718667",{"2":{"27":1}}],["71314",{"2":{"27":1}}],["71429",{"2":{"22":2}}],["78064",{"2":{"96":1}}],["783779",{"2":{"96":1}}],["787476",{"2":{"96":1}}],["78",{"2":{"70":1,"72":2}}],["78467",{"2":{"25":1}}],["789891",{"2":{"25":1}}],["781773",{"2":{"22":1}}],["7",{"2":{"8":1,"16":10,"21":3,"22":1,"29":1,"34":1,"50":2,"59":1,"64":9,"65":3,"66":1,"83":1,"107":1,"113":1}}],["→",{"2":{"4":1,"5":1,"6":1,"9":1,"10":1,"12":1,"13":1,"14":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":3,"22":6,"25":1,"27":3,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":2,"41":3,"42":2,"45":2,"46":4,"47":2,"50":2,"51":1,"59":2,"60":2,"61":1,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"69":1,"70":3,"71":5,"79":1,"85":2,"86":2,"96":2,"107":1,"113":1,"114":1}}],["↓",{"2":{"4":3,"5":3,"6":1,"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"20":1,"21":3,"22":6,"25":1,"27":3,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":8,"41":3,"42":3,"44":1,"45":3,"46":4,"47":2,"50":2,"51":3,"52":1,"54":4,"55":2,"56":3,"59":2,"60":2,"61":1,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"69":3,"70":3,"71":5,"72":1,"79":1,"85":2,"86":2,"96":2,"99":2,"107":1,"113":1,"114":1}}],["45×170×24",{"2":{"71":5}}],["456765",{"2":{"25":1}}],["415137",{"2":{"96":1}}],["4198",{"2":{"56":1}}],["41241",{"2":{"56":1}}],["41049",{"2":{"56":1}}],["41634",{"2":{"56":1}}],["417937",{"2":{"22":1}}],["487093",{"2":{"96":1}}],["487315",{"2":{"96":1}}],["48367",{"2":{"56":1}}],["48",{"2":{"50":2,"96":1}}],["480",{"2":{"21":2,"42":1}}],["40",{"2":{"40":2}}],["400",{"2":{"25":1,"86":1,"98":1,"100":1,"112":1,"113":2,"114":1,"115":1}}],["44",{"2":{"37":1,"41":3}}],["496429",{"2":{"96":1}}],["499743",{"2":{"96":1}}],["49909",{"2":{"56":1}}],["4947",{"2":{"56":1}}],["492817",{"2":{"27":1}}],["497189",{"2":{"22":1}}],["4326",{"2":{"61":1}}],["43254",{"2":{"56":1}}],["4325",{"2":{"51":1,"52":1}}],["432286",{"2":{"22":1}}],["435994",{"2":{"27":1}}],["475725",{"2":{"27":1}}],["472308",{"2":{"22":1}}],["4×30",{"2":{"22":1}}],["4×3×7",{"2":{"21":1}}],["4×3×2",{"2":{"19":1}}],["4675308904227747",{"2":{"114":1}}],["46506",{"2":{"56":1}}],["465103",{"2":{"22":1}}],["46",{"2":{"35":1,"96":1}}],["463503",{"2":{"22":1}}],["426519",{"2":{"25":1}}],["42857",{"2":{"22":2}}],["42",{"2":{"11":3}}],["4",{"2":{"4":4,"5":4,"16":4,"17":4,"18":2,"19":2,"20":1,"21":8,"22":9,"27":1,"34":1,"35":1,"40":6,"51":2,"52":1,"53":1,"54":2,"55":2,"56":4,"64":1,"86":3,"87":2,"96":3,"98":1,"100":1}}],["3d",{"0":{"111":1}}],["3hr",{"2":{"59":2,"107":3,"112":1}}],["34818",{"2":{"56":1}}],["34832",{"2":{"56":1}}],["348362",{"2":{"25":1}}],["34549",{"2":{"56":1}}],["34218",{"2":{"56":1}}],["337016",{"2":{"87":2}}],["337926",{"2":{"25":1}}],["33565",{"2":{"56":1}}],["320869",{"2":{"96":1}}],["320052",{"2":{"96":1}}],["32555",{"2":{"56":1}}],["3252",{"2":{"51":1,"52":1}}],["32149",{"2":{"56":1}}],["3×3",{"2":{"47":1}}],["3×20",{"2":{"42":1}}],["384×192×7",{"2":{"113":1}}],["384×192×251288",{"2":{"59":1}}],["3866",{"2":{"56":1}}],["38364",{"2":{"56":1}}],["3835",{"2":{"51":1,"52":1}}],["38",{"2":{"37":1,"70":3}}],["312",{"2":{"56":1}}],["31753",{"2":{"56":1}}],["3169",{"2":{"56":1}}],["3188",{"2":{"56":1}}],["31",{"2":{"37":2,"39":1,"40":1,"98":1,"99":2}}],["360",{"2":{"112":1,"113":1}}],["3600",{"2":{"37":1,"39":2}}],["366",{"2":{"100":1}}],["366625",{"2":{"27":1}}],["365×1",{"2":{"99":1}}],["365",{"2":{"99":1,"100":4}}],["36126",{"2":{"56":1}}],["36142",{"2":{"56":1}}],["36836",{"2":{"56":1}}],["369",{"2":{"40":1}}],["36",{"2":{"37":1,"39":2,"40":1,"54":1}}],["364288",{"2":{"25":1}}],["374138",{"2":{"96":1}}],["37",{"2":{"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["372",{"2":{"56":1}}],["372761",{"2":{"22":1}}],["37878",{"2":{"56":1}}],["376135",{"2":{"22":1}}],["35762",{"2":{"87":2}}],["35700351866494",{"2":{"59":4,"107":2,"113":2}}],["35432",{"2":{"56":1}}],["35483",{"2":{"56":1}}],["359",{"2":{"40":1,"59":2,"60":2,"63":3,"67":1,"68":2,"69":1,"72":2,"79":1,"85":1,"107":1,"113":1}}],["35",{"2":{"10":1,"12":1,"13":1,"22":1,"29":1}}],["303359",{"2":{"96":1}}],["309666",{"2":{"96":1}}],["307f8f0e584a39a050c042849004e6a2bd674f99",{"2":{"61":1}}],["3069",{"2":{"56":1}}],["30018",{"2":{"56":1}}],["30142",{"2":{"56":1}}],["30113",{"2":{"56":1}}],["30×15×10",{"2":{"16":1}}],["30×10×15",{"2":{"10":1,"12":1,"13":1,"22":1,"29":1}}],["30",{"2":{"10":3,"12":1,"13":1,"14":2,"16":5,"22":5,"23":2,"26":2,"29":4,"30":2,"56":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"107":1}}],["39",{"2":{"10":1,"16":3,"18":1,"19":1,"33":1,"35":1,"37":1,"39":1,"40":1,"41":2,"56":1,"58":1,"62":1,"63":1,"67":1,"77":1,"81":1,"89":2,"92":4,"99":3,"112":4,"113":2,"114":1}}],["3",{"2":{"4":8,"5":8,"6":10,"10":1,"11":3,"12":3,"13":2,"16":4,"17":3,"18":1,"19":3,"20":1,"21":14,"22":6,"27":1,"29":3,"32":5,"34":1,"37":4,"41":4,"42":5,"46":1,"47":2,"50":2,"51":2,"56":31,"59":1,"60":1,"63":3,"64":5,"68":2,"70":4,"71":5,"85":1,"86":3,"89":1,"96":3,"98":2,"113":1,"114":1}}],["zoom",{"2":{"111":1}}],["zopen",{"2":{"59":1,"87":1,"107":1,"112":1}}],["zeros",{"2":{"86":3,"99":1}}],["z",{"2":{"4":2,"5":3,"6":2,"85":2}}],["zarray",{"2":{"87":1}}],["zarr",{"0":{"59":1,"80":1,"81":1,"104":1},"1":{"81":1},"2":{"0":1,"2":2,"4":2,"5":2,"6":2,"16":5,"17":1,"20":2,"23":1,"27":1,"47":1,"58":2,"59":3,"80":5,"81":5,"84":3,"85":4,"86":6,"87":2,"89":4,"90":2,"106":2,"107":1,"112":1}}],["xticklabelalign",{"2":{"98":1,"100":1}}],["xticklabelrotation",{"2":{"98":1,"100":1}}],["xlabel=",{"2":{"98":1,"100":1}}],["xdim",{"2":{"78":3}}],["xx",{"2":{"60":1,"67":1,"79":1,"85":1}}],["xc",{"2":{"50":2}}],["xarray",{"2":{"49":1,"50":1}}],["x26",{"2":{"22":12,"40":12}}],["x3c",{"2":{"22":12,"40":4,"89":1}}],["xyz",{"2":{"21":2}}],["xy",{"2":{"19":2}}],["xyt",{"2":{"19":2,"21":2}}],["xin",{"2":{"18":8,"19":11,"21":8,"22":3,"41":3}}],["xout",{"2":{"16":2,"18":6,"19":6,"21":2,"22":3}}],["x",{"2":{"4":2,"5":3,"6":2,"13":2,"26":1,"27":3,"41":4,"47":2,"50":2,"51":2,"52":1,"56":3,"61":1,"74":1,"87":2,"90":1,"96":3,"98":1,"99":6}}],["ndata",{"2":{"109":2,"110":1,"111":1}}],["ndays",{"2":{"99":4}}],["nlon",{"2":{"109":2,"110":1}}],["npy",{"2":{"98":2,"99":2}}],["nin",{"2":{"90":2}}],["ntr",{"2":{"90":1}}],["ntuple",{"2":{"90":4}}],["nthreads",{"2":{"89":2}}],["nvalid",{"2":{"89":1}}],["n",{"2":{"73":1,"89":3}}],["n256",{"2":{"56":1}}],["nan",{"2":{"50":2,"51":48,"52":48,"56":384}}],["name=cube",{"2":{"89":1}}],["named",{"2":{"67":1,"69":1,"70":1,"74":1,"78":1,"89":2,"97":1}}],["namedtuple",{"2":{"18":1,"20":1,"89":1,"90":3}}],["names",{"0":{"21":1,"32":1,"43":1,"45":1},"1":{"33":1,"44":1,"45":1},"2":{"29":2,"46":1,"53":1,"74":2,"89":2,"90":1}}],["namely",{"2":{"16":1,"17":1}}],["name",{"0":{"44":1},"2":{"2":1,"18":4,"20":1,"45":1,"50":4,"51":1,"56":1,"59":3,"60":4,"63":12,"65":1,"68":8,"69":12,"70":12,"71":20,"77":1,"86":2,"89":6,"90":5,"96":1,"113":3,"114":3}}],["nc",{"2":{"50":2,"60":2,"64":4,"65":6,"66":2,"67":2,"79":2,"82":2,"83":3,"89":6}}],["number",{"2":{"49":1,"54":1,"81":1,"83":1,"89":2,"90":1,"99":1}}],["numbers",{"2":{"10":1,"96":1}}],["nout",{"2":{"90":2}}],["normal",{"2":{"89":1,"111":1}}],["north",{"2":{"61":1}}],["nometadata",{"2":{"51":3,"52":2,"54":3,"55":1,"56":10}}],["november",{"2":{"60":1,"67":1,"79":1,"85":1}}],["nov",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["nonnumeric",{"2":{"113":3,"114":1,"115":1}}],["nonmissingtype",{"2":{"90":1}}],["none",{"2":{"40":2,"45":1,"46":1,"59":1,"85":1,"107":1}}],["non",{"2":{"23":1,"89":1,"90":1,"98":1}}],["now",{"2":{"16":3,"18":1,"22":1,"33":1,"35":1,"37":1,"42":1,"46":1,"51":1,"52":1,"54":1,"56":1,"58":1,"86":2,"87":1,"93":1,"112":2}}],["no",{"2":{"14":1,"21":1,"27":1,"36":1,"81":1,"83":1,"86":1,"89":1,"90":1}}],["notice",{"2":{"81":1}}],["notation",{"2":{"37":1,"71":1}}],["nothing",{"2":{"18":1,"19":1,"21":1,"51":2,"54":4,"55":2,"56":5,"90":1}}],["note",{"2":{"9":1,"13":1,"16":4,"18":1,"21":1,"22":1,"33":1,"40":1,"47":1,"51":1,"52":1,"60":1,"63":1,"65":1,"86":1,"89":1,"90":1,"112":1}}],["not",{"0":{"40":1},"2":{"0":1,"1":1,"13":1,"36":1,"40":3,"45":1,"46":2,"47":1,"50":1,"60":1,"78":1,"86":2,"89":3,"90":3,"112":1}}],["neighbour",{"2":{"89":1}}],["neighboring",{"2":{"13":1}}],["near",{"2":{"59":2,"71":1,"107":1,"113":2,"114":2}}],["needed",{"2":{"89":1}}],["need",{"2":{"45":1,"87":1,"89":1,"90":1,"92":1}}],["next",{"2":{"41":1,"42":1,"53":1,"78":1,"93":2}}],["netcdf4",{"2":{"60":1}}],["netcdf",{"0":{"60":1,"82":1,"83":1},"1":{"83":1},"2":{"27":1,"47":1,"48":2,"58":1,"60":4,"62":1,"64":3,"65":1,"66":1,"67":2,"75":3,"79":2,"82":3,"83":2,"84":1,"89":3,"106":2}}],["necessary",{"2":{"16":1,"49":1,"50":1,"87":1,"90":4}}],["newdim",{"2":{"78":2,"89":1}}],["new",{"0":{"9":1,"65":1},"2":{"10":1,"12":1,"16":1,"29":1,"32":1,"33":3,"48":1,"53":1,"64":1,"65":2,"76":1,"84":1,"85":1,"86":1,"89":5,"90":4,"92":6,"99":1}}],["bit",{"2":{"114":1}}],["bits",{"2":{"89":2}}],["big",{"2":{"74":1}}],["black",{"2":{"100":1}}],["blocks",{"2":{"89":1}}],["blosccompressor",{"2":{"81":1}}],["blue",{"2":{"61":1,"75":1}}],["boundaries",{"2":{"90":1}}],["bounds",{"2":{"89":1}}],["both",{"2":{"66":1}}],["bold",{"2":{"56":1}}],["bool=true",{"2":{"90":1}}],["bool=false",{"2":{"89":1,"90":1}}],["boolean",{"2":{"89":3}}],["bool",{"2":{"47":3,"90":6}}],["bwr",{"2":{"56":1}}],["b`",{"2":{"37":1}}],["broad",{"2":{"102":1}}],["broadcasts",{"2":{"90":1}}],["broadcast",{"2":{"51":1,"56":1}}],["broadcasted",{"2":{"16":2,"89":1,"90":1}}],["brown",{"2":{"100":1}}],["browser",{"2":{"93":1}}],["brightness",{"2":{"74":1,"75":1}}],["brings",{"2":{"90":1}}],["bring",{"2":{"34":1}}],["branch",{"2":{"59":1,"107":1}}],["built",{"2":{"112":1}}],["build",{"0":{"93":1},"2":{"32":1,"93":1}}],["bug",{"2":{"91":1}}],["bundle",{"2":{"75":1}}],["but",{"0":{"40":1},"2":{"8":1,"16":2,"32":1,"33":2,"40":2,"45":1,"46":2,"60":1,"69":1,"70":1,"78":1,"89":2}}],["b",{"2":{"17":2,"18":1,"19":1,"20":1,"22":13,"45":2,"58":1,"71":2,"89":3}}],["basic",{"2":{"115":1}}],["based",{"0":{"104":1},"2":{"89":1,"90":1}}],["base",{"0":{"25":1},"2":{"4":4,"5":4,"6":2,"18":1,"20":1,"25":4,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"51":1,"86":6,"90":1,"96":2}}],["backgroundcolor=",{"2":{"111":1}}],["back",{"2":{"89":1}}],["backend",{"2":{"89":6}}],["backendlist",{"2":{"48":1,"89":1}}],["backend=",{"2":{"2":1,"16":2,"84":1,"85":1,"89":1}}],["by=",{"2":{"42":2,"89":2}}],["bytes",{"2":{"8":1,"9":1,"14":1,"16":3,"17":1,"18":1,"19":1,"21":3,"22":1,"25":1,"27":1,"33":3,"34":1,"37":1,"42":2,"47":2,"54":1,"64":1,"69":2,"83":4,"86":1,"96":1,"114":1}}],["by",{"0":{"4":1,"5":1},"2":{"2":1,"10":2,"14":1,"16":1,"22":1,"28":1,"29":1,"33":1,"36":1,"37":6,"40":2,"42":1,"49":1,"50":1,"53":1,"54":1,"55":1,"56":1,"59":1,"60":1,"74":3,"76":1,"77":1,"78":2,"84":1,"87":2,"89":12,"90":6,"92":1,"93":1,"95":1,"99":1,"113":1,"114":1}}],["beware",{"2":{"101":1}}],["best",{"2":{"90":1,"103":1}}],["become",{"2":{"89":1}}],["because",{"2":{"1":1,"13":1,"14":1,"16":1}}],["before",{"2":{"86":1,"89":1,"93":1}}],["belonging",{"2":{"75":1}}],["belongs",{"2":{"22":1}}],["being",{"2":{"46":1,"112":1}}],["been",{"2":{"40":1,"78":2,"87":1}}],["between",{"2":{"26":1,"27":1,"37":1,"39":1,"40":2,"71":1,"81":1,"83":1,"89":1}}],["begin",{"2":{"23":1}}],["be",{"2":{"0":5,"2":1,"3":1,"4":1,"13":1,"15":1,"16":2,"22":1,"24":1,"37":1,"40":1,"41":1,"42":2,"45":1,"46":1,"50":1,"59":2,"60":1,"61":1,"62":2,"63":1,"72":1,"74":1,"76":2,"78":2,"84":1,"85":1,"86":1,"89":23,"90":9,"92":1,"97":1,"101":1,"105":1,"107":1,"115":1}}],["623962",{"2":{"96":1}}],["622774",{"2":{"96":1}}],["666534",{"2":{"96":1}}],["665274",{"2":{"96":1}}],["665723",{"2":{"25":1}}],["6326",{"2":{"61":1}}],["6378137",{"2":{"61":1}}],["63006",{"2":{"56":1}}],["69",{"2":{"59":1}}],["69085",{"2":{"56":1}}],["600",{"2":{"98":1,"100":1,"108":1,"109":1,"110":1,"112":1,"113":1}}],["60764",{"2":{"96":1}}],["60265",{"2":{"59":1,"107":1}}],["60918",{"2":{"56":1}}],["60175",{"2":{"56":1}}],["650",{"2":{"113":2}}],["65105",{"2":{"56":1}}],["652339",{"2":{"25":1}}],["645512",{"2":{"96":1}}],["645758",{"2":{"25":1}}],["64976",{"2":{"56":1}}],["642",{"2":{"50":1}}],["6122",{"2":{"56":1}}],["61197",{"2":{"56":1}}],["611084",{"2":{"25":1}}],["619",{"2":{"51":1,"52":1}}],["617023",{"2":{"27":1}}],["673373",{"2":{"25":1}}],["671662",{"2":{"22":1}}],["672",{"2":{"21":1}}],["683599",{"2":{"96":1}}],["687891",{"2":{"27":1}}],["684389",{"2":{"22":1}}],["685454",{"2":{"22":1}}],["6×2",{"2":{"9":1}}],["6",{"2":{"2":6,"4":6,"5":6,"6":6,"8":4,"9":5,"16":8,"22":1,"34":1,"37":1,"59":1,"66":1,"107":1}}],["1e8",{"2":{"90":1}}],["1f2",{"2":{"47":1}}],["191898",{"2":{"96":1}}],["1992",{"2":{"89":1}}],["1991",{"2":{"89":1}}],["1990",{"2":{"89":1}}],["198806",{"2":{"96":1}}],["1984",{"2":{"61":1}}],["1983",{"2":{"50":2,"54":1}}],["1980",{"2":{"50":2,"54":1}}],["193109",{"2":{"27":1}}],["197238",{"2":{"25":1}}],["19241",{"2":{"56":1}}],["192",{"2":{"19":1,"109":1}}],["19",{"2":{"16":16,"70":3,"71":5}}],["182371",{"2":{"87":2}}],["18583",{"2":{"56":1}}],["18892",{"2":{"56":1}}],["18434",{"2":{"56":1}}],["180×170",{"2":{"69":1}}],["180×170×24",{"2":{"60":1,"63":3,"68":2}}],["180",{"2":{"40":2,"61":1,"71":5,"109":1}}],["180ºe",{"2":{"40":1}}],["18",{"2":{"16":18}}],["14715175267308206",{"2":{"99":1}}],["1437",{"2":{"56":1}}],["145747",{"2":{"22":1}}],["14286",{"2":{"22":1}}],["14",{"2":{"16":20,"27":1}}],["137114",{"2":{"96":1}}],["1372",{"2":{"51":1,"52":1}}],["136",{"2":{"60":1,"67":1,"79":1,"85":1}}],["1363",{"2":{"51":1,"52":1}}],["13z",{"2":{"59":2,"107":1,"113":1,"114":1}}],["13205",{"2":{"27":1}}],["13",{"2":{"16":20,"27":1,"60":1,"67":1,"79":1,"85":1}}],["170",{"2":{"72":1}}],["179919",{"2":{"96":1}}],["179",{"2":{"61":1,"71":5}}],["17578125",{"2":{"61":2}}],["17593",{"2":{"22":1}}],["17434",{"2":{"56":1}}],["174934",{"2":{"25":1}}],["17852",{"2":{"56":1}}],["17863",{"2":{"56":1}}],["178603",{"2":{"22":1}}],["17647",{"2":{"56":1}}],["1762",{"2":{"51":1,"52":1}}],["17t00",{"2":{"50":2,"54":1}}],["172",{"2":{"47":1}}],["17",{"2":{"14":1,"16":22,"42":1,"70":1}}],["16t00",{"2":{"60":4,"63":6,"67":2,"68":4,"69":4,"70":6,"71":10,"79":2,"85":2}}],["16t12",{"2":{"50":2,"54":1}}],["1644",{"2":{"56":1}}],["16824",{"2":{"56":1}}],["16581",{"2":{"56":1}}],["16631",{"2":{"56":1}}],["166212",{"2":{"25":1}}],["16713",{"2":{"56":1}}],["167676",{"2":{"22":1}}],["16258",{"2":{"56":1}}],["169284",{"2":{"25":1}}],["16",{"2":{"10":1,"12":1,"13":1,"16":20,"22":1,"29":1,"60":2,"63":3,"67":1,"68":2,"69":4,"70":3,"71":5,"79":1,"85":1}}],["156",{"2":{"114":1}}],["15644",{"2":{"56":1}}],["157",{"2":{"114":1}}],["150",{"2":{"114":2}}],["155874",{"2":{"96":1}}],["15532",{"2":{"56":1}}],["158741",{"2":{"87":2}}],["159",{"2":{"70":1}}],["151146",{"2":{"25":1}}],["152534",{"2":{"25":1}}],["15394",{"2":{"22":1}}],["15×10×30",{"2":{"16":1}}],["15×10",{"2":{"16":2}}],["15",{"2":{"10":1,"16":25,"22":6,"23":1,"27":4,"29":1,"30":1,"35":2,"42":1,"50":2,"96":1}}],["128",{"2":{"111":1}}],["128204",{"2":{"25":1}}],["1242",{"2":{"56":1}}],["12575",{"2":{"56":1}}],["121",{"2":{"47":1}}],["121947",{"2":{"22":1}}],["12370988510072528",{"2":{"99":1}}],["123",{"2":{"17":1,"21":2}}],["1200",{"2":{"108":1,"109":1,"110":1}}],["120997",{"2":{"22":1}}],["120",{"2":{"16":1}}],["12",{"2":{"8":4,"16":20,"27":1,"37":10,"39":3,"40":4,"60":2,"63":3,"67":1,"68":2,"69":2,"70":3,"71":5,"79":1,"85":1,"98":1,"99":2}}],["1=5",{"2":{"2":1}}],["11391077060238619",{"2":{"99":1}}],["113553",{"2":{"55":3}}],["111379",{"2":{"96":1}}],["1159916",{"2":{"83":1}}],["119",{"2":{"69":1}}],["1181",{"2":{"56":1}}],["112319",{"2":{"55":12}}],["114815",{"2":{"55":6}}],["11",{"2":{"2":6,"4":6,"5":6,"6":6,"8":1,"16":18,"27":1,"51":4,"52":4,"56":4,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["1",{"2":{"2":12,"4":19,"5":20,"6":22,"8":5,"9":3,"10":8,"11":3,"12":7,"13":5,"14":6,"16":24,"17":10,"18":9,"19":8,"20":5,"21":17,"22":34,"23":3,"25":1,"26":2,"27":6,"29":15,"30":4,"32":3,"33":3,"34":8,"35":8,"37":23,"39":10,"40":8,"41":15,"42":14,"44":1,"45":3,"46":1,"47":5,"50":4,"51":4,"52":2,"54":6,"55":10,"56":54,"59":4,"60":12,"63":12,"64":17,"65":17,"66":4,"67":4,"68":8,"69":13,"70":18,"71":15,"72":4,"79":4,"85":11,"86":2,"87":2,"90":1,"96":11,"98":2,"99":5,"100":5,"107":3,"109":4,"110":2,"111":5,"113":2,"114":2}}],["10291543325743235",{"2":{"99":1}}],["1095",{"2":{"99":1}}],["10989",{"2":{"55":6}}],["10mb",{"2":{"89":2}}],["1083",{"2":{"56":1}}],["108696",{"2":{"55":6}}],["103704",{"2":{"55":3}}],["10×170×24",{"2":{"70":1}}],["10×10×24",{"2":{"70":2}}],["10×10×8",{"2":{"37":1}}],["10×10×12",{"2":{"37":1}}],["10×10×36",{"2":{"37":1}}],["10×10×5",{"2":{"32":1}}],["10×10",{"2":{"33":3,"34":1,"37":1}}],["10×15×20",{"2":{"41":1}}],["10×15",{"2":{"14":1,"22":2,"42":1,"96":1}}],["10×20×5",{"2":{"29":1}}],["100",{"2":{"40":7,"113":1}}],["100622",{"2":{"27":1}}],["1000",{"2":{"0":1,"109":1,"110":1}}],["10x15",{"2":{"22":1}}],["101524",{"2":{"22":1}}],["10",{"2":{"2":14,"4":16,"5":18,"6":17,"10":3,"12":1,"13":1,"14":1,"16":21,"22":15,"23":3,"25":2,"27":4,"29":6,"30":2,"32":8,"33":12,"34":5,"35":4,"37":16,"39":10,"41":3,"42":2,"44":2,"45":4,"59":1,"60":2,"63":3,"68":2,"69":3,"70":6,"71":5,"85":2,"95":1,"96":3,"113":1,"114":1}}],["garbage",{"2":{"90":1}}],["gc",{"2":{"90":2}}],["gt",{"2":{"89":1,"90":3,"93":1}}],["gdalworkshop",{"2":{"61":1}}],["gdal",{"0":{"61":1},"2":{"61":1}}],["gb",{"2":{"59":1}}],["gn",{"2":{"59":1,"107":2,"112":1}}],["gs",{"2":{"59":1,"107":2,"112":1}}],["ggplot2",{"2":{"56":1,"112":1}}],["github",{"2":{"50":2,"61":1,"91":1}}],["gives",{"2":{"22":1}}],["given",{"2":{"2":1,"22":2,"58":1,"74":1,"76":1,"84":1,"89":6,"90":3,"96":1}}],["glob",{"2":{"89":1}}],["globalproperties=dict",{"2":{"90":1}}],["global",{"2":{"89":1,"90":1}}],["glmakie",{"2":{"42":2,"106":1,"107":2,"111":3,"112":3}}],["glue",{"2":{"8":1}}],["graphics",{"2":{"112":2}}],["grammar",{"2":{"112":1}}],["gradient",{"2":{"108":1,"109":1,"110":1,"111":1}}],["gradually",{"2":{"86":1}}],["grey25",{"2":{"111":1}}],["grey15",{"2":{"42":1,"56":1}}],["greenwich",{"2":{"61":1}}],["green",{"2":{"61":1,"75":1}}],["grouped",{"2":{"89":1}}],["groups",{"2":{"55":1}}],["groupby",{"0":{"51":1,"54":1},"1":{"52":1,"53":1,"55":1,"56":1},"2":{"48":1,"50":1,"51":6,"52":1,"53":1,"54":3,"55":3,"56":3,"89":1,"99":1}}],["group",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1},"2":{"51":1,"53":1,"54":2,"75":1,"89":3}}],["grouping",{"2":{"42":2,"53":2}}],["grid=false",{"2":{"56":1}}],["grid",{"2":{"23":1,"74":1,"89":1}}],["gridchunks",{"2":{"2":3,"4":1,"5":1,"6":1,"89":1,"90":1}}],["go",{"2":{"93":2}}],["going",{"2":{"90":1}}],["good",{"2":{"56":1}}],["goal",{"2":{"21":1,"33":1,"49":1}}],["goes",{"2":{"16":2,"89":1,"90":1}}],["guide",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1}}],["gen",{"2":{"16":6}}],["general",{"0":{"102":1},"2":{"89":1,"105":1}}],["generated",{"2":{"60":1,"67":1,"79":1,"85":1,"90":1}}],["generate",{"2":{"16":2,"37":1,"39":1,"40":1,"89":1,"93":1}}],["generic",{"2":{"16":2,"18":1,"19":1,"21":1,"29":1,"89":1}}],["getting",{"0":{"94":1},"1":{"95":1,"96":1,"97":1}}],["gettarrayaxes",{"2":{"46":1}}],["getarrayinfo",{"2":{"90":1}}],["getaxis",{"2":{"34":1,"42":2,"89":1}}],["getloopchunks",{"2":{"90":1}}],["getloopcachesize",{"2":{"90":1}}],["getouttype",{"2":{"90":1}}],["getoutaxis",{"2":{"90":1}}],["getfrontperm",{"2":{"90":1}}],["gets",{"2":{"89":1,"90":1}}],["get",{"0":{"72":1},"2":{"10":1,"18":1,"32":1,"54":1,"68":1,"70":1,"72":1,"90":3,"96":1,"99":1,"107":1}}],["geoaxis",{"2":{"109":1,"110":1}}],["geometrybasics",{"2":{"107":1,"111":1,"112":1}}],["geomakie",{"2":{"106":1,"107":1,"109":2,"110":1}}],["geogcs",{"2":{"61":1}}],["geojson",{"0":{"61":1}}],["geotiff",{"0":{"61":1}}],["geo",{"2":{"1":1}}],["g",{"2":{"7":1,"10":1,"11":1,"13":1,"16":4,"23":1,"29":1,"51":26,"52":2,"53":2,"54":2,"55":1,"56":18,"58":2,"72":1,"74":1,"77":1,"89":5,"107":2,"112":2}}],["2π",{"2":{"98":1}}],["2×3",{"2":{"96":1}}],["2×2×3",{"2":{"4":1,"5":1,"6":1}}],["2×2",{"2":{"2":3,"47":1}}],["2x2l31",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2963860",{"2":{"83":1}}],["298617",{"2":{"87":2}}],["298",{"2":{"61":1}}],["29816",{"2":{"56":1}}],["29473",{"2":{"56":1}}],["29564",{"2":{"56":1}}],["274902",{"2":{"96":1}}],["2747",{"2":{"56":1}}],["273",{"2":{"54":1}}],["276",{"2":{"54":2}}],["270",{"2":{"54":1}}],["27",{"2":{"51":1,"52":1,"56":1}}],["275265",{"2":{"87":2}}],["275×205×9",{"2":{"51":4}}],["275×205×36",{"2":{"50":2}}],["275",{"2":{"50":2}}],["2f0",{"2":{"47":1}}],["28422753251364",{"2":{"59":4,"107":2,"113":2}}],["28008",{"2":{"56":1}}],["2894",{"2":{"56":1}}],["288",{"2":{"54":1}}],["2818",{"2":{"51":1,"52":1}}],["28",{"2":{"37":1,"51":3,"52":3,"56":3}}],["28571",{"2":{"22":2}}],["2857142857142857",{"2":{"10":1,"12":1,"13":1,"14":1,"22":3,"29":2,"30":1,"35":1,"41":3,"42":1,"96":1}}],["2d",{"2":{"19":5,"20":3,"21":2}}],["26274",{"2":{"56":1}}],["268675",{"2":{"27":1}}],["265797",{"2":{"25":1}}],["26",{"2":{"16":2,"59":2,"107":1,"113":1,"114":1}}],["253383",{"2":{"96":1}}],["259455",{"2":{"87":2}}],["257223563",{"2":{"61":1}}],["25153",{"2":{"56":1}}],["25",{"2":{"16":4,"26":2,"37":1,"98":1}}],["24375",{"2":{"56":1}}],["2434",{"2":{"56":1}}],["241882",{"2":{"25":1}}],["24",{"2":{"16":6,"42":1,"69":2}}],["240",{"2":{"14":1,"16":1,"27":1}}],["233118",{"2":{"96":1}}],["23",{"2":{"16":8,"41":3,"56":1,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["22990067443344916",{"2":{"99":1}}],["224959",{"2":{"96":1}}],["22211",{"2":{"56":1}}],["225542",{"2":{"27":1}}],["22",{"2":{"16":10}}],["211397",{"2":{"96":1}}],["21t06",{"2":{"59":2,"107":1,"113":1,"114":1}}],["21t19",{"2":{"46":4}}],["2101",{"2":{"59":2,"107":1}}],["21699",{"2":{"56":1}}],["21209",{"2":{"56":1}}],["215973",{"2":{"27":1}}],["21",{"2":{"16":12,"51":8,"52":8,"56":8}}],["2=10",{"2":{"2":1}}],["2",{"2":{"2":3,"4":8,"5":9,"6":10,"8":1,"9":1,"11":3,"12":2,"13":1,"14":1,"17":1,"18":2,"19":2,"20":1,"22":9,"23":1,"25":2,"27":3,"29":1,"32":3,"33":6,"34":3,"37":1,"40":6,"42":6,"45":4,"46":1,"47":8,"51":1,"52":1,"56":40,"59":3,"60":3,"63":6,"64":2,"65":2,"67":1,"68":4,"69":2,"70":2,"71":5,"72":2,"79":1,"85":2,"86":2,"89":2,"96":5,"107":3,"109":2,"111":1,"112":1,"113":1,"114":1}}],["207967",{"2":{"96":1}}],["209357",{"2":{"96":1}}],["2003",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2004",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2005",{"2":{"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["2002",{"2":{"60":3,"63":3,"67":2,"68":2,"69":2,"70":3,"71":5,"79":2,"85":1}}],["2001",{"2":{"60":3,"63":3,"67":2,"68":2,"69":3,"70":3,"71":5,"79":2,"85":1}}],["2000",{"2":{"26":1}}],["2019",{"2":{"59":2,"107":1,"113":1,"114":1}}],["2015",{"2":{"59":2,"60":1,"67":1,"79":1,"85":1,"107":2,"113":4,"114":4}}],["205",{"2":{"50":2}}],["20×10×15",{"2":{"41":2}}],["20×10×15×2",{"2":{"35":1,"96":1}}],["20ºn",{"2":{"40":1}}],["203714",{"2":{"27":1}}],["2023",{"2":{"98":1,"99":2}}],["2021",{"2":{"37":9,"98":1,"99":2,"100":1}}],["2020",{"2":{"37":5,"39":3,"40":4,"46":8,"64":4,"65":2,"66":8,"76":1}}],["2024",{"2":{"26":1,"65":5}}],["2022",{"2":{"10":4,"12":2,"13":2,"14":2,"16":8,"17":4,"18":2,"20":2,"21":6,"22":6,"23":2,"29":6,"30":2,"37":5,"39":3,"40":4,"100":1}}],["20",{"2":{"2":7,"4":10,"5":10,"6":10,"16":14,"29":2,"35":4,"40":2,"41":3,"42":1,"56":1,"85":2,"96":3}}],["5625",{"2":{"114":1}}],["56632",{"2":{"56":1}}],["55",{"2":{"99":1,"115":1}}],["551487",{"2":{"96":1}}],["551732",{"2":{"22":1}}],["55245",{"2":{"96":1}}],["552582",{"2":{"96":1}}],["514759",{"2":{"96":1}}],["514979",{"2":{"22":1}}],["5173",{"2":{"93":1}}],["542756",{"2":{"96":1}}],["547668",{"2":{"96":1}}],["547738",{"2":{"87":2}}],["54942",{"2":{"87":2}}],["540514",{"2":{"27":1}}],["5743",{"2":{"56":1}}],["57873",{"2":{"56":1}}],["57695",{"2":{"56":1}}],["57143",{"2":{"22":2}}],["52419",{"2":{"56":1}}],["59",{"2":{"113":1}}],["598769",{"2":{"96":1}}],["599987",{"2":{"87":2}}],["59212",{"2":{"56":1}}],["59085",{"2":{"56":1}}],["594514",{"2":{"25":1}}],["595405",{"2":{"22":1}}],["5×4",{"2":{"87":2}}],["5×4×5",{"2":{"86":1}}],["5×4×3",{"2":{"21":2}}],["5×4×3×2",{"2":{"17":1,"18":1}}],["5×7×3",{"2":{"64":1}}],["5×6×36",{"2":{"37":1}}],["5×6",{"2":{"27":2}}],["5×10",{"2":{"25":2}}],["507229",{"2":{"96":1}}],["506947",{"2":{"87":2}}],["508557",{"2":{"22":1}}],["500909",{"2":{"96":1}}],["50089",{"2":{"56":1}}],["500",{"2":{"0":1,"56":1,"111":2}}],["500mb",{"2":{"0":2}}],["53",{"2":{"69":1}}],["538981",{"2":{"22":1}}],["536399",{"2":{"22":1}}],["5843",{"2":{"51":1,"52":1}}],["581312",{"2":{"25":1}}],["58",{"2":{"16":2}}],["5",{"2":{"2":7,"4":16,"5":18,"6":7,"10":2,"12":3,"13":2,"14":1,"16":6,"17":2,"21":4,"22":10,"23":1,"25":2,"27":4,"29":5,"30":1,"32":4,"34":1,"35":2,"37":3,"39":4,"41":3,"42":2,"45":4,"56":5,"60":4,"63":6,"64":9,"65":3,"66":1,"67":2,"68":4,"69":3,"70":10,"71":10,"72":24,"79":2,"85":4,"86":6,"87":3,"96":2,"97":1,"100":2,"111":2}}],["rotate",{"2":{"111":1}}],["row",{"2":{"77":1,"89":1}}],["rowgap",{"2":{"56":1}}],["right",{"2":{"98":1,"100":1}}],["rights",{"2":{"87":1}}],["r",{"2":{"86":1,"112":1}}],["rlon",{"2":{"78":2}}],["rlat",{"2":{"78":2}}],["r1i1p1f1",{"2":{"59":2,"107":3,"112":1}}],["running",{"2":{"93":1}}],["run",{"2":{"23":1,"93":3,"105":2}}],["runs",{"2":{"13":1,"90":1}}],["ram",{"2":{"62":1}}],["race",{"2":{"60":1}}],["rafaqz",{"2":{"50":1}}],["raw",{"2":{"50":1,"61":1}}],["rasm",{"2":{"50":2}}],["ras",{"2":{"26":3}}],["rasters",{"2":{"26":2}}],["raster",{"0":{"26":1},"2":{"22":11,"26":3}}],["ranges",{"0":{"70":1},"2":{"34":1,"67":1}}],["range",{"2":{"10":2,"16":2,"17":2,"22":2,"23":2,"29":2,"35":3,"37":1,"66":1,"90":1,"96":3,"98":1}}],["randn",{"2":{"98":1}}],["random",{"2":{"17":2,"40":2,"46":3,"96":1}}],["rand",{"2":{"2":1,"4":3,"5":3,"6":3,"8":2,"9":2,"10":1,"17":1,"19":1,"21":3,"22":1,"23":1,"25":1,"26":1,"27":1,"29":2,"30":1,"32":1,"33":2,"35":2,"40":3,"42":1,"44":1,"45":3,"64":4,"85":1,"87":1,"96":2}}],["remaining",{"2":{"78":1}}],["removes",{"2":{"90":1}}],["remove",{"2":{"52":1}}],["removed",{"2":{"15":1,"90":1}}],["remote",{"2":{"0":1}}],["relational",{"2":{"74":1}}],["related",{"2":{"50":1}}],["rect",{"2":{"112":1,"113":2}}],["recommend",{"2":{"97":1}}],["recommended",{"2":{"71":1}}],["rechunking",{"2":{"90":1}}],["recalculate",{"2":{"90":1}}],["recal",{"2":{"90":1}}],["recently",{"2":{"0":1}}],["reentrantlock",{"2":{"60":1}}],["rewrote",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"107":1}}],["realization",{"2":{"60":1,"67":1,"79":1,"85":1}}],["realm",{"2":{"59":1,"107":1}}],["reading",{"2":{"58":1}}],["readcubedata",{"0":{"63":1},"2":{"40":2,"62":1,"63":1,"89":1,"112":1,"113":1,"114":1}}],["read",{"0":{"57":1,"59":1,"60":1,"61":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"1":1,"40":1,"57":1,"61":1,"65":3,"70":1,"89":1,"112":1,"113":1}}],["red",{"2":{"56":1,"61":1,"75":1}}],["reduce",{"2":{"10":1,"14":1,"19":1}}],["reverse",{"2":{"56":1}}],["reverseordered",{"2":{"9":1,"61":1,"96":1}}],["rename",{"2":{"45":1}}],["resets",{"2":{"89":1,"90":1}}],["respectively",{"2":{"75":1}}],["reshape",{"2":{"37":1,"39":2}}],["result",{"2":{"34":1,"42":1}}],["resulting",{"2":{"8":1,"9":1,"14":1,"89":1,"90":1}}],["results",{"0":{"100":1},"2":{"2":1,"5":1,"56":2,"89":1,"90":1}}],["referencing",{"2":{"51":1}}],["references",{"2":{"60":1,"67":1,"79":1,"85":1}}],["reference",{"0":{"88":1},"1":{"89":1,"90":1},"2":{"46":1}}],["ref",{"2":{"35":1,"89":1,"90":1}}],["rebuild",{"0":{"33":1},"2":{"32":1,"33":2,"46":2,"50":1}}],["repeat",{"2":{"98":1}}],["repl",{"2":{"95":1,"105":1}}],["replace",{"2":{"23":1,"50":2,"111":1}}],["repository",{"2":{"91":1,"101":1}}],["reports",{"2":{"91":1}}],["rep",{"2":{"50":2}}],["reproduces",{"2":{"49":1}}],["represented",{"2":{"89":1,"103":1}}],["represents",{"2":{"75":1}}],["representing",{"2":{"22":2,"90":1}}],["representation",{"2":{"1":1,"89":2,"90":3}}],["re",{"2":{"22":1}}],["registry",{"2":{"105":1}}],["registration",{"2":{"90":2}}],["registered",{"2":{"90":1,"105":1}}],["regions",{"2":{"22":8}}],["region",{"2":{"22":12}}],["regular",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":3,"18":3,"19":2,"20":2,"21":9,"22":8,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":4,"41":9,"42":3,"44":1,"45":5,"47":4,"50":4,"51":2,"52":2,"56":6,"59":2,"60":4,"61":2,"63":6,"64":2,"65":7,"66":2,"67":2,"68":4,"69":2,"70":3,"71":10,"72":3,"79":2,"85":5,"86":6,"96":5,"99":1,"107":1,"113":1,"114":1}}],["regularchunks",{"2":{"2":6,"4":3,"5":3,"6":3}}],["returned",{"2":{"89":1}}],["returns",{"2":{"89":5,"90":2}}],["return",{"2":{"18":1,"19":1,"21":2,"22":4,"51":1,"89":1,"90":1,"99":1}}],["requests",{"2":{"91":1}}],["requested",{"2":{"13":1}}],["requirements",{"2":{"60":1,"67":1,"79":1,"85":1}}],["required",{"2":{"37":1}}],["requires",{"2":{"16":1}}],["http",{"2":{"93":1}}],["https",{"2":{"50":2,"60":1,"61":1,"67":1,"75":1,"79":1}}],["html",{"2":{"75":1}}],["hdf5",{"2":{"60":1}}],["hr",{"2":{"59":1,"107":2,"112":1}}],["history",{"2":{"59":2,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"107":1,"113":1,"114":1}}],["hidedecorations",{"2":{"56":1}}],["highclip",{"2":{"56":4}}],["high",{"2":{"46":4,"112":1}}],["hm",{"2":{"56":8}}],["hold",{"2":{"89":1}}],["holds",{"2":{"89":1,"90":1}}],["ho",{"0":{"46":1}}],["however",{"2":{"24":1,"37":1,"65":1}}],["how",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"105":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"6":1,"7":1,"10":1,"17":2,"18":1,"24":1,"28":1,"31":1,"42":1,"51":1,"57":1,"63":3,"87":1,"89":1,"101":1,"103":1}}],["happens",{"2":{"90":1}}],["had",{"2":{"87":1,"89":1,"90":1}}],["hard",{"2":{"63":1}}],["hamman",{"2":{"49":1,"56":1}}],["handled",{"2":{"90":1}}],["handle",{"2":{"74":1,"90":1}}],["handling",{"2":{"9":1,"89":1}}],["handy",{"2":{"42":1}}],["has",{"2":{"8":1,"9":1,"22":1,"26":1,"27":1,"40":1,"49":1,"52":1,"90":1}}],["half",{"2":{"8":5}}],["have",{"2":{"6":1,"9":1,"22":1,"29":1,"38":1,"40":2,"51":1,"65":1,"76":1,"78":2,"89":3}}],["having",{"2":{"1":1,"22":1}}],["help",{"2":{"89":1,"90":2}}],["height",{"2":{"59":2,"78":2,"107":1,"112":1,"113":1,"114":1}}],["heatmap",{"0":{"108":1},"2":{"42":1,"56":3,"108":1,"112":1}}],["hereby",{"2":{"22":1}}],["here",{"2":{"8":1,"9":1,"13":1,"16":2,"17":1,"21":1,"22":1,"36":1,"42":1,"70":1,"86":1,"92":2}}],["hence",{"2":{"1":1}}],["yet",{"2":{"89":1}}],["yeesian",{"2":{"61":1}}],["years",{"2":{"37":1,"98":1,"99":1}}],["year",{"2":{"8":4,"100":1}}],["yyyy",{"2":{"60":2,"67":2,"79":2,"85":2}}],["ylabel=",{"2":{"98":1,"100":1}}],["ylabel",{"2":{"56":3}}],["yc",{"2":{"50":2}}],["yasxa",{"2":{"40":6}}],["yaxcolumn",{"2":{"90":1}}],["yaxconvert",{"2":{"27":2}}],["yaxdefaults",{"2":{"90":1}}],["yaxarraybase",{"2":{"27":1,"89":1,"90":1}}],["yaxarray",{"0":{"11":1,"17":1,"29":1,"36":1,"37":1,"47":1,"68":1,"74":1},"1":{"18":1,"19":1,"20":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":4,"5":4,"6":4,"7":1,"8":3,"9":3,"10":2,"12":1,"13":1,"14":2,"16":8,"17":2,"18":1,"19":2,"20":1,"21":6,"22":3,"23":1,"25":4,"26":2,"27":5,"29":5,"30":2,"32":3,"33":5,"34":1,"35":3,"36":1,"37":15,"39":4,"40":6,"41":3,"42":4,"44":2,"45":4,"46":4,"47":4,"50":2,"51":7,"52":1,"54":9,"55":1,"56":3,"59":2,"60":2,"61":1,"63":3,"64":5,"65":3,"66":1,"67":2,"68":2,"69":3,"70":3,"71":5,"74":1,"76":1,"79":1,"80":1,"82":1,"85":2,"86":4,"89":10,"90":3,"96":5,"99":2,"103":1,"107":1,"113":1,"114":1}}],["yaxarrays",{"0":{"0":1,"1":1,"2":1,"7":1,"10":1,"16":1,"24":1,"28":1,"43":1,"48":1,"57":1,"67":1,"79":1,"91":1,"102":1,"103":1,"105":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"8":1,"9":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"25":1,"26":1,"27":1,"29":1,"30":1,"44":1,"45":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"92":1,"93":1},"2":{"0":3,"2":1,"4":1,"5":1,"6":1,"8":3,"9":3,"10":4,"16":6,"17":3,"22":3,"23":4,"24":2,"25":1,"29":3,"32":1,"33":1,"35":3,"36":1,"37":1,"38":1,"39":2,"40":4,"44":1,"45":1,"46":4,"48":3,"51":2,"54":2,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":2,"64":3,"65":3,"66":3,"67":1,"73":1,"75":1,"78":3,"79":1,"84":1,"86":1,"89":28,"90":28,"91":1,"93":1,"95":3,"96":5,"97":2,"99":3,"101":1,"102":1,"105":4,"107":1,"112":1}}],["yax",{"2":{"0":1,"8":3,"9":3,"10":2,"16":11,"17":3,"18":1,"19":1,"20":3,"21":5,"22":2,"23":2,"29":2,"33":1,"35":2,"37":1,"39":1,"40":1,"46":5,"47":2,"48":1,"51":4,"54":1,"64":3,"65":4,"66":2,"78":18,"89":1,"96":2,"99":2}}],["y",{"2":{"4":2,"5":3,"6":2,"26":1,"27":3,"37":4,"41":4,"50":2,"51":2,"52":1,"56":3,"61":1,"74":1,"96":3}}],["you",{"2":{"1":1,"23":1,"36":1,"40":3,"45":2,"62":1,"63":1,"78":4,"81":1,"89":1,"90":2,"92":1,"93":2,"95":2,"97":1,"101":3,"103":2,"105":3,"112":1}}],["yourself",{"2":{"93":1}}],["your",{"2":{"1":2,"40":2,"60":1,"78":3,"84":2,"86":1,"89":1,"92":4,"93":4}}],["circshift",{"2":{"109":1}}],["ct1",{"2":{"107":4,"108":1}}],["cycle",{"0":{"98":1,"100":1},"1":{"99":1,"100":1},"2":{"99":4}}],["cycle=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["cdata",{"2":{"90":1}}],["center",{"2":{"89":1,"98":1,"100":1}}],["certain",{"2":{"64":1,"67":2,"90":1}}],["cell",{"2":{"59":2,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":1,"113":2,"114":2}}],["cf",{"2":{"59":2,"60":2,"67":2,"79":2,"85":2,"107":2}}],["cftime",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2,"60":6,"63":9,"67":3,"68":6,"69":7,"70":9,"71":15,"79":3,"85":3}}],["cmpcachmisses",{"2":{"90":1}}],["cm4",{"2":{"60":4,"67":4,"79":4,"85":4}}],["cmip",{"2":{"59":1,"107":1}}],["cmip6",{"2":{"59":3,"107":6,"112":3}}],["cmor",{"2":{"59":2,"60":3,"63":3,"67":2,"68":2,"69":3,"70":3,"71":5,"79":2,"85":2,"107":1,"113":1,"114":1}}],["c54",{"2":{"56":1}}],["cb",{"2":{"56":1}}],["cbar",{"2":{"42":1}}],["cgrad",{"2":{"42":1}}],["cl",{"2":{"109":1,"110":1}}],["cl=lines",{"2":{"109":1,"110":1}}],["clean",{"2":{"90":1}}],["cleanme",{"2":{"90":4}}],["cleaner",{"2":{"89":2}}],["clevel=n",{"2":{"81":1}}],["climate",{"2":{"60":1,"67":1,"79":1,"85":1}}],["clashes",{"2":{"51":1}}],["classes=classes",{"2":{"42":1}}],["classes",{"2":{"42":8}}],["classification",{"2":{"42":2}}],["class",{"2":{"42":3}}],["closedinterval",{"2":{"71":1}}],["closed",{"0":{"71":1},"2":{"71":3}}],["close",{"2":{"46":4}}],["cloud",{"2":{"11":1,"59":1}}],["clustermanagers",{"2":{"23":2}}],["cluster",{"2":{"23":1}}],["cpus",{"2":{"23":1}}],["cpu",{"2":{"23":1}}],["c",{"2":{"22":11,"32":5,"33":7,"34":3,"42":2,"45":2,"50":2,"58":1,"75":1,"78":4,"81":1,"83":4,"89":6,"90":3,"99":4,"107":2,"112":2,"113":1,"114":1}}],["cumbersome",{"2":{"112":1}}],["custom",{"2":{"29":1,"89":1}}],["current",{"2":{"22":2,"75":1,"89":1,"100":1,"112":1}}],["currently",{"2":{"16":1,"46":1,"50":1,"101":1}}],["cubeaxis",{"2":{"90":1}}],["cubeaxes",{"2":{"89":1}}],["cubedir",{"2":{"90":1}}],["cube2",{"2":{"89":1}}],["cube1",{"2":{"89":1}}],["cubelist",{"2":{"89":1}}],["cubefittable",{"2":{"42":2,"89":1}}],["cubetable",{"0":{"42":1},"2":{"42":3,"89":3}}],["cubes",{"0":{"35":1},"2":{"9":2,"17":1,"21":1,"35":2,"40":1,"41":2,"42":1,"68":1,"76":1,"89":18,"90":9}}],["cube",{"0":{"32":1,"34":1,"36":1,"76":1,"99":1},"1":{"33":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":1,"5":1,"6":1,"16":11,"17":2,"19":2,"21":2,"32":1,"34":1,"36":2,"40":1,"41":1,"42":2,"50":1,"76":3,"86":1,"89":34,"90":19,"103":1}}],["chose",{"2":{"75":1}}],["child",{"2":{"59":1,"107":1}}],["check",{"2":{"16":1,"86":1,"97":1}}],["changed",{"2":{"97":1,"101":1}}],["changes",{"2":{"63":1}}],["change",{"2":{"10":1,"89":1,"90":1}}],["chunkoffset",{"2":{"90":1}}],["chunksize`",{"2":{"90":1}}],["chunksizes",{"2":{"89":2}}],["chunksize",{"2":{"89":1,"90":3}}],["chunks",{"0":{"4":1},"2":{"2":5,"4":1,"5":1,"6":2,"89":4,"90":11}}],["chunked",{"2":{"2":5}}],["chunking",{"0":{"2":1,"3":1,"5":1,"6":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"5":1,"89":4,"90":3}}],["chunk",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"4":1,"5":1,"89":4,"90":4}}],["criteria",{"2":{"42":1}}],["creation",{"2":{"47":1,"64":1}}],["creating",{"0":{"22":1},"2":{"10":1,"33":1,"37":1,"86":1,"92":1,"112":1}}],["createdataset",{"2":{"90":2}}],["created",{"2":{"90":2}}],["creates",{"2":{"42":1,"89":2,"90":1}}],["create",{"0":{"28":1,"29":1,"30":1,"47":1},"1":{"29":1,"30":1},"2":{"10":1,"16":1,"22":2,"28":1,"29":1,"33":1,"35":1,"37":2,"42":1,"46":1,"54":1,"79":1,"84":1,"86":3,"89":1,"90":1,"96":1,"98":1,"112":1}}],["crucial",{"2":{"1":1}}],["coastlines",{"2":{"109":3,"110":1}}],["cosd",{"2":{"89":1}}],["country",{"2":{"89":4}}],["country=cube2",{"2":{"89":1}}],["could",{"2":{"33":1,"46":1,"62":1}}],["copies",{"2":{"90":1}}],["copied",{"2":{"86":1}}],["copybuf",{"2":{"90":2}}],["copydata",{"2":{"90":1}}],["copy",{"2":{"32":1,"89":1,"93":1}}],["coordinates",{"2":{"50":2,"59":1,"113":1,"114":1}}],["college",{"2":{"101":1}}],["collected",{"2":{"90":1}}],["collectfromhandle",{"2":{"90":1}}],["collection",{"2":{"31":1,"74":1}}],["collect",{"2":{"25":1,"34":3,"99":1}}],["colonperm",{"2":{"90":1}}],["colorblind",{"2":{"114":1}}],["colorbar",{"2":{"42":1,"56":2}}],["color=",{"2":{"100":3,"112":2,"113":2,"114":1,"115":1}}],["color",{"2":{"98":1,"109":1,"110":1,"111":1,"112":1,"113":3,"114":1}}],["colormap=",{"2":{"56":1}}],["colormap=makie",{"2":{"42":1}}],["colormap",{"2":{"56":3,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1}}],["colorrange=",{"2":{"56":1}}],["colorrange",{"2":{"56":3}}],["column",{"2":{"77":1,"90":1}}],["colgap",{"2":{"56":1}}],["colnames",{"2":{"46":1}}],["configuration",{"2":{"90":2}}],["concatenating",{"2":{"89":1}}],["concatenates",{"2":{"89":2}}],["concatenate",{"0":{"35":1},"2":{"35":2,"64":2,"66":1,"89":2}}],["concatenatecubes",{"0":{"9":1},"2":{"9":2,"35":2,"89":2}}],["concrete",{"2":{"89":2}}],["contributing",{"2":{"92":1}}],["contribute",{"0":{"91":1,"92":1},"1":{"92":1,"93":2}}],["contrast",{"2":{"89":1}}],["content",{"2":{"89":1}}],["contents",{"2":{"66":1}}],["contact",{"2":{"60":1,"67":1,"79":1,"85":1}}],["contains",{"2":{"71":1,"89":1,"90":1}}],["contain",{"2":{"59":1,"60":1,"90":1}}],["containing",{"0":{"47":1},"2":{"8":1,"42":1,"75":1,"76":1,"89":1}}],["continue",{"2":{"51":1,"112":1}}],["consolidated=true",{"2":{"59":1,"107":1,"112":1}}],["constructor",{"2":{"89":1}}],["constructs",{"2":{"89":1}}],["construct",{"0":{"46":1},"2":{"89":2,"112":1}}],["consistent",{"2":{"59":1,"107":1}}],["consisting",{"2":{"8":1}}],["considering",{"2":{"49":1}}],["considered",{"2":{"42":1}}],["consider",{"2":{"17":1,"19":1,"21":1,"33":1,"113":1}}],["convinient",{"2":{"31":1}}],["conventions",{"2":{"60":1,"67":1,"79":1,"85":1}}],["convenience",{"2":{"51":1,"78":1}}],["convenient",{"2":{"23":1}}],["conversion",{"2":{"24":1,"26":1,"27":1}}],["conversions",{"2":{"24":1}}],["converted",{"2":{"76":1}}],["convert",{"0":{"24":1,"25":1,"26":1,"27":1},"1":{"25":1,"26":1,"27":1},"2":{"24":1,"25":2,"27":2,"89":1,"90":1}}],["corresponding",{"2":{"7":1,"21":2,"22":2,"76":1,"89":1}}],["combining",{"0":{"104":1}}],["combined",{"2":{"9":2,"76":2}}],["combine",{"0":{"7":1},"1":{"8":1,"9":1},"2":{"7":1,"8":1,"9":1,"103":1}}],["command",{"2":{"105":2}}],["comment",{"2":{"59":1,"113":1,"114":1}}],["common",{"2":{"40":5,"58":1,"89":2}}],["com",{"2":{"50":2,"61":1}}],["compiler",{"2":{"97":1}}],["compuation",{"2":{"89":1}}],["computing",{"2":{"42":1}}],["computations",{"2":{"13":1,"41":1}}],["computation",{"0":{"23":1},"2":{"13":1,"74":1,"89":3,"90":3}}],["computed",{"2":{"90":1}}],["compute",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"2":{"99":1}}],["compares",{"2":{"90":1}}],["comparing",{"2":{"83":1}}],["compatible",{"2":{"61":1}}],["compress",{"2":{"83":2}}],["compress=n",{"2":{"83":1}}],["compressors",{"2":{"81":1}}],["compressor=compression",{"2":{"81":1}}],["compression",{"0":{"81":1,"83":1},"2":{"81":5,"83":4}}],["completely",{"2":{"62":1}}],["complexity",{"2":{"41":1}}],["complex",{"2":{"10":2,"96":1,"112":1}}],["comply",{"2":{"60":1,"67":1,"79":1,"85":1}}],["comes",{"2":{"1":1}}],["code",{"2":{"6":1,"13":1,"23":2,"31":1,"46":1,"60":2,"112":1}}],["captialisation",{"2":{"90":1}}],["cameracontrols",{"2":{"111":1}}],["came",{"2":{"76":1}}],["cairomakie",{"2":{"56":1,"98":2}}],["caxes",{"2":{"32":2,"89":2}}],["car",{"2":{"22":1}}],["cartesianindex",{"2":{"22":11}}],["caluclate",{"2":{"89":1}}],["calculations",{"2":{"56":1,"90":1}}],["calculating",{"2":{"14":1,"89":1}}],["calculates",{"2":{"89":1}}],["calculated",{"2":{"42":2,"51":1}}],["calculate",{"2":{"14":1,"22":1,"42":2,"48":1,"49":2,"51":1,"56":1,"90":2,"99":1}}],["calling",{"2":{"56":1,"78":1}}],["called",{"2":{"16":1,"51":1,"74":3,"90":1}}],["call",{"2":{"1":1,"23":1}}],["case",{"2":{"13":1,"19":1,"40":1,"53":1,"59":1,"63":1,"66":2}}],["cases",{"2":{"0":1,"62":1,"71":1,"101":1}}],["cataxis",{"2":{"89":2}}],["categoricalaxis",{"2":{"89":1}}],["categorical",{"2":{"9":1,"17":1,"18":1,"19":1,"22":1,"35":1,"42":1,"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3,"89":1,"90":1,"96":1}}],["cat",{"0":{"8":1},"2":{"8":2}}],["cache=1gb",{"2":{"89":1}}],["cache=1e9",{"2":{"16":2}}],["cache=",{"2":{"89":1}}],["cache=5",{"2":{"89":1}}],["cache=5e8",{"2":{"84":1,"89":1}}],["cache=yaxdefaults",{"2":{"89":1}}],["caches",{"2":{"0":1}}],["cachesize",{"2":{"0":2,"90":1}}],["cache",{"2":{"0":6,"89":3,"90":7}}],["caching",{"0":{"0":1}}],["can",{"2":{"0":5,"2":1,"3":1,"13":2,"14":1,"16":3,"20":1,"22":1,"23":3,"29":2,"35":1,"36":1,"38":1,"40":1,"41":1,"42":2,"46":1,"52":1,"56":1,"59":2,"60":1,"61":1,"62":1,"64":1,"72":1,"74":3,"75":2,"76":1,"78":2,"85":1,"86":1,"87":1,"89":13,"90":6,"92":1,"95":2,"101":2,"105":2,"115":1}}],["msc",{"2":{"99":3,"100":2}}],["mscarray",{"2":{"99":2}}],["md",{"2":{"92":2}}],["mfdataset",{"0":{"64":1},"1":{"65":1,"66":1},"2":{"65":3,"66":2,"89":5}}],["mpi",{"2":{"59":1,"107":2,"112":1}}],["m",{"2":{"25":2}}],["miss",{"2":{"90":1}}],["missing",{"2":{"14":2,"16":6,"18":1,"21":1,"22":2,"41":1,"42":2,"60":12,"63":6,"68":4,"69":6,"70":6,"71":10,"86":3,"87":1,"89":2,"90":2,"111":1}}],["mind",{"2":{"112":1}}],["minimal",{"2":{"112":1}}],["minimized",{"2":{"90":1}}],["minutes",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["might",{"2":{"24":1,"62":1,"101":1}}],["mix",{"2":{"21":2}}],["mm",{"2":{"20":3,"60":2,"67":2,"79":2,"85":2}}],["mymean",{"2":{"23":4}}],["my",{"2":{"16":2,"60":1}}],["magma",{"2":{"113":1}}],["mahecha",{"2":{"76":1}}],["manager",{"2":{"95":1}}],["manual",{"2":{"60":1}}],["many",{"0":{"18":1,"19":2},"2":{"18":2,"19":2,"20":4,"63":1,"74":1,"90":1}}],["marker=",{"2":{"112":1,"113":2}}],["marketdata",{"2":{"46":2}}],["mar",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["master",{"2":{"50":1,"105":1}}],["mask",{"2":{"42":2}}],["makie",{"2":{"56":1,"112":1,"113":1}}],["making",{"2":{"11":1,"60":1,"67":1,"112":1}}],["make",{"2":{"39":1,"40":2,"86":1,"89":1,"90":2,"93":1}}],["main",{"2":{"36":1,"90":1}}],["machine",{"2":{"23":1,"74":1}}],["matching",{"2":{"96":1}}],["match",{"2":{"90":2}}],["matched",{"2":{"89":1}}],["matches",{"2":{"20":1}}],["mat",{"2":{"22":4}}],["matrix",{"2":{"16":2,"22":1,"25":1,"46":1,"52":1,"56":2,"74":1,"87":2,"99":1}}],["maximal",{"2":{"90":1}}],["maximum",{"2":{"41":1,"89":1,"90":1}}],["maxbuf",{"2":{"90":1}}],["max",{"2":{"16":2,"81":1,"83":1,"84":1,"89":8,"90":2}}],["maxsize",{"2":{"0":2}}],["may",{"2":{"10":1,"15":1,"51":4,"52":2,"53":1,"54":4,"55":4,"56":6,"59":1,"60":1,"97":1}}],["maps",{"0":{"107":1},"1":{"108":1}}],["mapslice",{"2":{"23":1}}],["mapslices",{"0":{"14":1},"2":{"10":1,"13":1,"14":1,"23":1,"41":1,"99":1}}],["mapped",{"2":{"89":1}}],["mapping",{"2":{"89":1,"90":3,"112":2,"113":4,"114":1,"115":1}}],["mapcube",{"0":{"15":1},"1":{"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1},"2":{"10":1,"13":1,"15":1,"16":4,"18":1,"20":1,"21":2,"22":2,"23":3,"89":5,"90":2}}],["map",{"0":{"13":1,"41":1},"2":{"10":1,"13":2,"21":1,"22":3,"23":3,"41":4,"42":1,"51":2,"55":1,"56":1,"89":2,"96":1,"99":2}}],["moll",{"0":{"110":1}}],["mowingwindow",{"2":{"89":1}}],["module",{"2":{"89":1}}],["model",{"2":{"60":1,"67":1,"75":2,"79":1,"85":1}}],["modification",{"2":{"11":1,"23":1}}],["modify",{"0":{"11":1}}],["monthday",{"2":{"99":4}}],["monthly",{"0":{"49":1}}],["month",{"2":{"37":7,"39":3,"40":4,"49":1,"51":4,"52":1,"53":1,"54":5,"55":2,"56":3,"89":1,"99":2}}],["moment",{"2":{"27":1}}],["movingwindow",{"2":{"21":1,"89":4}}],["more",{"2":{"9":1,"10":1,"36":1,"41":1,"42":1,"58":1,"70":1,"71":1,"76":1,"81":1,"84":1,"89":3,"90":1,"96":1,"113":1,"114":1,"115":1}}],["most",{"2":{"1":1,"15":1,"24":1,"113":1}}],["mesh",{"2":{"111":2}}],["merely",{"2":{"86":1}}],["merged",{"2":{"66":1}}],["measured",{"2":{"75":1,"76":1}}],["measure",{"2":{"74":1}}],["measures",{"2":{"59":1,"113":1,"114":1}}],["means",{"0":{"49":1},"2":{"14":1,"89":1}}],["mean",{"0":{"98":1,"100":1},"1":{"99":1,"100":1},"2":{"10":1,"14":3,"23":4,"42":4,"51":10,"52":2,"53":1,"56":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":1,"99":5,"113":1,"114":1}}],["meter",{"2":{"59":1,"113":1,"114":1}}],["method",{"2":{"16":2,"18":1,"19":1,"21":1,"58":1,"89":1}}],["methods",{"2":{"7":1,"23":1,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["metadata",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":3,"24":1,"25":1,"27":3,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"86":2,"89":1,"96":3,"99":1,"113":1,"114":1}}],["members",{"2":{"90":1}}],["member",{"2":{"6":1}}],["memory",{"0":{"62":1},"1":{"63":1},"2":{"1":1,"8":1,"10":1,"12":1,"13":1,"14":2,"16":3,"17":1,"18":1,"19":1,"21":3,"22":3,"24":3,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"37":5,"40":4,"41":3,"42":3,"47":2,"50":3,"54":1,"62":1,"63":4,"74":1,"86":2,"89":2,"90":1,"96":2,"99":1,"112":1,"113":1,"114":1}}],["multi",{"2":{"17":2,"21":2}}],["multiplying",{"2":{"41":1}}],["multiply",{"2":{"10":1,"41":1}}],["multiple",{"0":{"45":1,"104":1},"2":{"7":1,"21":1,"23":1,"59":1,"60":1,"74":1,"89":1}}],["must",{"2":{"0":1,"76":1,"89":1,"90":1}}],["mb",{"2":{"0":1,"50":2,"60":1,"63":3,"68":2,"113":1}}],["pkg",{"2":{"95":2,"105":2,"106":8}}],["pkg>",{"2":{"93":1,"105":1}}],["purple",{"2":{"98":1}}],["purpose",{"2":{"31":1,"41":1}}],["pull",{"2":{"91":1}}],["public",{"0":{"89":1}}],["published",{"2":{"56":1}}],["pydata",{"2":{"50":1}}],["p",{"2":{"40":10,"60":1,"67":1,"79":1,"85":1}}],["picture",{"2":{"74":1,"75":1}}],["pieces",{"2":{"31":1}}],["pixel",{"0":{"98":1},"1":{"99":1,"100":1},"2":{"21":1,"23":2}}],["post=getpostfunction",{"2":{"89":1}}],["positions",{"2":{"90":2}}],["position",{"2":{"74":1}}],["positional",{"2":{"69":1,"70":1}}],["possible",{"2":{"23":2,"24":1,"35":1,"47":1,"86":1,"89":3,"90":1}}],["pos",{"2":{"22":2}}],["point3f",{"2":{"111":1}}],["point",{"2":{"22":3,"59":1,"96":1,"112":1,"113":1,"114":1}}],["points",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":4,"16":9,"17":3,"18":3,"19":2,"20":3,"21":9,"22":16,"23":1,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":21,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":2,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":16,"72":3,"74":2,"75":1,"79":3,"85":6,"86":6,"96":5,"99":1,"107":3,"113":3,"114":3}}],["plasma",{"2":{"112":1}}],["place",{"2":{"90":1}}],["plt",{"2":{"108":1,"112":1,"113":4,"114":1}}],["please",{"2":{"60":1,"81":1}}],["plots",{"2":{"112":1}}],["plot",{"0":{"100":1,"108":1,"111":1},"2":{"56":2,"112":1,"113":1,"114":1}}],["plotting",{"0":{"107":1},"1":{"108":1},"2":{"0":1,"106":1,"112":1}}],["plus",{"2":{"18":3,"50":1,"89":1}}],["palette",{"2":{"114":1}}],["paste",{"2":{"93":1}}],["pass",{"2":{"89":1}}],["passed",{"2":{"58":1,"89":5}}],["passing",{"2":{"21":1,"89":3}}],["pair",{"2":{"90":1}}],["pairs",{"2":{"18":1,"20":1}}],["partitioned",{"2":{"90":1}}],["participate",{"2":{"89":1}}],["particular",{"2":{"77":1}}],["parts",{"2":{"89":1}}],["parent",{"2":{"59":1,"107":1}}],["parallelized",{"2":{"90":1}}],["parallelisation",{"2":{"89":1}}],["parallel",{"2":{"23":1,"74":1}}],["package",{"2":{"23":1,"70":1,"72":1,"88":1,"95":1,"106":1}}],["packages",{"2":{"16":1,"24":1}}],["paths",{"2":{"64":1,"66":1,"89":1,"90":2}}],["path=",{"2":{"16":2,"59":1,"80":1,"81":1,"82":1,"83":1,"84":2,"85":1,"86":1,"89":1,"90":1}}],["path=f",{"2":{"4":1,"5":1,"6":1}}],["path",{"0":{"20":1},"2":{"0":1,"20":1,"50":2,"59":3,"60":2,"61":2,"67":2,"79":2,"84":2,"89":3,"93":1}}],["pr",{"2":{"93":1}}],["println",{"2":{"83":1}}],["printed",{"2":{"46":2}}],["primem",{"2":{"61":1}}],["prior",{"2":{"1":1}}],["props",{"2":{"96":2}}],["properly",{"2":{"49":1}}],["properties=dict",{"2":{"90":1}}],["properties=properties",{"2":{"18":2}}],["properties",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"10":2,"17":2,"18":2,"19":1,"20":2,"21":2,"23":2,"29":3,"30":3,"50":1,"56":1,"59":1,"60":1,"61":1,"67":1,"79":1,"85":1,"89":5,"90":1,"107":1}}],["probably",{"2":{"90":1}}],["process",{"2":{"74":1,"90":2}}],["processed",{"2":{"13":1}}],["provide",{"2":{"89":1}}],["provides",{"2":{"74":1,"102":1,"112":1}}],["provided",{"2":{"36":1,"86":1,"89":2}}],["providing",{"2":{"66":1}}],["projection",{"0":{"109":1,"110":1},"1":{"110":1,"111":1,"112":1,"113":1,"114":1,"115":1},"2":{"61":1}}],["progressmeter",{"2":{"89":1}}],["progress",{"2":{"50":1,"101":1,"103":1}}],["product",{"2":{"22":1}}],["pressed",{"2":{"105":1}}],["pressing",{"2":{"95":1}}],["pre",{"2":{"89":2}}],["previous",{"2":{"56":1,"84":1,"86":1,"89":1}}],["previously",{"2":{"42":1}}],["preferred",{"2":{"50":2}}],["prepared",{"2":{"60":1,"67":1,"79":1,"85":1}}],["prep",{"2":{"9":2}}],["precipitation",{"2":{"9":2,"75":1,"76":1,"96":2}}],["permute",{"2":{"90":1}}],["permuteloopaxes",{"2":{"90":1}}],["permutation",{"2":{"90":1}}],["persist",{"2":{"90":1}}],["persistend",{"2":{"90":1}}],["persistency",{"2":{"90":1}}],["persistent",{"2":{"89":1,"90":2}}],["persist=nothing",{"2":{"84":1,"89":1}}],["perform",{"2":{"90":1}}],["performed",{"2":{"13":2}}],["performing",{"2":{"10":1}}],["per",{"2":{"7":1,"14":1,"51":1,"54":1,"55":1,"112":1}}],["=interval",{"2":{"71":2}}],["===",{"2":{"46":1}}],["==",{"2":{"12":1,"46":1,"99":1}}],["=>nan",{"2":{"111":1}}],["=>",{"2":{"10":2,"12":1,"13":1,"16":2,"17":2,"18":3,"19":2,"20":1,"21":2,"22":5,"23":1,"29":3,"30":3,"44":1,"45":1,"46":5,"50":15,"51":5,"52":1,"54":3,"55":2,"56":3,"59":20,"60":20,"61":1,"63":30,"67":10,"68":20,"69":30,"70":30,"71":50,"78":1,"79":10,"85":10,"96":6,"107":10,"113":17,"114":12,"115":2}}],["=>2",{"2":{"4":1}}],["=>10",{"2":{"4":1}}],["=>5",{"2":{"4":1,"5":1}}],["=",{"2":{"0":5,"2":4,"4":9,"5":15,"6":9,"8":5,"9":5,"10":4,"11":1,"12":1,"13":1,"16":14,"17":4,"18":14,"19":7,"20":11,"21":12,"22":16,"23":5,"25":3,"26":5,"27":4,"29":5,"30":4,"32":1,"33":3,"35":6,"37":7,"39":6,"40":17,"42":7,"44":1,"45":3,"46":7,"47":4,"50":5,"51":16,"52":1,"53":1,"54":4,"55":1,"56":22,"58":3,"59":2,"60":3,"61":2,"63":1,"64":6,"65":7,"66":2,"67":2,"68":2,"69":6,"70":6,"71":3,"79":2,"81":2,"83":3,"85":2,"86":4,"87":5,"89":8,"90":7,"96":5,"98":10,"99":11,"100":5,"107":8,"108":5,"109":7,"110":5,"111":6,"112":10,"113":14,"114":6,"115":2}}],["dc",{"2":{"90":2}}],["dkrz",{"2":{"59":1,"107":2,"112":1}}],["dufresne",{"2":{"60":1,"67":1,"79":1,"85":1}}],["due",{"2":{"53":1}}],["dummy",{"2":{"35":1,"37":1,"98":1,"99":1}}],["during",{"2":{"22":1,"23":1,"24":1}}],["dd",{"2":{"32":1,"65":4,"66":2,"89":4,"99":1}}],["d",{"2":{"22":5,"46":5,"56":3,"99":1,"107":3,"109":5,"110":1}}],["draw",{"2":{"112":2,"113":4,"114":1,"115":1}}],["drop",{"2":{"56":1}}],["dropdims",{"0":{"52":1},"2":{"51":2,"52":2,"56":1}}],["drivers",{"2":{"58":1,"89":1}}],["driver",{"2":{"48":1,"58":3,"84":1,"89":5}}],["driver=backend",{"2":{"84":1,"89":1}}],["driver=",{"2":{"4":1,"5":1,"6":1,"58":3,"80":2,"81":1,"82":2,"83":1,"84":3,"85":1,"86":2,"89":5}}],["drei",{"2":{"19":2}}],["dash",{"2":{"100":1}}],["danger",{"2":{"84":1}}],["daysinmonth",{"2":{"51":1,"54":1}}],["days",{"2":{"49":1,"51":2,"53":1,"54":2,"55":2}}],["dayofyear",{"2":{"16":1}}],["day",{"2":{"10":2,"12":1,"13":1,"14":1,"16":4,"17":2,"18":1,"21":3,"22":3,"23":1,"29":3,"30":1,"64":2,"65":1,"98":1,"99":4,"100":1}}],["datconfig",{"2":{"90":2}}],["datset",{"2":{"89":1}}],["dat",{"2":{"89":8,"90":16}}],["datum",{"2":{"61":1}}],["datetime360day",{"2":{"60":6,"63":9,"67":3,"68":6,"69":7,"70":9,"71":15,"79":3,"85":3}}],["datetimenoleap",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2}}],["datetime",{"2":{"20":1,"46":5,"59":2,"65":1,"66":3,"107":1,"113":2,"114":2}}],["date",{"2":{"10":5,"12":3,"13":3,"14":3,"16":12,"17":5,"18":3,"21":8,"22":11,"23":3,"29":8,"30":3,"37":24,"39":8,"40":11,"64":3,"65":7,"74":1,"78":2,"98":2,"99":5,"107":1}}],["datesid",{"2":{"99":2}}],["dates",{"2":{"10":2,"12":1,"13":1,"14":1,"16":5,"17":2,"18":1,"21":2,"22":3,"23":1,"29":3,"30":1,"37":8,"39":4,"40":5,"48":1,"51":1,"64":7,"65":5,"66":1,"76":1,"98":1,"99":2,"107":1,"112":1,"113":1}}],["data=cube1",{"2":{"89":1}}],["databases",{"2":{"74":1}}],["dataframe",{"2":{"42":1,"89":1}}],["dataframes",{"2":{"42":1}}],["datacubes",{"2":{"89":1}}],["datacube",{"0":{"104":1},"2":{"42":2,"86":1,"89":1}}],["datatypes",{"2":{"36":1}}],["data1",{"2":{"35":2}}],["data3",{"2":{"30":1}}],["data2",{"2":{"29":2,"35":2}}],["datasetaxis",{"2":{"89":2,"90":1}}],["datasetaxis=",{"2":{"89":1,"90":1}}],["dataset",{"0":{"30":1,"36":1,"38":1,"39":1,"40":1,"43":1,"46":1,"58":1,"75":1,"84":1,"85":1,"87":1},"1":{"37":1,"38":1,"39":2,"40":2,"44":1,"45":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"0":3,"3":1,"4":4,"5":2,"6":3,"9":1,"10":1,"18":1,"20":2,"24":1,"30":2,"38":1,"39":3,"40":5,"44":2,"45":3,"46":5,"58":4,"59":3,"60":3,"61":3,"64":1,"65":3,"66":1,"67":3,"68":1,"75":3,"76":2,"78":1,"79":3,"80":1,"81":1,"82":1,"83":1,"84":3,"85":4,"86":2,"87":2,"89":20,"90":9,"107":2,"112":2,"113":1}}],["datasets",{"0":{"3":1,"28":1,"48":1,"57":1,"67":1,"79":1},"1":{"4":1,"5":1,"6":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"0":2,"24":1,"28":1,"40":1,"57":1,"58":1,"62":1,"84":1,"89":9,"90":4,"103":1}}],["data",{"0":{"34":1,"50":1,"62":1,"76":1},"1":{"63":1},"2":{"0":3,"1":2,"7":1,"8":2,"9":1,"10":3,"11":1,"12":1,"13":1,"14":2,"16":9,"17":3,"18":1,"19":1,"21":6,"22":4,"23":2,"25":2,"26":1,"27":1,"29":2,"32":1,"33":3,"34":2,"35":1,"37":6,"39":1,"40":2,"41":3,"42":5,"50":4,"54":1,"59":3,"60":7,"63":6,"64":1,"67":3,"68":4,"69":6,"70":6,"71":10,"73":1,"74":3,"75":2,"76":3,"79":3,"84":2,"85":3,"86":4,"87":1,"89":20,"90":12,"96":6,"97":1,"98":2,"99":2,"103":4,"107":5,"109":1,"112":4,"113":7,"114":2,"115":2}}],["dev",{"2":{"93":1}}],["dependencies",{"2":{"93":1}}],["depth",{"2":{"21":8,"78":2}}],["deletes",{"2":{"84":1,"89":1}}],["delete",{"2":{"84":2,"86":1}}],["denoting",{"2":{"89":1}}],["dense",{"2":{"74":1}}],["denvil",{"2":{"60":2,"67":2,"79":2,"85":2}}],["degree",{"2":{"61":1}}],["degc",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["detect",{"2":{"58":1,"89":1,"90":1}}],["determined",{"2":{"90":1}}],["determines",{"2":{"89":1}}],["determine",{"2":{"1":1,"63":1,"89":1}}],["declarative",{"2":{"112":1}}],["dec",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["defaultfillval",{"2":{"90":1}}],["defaults",{"2":{"65":1,"89":7}}],["default",{"2":{"18":1,"58":1,"83":3,"86":1,"89":1,"90":4}}],["definition",{"2":{"76":1}}],["definitions",{"2":{"17":1,"19":1}}],["defining",{"2":{"23":1}}],["defines",{"2":{"89":1}}],["defined",{"2":{"18":1,"26":1,"27":1,"42":1,"51":1,"56":1,"72":1,"74":1,"77":1,"78":1,"86":1,"96":1}}],["define",{"0":{"99":1},"2":{"16":2,"18":1,"37":1,"42":1,"56":1,"78":1,"89":2,"98":1}}],["deal",{"2":{"17":1}}],["dest",{"2":{"110":1}}],["desc",{"2":{"89":3,"90":3}}],["descriptor",{"2":{"90":4}}],["descriptors",{"2":{"89":2}}],["descriptions",{"2":{"89":1}}],["description",{"2":{"17":2,"19":2,"21":2,"36":1,"89":4,"90":11}}],["described",{"2":{"103":1}}],["describe",{"2":{"89":2}}],["describes",{"2":{"7":1,"10":1,"24":1,"28":1,"57":1,"71":1,"73":1,"88":1,"90":1}}],["describing",{"2":{"89":1}}],["designed",{"2":{"24":2,"74":1}}],["desired",{"2":{"16":1,"90":4}}],["demand",{"2":{"13":1}}],["diverging",{"2":{"56":1}}],["divided",{"2":{"41":1}}],["differing",{"2":{"89":1}}],["difference",{"2":{"56":1}}],["differences",{"2":{"46":1,"51":1,"56":1,"90":1}}],["different",{"0":{"21":1},"2":{"9":2,"16":1,"17":2,"23":1,"32":1,"33":1,"45":1,"49":1,"58":1,"75":1,"89":3,"90":2,"101":1}}],["diff",{"2":{"51":2,"56":3}}],["directory",{"2":{"59":1,"80":2,"82":2}}],["directories",{"2":{"57":1,"90":1}}],["direct",{"2":{"46":1}}],["directly",{"2":{"16":1,"20":1,"27":1,"28":1,"29":1,"87":2}}],["dictionary",{"2":{"75":1,"89":3}}],["dict",{"2":{"4":1,"5":1,"8":1,"9":1,"10":2,"12":1,"13":1,"14":2,"16":5,"17":2,"18":3,"19":2,"20":1,"21":4,"22":4,"23":1,"25":1,"27":3,"29":4,"30":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"46":2,"47":2,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"59":2,"60":2,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"86":1,"89":3,"96":3,"99":1,"107":1,"113":1,"114":1}}],["dime",{"2":{"59":1,"113":1,"114":1}}],["dimensionaldata",{"2":{"22":1,"27":2,"32":1,"33":1,"37":1,"39":1,"40":1,"46":1,"48":1,"50":1,"51":15,"52":10,"54":12,"55":5,"56":38,"65":1,"66":2,"70":1,"71":2,"72":3,"74":1,"77":1,"78":1,"97":3,"99":1,"106":1,"107":1,"112":1}}],["dimensional",{"2":{"17":2,"19":2,"21":2,"73":1,"74":2,"89":1}}],["dimensions",{"0":{"39":1,"40":1,"77":1},"1":{"78":1},"2":{"9":1,"10":1,"13":1,"15":1,"16":2,"20":1,"21":1,"22":2,"23":1,"29":2,"33":1,"35":1,"38":1,"40":3,"41":2,"45":1,"51":16,"52":10,"54":11,"55":5,"56":38,"63":1,"66":1,"67":1,"72":2,"74":3,"75":1,"78":2,"89":8,"90":3,"96":3,"97":1}}],["dimension",{"0":{"8":1,"9":1,"65":1,"66":1,"72":1},"2":{"2":1,"8":2,"9":1,"10":1,"14":2,"16":3,"18":1,"19":1,"22":3,"37":1,"40":1,"51":1,"52":1,"53":1,"56":1,"64":2,"65":4,"66":3,"70":1,"72":1,"74":1,"76":1,"77":1,"78":4,"89":7,"90":3,"96":1}}],["dimvector",{"2":{"54":1,"89":1}}],["dimgroupbyarray",{"2":{"51":1,"54":1}}],["dimarray",{"0":{"27":1},"2":{"22":3,"27":6,"51":1,"52":1,"54":1,"55":2,"56":3,"65":3,"66":1,"72":1,"74":1,"89":2}}],["dims=2",{"2":{"99":1}}],["dims=",{"2":{"14":2,"23":1,"41":1,"51":5,"52":1,"54":1,"56":1}}],["dims",{"2":{"8":3,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":4,"25":1,"26":1,"27":2,"29":2,"32":3,"33":4,"34":1,"35":1,"37":5,"41":3,"42":3,"46":1,"47":2,"50":2,"51":6,"52":1,"54":5,"55":2,"56":5,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"72":1,"86":1,"96":2,"99":1,"113":1,"114":1}}],["dim",{"2":{"2":2,"4":7,"5":8,"6":2,"21":1,"22":1,"25":2,"27":2,"29":4,"32":9,"33":6,"34":3,"35":1,"40":1,"44":1,"45":5,"47":4,"51":2,"52":2,"56":6,"78":3,"85":3,"86":6,"89":1,"96":2,"112":2,"113":6,"114":1,"115":1}}],["disregard",{"2":{"90":1}}],["dispatch",{"2":{"90":1}}],["displayed",{"2":{"63":1}}],["discribe",{"2":{"89":2}}],["discussion",{"2":{"81":1}}],["distribute",{"2":{"23":1}}],["distributed",{"0":{"23":1},"2":{"0":1,"23":2}}],["diskarray",{"2":{"89":1}}],["diskarrays",{"2":{"2":9,"4":4,"5":4,"6":4,"89":2,"90":1}}],["disk",{"2":{"1":1,"16":1,"20":1,"27":1,"74":1,"86":3,"87":2,"89":1,"90":2}}],["dodgerblue",{"2":{"100":1}}],["documentation",{"0":{"92":1},"1":{"93":1}}],["doc",{"2":{"84":1}}],["docs",{"0":{"93":1},"2":{"75":1,"92":2,"93":6,"97":1,"112":1}}],["docstring",{"2":{"58":1,"89":1}}],["don",{"2":{"81":1}}],["done",{"2":{"33":1,"41":1,"56":1,"62":1,"92":2,"115":1}}],["double",{"2":{"50":2}}],["download",{"0":{"50":1},"2":{"50":1,"60":2,"61":2,"67":2,"79":2}}],["downloads",{"2":{"48":1,"50":1,"60":1,"61":1,"67":1,"79":1}}],["doing",{"2":{"23":1,"32":1,"34":1,"78":2,"93":1}}],["does",{"2":{"23":1,"86":1,"89":2,"90":1}}],["dot",{"2":{"21":1,"100":1}}],["do",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"1":1,"13":1,"16":1,"22":3,"23":1,"31":2,"41":1,"49":1,"56":1,"78":1,"86":1,"87":1,"90":1,"93":1,"95":1}}],["dsw",{"2":{"51":2,"56":2}}],["dsfinal",{"2":{"35":1,"41":2,"42":2}}],["ds2",{"2":{"35":3,"41":1,"85":1}}],["ds1",{"2":{"35":3,"41":3,"42":1}}],["dschunked",{"2":{"4":3,"5":3,"6":3}}],["ds",{"2":{"0":3,"4":2,"5":2,"6":2,"30":1,"39":2,"40":12,"44":1,"45":1,"46":2,"50":4,"51":10,"54":1,"56":3,"59":1,"60":2,"61":1,"63":3,"65":3,"66":2,"67":1,"68":2,"78":1,"79":1,"80":3,"81":2,"82":3,"83":7,"84":3,"85":2,"86":1,"87":5,"89":4,"90":1,"111":2}}],["written",{"2":{"89":1,"90":1}}],["writing",{"2":{"87":1}}],["writefac",{"2":{"90":1}}],["writefac=4",{"2":{"84":1,"89":1}}],["writes",{"2":{"89":1}}],["write",{"0":{"79":1,"80":1,"82":1},"1":{"80":1,"81":2,"82":1,"83":2,"84":1,"85":1,"86":1,"87":1},"2":{"86":1,"89":2}}],["wrapping",{"2":{"53":1,"66":1,"72":2}}],["wrapped",{"2":{"16":1}}],["wrap",{"2":{"0":1,"89":1}}],["would",{"2":{"64":1,"89":2}}],["world",{"2":{"61":2}}],["workarounds",{"2":{"112":1}}],["workdir",{"2":{"90":1}}],["worker",{"2":{"89":1}}],["workers",{"2":{"89":1}}],["workflow",{"2":{"62":1}}],["workflows",{"2":{"1":1}}],["work",{"2":{"24":2,"50":1,"66":1,"73":1,"89":1,"101":2,"103":1,"113":1}}],["workload",{"2":{"23":1}}],["working",{"2":{"16":1,"87":1}}],["works",{"2":{"6":1,"34":1,"39":1,"40":1,"65":1,"86":1}}],["wgs",{"2":{"61":3}}],["www",{"2":{"60":1,"67":1,"79":1}}],["w",{"2":{"56":2,"87":2}}],["was",{"2":{"20":1,"22":1,"23":1,"90":1}}],["way",{"2":{"15":1,"24":1,"32":1}}],["warning",{"2":{"11":1,"24":1,"32":1,"40":1,"45":1,"47":1,"50":1,"84":1,"86":1,"89":1,"112":1}}],["wanted",{"2":{"90":1}}],["wants",{"2":{"86":1}}],["want",{"0":{"106":1},"2":{"0":1,"1":1,"62":1,"66":1,"76":1,"78":2,"90":1,"93":1,"103":1,"105":1}}],["white",{"2":{"109":1,"110":1}}],["while",{"2":{"86":1}}],["which",{"2":{"9":1,"16":1,"22":2,"33":1,"40":2,"51":1,"56":1,"60":1,"63":1,"68":1,"71":1,"72":1,"76":3,"89":5,"90":4,"103":1}}],["what",{"2":{"51":1}}],["whose",{"0":{"39":1,"40":1}}],["whole",{"2":{"8":3}}],["whether",{"2":{"90":2}}],["when",{"2":{"1":1,"6":1,"13":1,"51":1,"63":1,"64":1,"66":1,"76":1,"78":1,"89":3,"90":1}}],["whereas",{"2":{"74":1}}],["where",{"2":{"0":1,"23":1,"40":4,"49":1,"66":1,"71":1,"87":1,"89":1,"90":4}}],["width",{"2":{"112":1}}],["wide",{"2":{"66":1}}],["wintri",{"0":{"109":1},"1":{"110":1,"111":1,"112":1,"113":1,"114":1,"115":1}}],["windowloopinds",{"2":{"90":1}}],["window",{"2":{"89":1,"90":1}}],["within",{"2":{"70":1}}],["without",{"2":{"65":1,"90":1}}],["with",{"0":{"47":1},"2":{"4":1,"5":1,"8":1,"10":1,"12":1,"13":1,"16":7,"17":3,"18":2,"19":2,"21":3,"22":4,"23":2,"24":1,"29":3,"32":1,"33":1,"40":6,"41":2,"42":3,"45":2,"46":3,"47":1,"50":2,"51":4,"52":1,"54":2,"55":2,"56":5,"58":1,"59":3,"60":2,"63":3,"66":2,"67":1,"68":2,"69":3,"70":3,"71":5,"73":1,"75":1,"79":1,"81":1,"83":1,"84":1,"85":2,"86":2,"87":1,"89":11,"90":1,"92":1,"96":4,"97":3,"101":1,"103":1,"107":2,"109":1,"112":2,"113":1,"114":1}}],["will",{"2":{"0":1,"1":1,"4":1,"5":1,"13":1,"16":3,"17":2,"18":1,"19":1,"22":1,"36":1,"40":1,"41":2,"42":2,"45":2,"46":1,"48":1,"53":2,"58":1,"60":1,"66":1,"84":3,"86":3,"87":1,"89":12,"90":3,"103":1}}],["wether",{"2":{"89":1}}],["weight=",{"2":{"89":1}}],["weight=nothing",{"2":{"89":1}}],["weight",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"53":1,"55":1,"56":1}}],["weights",{"0":{"55":1},"2":{"51":3,"55":2,"56":1}}],["weightedmean",{"2":{"89":1}}],["weighted",{"0":{"56":1},"2":{"42":1,"49":1,"51":8,"56":8,"89":3}}],["well",{"2":{"42":1,"46":1,"86":1,"89":1}}],["welcome",{"2":{"6":1,"91":1}}],["were",{"2":{"13":2,"71":1,"90":1,"98":1}}],["we",{"2":{"0":1,"8":2,"9":1,"13":2,"14":1,"16":5,"17":3,"18":1,"19":1,"20":1,"22":5,"23":2,"29":2,"33":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":5,"46":4,"51":3,"52":1,"53":2,"56":1,"59":1,"64":1,"66":1,"70":1,"76":1,"86":3,"87":4,"97":2,"98":1,"107":1,"112":1}}],["oob",{"2":{"89":1}}],["o1",{"2":{"60":2,"67":2,"79":2,"85":1}}],["ocean",{"2":{"60":1,"67":1,"79":1,"85":1}}],["oct",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["occuring",{"2":{"4":1}}],["o",{"2":{"50":3,"56":4,"89":5}}],["ohlcv",{"2":{"46":3}}],["ouput",{"2":{"93":1}}],["our",{"2":{"41":1,"42":1,"99":1,"113":1}}],["outcube",{"2":{"90":1}}],["outcubes",{"2":{"90":1}}],["outcs",{"2":{"90":1}}],["outsize",{"2":{"90":1}}],["outar",{"2":{"90":2}}],["out",{"2":{"50":1,"89":2,"90":1}}],["outtype",{"2":{"16":2,"89":1,"90":2}}],["outdims=outdims",{"2":{"22":1,"23":1}}],["outdims",{"0":{"17":1,"18":1,"19":1,"20":1},"1":{"18":1,"19":1,"20":1},"2":{"16":4,"18":12,"19":2,"20":11,"21":3,"89":6}}],["outputcube",{"2":{"90":3}}],["outputs",{"2":{"16":1,"18":2,"21":1}}],["output",{"2":{"6":1,"16":3,"17":1,"18":1,"22":1,"23":3,"60":1,"67":1,"79":1,"85":1,"89":11,"90":9}}],["optimal",{"2":{"90":1}}],["optifunc",{"2":{"90":1}}],["optionally",{"2":{"89":1}}],["option",{"2":{"37":1,"39":1,"81":1}}],["options",{"2":{"34":1,"58":1,"66":1,"89":1}}],["operates",{"2":{"89":1}}],["operate",{"2":{"21":1,"78":1}}],["operation",{"2":{"21":1,"90":1}}],["operations",{"0":{"16":1},"2":{"10":1,"51":1,"89":2,"90":3,"112":1}}],["operating",{"2":{"19":1}}],["opens",{"2":{"89":1}}],["openinterval",{"2":{"71":1}}],["opening",{"2":{"65":2}}],["open",{"0":{"58":1,"64":1,"71":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1},"2":{"0":2,"18":1,"20":2,"46":4,"58":3,"59":2,"60":2,"61":1,"64":1,"65":3,"66":3,"67":2,"71":2,"79":1,"81":1,"85":1,"87":6,"89":7,"107":1,"112":1}}],["obj",{"2":{"42":2,"98":1,"100":1}}],["objects",{"2":{"89":2}}],["object",{"2":{"11":1,"59":1,"89":5,"90":3}}],["obtain",{"0":{"34":1},"2":{"46":1,"53":1}}],["omit",{"2":{"23":1}}],["otherwise",{"2":{"89":1}}],["others",{"2":{"21":1,"46":1}}],["other",{"0":{"101":1},"1":{"102":1,"103":1,"104":1},"2":{"20":1,"24":1,"62":1,"101":1,"103":1,"112":1}}],["overwrite=false",{"2":{"84":1,"89":1}}],["overwrite=true",{"2":{"16":2,"84":3,"86":3,"89":1}}],["overwrite",{"0":{"84":1},"2":{"84":1,"89":2,"90":2}}],["overview",{"0":{"102":1},"2":{"78":1,"101":1,"102":1}}],["over",{"0":{"16":1,"103":1},"2":{"10":1,"15":1,"21":1,"23":1,"56":1,"89":8,"90":1,"103":1}}],["orca2",{"2":{"60":1,"67":1,"79":1,"85":1}}],["orangered",{"2":{"42":1}}],["ordered",{"2":{"74":1,"75":1}}],["ordereddict",{"2":{"22":1,"89":1}}],["orderedcollections",{"2":{"22":1}}],["order",{"2":{"16":1,"49":1,"87":1}}],["original",{"2":{"60":2,"63":6,"68":4,"69":6,"70":6,"71":10}}],["originates",{"2":{"9":1}}],["origin",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1,"96":2}}],["or",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"1":2,"6":1,"10":1,"13":2,"15":1,"27":1,"33":1,"38":1,"47":2,"58":1,"59":1,"62":1,"67":2,"74":3,"77":2,"78":9,"81":1,"84":1,"89":24,"90":7,"95":1,"96":2,"105":1,"113":1}}],["once",{"2":{"56":1,"76":1,"90":1,"92":1}}],["onlinestat",{"2":{"89":2}}],["onlinestats",{"2":{"42":2}}],["only",{"2":{"6":1,"13":1,"14":1,"16":1,"20":1,"22":1,"24":1,"29":2,"41":1,"51":1,"60":1,"78":1,"86":1,"89":2}}],["on",{"2":{"1":2,"6":1,"7":1,"10":2,"13":2,"16":1,"23":2,"31":1,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"74":1,"78":1,"79":1,"81":1,"85":1,"86":1,"89":5,"90":4,"112":2}}],["ones",{"2":{"17":1,"33":1}}],["oneto",{"2":{"4":4,"5":4,"6":2,"25":2,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"86":6,"96":2}}],["one",{"0":{"18":1,"44":1},"2":{"0":1,"7":1,"8":2,"14":2,"18":15,"19":5,"20":6,"21":2,"22":2,"42":1,"46":1,"52":1,"60":1,"64":1,"74":2,"75":1,"86":2,"89":9,"90":3,"101":1,"112":1}}],["own",{"2":{"0":1,"60":1,"78":1}}],["offsets",{"2":{"90":1}}],["offset",{"2":{"13":1}}],["often",{"2":{"7":1}}],["of",{"0":{"11":1,"40":1,"49":1,"87":1,"102":2},"2":{"0":2,"1":1,"6":1,"8":3,"9":1,"10":2,"11":1,"12":1,"13":2,"14":1,"15":1,"22":7,"23":3,"24":1,"26":1,"27":1,"31":3,"32":3,"36":1,"37":2,"38":1,"39":1,"40":2,"41":1,"42":1,"49":1,"50":1,"54":1,"60":1,"63":1,"64":3,"66":2,"67":3,"68":1,"70":1,"72":1,"74":7,"75":1,"76":2,"77":2,"78":1,"79":1,"85":1,"86":1,"87":1,"88":1,"89":53,"90":42,"96":1,"97":2,"99":2,"100":1,"101":1,"102":1,"112":2,"114":1}}],["eo",{"2":{"101":1}}],["esdltutorials",{"2":{"101":1}}],["esm1",{"2":{"59":1,"107":2,"112":1}}],["eltype",{"2":{"96":1}}],["elementtype",{"2":{"90":1}}],["element",{"2":{"8":1,"9":1,"10":2,"13":2,"14":1,"16":3,"22":2,"34":1,"42":1,"51":2,"52":1,"53":1,"54":7,"55":2,"56":3,"66":1,"69":2,"72":1,"75":1,"76":2,"89":1,"90":1,"99":1}}],["elements",{"0":{"11":1,"69":1},"2":{"8":1,"12":1,"13":2,"23":1,"67":1,"74":1,"89":1,"90":1}}],["empty",{"2":{"90":1}}],["embeds",{"2":{"89":1}}],["either",{"2":{"89":2}}],["error",{"2":{"84":1}}],["even",{"2":{"65":1}}],["everywhere",{"2":{"23":2}}],["every",{"2":{"0":1,"10":1,"13":1,"89":1}}],["epsg",{"2":{"61":5}}],["et",{"2":{"60":1,"67":1,"76":1,"79":1,"85":1}}],["edu",{"2":{"60":1,"67":1,"75":1,"79":1}}],["equivalent",{"2":{"56":1,"72":1}}],["equally",{"2":{"0":1}}],["effectively",{"2":{"41":1}}],["env",{"2":{"93":1}}],["ensure",{"2":{"60":1}}],["enabling",{"2":{"29":1}}],["enter",{"2":{"95":1}}],["entire",{"2":{"22":1,"24":1,"80":1,"82":1}}],["entries",{"2":{"22":1,"46":1,"50":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"87":1,"89":1,"96":1,"113":1,"114":1}}],["entry",{"2":{"10":1,"12":1,"13":1,"16":2,"17":1,"18":1,"19":1,"21":1,"29":2,"51":2,"52":1,"54":2,"55":2,"56":3,"89":1,"92":3}}],["enumerate",{"2":{"22":2,"56":2}}],["end",{"2":{"13":1,"16":1,"18":1,"19":2,"21":2,"22":4,"23":2,"41":1,"51":2,"56":2,"60":1,"99":2,"111":1}}],["exist",{"2":{"89":1}}],["exists",{"2":{"84":1,"89":1,"90":1}}],["existing",{"0":{"8":1,"66":1},"2":{"66":1,"84":1,"85":1}}],["expression",{"2":{"89":1}}],["exported",{"2":{"78":2}}],["experiment",{"2":{"60":3,"67":3,"79":3,"85":3}}],["explore",{"2":{"58":1}}],["explicitly",{"2":{"13":1,"33":1,"36":1,"51":1,"78":1,"90":1}}],["executes",{"2":{"89":1}}],["execute",{"2":{"23":1}}],["external",{"2":{"59":1,"107":1}}],["extension",{"2":{"58":1,"89":2}}],["extended",{"2":{"16":1,"89":1,"90":2}}],["extracts",{"2":{"90":1}}],["extract",{"0":{"32":1},"1":{"33":1},"2":{"90":1}}],["extracted",{"2":{"21":1}}],["extra",{"2":{"23":1}}],["exactly",{"2":{"5":1,"34":1,"46":1}}],["examples",{"2":{"6":1,"34":2,"48":1,"58":1,"60":1,"67":1,"79":1,"92":1}}],["example",{"2":{"0":1,"1":1,"5":1,"10":1,"17":1,"21":1,"23":2,"33":1,"39":1,"40":1,"41":1,"42":1,"49":1,"58":1,"60":1,"62":1,"64":1,"67":2,"74":2,"75":1,"76":1,"78":1,"79":2,"89":5,"90":1,"92":2,"96":2,"113":1,"115":1}}],["e",{"2":{"7":1,"8":1,"10":1,"11":1,"13":1,"22":2,"23":1,"26":1,"27":1,"29":1,"37":1,"58":1,"60":1,"72":1,"74":1,"77":1,"84":1,"89":7,"90":1,"93":1,"96":1}}],["east",{"2":{"61":1}}],["easier",{"2":{"29":1,"67":1}}],["easily",{"2":{"0":1,"23":1}}],["easy",{"2":{"26":1,"27":1,"112":1}}],["each",{"2":{"4":1,"5":1,"10":1,"13":1,"20":1,"22":5,"23":2,"41":2,"42":2,"49":1,"53":1,"63":1,"75":1,"77":1,"89":3,"90":3,"96":1}}],["features",{"2":{"102":1}}],["feel",{"2":{"81":1}}],["few",{"2":{"78":1}}],["feb",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["frame",{"2":{"103":1}}],["frames",{"2":{"74":1}}],["front",{"2":{"90":1}}],["from",{"0":{"32":1,"34":2,"46":1,"49":1},"1":{"33":1},"2":{"0":1,"8":1,"9":1,"24":1,"32":1,"33":1,"34":4,"40":3,"46":2,"51":1,"58":1,"63":1,"66":1,"71":1,"76":2,"87":1,"89":6,"90":6,"96":1,"99":1,"112":1,"113":1}}],["free",{"2":{"81":1}}],["frequently",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["fr",{"2":{"60":1,"67":1,"79":1,"85":1}}],["faceting",{"0":{"113":1},"2":{"113":1}}],["fallback",{"2":{"90":1}}],["falls",{"2":{"89":1}}],["false",{"2":{"18":1,"20":1,"47":1,"89":1,"90":1}}],["fails",{"2":{"89":1}}],["faq",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["faster",{"2":{"90":1}}],["fastest",{"2":{"1":1}}],["fast",{"2":{"1":1,"13":1}}],["f2mix",{"2":{"19":3}}],["f2",{"2":{"18":3}}],["f1",{"2":{"18":2,"19":1}}],["fu",{"2":{"90":1}}],["funtion",{"2":{"99":1}}],["fun",{"2":{"89":5}}],["functionality",{"0":{"102":1}}],["functions",{"2":{"10":2,"21":1,"74":2,"88":1,"89":1,"90":1,"113":1}}],["function",{"0":{"42":1},"2":{"0":1,"1":1,"13":2,"15":1,"16":6,"17":1,"18":2,"19":2,"21":5,"23":6,"32":2,"35":1,"41":1,"42":1,"46":1,"48":1,"51":1,"53":1,"56":1,"58":1,"62":1,"71":1,"86":1,"89":22,"90":12}}],["future",{"2":{"50":1}}],["further",{"2":{"13":1,"101":1}}],["flag",{"2":{"90":3}}],["flat",{"2":{"18":4,"19":2,"20":2}}],["float32",{"2":{"16":6,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"86":2,"87":4,"90":1,"113":1,"114":1}}],["float64",{"2":{"8":1,"9":1,"10":3,"12":3,"13":3,"14":4,"17":2,"18":2,"19":2,"20":2,"21":3,"22":9,"25":2,"27":4,"29":6,"30":2,"32":1,"33":3,"35":4,"41":12,"42":5,"46":2,"50":2,"51":3,"52":2,"55":3,"56":6,"59":4,"60":4,"61":2,"63":6,"64":1,"67":2,"68":4,"69":2,"70":6,"71":10,"72":4,"79":2,"85":2,"89":1,"90":1,"96":7,"99":2,"107":2,"113":2,"114":2}}],["flexible",{"2":{"9":1,"15":1}}],["focus",{"2":{"112":1}}],["folder",{"2":{"93":1}}],["follow",{"2":{"93":1,"101":1}}],["follows",{"2":{"16":2,"19":1,"21":1,"51":2,"56":1,"87":1}}],["following",{"2":{"2":1,"5":1,"6":1,"16":1,"17":1,"18":1,"21":1,"23":1,"33":1,"48":1,"49":1,"50":1,"89":2,"90":4,"101":1,"105":2,"106":1}}],["found",{"2":{"89":1,"90":1}}],["fourth",{"2":{"60":2,"67":2,"79":2,"85":2}}],["fontsize=24",{"2":{"108":1}}],["fontsize=18",{"2":{"56":1}}],["font=",{"2":{"56":1}}],["forwarded",{"2":{"89":1}}],["forwardordered",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":4,"18":4,"19":3,"20":3,"21":9,"22":9,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":4,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":1,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":15,"72":3,"79":3,"85":6,"86":6,"96":5,"99":1,"107":3,"113":3,"114":3}}],["force",{"2":{"89":1}}],["forcing",{"2":{"59":1,"107":1}}],["forms",{"2":{"89":1,"90":2}}],["formal",{"2":{"76":1}}],["format",{"2":{"58":1,"81":1,"83":1,"84":1,"89":1,"99":1}}],["former",{"2":{"32":1}}],["for",{"0":{"6":1,"98":1},"1":{"99":1,"100":1},"2":{"0":2,"1":3,"4":1,"5":1,"6":1,"20":1,"22":4,"23":1,"37":1,"39":2,"40":2,"41":4,"42":6,"46":5,"50":1,"51":1,"54":1,"56":3,"58":3,"60":2,"62":2,"63":1,"64":3,"65":2,"67":1,"71":1,"72":1,"74":4,"75":3,"76":1,"78":4,"79":1,"84":1,"85":1,"86":2,"89":20,"90":16,"98":1,"99":2,"101":1,"106":1,"112":3,"113":2,"114":1,"115":2}}],["f",{"2":{"2":2,"16":3,"58":1,"89":1}}],["field",{"2":{"89":1}}],["fields",{"2":{"42":1,"89":1,"90":4}}],["figure=",{"2":{"100":1,"113":3,"114":1,"115":1}}],["figure",{"2":{"56":2,"98":1,"100":1,"108":1,"109":1,"110":1,"111":1}}],["fig",{"2":{"42":3,"56":8,"98":1,"100":1,"108":2,"109":2,"110":2,"111":3}}],["filterig",{"2":{"99":1}}],["filter",{"2":{"89":2}}],["fillarrays",{"2":{"86":3}}],["fill",{"2":{"86":1,"89":1,"90":1}}],["fillvalue=",{"2":{"90":1}}],["fillvalue",{"2":{"50":6,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["filling",{"2":{"28":1,"29":1}}],["filename",{"2":{"50":2,"58":1,"89":1}}],["files",{"0":{"104":1},"2":{"7":1,"57":1,"61":1,"64":2,"65":6,"66":4,"89":5,"90":2,"93":1}}],["file",{"2":{"2":1,"7":1,"27":1,"40":1,"60":2,"83":3,"84":2,"86":1,"89":2,"92":4}}],["findaxis",{"2":{"90":1}}],["findall",{"2":{"22":1,"99":1}}],["find",{"2":{"36":1,"90":1,"101":1}}],["finalizer",{"2":{"90":1}}],["finalize",{"2":{"90":1}}],["finally",{"2":{"22":1,"89":1}}],["final",{"2":{"21":1,"22":1}}],["firstly",{"2":{"37":1}}],["first",{"2":{"8":4,"16":3,"18":1,"22":1,"42":1,"45":1,"56":1,"87":1,"89":4,"90":1,"92":1,"96":1,"107":1,"112":2,"113":1}}],["fitting",{"2":{"89":1}}],["fittable",{"2":{"89":2}}],["fitcube",{"2":{"42":2}}],["fitsym",{"2":{"89":4}}],["fits",{"2":{"24":1}}],["fit",{"2":{"1":1,"62":1,"74":1}}],["t=union",{"2":{"90":1}}],["typing",{"2":{"95":1}}],["typically",{"2":{"89":1}}],["type",{"2":{"33":1,"47":1,"50":2,"74":1,"76":1,"89":8,"90":3,"96":1,"97":1,"112":1}}],["types",{"0":{"73":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"24":2,"26":1,"27":1,"47":1,"69":1,"75":1,"89":2,"97":1}}],["tutorial",{"2":{"101":2,"102":1,"103":1}}],["tutorials",{"0":{"101":1},"1":{"102":1,"103":1,"104":1},"2":{"71":1,"101":3}}],["turn",{"2":{"89":1}}],["tuple",{"2":{"2":3,"4":1,"5":1,"6":1,"18":1,"20":1,"51":2,"52":1,"54":5,"55":2,"56":4,"89":5,"90":1}}],["tbl",{"2":{"42":2}}],["target",{"2":{"90":1}}],["tab",{"2":{"89":4}}],["tableau",{"2":{"114":1}}],["tableaggregator",{"2":{"89":1}}],["tables",{"2":{"103":1}}],["table",{"0":{"103":1},"2":{"42":2,"59":1,"60":2,"67":2,"78":2,"79":2,"85":2,"89":4,"90":1,"107":1}}],["tas",{"2":{"59":5,"107":5,"112":2,"113":5,"114":2,"115":1}}],["tair",{"2":{"50":2,"56":1,"89":1}}],["ta",{"2":{"46":3}}],["takes",{"2":{"89":4}}],["taken",{"2":{"40":2}}],["take",{"2":{"16":1,"89":1,"90":2,"93":1}}],["tip",{"2":{"97":1}}],["tidy",{"2":{"89":1}}],["ticks",{"2":{"74":1}}],["ticks=false",{"2":{"56":1}}],["tick",{"2":{"72":1,"77":1,"96":1}}],["tiff",{"0":{"104":1}}],["tif",{"2":{"61":2,"106":1}}],["title",{"2":{"56":1,"60":1,"67":1,"79":1,"85":1,"92":1}}],["ti",{"2":{"26":1}}],["time1",{"2":{"69":2}}],["timearray",{"0":{"46":1},"2":{"46":3}}],["time=1",{"2":{"96":1,"112":1}}],["time=>cyclicbins",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["time=datetime",{"2":{"113":1,"114":1}}],["time=date",{"2":{"37":1}}],["time=at",{"2":{"37":1,"56":3}}],["time=between",{"2":{"37":1}}],["time",{"0":{"49":1,"78":1,"114":1},"2":{"1":1,"7":1,"8":4,"9":3,"10":3,"12":1,"13":1,"14":7,"16":14,"17":2,"18":4,"19":1,"20":5,"21":10,"22":8,"23":5,"26":2,"29":3,"30":1,"35":2,"37":8,"39":4,"40":7,"41":4,"42":3,"46":5,"50":4,"51":21,"52":3,"53":2,"54":9,"55":3,"56":7,"59":4,"60":4,"63":6,"64":4,"65":9,"66":5,"67":1,"68":4,"69":6,"70":6,"71":10,"74":2,"75":1,"78":4,"79":1,"85":1,"89":6,"96":4,"98":1,"99":4,"107":4,"112":1,"113":10,"114":4}}],["timestamp",{"2":{"46":1}}],["timestep",{"2":{"42":1}}],["timeseries",{"2":{"46":3}}],["times",{"2":{"0":1}}],["treat",{"2":{"89":1}}],["treatment",{"2":{"89":1,"90":1}}],["treated",{"2":{"59":1,"113":1,"114":1}}],["translate",{"2":{"109":1,"110":1}}],["transformed",{"2":{"60":1,"67":1,"79":1,"85":1}}],["transformations",{"2":{"109":1}}],["transformation",{"2":{"22":1}}],["transform",{"2":{"22":2}}],["track",{"2":{"89":1}}],["tries",{"2":{"58":1,"89":1}}],["true",{"2":{"12":1,"47":1,"62":1,"86":1,"89":3,"90":1}}],["tesselation",{"2":{"111":1}}],["testrange",{"2":{"90":1}}],["test1",{"2":{"47":1}}],["test2",{"2":{"47":2}}],["test",{"2":{"17":4,"18":1,"19":3,"20":4,"21":4,"47":3,"90":1,"107":1}}],["terminal",{"2":{"93":1}}],["text",{"2":{"92":1}}],["tensors",{"2":{"74":1}}],["tell",{"2":{"36":1}}],["temporary",{"2":{"90":1}}],["temporal",{"2":{"41":1,"48":1,"74":1}}],["tempo",{"2":{"51":6,"54":4,"55":1}}],["temp",{"2":{"9":2}}],["temperature=temperature",{"2":{"40":1}}],["temperature",{"2":{"9":2,"40":4,"50":2,"56":2,"59":3,"60":2,"63":6,"68":5,"69":6,"70":6,"71":10,"74":1,"75":1,"76":1,"96":4,"113":3,"114":3}}],["tempname",{"2":{"2":1,"4":1,"5":1,"6":1}}],["tspan",{"2":{"16":1}}],["t",{"2":{"16":4,"37":1,"39":2,"40":2,"42":3,"60":1,"63":4,"68":2,"69":3,"70":3,"71":5,"81":1,"89":1,"90":2,"98":1,"99":1,"113":1}}],["two",{"2":{"8":1,"9":1,"18":8,"19":4,"20":3,"21":2,"34":2,"35":1,"74":1,"90":1}}],["toghether",{"2":{"90":1}}],["together",{"2":{"46":1,"76":1}}],["touches",{"2":{"71":1}}],["tolerances",{"2":{"70":1}}],["tos",{"2":{"60":5,"63":6,"67":2,"68":4,"69":4,"70":3,"71":9,"72":2,"79":2,"80":2,"82":2,"85":1}}],["top",{"2":{"56":1,"112":1}}],["too",{"2":{"40":1,"74":1,"89":1}}],["todo",{"2":{"21":1,"99":1}}],["toy",{"2":{"21":1,"86":1}}],["to",{"0":{"9":1,"18":1,"19":1,"43":1,"85":1,"91":1,"92":1,"105":1},"1":{"44":1,"45":1,"92":1,"93":2},"2":{"0":4,"1":4,"3":1,"4":1,"6":2,"7":1,"8":1,"9":1,"10":8,"12":1,"15":1,"16":2,"17":1,"18":2,"19":1,"20":4,"21":3,"22":2,"23":6,"24":3,"25":2,"27":3,"28":1,"31":2,"32":2,"34":3,"35":1,"37":2,"39":2,"40":6,"41":1,"42":1,"45":2,"46":2,"47":1,"48":1,"49":3,"50":2,"51":1,"52":1,"53":1,"56":1,"57":1,"58":1,"59":3,"60":2,"62":1,"63":2,"64":2,"65":1,"66":2,"67":3,"71":1,"72":1,"73":1,"74":5,"75":3,"76":2,"77":2,"78":2,"79":1,"80":2,"81":2,"82":2,"83":2,"84":1,"85":2,"86":4,"87":3,"89":48,"90":19,"92":2,"93":3,"97":2,"101":1,"103":3,"105":1,"107":2,"112":3}}],["though",{"2":{"86":1}}],["those",{"2":{"11":1,"24":1,"26":1,"27":1,"45":1,"75":1,"87":1}}],["through",{"2":{"89":5,"90":5,"95":1}}],["thrown",{"2":{"84":1}}],["three",{"2":{"36":1,"75":1,"98":1}}],["threaded",{"2":{"60":1}}],["threads",{"2":{"60":2,"89":2}}],["thread",{"2":{"23":1,"60":3}}],["than",{"2":{"24":1,"36":1,"41":1,"42":1}}],["that",{"2":{"0":1,"9":2,"10":1,"13":1,"16":5,"20":1,"21":1,"22":2,"23":1,"24":1,"33":1,"35":1,"38":1,"40":2,"42":1,"46":1,"47":1,"49":1,"52":1,"55":1,"60":2,"62":1,"65":2,"72":1,"74":1,"75":2,"77":1,"78":1,"86":2,"89":13,"90":13,"101":1,"103":1,"112":2}}],["things",{"2":{"31":1}}],["think",{"2":{"1":1}}],["thinking",{"2":{"1":1}}],["this",{"2":{"0":1,"1":1,"4":1,"7":1,"10":1,"13":2,"16":4,"17":1,"19":2,"22":3,"23":1,"24":1,"28":1,"31":1,"34":1,"39":1,"40":2,"41":2,"42":2,"45":1,"46":1,"49":1,"51":1,"53":2,"57":1,"58":1,"59":1,"60":1,"62":1,"63":2,"66":1,"71":1,"73":1,"76":1,"81":1,"87":2,"88":2,"89":7,"90":10,"92":1,"93":2,"102":1,"103":1,"112":2,"113":1,"114":1}}],["they",{"2":{"46":4,"63":1}}],["their",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"47":1,"74":1,"89":3,"90":2}}],["then",{"2":{"21":2,"22":2,"33":1,"41":1,"46":1,"78":1,"86":1,"87":1,"93":2,"95":1}}],["thereby",{"2":{"89":1}}],["therefore",{"2":{"42":1,"97":1}}],["there",{"2":{"14":2,"21":1,"27":1,"34":1,"46":2,"63":1,"64":1,"89":1,"112":1}}],["theme",{"2":{"56":2}}],["them",{"2":{"7":1,"10":1,"36":1,"62":1,"78":1,"87":1,"89":1,"113":1}}],["these",{"2":{"0":1,"6":1,"34":1,"36":1,"47":1,"72":1,"74":1}}],["the",{"0":{"32":1,"34":1,"42":1,"50":1,"99":1,"102":1},"1":{"33":1},"2":{"0":5,"1":4,"2":3,"4":1,"5":4,"6":4,"8":6,"9":3,"10":1,"11":1,"13":3,"14":2,"15":1,"16":12,"17":3,"18":5,"19":2,"20":3,"21":10,"22":14,"23":7,"24":2,"27":1,"29":3,"31":1,"32":3,"33":5,"34":3,"35":2,"36":2,"37":9,"39":3,"40":10,"41":3,"42":10,"45":1,"46":7,"48":2,"49":5,"50":2,"51":4,"52":1,"53":2,"54":2,"55":2,"56":9,"58":6,"60":2,"62":3,"63":6,"65":1,"66":5,"67":1,"68":5,"69":3,"70":5,"71":6,"72":1,"73":1,"74":5,"75":4,"76":4,"78":4,"83":1,"84":3,"85":1,"86":10,"87":2,"89":122,"90":83,"91":1,"92":1,"93":6,"95":2,"96":6,"97":8,"98":1,"99":4,"101":6,"102":1,"103":5,"105":5,"106":1,"107":1,"112":4}}],["smooth",{"2":{"115":1}}],["small",{"2":{"31":1,"46":1}}],["switched",{"2":{"97":1}}],["syntax",{"2":{"97":1,"101":1,"112":1}}],["system",{"2":{"93":1}}],["symbols",{"2":{"58":1,"89":1}}],["symbol",{"2":{"10":1,"12":1,"13":1,"18":1,"20":1,"29":2,"46":5,"51":4,"52":2,"53":2,"54":5,"55":4,"56":6,"89":3,"90":1}}],["src",{"2":{"92":1}}],["sres",{"2":{"60":2,"67":2,"79":2,"85":2}}],["skeleton=a",{"2":{"86":1}}],["skeleton=true",{"2":{"86":2}}],["skeleton=false",{"2":{"84":1,"89":1}}],["skeleton",{"0":{"86":1},"2":{"86":8,"87":4}}],["skipped",{"2":{"89":1}}],["skip",{"2":{"58":4,"89":5}}],["skipmissing",{"2":{"23":1,"41":1}}],["ssp585",{"2":{"59":1,"107":2,"112":1}}],["snow3",{"2":{"42":1}}],["snippet",{"2":{"6":1}}],["slightly",{"2":{"101":1}}],["slicing",{"2":{"16":1}}],["slices",{"2":{"89":3}}],["slice",{"2":{"16":1,"107":4,"108":1}}],["slow",{"2":{"40":1,"89":1}}],["slurmmanager",{"2":{"23":1}}],["shinclude",{"2":{"93":1}}],["shdocs>",{"2":{"93":1}}],["shnpm",{"2":{"93":2}}],["shouldn",{"2":{"63":1}}],["should",{"2":{"37":1,"46":1,"50":1,"62":1,"63":1,"78":1,"89":3,"90":1,"92":1,"93":1,"105":1,"113":1}}],["showprog",{"2":{"89":1}}],["shown",{"2":{"63":1,"89":1}}],["shows",{"2":{"56":1}}],["showing",{"2":{"46":1}}],["show",{"2":{"23":1,"87":1,"111":1}}],["shading=false",{"2":{"109":1,"110":1,"111":1}}],["shall",{"2":{"89":5,"90":1}}],["shares",{"2":{"40":1}}],["share",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"75":1,"89":1}}],["shared",{"2":{"4":1,"5":1,"6":1,"20":1,"30":1,"35":1,"39":2,"40":3,"44":1,"45":1,"46":2,"59":1,"60":1,"61":1,"65":3,"66":1,"67":1,"79":1,"85":1,"86":1,"107":1}}],["shape",{"2":{"6":1}}],["scene",{"2":{"111":3}}],["scenariomip",{"2":{"59":1,"107":2,"112":1}}],["scenarios",{"2":{"17":1,"107":1}}],["scripts",{"2":{"93":1}}],["scope",{"2":{"89":1,"90":1}}],["scales",{"2":{"112":1,"113":1,"114":1}}],["scalar",{"2":{"59":1,"113":1,"114":1}}],["scatterlines",{"2":{"114":1}}],["scatter",{"2":{"112":3,"113":2,"115":1}}],["scattered",{"2":{"7":1}}],["such",{"2":{"63":1,"71":1,"89":1,"97":1}}],["surface",{"2":{"50":2,"56":2,"59":2,"60":2,"63":6,"68":5,"69":6,"70":6,"71":10,"109":1,"110":1,"113":2,"114":2}}],["subcubes",{"2":{"89":1}}],["subtype",{"2":{"74":1,"78":1,"90":1,"97":1}}],["subtables",{"2":{"42":1}}],["subsetextensions",{"2":{"90":1}}],["subsetcube",{"2":{"89":1}}],["subseting",{"2":{"72":1}}],["subsetting",{"0":{"37":1,"38":1,"39":1,"40":1},"1":{"39":1,"40":1},"2":{"59":1,"60":1,"90":1,"99":1}}],["subset",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"37":5,"40":4,"67":1,"70":1,"89":1,"90":1,"107":1,"113":1}}],["subsets",{"2":{"15":1,"77":1}}],["subsequent",{"2":{"17":1}}],["supposed",{"2":{"89":1}}],["support",{"2":{"27":1,"46":1}}],["supertype",{"2":{"26":1,"27":1}}],["summarysize",{"2":{"47":2}}],["sum",{"2":{"18":1,"19":1,"21":1,"22":2,"41":1,"51":4,"54":2,"55":4,"56":2}}],["suggestions",{"2":{"6":1}}],["s",{"2":{"10":1,"16":3,"18":1,"19":1,"21":2,"33":1,"35":1,"37":1,"39":1,"40":2,"56":7,"58":1,"62":1,"67":1,"77":1,"86":1,"89":2,"90":1,"99":1,"106":1,"112":4,"113":2,"114":1}}],["style",{"0":{"103":1}}],["st",{"2":{"97":1}}],["stdzero",{"2":{"89":1}}],["stock3",{"2":{"46":4}}],["stock2",{"2":{"46":4}}],["stock1",{"2":{"46":4}}],["stocks",{"2":{"46":7}}],["storing",{"2":{"75":1}}],["storage",{"2":{"11":1,"59":1}}],["stored",{"2":{"74":3,"90":2}}],["stores",{"2":{"74":1,"89":1}}],["store",{"2":{"0":1,"59":4,"74":1,"75":1,"107":2,"112":1}}],["struct",{"2":{"89":1,"90":4}}],["structures",{"2":{"73":1}}],["structure",{"2":{"33":2,"46":1,"76":1}}],["strings",{"0":{"47":1}}],["string",{"2":{"8":1,"9":2,"10":1,"12":1,"13":1,"14":2,"16":5,"17":3,"18":4,"19":3,"20":1,"21":4,"22":6,"25":1,"27":3,"29":3,"32":1,"33":3,"34":1,"35":2,"37":5,"41":3,"42":3,"47":5,"50":2,"51":1,"52":1,"54":2,"55":1,"56":1,"59":2,"60":2,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"84":1,"85":1,"86":1,"89":6,"90":4,"96":4,"99":1,"107":1,"113":1,"114":1}}],["stable",{"2":{"97":1}}],["statistical",{"2":{"115":1}}],["statistics",{"2":{"14":1,"23":1,"42":3,"48":1,"98":1}}],["stat",{"2":{"83":2}}],["status",{"2":{"63":2}}],["standard",{"2":{"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["standards",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"107":1}}],["stack",{"2":{"47":1}}],["started",{"0":{"94":1},"1":{"95":1,"96":1,"97":1}}],["start=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["start=december",{"2":{"51":3,"54":1}}],["start",{"2":{"10":1,"37":1,"81":1,"87":1}}],["still",{"2":{"8":1,"22":1,"75":1,"101":1}}],["step=3",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["steps",{"2":{"10":1,"14":1,"56":1,"89":1,"93":1,"113":2,"114":1}}],["step",{"2":{"7":1,"14":1,"20":1,"41":2,"89":1,"90":2,"107":1,"112":1}}],["sphere",{"0":{"111":1},"2":{"111":3}}],["spheroid",{"2":{"61":1}}],["split",{"2":{"89":1}}],["splitted",{"2":{"2":1}}],["special",{"2":{"69":1,"89":1,"90":1}}],["specifiers",{"2":{"90":1}}],["specifier",{"2":{"89":1}}],["specifies",{"2":{"89":3}}],["specified",{"2":{"66":1,"89":8,"90":1}}],["specific",{"2":{"37":1,"78":1,"89":2}}],["specifying",{"2":{"65":1,"89":2,"90":1}}],["specify",{"0":{"20":1},"2":{"17":1,"29":1,"89":1}}],["specs",{"2":{"59":1,"107":1,"115":2}}],["spectral",{"2":{"56":1}}],["sparse",{"2":{"74":1}}],["spatio",{"2":{"41":1}}],["spatial",{"2":{"1":1,"14":1,"22":5,"23":1,"48":1,"74":1}}],["span",{"2":{"37":1,"98":1}}],["space",{"2":{"1":1,"16":1}}],["safe",{"2":{"60":2}}],["sampled",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":3,"18":3,"19":2,"20":3,"21":9,"22":8,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":2,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":15,"72":3,"79":3,"85":6,"86":6,"96":5,"99":1,"107":3,"113":3,"114":3}}],["same",{"2":{"0":1,"2":1,"5":1,"6":1,"9":1,"16":1,"20":1,"21":1,"22":2,"26":1,"27":1,"33":2,"34":2,"35":1,"40":1,"45":1,"46":2,"62":1,"68":1,"69":1,"70":1,"74":1,"75":3,"76":2,"89":1,"90":1,"93":1}}],["saves",{"2":{"84":1,"89":1}}],["save",{"0":{"86":1},"2":{"12":1,"27":1,"45":1,"47":1,"80":2,"81":1,"82":2,"83":1,"86":1,"89":2}}],["savecube",{"2":{"2":1,"64":4,"80":1,"82":1,"86":1,"89":2}}],["savedataset",{"2":{"4":1,"5":1,"6":1,"81":1,"83":1,"84":1,"85":1,"86":2,"89":1,"90":1}}],["saved",{"2":{"2":1,"11":1,"20":1,"83":1,"84":1}}],["saving",{"2":{"1":1,"4":1,"5":1,"6":1,"16":1}}],["serve",{"2":{"90":1}}],["series",{"0":{"49":1,"114":1},"2":{"23":1,"114":2}}],["sequence",{"2":{"74":1}}],["sebastien",{"2":{"60":2,"67":2,"79":2,"85":2}}],["seaborn",{"2":{"108":1,"109":1,"110":1,"111":1}}],["sea",{"2":{"60":3,"63":6,"67":1,"68":5,"69":6,"70":6,"71":10,"79":1,"85":1}}],["searching",{"2":{"89":1}}],["search",{"2":{"58":1,"89":1}}],["season",{"2":{"51":1,"54":2,"55":1}}],["seasons",{"0":{"51":1,"53":1,"56":1},"1":{"52":1,"53":1},"2":{"51":9,"54":1,"56":5,"78":1}}],["seasonal",{"0":{"49":1,"98":1,"100":1},"1":{"99":1,"100":1},"2":{"49":1,"55":1,"56":1,"98":1,"99":4}}],["separate",{"2":{"89":1,"90":1}}],["separated",{"2":{"75":1}}],["separately",{"2":{"5":1,"22":1,"23":1}}],["sep",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["selected",{"2":{"90":1,"98":1}}],["select",{"0":{"67":1,"68":1,"69":1,"70":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1},"2":{"40":1,"67":1}}],["selectors",{"2":{"71":1}}],["selector",{"2":{"40":1,"70":1}}],["selection",{"2":{"40":2}}],["selecting",{"2":{"37":1,"39":1,"40":1}}],["seed",{"2":{"17":1,"21":2}}],["see",{"2":{"16":1,"18":1,"58":1,"71":1,"78":1,"89":1,"97":1,"113":1}}],["second",{"2":{"8":3,"18":1,"19":1,"89":1}}],["section",{"2":{"7":1,"10":1,"24":1,"28":1,"31":1,"46":1,"57":1,"73":1,"88":1}}],["setting",{"2":{"84":1,"89":1,"90":1}}],["sets",{"2":{"6":1,"50":1}}],["set",{"0":{"4":1,"5":1,"6":1},"2":{"4":1,"5":1,"19":2,"22":1,"59":1,"84":1,"89":1,"90":2,"93":1,"112":1}}],["setchunks",{"2":{"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"89":1,"90":1}}],["several",{"0":{"16":1},"2":{"0":1,"16":1,"35":1,"38":1,"78":1}}],["significant",{"2":{"81":1}}],["sin",{"2":{"98":1}}],["sink",{"2":{"90":1}}],["since",{"2":{"63":1,"105":1}}],["single",{"0":{"98":1},"1":{"99":1,"100":1},"2":{"0":1,"7":1,"8":1,"60":1,"76":1,"80":1,"82":1,"89":6,"90":1}}],["similar",{"2":{"112":1}}],["simulate",{"2":{"46":1}}],["simplicity",{"2":{"98":1}}],["simply",{"2":{"23":1,"47":1,"87":1,"93":1,"105":1}}],["simpler",{"2":{"112":1}}],["simple",{"2":{"16":1,"31":1,"96":1}}],["situations",{"2":{"1":1,"64":1}}],["size=",{"2":{"109":1,"110":1,"111":1,"113":3,"114":1,"115":1}}],["sizes",{"2":{"2":1,"89":2,"90":2}}],["size",{"2":{"0":1,"1":1,"4":1,"5":1,"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":2,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"50":2,"54":1,"56":1,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"83":4,"86":1,"87":1,"89":3,"90":4,"96":3,"98":1,"99":2,"100":1,"108":1,"113":1,"114":1}}],["sophisticated",{"2":{"112":1}}],["sosstsst",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["software",{"2":{"60":1,"67":1,"79":1}}],["sort",{"2":{"22":1}}],["so",{"2":{"2":1,"23":1,"36":1,"40":1,"89":1,"90":1,"112":1}}],["source",{"2":{"0":2,"58":1,"60":1,"67":1,"79":1,"84":1,"85":1,"89":25,"90":24}}],["sometimes",{"2":{"78":1,"86":1,"103":1}}],["some",{"0":{"40":1},"2":{"0":1,"11":1,"38":1,"40":1,"41":1,"46":2,"56":1,"89":1,"98":1,"109":1,"113":1}}],["a4",{"2":{"64":3,"65":1,"66":1}}],["advance",{"2":{"63":1}}],["addargs",{"2":{"89":3,"90":1}}],["adds",{"2":{"74":2,"77":1}}],["addprocs",{"2":{"23":2}}],["addition",{"2":{"22":1,"24":1,"74":1}}],["additional",{"2":{"4":3,"5":3,"9":1,"16":1,"21":1,"40":10,"45":4,"46":4,"59":2,"85":3,"89":4,"90":3,"107":2,"113":1}}],["added",{"2":{"15":1,"85":1,"89":1,"90":1}}],["add",{"2":{"6":1,"10":1,"12":1,"41":1,"60":1,"92":2,"95":2,"105":3,"106":4,"109":1,"113":1}}],["again",{"2":{"84":1,"87":1,"113":1}}],["agreement",{"2":{"56":1}}],["aggregation",{"2":{"23":1}}],["aggregate",{"2":{"22":1}}],["authority",{"2":{"61":5}}],["auto",{"2":{"18":1,"20":1,"89":1}}],["aug",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["api",{"0":{"88":1,"89":1,"90":1},"1":{"89":1,"90":1}}],["apr",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["appropriate",{"2":{"92":1}}],["approximated",{"2":{"90":1}}],["approx",{"2":{"89":1,"90":1}}],["approach",{"2":{"9":1,"51":1,"112":1}}],["append=true",{"2":{"85":2}}],["append=false",{"2":{"84":1,"89":1}}],["append",{"0":{"85":1}}],["apply",{"0":{"41":1},"2":{"10":2,"13":1,"15":1,"21":1,"23":1,"56":1,"99":1}}],["application",{"2":{"21":1}}],["applications",{"2":{"0":1}}],["applies",{"2":{"13":1}}],["applied",{"2":{"0":1,"3":1,"4":1,"22":1,"89":2,"90":1}}],["air",{"2":{"50":2,"56":2,"59":3,"113":3,"114":3}}],["a3",{"2":{"30":4,"64":3,"65":1,"66":1}}],["a2",{"2":{"29":1,"30":3,"60":2,"64":3,"65":2,"67":2,"79":2,"85":2,"96":1}}],["a1",{"2":{"29":1,"64":3,"65":2}}],["able",{"2":{"45":1}}],["abstractstring",{"2":{"89":1}}],["abstractdict",{"2":{"89":1,"90":3}}],["abstractdimarray",{"2":{"26":1,"27":1,"74":1}}],["abs",{"2":{"21":1}}],["about",{"2":{"1":2,"36":1,"70":1,"96":1,"102":1}}],["above",{"2":{"0":1,"5":1,"16":1,"86":1,"95":1}}],["atol",{"2":{"70":1}}],["atmosphere",{"2":{"60":1,"67":1,"79":1,"85":1}}],["atmos",{"2":{"59":1,"107":1}}],["attributes",{"2":{"56":1,"89":1,"90":1,"112":1,"113":1}}],["at",{"2":{"21":1,"22":4,"27":1,"40":1,"46":3,"56":1,"58":1,"60":3,"63":3,"67":1,"68":2,"69":6,"70":7,"71":5,"75":1,"76":2,"79":1,"84":2,"85":1,"89":3,"90":2,"91":1,"92":2,"93":2,"96":1,"101":2}}],["after",{"2":{"14":1,"16":1,"61":1,"89":3}}],["asaxisarray",{"2":{"89":1}}],["assemble",{"2":{"96":1}}],["assessment",{"2":{"60":2,"67":2,"79":2,"85":2}}],["associated",{"2":{"89":1}}],["assign",{"0":{"43":1},"1":{"44":1,"45":1}}],["aspect=dataaspect",{"2":{"56":1,"108":1}}],["asked",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["as",{"2":{"5":1,"8":1,"9":1,"10":1,"12":1,"16":6,"17":1,"18":1,"19":1,"21":1,"22":2,"23":2,"26":1,"27":2,"29":1,"33":2,"34":1,"35":1,"40":1,"42":1,"46":3,"48":1,"51":2,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":2,"66":2,"68":1,"71":1,"72":1,"74":1,"77":1,"78":1,"86":1,"87":1,"89":12,"90":3,"96":1,"97":1,"99":1,"103":1,"107":1}}],["axs",{"2":{"56":9}}],["ax",{"2":{"42":1,"98":3,"100":3,"108":1,"109":3,"110":3,"111":5}}],["axlist",{"2":{"10":2,"17":2,"19":1,"21":4,"22":2,"23":2,"29":2,"30":1,"35":3,"90":5,"96":3}}],["axessmall",{"2":{"90":2}}],["axes",{"0":{"32":1,"34":1},"1":{"33":1},"2":{"4":4,"5":4,"6":1,"20":1,"29":1,"30":1,"32":2,"33":1,"34":2,"37":2,"39":5,"40":13,"44":1,"45":5,"46":8,"59":3,"60":1,"61":1,"65":3,"66":1,"67":2,"74":2,"79":1,"85":4,"86":1,"89":15,"90":11,"96":1,"99":2,"107":3}}],["axislegend",{"2":{"100":1}}],["axis=false",{"2":{"111":1}}],["axis=",{"2":{"98":1}}],["axisdescriptor",{"2":{"90":1}}],["axisdesc",{"2":{"89":3}}],["axis",{"0":{"4":1},"2":{"4":1,"9":2,"16":3,"34":1,"37":1,"39":1,"40":7,"46":1,"56":1,"61":2,"72":1,"77":1,"86":1,"89":16,"90":14,"96":1,"100":1,"107":1,"108":1,"112":1,"113":1}}],["albeit",{"2":{"112":1}}],["always",{"2":{"89":2,"90":1,"91":1,"97":1}}],["already",{"2":{"63":1,"65":1,"84":1,"89":1,"90":1}}],["al",{"2":{"60":1,"67":1,"76":1,"79":1,"85":1}}],["alternatives",{"2":{"89":1}}],["alternatively",{"2":{"0":1,"2":1,"89":2,"95":1}}],["altered",{"2":{"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["although",{"2":{"46":1,"47":1,"71":1}}],["algebraic",{"2":{"112":1}}],["algebraofgraphics",{"0":{"112":1},"1":{"113":1,"114":1,"115":1},"2":{"106":1,"112":2,"115":1}}],["algebra",{"0":{"41":1},"2":{"41":1,"112":1}}],["along",{"0":{"8":1,"65":1,"66":1},"2":{"8":1,"16":1,"64":2,"65":2,"66":2,"89":6,"90":2,"101":1,"112":1}}],["allaxes",{"2":{"90":1}}],["allinaxes",{"2":{"90":1}}],["allmissing",{"2":{"89":1}}],["allocate",{"2":{"86":1}}],["allocation",{"2":{"22":1}}],["allow",{"2":{"90":1}}],["allowed",{"2":{"47":1}}],["allowing",{"2":{"26":1,"27":1,"75":1}}],["allows",{"2":{"23":1,"112":1}}],["all",{"0":{"6":1,"39":1,"40":1},"2":{"4":1,"6":2,"10":1,"12":1,"13":1,"14":2,"22":1,"23":4,"38":1,"40":2,"46":3,"56":2,"58":2,"61":1,"71":1,"74":1,"76":2,"84":3,"86":1,"88":1,"89":7,"90":7,"93":1}}],["also",{"2":{"2":1,"3":1,"14":1,"21":1,"23":1,"29":1,"32":1,"40":1,"42":1,"65":1,"74":2,"75":1,"81":1,"86":2,"89":1,"95":1,"115":1}}],["annual",{"2":{"89":1}}],["analysis",{"0":{"115":1},"2":{"115":1}}],["analyzing",{"2":{"1":1}}],["analog",{"2":{"75":1}}],["anchor",{"2":{"21":1}}],["another",{"2":{"16":1,"40":1,"66":1}}],["anynymous",{"2":{"89":1}}],["anyocean",{"2":{"89":1}}],["anymissing",{"2":{"89":1}}],["anymore",{"2":{"21":1}}],["any",{"2":{"8":1,"9":1,"10":1,"11":1,"14":2,"16":5,"18":3,"20":1,"21":2,"22":4,"25":1,"27":3,"29":1,"32":1,"33":3,"34":1,"35":1,"37":6,"41":3,"42":3,"47":4,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"58":1,"59":2,"60":3,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"86":1,"89":4,"90":9,"96":1,"99":1,"107":1,"113":1,"114":1}}],["an",{"0":{"8":1},"2":{"9":1,"10":4,"12":1,"13":1,"15":1,"23":2,"33":1,"34":1,"39":1,"40":1,"42":1,"47":1,"62":1,"66":1,"67":3,"70":1,"74":1,"75":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"85":1,"89":19,"90":8}}],["and",{"0":{"17":1,"28":1,"34":1,"48":1,"57":1,"67":1,"71":1,"79":1},"1":{"18":1,"19":1,"20":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"0":1,"2":1,"5":1,"6":1,"7":1,"8":1,"12":1,"16":4,"17":2,"18":2,"20":2,"21":4,"22":2,"24":1,"28":1,"29":1,"32":1,"35":1,"37":1,"40":6,"41":1,"42":6,"46":5,"48":1,"49":1,"50":1,"51":2,"56":1,"57":2,"58":1,"59":1,"60":1,"63":1,"64":1,"65":1,"67":1,"71":1,"74":5,"75":3,"76":2,"79":1,"81":2,"83":1,"84":1,"85":1,"86":3,"87":1,"89":19,"90":6,"91":1,"93":4,"95":1,"96":2,"98":1,"107":1,"109":1,"112":4,"114":1}}],["available",{"2":{"58":1,"71":2,"86":1,"88":1,"89":2,"95":1}}],["avariable",{"2":{"0":1}}],["avoid",{"2":{"51":1,"60":1}}],["avoids",{"2":{"22":1}}],["avoided",{"2":{"0":1}}],["averaging",{"2":{"14":1}}],["averages",{"0":{"49":1},"2":{"48":1}}],["average",{"2":{"14":1,"49":2}}],["arg",{"2":{"89":1}}],["argument",{"2":{"23":1,"86":1,"89":4,"90":2}}],["arguments",{"2":{"21":1,"56":1,"58":1,"89":12,"90":3}}],["artype",{"2":{"89":2}}],["archgdaldatasets",{"2":{"61":1}}],["archgdal",{"2":{"61":2,"106":1}}],["arr2",{"2":{"27":1}}],["arr",{"2":{"22":7,"27":2}}],["arrayinfo",{"2":{"90":1}}],["arrays",{"2":{"6":1,"7":1,"8":2,"9":1,"11":1,"28":1,"30":2,"59":2,"60":2,"73":1,"74":4,"75":3,"76":3,"89":2,"90":1}}],["array",{"0":{"22":1,"25":1},"2":{"0":1,"1":1,"8":2,"9":2,"10":3,"12":2,"13":2,"15":1,"18":1,"20":1,"22":8,"25":2,"34":1,"51":1,"56":1,"67":1,"74":4,"75":1,"76":1,"77":2,"86":5,"87":5,"89":10,"90":4,"96":3}}],["arbitrary",{"2":{"16":1}}],["arithmetics",{"0":{"12":1},"2":{"10":1}}],["areas",{"2":{"89":1}}],["area",{"2":{"59":2,"89":1,"113":2,"114":2}}],["areacella",{"2":{"59":2,"107":1,"113":1,"114":1}}],["are",{"2":{"0":1,"11":1,"18":1,"19":1,"24":3,"34":1,"36":1,"40":1,"46":3,"51":2,"56":2,"58":2,"63":2,"64":1,"66":1,"67":1,"71":1,"72":1,"74":3,"75":2,"76":3,"78":1,"86":1,"89":13,"90":6,"91":1,"93":1,"101":2,"103":1,"112":2}}],["according",{"2":{"89":1}}],["accessible",{"2":{"51":1}}],["access",{"2":{"1":2,"13":1,"29":1,"74":1,"77":1}}],["accessed",{"2":{"0":2,"59":1,"60":2}}],["activate",{"2":{"42":1,"93":2,"98":1,"108":1,"111":1,"112":1}}],["actually",{"2":{"90":1}}],["actual",{"2":{"13":1,"60":1,"86":1,"90":1,"96":1}}],["achieves",{"2":{"33":1}}],["achieved",{"2":{"0":1}}],["across",{"2":{"0":1,"7":1,"16":1,"74":3}}],["a",{"0":{"9":1,"11":1,"22":1,"29":1,"30":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"46":2,"47":1,"65":1,"66":1,"68":1,"72":1,"84":1,"85":1,"98":1,"104":1},"1":{"33":1,"37":1,"38":1,"39":2,"40":2,"44":1,"45":1,"99":1,"100":1},"2":{"0":4,"2":7,"3":1,"4":1,"7":1,"8":1,"9":2,"10":3,"11":1,"12":4,"13":2,"14":2,"15":1,"16":5,"17":2,"18":1,"19":2,"20":1,"22":75,"23":11,"25":2,"26":5,"27":8,"29":1,"31":1,"32":2,"33":2,"34":1,"36":4,"37":3,"38":1,"40":2,"42":3,"44":2,"45":2,"46":4,"49":1,"54":1,"56":2,"58":1,"59":6,"60":4,"61":1,"64":4,"65":3,"66":1,"70":2,"71":4,"72":1,"74":12,"75":4,"76":8,"77":1,"78":4,"80":3,"81":3,"82":3,"83":1,"84":4,"86":5,"89":65,"90":31,"92":2,"93":2,"96":4,"97":1,"102":1,"103":1,"112":3,"114":1}}],["iall",{"2":{"90":1}}],["iwindow",{"2":{"90":1}}],["icolon",{"2":{"90":1}}],["icefire",{"2":{"108":1,"109":1,"110":1,"111":1}}],["ice",{"2":{"60":1,"67":1,"79":1,"85":1}}],["ipcc",{"2":{"60":3,"67":3,"79":3,"85":3}}],["ipsl",{"2":{"60":6,"67":6,"79":6,"85":6}}],["idx",{"2":{"99":3}}],["identical",{"2":{"89":1}}],["id",{"2":{"59":2,"60":2,"67":2,"79":2,"85":2,"107":2}}],["irregular",{"2":{"20":1,"40":6,"42":2,"46":4,"50":2,"51":1,"54":3,"55":1,"56":1,"59":4,"60":2,"63":3,"64":1,"65":3,"66":2,"67":1,"68":2,"69":2,"70":6,"71":5,"79":1,"85":1,"90":1,"107":2,"113":2,"114":2}}],["illustrate",{"2":{"17":1}}],["immutable",{"2":{"11":1}}],["improving",{"2":{"97":1}}],["improvement",{"2":{"81":1}}],["improve",{"2":{"6":1}}],["implementing",{"2":{"89":1}}],["importance",{"2":{"90":1}}],["important",{"2":{"1":1}}],["import",{"2":{"65":1,"66":1}}],["impossible",{"2":{"11":1}}],["i",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"8":1,"22":3,"26":1,"27":1,"37":1,"56":2,"58":1,"60":2,"64":4,"65":2,"84":1,"89":8,"90":4,"93":2,"96":1,"99":3}}],["ispar",{"2":{"89":1,"90":1}}],["ismissing",{"2":{"86":1}}],["issue",{"2":{"81":1}}],["issues",{"2":{"50":1}}],["isequal",{"2":{"22":1}}],["is",{"2":{"1":2,"2":1,"6":1,"7":1,"9":1,"13":1,"14":2,"15":1,"16":4,"21":2,"22":2,"23":3,"24":1,"27":1,"31":1,"33":2,"35":1,"36":1,"40":2,"41":1,"42":4,"46":2,"47":2,"49":2,"50":2,"51":2,"55":1,"58":1,"60":2,"63":2,"66":1,"68":1,"71":2,"72":1,"74":4,"75":1,"76":2,"77":1,"78":1,"86":4,"87":1,"89":12,"90":10,"92":1,"95":1,"97":1,"101":1,"103":1,"105":1,"112":1}}],["if",{"2":{"0":1,"18":1,"19":1,"24":1,"40":3,"78":2,"81":1,"84":1,"86":2,"89":12,"90":6,"93":1,"101":1,"105":1}}],["incubes",{"2":{"90":1}}],["incs",{"2":{"90":1}}],["include",{"2":{"89":2,"90":1}}],["included",{"2":{"71":1}}],["inarbc",{"2":{"90":1}}],["inar",{"2":{"90":2}}],["inplace",{"2":{"89":3,"90":1}}],["inputcube",{"2":{"90":2}}],["inputs",{"2":{"18":1}}],["input",{"2":{"16":1,"17":1,"18":1,"20":1,"23":2,"42":1,"89":13,"90":8}}],["innerchunks",{"2":{"90":1}}],["inner",{"2":{"89":9,"90":3}}],["insize",{"2":{"90":1}}],["inside",{"2":{"89":3}}],["installed",{"2":{"97":1}}],["installation",{"0":{"95":1}}],["install",{"0":{"105":1},"2":{"93":1,"95":1,"106":1}}],["instantaneous",{"2":{"50":2}}],["instead",{"2":{"8":1,"9":1,"13":1,"32":1,"37":1,"71":1,"74":1}}],["initialization",{"2":{"59":1,"107":1}}],["initially",{"2":{"22":1}}],["inds",{"2":{"90":1}}],["indeed",{"2":{"87":1}}],["indexing",{"2":{"69":2,"70":2,"87":1,"97":1}}],["index",{"2":{"59":2,"90":2,"107":2}}],["independently",{"2":{"46":1}}],["indices",{"2":{"90":1,"99":1}}],["indicate",{"2":{"89":1}}],["indicating",{"2":{"9":1,"22":1,"89":1}}],["indims=indims",{"2":{"22":1,"23":1}}],["indims",{"0":{"18":1,"19":1,"21":1},"2":{"16":8,"18":4,"20":7,"21":3,"89":7}}],["individually",{"2":{"13":2}}],["individual",{"2":{"0":1,"59":1,"60":1}}],["information",{"2":{"58":1,"63":1,"84":1,"90":2}}],["info",{"2":{"16":2,"27":1,"32":1,"48":1,"51":1,"60":11,"78":1,"83":4,"86":1,"97":1,"112":1}}],["introducing",{"2":{"76":1}}],["int",{"2":{"33":1,"47":1,"99":3}}],["interoperability",{"0":{"106":1}}],["internal",{"0":{"90":1},"2":{"90":9}}],["internally",{"2":{"75":1}}],["interface",{"2":{"89":2,"103":1}}],["interested",{"2":{"101":1}}],["interest",{"2":{"63":1}}],["interval",{"2":{"60":1,"63":3,"68":2,"69":3,"70":4,"71":6}}],["intervalsets",{"2":{"71":1}}],["intervals",{"0":{"71":1},"2":{"37":1}}],["interactive",{"2":{"0":1}}],["integer",{"2":{"29":1,"69":1,"70":1,"74":1}}],["int64",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"16":8,"17":1,"18":1,"19":1,"21":7,"25":2,"27":2,"29":3,"32":9,"33":7,"34":4,"37":15,"39":4,"40":7,"42":3,"44":1,"45":5,"47":5,"50":4,"51":6,"52":6,"54":5,"56":18,"64":2,"65":7,"66":2,"85":3,"86":6,"90":1,"96":2}}],["into",{"0":{"62":1,"104":1},"1":{"63":1},"2":{"0":1,"1":1,"2":1,"7":1,"8":1,"16":1,"22":1,"24":2,"27":1,"40":4,"47":1,"50":1,"57":1,"62":1,"76":2,"84":1,"87":1,"89":6,"90":3,"93":1,"112":1,"113":1}}],["in",{"0":{"20":1,"43":1},"1":{"44":1,"45":1},"2":{"0":5,"1":1,"2":1,"4":2,"5":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":4,"16":5,"17":1,"18":2,"19":2,"21":5,"22":8,"23":3,"24":2,"25":1,"26":1,"27":2,"29":2,"32":1,"33":3,"34":2,"37":5,"38":1,"40":1,"41":3,"42":5,"46":4,"47":2,"49":2,"50":3,"51":2,"53":3,"54":1,"56":4,"59":2,"60":4,"62":1,"63":9,"64":2,"65":1,"66":1,"68":2,"69":3,"70":4,"71":7,"72":1,"73":1,"74":5,"75":1,"76":2,"78":3,"86":2,"87":1,"89":15,"90":9,"93":2,"95":1,"96":4,"99":2,"101":3,"103":4,"105":2,"107":1,"112":2,"114":1}}],["iter",{"2":{"89":1}}],["iterate",{"2":{"103":1}}],["iteration",{"0":{"103":1}}],["iterator",{"2":{"42":1}}],["iterators",{"2":{"22":1}}],["iterable",{"2":{"42":2,"89":2}}],["itself",{"2":{"89":1,"90":1}}],["its",{"2":{"0":1,"58":1}}],["it",{"2":{"0":2,"1":3,"12":1,"16":1,"18":1,"20":1,"23":2,"32":1,"34":1,"35":1,"40":2,"42":2,"46":2,"47":1,"52":1,"54":1,"56":1,"60":1,"65":1,"67":1,"74":2,"75":1,"77":1,"78":1,"83":1,"84":1,"86":2,"87":1,"89":10,"90":5,"93":1,"95":1,"112":2}}],["lscene",{"2":{"111":1}}],["lmdz",{"2":{"60":1,"67":1,"79":1,"85":1}}],["link",{"2":{"92":1}}],["linewidth=0",{"2":{"109":1,"110":1}}],["linewidth=2",{"2":{"100":2}}],["linewidth=1",{"2":{"98":1,"100":1}}],["linestyle=",{"2":{"100":2}}],["lines",{"2":{"98":1,"100":3,"113":3}}],["line",{"2":{"42":1}}],["limits=",{"2":{"112":1,"113":1}}],["lim",{"2":{"60":1,"67":1,"79":1,"85":1}}],["library",{"2":{"112":1}}],["libraries",{"2":{"37":1,"74":1}}],["libray",{"2":{"36":1}}],["little",{"2":{"23":1,"114":1}}],["list",{"2":{"22":1,"46":5,"64":2,"89":7,"90":6}}],["like",{"2":{"0":1,"42":1,"46":1,"64":1,"89":2,"90":1,"92":1,"112":1}}],["learn",{"2":{"103":1}}],["learning",{"2":{"74":1,"101":1}}],["leap",{"2":{"98":1}}],["least",{"2":{"40":1,"46":1,"89":1}}],["length",{"2":{"51":2,"52":1,"54":3,"65":1,"89":1,"90":3}}],["length=20",{"2":{"35":1,"96":1}}],["length=365",{"2":{"98":1}}],["length=3",{"2":{"17":1}}],["length=4",{"2":{"17":1}}],["length=15",{"2":{"10":1,"22":1,"23":1,"29":1,"35":1,"96":1}}],["length=10",{"2":{"10":1,"22":1,"23":1,"29":1,"35":1,"96":1}}],["level",{"2":{"21":1,"46":1,"81":1,"83":1,"92":1,"93":1,"112":1}}],["left",{"2":{"14":2}}],["let",{"2":{"10":1,"16":2,"18":1,"19":1,"33":1,"35":1,"37":1,"39":1,"40":1,"56":1,"58":1,"62":1,"67":1,"99":1,"112":3,"113":2,"114":1}}],["loopinds",{"2":{"90":2}}],["looping",{"2":{"89":1,"90":1}}],["loopcachesize",{"2":{"90":1}}],["loopchunksize",{"2":{"89":1}}],["loopaxes",{"2":{"90":1}}],["loopvars",{"2":{"89":1,"90":1}}],["loops",{"2":{"89":1}}],["loop",{"2":{"89":1,"90":2}}],["looped",{"2":{"89":3,"90":3}}],["look",{"2":{"84":1,"89":1,"90":1,"92":1,"93":1}}],["looking",{"2":{"78":1}}],["lookups",{"2":{"51":15,"52":10,"54":11,"55":5,"56":38,"66":1,"72":3}}],["lookup",{"2":{"51":1,"53":1,"107":3}}],["looks",{"2":{"42":1,"46":1}}],["located",{"2":{"101":1}}],["locate",{"2":{"93":1}}],["location",{"2":{"90":3}}],["locations",{"2":{"75":1,"76":1}}],["localhost",{"2":{"93":1}}],["locally",{"0":{"93":1},"2":{"93":1}}],["local",{"2":{"23":1,"59":1}}],["lock",{"2":{"60":3}}],["locks",{"2":{"60":1}}],["lowclip",{"2":{"56":4}}],["low",{"2":{"46":4}}],["lost",{"2":{"24":1}}],["lo",{"2":{"16":4}}],["loadorgenerate",{"2":{"90":1}}],["loading",{"2":{"61":1,"63":1,"87":1}}],["load",{"0":{"62":1},"1":{"63":1},"2":{"16":1,"37":1,"40":2,"50":1,"62":1,"63":1,"74":1,"114":1}}],["loaded",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":2,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"40":2,"41":3,"42":3,"47":2,"50":2,"54":1,"59":1,"60":1,"63":8,"64":1,"68":2,"69":3,"70":3,"71":5,"86":1,"96":2,"99":1,"113":1,"114":1}}],["lon=50",{"2":{"113":2}}],["lon=1",{"2":{"37":1,"39":1}}],["long",{"2":{"50":2,"56":1,"59":1,"60":1,"63":4,"68":2,"69":3,"70":3,"71":5,"113":1,"114":1}}],["longitudes=longitudes",{"2":{"40":1}}],["longitudes",{"2":{"40":12}}],["longitude",{"2":{"21":1,"37":1,"61":1,"78":6,"96":2}}],["lonlat",{"2":{"39":1}}],["lon",{"0":{"78":1},"2":{"10":2,"12":1,"13":1,"14":2,"16":10,"17":2,"18":1,"19":1,"20":1,"21":5,"22":12,"23":1,"26":2,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"59":2,"60":2,"63":3,"64":5,"65":3,"66":1,"67":1,"68":2,"69":3,"70":6,"71":10,"72":2,"78":8,"79":1,"85":1,"96":2,"107":2,"109":3,"112":2,"113":4,"114":3,"115":1}}],["lazy",{"2":{"89":1}}],["lazily",{"2":{"9":1,"13":1,"16":2,"35":1,"50":1,"59":1,"60":1,"63":1,"64":1,"68":2,"69":3,"70":3,"71":5,"113":1}}],["layername",{"2":{"89":2}}],["layername=",{"2":{"86":2,"90":1}}],["layer",{"2":{"65":3,"66":1,"86":1,"89":1,"90":1}}],["layout",{"2":{"56":2,"113":3}}],["labelled",{"2":{"89":1}}],["labels",{"2":{"56":1,"72":1,"76":1,"77":1}}],["label=false",{"2":{"56":1}}],["label=",{"2":{"56":1,"100":3}}],["label=cb",{"2":{"56":1}}],["label",{"2":{"56":3,"59":1,"78":1,"107":1}}],["last",{"2":{"16":1,"23":1}}],["la",{"2":{"16":4}}],["latest",{"2":{"97":1,"105":1}}],["later",{"2":{"18":1}}],["lat=50",{"2":{"115":1}}],["lat=5",{"2":{"37":1,"39":1}}],["latitudes=latitudes",{"2":{"40":1}}],["latitudes",{"2":{"40":11}}],["latitude",{"2":{"21":1,"37":1,"61":1,"78":6,"96":2}}],["lat",{"0":{"78":1},"2":{"10":2,"12":1,"13":1,"14":2,"16":7,"17":2,"18":1,"19":1,"20":1,"21":5,"22":12,"23":1,"26":2,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"59":2,"60":2,"63":3,"64":5,"65":3,"66":1,"67":1,"68":2,"69":3,"70":5,"71":5,"72":2,"78":8,"79":1,"85":1,"89":1,"96":2,"107":3,"109":1,"110":1,"112":2,"113":5,"114":2,"115":1}}],["larger",{"2":{"24":1}}],["large",{"2":{"0":2,"24":1,"50":1,"74":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/v0.6.0/assets/chunks/VPLocalSearchBox.C9W46vo6.js b/v0.6.0/assets/chunks/VPLocalSearchBox.C9W46vo6.js new file mode 100644 index 00000000..45af678d --- /dev/null +++ b/v0.6.0/assets/chunks/VPLocalSearchBox.C9W46vo6.js @@ -0,0 +1,8 @@ +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.BcwRT4E8.js";import{u as ss,d as ns}from"./theme.DdBYlEdc.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.c345pPCL.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.6.2 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,s=Array(e);t0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:s}=this._options,n=Object.assign(Object.assign({},s),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of r){const m=c.length||1,f={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(f,this._storedFields.get(o)),(n.filter==null||n.filter(f))&&i.push(f)}return e===ue.wildcard&&n.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return at(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return at(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Vt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),qt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Gt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:nt(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:nt(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-42e65fb9"]]);export{Fn as default}; diff --git a/v0.6.0/assets/chunks/framework.BcwRT4E8.js b/v0.6.0/assets/chunks/framework.BcwRT4E8.js new file mode 100644 index 00000000..be8bf388 --- /dev/null +++ b/v0.6.0/assets/chunks/framework.BcwRT4E8.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},Ko=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),ae=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qo=Object.prototype.hasOwnProperty,z=(e,t)=>qo.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",ii=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",oi=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),li=Object.prototype.toString,In=e=>li.call(e),Go=e=>In(e).slice(8,-1),ci=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yo=/-(\w)/g,Le=Nn(e=>e.replace(Yo,(t,n)=>n?n.toUpperCase():"")),Xo=/\B([A-Z])/g,st=Nn(e=>e.replace(Xo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ar;const Hn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Qo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),sl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===li||!q(e.toString))?ui(e)?sl(e.value):JSON.stringify(e,di,2):String(e),di=(e,t)=>ui(t)?di(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:ii(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!ci(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class rl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function yi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),ol(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_i(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _i(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{yi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,vi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ol(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const bi=[];function rt(){bi.push(Ne),Ne=!1}function it(){const e=bi.pop();Ne=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ll{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ll(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,wi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),bs=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function cl(e,t){const n=Cn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const al={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ur(this,"reduce",e,t)},reduceRight(e,...t){return ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const fl=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==fl[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function ur(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const ul=Ns("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function dl(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Sl:Ai:i?Ci:Ti).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=al[n]))return c;if(n==="hasOwnProperty")return dl}const l=Reflect.get(t,n,fe(t)?t:s);return(Xe(n)?Si.has(n):ul(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Ei extends xi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=W(t)&&$s(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function yl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?ws:t?Ss:ye;return!t&&me(i,"iterate",c?bs:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function vl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?ws:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?ws:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return ae(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=yl(r,e,t)}),n}function Bs(e,t){const n=vl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const Ti=new WeakMap,Ci=new WeakMap,Ai=new WeakMap,Sl=new WeakMap;function xl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function El(e){return e.__v_skip||!Object.isExtensible(e)?0:xl(Go(e))}function jn(e){return yt(e)?e:Ws(e,!1,pl,_l,Ti)}function Tl(e){return Ws(e,!1,ml,bl,Ci)}function Vn(e){return Ws(e,!0,gl,wl,Ai)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=El(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&ai(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ri(e,!1)}function qs(e){return Ri(e,!0)}function Ri(e,t){return fe(e)?e:new Cl(e,t)}class Cl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Oi(e){return fe(e)?e.value:e}const Al={get:(e,t,n)=>t==="__v_raw"?e:Oi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mi(e){return ht(e)?e:new Proxy(e,Al)}class Rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ol(e){return new Rl(e)}class Ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return cl(J(this._object),this._key)}}class Pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ll(e,t,n){return fe(e)?e:q(e)?new Pl(e):ne(e)&&arguments.length>1?Il(e,t,n):oe(e)}function Il(e,t,n){const s=e[t];return fe(s)?s:new Ml(e,t,n)}class Nl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return mi(this,!0),!0}get value(){const t=this.dep.track();return _i(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Fl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Nl(s,r,n)}const fn={},An=new WeakMap;let ft;function Hl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function $l(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,v,S=!1,_=!1;if(fe(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(_=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=hi(),N=()=>{a.stop(),K&&K.active&&Hs(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=_?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(_?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:_&&j[0]===fn?[]:j,v];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new pi(h),a.scheduler=o?()=>o(p,!1):p,v=g=>Hl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(ci(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&oi(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(jl(t),0,e),e.flags|=1,Li()}}function Li(){Rn||(Rn=Pi.then(Ii))}function Vl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Li()}function dr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Ii(e){try{for(Ve=0;Ve{s._d&&Ar(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(de===null)return e;const n=Gn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),hr=e=>e&&(e.defer||e.defer===""),pr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},$i={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:v,querySelector:S,createText:_,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),F=t.anchor=_("");v(O,n,s),v(F,n,s);const $=(R,b)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),b=Di(R,t,_,v);R&&(o!=="svg"&&pr(R)?o="svg":o!=="mathml"&&gr(R)&&(o="mathml"),N||($(R,b),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),hr(t.props)?be(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(hr(t.props)&&!e.el.__isMounted){be(()=>{$i.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,b=V?O:$;if(o==="svg"||pr(F)?o="svg":(o==="mathml"||gr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Qs(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Ki(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],ji={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Vi=e=>{const t=e.subTree;return t.component?Vi(t.component):t},Wl={name:"BaseTransition",props:ji,setup(e,{slots:t}){const n=qn(),s=Bl();return()=>{const r=t.default&&Bi(t.default(),!0);if(!r||!r.length)return;const i=Ui(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=mr(i);if(!c)return ts(i);let f=Es(c,o,s,n,h=>f=h);c.type!==ve&&Yt(c,f);let a=n.subTree&&mr(n.subTree);if(a&&a.type!==ve&&!ut(c,a)&&Vi(n).type!==ve){let h=Es(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==ve?h.delayLeave=(y,v,S)=>{const _=ki(s,a);_[String(a.key)]=a,y[Ze]=()=>{v(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Ui(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const Kl=Wl;function ki(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:_,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=ki(n,e),F=(R,b)=>{R&&He(R,s,9,b)},$=(R,b)=>{const I=b[1];F(R,b),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(b,[R])},enter(R){let b=f,I=a,x=h;if(!n.isMounted)if(i)b=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};b?$(b,[R,se]):se()},leave(R,b){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return b();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,b(),se?F(_,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,v?$(v,[R,B]):B()},clone(R){const b=Es(R,t,n,s,r);return r&&r(b),b}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function mr(e){if(!sn(e))return Hi(e.type)&&e.children?Ui(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[_]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):fe(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),_=fe(c);if(S||_){const K=()=>{if(e.f){const N=S?v(c)?h[c]:a[c]:c.value;r?W(N)&&Hs(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(h[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,be(K,n)):K()}}}let yr=!1;const bt=()=>{yr||(console.error("Hydration completed but contains mismatches."),yr=!0)},ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gl=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(ql(e))return"svg";if(Gl(e))return"mathml"}},xt=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>_(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=b():(p.data!==g.children&&(bt(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=b():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:b,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=co(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||bt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||bt(),p.textContent=g.children)}if(b){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in b)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,b[he],void 0,O)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,O);else if(I&4&&ht(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=b&&b.onVnodeMounted)||B||U)&&go(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},v=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const b=g.children,I=b.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const b=o(p),I=v(i(p),g,b,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(bt(),c(g.anchor=f("]"),b,I),I)},_=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||bt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,g,b,R,O,F,hn(b),$),O&&(O.vnode.el=g.el,ho(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const vr="data-allow-mismatch",Xl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(vr);)e=e.parentElement;const n=e&&e.getAttribute(vr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Xl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Jl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((K,N)=>{c(_,()=>K(y()),()=>N(_),h+1)});throw _}).then(_=>S!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,_,K){const N=i?()=>{const j=i(K,p=>Jl(S,p));j&&(_.bum||(_.bum=[])).push(j)}:K;a?N():v().then(()=>!_.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Xs(S),a)return()=>ns(a,S);const _=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>ns(p,S)).catch(p=>(_(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),N.value=p}},o),v().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{_(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function zl(e,t){Wi(e,"a",t)}function Ql(e,t){Wi(e,"da",t)}function Wi(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Zl(s,t,n,r),r=r.parent}}function Zl(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Hs(s[t],r)},n)}function kn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=ue)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},ec=Je("bm"),Lt=Je("m"),tc=Je("bu"),nc=Je("u"),Ki=Je("bum"),Bn=Je("um"),sc=Je("sp"),rc=Je("rtg"),ic=Je("rtc");function oc(e,t=ue){kn("ec",e,t)}const qi="components";function Sf(e,t){return Yi(qi,e,!0,t)||e}const Gi=Symbol.for("v-ndc");function xf(e){return re(e)?Yi(qi,e,!1)||e:e||Gi}function Yi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Wc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Ef(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===ve||t.type===xe&&!Xi(t.children)):!0)?e:null}function Cf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Ts=e=>e?bo(e)?Gn(e):Ts(e.parent):null,Ut=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Js(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Rc.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),lc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Af(){return cc().slots}function cc(){const e=qn();return e.setupContext||(e.setupContext=So(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function ac(e){const t=Js(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:S,activated:_,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:b,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&fc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Ji(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{mc(D,Y[D])})}a&&wr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(ec,h),U(Lt,y),U(tc,v),U(nc,S),U(zl,_),U(Ql,K),U(oc,V),U(ic,F),U(rc,$),U(Ki,j),U(Bn,g),U(sc,R),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function fc(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){let r=s.includes(".")?fo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=uc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const uc={data:Sr,props:xr,emits:xr,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:hc,provide:Sr,inject:dc};function Sr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function dc(e,t){return $t(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Qi={},Zi=()=>Object.create(Qi),eo=e=>Object.getPrototypeOf(e)===Qi;function yc(e,t,n,s=!1){const r={},i=Zi();e.propsDefaults=Object.create(null),to(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,v]=no(h,t,!0);ae(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",zs=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Ul((...r)=>zs(t(...r)),n);return s._c=!1,s},ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(so(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=zs(i);t[r]=()=>o}}},io=(e,t)=>{const n=zs(t);e.slots.default=()=>n},oo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Zi();if(e.vnode.shapeFlag&32){const r=t._;r?(oo(s,t,n),n&&ai(s,"_",r,!0)):ro(t,s)}else t&&io(e,t)},Sc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:oo(r,t,n):(i=!t.$stable,ro(t,r)),o=t}else t&&(io(e,t),o={default:1});if(i)for(const l in r)!so(l)&&o[l]==null&&delete r[l]},be=go;function xc(e){return lo(e)}function Ec(e){return lo(e,Yl)}function lo(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=ke,insertStaticContent:S}=e,_=(u,d,m,T=null,w=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),De(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case ve:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,w,E,P,M,A);break;default:L&1?O(u,d,m,T,w,E,P,M,A):L&6?B(u,d,m,T,w,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,w,E,P,M,A,vt)}k!=null&&w&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let w;for(;u&&u!==d;)w=y(u),s(u,m,T),u=w;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,w,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,w,E,P,M,A):R(u,d,w,E,P,M,A)},F=(u,d,m,T,w,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,w,rs(u,E),P,M),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=co(w,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&be(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},w)},$=(u,d,m,T,w)=>{if(m&&v(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?b(u.dynamicChildren,C,M,m,T,rs(d,w),E):P||D(u,d,M,null,m,T,rs(d,w),E,!1),A>0){if(A&16)I(M,L,H,m,w);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,w),A&4&&i(M,"style",L.style,H.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},b=(u,d,m,T,w,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,w,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,w,T)}"value"in m&&i(u,"value",d.value,m.value,w)}},x=(u,d,m,T,w,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,w,E,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,m,w,E,P,M),(d.key!=null||w&&d===w.subTree)&&Qs(u,d,!0)):D(u,d,m,k,w,E,P,M,A)},B=(u,d,m,T,w,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?w.ctx.activate(d,m,T,P,A):se(d,m,T,w,E,P,A):le(u,d,A)},se=(u,d,m,T,w,E,P)=>{const M=u.component=Vc(u,T,w);if(sn(u)&&(M.ctx.renderer=vt),Uc(M,!1,P),M.asyncDep){if(w&&w.registerDep(M,U,P),!u.el){const A=M.subTree=ce(ve);N(null,A,d,m)}}else U(M,u,d,m,w,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Ic(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,w,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=ao(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&bn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,_(Ie,pe,h(Ie.el),ln(Ie),u,w,E),L.el=pe.el,Q===null&&ho(u,pe.el),G&&be(G,w),(Ee=L.props&&L.props.onVnodeUpdated)&&be(()=>Oe(Ee,X,L,ee),w)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Jn){const Te=()=>{u.subTree=is(u),Jn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);_(null,Te,m,T,u,w,E),d.el=Te.el}if(ee&&be(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;be(()=>Oe(L,Q,Te),w)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&be(u.a,w),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new pi(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,vc(u,d.props,T,m),Sc(u,d.children,m),rt(),dr(u),it()},D=(u,d,m,T,w,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,T,w,E,P,M,A);return}else if(H&256){he(C,L,m,T,w,E,P,M,A);return}}G&8?(k&16&&It(C,w,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,w,E,P,M,A):It(C,w,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,w,E,P,M,A))},he=(u,d,m,T,w,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,w,E,!0,!1,L):V(d,m,T,w,E,P,M,A,L)},on=(u,d,m,T,w,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],w,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,w,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,w,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,_(Ce,d[je],m,null,w,E,P,M,A),Ee++)}const lr=Ie?Tc(Nt):Et;for(Q=lr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],cr=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,vt);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),w);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,m)},De=(u,d,m,T=!1,w=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(w=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Wo(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,vt,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!w&&k&16)&&It(A,d,m),T&&ir(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&be(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},ir=u=>{const{type:d,el:m,anchor:T,transition:w}=u;if(d===xe){Bo(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:M}=w,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},Bo=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Wo=(u,d,m)=>{const{bum:T,scope:w,job:E,subTree:P,um:M,m:A,a:C}=u;Tr(A),Tr(C),T&&bn(T),w.stop(),E&&(E.flags|=8,De(P,u,d,m)),M&&be(M,d),be(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Fi];return m?y(m):d};let Yn=!1;const or=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):_(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,dr(),On(),Yn=!1)},vt={p:_,um:De,m:ot,r:ir,mt:se,mc:V,pc:D,pbc:b,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(vt)),{render:or,hydrate:Xn,createApp:gc(or,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function co(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ao(t)}function Tr(e){if(e)for(let t=0;tOt(Cc);function Zs(e,t){return Wn(e,null,t)}function Rf(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Ac();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=ke,v.resume=ke,v.pause=ke,v}}const a=ue;l.call=(v,S,_)=>He(v,a,S,_);let h=!1;i==="post"?l.scheduler=v=>{be(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=$l(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?fo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function fo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Mc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Oc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(vs)));let l,c=s[l=_n(t)]||s[l=_n(Le(t))];!c&&i&&(c=s[l=_n(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function uo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=uo(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ae(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:v,ctx:S,inheritAttrs:_}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Pc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(ve)}let p=N;if(j&&_!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Lc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Pc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Lc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ic(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Cr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function go(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Vl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Nc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Ar(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function mo(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Nc(),Jt>0&&Ae&&Ae.push(e),e}function Of(e,t,n,s,r,i){return mo(vo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return mo(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const yo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function vo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yo(t),ref:t&&xn(t),scopeId:Ni,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(er(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Fc;function Fc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Gi)&&(e=ve),zt(e)){const l=nt(e,t,!0);return n&&er(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Kc(e)&&(e=e.__vccOpts),t){t=Hc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=ae({},c)),t.style=Ds(c))}const o=re(e)?1:po(e)?128:Hi(e)?64:ne(e)?4:q(e)?2:0;return vo(e,t,n,s,r,o,i,!0)}function Hc(e){return e?Ks(e)||eo(e)?ae({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?$c(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&yo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Mf(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Pf(e="",t=!1){return t?(Os(),Ms(ve,null,e)):ce(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(ve):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!eo(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function $c(...e){const t={};for(let n=0;nue||de;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Rr=()=>{ue&&ue.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Uc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);yc(e,s,i,t),wc(e,r,n);const o=i?kc(e,t):void 0;return t&&Ps(!1),o}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?So(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=oi(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Rr,Rr),t)return o.then(c=>{Or(e,c,t)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Or(e,o,t)}else wo(e,t)}function Or(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Mi(t)),wo(e,n)}let Mr;function wo(e,t,n){const s=e.type;if(!e.render){if(!t&&Mr&&!s.render){const r=s.template||Js(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Mr(r,f)}}e.render=s.render||ke}{const r=rn(e);rt();try{ac(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function So(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Mi(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Wc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Kc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Fl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const qc="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Is;const Pr=typeof window<"u"&&window.trustedTypes;if(Pr)try{Is=Pr.createPolicy("vue",{createHTML:e=>e})}catch{}const xo=Is?e=>Is.createHTML(e):e=>e,Gc="http://www.w3.org/2000/svg",Yc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Lr=qe&&qe.createElement("template"),Xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Gc,e):t==="mathml"?qe.createElementNS(Yc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Lr.innerHTML=xo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Lr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),Eo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jc=ae({},ji,Eo),zc=e=>(e.displayName="Transition",e.props=Jc,e),Lf=zc((e,{slots:t})=>Ls(Kl,Qc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ir=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Qc(e){const t={};for(const x in e)x in Eo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Zc(r),_=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},b=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Nr(()=>{at(B,x?c:i),Ke(B,x?a:l),Ir(le)||Fr(B,s,_,U)})};return ae(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>b(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),Dr()):(Dr(),Ke(x,y)),Nr(()=>{x._isLeaving&&(at(x,h),Ke(x,v),Ir(g)||Fr(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){b(x),ct(O,[x])}})}function Zc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Jo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Nr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ea=0;function Fr(e,t,n,s){const r=e._endId=++ea,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ta(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Hr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Hr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function Hr(e,t){for(;e.length$r(n)+$r(e[s])))}function $r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Dr(){return document.body.offsetHeight}function na(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=i?s.display:"",e[sa]&&(s.display="none"))}const Vr=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Vr.test(n)?e.setProperty(st(s),n.replace(Vr,""),"important"):e[s]=n}}const Ur=["Webkit","Moz","ms"],ls={};function la(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(ua.then(()=>cs=0),cs=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):en(t)?Fs(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Wr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Br(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Wr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Br(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gr(t)&&re(n)?!1:t in e}const Yr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Xr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),If={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=Yr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=vs(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Xr),St(e,"change",Xr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=Yr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?vs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Nf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},To=ae({patchProp:ga},Xc);let Wt,Jr=!1;function wa(){return Wt||(Wt=xc(To))}function Sa(){return Wt=Jr?Wt:Ec(To),Jr=!0,Wt}const Hf=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Co(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},$f=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(r)return n(r,!0,Co(r))},t};function Co(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ao(e){return re(e)?document.querySelector(e):e}const Df=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function tr(e){return hi()?(il(e),!0):!1}function Be(e){return typeof e=="function"?e():Oi(e)}const Ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jf=e=>e!=null,Ea=Object.prototype.toString,Ta=e=>Ea.call(e)==="[object Object]",Zt=()=>{},zr=Ca();function Ca(){var e,t;return Ro&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Oo=e=>e();function Ra(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=Oo){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return qn()}function Mo(...e){if(e.length!==1)return Ll(...e);const t=e[0];return typeof t=="function"?Vn(Ol(()=>({get:t,set:Zt}))):oe(t)}function Po(e,t,n={}){const{eventFilter:s=Oo,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Po(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function nr(e,t=!0,n){Ma()?Lt(e,n):t?e():Un(e)}function Vf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Po(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Uf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Zs(async h=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(_=>{h(()=>{i&&(i.value=!1),v||_()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Ro?window:void 0;function Lo(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[Lo(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ta(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return tr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function kf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function Io(e,t={}){const{window:n=$e}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return tr(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Fa=Ha();function Ha(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function No(e,t){return Fa[e]||t}function sr(e){return Io("(prefers-color-scheme: dark)",e)}function $a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Da={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Qr="vueuse-storage";function rr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:S}=s,_=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=No("getDefaultStorage",()=>{var b;return(b=$e)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return _;const K=Be(t),N=$a(K),j=(r=s.serializer)!=null?r:Da[N],{pause:p,resume:g}=Pa(_,()=>F(_.value),{flush:i,deep:o,eventFilter:y});h&&l&&nr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Qr,R),S&&V()}),S||V();function O(b,I){if(h){const x={key:e,oldValue:b,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Qr,{detail:x}))}}function F(b){try{const I=n.getItem(e);if(b==null)O(I,null),n.removeItem(e);else{const x=j.write(b);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){v(I)}}function $(b){const I=b?b.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!b&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=K;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==j.write(_.value)&&(_.value=$(b))}catch(I){v(I)}finally{b?Un(g):g()}}}}function R(b){V(b.detail)}return _}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=sr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Mo(s):rr(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>S.value==="auto"?v.value:S.value),K=No("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Lo(g);if(!$)return;const V=new Set,R=new Set;let b=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else b={key:O,value:F};if(V.size===0&&R.size===0&&b===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(_,j,{flush:"post",immediate:!0}),nr(()=>j(_.value));const p=ie({get(){return f?S.value:_.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:_})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:sr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Bf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.localStorage,n)}function Fo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Wf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Mo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(zr&&(s=Pt(l,"touchmove",c=>{ka(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(zr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return tr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Kf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.sessionStorage,n)}function qf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function Gf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),nr(f),Pt("resize",f,{passive:!0}),r){const a=Io("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/YAXArrays.jl/v0.6.0/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Ho=/^(?:[a-z]+:|\/\/)/i,Ba="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",$o={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=Zr(`/${e}`),n)return new RegExp(t).test(e);if(Zr(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function Zr(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return Ho.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:jo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Do(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function jo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function ei(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function tf(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Yf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=qs(xa);function Xf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?sr():n?Ua({storageKey:Ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>Do(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ti(e){return Ho.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/YAXArrays.jl/v0.6.0/";t=ei(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ei(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function Jf(e){Tn.push(e),Bn(()=>{Tn=Tn.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ni(e,n);else if(Array.isArray(e))for(const s of e){const r=ni(s,n);if(r){t=r;break}}return t}function ni(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Vo="http://a.com",af=()=>({path:"/",component:null,data:$o});function zf(e,t){const n=jn(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Vo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:K}=S;if(!_)throw new Error(`Invalid route component: ${_}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?h:ti(h),n.component=wn(_),n.data=wn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){si(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const _=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:ti(h),n.component=t?wn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...$o,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),_=new URL(location.href);h===_.origin&&tf(y)&&(l.preventDefault(),y===_.pathname&&S===_.search?(v!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),v?si(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Uo(){return ff().route}function si(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,Vo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),Qf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Uo(),{frontmatter:n,site:s}=sf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/YAXArrays.jl/v0.6.0/"+e},ri={},Zf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ri)return;ri[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":uf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},eu=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function nu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function su(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Zs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Do(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(jo(o.head,gf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const ys=new Set,ko=()=>document.createElement("link"),mf=e=>{const t=ko();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const vf=ge&&(vn=ko())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?mf:yf;function ru(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Uo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Ki as $,lf as A,Sf as B,Ef as C,qs as D,Jf as E,xe as F,ce as G,xf as H,Ho as I,Uo as J,$c as K,Ot as L,Gf as M,Ds as N,kf as O,Un as P,qf as Q,ge as R,Vn as S,Lf as T,wf as U,Zf as V,Wf as W,mc as X,Cf as Y,Ff as Z,Df as _,_o as a,Nf as a0,Af as a1,Mf as a2,jn as a3,Ll as a4,Ls as a5,su as a6,cf as a7,Xf as a8,nf as a9,Qf as aa,eu as ab,mt as ac,$f as ad,zf as ae,of as af,ru as ag,nu as ah,tu as ai,Be as aj,Lo as ak,jf as al,tr as am,Uf as an,Kf as ao,Bf as ap,Vf as aq,ff as ar,Pt as as,_f as at,If as au,fe as av,bf as aw,wn as ax,Hf as ay,Yf as az,Ms as b,Of as c,Ys as d,Pf as e,tf as f,ti as g,ie as h,Ya as i,vo as j,Oi as k,Ga as l,Io as m,js as n,Os as o,oe as p,Fe as q,Tf as r,Zs as s,sl as t,sf as u,Lt as v,Ul as w,Bn as x,Rf as y,nc as z}; diff --git a/v0.6.0/assets/chunks/theme.DdBYlEdc.js b/v0.6.0/assets/chunks/theme.DdBYlEdc.js new file mode 100644 index 00000000..1aadb65d --- /dev/null +++ b/v0.6.0/assets/chunks/theme.DdBYlEdc.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.C9W46vo6.js","assets/chunks/framework.BcwRT4E8.js"])))=>i.map(i=>d[i]); +import{d as b,o,c,r as d,n as M,a as G,t as w,b as y,w as m,e as h,T as Se,_ as g,u as ze,i as _t,f as bt,g as Le,h as P,j as p,k as i,l as X,m as ge,p as I,q as R,s as de,v as j,x as Ve,y as Ce,z as gt,A as kt,B as Z,F as T,C as Q,D as Ze,E as pe,G as k,H as U,I as Ye,J as fe,K as z,L as ee,M as yt,N as Xe,O as ke,P as Ie,Q as xe,R as me,S as $t,U as At,V as Pt,W as qe,X as Ne,Y as St,Z as Lt,$ as Vt,a0 as Ct,a1 as et,a2 as It,a3 as Nt,a4 as wt,a5 as _e}from"./framework.BcwRT4E8.js";const Mt=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(o(),c("span",{class:M(["VPBadge",e.type])},[d(e.$slots,"default",{},()=>[G(w(e.text),1)])],2))}}),Tt={key:0,class:"VPBackdrop"},Et=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(o(),y(Se,{name:"fade"},{default:m(()=>[e.show?(o(),c("div",Tt)):h("",!0)]),_:1}))}}),Bt=g(Et,[["__scopeId","data-v-b06cdb19"]]),L=ze;function Qt(n,e){let t,a=!1;return()=>{t&&clearTimeout(t),a?t=setTimeout(n,e):(n(),(a=!0)&&setTimeout(()=>a=!1,e))}}function ye(n){return/^\//.test(n)?n:`/${n}`}function we(n){const{pathname:e,search:t,hash:a,protocol:s}=new URL(n,"http://a.com");if(_t(n)||n.startsWith("#")||!s.startsWith("http")||!bt(e))return n;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${a}`);return Le(l)}function ne({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:a,theme:s,hash:r}=L(),l=P(()=>{var u,_;return{label:(u=e.value.locales[t.value])==null?void 0:u.label,link:((_=e.value.locales[t.value])==null?void 0:_.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:P(()=>Object.entries(e.value.locales).flatMap(([u,_])=>l.value.label===_.label?[]:{text:_.label,link:Ft(_.link||(u==="root"?"/":`/${u}/`),s.value.i18nRouting!==!1&&n,a.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function Ft(n,e,t,a){return e?n.replace(/\/$/,"")+ye(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):n}const Ht={class:"NotFound"},Wt={class:"code"},Ot={class:"title"},Dt={class:"quote"},Ut={class:"action"},Gt=["href","aria-label"],Rt=b({__name:"NotFound",setup(n){const{theme:e}=L(),{currentLang:t}=ne();return(a,s)=>{var r,l,f,u,_;return o(),c("div",Ht,[p("p",Wt,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",Ot,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=p("div",{class:"divider"},null,-1)),p("blockquote",Dt,w(((f=i(e).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",Ut,[p("a",{class:"link",href:i(Le)(i(t).link),"aria-label":((u=i(e).notFound)==null?void 0:u.linkLabel)??"go to home"},w(((_=i(e).notFound)==null?void 0:_.linkText)??"Take me home"),9,Gt)])])}}}),jt=g(Rt,[["__scopeId","data-v-951cab6c"]]);function tt(n,e){if(Array.isArray(n))return le(n);if(n==null)return[];e=ye(e);const t=Object.keys(n).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>e.startsWith(ye(s))),a=t?n[t]:[];return Array.isArray(a)?le(a):le(a.items,a.base)}function Jt(n){const e=[];let t=0;for(const a in n){const s=n[a];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function Kt(n){const e=[];function t(a){for(const s of a)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(n),e}function $e(n,e){return Array.isArray(e)?e.some(t=>$e(n,t)):X(n,e.link)?!0:e.items?$e(n,e.items):!1}function le(n,e){return[...n].map(t=>{const a={...t},s=a.base||e;return s&&a.link&&(a.link=s+a.link),a.items&&(a.items=le(a.items,s)),a})}function K(){const{frontmatter:n,page:e,theme:t}=L(),a=ge("(min-width: 960px)"),s=I(!1),r=P(()=>{const E=t.value.sidebar,V=e.value.relativePath;return E?tt(E,V):[]}),l=I(r.value);R(r,(E,V)=>{JSON.stringify(E)!==JSON.stringify(V)&&(l.value=r.value)});const f=P(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),u=P(()=>_?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),_=P(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),$=P(()=>f.value&&a.value),v=P(()=>f.value?Jt(l.value):[]);function A(){s.value=!0}function S(){s.value=!1}function C(){s.value?S():A()}return{isOpen:s,sidebar:l,sidebarGroups:v,hasSidebar:f,hasAside:_,leftAside:u,isSidebarEnabled:$,open:A,close:S,toggle:C}}function zt(n,e){let t;de(()=>{t=n.value?document.activeElement:void 0}),j(()=>{window.addEventListener("keyup",a)}),Ve(()=>{window.removeEventListener("keyup",a)});function a(s){s.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function Zt(n){const{page:e,hash:t}=L(),a=I(!1),s=P(()=>n.value.collapsed!=null),r=P(()=>!!n.value.link),l=I(!1),f=()=>{l.value=X(e.value.relativePath,n.value.link)};R([e,n,t],f),j(f);const u=P(()=>l.value?!0:n.value.items?$e(e.value.relativePath,n.value.items):!1),_=P(()=>!!(n.value.items&&n.value.items.length));de(()=>{a.value=!!(s.value&&n.value.collapsed)}),Ce(()=>{(l.value||u.value)&&(a.value=!1)});function $(){s.value&&(a.value=!a.value)}return{collapsed:a,collapsible:s,isLink:r,isActiveLink:l,hasActiveLink:u,hasChildren:_,toggle:$}}function Yt(){const{hasSidebar:n}=K(),e=ge("(min-width: 960px)"),t=ge("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const Ae=[];function nt(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function Me(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const a=Number(t.tagName[1]);return{element:t,title:Xt(t),link:"#"+t.id,level:a}});return xt(e,n)}function Xt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function xt(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[a,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return tn(n,a,s)}function qt(n,e){const{isAsideEnabled:t}=Yt(),a=Qt(r,100);let s=null;j(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),gt(()=>{l(location.hash)}),Ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!t.value)return;const f=window.scrollY,u=window.innerHeight,_=document.body.offsetHeight,$=Math.abs(f+u-_)<1,v=Ae.map(({element:S,link:C})=>({link:C,top:en(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,C)=>S.top-C.top);if(!v.length){l(null);return}if(f<1){l(null);return}if($){l(v[v.length-1].link);return}let A=null;for(const{link:S,top:C}of v){if(C>f+kt()+4)break;A=S}l(A)}function l(f){s&&s.classList.remove("active"),f==null?s=null:s=n.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const u=s;u?(u.classList.add("active"),e.value.style.top=u.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function en(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}function tn(n,e,t){Ae.length=0;const a=[],s=[];return n.forEach(r=>{const l={...r,children:[]};let f=s[s.length-1];for(;f&&f.level>=l.level;)s.pop(),f=s[s.length-1];if(l.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){s.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const s=Z("VPDocOutlineItem",!0);return o(),c("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),c(T,null,Q(t.headers,({children:r,link:l,title:f})=>(o(),c("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:f},w(f),9,nn),r!=null&&r.length?(o(),y(s,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),st=g(sn,[["__scopeId","data-v-3f927ebe"]]),an={class:"content"},on={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},rn=b({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=L(),a=Ze([]);pe(()=>{a.value=Me(e.value.outline??t.value.outline)});const s=I(),r=I();return qt(s,r),(l,f)=>(o(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:s},[p("div",an,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",on,w(i(nt)(i(t))),1),k(st,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),ln=g(rn,[["__scopeId","data-v-b38bf2ff"]]),cn={class:"VPDocAsideCarbonAds"},un=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,a)=>(o(),c("div",cn,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),dn={class:"VPDocAside"},pn=b({__name:"VPDocAside",setup(n){const{theme:e}=L();return(t,a)=>(o(),c("div",dn,[d(t.$slots,"aside-top",{},void 0,!0),d(t.$slots,"aside-outline-before",{},void 0,!0),k(ln),d(t.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=p("div",{class:"spacer"},null,-1)),d(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),y(un,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),d(t.$slots,"aside-ads-after",{},void 0,!0),d(t.$slots,"aside-bottom",{},void 0,!0)]))}}),fn=g(pn,[["__scopeId","data-v-6d7b3c46"]]);function mn(){const{theme:n,page:e}=L();return P(()=>{const{text:t="Edit this page",pattern:a=""}=n.value.editLink||{};let s;return typeof a=="function"?s=a(e.value):s=a.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function vn(){const{page:n,theme:e,frontmatter:t}=L();return P(()=>{var _,$,v,A,S,C,E,V;const a=tt(e.value.sidebar,n.value.relativePath),s=Kt(a),r=hn(s,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>X(n.value.relativePath,B.link)),f=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,u=(($=e.value.docFooter)==null?void 0:$.next)===!1&&!t.value.next||t.value.next===!1;return{prev:f?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((v=r[l-1])==null?void 0:v.docFooterText)??((A=r[l-1])==null?void 0:A.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:u?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=r[l+1])==null?void 0:C.docFooterText)??((E=r[l+1])==null?void 0:E.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((V=r[l+1])==null?void 0:V.link)}}})}function hn(n,e){const t=new Set;return n.filter(a=>{const s=e(a);return t.has(s)?!1:t.add(s)})}const D=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=P(()=>e.tag??(e.href?"a":"span")),a=P(()=>e.href&&Ye.test(e.href)||e.target==="_blank");return(s,r)=>(o(),y(U(t.value),{class:M(["VPLink",{link:s.href,"vp-external-link-icon":a.value,"no-icon":s.noIcon}]),href:s.href?i(we)(s.href):void 0,target:s.target??(a.value?"_blank":void 0),rel:s.rel??(a.value?"noreferrer":void 0)},{default:m(()=>[d(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),_n={class:"VPLastUpdated"},bn=["datetime"],gn=b({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:a}=L(),s=P(()=>new Date(t.value.lastUpdated)),r=P(()=>s.value.toISOString()),l=I("");return j(()=>{de(()=>{var f,u,_;l.value=new Intl.DateTimeFormat((u=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&u.forceLocale?a.value:void 0,((_=e.value.lastUpdated)==null?void 0:_.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(f,u)=>{var _;return o(),c("p",_n,[G(w(((_=i(e).lastUpdated)==null?void 0:_.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},w(l.value),9,bn)])}}}),kn=g(gn,[["__scopeId","data-v-475f71b8"]]),yn={key:0,class:"VPDocFooter"},$n={key:0,class:"edit-info"},An={key:0,class:"edit-link"},Pn={key:1,class:"last-updated"},Sn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ln={class:"pager"},Vn=["innerHTML"],Cn=["innerHTML"],In={class:"pager"},Nn=["innerHTML"],wn=["innerHTML"],Mn=b({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:a}=L(),s=mn(),r=vn(),l=P(()=>e.value.editLink&&a.value.editLink!==!1),f=P(()=>t.value.lastUpdated),u=P(()=>l.value||f.value||r.value.prev||r.value.next);return(_,$)=>{var v,A,S,C;return u.value?(o(),c("footer",yn,[d(_.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(o(),c("div",$n,[l.value?(o(),c("div",An,[k(D,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:m(()=>[$[0]||($[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),G(" "+w(i(s).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(o(),c("div",Pn,[k(kn)])):h("",!0)])):h("",!0),(v=i(r).prev)!=null&&v.link||(A=i(r).next)!=null&&A.link?(o(),c("nav",Sn,[$[1]||($[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Ln,[(S=i(r).prev)!=null&&S.link?(o(),y(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:m(()=>{var E;return[p("span",{class:"desc",innerHTML:((E=i(e).docFooter)==null?void 0:E.prev)||"Previous page"},null,8,Vn),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,Cn)]}),_:1},8,["href"])):h("",!0)]),p("div",In,[(C=i(r).next)!=null&&C.link?(o(),y(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:m(()=>{var E;return[p("span",{class:"desc",innerHTML:((E=i(e).docFooter)==null?void 0:E.next)||"Next page"},null,8,Nn),p("span",{class:"title",innerHTML:i(r).next.text},null,8,wn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Tn=g(Mn,[["__scopeId","data-v-4f9813fa"]]),En={class:"container"},Bn={class:"aside-container"},Qn={class:"aside-content"},Fn={class:"content"},Hn={class:"content-container"},Wn={class:"main"},On=b({__name:"VPDoc",setup(n){const{theme:e}=L(),t=fe(),{hasSidebar:a,hasAside:s,leftAside:r}=K(),l=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,u)=>{const _=Z("Content");return o(),c("div",{class:M(["VPDoc",{"has-sidebar":i(a),"has-aside":i(s)}])},[d(f.$slots,"doc-top",{},void 0,!0),p("div",En,[i(s)?(o(),c("div",{key:0,class:M(["aside",{"left-aside":i(r)}])},[u[0]||(u[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",Bn,[p("div",Qn,[k(fn,null,{"aside-top":m(()=>[d(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[d(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[d(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[d(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[d(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[d(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",Fn,[p("div",Hn,[d(f.$slots,"doc-before",{},void 0,!0),p("main",Wn,[k(_,{class:M(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Tn,null,{"doc-footer-before":m(()=>[d(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(f.$slots,"doc-after",{},void 0,!0)])])]),d(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Dn=g(On,[["__scopeId","data-v-83890dd9"]]),Un=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=P(()=>e.href&&Ye.test(e.href)),a=P(()=>e.tag||(e.href?"a":"button"));return(s,r)=>(o(),y(U(a.value),{class:M(["VPButton",[s.size,s.theme]]),href:s.href?i(we)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:m(()=>[G(w(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),Gn=g(Un,[["__scopeId","data-v-906d7fb4"]]),Rn=["src","alt"],jn=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const a=Z("VPImage",!0);return e.image?(o(),c(T,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),c("img",z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(Le)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Rn)):(o(),c(T,{key:1},[k(a,z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(a,z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),ce=g(jn,[["__scopeId","data-v-35a7d0b8"]]),Jn={class:"container"},Kn={class:"main"},zn={key:0,class:"name"},Zn=["innerHTML"],Yn=["innerHTML"],Xn=["innerHTML"],xn={key:0,class:"actions"},qn={key:0,class:"image"},es={class:"image-container"},ts=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=ee("hero-image-slot-exists");return(t,a)=>(o(),c("div",{class:M(["VPHero",{"has-image":t.image||i(e)}])},[p("div",Jn,[p("div",Kn,[d(t.$slots,"home-hero-info-before",{},void 0,!0),d(t.$slots,"home-hero-info",{},()=>[t.name?(o(),c("h1",zn,[p("span",{innerHTML:t.name,class:"clip"},null,8,Zn)])):h("",!0),t.text?(o(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Yn)):h("",!0),t.tagline?(o(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Xn)):h("",!0)],!0),d(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),c("div",xn,[(o(!0),c(T,null,Q(t.actions,s=>(o(),c("div",{key:s.link,class:"action"},[k(Gn,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),d(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),c("div",qn,[p("div",es,[a[0]||(a[0]=p("div",{class:"image-bg"},null,-1)),d(t.$slots,"home-hero-image",{},()=>[t.image?(o(),y(ce,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),ns=g(ts,[["__scopeId","data-v-955009fc"]]),ss=b({__name:"VPHomeHero",setup(n){const{frontmatter:e}=L();return(t,a)=>i(e).hero?(o(),y(ns,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":m(()=>[d(t.$slots,"home-hero-info-before")]),"home-hero-info":m(()=>[d(t.$slots,"home-hero-info")]),"home-hero-info-after":m(()=>[d(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":m(()=>[d(t.$slots,"home-hero-actions-after")]),"home-hero-image":m(()=>[d(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),as={class:"box"},os={key:0,class:"icon"},rs=["innerHTML"],is=["innerHTML"],ls=["innerHTML"],cs={key:4,class:"link-text"},us={class:"link-text-value"},ds=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(o(),y(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:m(()=>[p("article",as,[typeof e.icon=="object"&&e.icon.wrap?(o(),c("div",os,[k(ce,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),y(ce,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,rs)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,is),e.details?(o(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,ls)):h("",!0),e.linkText?(o(),c("div",cs,[p("p",us,[G(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),ps=g(ds,[["__scopeId","data-v-f5e9645b"]]),fs={key:0,class:"VPFeatures"},ms={class:"container"},vs={class:"items"},hs=b({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=P(()=>{const a=e.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,s)=>a.features?(o(),c("div",fs,[p("div",ms,[p("div",vs,[(o(!0),c(T,null,Q(a.features,r=>(o(),c("div",{key:r.title,class:M(["item",[t.value]])},[k(ps,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),_s=g(hs,[["__scopeId","data-v-d0a190d7"]]),bs=b({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=L();return(t,a)=>i(e).features?(o(),y(_s,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),gs=b({__name:"VPHomeContent",setup(n){const{width:e}=yt({initialWidth:0,includeScrollbar:!1});return(t,a)=>(o(),c("div",{class:"vp-doc container",style:Xe(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[d(t.$slots,"default",{},void 0,!0)],4))}}),ks=g(gs,[["__scopeId","data-v-7a48a447"]]),ys={class:"VPHome"},$s=b({__name:"VPHome",setup(n){const{frontmatter:e}=L();return(t,a)=>{const s=Z("Content");return o(),c("div",ys,[d(t.$slots,"home-hero-before",{},void 0,!0),k(ss,null,{"home-hero-info-before":m(()=>[d(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[d(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[d(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[d(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[d(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(t.$slots,"home-hero-after",{},void 0,!0),d(t.$slots,"home-features-before",{},void 0,!0),k(bs),d(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),y(ks,{key:0},{default:m(()=>[k(s)]),_:1})):(o(),y(s,{key:1}))])}}}),As=g($s,[["__scopeId","data-v-cbb6ec48"]]),Ps={},Ss={class:"VPPage"};function Ls(n,e){const t=Z("Content");return o(),c("div",Ss,[d(n.$slots,"page-top"),k(t),d(n.$slots,"page-bottom")])}const Vs=g(Ps,[["render",Ls]]),Cs=b({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=L(),{hasSidebar:a}=K();return(s,r)=>(o(),c("div",{class:M(["VPContent",{"has-sidebar":i(a),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?d(s.$slots,"not-found",{key:0},()=>[k(jt)],!0):i(t).layout==="page"?(o(),y(Vs,{key:1},{"page-top":m(()=>[d(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[d(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),y(As,{key:2},{"home-hero-before":m(()=>[d(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[d(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[d(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[d(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[d(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[d(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[d(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),y(U(i(t).layout),{key:3})):(o(),y(Dn,{key:4},{"doc-top":m(()=>[d(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[d(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":m(()=>[d(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[d(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[d(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":m(()=>[d(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":m(()=>[d(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[d(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[d(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[d(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":m(()=>[d(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Is=g(Cs,[["__scopeId","data-v-91765379"]]),Ns={class:"container"},ws=["innerHTML"],Ms=["innerHTML"],Ts=b({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=L(),{hasSidebar:a}=K();return(s,r)=>i(e).footer&&i(t).footer!==!1?(o(),c("footer",{key:0,class:M(["VPFooter",{"has-sidebar":i(a)}])},[p("div",Ns,[i(e).footer.message?(o(),c("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ws)):h("",!0),i(e).footer.copyright?(o(),c("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Ms)):h("",!0)])],2)):h("",!0)}}),Es=g(Ts,[["__scopeId","data-v-c970a860"]]);function Bs(){const{theme:n,frontmatter:e}=L(),t=Ze([]),a=P(()=>t.value.length>0);return pe(()=>{t.value=Me(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:a}}const Qs={class:"menu-text"},Fs={class:"header"},Hs={class:"outline"},Ws=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=L(),a=I(!1),s=I(0),r=I(),l=I();function f(v){var A;(A=r.value)!=null&&A.contains(v.target)||(a.value=!1)}R(a,v=>{if(v){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),ke("Escape",()=>{a.value=!1}),pe(()=>{a.value=!1});function u(){a.value=!a.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function _(v){v.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ie(()=>{a.value=!1}))}function $(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(v,A)=>(o(),c("div",{class:"VPLocalNavOutlineDropdown",style:Xe({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[v.headers.length>0?(o(),c("button",{key:0,onClick:u,class:M({open:a.value})},[p("span",Qs,w(i(nt)(i(t))),1),A[0]||(A[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),c("button",{key:1,onClick:$},w(i(t).returnToTopLabel||"Return to top"),1)),k(Se,{name:"flyout"},{default:m(()=>[a.value?(o(),c("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:_},[p("div",Fs,[p("a",{class:"top-link",href:"#",onClick:$},w(i(t).returnToTopLabel||"Return to top"),1)]),p("div",Hs,[k(st,{headers:v.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),Os=g(Ws,[["__scopeId","data-v-bc9dc845"]]),Ds={class:"container"},Us=["aria-expanded"],Gs={class:"menu-text"},Rs=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=L(),{hasSidebar:a}=K(),{headers:s}=Bs(),{y:r}=xe(),l=I(0);j(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),pe(()=>{s.value=Me(t.value.outline??e.value.outline)});const f=P(()=>s.value.length===0),u=P(()=>f.value&&!a.value),_=P(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:f.value,fixed:u.value}));return($,v)=>i(t).layout!=="home"&&(!u.value||i(r)>=l.value)?(o(),c("div",{key:0,class:M(_.value)},[p("div",Ds,[i(a)?(o(),c("button",{key:0,class:"menu","aria-expanded":$.open,"aria-controls":"VPSidebarNav",onClick:v[0]||(v[0]=A=>$.$emit("open-menu"))},[v[1]||(v[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",Gs,w(i(e).sidebarMenuLabel||"Menu"),1)],8,Us)):h("",!0),k(Os,{headers:i(s),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),js=g(Rs,[["__scopeId","data-v-070ab83d"]]);function Js(){const n=I(!1);function e(){n.value=!0,window.addEventListener("resize",s)}function t(){n.value=!1,window.removeEventListener("resize",s)}function a(){n.value?t():e()}function s(){window.outerWidth>=768&&t()}const r=fe();return R(()=>r.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:a}}const Ks={},zs={class:"VPSwitch",type:"button",role:"switch"},Zs={class:"check"},Ys={key:0,class:"icon"};function Xs(n,e){return o(),c("button",zs,[p("span",Zs,[n.$slots.default?(o(),c("span",Ys,[d(n.$slots,"default",{},void 0,!0)])):h("",!0)])])}const xs=g(Ks,[["render",Xs],["__scopeId","data-v-4a1c76db"]]),qs=b({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=L(),a=ee("toggle-appearance",()=>{e.value=!e.value}),s=I("");return Ce(()=>{s.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(o(),y(xs,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(a)},{default:m(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),Te=g(qs,[["__scopeId","data-v-e40a8bb6"]]),ea={key:0,class:"VPNavBarAppearance"},ta=b({__name:"VPNavBarAppearance",setup(n){const{site:e}=L();return(t,a)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",ea,[k(Te)])):h("",!0)}}),na=g(ta,[["__scopeId","data-v-af096f4a"]]),Ee=I();let at=!1,be=0;function sa(n){const e=I(!1);if(me){!at&&aa(),be++;const t=R(Ee,a=>{var s,r,l;a===n.el.value||(s=n.el.value)!=null&&s.contains(a)?(e.value=!0,(r=n.onFocus)==null||r.call(n)):(e.value=!1,(l=n.onBlur)==null||l.call(n))});Ve(()=>{t(),be--,be||oa()})}return $t(e)}function aa(){document.addEventListener("focusin",ot),at=!0,Ee.value=document.activeElement}function oa(){document.removeEventListener("focusin",ot)}function ot(){Ee.value=document.activeElement}const ra={class:"VPMenuLink"},ia=["innerHTML"],la=b({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=L();return(t,a)=>(o(),c("div",ra,[k(D,{class:M({active:i(X)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,ia)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ve=g(la,[["__scopeId","data-v-acbfed09"]]),ca={class:"VPMenuGroup"},ua={key:0,class:"title"},da=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(o(),c("div",ca,[e.text?(o(),c("p",ua,w(e.text),1)):h("",!0),(o(!0),c(T,null,Q(e.items,a=>(o(),c(T,null,["link"in a?(o(),y(ve,{key:0,item:a},null,8,["item"])):h("",!0)],64))),256))]))}}),pa=g(da,[["__scopeId","data-v-48c802d0"]]),fa={class:"VPMenu"},ma={key:0,class:"items"},va=b({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(o(),c("div",fa,[e.items?(o(),c("div",ma,[(o(!0),c(T,null,Q(e.items,a=>(o(),c(T,{key:JSON.stringify(a)},["link"in a?(o(),y(ve,{key:0,item:a},null,8,["item"])):"component"in a?(o(),y(U(a.component),z({key:1,ref_for:!0},a.props),null,16)):(o(),y(pa,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):h("",!0),d(e.$slots,"default",{},void 0,!0)]))}}),ha=g(va,[["__scopeId","data-v-7dd3104a"]]),_a=["aria-expanded","aria-label"],ba={key:0,class:"text"},ga=["innerHTML"],ka={key:1,class:"vpi-more-horizontal icon"},ya={class:"menu"},$a=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=I(!1),t=I();sa({el:t,onBlur:a});function a(){e.value=!1}return(s,r)=>(o(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[s.button||s.icon?(o(),c("span",ba,[s.icon?(o(),c("span",{key:0,class:M([s.icon,"option-icon"])},null,2)):h("",!0),s.button?(o(),c("span",{key:1,innerHTML:s.button},null,8,ga)):h("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),c("span",ka))],8,_a),p("div",ya,[k(ha,{items:s.items},{default:m(()=>[d(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Be=g($a,[["__scopeId","data-v-04f5c5e9"]]),Aa=["href","aria-label","innerHTML"],Pa=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=I();j(async()=>{var r;await Ie();const s=(r=t.value)==null?void 0:r.children[0];s instanceof HTMLElement&&s.className.startsWith("vpi-social-")&&(getComputedStyle(s).maskImage||getComputedStyle(s).webkitMaskImage)==="none"&&s.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const a=P(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,r)=>(o(),c("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Aa))}}),Sa=g(Pa,[["__scopeId","data-v-d26d30cb"]]),La={class:"VPSocialLinks"},Va=b({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(o(),c("div",La,[(o(!0),c(T,null,Q(e.links,({link:a,icon:s,ariaLabel:r})=>(o(),y(Sa,{key:a,icon:s,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),he=g(Va,[["__scopeId","data-v-ee7a9424"]]),Ca={key:0,class:"group translations"},Ia={class:"trans-title"},Na={key:1,class:"group"},wa={class:"item appearance"},Ma={class:"label"},Ta={class:"appearance-action"},Ea={key:2,class:"group"},Ba={class:"item social-links"},Qa=b({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=L(),{localeLinks:a,currentLang:s}=ne({correspondingLink:!0}),r=P(()=>a.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>r.value?(o(),y(Be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:m(()=>[i(a).length&&i(s).label?(o(),c("div",Ca,[p("p",Ia,w(i(s).label),1),(o(!0),c(T,null,Q(i(a),u=>(o(),y(ve,{key:u.link,item:u},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",Na,[p("div",wa,[p("p",Ma,w(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",Ta,[k(Te)])])])):h("",!0),i(t).socialLinks?(o(),c("div",Ea,[p("div",Ba,[k(he,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Fa=g(Qa,[["__scopeId","data-v-925effce"]]),Ha=["aria-expanded"],Wa=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(o(),c("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=a=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,Ha))}}),Oa=g(Wa,[["__scopeId","data-v-5dea55bf"]]),Da=["innerHTML"],Ua=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=L();return(t,a)=>(o(),y(D,{class:M({VPNavBarMenuLink:!0,active:i(X)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,Da)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Ga=g(Ua,[["__scopeId","data-v-956ec74c"]]),rt=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=L(),a=r=>"component"in r?!1:"link"in r?X(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(a),s=P(()=>a(e.item));return(r,l)=>(o(),y(Be,{class:M({VPNavBarMenuGroup:!0,active:i(X)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||s.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Ra={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ja=b({__name:"VPNavBarMenu",setup(n){const{theme:e}=L();return(t,a)=>i(e).nav?(o(),c("nav",Ra,[a[0]||(a[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),c(T,null,Q(i(e).nav,s=>(o(),c(T,{key:JSON.stringify(s)},["link"in s?(o(),y(Ga,{key:0,item:s},null,8,["item"])):"component"in s?(o(),y(U(s.component),z({key:1,ref_for:!0},s.props),null,16)):(o(),y(rt,{key:2,item:s},null,8,["item"]))],64))),128))])):h("",!0)}}),Ja=g(ja,[["__scopeId","data-v-e6d46098"]]);function Ka(n){const{localeIndex:e,theme:t}=L();function a(s){var C,E,V;const r=s.split("."),l=(C=t.value.search)==null?void 0:C.options,f=l&&typeof l=="object",u=f&&((V=(E=l.locales)==null?void 0:E[e.value])==null?void 0:V.translations)||null,_=f&&l.translations||null;let $=u,v=_,A=n;const S=r.pop();for(const B of r){let W=null;const H=A==null?void 0:A[B];H&&(W=A=H);const x=v==null?void 0:v[B];x&&(W=v=x);const F=$==null?void 0:$[B];F&&(W=$=F),H||(A=W),x||(v=W),F||($=W)}return($==null?void 0:$[S])??(v==null?void 0:v[S])??(A==null?void 0:A[S])??""}return a}const za=["aria-label"],Za={class:"DocSearch-Button-Container"},Ya={class:"DocSearch-Button-Placeholder"},Oe=b({__name:"VPNavBarSearchButton",setup(n){const t=Ka({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,s)=>(o(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Za,[s[0]||(s[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Ya,w(i(t)("button.buttonText")),1)]),s[1]||(s[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,za))}}),Xa={class:"VPNavBarSearch"},xa={id:"local-search"},qa={key:1,id:"docsearch"},eo=b({__name:"VPNavBarSearch",setup(n){const e=At(()=>Pt(()=>import("./VPLocalSearchBox.C9W46vo6.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:a}=L(),s=I(!1),r=I(!1);j(()=>{});function l(){s.value||(s.value=!0,setTimeout(f,16))}function f(){const v=new Event("keydown");v.key="k",v.metaKey=!0,window.dispatchEvent(v),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function u(v){const A=v.target,S=A.tagName;return A.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const _=I(!1);ke("k",v=>{(v.ctrlKey||v.metaKey)&&(v.preventDefault(),_.value=!0)}),ke("/",v=>{u(v)||(v.preventDefault(),_.value=!0)});const $="local";return(v,A)=>{var S;return o(),c("div",Xa,[i($)==="local"?(o(),c(T,{key:0},[_.value?(o(),y(i(e),{key:0,onClose:A[0]||(A[0]=C=>_.value=!1)})):h("",!0),p("div",xa,[k(Oe,{onClick:A[1]||(A[1]=C=>_.value=!0)})])],64)):i($)==="algolia"?(o(),c(T,{key:1},[s.value?(o(),y(i(t),{key:0,algolia:((S=i(a).search)==null?void 0:S.options)??i(a).algolia,onVnodeBeforeMount:A[2]||(A[2]=C=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(o(),c("div",qa,[k(Oe,{onClick:l})]))],64)):h("",!0)])}}}),to=b({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=L();return(t,a)=>i(e).socialLinks?(o(),y(he,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),no=g(to,[["__scopeId","data-v-164c457f"]]),so=["href","rel","target"],ao=["innerHTML"],oo={key:2},ro=b({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=L(),{hasSidebar:a}=K(),{currentLang:s}=ne(),r=P(()=>{var u;return typeof t.value.logoLink=="string"?t.value.logoLink:(u=t.value.logoLink)==null?void 0:u.link}),l=P(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.rel}),f=P(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.target});return(u,_)=>(o(),c("div",{class:M(["VPNavBarTitle",{"has-sidebar":i(a)}])},[p("a",{class:"title",href:r.value??i(we)(i(s).link),rel:l.value,target:f.value},[d(u.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),y(ce,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(o(),c("span",{key:1,innerHTML:i(t).siteTitle},null,8,ao)):i(t).siteTitle===void 0?(o(),c("span",oo,w(i(e).title),1)):h("",!0),d(u.$slots,"nav-bar-title-after",{},void 0,!0)],8,so)],2))}}),io=g(ro,[["__scopeId","data-v-0f4f798b"]]),lo={class:"items"},co={class:"title"},uo=b({__name:"VPNavBarTranslations",setup(n){const{theme:e}=L(),{localeLinks:t,currentLang:a}=ne({correspondingLink:!0});return(s,r)=>i(t).length&&i(a).label?(o(),y(Be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:m(()=>[p("div",lo,[p("p",co,w(i(a).label),1),(o(!0),c(T,null,Q(i(t),l=>(o(),y(ve,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),po=g(uo,[["__scopeId","data-v-c80d9ad0"]]),fo={class:"wrapper"},mo={class:"container"},vo={class:"title"},ho={class:"content"},_o={class:"content-body"},bo=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=xe(),{hasSidebar:a}=K(),{frontmatter:s}=L(),r=I({});return Ce(()=>{r.value={"has-sidebar":a.value,home:s.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,f)=>(o(),c("div",{class:M(["VPNavBar",r.value])},[p("div",fo,[p("div",mo,[p("div",vo,[k(io,null,{"nav-bar-title-before":m(()=>[d(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[d(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ho,[p("div",_o,[d(l.$slots,"nav-bar-content-before",{},void 0,!0),k(eo,{class:"search"}),k(Ja,{class:"menu"}),k(po,{class:"translations"}),k(na,{class:"appearance"}),k(no,{class:"social-links"}),k(Fa,{class:"extra"}),d(l.$slots,"nav-bar-content-after",{},void 0,!0),k(Oa,{class:"hamburger",active:l.isScreenOpen,onClick:f[0]||(f[0]=u=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),go=g(bo,[["__scopeId","data-v-822684d1"]]),ko={key:0,class:"VPNavScreenAppearance"},yo={class:"text"},$o=b({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=L();return(a,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",ko,[p("p",yo,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(Te)])):h("",!0)}}),Ao=g($o,[["__scopeId","data-v-ffb44008"]]),Po=["innerHTML"],So=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=ee("close-screen");return(t,a)=>(o(),y(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,Po)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Lo=g(So,[["__scopeId","data-v-735512b8"]]),Vo=["innerHTML"],Co=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=ee("close-screen");return(t,a)=>(o(),y(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:m(()=>[p("span",{innerHTML:t.item.text},null,8,Vo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),it=g(Co,[["__scopeId","data-v-372ae7c0"]]),Io={class:"VPNavScreenMenuGroupSection"},No={key:0,class:"title"},wo=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(o(),c("div",Io,[e.text?(o(),c("p",No,w(e.text),1)):h("",!0),(o(!0),c(T,null,Q(e.items,a=>(o(),y(it,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Mo=g(wo,[["__scopeId","data-v-4b8941ac"]]),To=["aria-controls","aria-expanded"],Eo=["innerHTML"],Bo=["id"],Qo={key:0,class:"item"},Fo={key:1,class:"item"},Ho={key:2,class:"group"},Wo=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=I(!1),a=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(r,l)=>(o(),c("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":a.value,"aria-expanded":t.value,onClick:s},[p("span",{class:"button-text",innerHTML:r.text},null,8,Eo),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,To),p("div",{id:a.value,class:"items"},[(o(!0),c(T,null,Q(r.items,f=>(o(),c(T,{key:JSON.stringify(f)},["link"in f?(o(),c("div",Qo,[k(it,{item:f},null,8,["item"])])):"component"in f?(o(),c("div",Fo,[(o(),y(U(f.component),z({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(o(),c("div",Ho,[k(Mo,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Bo)],2))}}),lt=g(Wo,[["__scopeId","data-v-875057a5"]]),Oo={key:0,class:"VPNavScreenMenu"},Do=b({__name:"VPNavScreenMenu",setup(n){const{theme:e}=L();return(t,a)=>i(e).nav?(o(),c("nav",Oo,[(o(!0),c(T,null,Q(i(e).nav,s=>(o(),c(T,{key:JSON.stringify(s)},["link"in s?(o(),y(Lo,{key:0,item:s},null,8,["item"])):"component"in s?(o(),y(U(s.component),z({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),y(lt,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Uo=b({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=L();return(t,a)=>i(e).socialLinks?(o(),y(he,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Go={class:"list"},Ro=b({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=ne({correspondingLink:!0}),a=I(!1);function s(){a.value=!a.value}return(r,l)=>i(e).length&&i(t).label?(o(),c("div",{key:0,class:M(["VPNavScreenTranslations",{open:a.value}])},[p("button",{class:"title",onClick:s},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),G(" "+w(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",Go,[(o(!0),c(T,null,Q(i(e),f=>(o(),c("li",{key:f.link,class:"item"},[k(D,{class:"link",href:f.link},{default:m(()=>[G(w(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),jo=g(Ro,[["__scopeId","data-v-362991c2"]]),Jo={class:"container"},Ko=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=I(null),t=qe(me?document.body:null);return(a,s)=>(o(),y(Se,{name:"fade",onEnter:s[0]||(s[0]=r=>t.value=!0),onAfterLeave:s[1]||(s[1]=r=>t.value=!1)},{default:m(()=>[a.open?(o(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Jo,[d(a.$slots,"nav-screen-content-before",{},void 0,!0),k(Do,{class:"menu"}),k(jo,{class:"translations"}),k(Ao,{class:"appearance"}),k(Uo,{class:"social-links"}),d(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),zo=g(Ko,[["__scopeId","data-v-833aabba"]]),Zo={key:0,class:"VPNav"},Yo=b({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:a}=Js(),{frontmatter:s}=L(),r=P(()=>s.value.navbar!==!1);return Ne("close-screen",t),de(()=>{me&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,f)=>r.value?(o(),c("header",Zo,[k(go,{"is-screen-open":i(e),onToggleScreen:i(a)},{"nav-bar-title-before":m(()=>[d(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[d(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[d(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[d(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(zo,{open:i(e)},{"nav-screen-content-before":m(()=>[d(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[d(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Xo=g(Yo,[["__scopeId","data-v-f1e365da"]]),xo=["role","tabindex"],qo={key:1,class:"items"},er=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:a,isLink:s,isActiveLink:r,hasActiveLink:l,hasChildren:f,toggle:u}=Zt(P(()=>e.item)),_=P(()=>f.value?"section":"div"),$=P(()=>s.value?"a":"div"),v=P(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),A=P(()=>s.value?void 0:"button"),S=P(()=>[[`level-${e.depth}`],{collapsible:a.value},{collapsed:t.value},{"is-link":s.value},{"is-active":r.value},{"has-active":l.value}]);function C(V){"key"in V&&V.key!=="Enter"||!e.item.link&&u()}function E(){e.item.link&&u()}return(V,B)=>{const W=Z("VPSidebarItem",!0);return o(),y(U(_.value),{class:M(["VPSidebarItem",S.value])},{default:m(()=>[V.item.text?(o(),c("div",z({key:0,class:"item",role:A.value},St(V.item.items?{click:C,keydown:C}:{},!0),{tabindex:V.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),V.item.link?(o(),y(D,{key:0,tag:$.value,class:"link",href:V.item.link,rel:V.item.rel,target:V.item.target},{default:m(()=>[(o(),y(U(v.value),{class:"text",innerHTML:V.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),y(U(v.value),{key:1,class:"text",innerHTML:V.item.text},null,8,["innerHTML"])),V.item.collapsed!=null&&V.item.items&&V.item.items.length?(o(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:E,onKeydown:Lt(E,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,xo)):h("",!0),V.item.items&&V.item.items.length?(o(),c("div",qo,[V.depth<5?(o(!0),c(T,{key:0},Q(V.item.items,H=>(o(),y(W,{key:H.text,item:H,depth:V.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),tr=g(er,[["__scopeId","data-v-196b2e5f"]]),nr=b({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=I(!0);let t=null;return j(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Vt(()=>{t!=null&&(clearTimeout(t),t=null)}),(a,s)=>(o(!0),c(T,null,Q(a.items,r=>(o(),c("div",{key:r.text,class:M(["group",{"no-transition":e.value}])},[k(tr,{item:r,depth:0},null,8,["item"])],2))),128))}}),sr=g(nr,[["__scopeId","data-v-9e426adc"]]),ar={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},or=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=K(),a=n,s=I(null),r=qe(me?document.body:null);R([a,s],()=>{var f;a.open?(r.value=!0,(f=s.value)==null||f.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=I(0);return R(e,()=>{l.value+=1},{deep:!0}),(f,u)=>i(t)?(o(),c("aside",{key:0,class:M(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:s,onClick:u[0]||(u[0]=Ct(()=>{},["stop"]))},[u[2]||(u[2]=p("div",{class:"curtain"},null,-1)),p("nav",ar,[u[1]||(u[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),d(f.$slots,"sidebar-nav-before",{},void 0,!0),(o(),y(sr,{items:i(e),key:l.value},null,8,["items"])),d(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),rr=g(or,[["__scopeId","data-v-18756405"]]),ir=b({__name:"VPSkipLink",setup(n){const e=fe(),t=I();R(()=>e.path,()=>t.value.focus());function a({target:s}){const r=document.getElementById(decodeURIComponent(s.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(o(),c(T,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a}," Skip to content ")],64))}}),lr=g(ir,[["__scopeId","data-v-c3508ec8"]]),cr=b({__name:"Layout",setup(n){const{isOpen:e,open:t,close:a}=K(),s=fe();R(()=>s.path,a),zt(e,a);const{frontmatter:r}=L(),l=et(),f=P(()=>!!l["home-hero-image"]);return Ne("hero-image-slot-exists",f),(u,_)=>{const $=Z("Content");return i(r).layout!==!1?(o(),c("div",{key:0,class:M(["Layout",i(r).pageClass])},[d(u.$slots,"layout-top",{},void 0,!0),k(lr),k(Bt,{class:"backdrop",show:i(e),onClick:i(a)},null,8,["show","onClick"]),k(Xo,null,{"nav-bar-title-before":m(()=>[d(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":m(()=>[d(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":m(()=>[d(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":m(()=>[d(u.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":m(()=>[d(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":m(()=>[d(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(js,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(rr,{open:i(e)},{"sidebar-nav-before":m(()=>[d(u.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":m(()=>[d(u.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Is,null,{"page-top":m(()=>[d(u.$slots,"page-top",{},void 0,!0)]),"page-bottom":m(()=>[d(u.$slots,"page-bottom",{},void 0,!0)]),"not-found":m(()=>[d(u.$slots,"not-found",{},void 0,!0)]),"home-hero-before":m(()=>[d(u.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":m(()=>[d(u.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":m(()=>[d(u.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":m(()=>[d(u.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":m(()=>[d(u.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":m(()=>[d(u.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":m(()=>[d(u.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":m(()=>[d(u.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":m(()=>[d(u.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":m(()=>[d(u.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":m(()=>[d(u.$slots,"doc-before",{},void 0,!0)]),"doc-after":m(()=>[d(u.$slots,"doc-after",{},void 0,!0)]),"doc-top":m(()=>[d(u.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":m(()=>[d(u.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":m(()=>[d(u.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":m(()=>[d(u.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":m(()=>[d(u.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":m(()=>[d(u.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":m(()=>[d(u.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":m(()=>[d(u.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Es),d(u.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),y($,{key:1}))}}}),ur=g(cr,[["__scopeId","data-v-a9a9e638"]]),dr={},pr={class:"VPTeamPage"};function fr(n,e){return o(),c("div",pr,[d(n.$slots,"default")])}const Pi=g(dr,[["render",fr],["__scopeId","data-v-c2f8e101"]]),mr={},vr={class:"VPTeamPageTitle"},hr={key:0,class:"title"},_r={key:1,class:"lead"};function br(n,e){return o(),c("div",vr,[n.$slots.title?(o(),c("h1",hr,[d(n.$slots,"title",{},void 0,!0)])):h("",!0),n.$slots.lead?(o(),c("p",_r,[d(n.$slots,"lead",{},void 0,!0)])):h("",!0)])}const Si=g(mr,[["render",br],["__scopeId","data-v-e277e15c"]]),gr={},kr={class:"VPTeamPageSection"},yr={class:"title"},$r={key:0,class:"title-text"},Ar={key:0,class:"lead"},Pr={key:1,class:"members"};function Sr(n,e){return o(),c("section",kr,[p("div",yr,[e[0]||(e[0]=p("div",{class:"title-line"},null,-1)),n.$slots.title?(o(),c("h2",$r,[d(n.$slots,"title",{},void 0,!0)])):h("",!0)]),n.$slots.lead?(o(),c("p",Ar,[d(n.$slots,"lead",{},void 0,!0)])):h("",!0),n.$slots.members?(o(),c("div",Pr,[d(n.$slots,"members",{},void 0,!0)])):h("",!0)])}const Li=g(gr,[["render",Sr],["__scopeId","data-v-d43bc49d"]]),Lr={class:"profile"},Vr={class:"avatar"},Cr=["src","alt"],Ir={class:"data"},Nr={class:"name"},wr={key:0,class:"affiliation"},Mr={key:0,class:"title"},Tr={key:1,class:"at"},Er=["innerHTML"],Br={key:2,class:"links"},Qr={key:0,class:"sp"},Fr=b({__name:"VPTeamMembersItem",props:{size:{default:"medium"},member:{}},setup(n){return(e,t)=>(o(),c("article",{class:M(["VPTeamMembersItem",[e.size]])},[p("div",Lr,[p("figure",Vr,[p("img",{class:"avatar-img",src:e.member.avatar,alt:e.member.name},null,8,Cr)]),p("div",Ir,[p("h1",Nr,w(e.member.name),1),e.member.title||e.member.org?(o(),c("p",wr,[e.member.title?(o(),c("span",Mr,w(e.member.title),1)):h("",!0),e.member.title&&e.member.org?(o(),c("span",Tr," @ ")):h("",!0),e.member.org?(o(),y(D,{key:2,class:M(["org",{link:e.member.orgLink}]),href:e.member.orgLink,"no-icon":""},{default:m(()=>[G(w(e.member.org),1)]),_:1},8,["class","href"])):h("",!0)])):h("",!0),e.member.desc?(o(),c("p",{key:1,class:"desc",innerHTML:e.member.desc},null,8,Er)):h("",!0),e.member.links?(o(),c("div",Br,[k(he,{links:e.member.links},null,8,["links"])])):h("",!0)])]),e.member.sponsor?(o(),c("div",Qr,[k(D,{class:"sp-link",href:e.member.sponsor,"no-icon":""},{default:m(()=>[t[0]||(t[0]=p("span",{class:"vpi-heart sp-icon"},null,-1)),G(" "+w(e.member.actionText||"Sponsor"),1)]),_:1},8,["href"])])):h("",!0)],2))}}),Hr=g(Fr,[["__scopeId","data-v-f9987cb6"]]),Wr={class:"container"},Or=b({__name:"VPTeamMembers",props:{size:{default:"medium"},members:{}},setup(n){const e=n,t=P(()=>[e.size,`count-${e.members.length}`]);return(a,s)=>(o(),c("div",{class:M(["VPTeamMembers",t.value])},[p("div",Wr,[(o(!0),c(T,null,Q(a.members,r=>(o(),c("div",{key:r.name,class:"item"},[k(Hr,{size:a.size,member:r},null,8,["size","member"])]))),128))])],2))}}),Vi=g(Or,[["__scopeId","data-v-fba19bad"]]),De={Layout:ur,enhanceApp:({app:n})=>{n.component("Badge",Mt)}},Dr={},Ur={style:{"text-align":"center"}};function Gr(n,e){const t=Z("font");return o(),c(T,null,[e[1]||(e[1]=p("br",null,null,-1)),p("h1",Ur,[p("strong",null,[k(t,{color:"orange"},{default:m(()=>e[0]||(e[0]=[G(" Package Ecosystem")])),_:1})])]),e[2]||(e[2]=It('

Read n-d array like-data

DiskArrays.jl

Get your chunks!

Named Dimensions

DimensionalData.jl

Select & Index!

Out of memory data

Zarr.jl

Chunkerd, compressed !

Rasterized spatial data

Rasters.jl

Read and manipulate !

Array-oriented data

NetCDF.jl

Scientific binary data.

Raster and vector data

ArchGDAL.jl

GDAL in Julia.

An interface for

GeoInterface.jl

geospatial data in Julia.

A higher level interface

GRIBDatasets.jl

for reading GRIB files.

Array-oriented data

NCDatasets.jl

Scientific binary data.

',9))],64)}const Rr=g(Dr,[["render",Gr]]),jr=b({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(n){const e=I([]),t=I("Versions"),a=I(!1);ze();const s=()=>typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),r=()=>{if(typeof window>"u")return"";const{origin:u,pathname:_}=window.location;if(u.includes("github.io")){const $=_.split("/").filter(Boolean),v=$.length>0?`/${$[0]}`:"";return`${u}${v}`}else return u},l=()=>new Promise(u=>{if(s()){u(!1);return}const _=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(_),u(!0))},100);setTimeout(()=>{clearInterval(_),u(!1)},5e3)});return j(async()=>{if(!(typeof window>"u")){try{if(s()){const u=["dev"];e.value=u.map(_=>({text:_,link:"/"})),t.value="dev"}else{const u=await l(),_=P(()=>r());if(u&&window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION)e.value=window.DOC_VERSIONS.map($=>({text:$,link:`${_.value}/${$}/`})),t.value=window.DOCUMENTER_CURRENT_VERSION;else{const $=["dev"];e.value=$.map(v=>({text:v,link:`${_.value}/${v}/`})),t.value="dev"}}}catch(u){console.warn("Error loading versions:",u);const _=["dev"],$=P(()=>r());e.value=_.map(v=>({text:v,link:`${$.value}/${v}/`})),t.value="dev"}a.value=!0}}),(u,_)=>a.value?(o(),c(T,{key:0},[!u.screenMenu&&e.value.length>0?(o(),y(rt,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"])):u.screenMenu&&e.value.length>0?(o(),y(lt,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):h("",!0)],64)):h("",!0)}}),Jr=g(jr,[["__scopeId","data-v-44adf51f"]]);function Kr(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function ue(n,e){if((t=(n=e?n.toExponential(e-1):n.toExponential()).indexOf("e"))<0)return null;var t,a=n.slice(0,t);return[a.length>1?a[0]+a.slice(2):a,+n.slice(t+1)]}function zr(n){return n=ue(Math.abs(n)),n?n[1]:NaN}function Zr(n,e){return function(t,a){for(var s=t.length,r=[],l=0,f=n[0],u=0;s>0&&f>0&&(u+f+1>a&&(f=Math.max(1,a-u)),r.push(t.substring(s-=f,s+f)),!((u+=f+1)>a));)f=n[l=(l+1)%n.length];return r.reverse().join(e)}}function Yr(n){return function(e){return e.replace(/[0-9]/g,function(t){return n[+t]})}}var Xr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Pe(n){if(!(e=Xr.exec(n)))throw new Error("invalid format: "+n);var e;return new Qe({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Pe.prototype=Qe.prototype;function Qe(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Qe.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function xr(n){e:for(var e=n.length,t=1,a=-1,s;t0&&(a=0);break}return a>0?n.slice(0,a)+n.slice(s+1):n}var ct;function qr(n,e){var t=ue(n,e);if(!t)return n+"";var a=t[0],s=t[1],r=s-(ct=Math.max(-8,Math.min(8,Math.floor(s/3)))*3)+1,l=a.length;return r===l?a:r>l?a+new Array(r-l+1).join("0"):r>0?a.slice(0,r)+"."+a.slice(r):"0."+new Array(1-r).join("0")+ue(n,Math.max(0,e+r-1))[0]}function Ue(n,e){var t=ue(n,e);if(!t)return n+"";var a=t[0],s=t[1];return s<0?"0."+new Array(-s).join("0")+a:a.length>s+1?a.slice(0,s+1)+"."+a.slice(s+1):a+new Array(s-a.length+2).join("0")}const Ge={"%":(n,e)=>(n*100).toFixed(e),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Kr,e:(n,e)=>n.toExponential(e),f:(n,e)=>n.toFixed(e),g:(n,e)=>n.toPrecision(e),o:n=>Math.round(n).toString(8),p:(n,e)=>Ue(n*100,e),r:Ue,s:qr,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Re(n){return n}var je=Array.prototype.map,Je=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ei(n){var e=n.grouping===void 0||n.thousands===void 0?Re:Zr(je.call(n.grouping,Number),n.thousands+""),t=n.currency===void 0?"":n.currency[0]+"",a=n.currency===void 0?"":n.currency[1]+"",s=n.decimal===void 0?".":n.decimal+"",r=n.numerals===void 0?Re:Yr(je.call(n.numerals,String)),l=n.percent===void 0?"%":n.percent+"",f=n.minus===void 0?"−":n.minus+"",u=n.nan===void 0?"NaN":n.nan+"";function _(v){v=Pe(v);var A=v.fill,S=v.align,C=v.sign,E=v.symbol,V=v.zero,B=v.width,W=v.comma,H=v.precision,x=v.trim,F=v.type;F==="n"?(W=!0,F="g"):Ge[F]||(H===void 0&&(H=12),x=!0,F="g"),(V||A==="0"&&S==="=")&&(V=!0,A="0",S="=");var mt=E==="$"?t:E==="#"&&/[boxX]/.test(F)?"0"+F.toLowerCase():"",vt=E==="$"?a:/[%p]/.test(F)?l:"",Fe=Ge[F],ht=/[defgprs%]/.test(F);H=H===void 0?6:/[gprs]/.test(F)?Math.max(1,Math.min(21,H)):Math.max(0,Math.min(20,H));function He(N){var Y=mt,O=vt,q,We,se;if(F==="c")O=Fe(N)+O,N="";else{N=+N;var ae=N<0||1/N<0;if(N=isNaN(N)?u:Fe(Math.abs(N),H),x&&(N=xr(N)),ae&&+N==0&&C!=="+"&&(ae=!1),Y=(ae?C==="("?C:f:C==="-"||C==="("?"":C)+Y,O=(F==="s"?Je[8+ct/3]:"")+O+(ae&&C==="("?")":""),ht){for(q=-1,We=N.length;++qse||se>57){O=(se===46?s+N.slice(q+1):N.slice(q))+O,N=N.slice(0,q);break}}}W&&!V&&(N=e(N,1/0));var oe=Y.length+N.length+O.length,J=oe>1)+Y+N+O+J.slice(oe);break;default:N=J+Y+N+O;break}return r(N)}return He.toString=function(){return v+""},He}function $(v,A){var S=_((v=Pe(v),v.type="f",v)),C=Math.max(-8,Math.min(8,Math.floor(zr(A)/3)))*3,E=Math.pow(10,-C),V=Je[8+C/3];return function(B){return S(E*B)+V}}return{format:_,formatPrefix:$}}var re,ut;ti({thousands:",",grouping:[3],currency:["$",""]});function ti(n){return re=ei(n),re.format,ut=re.formatPrefix,re}const ie=JSON.parse("104"),ni=["title"],si={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor",style:{"vertical-align":"middle","margin-right":"0.25rem","margin-left":"0.5rem"}},ai=["title"],oi={__name:"StarUs",setup(n){const e=ie?ut(".1s",1e3)(ie):"";return(t,a)=>(o(),c(T,null,[p("a",{target:"_blank","data-decoration":"★",title:i(ie).toLocaleString("en-US").concat(" GitHub stars"),href:"https://github.com/JuliaDataCubes/YAXArrays.jl"},[(o(),c("svg",si,a[0]||(a[0]=[p("path",{d:"M12 .297C5.375.297 0 5.673 0 12.3c0 5.292 3.438 9.8 8.207 11.387.6.11.793-.26.793-.577 0-.285-.01-1.04-.015-2.04-3.338.727-4.042-1.61-4.042-1.61-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.807 1.305 3.493.997.107-.774.42-1.305.762-1.605-2.665-.3-5.467-1.333-5.467-5.931 0-1.31.47-2.382 1.236-3.222-.123-.303-.535-1.52.117-3.166 0 0 1.01-.323 3.31 1.23.96-.267 1.98-.4 3-.405 1.02.005 2.04.138 3 .405 2.3-1.553 3.31-1.23 3.31-1.23.653 1.646.24 2.863.117 3.166.765.84 1.236 1.912 1.236 3.222 0 4.61-2.807 5.625-5.477 5.921.43.372.823 1.102.823 2.222 0 1.606-.015 2.902-.015 3.293 0 .32.192.693.8.577C20.565 22.1 24 17.588 24 12.297 24 5.673 18.627.297 12 .297z"},null,-1)]))),p("span",null,w(i(e)),1)],8,ni),p("a",{class:"mobile",target:"_blank",title:i(ie).toLocaleString("en-US").concat(" GitHub stars"),href:"https://juliadatacubes.github.io/YAXArrays.jl/stable/"},a[1]||(a[1]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",width:"21",height:"21",viewBox:"0 0 21 21",fill:"none"},[p("path",{d:"M19.625 5.60534C18.7083 4.03477 17.4649 2.79135 15.8945 1.87479C14.3238 0.958185 12.6091 0.5 10.7492 0.5C8.88947 0.5 7.17422 0.958325 5.60388 1.87479C4.0333 2.7913 2.78997 4.03477 1.87332 5.60534C0.956814 7.17587 0.498535 8.89089 0.498535 10.7504C0.498535 12.984 1.15021 14.9926 2.4539 16.7766C3.75744 18.5607 5.44142 19.7952 7.50571 20.4803C7.746 20.5249 7.92388 20.4936 8.03954 20.387C8.15524 20.2804 8.21302 20.1467 8.21302 19.9868C8.21302 19.9601 8.21073 19.7199 8.20629 19.266C8.20171 18.8122 8.19956 18.4162 8.19956 18.0783L7.89256 18.1315C7.69682 18.1673 7.44989 18.1825 7.15178 18.1782C6.8538 18.174 6.54446 18.1428 6.22419 18.0847C5.90377 18.0272 5.60575 17.8937 5.32988 17.6846C5.05416 17.4755 4.85842 17.2018 4.74272 16.8639L4.60925 16.5568C4.52029 16.3523 4.38023 16.1251 4.18888 15.8761C3.99754 15.6269 3.80405 15.458 3.60831 15.369L3.51486 15.3021C3.45259 15.2577 3.39481 15.204 3.34138 15.1418C3.28799 15.0796 3.24802 15.0173 3.22132 14.955C3.19458 14.8926 3.21674 14.8414 3.28804 14.8012C3.35933 14.761 3.48817 14.7416 3.67512 14.7416L3.94196 14.7814C4.11993 14.8171 4.34007 14.9236 4.60266 15.1017C4.86511 15.2796 5.08085 15.5109 5.24994 15.7956C5.4547 16.1605 5.7014 16.4385 5.99072 16.6299C6.27982 16.8212 6.5713 16.9167 6.86488 16.9167C7.15846 16.9167 7.41203 16.8945 7.62567 16.8502C7.83908 16.8057 8.0393 16.7388 8.22625 16.6499C8.30633 16.0535 8.52437 15.5953 8.88017 15.275C8.37304 15.2217 7.9171 15.1414 7.51212 15.0347C7.10736 14.9278 6.6891 14.7544 6.25761 14.5139C5.82589 14.2738 5.46774 13.9756 5.18309 13.6198C4.89839 13.2639 4.66474 12.7966 4.48247 12.2183C4.3001 11.6399 4.20889 10.9726 4.20889 10.2163C4.20889 9.13941 4.56044 8.22304 5.26341 7.46665C4.93411 6.65705 4.96519 5.74947 5.35676 4.744C5.61482 4.66382 5.9975 4.72399 6.50463 4.92412C7.01186 5.12434 7.38323 5.29587 7.61912 5.43808C7.85502 5.58024 8.04402 5.70071 8.18642 5.79842C9.01411 5.56715 9.86825 5.45149 10.7491 5.45149C11.6299 5.45149 12.4843 5.56715 13.312 5.79842L13.8192 5.47823C14.166 5.26459 14.5756 5.06881 15.0469 4.89083C15.5185 4.71295 15.8791 4.66396 16.1284 4.74414C16.5286 5.74966 16.5643 6.65719 16.2349 7.46679C16.9378 8.22318 17.2895 9.13978 17.2895 10.2164C17.2895 10.9727 17.198 11.6421 17.0159 12.225C16.8336 12.808 16.5979 13.2749 16.3088 13.6265C16.0194 13.9781 15.659 14.274 15.2275 14.5141C14.7959 14.7544 14.3775 14.9278 13.9728 15.0347C13.5678 15.1415 13.1119 15.2219 12.6047 15.2752C13.0673 15.6755 13.2986 16.3073 13.2986 17.1704V19.9864C13.2986 20.1464 13.3542 20.2799 13.4656 20.3867C13.5768 20.4932 13.7524 20.5246 13.9927 20.4799C16.0573 19.7949 17.7413 18.5603 19.0448 16.7762C20.3481 14.9922 21 12.9837 21 10.75C20.9996 8.89075 20.541 7.17587 19.625 5.60534Z",fill:"currentColor"})],-1)]),8,ai)],64))}},ri=g(oi,[["__scopeId","data-v-a679c84d"]]),ii=n=>{if(typeof document>"u")return{stabilizeScrollPosition:s=>async(...r)=>s(...r)};const e=document.documentElement;return{stabilizeScrollPosition:a=>async(...s)=>{const r=a(...s),l=n.value;if(!l)return r;const f=l.offsetTop-e.scrollTop;return await Ie(),e.scrollTop=l.offsetTop-f,r}}},dt="vitepress:tabSharedState",te=typeof localStorage<"u"?localStorage:null,pt="vitepress:tabsSharedState",li=()=>{const n=te==null?void 0:te.getItem(pt);if(n)try{return JSON.parse(n)}catch{}return{}},ci=n=>{te&&te.setItem(pt,JSON.stringify(n))},ui=n=>{const e=Nt({});R(()=>e.content,(t,a)=>{t&&a&&ci(t)},{deep:!0}),n.provide(dt,e)},di=(n,e)=>{const t=ee(dt);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");j(()=>{t.content||(t.content=li())});const a=I(),s=P({get(){var u;const l=e.value,f=n.value;if(l){const _=(u=t.content)==null?void 0:u[l];if(_&&f.includes(_))return _}else{const _=a.value;if(_)return _}return f[0]},set(l){const f=e.value;f?t.content&&(t.content[f]=l):a.value=l}});return{selected:s,select:l=>{s.value=l}}};let Ke=0;const pi=()=>(Ke++,""+Ke);function fi(){const n=et();return P(()=>{var a;const t=(a=n.default)==null?void 0:a.call(n);return t?t.filter(s=>typeof s.type=="object"&&"__name"in s.type&&s.type.__name==="PluginTabsTab"&&s.props).map(s=>{var r;return(r=s.props)==null?void 0:r.label}):[]})}const ft="vitepress:tabSingleState",mi=n=>{Ne(ft,n)},vi=()=>{const n=ee(ft);if(!n)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return n},hi={class:"plugin-tabs"},_i=["id","aria-selected","aria-controls","tabindex","onClick"],bi=b({__name:"PluginTabs",props:{sharedStateKey:{}},setup(n){const e=n,t=fi(),{selected:a,select:s}=di(t,wt(e,"sharedStateKey")),r=I(),{stabilizeScrollPosition:l}=ii(r),f=l(s),u=I([]),_=v=>{var C;const A=t.value.indexOf(a.value);let S;v.key==="ArrowLeft"?S=A>=1?A-1:t.value.length-1:v.key==="ArrowRight"&&(S=A(o(),c("div",hi,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:_},[(o(!0),c(T,null,Q(i(t),S=>(o(),c("button",{id:`tab-${S}-${i($)}`,ref_for:!0,ref_key:"buttonRefs",ref:u,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(a),"aria-controls":`panel-${S}-${i($)}`,tabindex:S===i(a)?0:-1,onClick:()=>i(f)(S)},w(S),9,_i))),128))],544),d(v.$slots,"default")]))}}),gi=["id","aria-labelledby"],ki=b({__name:"PluginTabsTab",props:{label:{}},setup(n){const{uid:e,selected:t}=vi();return(a,s)=>i(t)===a.label?(o(),c("div",{key:0,id:`panel-${a.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${a.label}-${i(e)}`},[d(a.$slots,"default",{},void 0,!0)],8,gi)):h("",!0)}}),yi=g(ki,[["__scopeId","data-v-9b0d03d2"]]),$i=n=>{ui(n),n.component("PluginTabs",bi),n.component("PluginTabsTab",yi)},Ci={extends:De,Layout(){return _e(De.Layout,null,{"aside-ads-before":()=>_e(Rr),"nav-bar-content-after":()=>_e(ri)})},enhanceApp({app:n,router:e,siteData:t}){$i(n),n.component("VersionPicker",Jr)}};export{Ci as R,Si as V,Vi as a,Li as b,Pi as c,Ka as d,L as u}; diff --git a/v0.6.0/assets/cyhvrkj.B7KFIfDV.jpeg b/v0.6.0/assets/cyhvrkj.B7KFIfDV.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..793464fc2ac22d681dc279eb4468a26410a9214b GIT binary patch literal 110829 zcmeFZWmH_j(>FLsa3{D12@b&>0tpZxxO)f?WN;na0tB4^0fG&|g1fszfZ!UO!6Cp5 zI@s`%|MTv<=j^B5J!f}6?9+4lp1F7K?Yh6}>h7wps(D;|+yD@%C@L!gP*4B>l&25i zaT)LifQI_7{5zsO6?6>re+3Hz;~54v77h+J7B)5x9w8nME&(n!Ha;;v0U;3)F%b?P z2`LE?>C<*+xvTx{H@tN$0vV>f^p3)K+48V!XBfJ%&lMvU^<4`6tD z&u1wADS-c3P*Bm(pJ8BPVdLOF-OxY;Kz*W(ijMZ|89MsY-GNWP1JH?|k-XrS!ywhN z#AI@NE)bfSi^VKo(?g~`1!EEX=pKfRLry_SMa}w>jh%y2NLWNvOkCp4TLnd>cgiX{ zx_bHshDOF#);6DP?d%;qJiWYqK)!zApCclpzC_0)C4WmvP5Yjnk(Xak__L_Eq_noK zzM-+HxuvzYuYX{0=-2Sb^vvws{KDd&rA_G8_Rj9!{=p&q?EK>L>Kbu#`wtfi0PVkE zJstlG*#7|+@e?jo^e2{L{=ho05h|!%`B)5 zBm3w+g+tCFw8;wp2kk$|{?7pm`@eQ%4@lO;Fe2-IofO|F(|4>h65400mfci1Fh?~%;du9W6MlU9mp5bqTRUN zMNU_SX&7xr0@uHt$6OS_gZni8=%~y#XhhS?OjX=315K>!YC{HC`(D>F$h@_uZ0OHT z*h*|0r5yf2_=D>^yr{nmEkL?KRE8H$R~X9G^1}A_xI{p)%twLOwRP;i#Ho*c=!?V|3==kZB(gG6J3%?hFNu+e3syD)BwieA@ZP~HI zLT418*jiq8{H|k9;8kA8;SOjBhRIgo0oC1NuYeZP;Hh<5>t-bj~;ip|Z`dm=j>uSq?icjdtYhw$bh zwbtXMM*s&$@62GiKo|ABXYk3#_D8^0!}e8>Fk#&A?R>cmpSJ8mP{Z1piokr;d%HI*_5rg#T3 zLfp=lKqF;+d+zPIW4MrJeUAVD_=ZwyR5;;0XKg$|17SGY8(MS^lqP+_nr&LK$UMmSHE^P+7|QiURu?;fB_e z<~C1DbToU$wh;O7goj_3Wcj16)uwaoGphIej{s(kDqE-J40(JjsI!bqoVg&wHUC;L zd_-}+^CjU;xw(Msf1Mu$h;JO@S@ijqBf!dYPE)-NaTGcxH^2Knpa14A1+nG+GR3oH z{&R7PZ=ZpuRy77=QkBMIJ9Ty%Iigu+jGr2hu9YchJ<;plKr^K*4Cxa}!FuAOH||bF zW>9oC$S=Ji(9FAwVc6uY@Ncm3E!u!!00BHQnQpDXbAn)qM44OPyA^NJ)aEtI7&mckVpzc@!Q`s=fR_v* zJhJ5nCnZLux%4ZCQ^A9zr_(${+^jFFQo((;-|~fOhM3s7*KUmJ z_Ko8sfKRYBg?3Ppa8;xNSdb97|@`{MswnN1Ypzc%3Tbl&$mY3bKJdI zVoUdjGQ@fx#GNE-&+1xLX)l&{JzrV`noFm>N4VsJ@`CFmgY8GlQtb0vl(EwPOeqea z7q2`5M3mX62K?_uAuLI~(mpCJaP@pE`d=qjv%<;^%IKdrSj-ic`v1xSi2U|KxEvjN zrZrPIpFbSW#5uPGZfoUdh_afu=Q}m5w``D)!Szq(O-5a!8AuAlNJd!_kD4NML$J|r zvR#$vFBjJD#SnG*`&;I4ilJcg19B?B$`}-19pppnq?fe*ThS`HTk69?14u{540TH{ zxf{X*Ll%}gTql|T%n?F*Ud^b6!D`ly;=7YTZb|Q)pM5y2Ms!{e+_rnaI#}|~@d$Le zGP>X~(XHXu4Aa(3q@fAhIJP9^;$Yk57Bp8dHK&{1NucMH-HcyborkopT(a9B1_&I! zr>`_0`snXRgfvRH3>v%X{N06MIrw##kC zMpVO`Kcj?3Ce007tr z`3JDIOSDD`bU$2OGp?`O9h^y;Gmw-N_ZA7YoeLvv$x4Gi9f)32y9Z5LkPEXlvQRm- zE3qp9tZP#eXTgC(3x%Gxo2RjP>`f4H#HFLrn_VYAD1Z1&>Yz*mG>1q=7I7`#4DL(K zA*k;{HCx0JZ>UaML&}9vjHk+*Rb$dg>_PYkK)|asMEIucbJNGuB<&Zo09WdsK)ij?SqHox23T|vnhWZ;hd4VHEco+Eprc|tr3!^8fP}KPvP>IP{N}qA1f`=XfxR@>-n$SD^JcX0g(iu{h2N+{cN+H}*?w>~0SL#D zH7t|$E<^`S5go2`)(9&EVN4X|Q;{yjJH(C&A(2DfvLi{<16TPH?Tq~~&=oZe@~runuz z4GfcE@;`4s5RWSaAbC^K2ziy|0;itl-;7BA^mzkq3-Ar(o$$MgcO>@)h&~Yv0i<9v zO$UrWCf}`sc}1Bi;2q)+t?kvj&KI?LVIC0}f4-po7-m~ps5pEC;Bh%!;M=$l3M!ceZLF>!6V5Z@&8AClpCpCC8Bt`3=I~ zrc$#6+oqxi@gJC*754=~om8aR`XIE;ovkgwyp%jpdzQp6Y!0Pi%H2|gZ_K(5ca6+5 zt45%$z#?d-^!psC-~3*IDGFY5OY1ub`m_@JR>ChV4bw;(D6y1VCgk#0oyOM{>c#++5eF6JgWmOk+qi zoDkYHu#VY~hp@WphEv4epFwS^=Y;Ll8u^>tvb9XSHC8^|6^U(0+1?999piNbi6Wj> zd>q^^ByTg-CD|uQ3Z~Lw{^Y!fDr)!7-k(ZD{FLs6s*bTF?j7M1$mbLm_hxMOLKDXr z68FIW?SgL++x)i|7v*LKlZ6-)Y8FettI$(;(U2@cw)GJJJ(|8a*14LQ6>^d_e*{FN zZ{Y&f^q;lV+*!oYWAo0$w^&wvjohSDtOc5A)4S6-PmMZky3j8PFA$N z-ZQK1%i`aOg8iLu66A&ywZ&zAW>g7T)J$GK3EM$V<8_P|TA_U~g|Hy#`KzaSK(BUO z?h)|Q0(g#c(4!exR@Q~kc+xB}r(M1H7(kUPVyw8JT8}O|Z|IxEb)VJiDu~6^=Q$@{ z-b*k6g0PpGybFXK=rA~L=|P%CBG^Nt;&i+Y`UT2UG!F?;cS7h~bwA`wk>#sxKHx&l zhHD@O>02GOjUB8j&#YQOt09b5R72+C!bS5IZ$vS`a){7U72LL8q_I}z zg$Cacs!@7^-|Hp}ZL#gY-6z1yK0XY1+R-R`Q8;^u15E(+k9F#OqR^u2=r zRqWl(`xybnnwMJ-vzlZ|>HxA#y5m_k{_!oc4sL6mhizxo=nJ}{K|*jEB@eu7a0|J$ zU~%tWpN}Ylw^3zoO~e}@x2~T$G2jw2M%YgA*{Bv@v={auz3u(cLecjf7`Q{_@7SQm zr@;74u}%?0l`>dA_NtNEVT7_=A_oka*VYZ`v-(A#D0l0zqOXx~c^ZdAjiKUw1UTTU z>e;Vw{!HFdu3Y3W>-nWDvq{U<^2V)Q`}7n?(=(iO!?$Gixa2GXpM>G$0(GVEZc=}^LjB4)U@_Wk9O=vvT!GrJjRb#|8-@!VMdyJ|Z5raFuz#7egKa13JdbLm}$sMyxpb346&Q z;!MeX=D6^xIGdJOxfv2Idz2Q4(QX1(UaYIx7)yjMYCm3bT*i@G3(gmL zA*l*_pC?zoXsXPQ+;-q4Q}ww?S48Py!*MT5+4)x4qIW;{v=)Pp1lQC8_beECtCq00 zC|)6Ff>=5mxdF{HUV+ZHBrS(8n<6$Rn$p2Rm)XVlk`E=^6(@WZoqV9_+oe_2Iuk_c zX5ljAC&Me1X4)iO0LpGP(~J!1fijgKqDcn?L$9g#<^?!@ExVi3^gUVkm!eO*m|#Fy zDR(q<)=ag#p*ISYPria{SL^G1Rf*O5DzQN}E^)4fm(sJUscr7obeR6FraI%=!36%I z9X4@nX^CsP3hILP^D_?n3iBu!G*R&^K(c`;X#+Vlo1c^r!&`+mVvLB$bH+!&`p88| zu>B(-y49&Fd1L>nFL!KhlLB`SR)_$aYy=dPEKY#?A@MERt6X@#{(OEcl0-JroN|^I zHB`FSSUA(Pn&mY4?-;#llECUY?k1ON627z4t)pG>`&e_~`{wHZvhPtUQyBcxgtu|_cc zY)i<(5pu1Sz#gp=_WPRmx%c=Wvp66NXaC*>W~JB?GaN)~w(LNim7p+7-g=p`+E%jv z0cC!p`sAnJkT_+}+=hFphi1u})Q9P&-F~=OnMHO0n9qVT-~*B`zVm4e^+x`qt6R23 z7#niGP9x>)(GX|f{m_oKb*%*1xCq3sgm!Yz0 zisn^9dw86?ET8$@bnSgM@NYhX>dw)+u>?V=L3ywHLPuN0vyGaGJTZ!}52ZQIC3K3oM+?#^Ma9sRq% zvZeZ|IVQoOPo_F9+8|pvylpV{f12BLCCrF$XyM%xbEO=DPptl9r2_jO0k!n88)Moh zd^CurfhFP3$(#q*qd#yneNhy6%aMNBhs)gn+S14g76KZmXm<`FNJ7={o`35>sXtQR ztC`d;*?t$#iXm`O#`ms>)_+RA15ed_0*%f)pmaT$C(btFn@Lp?YcBeM zt6^j25%8V;zD4$i6x*`m5x`$}H&J-O7f;VM)qo|8>k>=PnxX1*PR2I-zE~Zr2S4jc z?du3c+hABuSR*A%16O=(1BbXcb|+}fq=HYHf->DsEwTjeW#GELKr=7!58-T&9|4Nh zqpUsO2ogRw3C!B)gN0_@z~p8EC_r% zdF$uy@=PoMfFxb8q)hdMs>4p$psldjuUL z?3ZDW{T(LuqgCE8PeD+X^sH84r^Pg^OOS&wH2mfq76onU2a^RTr$KGw(#%_@J+D36 zJE_YhJo&tdzEu3oaGk3DwkrY#N|p^rI8yKDt7NL{66^LZ7`)x zgJ=Uygd5ELT0c;HFYtwnl!nKZH1`OV>9X;!Bn48s{+-tVeog*iMC=w}|CkbVyA z-D$STF|Xw1h(jyi%M8ogd${gUvM7%8Z4Zb9_ z7i-;?{$3|a#Z{)0!M0!qC6X0Truk%mFlyyNa6R9`1UPxIL=Aaqsg+ zUc)$Bwor>V-!=}GA@whU{`)PIDusR=iO%L*PRQd&Y1dz>rY$nV@w7qUV%jX|{c0o}cEw)yM zrbOd(*YBJoEeMHZzvqW_Zmu%IPowj_yWhyfk|=iG82$O~i6k2&G;i2D1AR9c+F3Sq z4nF1o^}r<(7_8qsaubU3H?MV%TbR{GTkR&eM^GhyKk@Kj!vZe_bsc(@Ov?4l!`I%6 zx<)$x56#mSRkPd-#GzuMPnO}7(8@o50 z#UmaqOO+-)#pAiu@)VQ0+-(5B$fb`4EV!?Q@lz|J#`#?F=v&haufMruwA<`Vyu-Ibhne80!|!4od|nLlcIyP~oVATjMfcjUZSO|- z^4hY=VU03ff2q-%^27+c9{sh#xAEDKIIii2D$@Nm&d8BHWqPXlqK3G)^QoPTX&Tjv z=qG2~mD3caW$ZQ)=^A-^WM>Km(<*{2QDi|+ZvAE?Mu%95fkVLf5fIr}7wo$?*W0UH z@(8d9oS3XaIb>Eu=;0qW62_t0uE#- z4Nx|`@Y%q91jO7%+~vmX`qm#LUpu07H^&&PC&wiKn3ut?CS|1V-%YhkJ8c4`ohJ`c z^ND+8((Gl$+1vya`yqbG`e|E33CFAnS4(^ERh!YUip+Tb81wX`i~vG)Ya6FuV*)%N zKw4gd*uL3p>y4XCZ=ayF)|qYOc`Qk>Mrs<@OqJDS#YON^aGyx(8dJMOzjx}%_=nk3 zZ>9DyGGi)A7nYVKfUKZxn40#a&H&mQIM==Wtgs8_Dk$%mDcKOGv>iqGfuPPANKwrSaYw5DqT0}O~WKPC@(k9X1 zI?aIkS=`KTC7;xHMk|n=?+a${33xkZeMwI8W~SEfR)fsnN;EsRN=@%3oBK3v`zeJ; z@xcvLV0P053l|R>y~Z(#R-az9C41V8QhZx3N~g6BL@ai$_Dh+)0}on|up#8=Q#PtF z_suD0{(6b&@A|iWYi^A+q6us-x6Cf+H+f$&bzLNPAgE ztEuYBq{X5+lwI>CwDI}2Ylv$p#`6z|sxMMzPzy3(VdFZGy0K7VsQo0>XvY~ap{*{f za^@x^lPj)D!vejm{nL4DSAV|VauI`t zTN$uu3ILzd4E9H6y1IV*mBH&4Yb9nbh{YfgNJD$J;@(Df;AkCxv{GUs-vkk}v~!ZN zzH>H$tL5G!8c;f9$Es3%gKu*$4Qq;TXWq!Xe8agqEE`=(kR9zE*6B%{ zmcB?NW78~8;46mFsc&?wLb6+MrQh0EHnr;4S>)d*4@`Y`$q-BJb(P7Q`lKH(q4g4U zGS*W^v`>pvxJl2xNJp#16&M|9rn%a~q}r_jjY21m**npvkuN}2P}Y;OjX&0Q6q>Nh zhQXXG9U_2&YuR(oW=&F#7Ma(gq;ZIJ7~#M=8RC}k3%x`m?C#L`=Z}o~4BIaO3YJ#V zOYM-4B@G##-{rSZUTfkI*Kc8T@C~ig2+IPN_TfjzPAcPmVW*h*00Bd z-V*F*rpwvTE;QTw$P(YvNjJuCbWyk2Q#%gwSjfXOjTe;*-xW#j)-`e@gehI6=!%lJXF2d^n~nmwNs(RidV0_aw}Y<$mG z>y_+SQEJ-9)e!#cHx6sw@7P!Ix(pfb`B&rfop<3kg{j^G@A@y7 zEY*Q@8Dp1RRvumjqaJ&smM_mxYtHhQu(ml?+`_ZSCZYpG;X*<92!+kq9CX>my#?pf zW2rZR0OC>ZDat=irZu*lHN(%-<5NWh*sTfauTG`NY#6?H*%5{Hd>NM7TUl6f?NDjX za35MIy1;YE?p?TV{x1Am>>51#q-wva_D8d ztOeYwDTJG;rkbD2@#dFS#-@}3T++C%I!bdv$}$gOzIGtG+*l+9vC2JQOT>#{|=(lcX~_!3P!sh^Vcq5GUp*ySgjE3rwmp8knij@Jfy|@hkqo zApO&IM}`$%esh<~pcw|@lS+C9G*yQ1`W>-II>zsxII(w)hE7?nzN%j_5}$phH2_~` zm7$%!Je=60teQh&&TJz5$)cy*w7_9oVwfNeXxb@x|Y>|o}+O1<_W-Ln`;XmoE4_lXyN zSHFC5P7fV=pJ3-Ss=CAe(jJ=RL-5)wn#N^pc*#MKo}&s}P^`$wZ$@EZvU2T8h0pzy zFX{GLj4(Eb>?QokKy7~mShiDoUmD*|4&DTdE=1%~Z8|&k0NIfNhz;C;FB< z{OqM9g=^R4%HGg5pRwTIZ7ePtHl>oI`vgdesQfh91J0M}t>w2I%Jcitzoro8d|OnZ z&RxXdi_hNVW!dts5}5t<$Naut!;L$j_>W2!`fkNQhu9F=2TtOotm&4;;u0PqK@)G8 z6V8`9YxS&g?tc11VeM!opk1VO%pslVyP2;VrH9wAA0UIMZY?#VZS*9`XBN4n1E zX0;Dc4K8{W#a9^Wdv@UHMu|R`^O0@N(zsNsNtBg^HR~1W&z>oco=yAUoPmWZe=Xyi zY`wHzmp`YfhIxU6{eDQfbGD=tI&qz!06E%$ww)$IwRYvyMSTxen)8?uMexQ%!Y>7e!_&D9?ad&%K|NNx zTpLUmw$XEuM*#hbi1=u_@EDq5#}prHbR{=0OJm~ZH)R?De)KZ5NSy?%jhI^rG1D|E zKOxI1{~+luT>6(UQysc|sY`rKG|ssZnO86C+A=&~cTnDl5^i^aavxEqv8$b!og!>1 zNpD#B%E`s>`6&rmw;%f6Op5*+t+jM#?qU;+JN95{2qMjWb0YkTrca~X>9>uL>(6dc`@$7~AZwwPi%)_9dLu2}i z!grRlo(IRviRZa=*qE1?XBD6T(aQaE&Ld-t{7-Jp*vAkVz_>5jEq?jEs0I;;!JrjU z7YN07Fq7WQkSrU+XY7oYKZE}sw{8xt)vc>7xA|6iC8=hQvL~R7@H0sB>tsn8C^^}9wVbPNEh^}LHXQLdMBuK&HoY5N8eyN7|*w*{1Qai zOBkaG3hp&PVx;x9n%5K^roCDl#=HAe9^(s z--U7SW^Y50NgmJN!Xbe1u*K9SPx9JO=<|(Df;yHd`;IW3`ALseHNwMTji~k=xxhRV z<*AL>i?}q+0a|bybNCP~0GllNrvp-Yisxtb%)L!{pOe%e)KL5EHJD@2w9-|12}QcQ zr>eSV8!_Sr7ErBB0*>6;2Y1zM&yJtnrq!RG@q%PGeEJC~%@~u_%%}%7y$`ALRLN?b zLq$tP$JH@bY+3wbd=ZM(hibN%F#+Nw(&c%QU!FoU*mwyiC`IKk+{-c1;n)7Uk z0~wLpd7)$3zG{&M(6m~qy@5bd#3#rOscrj9K4LSQ+Jw@CY%$Lo#HXtY<;$+&t>*D>?5e! zb5rP3hRs2ogX8)M?>ThBu&SII5aB;p74Gf^M!mU={E|Wb#w!C`Rx1hkzJ`ul4C?y* z=0ggm(o|eiX;5Erb-n|%`}avPkSCm^JDGQK2gq0Ch>k!vgq#!*84NItFrae z+SGjlThuc=**cVL4t?YILL1)E71|ekZ*(_`W|Q{2ogWV`UA1rZM+6(sc(@4Bn2N(_e2$h~*jkdhEYZliv91%DJNlvIFtIpM* z;#({OTlqqSuw1wehw*BZz0JwDZ802)!^b@?D@;0=RqGxBstwD<>ByRTY2YP@O-v?b(h#A2 z+s&yVVcM7Fj6WG9JY+#EPwr{s!WHy$wzKBts#?$|*7YbM{MTFBu%Rd~rm9Zq#=OOn z36`5@qL7?mA2dwiWFJ`9=20>ih)bWlFQsV~8ZY=45AXH8njg=4-!Hxof<`Ml@T4DK zf!_n^d3g1e=64&i7}|KD1rPR{=PDJ(*#-wyPi~htD&O`P;sY)owDx?ESO_Qk7pfDO zh?s>e4C?l`gvEEFvY}*A!LYVIA8wmTDWKg4v4{Cw+&2PVtB~T?Th9!W_lsgK@qLU_ zmlk7>K)f>yf&9O!I2I~}+79T-RplRM#HtEM-I`mMhpQyd`G$0TQw~d=mt<3NHmyH8 zFkoEVO>2)12GKV=!_$(OZ(2k3o}34Nq1ml1z|Xz%IUj-8N%m{fW7F-2Y=ooD=&UucLxOmBI5zz^_~Gyhd4K^nJ&t zz5dPdE0-|xb&Pf(i+h0W^o5$0y5~9Z$654{ZHcgtji424j-HQVyPfk0`#ZyBQ$xEo z`j%NK>GFyKO%n@;(M;W*2&9NnOpJe z8^yIlai54ms7UgpK=O(+6`ELu!~Lr%Bp;}*SG4*NLIdZXG&N~N6zDUS^ia_w*dX~$ z!dE_j|2%o@U(8A=l`nxPpx`LBc8I3DLx!I-dw$Y%i4;5KsO?I!1!=mCTd&Fm+ZaPj z)tGGBir@1halSP!S>_9jn3$!*r8COChUNsjop>9?_&y9pDt&ZUxxY#ng;lh(?0GSO z|2OM)Kpr4B$;LpNlI1_qpGpj5gGpe#37KjIPT2uYCXwLHeIZoVOGsq3Wi#CtPQj<&VZ|fK4 zsRs%~;pQgBzhHe%+z?au--{2Eyg2uZjAhpNMRa`vrKz6)C`rm2I5%mVmrZ>dk+Ohx z(JjLG$-dlC+%@wz&yM>{n!^GWfn|2AvF>FN=T?#|&$Pf#Ldx<`CcBX@!;dIpStCVg zxcO{80`OB(X`-V>g*SLY{|uRIp-*sii40b!v5{0J%+w_MOiy8sPn zmXy7d6H~p&*|U-KcjAL87e~qQi%eY{NMYo3Folft5yMgrk(4saU_|VAVkv>AmSD-NZx;?H~LY95-g?Zwph7o+rHISchnAnT8-1svIV7f{CRh z^ALwS{M+lm-i_5CRGTL}yD|15E8fv&b8;_UZ&7R72Vo&9ewvyfOf>3Xwz1{f;?O3E zo~ZX-vA#yyvJK*(-Dgv?RGA9!c~Gu?J=Jfi?&TT6yN0b<9!-`=;sq;^fl!} z#l7ZkT%+JbX0v>_@CA?|VsJCXj@KyIVm=Dbe)jX<)hR!&AqZ=NGIPQ!3C;*I+SYz= z>x!aN0vQ;?NQ=LTn!ZlUT%z)(x;s!#EB9fUgJ-QKL85%iv-~dOPVBF;PpO52J9+?9 z0$?BTqlc`ShQ{B=;rXk(FM>LKMWz$yjetujT~>+8le6SQX{L%==9t|*MgY)!pt7KQ zHy5n-&9xA8YP=MbEddxGkz6PY@6+3z-xcOm_j#)z!}>rFq5GHJo?x#T$CgpV>0t3J_SMX5nkF7y^9O<^u!ON(_3=({&mt8TQUK#>ivDrF;g)b<$b>Iy;;3b zkfP^p@36*=(Au=?Q=re?!j~t^X5qP#mL0=A+rdfy6zhg3_o`;OK7xv;?d^pURl?CYv%eyLX4 zJ4}7i1?SxnsaG5UrpHnam1 zTCtnH@gR0j0eeWf9Vl?%b1Pl9plmv%aOgCavZu01Aj44m?u$)Q=iK+q0+PAwN1fjh zKGd4n6m=(fH4Hb;vDv`|L6g+vxl%aEz^wE_~Cnf z86#?i5~@EDkAU}0)X}YVsbarTjaY0%Uy*@+TdQO~Pprvg41m?NNa0)^)Aw3X-IL7( zu;zm9-qwpO<+j70Q#b6_r!areo*mk?v`KhD+ibWvVthoyA8u5C?3Q7r{*c8TL>`L| zG?{5|@>gxQbSg#!nT)E*1ML|kZ4-70S=U7Nt;V+SZ1=!0l)}d7+3RMm4BW2*Oy{6bfQ)LKx-$F$QI7!^t`ZQ<2QA zMphx~YPb~z-fsNbiLsI4p0%OO09U4M*{JVJ*lScMt2AWd=$=TSLJRq!NHi_gcl+d&d`UXftgjsOQ{x!)cBX0jbfzz9P^&+V|t5m zQ-~!s%*3k_5YO1zzG3dLU>}CIU(6+2lrrpyh%H%aUo8aK zq@}f?@e|NQ`p&7sV^)FahMD0c)R6Q0Urx<-O`!Vck0*&(C=#GERtyv$_M}~P8}dbA!DeNVav_@ZsIqm zVuFbL2p4b&f&mxp>w4m_ZU6iTFZU{Qk|DNTKyPRaM)yscn9U*OE2(h9{T_qor0SZ* zRdfm6py18DFrf-kBY3-U&KF@dhgC0JC*FBEpe>%{AKfuQE}?>NlKBd+G1k|tYb*H3 z1LV5kblH_(U(`(tagm>MUzmv-OTMGAGu!6p;r_n$I|cII)i8uBcRqm51Fq98L(&Q> zocors5b0DYq}m|^T>RJ!de)z&wZhrPk*I3+D~Hi3OsYjI40vFHQh)c9#PnJ5dWdKR zF@MG8Ps77E+Ex>$fM!i0%84LRF(M17K8zco`*wo;C#njE^Vkf6!5Ocl)##Sm3jMK^ zv=IoLTOG=icMHLA$Gz-_~bR z3h@I4(=a&5i%IO$g8Ta|~>cRTF@ zwS?R)^`2*W?vw&T;oF-2oV%piGA3Cn)Q}n|U$kEc>?HPOdg-smPTpzlJDo14QJ)gE z<{=@Sx+LU#_x^+Da*e+BG*)gbZaSbGwK^L?Q_eIg62FWs8Dh{H^y*v<;RAh;)R>og zX}iw1?8K6)#!G~>uIpprqunn>Pnar?0jI8xQw4=D+y}!Jx-G0>mtB3T{_L!AYky4t znA#hE(|&7M3>uqj*y8N$b>+pTwM~ql!^Cyj zXs>vAam%FJw@n#3f+l6ePI{L!mtBMn-o(}AP2I$l()1AB`2}ph3&v@a>_;W}l`7$%!#`J*o zlhCnfH)v;ajFTKm`B|T$$11^P`Z^sKuddu12j?oIeZ0=Gng}hGeSVm|b^j>kGhhgN z@{#qcqyKKPm^Co$WSVh)y;hR*qY?)Zr%zwl;vA~rWw!1$E(m|4LV{W>Gx>S=k;?%zc`^N|L~^IRW6F^W8;#yk8k3QIN)O={!4Mj zVU9WOp_#3HndX@0#Pp;BDOWm}v^9N=CjNF8^Pw$8NDO^&&T#LIH3Iw$(5P217Y``s>@QJ+eG*9%%ztWY5moyhkx5Y zv~~Bs%{ca~qB>||uZi7g8^qHV@41?A*l-CDzcRpmK`DK%Mor3jlPKf156tMK!2A+p zzu4+kI&E9E@Apl@`v;hyM!0o&B1MoCoO{Bh)1P)5R6zxt;58z0W1=NR3U4N}UZU4h*nj8cZdt`>JGc`IbpBnS5igf|6Q7#gyYR)C`Rzc5Og=VHTkKQ zciBg}Zi$OkSWt6|k~?{!w^>jftu=QM9R?A=$W|m=V(x9Ke*U;}HCJ}B&sT&MWulId zjsruMBR8UmztS*XJf+kMtAHeM3if~(b-`a@zBU2V?z%ihqaMyzOM}R%+>|-%AwL*6 zT84CPddF(|*chr@Ks@+Gz$m&K?eJaY{3+C;$H%6%dEwrQi`#K`TAFu_pZP;5jmA~@ z&N(>iEdn$5Kv!tu%R2t0|1#IAXuqfo8Kn0_+#JM>bpFqKN33mSN>kd? zjS6?GI>*jJY|9;Sp)2n{$fpdlKfJ05qn!RqthP@XCt<$4g|Mek*oOLRk*CbRVpSkR zwwq1i5qVluwNhN&uoGUq0Oxs2I%=hWIu@I%A%aixUV2)}W|NOfrlDl*K&`^eZrU&~ z)w3Z%nF*pA@N3L9QTci1c>j&!C0+?ff<`>`bzf{16i z4t){*J6v^Q-RyNvuU5F24X0eG26Hxa#GtT z#H+RCC5~4vj!yhl!EH6OR12sWtc)`A(s`1Gc+k+M^;d)jbYN`Z zi-Dq$$E(iE3>uI*6sjA;KHJt-t*1x(Z!ZlH7_fJz z6|`hQC~F%}{}jtKYGykS6Jm0pH7?54D4z}x2Yg6gv_cQl75$9-!vNDVQVQ z0Xdmyr?ddEDv@q7CZ(0h-hva|8!cQy9rNf7i$4onvj2m&vwmvp55GJVFYfME+}%nk zl2V|!TXA={0>#~n7uP^>cXtmi3GN9k5DMk9+1Z)>2X?=cx%vIh&E&c7^PKZKqdypW zp~c^PD6ei(d&x7R+S`AiOd3{jeh<$`Jf(T0{Jn0pzZS~!@^RfeHdqb_KQ&twp0Q8I zII&2 zgR^l-A_t}i-(a%$HNrLIY*V5fItKSJ%&D9Rzco2hRXgykCk?@vYNxSYiCu`RDAHob zf-g=0wB>0tLNqM`Q|zmGNV2VyI?qK1VNUz;Q;;5dqK$lP3hp1o72COEZPUEIV?w!~ z??!uFk}5bmr=zAC>>y&-7%(Y_wU{2&O)t!0-C6ol)$*5m{7{-**nme{CV`C|!#A(N ziTo%AJCYho+mp1~h_k3@QQx}qdZ!49sv#;S>u}wM0y;FF`7wGM>U+vgDG$wE<0iGI zL6Rl@#FM^f16WmfFV?dJ+)W+&8V5FY8Z{GW>5tJym=KpQE&)EBK7!FULKDoRUk#v| zUzDy$b3yNyB{jWTkm!>i7E)|1-X1Ht223jSTu+>4iJ|Ou(M=AMZwe-(0O{FE&_-S zo?U(Ti+Yh(V>){1<-73nzHt%mhN0DmXTJj#5GesX&yV4XVx8KP*`aP70 zn(a7nTjRZsGid=gj&|9K3R#>oT&0qlL$;*qcSD3&Ox?28V0xc44Z$)aJ)?rzN1~>! zGLj|(HSrni46OyK^3F#fwIL)~pg_M+J-$Y?R%oS0b66~b)A-y8HBLCK?8;)>#F~aK zW~)a=8!}&2Z@Q~`$b&!9eMCNQ-4*vIA;^$6!KOgNHSV3)6i-j~kjuuH$76T2zkIks zhZd!vg6*$y?GaWRlKuN89aDf4yVXw^`%p2Kf2(RuuoNsgby1a>(5_*B`@F;V0>DWz z$27rCNNgJ1@nh;ooSn0Hqv-0+f)gfwWjrc{bns^$O45tgRn2J5t0| zG7Hj4KUA}%d!z#z!o7Vvy|@Qm-JFr65Fhb3^$I1%j8k7UmOE>#R{}Fnk_BfzW`D(I zd{b}cA3`J;1nKdxLe|AOqC_Kj2v2Q zIc`|f$&?Z~$w#8;`3I+@G{Vhs-@5GP)d-C<6^0Mh!H^C`&`Yyb>&))5Z{moi(4mM6-rF{FR_KtWDIPfXrPj$(6Na-3#i10>VqZ(ZG zaL)W-Y^<<#s?sTxV6}Ku((!!V$?snsNhL+Oe?_|kX&x3+LYA}AGVOF1uh5k=DU8l7 zBG5Gl%!8tnd^wg^v6S`alHG6Bdn}nTAx>9)gE@_bv!cBTv246qtE+{ke0OG8b`Iv| zs|P@%b9qZ@TB(l6veoL<0V+oKKgMnOhwFM+6-wlz^d0Sw8~?Xw*e1*ziia}s*s&)A z*Dc#|C}M^oGSpx|Q5dN*@HS|)r|WH{by|hz!{k?kLB>x~H_Srd;22k(!1Z#(9)MCL z8s3Z0PV|;t*xvInrE{%jjWIPsp5;Bk{8F-G?1jbr?_}tmxNW={NzIo?T)@aq`{|F-t8!1}2HX%A@So+f zW*B>nh^dwOVlZj7y^(Hv?!O#6wBDsT-`YiUli4?vzA`Q4>C-n>4!KIhv-;B_ru5*d z5$y8CV0p0d0+G|hq5=;*{|mp7g8Os>2uR|{GEF8hIsC;lkpzE0$2C;azjnraMWh%l z_JxZq!#>;H$l-2!srRdL*0Nq!?n&Yl_jhGx!6-)cDSDZ^=RUO;tKl2k|TJzIfozo5AC;$HSf`|moy29gl)jY2tknTk}! zu3KoqUz{%arQetLJ$UF34wp7vq&cRB&m^wp2Zehv5Zr~-&02s)3hLKZ{k_Z$Y_$f( zWG>Hsb+t)<%rpdB3F^M}EMyI!9c^D>ktz}tzco}c{229Kq=&8rcgMilA~~y2EWKea zJpTUc(W9&emX`PNJKgAVe$&tN$gx0wx1%@(p)>|(tMbt+!-(M0A=KYDutG|Hxvo@4I7O8ZdPqHM#~ zKlF-tXOtQXvt#_;NpA!Vaht$*#9OEQ3nB?4YS?Y({vImwdn1{BaM*0#@wA4Qq)dy$ zZ1!1oq?n-f7b%};N54~P&bTZ^54FmBk984f#Xw5ih7CSW;&cdZAVyTMpX|>m(!(q_ zlXWt>cEcZ_R+AF;M;eM`^3gAm-j#V*psJ<3awC}o2MdE8!j0c1Sz~Rrlk$V7B^66Y z`Yq&yyTswkt$${&ss4sF?UU-cq7d%&UASix3g@RQj|)HLF|;fl_!u6#be%bMLW?@N z*;S>=iM+yZP5$l2+z8)=P6+tt7x>m@sBt4n$9wku<4W&NmZSmh3XE%2@w!%ZY4GOy z*|N3j;wEPO5m^8+FoMQlzx4Xi&q>sdw7UnNJ< zMme5$7mk%r!_;Au13p=?%x6x&TH$3783`*jfJw4LX+os0+&NX_NTJQ1H*#I(4pc44~v!p*4 z#64jm4DYJ6rE6VBCPAJcV(ZQZNu+)$B^&g|#iGOm=Y<5*-z{>!`R#^7jh2y|)T?Z9 zqoUVs^UGecC~Ql$1UgtqpU$<`PXIssn4-QaO9>x;s&6$7^lxAo;J(TWd2yT}nU9o+ zjj_qF-%qL+bH>~YgW#iI?9udOFTbuG`kR#1P;d?&ME+p_3Fv7KAx!LR&cfFswkgI+ zt+FxQi*3bN7ZKy%C>rs1J5EQnV zLYa-1<*iTh0(4hD1O{LnjD{iG;6mVcI<^FzWogrYC170N?vs{=>SYM?owv=`RY>V+8_?xyVN)c@)wU3yw1f-@M5)KwHgo z+%s?JRu~>aM<}G4pAPCVr5;QCZsMTzS#Z7+#|k4IPo6f}9g8vIAEo&`eoU|e5Uyd^ z2E&hOqjdJc=0Hu=AUxJsgvwK*(nMgP5;*<2d_dTwBNEO-S(;b+XH?wz>3P+ zvk$v=Hv!*qP+r)@B^Z)6899U~mz{J%BQ!rp+q*KVCIo01lz%xp8_LSO!(@)&_%j<3 z|L*6T|B-79CYJcZa{#U^CcgCD@_QIBL(i~abEeMk%6E4ENt12$WRVeWG7;M^7fcH+ zPM{y$V}uH5;)TK*kl{j^ZAn8sjjgf@yR_xV@ijP!5*FG#c)H4i_r^V%CL z&y2kPwl@Zl0xOzt(+%;E=vRxr;Q_(^AQzmozk0OU#Nn+}%G$iPfkI zM=SNG9yNQ{xzwv$HB{s1ml`W9g*}tY18i_jctco`w3e;()+&)cvp1oK!QyFTG%(H7 zZ|D}0U>w#s{3pZ9d)mC>-Rz^Lbw|F<3M@dCPG@|5<^ZSl%^l^ z$(@8wnWyd6N}_qD-8(1g+Wv;&=@sGQtl8OY*BsdXpbAKmvy%E-wgT+cz#VUBbbVHk z!=OcTfLH0O_WS@M?4sE7YQYFH!69|E&0Nl@vPcic+ZNi9U>P-UVa|gYB zs6P2&q6|Iq(3#}gyT@BpMV*S0tFSX0rshO<5|z~T1_Er*`^`9SnqapIqusMQa2mf z8aSh#28eCQ+$1^Kyy8uHXS6^*6y8br8l3|JT`s@2x5v!@)RcpoQwLOo%We?ReZGv~ zvtj!(uz}6sxUUOu>3#X#6|>$~jOGlpp~herD8|q(nK@=Ky6);dSJY;$|BPk}oy(53 z-E@0|{B!KU9>Udf7r%D8KF8Er9{=Trg}x;wv3%vA7v{HB;_^wGwy-E0I+H~|!8#(B z*(LrZ)=X_QMrZt!N$9*ecAFfUnSX~OJOMbpWm;zHxD~9qJr`E_^gcf-8_R5mBL$V< zrlRQ%<5KrOBs=3U%3x<$PW)*|uqiy5hmx1OjmOXks_5}BWB&qD-f7U|V71x9)W_U> zkBvul``{0Mf~1f-dcxE9u6gOkPmOxl?xnKrPvV6$a|Chcm^-82lc3v<(75O^p9uVj zTg}>OnERTrkN>AQhWu}R8XW&)&pKOEtjWHA%$R5$Sx%X;gxi@*4WPX%SINaJyNxE;FYOe^{E~=VI{)xO@6E#;im*ewNm7 zE2{nbBn`$6ZVu*N2_^SW7?NezZSBwbvg+zRK&a@P^Z2p5tX13Sv(+}C!9yLA?+r71 z^6kifNcjID*#>nofr6}Ar!-T66KZnUpMRb2VL;Ng`hhF*)A6tDn1D|j`l38X$ z;Fq62<4V^=RD-PS+-i0eQ3yT*ggA-tBIkc-RHy4=mUthMv^9g+ZPNV$A4TGR-mhh{r=&dXo=&I4p&@ zm563XJUElDW+}?$-|LRT7AEpdu|F=oFhhrgRg^MqZ2Mc5MMv-syNH%8v*LxmNb|c4b2#5T$HG8-%&EX+}ukC>_9(_j4U9 zu?5n?+vcf+CsB)b+Ub_TmOw+=G?TZqdZu@Rfu?$2@1nIo<0dGpv%GcwnEqyx`uOrw z{dG5W_%})0+$6*9#nwaDaf{T*sR|*y;mYi}OsJ48}KQIN$l_t?hFI$aovNLBJ17K84{ZgwS6 zu_VU`#b)P<%|@V4LyQUB1I9HXxmFzAw*ThR*C@HnoBPV;q$!Q=Mr%mt1LnUI$V_X4 z`~qdeZv=*@<@+8B2rmT^78gpscmtwrpqt;i_E9aNQFx59YU8C$Jr!^zq6N08gSd7s z<#}-G7id)D7+vv6U1dyHE!yNETtT!#=BvX0=(Qz_id}rT^*VsAiz1_+Mp>dokFh9N zH5dx4AvIW<(bSRJIEwvbcs#DI%5^( ze1Czqt*!T+;c?amCsX)pHUmB|kUI?1@>jMLZ5U)B;?JB;B(ni_?ky$r5z48tA`4ox zggo2*DFcCCceSlh8OsXm_^D6nP#o64Nki%NGNXqiNtr;|V{dx}fD~gV z#R74AOxebQ?H1QlsuC+QNxdSs>IUK)2$R?43LRv5y6C!@~n{3Tn ze=+wv751-IqDFUG!S5S5Pe;kMMQ?>)eT>wM9LUi>Xn=ZY)cxzk+-5J6q^P!j38n8@ zGG7{$W9GZNDt=fOl7kh`mtiv(A&VS<8fsN@nLpP17~ypgi6%9^M7>v z)5x{N9zB011Nv~f+yl5br8`+6Ykuc0BVhKborDPawl{POag6_^3wJwo0!m@t6?4(> zi}dyO}rRQO5lxm3UTJJDRTT@8Zt5L zgvSaxz2G9N5yGU?nDxm&Tmj(DOkpij_BMy9;Ki|~e32o1f(<(ke)I~et{=7%35aK& zUZGy5m-hQ^stId%tm4Ecq0U7@Z_J=$U91y84fKc$opo0uG6hiL0d=6O<#DgmHKBS7 z?|VFWnrtK>o!jFI0;tOh5K)8PF5@8KuL9z}2OQ5%$?RD5Y+Iu19)PqevH5 zztG%!w@Mv>PhF&13%Y(LB5JIwo^L3;OgSAtofpLq>s0Z6TIx%j=q> zq>~!xXv!E`anv-Z_}y~;Nc`;qW-6|EY{DGe=)ya>HWD&i!<70Z`ZwhbGvJ9CXfF(F zYdCi1KO!8$*y{cJhdH4_QZNikd1JnzUT833+OJ#!&mSR^qy9)nm7T(t)nH<(QI%gK z?^G!IfO!<);)X~>nZB)8x9Y^0=d7==wcp^I8Xyj(@lOB`#NG7rL6Su38!fPz5~BfM zEi=<7h$tyMF=cn7cd#?EmmxK-7c=F!se<6GLH6m2hndWLy z>|F42HgSR$j)3+Ix`>U_5wC^{yin!ZLGQ45bJT)ji?rW>PlDVVJGrGMv)R9V-5!}O zR|%sZ`zld+z7}L3qNA5b&o!S!O#?cOkY$2*fI$u26Hz`6JSGPkSjY!m?+2ee$2av& zs>K-&zA0g%TA55H`ilVS#_P%!TQ&UrJgWER!UC89GP6nC$?B>?G#O8MZ+PD02R4z< z4K>*MXadgoGK%DXGUJujvp92Vu*=lYIwn1EXeHL*V4-?q)~UH&e|GYtt;SGSdG2|T zKunz2i%|4@6}TJBr@VKG=3lOlUp^nY%EmlCgt8^_E**LA`fqOe#b4K+D)~AG@+MOw zlLq*4;t~JrcW;I}eDr|=Mnc-UYy6FrhwZg~qJ86FIoLy~9rRCyRa+6ngq!(i+-B!{ z3@k>lzw(o4uW;^+UL?FUWj&7zK@8x5-X;gj*g%TkUZgrw*}Qx;V2_G?gLxK$-{!0> z@!@~qJc^G1k2$cx5mYq7KPlw!7_ca?+TkyIQY)7^)|5-F;lF}W-a`j^%MAZK@G7t2 zdtF`13$fRCleSIiW5bw-;b{)ZDs`&4ff||AUVu z`TP3%iagq&ZV^c;bA3Fm{0K_wh|JIt)fDJjnzgbAzF@lYXYypllILHUNH?WrqOT$5 zj^rPV^pG=@!XD^Cq%?kz+^Cw~#RD?&oEL4`4kcss#pxSu91H6iW{<>zY^nD4P^Dn=N$Z2UgQAv2^!D1VT$>igF+;EVu2HPrbW z6eF2Uxq+WOAMSR>UuMfmeLhI>Px{g7WSXaT|o(`MDm>t3gK*rXC|;HB-g7L7YO6+dG!gXbvkP-Ng?WJ`*{RyXfI_;V9{h*qPd zs7s-#!zLjbU0py=m$vxaL-hiRF7&%_xIAr*{lW#iu6ZDH1%A_)GFOqi8f5 zNG1a^24#(yP0hFv!^2O|&h+F=njoM$smbj};@c&EBxfrT znpy+rH<8&oJ-NTm*YgUmBwh0zc;@D26L9#4qxSTzqI5N8kg zjOT=Uwc!n~5-4@MCDRTtL8w(!SLz*|=J;{EsDzP_Ds%=s_8(HpBejd$XvLo}{7;?4 z@|X;JW{k`NP}H}F87H$Ok<^4I?STWEKgpK5ID4OM`)Im#&Oy44brmZ;(l|knU4+}_ z7wvjQUK8^t+$PB?R~SDV)c->oUC&u@R^p6IZY!2~=}0*~I#}|+?08=*IA>PGPOsJX zL|f|quH1fm-_<5Dc-EuDO6xp#Va{2_x4GGSFLK!Rq3u&Ip7D z9hWWTOXO($d+IxkKGuoYBDdY)-9Sj!WZ4@Ap$JFK0GqGnQ%pJI9_H#TR5zlT^@%c> zd_mM)(urczCrxcB1j_cJEV;5-^G>0>R^42F;~_F!*~Qw~c6&E~Msn)Hajwnfz(mnwJS!BYFd`Pho>&R>HuRb}d9Y z)#2QS8E10MV1@_>&uIyPffo(7hb?^9NcmIz7T6fA^XazMQS6uDd*&3WBW01=`ejYg44vG>&yZW`XsW z>YhGY4)X=q+Hx0C>wo41LGrdMxz=|#MZP+}t@&Fu(YAcQhw8J3;?vQ)2QOGLN^_mTqoNK{py0Hha(6 z2^z{sH8I|IiIDfm=$-!|k-x4KiLQSR+d$EbfRNio>ViZ7J~HaNvEygf7OC6)NdJxq zCfHpz4xWzkB(mkx0XG^fpzo3_Tog}APKC1%XVyfnb2PPQ89Q7ivxY?<41e4KWB`ai zL5rCV-;wy6Yww+;3jaDgRkaG=oHN{-mufbaxhJ&RklPZz`HoNU7q&jnMr=w$x!$FR&N_S6mzwR7eJ4m|(E;2W#IgeJ6b87 zo_0ap2Fu*kUkH*){F0)~LiU91eKn|0ChZSim1VuZ0+>9W??ti7?RW%oh31QVHCRg(dqIw}+mx=$- zg3N~oq9rH3w}ps7Vv=}%F1H3@ZvEXbo34@BzWz5Efs&KiLKyii5-s-|P0zam!7+%C zWKPqm!jNP=sQnRr`haJMPFvWT>*&DZ@uW{*`Cpz$RC7nm>WgxzLnv$i#HKg(`4(6E z6esHU#vGLF1D5)#2z4R4f0+FOFUIXf#y#e7W^BoT{Gha2jqLNJO}Bgsig}Ol_?uTk z`#Y0hQP@O+4=ve+Q@9)N?k6YFtXw@Tz_ak&U47HsLjViXtw4kl0pLg9LP@r<1~$Ee zrZMbw0GJ{NClB!f2l%*1eS*$s)WN&=jS!5o$yFfFamJSwtKVbC ze|rI1zbHWIqouvTNAN;u89r3$>#MBoo#yLfaT5Q#cr-_-z9_R# zfj3-rl)*i*)5U>}jD|`Y=>1u++h|7EY0Qh7SX?hcO2KSQ3g)rR%bGFXqF@|IoFn07 z?GPuJ%7s`9yi06Q8Y;a1EyR+*5rg6Dk^EFyxFAKVWZ+=z-;_@RrRqx=tFb&7hzg~G z>Lu8CAyk2U|F(aD0lblvqAkEyRf_jhWV5O>zkJ;{hAYME8lwgXg?TvX$sGH!KtSQN z$#8i9}{f-w6I5P}oObi>Qt+8a))C96Z-yA*pF)4i~+@H74bYT(FTD{U9 zuDNKvF@{$`v2~$ES>%b*tTjf605`do@E4~%3o9DW#9}5eCcYcL32g(CbA-yZ7on(AG=wshtg_?afGsIpIa5|35 ztke#V3f-bIP$nL7;n^W0e*@XVUXP+W5wFnFQvq2qXq7iCBJm_m7zrOs7)^-Edb8Sn z(zjh0zC1_Vb2J@uCzN!RAHKYNc)bo}QQ^%{iD%mbsVjL_qtG{ z()nV1lf|01d~@|t_v^Q2VO)N-?E>ML;~6-6Y_LEhT+Xx$5zY7R`twg|u6+)*EG;cn zo<=ZL9tR5tlOa{U#?!gj&cQHO9?xA|gwt5%v|w$6`$y7zuP(g)bG)ce&52ZvMZlv# z=(Kh^2lfZ_#a!9pZoaEUg1A?6F9ULw>__u%i_Yx2(GQ6<7VJ3yLAeiw!}Tu^!|zw z#HJOfeFXPt*xIJ9#3R9pj9<+dXWM)*9?7KTcdR&#Z!>NkB`4yvqV{jp((xQEd@ATo zyp@d+&sp#Od?Jwv4FWCuX9HZIDchA!OwfOgeD3ahmDM!{`ELi;bExj$iI)BYnKpQn z?Xh)r5C3tO|<9dxv}g%G0Cqc~YAT9E^YUb%dsKdJPIiR_~LfCepFqeBK9o3-}LHBB8~| z-h;7gKBr`)I(=Fh)lz!z>2cqvjWtGk{@jwbppEgVtS9cKc#D7Uy^(~(gyWD?yKxIm zdfEc%2wy@{uT*J%$7hh@LXu6o>83Qj(H{X5RV7EB8#QjGD(@7x=FUXL*<1!)L!WS( zXNC1#|FF^ShmLB6^0UB@ld>QQCN3v~JVWb2mTN`SB4la2h>TaFiQfx_U9=jr_56x% zudSK|TG5G75ueohTm$idHMQ)81s-`bvV8HXSOfwiq1Wo-Jm;zjR1caEdRB0B^#Njxa9&v~^-5Ke=!J~YU4W!&NQwj%)aAu#BDF&2 zx(i&yBdLyHt6x?z*Ki1~$z2nbrCv{&Lo>3L2o0HDwDVaHgTg+i(O^^_y zTeJ1X)4o-{3Wo+>wyz7!MdcaBh+d=@=K=f|8}vRO+|_n%;~fLDit;_3*N-q^^(8sz zr~Jn~B?_G#qfM_c1QxiL*uhahWxshmgq zrFnU@_a9ij5kF6OzP9Rvuu1=4GjoX zMDCS}4-g1;Qs`r(ESvec9-W+M&Z7~iq}oBUJW{K>siR*jWB2^AHh81U-v*NeH&?K8 zijMG*R@(&j@KeMkXp}s!KD8>%g>`oJRR<}(>8CW4r;08TPLV{tqncRB_V*zT;!v}g z0&ZRjP7i$`lO8zc&{*`ZTjrh)EP~T|S(D{S3AsMM>uhPJ0>j&`qGs|<<4Bd8X4Z@2 zizv#C;6GgRh+&l;8#T3suhD3IOL1)JgVs1HMhRE+!!xGdzQtFtFAG&@64*l(UJU`J zS<4do%dtiumBzhg|qL`(}No zkv>ip(Kq7`x`)Zv+GmX6(xrpjM}1$t`z}w6?VH5$2j> zLv?xWNv45f2k!QxaC4K_@#1#ZGH8`S8&o6Z*18k=Z%Ebu#ya?i4pMc4h7ASg=}%

)3q``SFcx~j`SpMGG4>4cYqA4N9hmm|UA-z!aZK6cRvgFn*$ z&r4*NNhw`f=ObF~j{_vhbf@1b4_E&hSU|3gp@eXHk5<9}zZ~9jW|p|Z3;aFqq&wo_ zI#)_xZSv;O9l6%sfp5|>KG4VEymDsK-b9w4?=q0mvMd+hnPe11yVSJBnX-<{7%I4964I$~S& zrm5c<{~D}s2yq;G0XiYr-vgtu*_4QI_DARq2vfHigo?5D4EW*Tqv%(bQOs#m4c9 zDuBV2M$@Yy8+U4J+?otsX?_olyt)ZD!8kF2h*aJXp$&c=)#_?<7OcQl_Tpiln&;fn zEU+RuJCN$u%}SuC^2*C1s@ulx8dG+&ZdOm=B2luSY%0LH^DuIur-|3;*qbiE9mOe% z$eOc>{=EFJjORnJ>gu2Ox5xgr;=wXhY2VSOMLK+w0y(AArrv2LQsQ^XsyYz$HWqzb zZw_6)Q`x8JwWD_3bgJLo`eU9C`kNiW zkS%w!N%vw&23W0v_Og6vVRjk^66Q(j6z=bNE&7$ z=8~tL!?bEY?~&K$Lh`6RVr56HDt*&59{+zrTxz;sG?2VZV}?~Zc>CGlMtdSX4yW`jb*r(Jgr{WVLrNx|!^9U%*eGomO#s=;|*Vu^YyusPGhtAy;QrqWQ ze;)tqlpxam%(tbE>YBe~Z9%Dx`Z8KNAa`gU7e@5T?kJ}JDhM;H3BjGc7WUOLRRMtp z(?2Ls3lRRCf0Haum$e%l3Quc%v4WS?Tm}|Grm8kSKjc{puuU$LGWs2|d-X3GPR-DG zBkTJ6{CeAo{a25;#_QU%AiUeL9#lWpvXT~h2m05zbvP)2UWiEUV$no~)NDmDn~Cn*B|z+dnz)Wtyg^XE$+3-;wXGB&Bo} zP+_d(H3*FQHFd6c@C&6)jEhG2?rAmf2cVKn8tAZf9wAWJ)<~P4?4gaBL-D3$_TJt` zAo3)w@WBEdsfwqGxxya!OBzzJguGQ%aBD!zJ9`|Z<6TR>Lc;QP+uxIm^L4I(2u;Uy z{<96GQgLUZM3qUplOP16Clx7Zt*+CIonbY5=@<1kphi}8p`oYBMX227zCBe~WH7m# zn`fSD@lPW&maA~9{-SfV(F`^uy|=6eC^$#P5$XVx(dmA7`Nqnyj#py;l%ZFu#a?|k zh~2;v4{L`{vjKC2a!?%0WY*@7cS@fdhO%*gGaN0$l&_A<{Xbl{@sap<@2f!{%D9t$ znhEo8cLUqk(p-sz!B%%iu}!w%Vv8N!hh@8{#F?9?MmMto&}n8c6*SRI5S|O3Lw}vV zfehbjx5wYRlsd4Go#+w~kQb3;6zv9_n^hd{s%n9PwQEc-I>=Ily(kE|%kiB^Ji@7z zk?HxeYvb!Wjmd*BF>!E+zO+!L(?4v_}zrDYW+GB%;7K6>1NB_Qv3Z5C|?{69ZDChIe7;l=b zo-BX!;oa9y>EDrisGX)Q*Za{oT6WbS`!r5mB+iPti!R=`tr9fI;yuOF6YL&wPlMZu zX^#67<|x_70S@4OGSeLuQQq93>XGBY5jiOnWun}yPU?>yq%s?P^Ib-(7j*?-0saRy zxy#iOR8P^9aLT6aCuR9dvrVY_p)Nct$PzJViQ&F#A;EksM#(8YK0-_*$8&Vt6`9dv zz2CEt>QK{Gq4g)VPDUv)ubBRq0MIKXqUuQvy{w#PyP<+H{$ui?hi<%+ogS*v7jl5? z-wyHVBwV+{oUIq!2E}s!_3=mpPiCx4UYgrwt2E7bM1gp&fzf-0pd zle`iP*q#8Edy$J`+_nK^N2tA|+^E!8Th544bzgJQF(o)}ZJN@;vv$;(qhFYTxuw$= z1t~4N{3Q1yd-SKg?T%A7^Go?)d>Hl9Z@ z^HZH0m+aky-484l{pc4%cnJ)9EHLQ-QR_e;@8ib$Y^K8PvP{8V=vV#2MUiJT-J(N0 zt=l^O4_}<@JDAJCbiF`5NwyOlYjmRaCRnzlrvD}OYU27&k9 z?r{l~BQ}7$jp}D#bb$PPPpCO~*N=JAt2YTUIlCq?o2Bs6&=qUwM4X$|)0;sve-TTn z;Pn^`uL!Tbl2jo&Ji6CHC0l0 z$NCGeDmu&-m+tAR)x`_K8(DR^RZzim1@26KC8b1GSa803mo~-t6{&+>bf@8THXwbP zb7pto{?#mqUQ98d8hzSqzPvG8CH1c7)8Tn*TFM7S>0LA9MB(yA5b%-=x5`o5aEf|@ zMUceWXKPx12o;f{`e`3Lhzw-b(p(do_5avNS6#*uweNpvHt{S6FV=-tCc%i!TY5Tl zVnz~Nf0>N8jB&S^8&%C=M^dM7&7*d1i6P0_ehCKgV9nB5pvEsk%@cj(V)AAmAM|{4 zewi6f*#uen*MlD2W$|+u^z;UOl+g@TthF#1sMJm7!S{|of<8GZtoEb8OX<;^{Pe_f z=4`4i_3qxg9TfSy3O_gUye@bVk8nHp*l-L;g{Sy$dBq>dGWZK=LsOD`OxaEP;~y^e z&S!H3dIU8xI#nvZeWf56OvS@z&{y{{kECNrmeG~%$Oe)!c#XM}-OZ+BphlX~n6YNL;1CtS z;?;y&FjC6I2b`#76LYjy$^4DpP2q?)d=blGsNZrHM%c@G$Q9MnQ;5lolxRDkHC1EjVfc0UE0r#5i0pcH%&4t@fh#dd zomS;BfX6wwKfUjJH1&)fs=KFvddMeK^BoS<^$julmgKaI{$GyhyZJ4aPe&0Z*GL_00 zqC++B;!jw#q?$%LSm5F)~iGew2u~uO0Ah3L&U5Z?3Tabu@Y> zt;UF7w-oILBBaz6x?K3#%@ySo} z%yL(4!EDWY70v~{phk4=6onD^FN20()zs&x-W{&Q$Fa7>gN+3_ew2G=jk9#T!^gqB zjYBNlCB$Ooz!qjA6G=W{L<%lGyg9V1?NEo0+wA$Yt9wRMezJGUKN5TEgoK&~4}-~J z)aKB>41Ztncndfol6|X{>)hH&B6xITzP2966S*~xAQ~rb3WfBdA8%cn6cWPr_jarp zw>3l#d>Vb&7QsT6B>U6G`6iC{FnzPCGc~uuTx64g3&MoX!6DML#7)~x7ZijTW=IYT z2Lo~0fqJ#CIIC@jE+Q^;mtO!kk;c-VCQ8lYY3b3Fkf(?@J>3~|I&ehwa)RDkOme>d ziq9?nUVu?ZbVd0MS@sl;Dvf9o@$230^1D^kRNNs|4v*i38aTm3;F*FRfXWsM^0I8-~$)Ggs?DU{9xK_4Z2rQW1oz=2OMDnoGT zE_T9fRXwYOHluzU>1?U^pvELNOMB9kAR0$5j^w#U`q|Xlvjqf8K(KXJg>%`5vRPQ_wxv`k@WQq0aXMI3r#V4LtMFun^Zp zC7YgaNmar4t{D;v1%glkmXZosRCN3~c!3n*@eZ^ZNbnB3wp%$gZQ54v&?jrb99Q4i zGPd(J2kT?c@8rwAbHjS!fbwL$Mpa%C!e_?m=nAMT(Z(%n+RHo#vrU(It`*D6nqueR!x5`2R4z1~EHgnE^b5pe=*|mJ04jC@{meVGG zDZs|F-vhzF26N@kX1MZU#PG`W-8HW!Kv88y>IZ(eF8K*_wC;}k#kl#>s&^Kd%C0F5 zI-+q<{!G4cFdxg!duBs~NASYQxW|ypo;_+BKwLB3{ObsTF(CaL^o;kq;)~Ejq@|po z&trMz?4~V={k8UfNTRE!CKKE8&r( zM&@U{lHhJliaq8ODUh}jU8UrJF7s*1pKR^O>tx#jVGY(qZ>#8_Jl8#np{+&CmIbUy zoz1(W<)L@c);W|LLrv+D^k4BWwN&r~G-I(&NoH*@f|!?O+5O$*;dOREM01{bENY8k zW`^csqs85=3)mT%`*TIq@*CgYVlH%sOoaSCudKf7Yo%F0^%ooL)mK=RaO<*7F4|Am zWq(&Y{l7>%tFE>hXkF9d?ykk1;ts{#-QC?CTAbiepm>W12ownp#exdE?bZG8 zsyk7c^hnn#A~*|(KH~?-+4mC|AsG4iRVLmD`P|hX{JHQNPeWq=?yFp0u%|!4q;WG~ zQKT`L3Nb3EwRZGG4hT(%=jQx|LYW+jaVACj!qt9luyIfaL-*v8kS>$u29xioPtvUu z)5X$YHH;!ku*dri7KBfX=14TR*21&fMKeQNv3*R}uY1YWqsW!1wIS_6k6DQx=ks*o z)9ap$pKGNYB@i^iBI6vktzxIr-$S@tU~cv|*~8gwYr%}tp=Qb$s798us^=wX1i}cZ zTxu41dUHSi2u$&9$zQ#;Byrt!tDkeCEM_@L3*3BGzNKaK{2<#v2ePXEn6!qln?WN zYPyMO&(UZ&_sGwatV!0DaWRZFss>nAqMfTzbme~M<~1yfp{}(dRzHak?Jp~|qnD3XpyR&i+Otlizsadw8x zTUHk>f%7#^vX)rRNOqqPU$VCK>ZKYm&vwL?Wp<$laiPdv->-{1)L;NCa2BZelE7DA z{Hi5Ow~A~nL&ozu_|{fAlh`9u?M$LZ-m%cI(;6!}n3p+N!!plkq*{}It2g1G>RC>{ z{U5@6$-S%KYKU$s<-pQBVh~U(?)IUmRcJ!y_Fx1Bf`r}QX)uYUh4=R7O)}4Nq0#^O zG}!-nEiP+Iy#&fp7bY^FSf1oy2qlqF${hdnjs+3@dJB?Zat%ID%k-Z5;llM=TrT^) zR>6s!UOMl)ExMDWS_|BJUMd))R4NY20rB1%=R z{7q#cAv<;0=v?)JB2Frib5k7aS_id+dt=!ad}M_OpYRA&kZyDYbYGW{mL<0@6E_8~ z7zvG?DW<2S4rDn0Mf~R7Fqz&(5XimdQ22mgO`?}lWZNq~*e5tE#W*2=OL6oMC%)iI0+@k`Lxw zzO#a8L7Lb@4J$=cA|B~2)1a<+kqaZ_Txuz@|LZqmD#{yET<>E+n%bi;MIn^={mE>o zi)!iCB~YvwvRPfRwz+OG>4W6kfy>7m%Roqmecz;R+|>EsulR5#m~-o?v3q?QsLFl-N!5VibyDeo70HMBLNTo9uVQ%+cXf^V3EvQs zRse_U>;PVxAmbrMc^u8+AI?&=7yAQeFvrZhla`Sw`WZ~iW5s|^D%g0ppxwYRef(+t z5;HG)NaNsC;M;101T733cjSX#Vrxj{vsz|Kt(g{;-k74Vsv^8tj~-MNLgsEs!q=V7 z5ccpN0t4k>L1kmY{VA92vqJkK2(*VSSo9x4puGg&Ui7;WZ)G|vDw>=#pK!y)H|F5W zfi9_Z+b*HZAFgg;c$qP=uQ!vNx14HJnnZLA_%U%9DyQaxd4nFlCTDkU=Uxi);W9NI zW*!(fE(Cvz$M8oce^zMz{rI~-lT z?*9tvKu%rR=5}G?N^KG;!icH+U6kb#e)s2Z_DB%E#Z$XMXX}@p zc(ZX!k%CWW0OK7s9I`L#0X26=>KE^(UF)+V%C0NyvW5$e{W*}i(~Ll_4^k}XGRqCn zlc^0U2*I-3m$8N@ldI>kb4FIJxo$a>m3}ML2yk=D7y2tVDL2=M9PAh+JBRVKurR2#<|YEkb~G<$JsG}jGozo1@+ z0yS;vSS?stUg)UweLXA>-_+cOst?G5f#y>!x%qLy*71fFGPU5_kgI~&VrUA}C z8>r8*V=#Fnxs4T*{`UOp{oii|X}<_!XdtLdom__ddr^Wa5O+5c_GaqIDL>(6J_nB7 zTXhW=VTy!Ro8v+JN31E;3v*ATC58Qs;Y?3*k-BByDpmd(mMRUuN75M&Hr*hu@IZD@ zN&TrZ6Wr5o^AXzbtzpOM@NKuCHzI)Y`%OH*iX)H=<&$V5Cb0li`FLplA*+QUO^6Bx zVpnOWqnK-thdSSUcRE$hjJ1vRF%Ocgu?f*#0D9VQZ1x(#Q)X8Uy*p++ahpQVmW3W9 zK%Xd^degqWwvq!8dOsf&^jrzE5#Klq?_tzw=vf%c+7vgV#hk!e~!Uh z*l-Tea-)Q3gBe=GS;fkV_1I}jUHN-C1~#mEbgT+IWx8dx9csU!%p;0lF%nML*R%I3 zT$c<5BZ66OZXK9N-VGBN-}dv-kZ6m9#orh6AZ;0kD>lu;KWBp#`x{?d3Dpu=>eBRi zY->?zue(VH;{m-2xvuuD^lG-*6j#oIdiJMtBEW=H5;xq^3pLnJ72MHrt??S0ttPQthg;042l0&5sH1_TIg;bIq*+bUpjJk-sPwfj z+;syzc(@o%zL$`)UXN9?Pbkqv^A|jpCj9%c^kGpVs2rZtJA%%;bPZGdTT=xRB|mUI z7)aMO_XlW+g9=lP++xlPI7PtwiGE4?T4vJw`2~v1zf8S_>DGk~eF3v9e zcOvRec{dWROIYIdsI=Dx5nFxv_VfF(y!qqF-&n8Vz8#wyHQ?#vxesUaq|l;5nxG4% zUyl4cBSx%kzb_`*P@G9U_PQU(+ae)zDh7-2u{Xq$Qc9%G2O2E{F;1h7u1-ZYJ;;$e zt+6i4tx-PjH}$b7C%V}QThLYKU24*33l)mRn-iZMIM$*399%uJR=aNc(SU))o=yFp zm=H3m+FHx%PgYTBTdANz&M#NAXQ0$Jer(2rCs~UUQr@LykEW&9qRb~{K-dSBvXGZ1DBB-N$4DL3MmxU$C%dEIMeD;KKWatld;UZ-FQ9dJgr7trH@>huA7&+ z1kJsSxB%dMU-9hHujt+Y<6W#KUhA6vw|eJ);I!^a=qZK$pqbfNu5lrmh-Bg!+`*5h z5FqR7dbpRrsi(&}+@?+x? z<%+xI>T*;{pd0T=m;A+{$}Bkdf;paY^@8U^0p;HyAN)?`L&WbQy9i$_>#i7fMq+kx z5iCysJ>-W_=eEGOqO|9BO{&0rF2X^V^h)$>7PHF4_A5hV)?r1@r=wJfc3FbuGksGvBjI#nqJ@0lR z!l7Fgv*W%$`ToZJRF=en`(>I+lc#9QTQ(cZr8i9;=|D*k5&O5ZVDnd4&^|)W(8y3pd_qYHd zsSgDNgBfZ-Ngg@Dm^zeEI_8t4zZ)V*7how{bnp7V%Y7*_jFBz>eo*j%8EDiIVZk7M z_E&VELg>D1_Der8;fQOwMKe9q z=L%-iIzYsFY&K;RR*uxpH~JW@`UOb~i@-JqcHT4~@yY|yV5bPsl#eZ?s#Sfj$V!(q z)wL%BquH-O_WNSBU0S7}RJ?oc=0d5{;2nr0#ZHirdFM0xLK?huI7sYQ?E672!oDP+ zC0D)JdEK$C5qYXZMq}QA-*DKVr)OYF5tVJP8N4oCR4bXMRI7j^BB=jCN48Ql+D+}0 z)e+o(VizW=|87hk=?XjKKZJo)Be~i8$sfSV;=XbT1ZQaRx~08X#8Chn1MoxOZqT%x zyLD>oXPG-{dAB#*IRQyIeKwl%9gtxJsg6RLsP4hi19K*|nxm+pKB-w@IfuM&5TU98 z!EDi%USVyehRKH4GH7{<>2%&A(&d^YgDdAkDB>cdL0luQfd}yX(D?mLJlK>A*P=BqKYVpB|A9r+>(Zc*QaKe@U;1?gy09c+J=VZWDvY7OySo3$iFn96pb5v&Y<6M z{m<;E?UA>w+6ic4PMMEyPmZ6cUB^)Edop?J?Tx9|^^^@XQxR#oI*c{s+k;17h!$h4 zofv#RzTKYeq}nr;tGeWcddo8c#vN0^BxeDm^g}?=nav0u4@u6vyR>XYt#~WE7bUly z#VfR?MG1A?u?@_!wg;nz5_2siWg_<0HH#q)9-XG|k9 zalc$cdp#gcVf~MU_eV*<#8Ln4M0(BI6>Xg7eLAvR zmwFJ%!+1?_f^s|uFe!~`&=TlG=U_*<&@@WRL*CzTZ2R|zm(|z}OP=oFlJ7AoDrob@ z<#I1w8o&7SJN<*$Zad=BKCvgkfb9rW&E;i?DNd(Lltf$Q-DEavnm$5?CW0s0IQf8x zh{#OwxIOUWZr}P4QQ#lAjfJm&t-8!)L;S!W*N3VqgDc6Q@Pj&z@ ziMu+ogUq%sb3ZhyoVNjkJUUu8GSqB;i7t8d4MfLs(8}sF+3y>Y`SOk6HA!8N@PvHcjJu` zd`Em_1MK!w{+qH(J~I{n<7n%s=lS7QWXgk7f3e}70pojT@%{=bW@pmqseZ{;a}B7| zPG^L@MV>zkyy3U&YC~ihuL4HB)Yp}{$pp*?zj?VbCLx843YhN)`(OC^ip%e7$*J>n zTrX8E7|0PIJ4Af1TcqJK2@~~gQT+IO9k9~oMK3w{)25s3piwEPPqMSZ-{xdQ3^d(6 zSV|~iutS+NFTXI>){T*u>sL1A78vuyoHU?9x{~%0Z2%$e8Z}8UiqtiT;-Wj~A$cvU zd!4@Qb1kuf&L@2X?b_P!$na8H;vp0p?rjZs6Y~;8L9F8;BTbLVKnvxoYC2sd4uxCA zvlKKqQ4EPHeL=VPw>9$E!H>*k)B~clRguc?>HaeulbrPzXC~i@vb1!yK%pb;&(fo? zU*zE;b1&GnVn?+2?jUUN*-nw!dew(M#pB+x97cD9ayJ(B>)k@W!$abWt(N}~AeTf> zK|=-qA;bvaHmTLST&uxwvDJbQ^6M{j>GK>BLX|z#)A%qBusoP*GY@P-Dv4jc-jt@G zzY-b+Gz{HT^xLx;n9uOLQ5$eU{!k7_0Y(IcFyZtb(aPZGLBn4Jt!|iZW)=2L%be$B zXc-$Gws{z}2>SUtX$XT|$|AbaJ#N zkqPkBL*n zC>nkQ`A((DGwt4db*i7j-^0Tdx%Nu>g?R}t$uYTWjRLQAsGNJ^qY;{ol_{5^R_!^6 zoEHTU&uTW;G^FQ3t}YiGCgIM2<-oqR$k31giL`LI9$S+}n)zqhC}2meU3PF|D1t*$ zf;Xxg+w+avZ^iX0=W%uO$Dsz# zsBRA9_Z3#?#{gkQwNg;1NCP9pc1uvcanDb0$2H^8MMb3is|)x2+Mgy*gZmM-g4}eV z2?C>GrlikQ;KM&Gp~(Z;@A${cSG}{m$`!lN9upXgsHjjV{?5~29+y_q*^IF9Ue>2d z<%3q{)(rVyT%MLkWt$NLyi=;yiYX|nQ{&_7`<1z3=6`Yzxbw04A3^vuRH#S>r)Er+ z2BAv{4>~21{eCJfvqRfX&f(nlPu$atuL7EncUD)XBCH-)q57%s{}~M6 zSt`g#g#xw>%r_HO!qDcEEOJm$^1B3&6ofSPt_xBi42CC?s}S~7=>XiY9BQ}Hb%grS%o4WXrQwgq$`4^-M*JfR-PFlwvl$-W0;?j5 z{uwT>4$uac3-v`8K(ek9$M7PYh29n$A0%!8T20Re5gvs1a%@~lhs6I7pRry%3r*(t zuTTL2y8)56Doj6%zbaEAWcO3X#;{29Zl)O@7@+PXf)J&}8D)P^#rn*ZuWzwQO3H+q$9`5i?L&YB;> zC3#YrT`x?N)65=bM=S0<+2;&ZgmJkIGQ5+pI<`v->In3ghk4E4aMUBx|3wTXzUDa} zxK`8cSn%i}{;??_)P(-McsElfBM0;2=q5A>?GYe-~6_}^9OlM_=#xKHnT z8hH0mWHIi?L`m~Y*MA6^k0rEwzn~$dOY9u;m36n-PjE$3l*0^}>L;)wNeP4fC>`;A z*;n@Kr9O_e3Eys~%NHO6pR$T1J8FFE3a)DXk@2#DSbZL$#2~*WFP1@7GVz@AFWh?` zLYKgn;LwXL?ZrkO(`jmwEk8>pUvh>ZbpQEtQ1Bz$CwmbvldIwc+}K9&F0_ zP(y>`Rz{p=`Yr4v5Kr(VIe@)??WT*K)gjo3mD|Bi>4kx}pBT>#-nhp4H$3X0PI@(XYX-|3-&Qiyp4! z=Ovn;-K+}FQyF6K#_z}_k^O10UTDjMt4?QIPoW#uc13tctS%=|$ zqFeqx1@j<^pr7dtLAj=DmPyqJFK+faGC~?U5Rfs57_GyoEeW}>-U({g^?i(_$xxxv|`t=_rIkAcf2q#d2vXIJZM z3J<9yW+@~}YAtN+^)je5*5;mLw5-RPt`a>bYHDjLI`|%~%Au2x>R0|2OXtB4DB3uz(@ks3b4jwElUNKt^|I>q`B%w4E)Q2U+oq!H zV@3*Jg>Hy3ta@#Ib0n-E0lpKM+24U2V;5{`3o}h+d%Kc`r%B2?s=&=@i*BJdeYuPlzkXZKL-c`g6uxCrg0r~ZK0P1 zhsiF#xOktE1Ewu_w04rm1H9wNuyDVksaG@|seXwb$P3lgEl3(o`C6l$qkQr&v=@Ks z#dJwv^|JLBrgQtOmKq#_{M)v`cZw6jhoY~>Q4@|m5aiE56N!Sues|R(YOBHw zY_%5*odvf_iGkSUB9t90{j{573{5b-UBWZO4a^U6SQy0Q5kUqWWK@PdZGXw%w|Ln) zm{weP+p>u;`~CY$`SmAp^q=BU!8uLxaZA@?Nbcempf!A&IiWR=kI#?=u~LI5rK~{# z!JmPs)L!Z<)k#WjO>JH+B~}QK;JSTZLuY|&lc7`pP2Xi_{iT1_j@ZyOJZ0YPfLcTF zp4pwf0K}KEu=0oWSf-^;9C}d1C(dIDZr_pA(z`nNWdq}4K2ZzXkb;RP+RH_glYM+( zNQ;G|Q%9QPRzAOLh#&kDZ^;2Q4D3=#kbOK;d zaqVy*{nD%(!s#yM(PtuYp$bQdKA{?3RaIFpfHHOU3C*UkCIy7?vI57c5>>m3@H0ZA zanR^I!lg+pd1u`t$y~V}%yuIfq1bPi85WuhitR--5}jB&aXu5mEbODy#h|ZUhXb!_ z>YZ^1Jy-iLL3miyvoh>ozfs*N-X$P>COz2Y_SuKky;`a?R3H8Iz;SgYHf(B+Oa+tv zWjWq&{CuLDxKbm@@&3Sf@3WiNFiDGo_s-Y!ng&~qflk3Ay%vD;-xR1{oD&KND3xD# zBE}4Kt2@r)@(OX_GdKHP8Y+q(!-4gP^j<3GjwiXt0d-^s>)5CSCs}=7kedG3@L^JW z0px$g^=J$ownWKal&H>vDniZJwIWufMXB(M^sRVV$UzicEfUg^#mb9S=d5Qlk+b1W zepgcB7NKgz4BFRmi_pS=p9>zBWj~u!6TX=mo62uVPtp8Q!B67jrzc)pc+r7vVGS1K zR3%hD74B@JK3J9qRmyl9ZpxaS-I$;A%dva0UjL1OLqhF=UIpjvb@qqEQ21qDit(xn zgaX4vG4)A2EcXI1&y1xRz0`(k9sAVs4w>We_QEfXSXs_4N{^}ZE!qGcYCE;i3`#_mU%|UGIvwgvfqVZU%*cF63Dqr*+BxrPHQd4waQU-K>(%hOV>jDHy;4NEi z>p(1Oqej%!!^ml~QppnU7y8$Fl5~YFx7EirrJGwRm(F=IsqG$vNi%(Y}3BE-Ehvd`3#GM@UsYUp2W%R&QH<0 zlV;fjx&nKlrs?NIgy%o0u8Iak)(K{V@Nz>qGQCZ_z@s-N9-08S_riKXxjq0o=RxCh z{oPbP5JG(F9G673@7T>F=1Y6Ld&l3G>FF3bRmKi>imS=Z(1U&OKRAQI2)P_qvZwGe z1qllO(+%lCVL}a%Gc*EpzML1_ZrBdEDmO?N z3gJ!D)%<2f_uv)<;jfbrf1!t??0%dz(+<=7(ITKpjOko*n3vSZa?a_ zBOGRihN0Pnj@_6ew~EtQ{(JCv7rZVzoF`_{^9Go4)-xa>yc6<&L;QGeY%Y$ZOHa7I-!1N;%mnhPZfpR&4TS=X)4YtB+|4mS%p(x}ZK3ACpN! zo11(Nry2Uyy!EBBQl{ziivIgj(A(gwRuT&e?%d_QQ$&o-#!f#ZTNRB=R$qv*^cGKxy0;1JYE9 z57oi(q8~z7lHK3bJZ1P^8e1PN`ZL0SsJ#(sS}Dc_5};Gs$sbRsiR3&Fjt=(#*M*al zo{B!Ee=pMj0BfW1)2A{3E5iTZV?VFpg_TFxp$yZ#7%i(IXZ(ZuTe>YOeQ&wrfRb0MqAv~yEH)Nr@wk*G+)6m5Cn_x5o>_84yG&MJ;F~qZ ze+ZcMk^1VAHiv&gU{xp@k$xq+mJFnfC7H9~@TQZaO_YgTqwINK%X_Vemj|nWz94pu zn-m^lm zSR@-~p&`w+B$n&MDaWuw& zkBV>Qs@D%7uF0kIM%E(EL=|aZUwL!rtao9}G+p7?rEiq{s>7_WS1uc~U<N+99}S z0Ajw3zz!7CipzKhbj=H7ojVl@wHW>vK5RMVR1E1dfN?~M zJZX%KHsjbb(~-ONIq}l{FbjRhhS66MVghe#WXMng1@f&u8Nv9+mJyu$K9mR!XDOFW zz{LYK0@RFYcvh|fCI!n*dm*tsI!0|g{0{-?mRF#hA`56>$p_xLS(|KYpLYs7Zl8o6 z>umdL#|_Bk*C4osE**;yLavyAp= zFWz>bokhzynk8GOs7!`jNIbC-F2B%YQ-glLc94_C@F_TrXa+4&#DIK9-)MRiQDhW4 zAHLLim&2h(ut?Fgr#V$M@43O*Q2*}~yqK^CEy^d+?%RSlLJhc(9TP4!&277ASN#5ubIa)q1y z$ZtS8(38%%&HurUkR&^U`*q;UhvwCFzdufSxEza`$D!v(qu-uaLby%D|3lyz?iM^K z*>v3Qyh?pYff@mN)a+oG;sJIxAIuuh#pTgRM9MSUAU{3Gb*q6Qx{9Jaq~ScxSFhmu zzVVSjw!yz#dUpDdv+O#OSfK#LFKT=i%hA}`dD<_Du(Q2llFk;*_grFKQsKJgAo^Ir+*-LPA*_V3)ZQ2id!@6dP zFKh2wSfWhE{9`)(ZzEa8_uT;NFxGAd9exHHDqw~#X0DgQi`Hc}*l~AI%qWh_-T&{Q z611IvYA_?{YtAatsB1d!`|!$-^9K zTo3shcF@!)CdhoKslp9?qo66F#7{E+*{E@{+2v6Q&nWF}ZU%~Q9)gjL<|^#pmotF; zwwjIs2*ifFsDN+Tb7eW`AeW2KqS8Ck$Vc!Ncv z+Wj5d7!(o@z$}UR-v-ksCWXG{09N=(h8kb7>FN^FCAffbee`hcX4w4hc9gfXz1?Tj zz`l@063Z>cA;x#MS_BeUg4dqKgYk553#ZjSqkrIh!07=R3@I*xd3 zBInZIzNRzfuEjtcXT0K%E%-l?*~9x_8h-~jnx=gab_`kR!N}_R2&MAVfNGI}*uG=* zvj0eofdncVNvL)>X{z8u*zk|KV)Pp>I{c@*#5~<1cAhU)^15kp13<2BZVy9|CgGqCyIs3RRNcT^w$LhS+KBlxo%hG~#lv+wihxcv58Yr%yFeffz2v1~|Um zCX52rEi5*ovMqiHD>}@n%57`Qr0r^S_!q&ND_%sq#v(U2Lx&t#VX?lklgTO%F(d2y z$UB4WFIG}VxsU^dZ z!xmNvjbpvYn?+hX)gqS>LD$BB2BZDJ`nR__gYsMR$C1kfUguPl#)_GTDGr^_=1}vH zFmzdE*3)b-99_=8#=tHkEoP-j*WtX@1c_+;F5`5KIY{t?6R6d$cw>2tqZmG}8hNvR zFPgy^=JVo~CY&WD_7qdrR#-b$j)3G~B#G{aUaNIukPjyJ&FGuy75m$?!f2<{()lg2bIalhJp$!W>j?mHbq6;*3Q!EcktXnENJ(P-JKpF_x%>Ia1XKIm#^*@kGu6gj6a9^T zR(iq6Tt>qWOGa}cfu?0DRTiS|Xs}`|50*t?FX~5DNN`lLgrv_-gzu$#Piru9TYg!V z&`AZAZC?!YXuSfrigbwiQ~fS$tdC}eL0SFVD=nT-Sk9^sJm%6+t(u-Sz1DOWH^E z^d2s;w`Ys5%h*&I)4^qS?M_?z_H;U&&n>)+2mnliU{sV|hGA%NRb6B6$XDiPETP;$ zyq+Txl{x6f2NQd3WvoGoT^8~YEj=e~3*o^~Bxzj#utd+_dasQ}eX%jriz`Ts&PtnU z#Euw4mjYQCsyX$+6YVlqTm=U><^DgK9y+LhHt(wLU7<%+*Lf^$g}2~CuVjfdEv zM47+hEy=L9scIJzY}-_q9kv6LO?vYBm#YKPliF6!=t{YdlgwNa9#xfxSWww5LU|im zP!s*#SV5)#JAmE!w005>E0rw<0bUJ35gS^_ZU(-ePS~ZJiIH|I{r?2}X_x#{QxjKd zVA4Ks7T{ddCb9cc0;njpb`ygU67qedTV9YOsW>O`nM5b8Ti?CMWGRvR=__VbA51xQ zl`v!yuH!1?`tSVZpJe5jIlLF2S8-X!@6lAo4q&<@iF^YTOqsyGaTcsIpjfPAa#q^Y-MHM_ zb-r+y9@|w_x|5Er7P4!hxWfrHtENyF@*!`uJQ1-($@sutCE4!&i$9(dWp>C271m2* zg&SO`Kg;c$s8_uA|dq!;? z4hozYA|~`w`W`VEfhl<8?S4k>!othGn-&xH1u(@dC5B60Q5L`zukNg@S;@uwl$;P4 z=@5^a^nSZR)#FAJ@qY+iZ0J}am8l%_OTr`KWi(dX}ZAMws zj>(}ydjY8X0g?+Tcwy1lE~ceSOgfT}B3Dlk%X*+M*lqRL$;rt}=~pfP(h7}>p$Q zLE-t%$he+?<||oqr~xE~rBXuX+(c}NT*rn1ECKnF!M>96ZZ2cQ50LH_ zh%7@csbCCP5EcRMw$He>Q+Mi^=r`J!*S0e(n1d>1%$!aw9f8Ghz)fpG&Nr zO`j|IfaG5nz$yM!U4JQ^*r%)}Us6He$-7f~82x*{B>U39v5cjd!Ly=x4t7_jmD}40 zEgs{7e||Velo+W#I>E*G)_eBoPqf@e>aM6!En~i#ZmrCd6mYjLH6;qoOazvoY-w4mT!U5 zYR*-10!Db1!#Fge`eGlCCKP3e{=JgD`C_n^eg1!aKK6KqTlSIu@_KLXqV48}FErUvbRbXzZf&q2s@8`(9q^AE&GEVn- z^D1J}a~}?-Zn&MG!w82MIh6_6bd}swjJ~aflPt9I#P{J}@x(|mxE4@9#*i?!EX)z- za2qh#+jq7zGS*BCpO1Zr&X6H`2YC`Vh4XU4$>BiRD1zWi-Gw_zPuR?`VZqRf$!TEL zYmopiioP+Hc!4NiCuie;O-{o+>@evb7xjhwRzh>e54dSMP`y=1#Ms^JcwCNvh0En= z?Ts*^iNNUj!vEwM{tl-l3>X|85oUSK^dG`QZX)G%iMY#ht}y0Q9d zL{_7q$RV%YJuX75H|8kGp*~Eu58O0&u7Gvznq`_0Ig&l3P}tdh2OeNEWRwF)*3*oQ zWD8W!?AfcyAZk>U@Q$Pk$}WS7c4#NWL2TTe{#z`fOtPS}(u_ceZSzA6dq_AepV8XC zPP3y1u(y<1xQ^k0&zwCzD(DX4jdQQ%HLjoivQ)m-{h5980|U|1HrX`$Yc+d^akRMS z6EJrr0Aix>zRGxj%8;O8aIE4d);2~vafi-aRs0Icc%25BPKuGB>f;}717&eo^-cVG zP~~PFg#DxIh^{+Ig*A?=JVwvl#~Ia6$|8b1o3dPrClfLdSu#{Qea~kU*A{aR_k${; zwchAatE#7yw~-}DS_|d-UV6cmTwzG@hsVTd3VPA!3dGWH9~nu;>%#@-5iMOJF@@U+ zGM)w9%B}|9CKAKjBL73+7m{9`5geJ}P!|z^wDUDkbORTPbPw|2Cwl(;?V2`dSKosN z%c;{-VJUt%Q{_|k(8s6tL7_(M{HPX7lS^**3+0K=qgiR+b68mR0~pWO!*BcXj^EI) z<4U?=={PfWE2eplttzo$ML*C~9IOMIuv=58tgkaIlXkR-EuS<)3>g8irDKV@I+bOA z{wkRvoMAjPn`pE#`mP-K-_~IlAFU5uI205@! z$%PvBKajcG^ms6ml5@zx8b6=IGjGWo1WS7sLte}_9q6qZ_~c56EYTHsGIaMy(b!(c zOQ%)gTytk-@2rd#oO+7lXnU1)>|&i>vmR-aOD~okg~>6VLPQmq+wa$Ind6X^RyAYy z77D;?U{Fx`jVZi>_rR`RzTs?c^!7cjtB)P+xNL)1P-B*t+y*^*f=HzcxhAi|@VIMt z1)XDc$&hwiYxKjvK^T;yO}`GHR#Be7$bm`=;J@a!;1HQ#!C1fHff`&y=eMfuIg zVk=PqD8Y6Gs`naKyCkq!bH#L5-oS2UV@*>u-wP=TBc8dc@`*Q;0E7Cd2sk>g{YgXH z2eHYTZkfOfmmcM|J);O|s0K5SLE~&>qfEC&DK=UJIq(`!vx@%^P<-v^*Q#mKOkc9y zu9dH!qG5F#?ADpulEWD!hGXo?wbEYP5H+J&-J$Wxd@_UKL5`f*@4OIMTSN){6PfV& z-!>f$i`*7Cs2chUQ~syg0-u(OGD0yL{^aZdHu=?WPi;!|9nF~+=rD%6atwYMtvKPO(`r3p1xiLIX>_xZxhF3J z@KP(Ad!s<2p@zZb9HwI$ImMpwt5KB|bTIHUYw(ZJ1`+S7b^}@1dbOH{c3gH`YV~un-WpyezL%7hPF1~oS3 z)__5f^P1cbdF3)Hir)8l3XFjpAK70F|LQ3SAo>vkQ9J*`*;#e9)kf_acWBY# zrAR4SEI1TOad&qQ?(Pl&iaQi{C%8j!C%AiYmtybEx5wB&;M)i5Y$Yd=@vM2z`?~B5 zFJ@okv#46)$;e0u&xElPr+fWB%?TSgX`MN2X|)>%k>0&=PxSONX|_j-KVSn@fr{Fpv)__IxiR~{*nV{42w&IML3a1} zS?2vd{5Z*-Qi>J7xYhnwDI~aX?zZNKV;#lO$bJwf{aE=CS;saZoDZQSnv$&G-{Txpn8Fwt&rda<0nf?IN z$Fp|YeMO2Q!jLIo{|Qf~L8WO0tQg}HBM^BMZPWp>twJ*r5+$jL z7<#tl4*-DyP0d6P9?qC+T7f%Xl2OGed$~Ec2vez>>WR%YbgPjgipjsy%|;B+xpr{f zzg*;Pt@p+WEmxKUDTI!V0=?Bo_Ey2$3)Rba4?_3@?PkKvSKJ{*;zba;?${c6)|$oH zMn#IIN*sFoKddy#L`*>krDdp~>t{olna#2?z)FXu>DcwE=^M^+vu_ZJ^p9^!e6-i2 zUt79yPc`@zV+&){x)L{GOwhLZk~M}%sjpGLnRsc8*2g?32?B?CA>O(9PTS+P1d7}7 zM58QKb@C1vIwuKV;ym>|nqr-9Mjf2X)`%~cwF&SvFP;hh)DsY7S6!sROeCk!f0@hW z2k9%431i&ObC1$vH}{Qq8o+by#v`fUd&K1hks+`V5M&eO`cp6fodsMiR2VUxNNlex z9qw0J!G41FCERNOV>+794GH6hsZH6pQNwaprCOnrP)6bSY!*+1JzI4`iv*$&6#}y~ zoRiehE3a23gN!nre{s&0putZHsj0dUOJeLrCx0;r&cpJmltuN`6fCunH8+o^Aujvc zd_>(e!Aq{j+!ZSav~i`Kn1!FF&ZX(C#Oj>a`^aSA6L+AgtV}Qs%n6z#6Y7zfm4SR@ zrg|vb#9ytcvaBnu5{T#W(M6u{hzdH^;ObbbrdI|p*k;o~vPT8w)Yvp7uu4%wMqqzQ zETv%0|2aae6310KNi#r(WRCL+x8QwYEYa!kcDF&?^&w_it*|zg2DBMOblV&0umZln zF2ALy^2BPh0!({wvvP>^NwxK3*37&j=!#qXY9#5Y#Dogs(pTaFHRsfyA8^_s#yi@6 zMH#QX^H;DZ#CC=Muh_LVJiz7yE_eB!PppuRQvG^8`D;A6R9!8} zepRL0TI{PE;E{==Ak7_K%`DLou6A-dhBSM%C8ne;)8v?zeSHXRXu9b`Q^S97TP{61 z|GF7#&zv6#A2JPV|N1ROc&bNErAR)|Fa(_Ul=qHgFIeNF)J*g`GQxiHJpv^wZwO)_ z*Rl~y-b!J8uE3Or-$S&Fh4ciA@{_&g39{F!XzZ)SQ`1Uq`X9do(*#WkZgKdi)BRN^ z<^Kg?qo#;l_F@9Kwe$1I=ZzThAbz_kGqM=kAAenBCSWhhGkt{wV}C- z08-;w6#;h)=LU4M+l8!B7zPs%eD$*-kz+-`0R4KiYx}MvLbgp5C!aWamqbaLtn9~z zEePh7A;CC9;jn2+>*GfOn|oNAnx(x{Le&AXx;~i8nYXeXH=oX#e^2a80L4(`UdJM3 zU-O4cL#t(~=_P!?4mbWepY1;6)$(oIFv$BvHG}^yb+&77YydCXnrA76AM3fv98sD( z0mX{D6guP5jo-d@EQiTGi>F2s6C9W=mn#OfMV-4)Q@boO%y{@S*7~zjW z0@+E5RJwomP%+yVBeEyt0gomHW%mq`pOEynp2Vg*p!dX^-&iixQ&|}FrGAHNyuJ9Y zDP_aKTd272eLDbF6{1NCAC7ZBj5(E}APx-#2Hj5ctaPevUBs+|5*S?A;Ry z5cujAF5A$&_*F?nWd>{P1V@qMt0z_~(r3x*v_YF65jqYL4q!jhJ=F!bNgN?L9r?%| zuuZn4BXRbAUCT{##qa^7UhQq$-@Ied^kelXpHc5U#GR7kDcqmQU}a;V1d!NA-mv~9 zZ}PV0Fr_HdcH0h1TSU({Uu5*eKQokw4D(W)HjZ2ag*RLO8~1+IzbrqNlEnrGAG)Lb zxg13CYdUaA+YW`sfMWOs^ZK&k)(|Z?om~SnsS6rdC2YWhJGC)1^JKmoi9G!9B3iiI ziyL0(*14uo`-sIF{VP9QYAriZ-jQup($p@ExVIWpU*G=Bf5_5Z>b4%!w?ct4XpQ%C zil_RKj2$$TwZ=y|KQdS;R$p*oqsyVzPW9sTjm00~G}Aru`R<*0#=iP}{GlwiaGJ_# zKSPbkDn;`fs%oF>6c5JsLP}aNlTV+4V7n))Aogx8-jtw#hYi0t;d;X;a@8)6l|BLa zpIh!Ddk%EeU>kbPtM~k!%JlPEvtUnq8vIrLweBZY6WYMPn;A$S9bv9pcqFWPs4;H^ zG$l=yoZy<^WGtN3x@)gE$?#~y^_UQ}c&BoybD2*l z)0AG1_z?9wvt2E-&?oSb~ne-R{&yX35z1PaCU-9g03X8K#L-5`x2)Ul^~GHhy($ zD=&ALrtKXGnJQ#1dIYQYsm^sD(GLDBW|cjC4(JtDu|+yo92J@viJ~MmsiqE_L?%zrCqv7%GEPx@R6%)FK{T~s;R2x zd?KqryRb~u%RC4}hcvI8L5JrOm7^EZ1{n*%<|i6HL1rY+8mWguK5FvRiAs0XM(g?$ z>|Do-5i~Q9#>Rvw<|2#^iiVJEXv-(%wISa|?GWYU9|qX=ZKdUVU@>$nA?+FM0=Bi^ z!1J!m@JVy)qzfbTQ{7o2SkK>|ZVYGSS?>cK5U4?^tiusPQps;umdK6dl39)+Am2hE z@A~W)7*6$cI_dc|_C7?^eN-z$KArBCn?eQ&SIz|4hNuDP|YpWGcd{X@sH5<}QDcq_Vrhj@17X3xGI)G9qOl*Y)b>Rxk> zsZh{Jw6mf(PdesV#4n#Gy82o^xhy9@fW%tDzY>L`tFa7N)3~Yax~dzN#0wg>x&|AX zl8iNfR-q%|g4B9U2V5%`r3gj1j`6=k`~w8VT-=4vnV1OnLb6S&hpqUdb9qHcDsg+A zvSA~_Gggt`rXY>5Dv}`}RUl~xKC)i)UZpZPpCyX-CJ9rv;N-ELvfQq6d9=YtT0@Q2 z%#3_HZVyU{R+JOM3It7u@s<~@HtHtsmcpi1B|mm^!;DK$*$u5fGJCsMI#9e7pkU#W z`_9HIC8EX)y*7?kYu#lm?cijwOnjv!t)5&*juV6?m_#-_2QKb=?0+uSpKTg^ip@WM zCyKry2G~&_to{(JpiSlANE^Tp+Hc8VLIhRCZS~rer9mih!B+?O``(E9R*Rg+-IPv( zLB*L1-AgoMvEW}Ec!4$ilpWnBTk`S@1E~*(I{pq9Ff!C&byT_Z&rAiC(3F?e*ZQrh zq}PYzJz-InzLD}ldI!S%>c2NnK8BsM`#JVBQ6YW&Am%Inh-h`xoGMTi=M-ASbva9r zfw?`<*)jF+qct>Ei($aBY|V2-a3P!oNu`3aKMl4s#V2#I_XT%H-rW$(mKD(IE4Fj+ zD^Vau*D{tHp?`l<6oWtSl5z6;4AHP)oC&WONYm%ac|eP_q|I&T)GbfFX`hPSoDxciBAw`O9Z$TElB?<>L7235|6t9;)2`NHDB->{VeZY7amt2lWoOF z>0{Y=w$ZL3@!wTfcXvwKdFI?H3bDy(8w=lbR#RJktQ(1;sN1!PVc_VMeG4j#9bO82 zbfDH9V7oQ=(L+j!S#~j=)9Xr$wOCR4FqI>p^-{ZZO^w@ywm9IcEU(+ubl`rg19&Q} zB1H{8cQa4ZSa2w;o4vaUzqt@+7Ug3i0J0fKV63T`=F?UL4}6DYPWD80iaS-TYQLqf z7jZva6RnS9u`?@QIPBUb)F_}RD4@zLT@Obw!$7qnSJ3Y$QASg<7i0z}7QJ5kh=B?V z7@g-zDAMbbV{82`iA?qZmWnH-{_hU22@4USC)1~duI>%`NzL!}V{c9RYndCmU3y|+ zG=zA@-s)whIGPhi6;epK152PKWJ!0o#MdCi%1x40l zOrr2jxdt40_B&wnl^wRH75?h5Q&{|z(iGzVS?NDG#r8yHkB=|>UPy#)I2AAJ8HiNM zEmU1Q5ih zRDX>a0LU~C=4#%o(i`)Xud3*Mq{8~>o;$J_#{A2gZlc<9rRzVqZGBfwVHaF11twJf zo1~B)E^pqUMcIdm!OrV@P`X~FL1p4a0G6?q!=o0V6Sl=Kk%bK<9h3DyQpS+fo z)-|zE+u(lZFLTI>=IEsHT2Jj(B2ziVNSBdT?CG$%{P>6(VqNkN7BsEY z(!>%~Bo|HUY}}Cws}*7ZM=~N|cFH5Z=65D09O%jy?2$6U<~T;PEa)N&pgyO%9#i+T zjABC)RK17YXSU0S)c58yCxcKam`x`^hYSjpr;ba8?gPH66K%T@+>4{+&Y8I=qwrO9 z_{3|-T$dB-?->GJWL6*&6GPdmBJuWbDV>sUDSI(?LYeXn>$TUuQRHQ_Y(t(bOgaxo zmO{vW5W}o33^##TddRH4ID0G}39A{LWx&ets=9Z8Khm*b5ysdF1u>!VZ&8>lNOec% zed)V$fI0a2y>#1v+F0W=zZ>4u9trG0>ra!ixF5q+{{IK}2L*KyTlB6L;VD8nUf8@l z!}&O_IMlA?9^&udd7mFLq;pVRN2$giHYgo`QTh9as9`|>A&&0{ABViBm(01DmneHv zQ2c1+EyufA;)R#e$66W~4h|h~y>4)+kSw_NQvGguvPqcSyb6f7y^oVWcJPcCWRjn0`ie%R*~RorH#2D*%>!7Jc7aw?I)^A+O|yB*7>iPT%CZxirVK6^yo z%cDGOsm|3}f;*b+uI2Gl%!T;lm4Ew15rV!NIVrl|qR7jHW%@-W({SyvsPb3-2Ny;9 zUc0L=FvuyDuzq|)qf^`|6GcSJVJsog!AX8Z7wZ_%gq%_w5z8tc+n^)n%=IbmiU3XJDxhUV$peX`pz;e{e_uEIk@27clY^Afw?V*u{UVZ`K}MWr8+^@T^&yt>#uxclU0bY+NkwXHs+NAnL2@ccATm z(0z5T*Bw-*hdydyYthWQ`(hHgypOA-V?DbjgW~nIq5p-ESW`l$u^G(YI4Du1Ul4im zomGBF(_J{_coTKuOi+5K`3k4r)wX7F=aMVy_)rlH=Rz2(H9cpBUo>@i>+h z7t@DE=6N;}%H+kyCXoL@&@0nquBC)cBHIlhmk_EmuDc;T{roaD^&>o&^Owlts{22J zPTT^kzgfx>R21olkt>49DBf_Zm>Oa~NVr?VPryr$w9m?J=iCOwT5wq9p94AcB>IS01l*iJ1Ew0 z>vr?0k~BCt<-T}9xXus>aFUI@=k_u|^{51o@a|ZLd1PU`S)K5U=~|Xl^WaCy{V7SE zz|jx|4g@f+{`x$~t~JJK0%K;*Ox*}0T4k7^jj(^HC%jYMW2ahfQ&*gD(0OR_k!U{H zq%|y@lm{*(qz{${z$1M`E4;?v+03c7-WxK&3^zPmq%v5Orb@IEHgN)vAhNey3B&QN z`WsKG@J`xzdJOV(llSPpu#*Q?igV$!{;i?5C*}L}loEmDPlJT0->Rop*QoI0YHP_f z9zX0MtsME%O`o>ohwyZ1@$4=SKg%Ew%6En+RnTscKIt~xrmVmEo#Lu6fyA&z%hh|a zlcQ6MTw9993h@!`L{DeJkClG5k$+R@te-zxXv>K2^k5g~llcY}t~soLOs7^3@Akgj zMn4*UbS^3a-z>fMOpn}Xz)QC%Wc_REmi2kZoVa4)8Q{^09b1E75(%+^kDqzY{)4O3 zO7PmP7L%JPFh^p|XF`|oCJG05sllo>=|WLQ6wXgK^Riy{zDzs%JYrD#snb)-l!N%Z zf9740kqOx;WNiX6@u_VqH6?8+rJ1nx9=eS5{X_-n*V7QfT(uM^|7+U6cS&_-@-+qa z{rkqWBlD-{FWsz9vNpv}KtCVx#inZD=E|T4ixEAxz3xStcA;2PE)Q0qBMv&rb<|x) z>=D{liXZ9@i~YQOPb!5DeVRP1bUF5q2CgUh>0dG>CJnM94!oJ(wT_Nu#5>M_A7Kh~ zwd<DFWlLX-cyTv)X)=)F;@B-v_2!ZBkstw+;M>**@*c_Qwo3PLgE3T?2xT>lO z?F6lc$WyEy_?*qkz7!9r@>&Kp2S=v}IaI%bUU*j-PysXjFCW>d7JW5r{f!vi@!;!1 zAnNWF9c0_(om@Kg{+q`d=De5s23hWOAckW-^-L7UD(@vpJC4;slnW;VO7ou_(k#=K z*gSOZZU|Zvzwj7;w@OV<^nw<#4;yBOqyP$Q%Bg3Rem3L9sfsC+XRiFSDhDU7r144R z-&gu{c70{@F}ciF7Mr%)GZ+79H^vTBJJ{5%ouo$3{??@k^Vm5OY_6j5>C0}-WE+}G z)`8ymeV5U?=$!02t&f8(BuQZ(-ZFA3>h=<%)LCH%Akso;(?GH&+c0{2>g@sqTriGc;YZ5Jgr-i+QpO# z%Dp)VVnS~Bo#PwU`^HP5wIfNZskkd|?JHU}?&AR8(h#MxIkuktkNX;?ihpjN;o-UF z*1D1R(t5RIAxhd(ynXMSsx_<7j0H6L!B+H|YkLgSGSb-!qd)H7Fksv+7O4~0W_Z&; z=|N^r8mhd#6}qqW8Y~y{ZG_XjEfx4I!|=vQs%Y@#G7D|sZCypnQko~b$KO6uDDLP5idY1N~S1# zOQl>z&AP%S-->OD!98RWAYw0CTCs#bGvkbo;@iY5G6gqHsP5*)a)hkEYualhH8TAa zKi95^e)?#Dw*(93L}Yul^_Y@P$;ve`_L5DiM2tr!Z9V&Uy)OI*cHd0)G_N*WJDMiF z_q|$(oI!*h#%b%J=c&wjDN%6m=aoIMoJikiuJOI<@v<~+Vtde}RH7n+Zg=r<;Za&w zBel6}wX2!sDSl9gwR*>g!e;QH#d+E0lN{?lIDu$)@trn`u3bf~s=(@jGk;Y!Umz{m z_ts#RwTTQ0PTghd&@F>NV$Vp}HhQHIe$gUAKZ?RtGBLmfGZlj8+{~|9BK<#~EdB*x zGubyvJ?GIYV!b zh|55wfEjI|ZGRTTFX?=q9Reoy`T^mKNu7L&EwVD})qcmq4-S3`2ET;ZW$hK*cdPl! zc)1b=kpiP{-by=6H`+`#;kbg?*+KjfXEXDeLmG z-GfWWDLVFO-^{lwI(AzdckB$!mPbxnkw-I^a2D=rXu$xIB6G-GZ6pBYiniXZm&n zaKv4>g91p~r3R%Rv=y%|WW*+@b=b$z&l=ehIn#BA*6f@?+zWGQz) z{B+-sSFuS5nQZ(mi&RYp+DYC9f!v-+5%8R`U3S?GHWN#hbYaTLk!)d|x~B+j*^NdS z0XmO~*Ot{$>yn~G8AYyo{=G~Rc$vWF`RH9~fSLEN1{s1YhMCsiP&`wTNnAM^!AyG| z9e7t*s8i(p0b8Z0{9CW!f)Cj0-H4HIJWbhW9GbcI7K+$fgtaq zDe&{m(%+teH_>}TgeM>6Bw_QR4BN}xe2`7Y{iMI~>W?%pqy_|KS`8!q-)OaSmtmHa zs0}UCuio+=Rzjhg91^Je;Ad2n4wcFeT<@KrO+8;C83}E^VV_n=v7a}XslCU{p&r($ zYwLyuZt+=KHOdDeZ+ECnPtpGn2Q|EPUm2cKY5?F$&x_A7>Ge4&{;Msr6>HU*5?cYE zE!LWFxQWg)pKS*6u&M<4cB48aiK^Wk3(toZSN39meYVN5%ww&flxvUeh+5^~I~5^# z=QD(qcp}IiA6V_RK$$H)^bRxxLVqX3d9LI#-D=2nf+T-R*Uo-kjnwDqJ6E=S?co|F zCc6c>@Xtb z305MDj;e*y=!Sa^;oDHujrqS@92G(3ZIBC)n-2Hc>c6ORiM*rU`2<$G984k_P_=( zR}0b}!xfQgz%rVLo|BVSjY)Dbmr@t^pNgjOz;RfgNHDfH-ykbugD39~y7SDD<|iFb z$({PMHkPyDD){q6wVk=4N?FR977sCixS*YLpW)2rG&>)h=-=X|4(^R!_*>)DXBszS z7wS0=EXy&IQG|3U1iq~a&~A~@kx?N<{2eJI4SyG`L~OqjqHITEVJnB{JleKK zEa!(jOc{-{riM4etQ(2+(A9n#1+)^0I0c=mGFD7dHMxhH&(>y_ZFkv~f6A(V57ZSk zzuk{)jGz>0U_!V|Xj(ORx@Ik^-(I7|+grx|kgIcbC+K0XtGh7acePCd2x3`>Qt#+#x79)R{W1g)OLgPEv`#M)cPI~^z=y3gqwD9v^3Ko0 zp>C5zXqT+jM6!Ge%a<%g+UNUJmYB?D`Mmp}eamdMy`?5#^|zPi4ZHu~5NB?$h+Dr& zgh~6H7S8^2uz9YgZ01`+a#1Eatd+$`*biZnln5=6vgGYH2H`Sx2S@)*k(`cj3C7|do}+*>rnKTm9SUzFI2bL*q> zuW|;ei^fG9Wh4P?GeJ%EQ;us7k1*A-Z!;GE#ak324%$ z6fdu<`aZH`&y42+VdR<41veX(ul-->CJzSPuk!!Sal-w1lSas_gj#GI!B*&xa|7Wg8f}B7A$=D zG2p?zAvCL6dBXlSo~oJ>%nV}@6B^+J#0Clx+T>t}?56yt*FhTNC9cr{o2#$4bEOck z05_}e9iCrOBONB&iRw7pv|31QM8q`eopi8F z^yEpVfa@L?o?i=Y!Z*dm>yCn?%M|~R)~$zZ<}j}x$XoO$T6XE69e90hJ5XTv_zD@h zz$}?_k+Q?e-mUnht((1=%)^L}N(h>d=%+6ka$P(rwP(b~WEdgz8cCF!i&T%bssOiM zh+$=kpp`2m6i$1NkRVj8x>E6gBpqf zSoP)B%wMDEtn^1dpNumn*c*p2?*y77{aYHW7V?!Y((!yzG|{5#&Z!twWZR(CRS`XD zWL9|Z2n__m$!+22z`78ex>pAqp=p=JVh zrK-DhlLVIS#C>+{QX?tFWV}LPvmp|K8ac{H-`WsUl{sm|03tbt*s*uH^~jKxBJoN# z*0$G&(F^YzWZ!cp8H0yrMa9!gp$WAkVuv%!0sTlU36UQN8Os|4V8M?ZPZmwoROftWmzV?3r*l)ty=RdgBjGE|C zpD#Il|M}NAKO(lUM{}Y3a^ixun*RFpKnJ##MC0a@zh+$vKuCEPh9%4b(w zRnQ;7HLJ`C9jzsNx%T&I4r2d>1D=#aICT9D&S2gen8DC{Dr090>&bFp{6Qf8<1$xE zLQsQjc8JAKRCBPes#2DW%e1z|qphmj4I|Q53YUKG=HyX50#TC4T>&r5Xgb@#D2##M`Kx z4on8tmosX6~={=(tBuk}|?>h`ZHsW0#;3$m=D zwDpV=@NfxQTc}I2J&OQC9H2SINv3V^25mBgOi$uh8KsEC!WRp zo6k109uf`1CYB-P(Q}NWLyM_7`VZcAe;s)iHCHwA-HK1xy)?OVXP>NTm#+l^2;L(7jldnJXyY83{3dey|S|J@8m##wY-(~!`L!| zwIQ?ChUP9+W+Mg*3bjZ~Te&ne+L_k|YWk?A5fz=5A}RX<2-WhzMB+ zOc=7ByC;3>Ty#`0;ncZS&WX11F}a{8i$!7K;Jz8?N?4{kTSjBufY~& zd=SQrwYQ79Sq!3gHdI2A)`*hnYui1(CSZ4*MI&dzK@psEa9C+Dg6X6+Bzzw!tFrEV zsZ%Q`9w$;Vzzb(leJLTouIdqj9gT(opv_9ZR?J!ABdFux(bGtK5yz(BE8*QM)=Cu2 zj*e6BzyA4~I_o2d_zp?)?@{mg)BO)PNk6O-sS5z+@$8gyzih;BO0Oe-ui7ady^sXM zKLHIl8{hlhSR4d(5j#5cupLDgVaw)vCnw9T}Cl#Sv9 znj3ks$OOtF|C@_^VR}F@q9vClemKnlbGG=JK)@a7U=hAeNUX61xt7xE|h;*P?5}H;hvym&wICC003AxMEtCL~Q&t;~MsBlZik`U2&#Le}9>7vCn z%VlvFg3xza!<~k5^GRqA(y($2a(+0ZQA?+tfi&Bt0~iPaI9AxEB**_(LiF!^a?#c z);I}^W+5*52jg@iA?2pfuUzq~`A`0i#~7%3 zaP|y7z+i@1bLCvhR5-<`7~Ze!2=gN{m0ENwN$L3{pM)obo=r@W2Jr1)_%{p&Nx~!# zVo)f^B&=nfQEP-gGyB^K6AupsToB9H4YHl5fNC==-Ho}^_kWzcab0`yX%qZ|c^)Tj z+C<4Y>^;E&ubcPbtmU7 zcuAQuG&6pesJQ%Obz`xIG0BD2UBIFyVavTA~* zL9ZdjTs5;z&=U5_+pmlwBJ$vm|Hue-{e4w|+YuN4*nmFz3O2au@j4Y+h|#r7uWQym z#0z>2I*2J?u7DOWz{{+qBNd;^4l7qTWsA)3fcNBslg|6cYuH#ukipq}-i-v04^Dd9 zgpy*GR$(;({h}DmA9Ium19lZmfwTn?@PHmFbf^S}S>Vq`p{6NqYTO zowlkcPwuj+z(RxN74_L6qZL1pgbi-g8ArnS$}pN(=0Wvud*QEG_6UVVJJuuiTDnkW zsVNciTwW4-IMSP$Egr6Y=y$HukxN_FgO*(S59IZHk`ky?!F)&`KkTSn@p{*4>CQh} zGBfOc6aA*v)ssOF(+NQ@S-wUe3iTc>=FrkqK(Dt}e1A2`-Y;@(&Ypzu6gXdB_E|APJ^dE@dQ-NJP6Whs=o-| zyA!W)u4by;m#6UHSYtet6x+d>fbL5xZWYi(N~tNEvI9vxi`3p}6!?xsj-zA#G9{Ih zF~V&D7@RAB$R;|G!;a#A*Qkq{JF*lzLzJ3Q3UXJ)Q|VR1Vcu8Cd?Ym|CyJlawu?@) z8|cM!mh~RHOA&T%Ut@;ax!|l<508UOH(J_J9~a-(w1Nv?;v%|H6TRp#8BTDR)_p&C z*mp((F4d@ z1+3#b|5nB>6jK9ViX_|b{tn~x%8}j#>o)FOF!e0O81NwU~Z<{YH<$W(rnDp2n~ zI<#+760P*|5V{|1NmJ#TS2&cWh?8aKqlGDu$YdRiUF>#PxD`332b8&U$SZ%h;GvTg zC$oBD)3B>9*{|mg5K#{aWdP7z%*%44P>NHzb?jOe{me#KpEb~Fh+UZ*RmS&ETzJ9r zd~_>pZdcR-rR%Nm*6T>iNfTii=(2>+$Dc`t1a2@9Hr4*lh}5~*Wbe&E?Bu@ zB~CnP;!cpGeXLb&h|`(ajEH^>1al_!_EiR8*DL@=?>ffIsGFc?_SO2VBuL+Ber{^) z?lUHQ9l~BN+gCTl)#Z-e4!}H~DkIWpho)cb3xev|_Tv9}zy)()>@C)PX$v>PNcgwt zb}mtoO_cd#Kv^YZaK~Ih0ajz`(I=CBE-dMQ;ec*E@YeqFe41oT>@h~z_w8~vokAO# zei=VuoDSh4qtF~|mq>G=)Uo+%nm{43{t514`s(?`qW;g~z0{dR4oanCYQHjXn8g>t zUbqh}yc=N#-q-rS3<*1xDXRRfz-`dPODx0kvlKp&7I=Z=!lfks z4hvrOxx6hP-RWuM1^aUD#$#$7mzOKr59s++#^Y#r4w*GW5q_y>3ML0|@Zc7-8IdYU zA-Z1#?6|Im!So_1cEY<_=AULSJXewq&0l;#EY^dy zg(LQGO_4$T`wz$V`Gn`a(GnQ>nm&K94%8isqZrW<;g*tsY9}&)+QQ@0nxhuRl#{v8 zt7ry*pF{CtmjAbOD`BoH5{Hl4qn5PaO89h0^4sJ=Y`^Ns4{#*6^otS}J6gGVBAzum zc4`SuGDA~&yc59fp4BuP79Y>F9o0n;zr3rD{FF(=IHz=f=f4h{O7kn+IBn6?@Qx16 zWeUI5L=dGP?+{QpK&3$qI@X~iyKb&FEzx~4SQ~iYPxsQt7{`>Rz3N_H+y30Ht=@og z)hA`#q^XXjL781mw&vz%dpWl;d$?QY**!iPbnWuVkDjBVL z8kha#(I}%SKQGu@x6aD3gvVu>?r)A+7klJRjC_rR=>uV9wq)vqI5ZyMt0O^Lsh6?57~=?~FxJo$J9 zS&Of(juYi=oUH6F?DnmSqea6dRfCHtLvi(!>pl6oyy!7Ymn0uy0{}Orh((GM`HCEH zY=^dfWx%#{cd4Y;4%0v>cWuGe>S?>JDaVEu-lk%078%?%=(;VL;fE{O7+m>%1Bs27 z>N>hF_i@kwD^W=C7u5c&hT68Md1~au35q*%VpBEatH?7LiwYy_GZ)4f&ThY0<~blh z9!~xG^v%Q(Ias$hEjZM;Uvo+tQVlBS-0G$e-U19PWvex@<|^jn{W7~VtGjesio^So zh$U-U#GjnXJmdQxGatg->^xk|h9~DuP3$}CTONbhZ&|f)_@;zx(q_5z1N53R_he^l zYZ8~kGV+76C5CyiM7DEE;qD>cmw~?cwZ1}2HGn+4;RmlOm~o5VB~*#hf)=}2uxm8w zrXwfBYaJEm12W@+oyzyL%GFIvR-1S&9mN%SAMuK~$2D1pCI75kA#`NePiG-&(mj`^ zF&>h68Tl%^{l=IMH^asi)G1Ox<(Va>kN`GLq~QA8esRjJoJdX$DJ92E4SIe?5BF(C)V2hE1^~ zc+c-K|Kj2}S5gcNp$c9%k}n;dhlo2~4IRPfi2jK6kA7t$xe`hletnzta2FbE;TZX_ zzwk(om-R6DADo-N<-R|I+B~M>tHXbA(*HNvxqAiuZ&IEAcW>`gP-%DNw&BO)*`tZp zc~)h1D0^)4du#1fe5B^gx@WC!Yx8g#%iCa7oUn$oz>qg@?<+2~m#XLE2%@_UB?xQ++Y^O7XWc z!wZ|&6^NL(n9*XWO40agLoR%SVLw#*mAuMp^|y4-$^B$jIZKd%VJy86;FrrrxWQ22Sco_=&`Cu7`q0} zywVA87qZKbv)BD-((k~|>zeiGpb_OsH6S0(0VfWuQxCh-Oo*)xm9Ui4i2XObay>QJ z3}r>H^cL6L`n(5-G=5@#e_q)ZeNIFGdddU*Q#&b5UMQHUQta5~mc`VbQ)JWV8K6_Y zR9(HDYsbGUkiM7WAu$0WMnOa+p)4rR7@BLV`gfsbuL3NCvG!*1L6)CLY{!2PzVa9c z6o~Ex;4~d6Ko1ic?2cS$7d>PMbGdze|9X^53jUT7tkg_+5>vIYc?755wzV&{`3h!I z*!x^Yv?nn%U6Z2ySr@@IEc?1DBK6PT^dMCbDOCY{yA@S+@e0@_@`x>9?_dg7DI$MF zg<)v|!9dm|;ZMBff<3Tp-Pc&dsqYRQ>Nh>A^C2c81Njhs#Z-~gc|b}LP`b?el)76A zu?K7=MxRB=naF8iE~8TVHBbISZJ`d}Pbq5Q0@0&U6oZymXLK!AN7}gQT(KtZKE{Eg zlfT7r2~&-Ac#5GDAJ?1$u+Xg#f!?{4YvRIaD0dschQLeMX=lpQ`qXFftTN^V;fHUb zU9idE?)FiMKFSH|)`~;2Bq=K$<&yAtg>GzTlm1n1 z1pcCd%0yef$ zd{gnBcWlQb+DN{GP?vp852XZuaWhEC(wIRI*E9K}w(6o_EhNu1f~==1(;KBetpFuw z;2JdYA~;m>DhH=yOCyYY5G22H(s<|58uqJ#?4b!CMcIW{wtRM%@Q@Do3F2}NROCez zys>H^UpyLYO8o)vsh}rV{}$&w-|R2RgZF`cnX#hvKe(EryI#s%LmrYt+*EYNFN-doqJM6TvoSE$Co1H*=(c9O|+VX`SWX|ja0*efaK*kpQ83N4mN z#XxvG9LDVR*jwe0$LfqVsgUp2rmS!TzjEJ0koOs@(j80(&>{|UX1eVh!bq_eb+w$? zE;%tSpHet44$uXv<|s%(e)4=**1-#9foOUTSR&Mg-a${~s=thFt4ZUNCt@20kF<>v zTIqZvUQ;_ABBkmAfyF?i&Od!HW{4{IG1P<9oEa(n`?(T; zGo*fv^gb5-J_-cV*{VhfRe0I<52WJ8t`r;bV>qK4M|=03DjissVgDMtE7tO=M62jj zE$Xikw>Z3D`rQ!7o@u0C%EeA!jU2w&G)ICsA-kJ7eTyLpM?Nn-GU-YiVSGc;3kRG^ zDBpl7^}35q-RQa?oiWrhIcgz!!^blVTF`_{3_R=7vAeIzDhl5%e1yR@rv|JuT<%v= zbxZqAF=s99ZVy?&M};lF4C-+yA}*Ws@>GPN zRdV_`+owr>goQRG#5ALIVYOP&v-jk1)3ztcR35H)GAC`bzp-%-Je|GS@TUvfVKT&D z(F1Bj5uB#=n4kli(cr@GiYHrMMU19wH$X?{hzdJv@SXF`tdN`S zw(HCB{~_%yzuNk~Xm3g>6fY9oiWb-4P@u(Kf@`sc6n8CBXz}6@tY~m|FBY6)p|}Tk zFY>*)V?6f{_>Jeqd3Tb$$T@rMz1E!bgE1`CP)U;@YLh?_p^s|jh`)g-9Y6~gb8qU` zmVtXe)p#WPkXTr6!#pwQRc_P)s92pP{f3!Gb{O0-zk!?@`T1Dzjccp$U_1|kx_M|? z6r?4W*6J?81 zLSN?|g6uiQ+4P-=`kH~$=L@&p8cz*VIUn5L?yN*w4>NB=t6!!$LFV$#6vH36Z5ClM zETNDvw#1uhdFBK-19f2>P?@MOMIf(PfH6nlq1Mznrtz4~qAPgMoTh2o(UIvwOK~j8 z{dQZ@=AR!PUY1==X~d1tsg7!9vqi3TJ7Ihr2aJV6gdVvN(AJ#*P2KoOWQK);P!Sv5 zvGtE`N|cMV`kVN6jYY#xqu#W~`RFEM)2wH?n;uLuDmG|sT5!6KyK0w<0{}`VIp5{| z`1^HJsB-aAatnxsySitsO+YCp_UXP389Wmv!4gT(lSlv0i4eYq#Qu41TRWa_PSwvp zxwlAclYg3w5$5=9dsUIkAsPt@91IYUyRkhk(CS4xe zjYXu#sL*uIOZ33F5q@B~z1uK#ZdUML7Tk>pMH-^%JgVd@v5KX86gPsv?NgpPus}b{ znF2O%=IHNdWaN3$R_FZM&_Q1*?UgK3@iKJ#x*GFP`X%D1Dh0?*=Xl87*`pY$-n|yv zB1MQ{P&8T%rlXqTz0St!Hy}4iBO6@o4@??`E`DH4V*j#1Fkt%%+d2Jd^)W51@vzh5 zz#MRnS zk4M&|ye5~{#05is9kV|4Z)2_vy9{_9)qIQ0S;3;?`aGT9tlLkh$r$LuzdBdPZIQx0 zKWaB3{wk$u?#n-3Pbq@tjohf?0M2sLY#s6>jalv-#12U0@q2E2$})j)LQ6o^Uxv*l z-e)@SDw8ldiWbDHbMBm%vNL_+WUabn@WXa+S~fw660cy^@>7cyw)RC-Eo^0F-}}ts zuUTi~7%?YYfd3T*9ZH0!J1{VyQ%(&(fpq5HX9La>Z>ovDr*SPJ{tYZhm<2AvW@cgT zcr|J_m%US})TADs93wp!uch$y`O}>I3_2b^o?WGNks^S(M6^r~TFQW(qT@nVes3BG z4e>i>G~ag%775L<8BBl;wZF)6K)8=`iAA8n+N`gg6-{pvR3E%>ZBXYY#nV`8zK-!$ zw$zG&jkRo(~oi0ey3r!eQDxyN}Gzww;&&mbf~3Z|SZu%_0eIH}VMT=|FWmJE8cuM43Q ziddz<`*Akx{1yX0_cOhn{`JEpOmheN#0ApR`tge+1`QJp@J|F=XQy`p<{PB?jD7b# z@-AF*Fa>a9^|iD6LT*YPaBYta`JY`t03_Rkim`=pHG~Y7V(cP)s_YP2w2$4LEin3#xC38#T2$oV8lJQRo1Y%m$3=Ag zJkx~V2bgUf=2DtJvY*?9Z|r$^BdlkujfWF`QeKAZMR~a#!59QW;LHX|LDOm4cWW|j zsCH*<)z!neXl3O}y`)=$D^B5gz&V+LMZMXw*l!F{v32+D-DK(7;8H-F!9$~TW>{^v z*2JEkv%?}r%NXauYh)}tNiL7_q9>!()t*DY@cCwp2j%5mDL51K zboArYs8Cxnc@IIuE}xPehFMNgseQ^@x<;H#HS8qt`V1@RrsP5%xD8a{xs~CO`=@0C zc-bteOF2}TA`!xg<{;2=stx>oU7Rr?j+lbIHKmM#MiwG7x%y}wx-(DB_+Xx1s}u(|K;4PW^m$5(apMA4cXBGN0xyX0foaz|*rtUA2U(W3{QA^P@3UKby_ja6_|RFM z=|@!FJ|Dw+sMLVz-D#fuW+lhura~_9mRaoc>Ki=y5_o(AI@Zge?R5A5(70=)_bZ0B zhu+OC21q1w2Q3-ic?U&&21bk7*T>MbS^OsHpfhBmUPjWnCa@p;hD`O2=#|k4JAaR0 zBG}kp!PqgKXujwe6WWq)% z_PdI8NvmUeca<^(3(-0J2lgZOAvf!T)Zp1MD7>tiqPypxJRSQFpDdbxplaSYbzgW$ zfWC7uv9!|qe4z0gHBZSR_Rqd>{rn6!VH9$b8M^Qw4zC)l{iGeXB*pU0HZ6Inl& zd4XN|PWJI5DDiK=mye17bV2e*2atqbnA(r(EU^PfDcC*7jL_gt8%!1rb3hSCBE;y` zE{+=pQrwFF$*D-c-u=W}B}J?2jfL4TGb+(>sdAzGmg{6pm0wDkt{Gf#KFa6jJOYP;L2DrDe3d(HL_0kd!7WVT@XHpU5nrD9? zLZAuemaWN5vHRw>ZTb@obGb0HRu)3AMaGrn*kDnzW%Jq;?`4~LY>qrKx1rg%CeEl{ zTaqnkQ+&3hNM<~62E{#dNQ64=#Ms!CE5$BWvQtYP2wMu^+mhRPfua&;OH6PaC>VT~ ziCyqNn}9FOmA{!Hn?9Wl9Q2#YxL_HBT=h!!*_p@KZLeMNRTdegm^9@T?cV;N0Uf>r zvDgK8o@&kr-EZPiqV5f-sjJ1|9IUih)JyhlmQIWXs1PX|!^?eVRs%%N8j{44fBTon zB=RvAN;obsV%2>IXVTS?=tb=)V>OyKG(o;bm{Tpk-$5lw|D;`8RSk&w+M_rly;;gs ztN+hn7`b-Jvy!&`J@^?H#cl7tDptg>T|SY-X)XbKw`tdlhnM%XeS818=@Jt!;ly?s zs~Gfs!c)ar43;hktx$s>GCqMj3^@Lc0Nwh+#!t=<$}WebV_W1&(DalAEDfhpKNjYEdAq zLCaa!rIhvBHI&H4xG*Aj{kNvqWgD$M<@`0;k7&9c@iQ;I!iNuHm1()dedf?mNNF1&|uzGfOKOEDqI zlCUJ>i!0j5trU=pgGkHE>3Ucfjtjm_v;QP(Qyiev@Uw^h5wnK8QqxwWov|4j+Bo=w z^hpX_pE%5mgiFy*?u6Ii%gU#>>LB8JwEV)?K0vs{sPdcZ$Kmr5vdVM(6=cuqD8F#W z(d(Yd57}Jd6KdsKd0;?36Vhl5#&tB^bqM=olN166CN}j43_!}JB;R_MqQ(hpW{dk! z?X0Dzy5k=o7|@P!eznukjrh@}S7!3Q#6qyv&e@PPK|O*3cY69@X~BAVSdi1@5Z~Xc z1Tx!S_6?GB5`%6Ho`R$`YvI?+!nES9kd?iTHcrnAG55k&J8c$&FkVbT7J<@$M_Mj6kMl;1PvGV(x6cx@;iYhvJF_p#>xtJ=;@dGKA*Bum z{}APpKO35Es2|%^f$lrMoeJ+=LuPQ^3ntAbncaqXlvE*c{h8p7RFqC;8p0o?&nML` zLk^T^5B;?J<`VNLnyUx=gW@$hCrRid2d27MW}9;HtDOgg|9M?Vdc%WA+Rwrd!1I4f zeBUS)nF`e92)w?<@PDJIZ7A*)EnOZ6f&G=UX=%$~j1r=>vlB)0Pcr|0?u43B&oTO> zjYhog7d{J1Ahi}Xy=6}9zva^OgWtL2+RyP`kB7&_e!AsHZ?)iGu#)?_;tQ(%bIfr5 zdxAf#av19bcE>$w7r|53Q#L0p5yUHh_jm8{>-so}^4W1XB0Qo|i8<8hThT!O`N+t$ z`;5z?3>uzw7X*GxuwdpILt`*Sg@`V3Si^NRX9io=qf#~kU-k)*(gPu_@ zS=oA>Z(&ePw`rFaekn{cYnngjA37(fq?B_*x+bUPJOwGrgUe6tB{^*9p*u_c+4)lA0^dGRbfbJWJlo-nS-5FgyZq~+yWM9~A>;n}Vx%co{du$NpgQxtbuK=&8JXE9!)z6k zpOU{r>z1W=;WRJt$YR8IgZ!xeX>{uk?FCxA(BSo|zCHK~bd3->ykGH)+{@+o53Skb zamETI*Qy8@(v~Mh`yZ|sW2Qck0iC-E`Zs;&=ohq9K%9RRwZQ{#7iC#>x-5sq)^DoC z8_t5dR>kg4J>54{qYrtB4Z$`0e>w&ifKqLc0cK^9vjDi2^9CF6I9Us8v>Q8sun^XN zio1%6zLwu~ez8X;4meJWu58RSvJAazQ)oimrTl11pivssdcBm;a)REO34i}ul6!Lv zll~R>OmX9Z$s>(n-|LWI+O5t?_w(rB#J3!2rw@3gr|d}|0Q~|c6CqnED&jdYg_dC| z+B)h|QQvknR9w9vx);$VGeCMm2>BveC1H|3%v2fTO1HkmtiaL7@Y5ITr>oH<|Af1F z`1wPxt`9H#HkFr>=!74W=x5;|dZ@`=cEN?M^`XdS!005#{ElH3b)P{t+tkuy{6Phb zmS*OqDkXh0=@UKZ!dt$(VK+>57o8&{nFR53Own)jZ%!l(@LP92Drph}VZ2O)C{_;H z1!k38Xdm@Cf1DJe)JERsv}1AAQ64KG?N5oJfVF5AlE($<6WQX6P? zSByy&4XriCt~W!?62%$wR;)oP<>=&vXv0BiE3B6pt%7@_D{+c59q|z)!mLEAR4+ z;+S~AJRN;IoCzzzJbS&Hsw3mWVL;kr*>HpsXV^ zB)WbJfG?fYLD@h3jL)pC`qy9;S-b%(kS2T?+rLebW9)RMd8#-)4L&mJms)r`e#Hh)O)ryZNYTm0ivf zBVR$#fD` zSK2L~DxtUg{;LO~99JQ(NOPA|UGbs(xFYxs4M8AsB* zm+zZ|X85G7&Tb;R|3iD#boa!sms|z|RGu@y9kWf)m(YAeApBJ z6Y^kFmn(5(;({o)KSzV}k2JsmAsocj{5;d5>hE9T#AUuI=Ox1yzHv!S-z#!CAG1yp zwHe@?Xa3pv`X1@*8IYp9Yvk0CTQ&e}650oW+z@;cT=Nf;Ye&vNzSP~qd-67^u$KHo?URZPY z?YZXKzU--zlSB2RckENH6fDD;;?;M_IY;W=#fa{b0T?*dZQ0aRRB0;~SCD@XjTU0i zLx(*J+z%S3nOa(0DoMS#*ti*RB$MHRpZ92|ev&~;eC2g({_eX*Q>NUR4V&5w&ONUv zwbQAdC%ABXBTh55kYR#PX*tLVLk?#%GDjs*QOcic-UL9qK%-a@p;%3j<^3M@=cO#UfJ3; zqPx8%*1Dz3asgzkZ<$a<{+ePZVr$}0+agPRM1w`xqN$72@*+HvCrzh?SRkD-4zo2< zEdX=n@~2;1LD_t`fZ4%f2UP&kC|8n7ZJC0IAhF+z<@t7>p4W|AMe<^av;@;jigE;6 znLepvv|DXhk?KSToPzBWDv4#O`R(zmYEf0pD`|R=RmH*X;?TI`LXLN^THLR7A`&=_zP!d!Hd#Y z2@B;JxhezmN$v0argborkdpBq9bgs+cF3AeSk1&+6ER-;`|t}q%sYz6kJ;V@l8oS- zt1AZ|H~@rGgG~vr{Njv)X&vg9L;lPeowOW+a0t{sPOl_S;MWMK!UCqfjERFNvtrXao9FUG;t+Qgf73mph3IOw;hS!M zxuADgn4SSsmyZnSL`8QYBbWD%!<72a8yTCops?bfE+qmGOB2odxA*~bV57eyZndT# zMLhP+oWFOx^4#v*%q9I&^CyMMXKebL|7O`y?MFTrlTjw_kfGfK=riHj@SG=M!-3{a zAV*Kd?M%`Lyq#L_D@n7w_6Z8+0lxcgan2TLl{0;y4h?9wyLL>G(F<%R$EpJO;7%#H zU_y)uQrcnObmmsclI@qR^mZr-R z6H4iQv!4LyP(d@CQWn)h`*$tI3_S^u+O!~A`KwtLX2knHNN7meHB!*dDr_*C#u2gB1pax^)76K zZ6;o9MV)j2eVUp?v@HfNjLnJ{FdV#Fl_45*m?DEr4Vkkd?;xzg3zLvmE2<{R_*zj!%uz9U({)SVl(Gr^q` zu$7`?e$5LZx&WqjaeZD6ekS_bXaH2VlM-Kr;2u(VN?>mrsaISml_l~VR~1nJ-V44w zAp8^OW^w$U_~5&Ch8%t=6|+p4Jk>jpJmvZ;v>;NIqIYZ@{+--QU7a3FRb9sa5>nLU zDQ3zG^-nvSW(vBhi=m&7+B@HyC{bPC@<+|9xBo0Ydb>ho?hf~qJimyUpY-;NHnUJ> zA{iwyU;71~wl{9K5Nd3S_iER(cN?b+M$tOzSXQodr#p1Dr;xP?g*I>92O)lL(J(qx zM$H}X%$dkYo(90--A()fih=O>_@gkLpEU2H10=WAsEWG{5;daR3Hh58qLi_sITAK5 zX7*x|)Ix?f)VHc{12EnQ>o+4hIU`dZd%f^m*+wU!MJlSD(`z5mg3O{zFC-58GgBm@ zQs`h}m%D5gnO`epFW>IY+I4NM+28bOsUKR1gVMwk@64Euo0%2b-pGG)yFM_?z`Q@Qr)j&R`pn?~NFZruI<&^{-ai>|E7#|fdN zd0hQG8WbT}*)Ylh%YAQg=bIwf&1CLV?k;SxBgQwByU%O+OhYhczAHdz)?YiRccYj0_ z>we32aGjHHZ#*gglAGzrE8IqJ^vHJSPuTY!J04%&pL>H`SH(UhBRk1!D1>|BqcYXH z3xD{%t67Qw#i!$>jzJ-cnUpfY?b?y+$ z=!>GYy_xF56e$Rq?y{HY<^5cX?OgEmzMARA0`JmO94IgnZ}>2E4hdF4fHfvF`cFMx#JQt2%xwwdY@DJ&^M3g0^>A2MgsNkZ30$Itd z9Ei!VHhgdUP3ir*$42*P_lu*ozReFl#_|ej6B`3JXckuwRPk6#gfW}VA@Xm?M<&Mz zxe-|y6KzXz{jJc{JHV7Zv(iP+b%~*yylBfI)SB-Q+EN@G*#k6#10@o&ka-FIQTrj8 z3~qu^;r}*sg=NR}6F->EZn;y|Cb_ukWzk;S=`-7vOW3vV6~}Rm3yA%NsgzCIL+e>7 zEa$+VuBt}74t%fgGuz&@P%tJd4*{ta{uYyQ4xko418umw9BzaG&ADcK5^>=aKgtjw z`x~={=B2`P>W`9vdQ4Mmb>uUeuLDq=1fG2*_ka-oDO)#;=qQrB~wosTf!_D1M zq2QNf{(|`=j>&zhe4qEnA6eJ4ho0LvCqBPsc(@kQcL{GY?3gaIYmY4?9B!hT|9*G` zEh(=U<>uJm1!<_%Tw1u-JrY{q8QY}3sG&2MneP0c)SN=6;64xCkj7c?{j(8)&g%Xg z)VO!BPcuoJFeo1s*bk_V$rim)JXm0a@D}FU*g7OMC~aR!&NF#3TvD~;TQ$q93<3I< zY3gY<8%LPNsq6n#9Q{CL##Fjk+YXTqBVRJ0pye~f!PnKrFqPHw9TdWHEojWV*NNJC_y)`WrTGrx=(J>LA}n*N{r4Mc^^&wCq_DGU?|GE%YpQ z+6@Cy7<#jO;vd)d2D}w3yLdSc(O@V33rC$47>6f~Bl}*iLa{O1W&trLYL{E3Wyh$E zi@caqemS|NyBX?;k)cI?f7{ATz=8&KBs*?;M(%nF1nkTGO$o*HDY#YQ+riDWO~K z(PAfh)5d6%?>;k#8D}xWw*JoS*MPed(au~WcD|iyZS+VZC01P`A^lO(zG+QXI}LQ6 z8W%BB_m}_=v1m_vzUm6PSUe3YXxpJnRStkQvDXG!$tE( zPOid-W=QdDZVf%~`!n$|`?U-{boJv5=6(&|r1f*4_&m#bYM+)SsYCu#*h+M%HOwMJS2NHWz80jz0K>2X!E;KN(8h?uA*~9pjnry=EQ$!oMf!~As{si zVRg(S30<2O+VX)I7Ft3*cRq9W@Y!>a`4+c!#{HogPBf*1p8mdGv0NvI=6k9AVi`X~ z!`8bHLzM#;b+u+1H;0Z+H;&fi((QSj;xZC{GW%o_?TQw$aZsY^Z3)$Sxo6c6t+rYo zg~=S@Sv%`PJ>p$XMEWg;UWITI!KbBVcSIg^{ZpCm!l_!ST3q7{o>T^pHEUMZC5Sd7 zR%HyI@2B{Dfd+>J&9paj^N<*8CD&3qk3(WN#>{#^7wSZs3tZw5Xo@%@C_@7j*&JPP zRO=cd#`v&-NA&0(j$)p;ljM+9`e;x?tzL6|Q!DcaspaozB3Lel{ju>N(}aXv;!dH{ zv7`2s$o>j$a{c*cjpL)nKl{%#0YdF_Uj{3K&K3+yf48)Ug+T%}o>#@3vm-(Mt|hoMs!y}pz11~nx_QkH zREgWjE?)&AZ|&|()Nr_4aP!=7@vgL0#p}W(@Znh=Usuh4FMr0dqO#%(<5xZtldzgD z{?2IPvANos< zQ`}3;MlqW$<%%tr&B8~7eshkRp8~egUfCbh>lPaVF_YCM-#F+hzl+RT&k0KTd*`L< zT3r6_H|O#^6k=THwrr(zI9$1cYrI4Z?~bq3(ZE(NC?|<<&rkewM0K;J)~+r$va#Os z<3#z*dYI|yAce&3SUd$jNsHrOJd0RVE&rQ6x0OI_OUenI(o$K&musp zmff(@=Xcc){5pwr*#P;um*OlA-bP;pO6>1m{8>nSGUzmb9Ip)+I(zkRL+uy;<}_CD zVbf;q?UAh$Wz8>rt@ZA^_gG=HAYJQiUl8f{T0hMO1P_Ti*8KQOxAr-~_O3XS?Oh6u!O;%Z3+UF#D3M{=$&p933DS4EqwJlwr>aw5x|}T%rnLXB z+-B?T|17s5)q3&&K4U=?wA_v3NpX$qOtqKl3~UGmBbBx=23@GEb2}Rxi5)2)E=ADz ztD7NNcOe_^Bq1A+ae|NE#zv7Qlu2&b!J-76Qz7sA+Ug0e;~1m*bv<@wuP(k!6l=!8 zVqxXcbKaT?U0dgu;|$0O=AB?<<1@35%GZ~7-CAdlHKe>=eCn1(gVbUA ziKj154Y<{~v!_%P%2XS+gl^J_5OwP7*QBAhStLeJpiV^(aE9QYSw~ifFmp#KaHXFh zqD&Nwo8C4FN9{ggmAd{t;?T%ytV%~3$#2`yZUQv}GBU{WrwaQ@q2-wCsvlFy%5L)6 z3mA6!EO81BWG!ghR3BWh7!Xm(;bY&)8P=zLJ7eW$O1~hJhYFoAo3@+w;;bmP*XN9M zk>y;6^HGrtCY{b2dyz&dHgW{`pbQE+PWc-74~$hV@}4s#Q=>Z2&*PS0*lM*hRYHQ6 zGJ%3jRmrT57@KlsR8^0wmMI%`YK1b1b%M4)mSxmlv>5?Tt)tM8i0inT#Vv>?GJG?i zOU`m`ahFXH<}tBm-U{7XkN<8&^NHJEKSI7|a`aWw+ez)`CW{Ns->k|fK(nxf_UW$R z<{Xpi5Wlujy7S^g1i$Q0joBRP)Z`eC`@A1C=a+t)9nCUR;Ws7Jb{Yo@%5prK)=1ZM z@$`e5Jlgx*&C`E5)n`G%p@Nh{TzxFuMy zGbK}Hji60HB0R{g>wx$#-d+D{kvinA_KItW4x;Wl1!#6eMN_Z$a#r3L#)_2myO9 z;P+Y&Vks_ zieLS>xvy1KJK3u!n=0@CHQw^>A~s{>i4Z{R|2Qz z_{wwe)d6PVS7vUaWg=e9&r}Gf21oNn6G%JdD)vUQ)t09yM_(el!x=_G zm2OzlXPA>p*2raildW=l)02O1h*=3Xz+Aek(bIPv7$zYmP;@8=EX_2n%i%ZT5<2{? zYd6O^Q{a~fY&7%J&tgdW37MCs+c&m_hg+YMM*}GtYEl(LR~MHtTia}KES!Q2XPr#j z?W=MAirya#9#>Zzu!#Y$G)lYso?o27BK|}3srWNqt`WBkXFhtvBSFaXdim?T!Xcv7 zJ%)uwnpR=4vePM!%CL2dN^d1OyJ2-$1h(E4NE>mN)*og>wip=u%{VB-vZAS}WMCw9 z@YY+hy$MtECC)E2w3krt*LS3A4WZbqWs%LJla&F}F~!S;{z9b+F}@59&)wyj#-8VO zP>G)}DgFu*eh7meNt)!{y&v!!-;LpUgpm4yu1?=CJfhZAobA zmiqHZydC?|4C5-450tCSb|kZAiZfA$b9Q^W#)a1^g;_=IK$wP*Woe&{ij#_W$>LQA zqEy+VKynVu6XspDXXV@c!Ch%u#Ap{tiCVDjq=sIe>M5Lm?KC6$eNWj|N{xO>yGL$~ zs0~6$P=VXwy2gPj+YcU2nJIANYR=sRqi8==x*qqC6(X^>&HAQHmU+h{No$myNvznk z*{{U@*lf0B#f(C)eB@~K&$4wW_?S=XkWYQm_~#_txYg>qm8c5JE!2Yg^>k>-Er2pN z3L%77^h2rPGW=AV@)oEE#-(dO1wz`&Gh3b$Xbg2CT|@L8$=O)z=YBh>n>Po^049xv zV-sdnOec^7Wf{zR=E$z$JH@ljn>E?9?Y7Ra#ox}hEYk&LAPZA1obCi+^2LTSinJS41=Wyzr@_2c1)4I_IMKBfds< zfG))Z3{vmH1}cm~hyTrw>G!KN+=H`x?X=mMk$$h>QOU#@*;0o*y8}_O=o&$dJC&P8 z)M8%|rK+2h0zqF9MV5z??t6Kux*@9;K0h+B*EDKp!?%L_=W|$LEPWR%kfJFbeM#cw zS%Y42{(1K@Jtm4hFF{FuHd=`Ah0Iy4?qXeIAeehb+SYyv61szPLNQ=PMUw10{bwW_ zGiA(7#K#}!wW7oyAhH64oO z_)IcF+|85LNMsSHrKnxmZ}s*b zg}-2e1C6Zx;TMDC-T+fEtV%f>UQYgB!%4>$id3ex+DC!>5~FaGMAI`qMO_$t-vdWWtHd^FY zZ{ChC|7z9!?O*hPh_n!*Vv*YLn_zFE!mlA0W0I_sMQ`6sC3-iqZ2;5p$gVW~oeJSA zALGdnv2RH@?$cOF7b8Al$`K6x!q8p-DLU*O?w?)h(?MZ$-!JvuGiE3F=lC0i-28Zk zKc_8|YRiA|{okeF|KHx!+;*#)>~j!r11h2m6VdTuLu_?Vs0SYZ;ssdBIGiQD*S=AOE&pCkOp^ zS0C#w%+@o=#@zBhyYPxTff@7EkA>qu?9^PWHFKO3!2-c~^&|>4!9@);i`$pT3b=6wt z8fi7PJBz;D++uts{jj&pQL#f9JoX}Ix~JQGF@N4 z#j2&1J(2<5LmqSj$U5&pTgoR4P4Y9<%=aI)Qa(EVDnGvn;h_zUu}THu07!G+lYdu# zkiUGdy)MnLW3k}5mPNlyKNs*APc2CF=Z`J-5Kwmv#7$g zWq))Q!d+T?8ZJD8$k!v8qf+Q>unwI%SQA;}lgXr_`X8EKY~zc##>DB`5@QAY5L7|v*~t+ruxjK@tCaI3mZdHiL<&WS z9B_gnU?kYq4xO{J}`X4?%$@4{$7dzz8W&QYfYURvk+}>O=@I%yi(WHF^`y!vU&L44m$wVh6XDe!JiCV+2_}qEzh1Ad9I+p5Ua;gm(R${+kOc{sK-QNuEa)UPwqCDZ zj7YuYGVSL-V|nBCkR4CwaeCQ9TMu7iMn3+y#xRsX!e#x;w<>yoY_xpukHZ_9pJf_^ zO`Jdd?aA8HX{rJDshC1Luh;_&>fg&1pLC3MDjYsBym5%j)+u9a2-r0hO zhS^n*EAQX5XRYt0u>)o#Sf0;==%3$N^emD`t{oxp7z2+J0eNHY%=VAOss5vwK(9Dr-ez6CVexh=u#x?aFxrvdOAr*-tme>|uJ1x>|W z{om&yzZfw{NP_(t-e9<`m!O22w3DNqfj4HagciMK(}&r7>b6B_%O*1u5cMw@w)LXL zXsC9xNmr(pG~Y}&eAi@psa1GHXq>1>AUmthBSzchhOJ?QWm~wJ~+-;kjxH zeWPo5O0?lKTx7#tZ1vdt#XvmPJ^FWsB3n zUSxiv{Y=T`b0p8z(-u7{*%1`nxB&9z*pZJ)zb|HOmrJqGc=Xz8 z_Bv!YO(x&0jg~qP7ijWKeUtwv55g%aYr!e|^$s<&L<8|s+%@6rp>)ksKW47XxbegT z(;Wv$w>%PsG4D--jcUYE_kd{TmqyNvyWHs~<8wvipG>bWj+k9)k%T2+OMkAiKgNYur%_`5@;`>3>Qi=zKFm%w{fE|Q zK-1Ohsa?x5D2uFzwTMa1>32^0RRah8=gnxCqGv}uQ^H$Y8FC!*I#7Q(RDA(iDzQFa ztMbjUOmgHdjoiZ|^}N%ew&Tk+kV0aTHA0^DFkfhkmdjP6QTZT)W2NRmU37))6r^I8 z{1&}Dk(pyon2p>}%Aw!8<BP{X*7SC&e{7VY?cFipDCuH)_f3?bq*k zJmZP?+dvugpWEA_Ue|2|d0AqyEk8Wr2lD!ERlXZ88!kGzu<1y%iQzM~N84&fa~-1P zLGY?Esn!@9Jf|h952jC{fZ38Q;k5Fn=ZGHh5&m$G#uOi4(N^3a_`vk(%=} zqx;J=An&`Rjd#e;1$T-Ym!A#M)mLs8DZTM_9xphlB88cjVkaikDVqU&WW|W;1;8qjrJWB(lwCtJzy?I2NW=+1|c9*}&|plG`_v zR7{DKXn5gf8cH9sf?rdYecnK%$ypH53ha0^w~$48O(l?wH#GIYLzfhkXkXCfcXafz zxp*08-$_oy3FJy0S5`dSa6|s}i7~uKFWrZBGo+oGQVcH|N+5W+AOC?9~`5u7W{v>%Do~`C! zPGzABlDgL^s*F5bhJ#WADnHe=`+%pGw5l^-IS$+ z!)e~ZAURz1XA{8z^c%+-oQF$|7RP}qEAgp4w7rXDC&9sHaDoxEdjt3T<@!{&G2dz| z?9@O5W#{=Ti}K4WCPH<+(&NRc0M5&_N!y(RV**ltC}gCpQND_Q7)Wh;a%v9kYw~u_ zS1yvwLV&hWdZl{FHFjjZEkhF$xW55rDHnrGs=g&*Mi!Ojg72Fu)nee4-Wr5nZoS~W zXrgxqkW-7lVe5r$^2w`G=fa_m&Yz%4$52mQCSf#5n`5F2{)_CBjRbyqVlD0O{#)~#_sM8BUkww_tekHr3RngYY7Fi!sVuqJpu)Y0F_y)q^en2 z1lzZ4rBcJJ?Jg97fel@XNIC{rbg-?c_rmzI_LIfvSSw1VUKXT>+VP|P|GfanZaQhA z{cf^HfOny~bK5y1BX@Oek^0CW_e$MROyM?`JTuYHK#nMN){0S>j)z^Du2-VBX1(I3 zcT50N!(g+wzpJ7o+EeTTth7BpOJ7n5#7)V zLWZ!#7Bt2VASvcvPo%JPc8M83M>eKFlDT{a|W8KDCi|Osar? z{+qL6zb=@#21qu4-?&u{RUd7Vo~!f5-b7yY|d<>a%~+tR9!$H12h0%^?DaKjQHsrX2o6Q zf*CHr56qFi;fUh6E9;@+x{wiQ!A*sC(Sy~A4{T`cxf$EZ%!tCf6yy0?*$MRBSRs?9 zv>*`~4H#*#MWjg`F#0EHVfPWJD_qi83%yH_RB_mzlwQ5YH3iuxBl86iQEV8f(i=3D zfXHgbq8PVrcpx;^c0bij9iCN!<+VDV)-`-yD6j%E(}}+9&zOqV(TqifSrH6y^HnB zCg@C;Mn8!{$t7Kr;-tn+wYRrepDMRzQl7c~DfW_2miSnH-1Q!gpDrJGlPdPf_BUN) z{8_hAlscaYC7PuK^pK^&c6m?q%T@JoZHd}Ay=73FZxrntiWM(f99rDny%d5J zLUD&eDemqCin~M5;!bgg;!ui1pcD@c4hb6ce{;^vy&ulEGjr~}naN}_$t0P)Z}RND zp0$6gTL|xqY3z$1amq>ZW+wLf7Y`n??2BdGGXm2f_{93S?e1Th_dvGjs6-jacd{l| zy@HRs&6y?)O!Xs(ufy1m;{VjqZ>hLve4akTwFwx+Gss&93rpw zNVwXCpUSRjGTbuqG*6GVLWptyw)|Tq4ds<+NRJ*Dy~c+z8TGn583#eA zj6?heeNPRO2S}n`mkgE{|9MoIcrZ=GpLBJdYFvYZ((>$6swbp% zFH8>&^Bm{8{{q!&1%}-<9y9~M*1u@_#79dd+o0kHOcMgr3InWpOtec*NUC}g>9x#) z$y~%j5$#x&@N-3eHagkehtgOz6Y#uxI;4K=?q{6}ui$mHBRj94Bge?Kn_s4A=Bxso zAx78)&lxma$kx#*sob6llo|bj6{ruKNF{r09JJJeN_BF|GZ}NpQusMK1&BqTNvj7m z?KFyTd=Tx4xBb^4Pn$_cRkr3P#K3G&5TB7?sT*5e;||^~YHKSFlrtDs3tCKH@eVXQ zJ?<#zP1acqVfk}N0(8gz+RME#qM{9X-!LOU!+XL%vDa>xBu3~Nu?wO*er6F6ZK_sx zYd>y&IYYs2&^;C(sZi)vj1TL~6;a4PD|`KH1@-pmWl<{{@s+fn!ch)dS{Mj^K0dKm z_cGlV(N>QrY8O8V=(^SnRG=3@-*QjmUwQRirRx> zEE0@KEi;Kq>fmo)my{&f#PjAwB()Ap$QHDHw}B#D+!yFw&2rwuf8SR@7re++_FB$Cv$M~#gV>U z3i{hv%`8+M@$Ek>g8Uc1s1IK)iT2Ae5k=|{f zv1@@Y2{cJVZU(!LSI4#fl52fn|ApkDdirLyKNOPOYL)b{S35AvtVt_Z(>^K)r9X64 zq<%X#J1~!P)zRO{C%jID?IA#_Hz=Qnm?S%tmg5`5^Cv|J$q$4^V_P>MSAcfpT`+!MzvsE?&6zI&YEgw+yDiH|ue_56`?c)WcKYL}r6(ruMD=Zh|+Qq3Ij z7E5QhTVeY5)2&Y2DGRgfNMM$07ewyx%(cv50BQKvB3Q#&@)8zY3Z+e))wFn4z^x@Azs5HDz(Jp9g(oiP6eWd>~{w- z48SRBcPijTvDaK&jxDu#JM^_4kQ;dyY71ZDdgr(H%wH{r9$Tbwn$5%m zxHoDd`^#O?1b_Xkxv9FAc|B@9+=Q&zR~U#^218F$%_q^h1=XXZ$YX|Ik+&q}z$zA> zNs;H~i`z?~EvKzdvIkh<`?^a!SIB*fbLAC5#*~1J8L5>#AfFm-%Te$bF4;R)Aav4#473~da;|0xcl7`aO)jDmu}1JwZvxF5qo{gO@e#JvO~*6Ds2R#8ESFA`M9g>M85#-vZi+IDvAp z2laiM5Q$_mB#8x%U($a7mDI=8?G$06F2i1KbmehZKqeCtDhC4)ju}dT1ezd{dMF}_ z*MwUJexF9PGf&Xu(KY`9P;vjRL9;@;b&U-r6rn>2Jw)-+0wsN;87q19>8FVG>0st> zs1>|P(DltaK&Vwzs43>2=tkzLuozyL>53p4xpz|3@79LgePYvg+rGkmjpm-;zCT68 z=R(P1@Y-DSqXW*t!#zE(_lRFm5m&+v^YJ8e7Fcb?x$MR)=t?GV8#tsPwZj))@0C;h zH;`HWgVAlPYFCa@Pe0X0PQr_`5dc4S*}PIPwJH}AJfO|i*rgokFXr>mj;ePBU&OH& z|DU*Gbu(AZPsAN;*K*;96KSDrq9JRc&DHY_XV0uiDUUzBfoF_gq=>CQIAJ_3R1Gjn z3pUJ0<1#;C*BBQ>Wi}jo+OOsFZy0WlS*KF|GXo7Ay}XahRZ=x7=n9c-FflVIzcgFX z4Ixu879H04-ouWv00#pfjGrev1_->RlF9reH_n8m(k}f~2HfSjM*(NWBomVCyaVj+ zuP1eceuCUh&nV`Ls&_oq{J@T+(E%YGH(w443_nxXdQIPEKtB7fZi{^AP>43p#G`8- zSMGJ1!jZC02azr_@#~xda|;zJe|>Huu=iB8y)74fh?_O)vmXjVfK4k9qjqLO?vU@k zvl3MwN+G%XbE$$OtRF63Rg%Yhdc9v|>$7kDnxL=$ozNs;d6eEo)Wf}3-CgzKY+A)d z{MZO`OQ}(>_GR!`b6nb8G_EPg)IDLrA1dQ0KAUv4)tVCU+-hiHA`I3FptjEsgH#2V zO2blS1R(Jw2-dG%GKn&LZf+Vjv4iKTCTkA)EgpPzgT2BErs}!YfYy@z^tcANxl{)*$W~5BK%$B ziuVxXsidoZ_gQ0ZU3WtERrUPa>e5cO1cUV`5RgRLpdE0met{^xpJG9DvExfFG0b# zqzS1VylDGWh{o4JDhPvE=ds*ie|&1clwVFK&ZVtkdvarlk(!355FgC0WAkjpgKn22 z0qYWS<_6I~?sDceRrOe1${kixsH<$VIk89g+d?WY(hd9T)(2%n@L%qsC*!n=!m0b! zE3V~lJJ+#1CeG$(o7w8KpIe2ut#m{*ukM#9BugUM_bclay?tTnaaT+lWAF9H7ONGE zjug1ibYaYU7mVn-T8S1kX^<9P<2PeYR7sz!+2(Ri%S>&C_Q|kO z4T{KX9IMz49?NIFT?3;GOmof2#(xp0New?*yxmT)F#Dl9ITF*urVEF7zpu>J$A-sC7ORbMCQ4ybiEo?Zy zJ9WytqovAm}Du!t`~6mDZXLUvgvZ*@S{fp^?S*bwka=_ z#OQmeKw$jpsHp+RjlkpW$$sOpK2zt!v0~!%!55u~Tg|@fHm-{l4S5j>x)v~u`sDkJ zJyh#1V(tnOtXB1U25dl70Tt%(65yU8@H^4F3lP$Ij{qsP71$@xk2) z48-dErfoz9ts!CJwCS4T1=3Cx=bpNz3_9A}kKT2up4vQvCBsQQZ!@${b^o)zUk2gTx$yNg7xg%?)ol((B3qvxX_2uGKiwz=O+zko z@~C$1uS*?&R1Ix|R-NDWd9Rg*Zj1&dvf)QFUMRCb-s+0Kv0?T{BfCh|uYcLzjbF?^ z>jYO0Zz&bDWJD#s#S%TA+9#-DfIm8B>TPbI(X z3F_-NqP!EVGDuvOHmE~}KL=ZwE%Um%@|t+HfZq7HYJxt^5e|o;coHH24bQKUYF(zdu& zIYa@~Zx-{jndfhY{CN!V0HVa4e#k-))OFss3Jf_J4d=l)`0<2S+0ZLz76SbX=T+|4s9XDgA|AJiYDx={4SUvZ&r4bH>IYkQw^ zGCJCMn%6dNsxkWw6fad-@mYh@0+Rf%+|K`unJ%8Rn^(vUTVTrEj@ZDr5+7x%m_=jV zR#GNu#@c6M{+jRG8>o=q__?+hb;`RI;X6_Xz5U<9HisH6O%d&6kq;Mk=8J z3rY)g|I~TcoQ>_Xl@IkRz3D*=#PrW&W@T2am8#LN!3^~stA6gooVZ>7{@Ek=7oN;S z`PdXmpZvfR^4pvdIoJqooxpef`?urZqcHHG3xH zPi?eh^kOs>vCIV<{{ed18e0PY)~w$U{i)m`tVX;I78<8#???urq-Ih&In|agh60?Q zBHBHL)85cqlf0`YMkF=`7ssT&9jE4e3#h5#{~zHnCTa^;Po$b13tqLl?X7JIKr$76 za^T(GHEaEfx1>Xczg37%?iX@T>Gw_K0Vh4YTX0{O)1#p{_FD1(6ZP2te2rQMv7$d~ z!86}))Z-gl-d*}rO!gc3g!`1-S|^~bFN4|9VOvRZ3{2@m?Xu+5p>e$=L0T@weM{bS z^fraRelhF3Nwgx0W#MH~er71>Y01b-; zn7XyCQ@qyN+*R+BH9N3Q{~gn;qQEFiv>|~Eyy<%a_Zq?FMmxH%M4kP2WVHX4wf4uc z=*AYM)06<12AR>mN?NytG$9R!`sv}yVfH(rxQFic_hxaK;hTagrcGa%o49`)W^t=B zr>Qb8__Yj$&?Cm9&!zcx3j}GNMDK-Y=YAE36S*G%>scFoEd{RK$R(;zZp~(Y`t$0F z>Qy69BR~DsPpH6IYYl@PjqCBGAW}o>XGgNjhG$&&kIW%;igho9;x0pLtq8F0n8mwSEQv1|ZXAGK~#0)#CY; zdDt~A(i#U)%LZeaCbcP^;vK88lGPbNf~HDzjz9h$%m&x*2WSibAv4sj_x_adqL3qL z9Fn?K$jKTyQ?;8BHO0iI_%XPc9;e(hHLm_`Dk`sg#@Qj>$~D0HL$E_mPNOk?8H#(= z(ap=fi7En*!DYO~Bz0z&$@StIIhyX_rQE+y2+n+4Q2b>+2h7aujtdo@9?D}A)@QY8q zP;`Frjr>S5BOgT2-c4+dBN?=O8j9m}7i3a5S_$-PM=0QTWDAk=YE!24WGYSi3~jR? zsT>Fbv}#`hRSgIAo>1E1Dz(1L|4qW^9@Esg;N_rGX4}PLMdTZSByF79x#s52 zKkD*&&(=9R{(gy1T-S$mZ3D?qJ}93mP4!cfhGIce7LZ)y@La zon&#|&R9eX>B@yla{35H*9BeX>}UsKgJc}76;7ZPlRU)A>5IVia=)Rq4+kNUB& z7xvY`&z9Rw1FIFmW9P!NBcnkiKIUoUD!M!&JnZ9hU2a{z+btx&ftnyH7#%x{s?AFr zuGcFJ?mNtHbASCl&D0VqJSZo@+VZb+@>r!ARS*>-sKJE+*ArzAj(mV+^f%+i8cTHs z9gbEH=0e`WJd@WoG+mYcg&8L-M%Th59w64baYk`i)5teZZJ^sv)EgQaw8MH#Ek9}S ze^5QvHQr7D*iXsP*@@iTehHsVy5?LDglOfYL&``Qj0u>`N)1kdl+!Puw6K7=8y(L#))Wiq@UqI|XwmvM6k(Ljp?0evF$L0Wf&S-G3J@v-~Fv^MPY}j^F zdaNPF4KfyyVKSMAwiM|txN<|67)^SBg%k?z=(bKVDt8&%JJGb%WhfXM_ovhIB}mdX z=H6l?DjHFQ`L=pNkM2N{$*4t5Vz%DUsPCAE&Egz4*VeqN_%PDZTX?}V0hT_)yiHxg ztGwB|mqUM*xa>6r)4~?slG?1fi&)Yz_eQVBlpJm1m$BcpE&uXVY#X8ZpgN8fPVwe- z$K|xt@7p?rT%S1TTz>hpnGlK=cI;kw4YrxwTZ-AnPgjbjK7*yrs_&B;4MEwcDxXTx z>nTL^9;bFct}hxpdDU1!HzP#tempgK+guCxyJ&nQh4!)M$s8IwG&%o(b*zlb3MCIu z?uZ~2R?mo^M`$Np*`yDPBTzc~Xla&iDmS`L9lZpn{B-?c z3K<6p`QkD6{&Jhtu<8X5NpMVbj28=233PFUf+#NBkMl<r?9_@A2I2Z)fc}jgjmkC*yu)arRcu$t9j-| z#zKi``~{E^hQ6&Gs6g^SN@B~_c4!gjCO=cWbQ-aIaja(9S>e{ob=N@%J94nna7*PL zFPY3i`3>fHjI@#yAAXq1U%I~XF{D+Pz&FB3BtCwSa=&{$vQiHr+T`8f_?kZW^d!ot zjJW2-_`EKr78c-tUN9~1Qu)j^f&(9DLdNb<@VDboTE9gQza24o+9p>_b2DKHP-l40 zvdlJOcwn-Pg~x-%JPV8VA;f9qDMju}C`FJf!Z~Ze{mV@u>B5=5Nzb8`zN(P~af$fb z4=HGrObvl6#|F_?1boBPy40e{&U=65iL{LhVyC2<{^iCpH|?csAwj5x6fPHi^2oOn zEJ#BjIwnBNKZ4SHJ&!=1#@8kKvW|2~)k#IdHzvG;N@P0X;s1w}ssFW_!VPFotvK%X zy4P&9rCTolb&|$`rNA(kRGg%+X8_|n^?U#v^2bQq-6EC0?a(V3I&8zP%71-gi`-Pk2@F z*;Nhrt`=slKIF$HeCcs~$>naOEKjJY1A#UPlQrQ()PHVh5=fgSeS?Un7xk&E5K4gw zC^+h;(|P@|az4{>aZ16=E6N@`=qa`2>MG26;;d7E#+5g1&$nb1mctPWyv9F(_;cZ3V;x^fFZ-nh|fNUdO$0!I_k*+^=mt*fW1!p8-K^14I={vOT z;coePemS>DM!{6m*(hGCs3V%dyi^R$qec$Qa1QBqY&P_TZoa5c64F7j#tLMFa`Fg0 z>5@%iTQG_3YPLfz?j$Ro5@(cKGb<(5r+fkI0|LAozo()Q4o6AXgbY52k0g_4X>HCdtG!i0bTNM3Feq6h(O`&kFLvwoga&n}rZ42C| z#TMOPaIG{Y)%4fD{IXKQ=4zb2=3k1rq+`7x`0*~$H=gH>20!y_;ftF2BYw6b8^P3q zc~f9cnZ-?N%x|J$}7<%QGWtZmZ~7{!^&MQh7Fg3m5h z(EWD12@ql07}qP-fCTELDpv}u(v`@)vC-#Lnf9b-L+Cf{ZfKj?j!kySD3`n~M3kDY6crOQpOkN0wQ zS=Y)zYsqj~bMN>KIp<_yo0j->HO6;)!v&!xJ6Wl@&(|U*v!nd8=SuN6)f5R|b(KG$ zW;+;tt2CyXpu&bjemNzVQ%O;2n>*H>Nk&YUWaQ3NBTguaLcy9@Wv&$H@A}Ez?@&6GcQu1$hw7(Gfppl%kH*#y~wz{m(cTr;H6UZ zDOh;HIw4*CCcm()U_VU&Y$3E6-q%&p!2~IELCIjTD(9M)Vb6S!@MRynr_#-QR%Y+I z<(z<}k{$VD1+|V`-x;RrN}kz1+uY7c;dp-9bor+qC>w5jPnYjWk2i|6!!}y}mkE zT@c>D(~MAE;D)xfwwtAnQvO80N0DMDrNJ%u{C|hCZV=2LmA?}czpJU*24Dkpjux7> zA&rt3usjr`CO77P1K;_-gZlh`o@+2O(E1@yuARvKWZ%Z^-N?GL07(Di(7p1S|H~jOyqOS`1<Q68C z)VB8K`#JH+(G3Q$1x^2pM7Y@EsEt6&GCrz+;zm^&k`Y z@{?F~;~zfaAmW7}6DWxK5j~Pd7rxwI@ZB$KX56qJyltX#xej!9$tLkn8)?S#+k1Y~ z8N5!ywfi4n4fKpNi(uF>3r9BooMU)(XvJYW5H*)A`dPrTx)aL=_g%QM>W4jwmn&ROae!(GohQ5vNv>aC8EfV=u2U!t4o7cdf_y~1#)62McDgDZU0G65fR3Bdw zst7D9YyZVE$lrkSEZ>lKeJX-$Rx6Xr#9nX)c!K_y{?FlQiRm_@7?;)J7IQl%su;juJbYGtb7ze$1Z$eO zR9I%IiiiIi{mI6ttgs)lA~LS*y9X(xkRmvlOHS-@R&=Gv*`5AJBV0+Lt+|bvS(IiR^VeKa% zO7sdwAFX~H#^i8=cav)(v3~28bCz@ee2ei_Q$u4Hl)Nbfxx(ARH5@IsrzSrU`1=&K zFvMzS`7Ys&dMb#>Se}QSF4~B`d0Nv{@HuLOXO)5!Y1*<)5lsQIbU}XzN@rf>`-d zWkY|ic>&s|Y$0<*qIzVna9gZdn<7QJkR!C2k-{N{Yd55MuFu0RUN%v-F-<|}NVIXN zMxU$nHl1}wNhG5%3S4JDa<64}_U$DoAoX3NalC)oCMdv%B;U&DQiel%Snrm>Sd1F) zX5`sLYJsYT_F;kaSV8trdaUZXhOKNH#eV>`4^1UQ-g%0bg%uh6WOF!`-^e0qVqw(M zW96$HK1oaD=fr8#$^=rBXY3Q##d*E}GD3Sr!euJiE0@Yoo@E*XoB7nWixCUFA~+rM zov;!DO?-A9&Ar-l&}{j8>U^SltQy6;>vB5#o+a(qS7c;msp1ZJVaqlBFd6p0Pf!KZ zr&zGfxalJPSP3&>#`^u-`x-$ViBn(^n?nNs2?yRBur+wHcSUYglQ0lm-=97$Q$^(L zJY}VLtVt@OeQBs2yH!p>J@OWrQ+TxvtE%m)*2|-9qYzCr$%c580v2c@R(u>ve#jVC zw03k2bVm(?+QBf`u2LN3r+4Q}>0fI~(^R+7)W$ZKlk8Wo8kLbuaGG7V@gj0#KhME# zk;T7LZ%hglQAMG*DFsWX_D|xAz2KcRY>_Lm6V%2M#t9;ORN@W7cGS_NkqGHlr(-g- zYSf74l$!M2C&A}oLqWUpnrml&SPmnIYwj(4C9GG@zWfhx((tXWps0tsCE;E^K3XB5 zqI4Zv8{eKP9e88;l+e!*G8-UMa6MYy(6T%F&UTskn+@F$LuHUSB_P21D~{FH`*|g! zK@JJ2A0=_@um0cuLr1+nS}YWVZD%eAAN>#TO&)n`c*T%CPuj_zZ#?%sBU3T}K#C4X;jTGVS+L-=gs z9Z*h&HtvVM6BQ4ChUzVywwYNQEnkmEHePF(AAr0iN6M`dGWE1#@GLo#jAAE6Rt0N0 z^tBWy8IxX?mwc7geyWt)F51HHm-xHx*iRY7fbUmH^w#vRaxKAd=1{CW)!4hM!-&K# z)&Wjgv5=WiiV%Rqe}F#&uO20D;1efVw{t~;n?cr@uH*ee5eeHXS2%{7+;HE>NAHr^ zo%7cR`T^|)9_7s8F#aP2O7Sy7sW^Qeje4SeQvdR;Q;YI}*3d_iD%15%WXm@Fk5vDL zMcGI{fD-dwj2RGDLdq==z;!t=F8cz7;cyOd#Y1i>bT4>w1-*{)9>=g{Od_)Qxkvj- ziHm&3^6Y-$yy8n7H|<_tB=64g$B!!Iq95q9L;Doe(~lL*=hIzppX|24(QJ@}B4hM5 zLDM2*q4STQ@8{Ex<+~;o1}i@YEHOSToQ((I>NHuZ1l!kL6W+huo71T;-e+90eVZ*& zR*}Gb*G4enU6Qirt|GLSXBGo<^pM}v&c-UmJJuvFT)Ly7t{Qj!JGT@sS1+$%-m2RQ z`8QT-LNQX3cx_}thG2Y=+Fc(!IS6H5JmonTq3Jvkez51|WtFmyW8wZC0LRo_pYbVX zzDKiAdlZNF_=U)@$-_Z^^+B)ftc{n0j4HF!ZdCN7Cs95q_MD)JUredYce!&d{%%pz z%7mbIZ02k4_oZ1L7$2=xt|n0Dj*O@rj@{xr)}%{AgLk^^g7YP&_0V#h*MFDtOR)@oI<3KsnvcnQ=sKj zxmKFrc@OXYm8ZfcFR46)s9k1OFW!ZHl}7^>8$Eiroul&s}Q|;5C#r~q~9nfKc^C3mqLo!ZCKLhKi>wA3!Aw}(K ze*}#4@=&#Bt-{fkPUvG!jyKl#!Gq2x?Wa>A8?|K6t}KS{uZ>$Bmfrn|*#HT~x|cgs)uAj_^O@$2$>RCOidKE~O* z$&l%?l~Va26uiP5&mvK5jP z6_u2pS7>Zuvj9@0HmGdYH8YpW&>NrMArq%95HFX^?)cmoY!D@K>H?E8V*>W|WoheC zP#R4UCqU8LfiSKGC%G@K@y$TkQ9oUT{5yH&71!cL>A{H&hBY(vgs@-xRZIz~Uhu`L zlT=<{T6yn+M~u5dM}~WZ`Sqs<*~4zrDWZgDwu7u@_6?cBT-ue(s&S<>;Rm61&#$b5 z=;!z=CY62$JM>wJPwDW5OZ{}%yL(vKg7T5F80X&@W7$e{PvWn>wv~-h69RsXJBy*- z37l3O3kLaVvIZArAAeD6Gz9Pjn^ixuB5k45%)rWF*KM-^suWCnwrtJLj-MDW-Z#fa zTjWH_%xHKJJ+LF!Bs%(@qv=wmE&7|BZ@!oo5eYnfBD}lKFwBC(u z%feHqq*|Q|*OcGH^wU~}fGKK{X;hk0;ROC|ZXPA4LVioZ_?IvrV+@audgB=B1Y+WX zoNY|gG{?DK5jfv&W31E8GLQ5dZ<`9!h68UN5QV-6zHKb*FV%m5{vT4i8T>~edCy>w z2*pgWJwX>8=-7OBpvCe0;{2HpDLOwFa?hHqoeFjG=t`PT?V7+eOnTIZML)E%${Onyu#u;bZF z&inIXQ6Rl=`6|Jpc|X#Iks)F8H5(P%Nq5D1KCbfV!Cmd4vPQ6s^MlwU`@+CN+bo0Z zkD9@>6{WU(DtT-UruFgH*@eGLKKPh#kxoBy z8}mgU7Y7{j3Hwp(HZ-?Yz^k(Eb8>z}>RN^h*Vef#?jt{f!#+p?8aPWZGhdeM*l;-G z{K*PyFKKsmn!8xkJ%^MrJb*fG>&6qVT;vLK+#<*NF7#uypJ9=;z2YmQ*4sQzeEnXbdmet*0pwUS7E}Xevg&8rXU=obWHO!s_~$F%}DXh&S#rLd|UM< zzg_5QaPC33eG4N5-vqYPtGN3F!XS3!O(#f|9a8GdVW|GN6bN;__7wOJPy{-&x_^?n z%iat+-cOy=`Ox5aMEOkhNUTUUwM|6+VJ^*ww~tJf14?siqMACc^mplUks76K_ESER zA`)S_!IdK8-%g#p9s*gL7q430c+_V5`sQSNoFJ`KSDCO`R3-ZQNEV$e{Oy*H)!$A?L*ZTNw3FM> z^ypqLo3{PFSKlS;7WbD>(;aZ_Z?=b2^*DjKjZ=Rg_LO+*6IF9{u!}#cy-*H5TDs@0 zc4a8wNjPTs0wgRwVHb^{8>vk>E$RJS(n1E-94Sm zucsgWo+~c`**Sz&VbmajK1a`=n`nsSk;D)NJS3As*K!+ILPj{|EWnnz5F0eIjh}`Y z5*sqZ09X6&>}j(*n+)z&|0nqyOkRj9fX(>fL_%lqZ`eAq+GwD1kRlv-2~(#-1)$5rCS&(E!|V|KN}nkoQ$Ii%4ehvTy%5G3?Yr03?3C%rH8>p z?40-TqKIDzC1f41FiHI&2;{OKJ{(pYE-On9_k2FEFC; zrUi63w<{+4)wqWDjAO7nOAuT;B8MTO(_qMZDA#=E*QGGImiTBfRO|s_PPM>ARt`S1 z!S(BTqj#rqFV*@ZbB(!jex--&X39{0CQeb=9VorO+=^!aJd-^-ER-+wGa{8yZT4?% zialitznPc#jY-9%;hqVIIA8R;qrvM^@ni548uA?V#g`&FqWk|e22re(teo8TR+pRd zWxCV)GrtvJ^G65x%J?t446BK{d04_It&)X1;xs5YVDN^5*kc!15)d{LA+m*B`F&rJ_02XlUS z_#ZWZ=r+m7Wx75T(J@?_nY_Icxl5_HerYZxizOSng*mJFQKw6SO=LwKaOBi~VVaC( z7k6E4qS;R|;OfW~=43H-+1vhS0C2jIV2eQ;Ky2}T5ZV~k86P?%htoc`59|HFN6S08 z6mapk`#B_!?bNYq6X`E4P~)dQ1Rl#zq0#GD=HBa4*;ymkmRYdj7fN9GU`=~fm(+Wm zP=c7#@_21i+YzD*=VIw794ml<9o#5H(nkz3D;i+^oTPeFw z&N%7~`*k_`Jsp_;Vc>bSfxDaeF&RJ#zBh)B8jDuH2pv*~{~hf9x9;-0gT$~eNdXWv zzbgH5pK6N#3o66c6Q=_yS3MTm7D5^iOd#SAHq%yj1AU;#*K|+T8Y!&IhqyA1j-G~g zHri9z+J*jDIi=erpaDUy&M~T^b=uWCwbiSjsn#wA0Zo`Vl;Tcq!1_;q$2Z!@WB3X% z&m7?!L9#ivk)d{TpIE=BOu3`ZEGWcTqz#}$q!zi&KXW3rr#`g8|Luo0w8_wqu|wP9 zb-FtGz)S4o*?6dIr^V_aOpM1-57j!_`XDbW13sBhgr&VpLlqS_ks=>*-ZwPrJz>=<8xiW!q<8n=RYknt6V zJ^}ysBSh?4pOk{8)T7#+v+>4%MfSH_l?L>sj|3S|gkAC0N+1<6FV%Evf!%gsA~zl$eH z1%A_3r~N_YQkI@>y4>mD=en!XxuRoCidw>zs_f~h`XR#SWCs_=g{%u}JiJ`K5vP*g zy9IN@ZoFz3f)h0f-voOFDQJ=e{``HETMl9Jqn=@)@Y4>B+T@4#*0bihe?k*|eabx9 zBkG<77F!?umVzx`bM%VyeOm!MVuXRLU)V3{ToHa#xkDiJvAI<&F)(mv&;HkoDw9(; z<4MUBBTbl_%!7d*0ytPiiDHI9#&@$%St`bDYv_L9T+~|jzkxf|EUiKM|p;e>+{i| z{kr<}uZUEZyfOOp6C(86S&<&R{=qrwdk% z=*+Z1Sj2i)L?&5vEWGK6GNt`wD~7+%giKH$cUk`B*SI@YAQsiehvmmNnAJ_6T~o%t zxjyU7vhlR%KEZ;=o$y}qHZDQBs+7r&NlV*9HvPl9g+_yn6S=JjUE zB;`RSI>jV*f=@&GkQ_mfJG2Vc1s{)gY2@KCvo1V#nesCVdt$+mldWrzb&sOXj4O0cI1Y*KGGb^ zQ8RTJ3|oI#*b5OTY$j)X(hY?Cs5B0EuQ{H@GbiVVyEyMfXFal#dicyR?dQAT2RutGSv8LdEs!V*VU55D|Aj=<0H7Ie#Zi58RtnrD?6ROfX z+rw!L7PpQ1-}psn!ktITVp>m?B{m#vP-_ zWJ~4i6OeA_k#0YEH?iqf%_M(DJRe%3oX@8-O`Y)TE(=yF&G}*5B1nf*+f`y%TgR-- zxX3kCDB%u$XIw{!1$>;vNy)HrW9+%4^5lH`T!JTi_g}2PxGKre@dRD-8KSmo_DP71 zF42qu5c1l%%xA4=WJ4demolcop!S--dmAo&8xAmECl?zaymm(mQ-U+s5SKTKR zeBrcaIs(`nM{g3DJ6zjyizIN9r>k*v+r&+K+7Nwqy1VZ+$T6Q}L4AU7PyQfbxPHNx z1t2_WGY~>=!ZLb2yq3XuK_)oSn11^$XNMW+ymlTAb zoLLFh)0y12ryAs39Ss;Ah`%~W!C}_Fzpkx@@}Pe~A>oO3Xbtc$*0_Mtp=^AYFWogI zT-hI2?&t{zu=**-F7lFb{n{;eGJTHbMo1+F0YmFal4;_HYq>-y&}`)WOWS6oZHIjFK;Bho5N>?=j-o!s za1oAq7&qZJVuM|z?asl>UZlyY*3q7u{tYiIIYx-Xk(_jYqEYsZ=~{cXO`WMd*pVId z!#;+GN1nm=_T$$s^slQkLbGfh{*Vrewq-&bcRG0Ce zH4mr!J(3<&j_O*|Xvc;X9~q0rzDgf1B6wsgnW14-ac1cnq+|^9 zW$v_8R`kYr!LMxZLU7geaGqcQ}(u-Sl?|SckMGt$JCqVgk3MPHd zZU?t4wL=rs%Z}@B$wggX$bP2W__;K`i+}9MAr|VF8`Uvi$_a?3U#+LHAOLcq-FSc& z`Z&jT9_Pu0B*V5|bXdZtBY$B2B9Z#i<+y(ZEtdgNujU^8l^)s}G7V~nGN`qn4y}jW zRszvbAFn!>5+$ZQeWtMrj{%BEb_!k$cy%DsBMq~_QpTPlIy71_Cjm=m#60UAHphE0 z9AoN$VUyT1M~)>~jxhrsw8lsNJhRdJAELfJ>*a~Y2`Vx&d^B(ItvXa8)E9kpq&U`_ z_fSCP+u~kV!9*PR0&?pFGOHd1rMK3lcR2+j^mj~b@GUweh<4+8StyQfKDRs%dw#1P+a$AC^nZ9a3SaZDC|D~eVx6W z%ROyTf04eRdWdM5rJjUWR^EAB!S!x{Ntm9C$g&>GA05P~BZFOsSgAVc>xZ^#{ZOKJ z3Rof%*W|3(d~woJOjA2sBu8MKenE(VE1r9TM;Y;42(7+;>274KSlPFTl$RLcK#N0t zX@Q+0D&+YGh_s^9Ed)#-O+6Xt=~^-CD@rMf;jS!e^&*QU_Z8YD|HN!wjx}7|A@o#3 zj%T)Z>W5M9^3q+fhApCFgv$f9uZl3+EO$B3R+rHj-6+fD^nj~(i#nC0jC>}?cqPx2 zi4Z9ovLID-<%_*yo^!P{P%WQlN>K8^`z-ZN?bJQrMnxNN=b7g3cpgLlvb7*j8D7z` zD*^q$y#_1eIc1$dCvbGZi1C+ryLTae;z(~1XD;~xSnB6GM6FB7JO&o&o5JD>*Eb1c zuAOBfSpD42wbOK0i1(^KdT_uZ`a-q^FM4FbqQ5pYb;0lvfHc_sE?h{DU`R55iDMGK zv-8)drPT>a`s?;%onj^T26B(soCm=)6d)J&XcD|rz&FzEGeGd&tmEEm)44YdQDLkO3Knf~1MrXVTbXGJ)XdJLgsVk-adlg0bhngr$cpUzf%=5_c=se5< zt_Gs^`}XH}i&|v06_4kT=}`X|wysLAz<%;_Rb@hE+}sh`HRF=g}2c^vTsQs{8gOfW{7hQ|6jSZRFWk_7Bo;#s&D*EHI zzTUZg>hsL7t1ZqHj?*|V_YIXnfNIal7fKfT8Bp!{@RSzy-Wat%A%J@}sSGVmAm0;w z#ktc3#Dte_+YW7o2MF2?5C*Z>lox9?n{t0@U=<%TSDa+)^KJd8^1s>v|9`vRiCSMQ zUiQ;G>Mi~UXz2~!eiAd3msMr^N@aa(@GyKi>O-cZQLn{N#PC{fJF|T)@@^@F(C^Nx z(s2Zw@PUfkmnyaV^Lewm#qJ~nU zXw71#MS>7iQFFzZpwv)F5kV6F{GR7o>;3fq_OA85AD$2QmwTbIyHVdtdu7 zk?+5S+DVK-LTHMKPg{sFN#R$_P8m!74lR9-y(78|1uC=8lMv!iHuC3@9(beof&igt z&ejv_6EV8f+T7dx@%EV2{R=pkv%^z-7!%gOG0a3M(d!`Xc7XTxL3rt!B{g>&qII>V zlDFps!1J>MlPBBarfARUoBQpmMKGFLZK!9VW8=PYd)uyw&T-OIu`(36VzJG>Y~&bL zD){*9gpaQkw(kbg=^bk`s6Xnw-!21;bZi=XK)W_Ji`HU!PMkvd$)Uq+bS6h&+p?m@ zLa$>Ld_6qJi82+a}}P*pe%9u^^FhORw?@j{qBe zSzp!)7Oty$yL`G_3O?T=m_V>8%YBU{BuVGfRT3OWGw7yWq!u96$-pPP1$;zW;cqu^ z-GbE}XS__h+KqcoAFOPGVO8nn#~UVFQJMXudBJeWk{_uT$!awGsf}xDVLLr%{e;4O zDnVQqmTw=%;T(e9g#><3xz$J^4Q2Y7QM5Gyw?4c$k}BJm)1z z(;~25vfc;}CNJX5vSEtJ21afL3&VfU6{m-e#9W~qq={WW%=+`Y2GnfNwyzCdDqn#t z!RzIsn~bF%5`l4=%2dR?v0Td?gczZq0i;~7+g4&#Vq{mB`Iv>V3$U_}n7&-CDKZbP z_$%m2k=Ke^OIS{sf0naQdxKG2`hlL|d|FCuJHHX3C9X=7i}piPplz(lP653OMm;hV zB~W2uMe6#E^<4C_8V`n`j0iAmgy|*er_S|IC+{9zg>3J{UC`)*QutI^W~j0 zoIhcssU$D*-fiF0LWB2hvqA6Z$6RTjEyA>-r!p-(x3dg|F^CGkKO$IfZOxu zbTZMeMlbiZ^XgAd00W42kqg22_S0Rt@a~aVXnokHkz_^5npbxG7;Biv70VCW=?i@|w$yZu z?_H!EGqK%-w!FD#KH1C;Kpc-H_Ts*YS{83RZZUcMmzejirUD7zG+__U|2H z`Ja3HaNV{QQN27MsOR|`$u%X{h_3o+<=GMvGDl6Czx#QZc#a5{dTHy6VOwY-jU+rV zosyLam)~4aBE*(oD_=&OAH*90**!Vuf36?7HkdS@06g9a^e?gfbaFeKdBi@K6wWRH5fA9VElgG1?aVL_hVd0qF1TKcyJ%a)_ey z!64qRh6VX9 z@pck>EKLD;0QhHdcMO2u}-&EXqU zq(^iKsPBWvx72qB3G^>QV)M>YORtCjMI0h&gxdKcjy7ORcPb-N)PBQ%y_U?|Q}4+s zoNn}}#Fp<-*nRJQffPT7`fy2Ncr|X@#$?XOh| zNQ_4@IjUO)$XdNcIae~b=|xl$Z6#6*KKarqMYrZhNSWV&8VND^E{2*XDMqN(2JB zh63f+p^f3i{^P09qZ<~=>1VQnk-*uZmkqMFM&z4sy;s=f8v0N$Nn(#|%$J?Tp}L?6 zJXy*_@(%qfUD3%VMQyp7qyrU?uuF)88C}oLa-6Q$IQJd`of`9!qS@B^)!0rJJ=0a% zT{lzx<*!pPpS@Gb;W+SSlnBP}hs$&x2+J)v&wbEfum2UExeL)CBf|JHY^a$QW^K>; zKj+<<*q*3i)1S47U%S1g*=}Kk(~!c;#q80O+-b+Gm%`;;$zCcNFKhSk#O_B&p9OQ@S%g4(#v5GlG2RcqdSn(5$0J@$TmS-+|) zpRiw2)R8f9e0d>m$>A*c*EIUzK%zH+huoP~)Re+JxKulEHv$a8Hz*qU#tQ*k zVQYHSbVTEC85f&G50TLq65wC9TY)MZ15L3e{AB|O#7GoHZwUcoCBQprD$}k_M3uuJm2tGkz#c^HKsty^m9TWoO-Ip znl^L-;9mBI#}?dRqINK@&{sj`kr56W59Ehf;nahr@6LN-Wk`rZhdB>Y7R~Hesax<$ z&u&%ef%#wks_)KS7fhHB?;P=O+Hv5SyXGIJE)2ZNJ2qH0Lv;dS57&awrWfn_PSZFy z5j0W6EQOPt$1X$Y>vhx6CQzrCXzC8NdlrG3@|8xokH8K(%o0toJszR~SHkb~5uo_T zg$`tMA$e`Bw!%5!ugqH%QF4}z1a3OzR_F=9X)cwTj@%~%074GeaEQ1)@-V?+)n3>X3JAdtXwaxl2-pY$@+W=m3SB3(}V-e11;>R zER;NNZyF2a$P6Y2;kS<6gP@cbC=1Do6M#cqUZ^BZg4_Nw+C1nTeehq2RVIoQFh1fB z9h3@O=5~U{>9+a)iu~*lyU5kmMUY4&XlxxSf4zChoT1^IKT^X@#VOD zplJh4i}k1V`fn(;5?WWF*B+FdB%j4{S>!E4mP~=>x|OId==XzQ|glN{?@nrg$FyS{u%R*Bbm9 z7;Aksd57fv`lcPa!oDK{nSV92%aI3T`402+uZ_f~pamW}^)!_moS`?pT`ea{Sg2#I zKGJn+QTB3_iR`x=q_u6IT5aAwZd2_en)@$*c-r`?nEYOotrOKE*FiT$PZrjp=h!ix z1_Y1)rX~cXQcpE|yO80W43yK$O3URx{*2JZ5u+7SDW%-^5xqKE2}aR3{jepp{eNZ! zm)`_(Id*EXL!3?k2MqM{b~(_+Ymvim7otq`J6h*;pwDWPC|iMLk5jVq6WO&fsV~?v zpzaE|){*f@Rk9C}sfQ*s+Ac>l>g5Rs)lNd5;D$^e#qK_w;@L5o-Z`6;?ZGm$qvd>_ zGgq+eiy1a#T56=|1hCo@PI7OxVMDEM{Y#S%Kc*-zo;JcSfGqkDaWyFNyqG6aUQCNn z(f&9b32YmoB_d1-1^IX=n<*jm;V1}-=i7IHVOjS=wx*AgTKqI-e?R{#)tK%Am}SD2Q}%fLZQGHfiztT8E#3OlLw7KREUaxMOn`^fo%-h0_l*i!}UZ{SW~h_ zld(eAg2XFa2>p;F+_H$<5vdm~+Gq~Efrnl-!lKgzn zh|Avs-eCYnp-Y-!Dfck3H{Ek!S&pCVOXD6wMNmY_ZNb-O9mZrzql?6`c?JrDB!8!* zL1wdOrSHz$R6oYEKnHWEJCq*slM8egto+;Z-fHyL+<_XPP4fbNqImPU{Aqdj17nUp zreB=Pu$()~n>l0dAhBh}lV>BK~ZqI+#~h-WWS<0$P04Jk^>{!xoCar2pYRT zAR}CFP?z|`N;X#LC%2B!WxRA@`EC7SZKXf<=Lzlhtc0QLIFU9L(dqBba#><$3-r^P z3vnF0B2U960Rgb4o`#eOXL35(fcc!0vm!;OcFqz5d~i)D5<3+>_5(g#;eQ|qE| z?0kX4P@GV^#0fxe`ZqT>bko@E1Rz@^x36`UvU@yz0uT-N1QkfcnMLX3=@K7%s@&}8 zQI6C8!ZpCf&9;HGzaRPS+;(fo)TIKI9GO)1ORIGo=45{ zAsYAPn80qj)LMGu0Us%Y*u^JP6tNnpyKPO-$m*P>_k6~z-|v*BHIls;*^zkHArUtc z4bj5^S-^CLID%CDJ^O2qPvvHAqe`qB&yTj93pYt9s`>WF;$_NRQb6kIs;9 z$g3(yVa*gN_N^k4NP;zPux938>JU@KucB(m*7w=Qtmmb7d*2jzYa2a=5#asrrR{Kq*HY7$)|@wpQ5(oLK2I8Bi$=Z1_>OHUyn>KKGR z+A7e61Hc7 zX*yiQ-8@8pyqul2G0obe>ru`Q>>GAY_y)^Gk>`g2ZRMbYcuj6k>~=?0fiQWQsQA+} zw5XsrE)b1XUoTI&bJc0F0plR(mHil^I`vA>9b7Snm)x^jm;oi) znCEjk1?58;uJAa>7~Hmxa(r+nC0G zo&Sie^|2QT#?91Sg>B8N)pNa0-W)YNjAcNCk~!%h>Ew?u}xl6 zQ<5d;4av0Zfwa6APXVec7VTsxIs_O~#g>PoDoaVdPWv4AApNg^D;<|g0q}``0H`t8 zHu*J_6KWica=QiE+Ng^k;|K>hAQ~ED4xCwFAcW@?e*}Ww>YS+$ZJ;h6;=dkA*67bp z=AOOu{}I;uzfj2;D?~4d#t6P-ysmxzW+B72(Z73ubH5M9L0LW3f=HSlar3t}&_fE; zEU$YDz?Au^;h8mkDFhFlD!6NEan^7C9LbtWjr>3LepqE{am;C1B#Jph@ zr&COsG>q-W6zza$66fy_whXt=GkS1Y?AV!D@qvMENkG81h5NtTFSd3_EKPS)SuhIZ z6M!MXHKw`4PrN}18>{a6&dG}N+|LxsAJ>ON8R`CBjYSc+=T(+=&@w>GE%LE3Au#F6 z-k6bmo86*xeUg!=zDZ9S=B`@V^8xyG05kvTYwkvlx-$lO^3hZ1%Cz^?rpcs_YeU<<;%v( z^rRrF1JyA$IOC9SqL=}luaAG|6&);8exgN@=bRz$}{Bj#`p`dB{KgI)Fq-vgr=uPZ906l2uruXq62$wq6OoX6XRU+a4-6FS=U!ta1q(3e7Rk`qzGo z6(HKrlz6qm_N4nXZm+ zI|+9LdxL#rP;PQ($TR`(Vl^5XIq{h}*QPdc~q)LVVsbx|Gc@Hh0GSxPpV%?OBB6ZG8zb6$pjb8V)c%0aY6f$be9=4i(5OGg@I4E{De`ZZ1z>f72!+T&XM1`$IBEgYB z%gt>cSRE*nDREjIzl?Ro;BO0D#5S(eqh6B!xa(c8lsxContribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
+julia> ]
+pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

`,18)]))}const k=s(l,[["render",o]]);export{u as __pageData,k as default}; diff --git a/v0.6.0/assets/development_contribute.md.ViU6tjjp.lean.js b/v0.6.0/assets/development_contribute.md.ViU6tjjp.lean.js new file mode 100644 index 00000000..bf44761b --- /dev/null +++ b/v0.6.0/assets/development_contribute.md.ViU6tjjp.lean.js @@ -0,0 +1,3 @@ +import{_ as s,c as t,a2 as a,o as i}from"./chunks/framework.BcwRT4E8.js";const u=JSON.parse('{"title":"Contribute to YAXArrays.jl","description":"","frontmatter":{},"headers":[],"relativePath":"development/contribute.md","filePath":"development/contribute.md","lastUpdated":null}'),l={name:"development/contribute.md"};function o(n,e,r,p,d,h){return i(),t("div",null,e[0]||(e[0]=[a(`

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
+julia> ]
+pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

`,18)]))}const k=s(l,[["render",o]]);export{u as __pageData,k as default}; diff --git a/v0.6.0/assets/development_contributors.md.Cd7cXlnH.js b/v0.6.0/assets/development_contributors.md.Cd7cXlnH.js new file mode 100644 index 00000000..960605d7 --- /dev/null +++ b/v0.6.0/assets/development_contributors.md.Cd7cXlnH.js @@ -0,0 +1 @@ +import{V as u,a as l,b as m,c as g}from"./chunks/theme.DdBYlEdc.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.BcwRT4E8.js";const p={align:"justify"},_=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"bluesky",link:"https://bsky.app/profile/lazarusa.bsky.social"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(k,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{_ as __pageData,j as default}; diff --git a/v0.6.0/assets/development_contributors.md.Cd7cXlnH.lean.js b/v0.6.0/assets/development_contributors.md.Cd7cXlnH.lean.js new file mode 100644 index 00000000..960605d7 --- /dev/null +++ b/v0.6.0/assets/development_contributors.md.Cd7cXlnH.lean.js @@ -0,0 +1 @@ +import{V as u,a as l,b as m,c as g}from"./chunks/theme.DdBYlEdc.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.BcwRT4E8.js";const p={align:"justify"},_=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"bluesky",link:"https://bsky.app/profile/lazarusa.bsky.social"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(k,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{_ as __pageData,j as default}; diff --git a/v0.6.0/assets/dzarsbx.C5U_qDue.jpeg b/v0.6.0/assets/dzarsbx.C5U_qDue.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4463667a6cbd32ae9eaea308e2e4f96b6a30b79e GIT binary patch literal 51860 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

RdBH7?Eye~z#E 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

+)5>inJnm)9^AvWiCC8%_ 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/frwqpez.DX1O6I5P.jpeg b/v0.6.0/assets/frwqpez.DX1O6I5P.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..41b875adb988e35f90cac9fae833b702cfc102e4 GIT binary patch literal 57194 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 X)bW28m;3+we@?;wSN{e1$MD|(7vVgf literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/get_started.md.Dg6qSFuW.js b/v0.6.0/assets/get_started.md.Dg6qSFuW.js new file mode 100644 index 00000000..d38fafe4 --- /dev/null +++ b/v0.6.0/assets/get_started.md.Dg6qSFuW.js @@ -0,0 +1,53 @@ +import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const E=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+a = YAXArray(rand(2,3))
┌ 2×3 YAXArray{Float64, 2} ┐
+├──────────────────────────┴──────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  data size: 48.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

Assemble a more complex YAXArray with 4 dimensions, i.e. time, x, y and a variable type:

julia
# axes or dimensions with name and tick values
+axlist = (
+    YAX.time(range(1, 20, length=20)),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+    Variables(["temperature", "precipitation"])
+)
+
+# the actual data matching the dimensions defined in axlist
+data = rand(20, 10, 15, 2)
+
+# metadata about the array
+props = Dict(
+    "origin" => "YAXArrays.jl example",
+    "x" => "longitude",
+    "y" => "latitude",
+);
+
+a2 = YAXArray(axlist, data, props)
┌ 20×10×15×2 YAXArray{Float64, 4} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ time      Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["temperature", "precipitation"] ReverseOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 3 entries:
+  "y"      => "latitude"
+  "x"      => "longitude"
+  "origin" => "YAXArrays.jl example"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 46.88 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[Variables=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
+ 0.320052  0.500909   0.827727   0.415137  …  0.825496  0.487315  0.0962708
+ 0.209357  0.0833026  0.207967   0.224959     0.309666  0.211397  0.552582
+ 0.507229  0.757781   0.514759   0.973442     0.111379  0.787476  0.0247931
+ 0.879677  0.374138   0.97643    0.748725     0.665274  0.776172  0.666534
+ 0.79472   0.958973   0.0114824  0.274902     0.499743  0.645512  0.622774
+ 0.320869  0.952795   0.547668   0.982108  …  0.80871   0.253383  0.743343
+ 0.496429  0.0436     0.790617   0.233118     0.137114  0.55245   0.716721
+ 0.683599  0.598769   0.0571978  0.155874     0.623962  0.959705  0.957463
+ 0.179919  0.551487   0.783779   0.828388     0.303359  0.542756  0.903079
+ 0.487093  0.78064    0.191898   0.908084     0.60764   0.833498  0.198806

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; diff --git a/v0.6.0/assets/get_started.md.Dg6qSFuW.lean.js b/v0.6.0/assets/get_started.md.Dg6qSFuW.lean.js new file mode 100644 index 00000000..d38fafe4 --- /dev/null +++ b/v0.6.0/assets/get_started.md.Dg6qSFuW.lean.js @@ -0,0 +1,53 @@ +import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.BcwRT4E8.js";const E=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"get_started.md","filePath":"get_started.md","lastUpdated":null}'),p={name:"get_started.md"};function l(e,s,h,k,r,d){return t(),i("div",null,s[0]||(s[0]=[n(`

Getting Started

Installation

Install Julia v1.10 or above. YAXArrays.jl is available through the Julia package manager. You can enter it by pressing ] in the REPL and then typing

julia
pkg> add YAXArrays

Alternatively, you can also do

julia
import Pkg; Pkg.add("YAXArrays")

Quickstart

Create a simple array from random numbers given the size of each dimension or axis:

julia
using YAXArrays
+using YAXArrays: YAXArrays as YAX
+
+a = YAXArray(rand(2,3))
┌ 2×3 YAXArray{Float64, 2} ┐
+├──────────────────────────┴──────────────────────────────────── dims ┐
+  ↓ Dim_1 Sampled{Int64} Base.OneTo(2) ForwardOrdered Regular Points,
+  → Dim_2 Sampled{Int64} Base.OneTo(3) ForwardOrdered Regular Points
+├─────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────── loaded in memory ┤
+  data size: 48.0 bytes
+└─────────────────────────────────────────────────────────────────────┘

Assemble a more complex YAXArray with 4 dimensions, i.e. time, x, y and a variable type:

julia
# axes or dimensions with name and tick values
+axlist = (
+    YAX.time(range(1, 20, length=20)),
+    lon(range(1, 10, length=10)),
+    lat(range(1, 5, length=15)),
+    Variables(["temperature", "precipitation"])
+)
+
+# the actual data matching the dimensions defined in axlist
+data = rand(20, 10, 15, 2)
+
+# metadata about the array
+props = Dict(
+    "origin" => "YAXArrays.jl example",
+    "x" => "longitude",
+    "y" => "latitude",
+);
+
+a2 = YAXArray(axlist, data, props)
┌ 20×10×15×2 YAXArray{Float64, 4} ┐
+├─────────────────────────────────┴────────────────────────────────────── dims ┐
+  ↓ time      Sampled{Float64} 1.0:1.0:20.0 ForwardOrdered Regular Points,
+  → lon       Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
+  ↗ lat       Sampled{Float64} 1.0:0.2857142857142857:5.0 ForwardOrdered Regular Points,
+  ⬔ Variables Categorical{String} ["temperature", "precipitation"] ReverseOrdered
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, String} with 3 entries:
+  "y"      => "latitude"
+  "x"      => "longitude"
+  "origin" => "YAXArrays.jl example"
+├──────────────────────────────────────────────────────────── loaded in memory ┤
+  data size: 46.88 KB
+└──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[Variables=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
+ 0.320052  0.500909   0.827727   0.415137  …  0.825496  0.487315  0.0962708
+ 0.209357  0.0833026  0.207967   0.224959     0.309666  0.211397  0.552582
+ 0.507229  0.757781   0.514759   0.973442     0.111379  0.787476  0.0247931
+ 0.879677  0.374138   0.97643    0.748725     0.665274  0.776172  0.666534
+ 0.79472   0.958973   0.0114824  0.274902     0.499743  0.645512  0.622774
+ 0.320869  0.952795   0.547668   0.982108  …  0.80871   0.253383  0.743343
+ 0.496429  0.0436     0.790617   0.233118     0.137114  0.55245   0.716721
+ 0.683599  0.598769   0.0571978  0.155874     0.623962  0.959705  0.957463
+ 0.179919  0.551487   0.783779   0.828388     0.303359  0.542756  0.903079
+ 0.487093  0.78064    0.191898   0.908084     0.60764   0.833498  0.198806

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; diff --git a/v0.6.0/assets/idgplot.Blc9BtwN.jpeg b/v0.6.0/assets/idgplot.Blc9BtwN.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e859d8b9765af4eadbe9fb3222e47a2952d9176a GIT binary patch literal 99058 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�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

ao%_bt}d>$_5li!cw%VM&PAf@_U~BNYp+vR zaDME*;y|nKoR;vbCy{5ZchIFr2K%E7_|~p{LVMbR{78?j!ICz09a8#d_^q;qv zkiT-~S+>vheTaq{PrPBc4qyK)-?c@+z{c_#7ezP6+SS6^J%$Csrxtz)?Kb0U?><9$+l($c_i@ zPDh12-iR*K2-NyXi+tIIc^w>A*- zYcqU5$sdec6}k18E=Bf7)GILT^3 zc+xI@2M`neJhxFAc`>j&ZLnD9%t5?tA4Dv*fJ=V!YIaipvvp^9cV@{66!+V}lUb?v zMxQel>aN&?6CA8`^gO$b9%3XX*p1tD)Iz@bK?Du-Ow8xSJf5)Lan*rs451cGg;U}x z(sKQ}wN4?GLfjOao zN7sv57SYNt#7om4O6%K0-C`A)DqxZg3J{5-X!Mvp9*CZN0ia2X`{ENT4Pd+dW4Q03 z4Srf${d%m;&f=3R^TPS#;1n0-!MH8QpP;pI3i8P>y7R!*qS`>TRMM8y^^&)~Fmlkc z0Wdl;FwYOG0py1r0Zlo!1UeAOtCzqjmA(ZpO9B;vnfFGXPq3#sdg>sxqJ~U$fpVYQa&DkJcOO+zgzhlJ_HQ56ry$@D zYbB_?yUXHD)k35_TM{PRl~bLl5swR&F42pU;vMyV=c-|R$x9yd*y!PCwS)S!`B7dj zh1_YL!wlIdHzOi|i=EMaN@bc=ed5Y=dzjN0=d~4dIYg(R`s+ExNGVR1Mh6eYkE|ZQ zfz^M0VN}R1BnDfeMp;NP=9Hy#zl*KZh#*ihIoJ`QZ07Vi{`0$wr-2Us66{BgC%x!$ zgDw291UE9PG0R)j3`u?}OYAlq*hm{{Yrbm1_}g7rXok|Iml8F)LuV$KkmpL8(_MUh zv&dye$pqdn4<#!VvXqmjp&!HrgI<-ZoO7aQMD*4wZLQOIH0S^%`@+=u_M(eC~Rfd&RXoV=w zq{(_%&}&_8k9~fB)1?irOt}vGQ11^{lO+zv<7?!bN~fhzjl{)X>yF)HC024pa!{u$ z)fM4d_E+xug=Q&YAY_dh)H#^XN>lAsQtoII1~ve((IpHwKThUVurCXrW;_;|`{+T; z(XQg7ozJfVjt-i9C9zRD^k8Ha#~czjn|kyBUu~FmHDtu(mBp!`i^5{xR9IX#+XL24 zwy_30bH{bEQ`WqR(3!QpST_V4S#EZ9GYr4wB@Wq~qkFOP4*xBvtHeawNl7d@e0!m(@Kf;@(Jder zY5KHXHa=4y)LoXur?uz*ngO)NO3E>TRJ?&Feq}}8fNbmhqB|9e2OqMroXPW+;K zlR;x=tw$bQ5;zA8kP#{SMR(R*>T(K##|LPkjNa$VJ3n*Sfk~onAYE;-%wOtI2g|@{ zsAr!(B<*l*tzEz@qW*Hd7F7)N8i3Ex!*|d?AQ-l$p{(Qq{j9Ybg7K*u7BKB%oOr3H}e;2bYnQ$i~Sq`YFz^8 z;e#iKWC>XJWfdZXwPvMHS3MIDFYU2?7P=$r0p@T*?WtHjM3mk8MHhttq+fkH*${{c zG}J@M!a(SOaQUw+bgby7^u8|{D7{zJCKbRobOKkY76O+C0$?b8H)Kf@?Zy~fCtIP8 zbRvb}Fi?voO92-DgWv#l|9grX6*Z?GCevy)YUO{o`KAJHM+`a4I{;r5R5@!sFiM%s zCJ%d+AyZk=jZM)D1@<69mE z%F53mExl@$h>MiUnryrhuyi-_pLE0iztD}hi!e0>ZlN6+FW)q2gJq@mgDpArQiNANaIh&UtM*Zh4 zU#lQV1-GK^eHEfrqDX}cyAOuFa*)orU^{PKn=Zl!Q##%1*h0FM!C1OIL9D}{&&GKT zA_{*;-Y1brl_941nsJ_;8aJqv{2Dv$rKn^7AW6%l)$SFm?lAVO(x9l;*hG@$9Kh)gk$R}izw6&Dn_MZyR!NNU__jcEae?8y6i9LNa}=6A3TCf+@L9f- z^}^dg7vx`<7V5wvog$d{eWHhUWW7V#!_2FXx;2#*b45h@0>fbvUH&`=2|e}XDoq01 zjQxcEpCv$h_W9iC^>9O~Ar+-oD8&wy7eNCV#g;EUtdliCr~@Z(bEeYJK4|mo3)TZ5 zA3XB+L}@!J)3u_FH7s)s}3Twn0wPTgbM_Uye{N zKpciz4n2F%^B^YbrAIIu6CTO0`)?E$99Y9DYQ^Mt;(+n#D!PeHyaz@5xRcq)9x8MX z2wd=#FfGZ9}(i* zr_Rll+gGXV6t?_jt4&!h8~H{Z-@|T-aeb+q0>rJCf5_X2;6bARhbP)Qs(hfdUHV^i zN9hknwt4^Z5P#KEHcXMZ()%8NoF!{dXDx#}h*M6M8?V=dEui2+3a15jezwJf(H0 zZw_U1c3g)g>f3GjaRSE`{5OuPhsrL+1d626SE{&LxalBg048Y)B}s;H30xS^I;_z| z7Tl{G^3p?*_eYB70S){PAi^P>EJS3hqj8fV_%()REK{|VY?ZRFUXQ$fNov`Cq58Gs z7t4iGlGl-c(s1YT=ysl57XbM4;tDBKCr>vDh;}c~wD651YG-XLr_2_`cLmuDG|hePEMXF+F{?yTv1Oak@+cGm2vcdD>9 ze@PxZpc^|2t^A*Lu?HbX)y|fo_~P_y46IZqn3x zLz(i%(G(c4>@YG2Nk_ei$IwSfH$$0KBrjzjV)Cu$_2tGrBP=8k3;#~8^Bh*SNa)zf?tqHvE^$&3$+!I-R(!-#@8R!uvM0L5e(4=&-4R!x3 z*y1Ivgc9*LSkuOf96Gl4duZqj_n}#_9r>(3R-WmuDqLc7-h1#wF3CxlPWa>8n%WMf zgBapesKy2pgNf(}#x+#BWMmx8&l99`M&+yJJ*Lz2u{S1f7V;DGbX%4a;HM53G$?&)0T0Zab@s~`W`za!&aWy zF#`=QUcvI=$Q^i8$Xw-!ibKxw?$)I9a8aAPo6N1)gd=YxZu80UDz?sNh*mE_u76O`nS&aQww=`j-v#{}{cP zkBOY^y8WNffYcv@$eNn|Hkv@+XSPMI$QpcgqfG;p zHfhpXx`gYbd3Ex@L$3i5egFu2o+4lZLxVhatFN z(Doq}Q%_`O=zyz3Q-sw-?t|mXC$`_M&T@AvW*pjwQpr#<;8X|(7ArN7z{l`5m#)d% zG$UdqZ9}%SBHiHtZyq&)_Llt(3Fl@QJ_QbW_1miE9cU4Qo<2+6i_+6&_^_zG=Ku(^ zv3^|9st?i6;r`wP-P$Ema#bAzJlKOSh30yOc+bNzQY{rP; zNa4*qBDty|vK-1jhLG1e)JKf`^;G^Fa~dsis7JFw0K(xhpQEjEKQsW$!P!`;J`ZMF zYFY6Ek^9TSp1N<6L+=7YwEXsbfiCk zPpy@7Nt8bxE&yzT17IO9IfM|AOsA7K4l1Yz%wZsS^EcM@hQ*rt{vqRKGnz^+ujzn+ z|3M1JHKlPy6n?YYrrbhCS-SC&Z6H5~R=0l9K~Dm{0pPs-$#*T}#4r3{J-JvbL5})D zM&Yr+pT7=MwU~E93bL(q1&eI1wR0F%A-&Z4m>XQVenxoPTc7K)m;Z-}?|*i7^$vT6 z#&4y=+BQsDfAx87*cJ6#v*c4SJc}leN(-FHlNdm?JN^yEcR5WsKQ$x`*!ZaiN{xeN zUL$|_4l0!-+gD@ax#pmJAU$f?Tt#9*2_aiGJ7`D5e$!$7FQoh{86d7|qF%e1zg42j zL5ita;r1VEZ-Ga3VN%FPZXq5Mow3=wx25JDGzj_~;pVS926DIEvN&J}g@f_>mze2+ zT5oj5l2282grwS#@G_hpg?1y(1{d}~(j?hQon9Fv*k+cq9 z-9R0l8=5iFI6j||Wog~~T|+I~p6`wSwGZ#>7>F3yAr|en=0I@&MQ0Qx^hYlHQqm>w z8ZJlL!{1|h`2&Yf$+x>5jv=xa%}-igD%*27K$qH{B+C+u@TKW$c{9>Soq5=&2EmTW zR+o>t3I_zaKK14{a%qOkW>B4m)kH-j5R&k7L$Zk_!`6!c)7IP>j;jXR}T zsJuOY__6w1Wqse((T{AgGBymaYtO^=L$%4iL?ndxzPL|~pPb@iNC21B6LI4cDjQBQ zxAGm%DJERS4;~+#ObI`D_U~|$|IK&#(tLpZ31+5V%p-3!TP8anTnc@%mslpn#5jAe zn{F=d2c3rw9po+9es_$_Pv94AtSrp-#E{L&5G_%n1tF3r4Cdi8q(+-0x!OiD=lN&P=x^}AC(#LcJHn(RK^ z5mIRFOm9p z)gv>w7R)KC8_FcH0YE7|OQ^i}M%R0d#Z|d;OWt*pTDLW8*RAx(e?*Z4-NlksiJna( z0;frOD|?V+hkVY1&I8*x$*IyP*Xyp~R&8u=;wz)G`DSBo3QTDDWdr)eX(Pz?6iGB# zg+GrxYnW(5N@lNdQy@}twZ_=!i%8TIMsYIc$HRUmG1Lj#(%`br*bqG>$E z9})G*QYRq5^MbI(xzlkk+f-lh#oj!Bq(lRTtH+Hu;5nOgyg#@o*FYM4mDpb^)l3SA zep9js5~m%FzTpnacO~4n7RtM?T`5JDARAcEz*rkWXVpL!FjR{rBvf{oxYJIy*K=9Q ztT5Gd3_g##c0m}L!sq|^g=%v6J{o}6tsN4538yVYCH@HO&kM96|6~JeJsv@$lS)687_3OtB6?e4Ut{iB; zk3rbgEeMo!QXLL+X&i9Y5j+taZa=caf3J9CxUisDUrcZQ>p=Xj>{N5N(3`8z{J>WT zFI2S)Kx=-1c3sZTaa}>w~N+nm;f)(Z!Aju>vq!>6f@O4ukznYi{cL z^0yNk+oWnT^&TZw-bEsIM@!+Op=Dh?M@wp%5kp`mgo4W!8Cu`Ba^RDj{KQ3WxNWBKsoy0*Fh6li-S2s8^FA-skYOTzIt;lylp`SMind zsBl@rGz|Wu;9Iy}{6og}$eoW&AjWDW2G)&hw3Lp#F~KW+maJzU2r{-}@F{)2f3NHO zZ(Oo~;@dRbqqAbN_~it~k0GpAbN3^^ z)iYhCJJ-T@YWoS@zaTtaB!L3o^unfMANqCQ98a_Vq_z zhUy-sSKlk3o+i3AGJ#K7s1q>!D@^Im7Z}9jbHxSbD%;|^}*opNG z&(ks-i!@dFqaKL|#AZ(RnP^L}%WO~dDe&f>rB5>D;L4g3(3yPC+#?V~Oe8S8sfM@{ zP^Vxx!+`=7{h2j=326Xcl+;zw=QUZcyf1TaK-gctUivs0tvLj@pY7qb92;{% z$PVJGW9$28Cbb+~j~Dw8?>ri>!ad=5On17JL6>eDfJXhnAd09kwTmSAU@9me4<=u~ z2@A5CVy=mLm2ltLA>N)<=(32te$(X3J);rS6Kt_)qv3HV8TDgYg7}LrWCzM=!OtVf zzwMV5-R!rc98wm-`|{F4aLl__Kjn-$SBxQf$etvBpX{CEjAkr!b*C-sB#|d`a zOur_b(srq3LNu{l+*LtXU}!D@d_pDAd*&on)rB}wPh%U}PKD}|v@dV`?E z=gKq2cN~N_lNge>qI_pCjX1t1l`T!KR)&4WC=RV$C!Ubt4Bp-HGVS8BcxuHuhs@U9 zXO7(WFCq-8XM1beVaiRrY0{*`MjXGng|mNlgk}A-q*VXLnx3PxBU>)RhbN)Feh&7* zKaOh}-Z-)ZOk4b;WsWBeJfd6@4Qc0Sg^1o(oKa=hs0b$28YE{nt#w zNs35kX)c&CuEk71VgN2p;5V!vw)EOf6yUB%T=kfmp8Vjnnstpsrv3YxXxzJ}GiSqh zv2QqPWvhwN>8uSk2JH=v>c)E9ZuU6(YpwZxtyiBHrpG-$R=66i0plp3fXNiX@t#Py zo;x1L0tZ(QZC5c$6jw1}OKyATSVAS2ZKqV+Kg|`poVjSRTf{bMbYi-Uaucpj_L>$X zW;aR$g~+v%#oq^{y+r!vla*C(uZqvf|e7VXiz(FSvhbOPdKWLF^a$_s^!G=fgo zUUEJVR@#knaLlusa_W*Ed$ziM`VFIw$KsN(RJL$Xyb${WLL4{{%7hYH4T-)nfk!%o zs>2=<9N#&-7RaL$ej)t#hTf^TbZ0B$;>amY82d{6>@)*0v~kLl@c07>MDU6E z?6d)JYgf9(ggNvBw#3>{LfYNS{F9&49Y%H*tAw^C+lGJC>zfQq&-HIdtQqh!MJ!3I zWu{8Hj(8QlGp@hEKlbf~s&-!d2g2<_6w7jGeaF-Bp3!VtH>dC${o#h6ZbHIRhZVbB zbTBI_lAJihJ0*yWOyeZ(6r^GChlaM%9oh-VvZY(?z-TY_*2JIiEc@y7n{km3`lZ*{ zX0b;ntblAg7gaW0-L4R33{1%7xwSZO*CDJxQ0Mb^bQk`!OnZ6E^Q!oe$p^!b7q!fA z!>V4YIvyRCM&AoDCPjz&WxAvRPVegk{o6)wJD9$lWSaP>9Tf8>X6XEpx+cRMI1@RM z^tis^HaWvN!>N?ULk!8rS1Cs@%~#3qmA%zEQZ055{v}>;@=WZQ=co~bGa$nW$i`Aq zGinACe!v>K`jcc3ELHJYFQY@|%zMj=vY!di8o_+hSMT~1d4BOxmu3~#8FV<$NTW0h zd4hn5%UHTyS9!b}<;WjQvEilUg@krj{^V>&xmE_>PUuKUQ{46cLvxE2=J-mXv!-x$ z4zhEly*k&dZlkU}HWe0Jh-!>v^)$;(D{{-RS=<}0R6Q8Qb-7CTlX?!R``?<44CEi@4lO+m3x#>-}*- z>NB0zjS29$bc-!pS-6)FH2|tqFcJ_y#XQ`CA6%$5bmM(gZ=<} z{J7!R^X7&OdOs3~x*nMDBZ6N_(FQ_hgE%{HJA3ujO%bt)n+#40+#gvDK2=-U z9)3qY?qRBP^(L@}#h5qvdX&cKNF@b)ZU6E14(Yy#e_S}Dc?7lXs zy47spmQ?a)Y-nMWTZkc`{a#fD%y<_`hYB5c3(j_R)PY^B!g6Zj315-AXjLu9kBaR$V?UYRsqnfc};8ZWgT-=z3h%f(}paX+(!v8hlc5`2usK@Juv# zk{=UBwEAw`NU~au5GDne$EUvgrtdlKM%m&X4Wi6>aW4o zNld9={i0az>;d@u5J_Xze2hNcx*W04C!k6WnIF_?>w9_gs&7+(8&zI(75HNfjK(iI zECfV-hWhiZ@x`tRv}bQ(%gJ$#$%bKI=Nirie^5P^5f&oe6N;wak!E$t^UdsXF1sH9 z`=qaWI$WiV>CW8oZuNtaB3ifq9#slFZipX=qzd7uJUX<1xL_(=5i|LO=h3h;OV+05 z@%LNj-5f@{Hs>BdfZ5dz?zF$in?H%!Kjcj=5;#m=pQ@$*B2%@f@}NH+D(_zp6|LjL z>RupUTS{^!FghHj_LPF=<@0pgBu_zt{S;`C1; zKa?u8+jICHu8wh5`P1hYf5sX9FaAuw$xAyWFnU-}tphal3Ix>Bof0@DT@9|4&U)}qRUWWFJ#Vo~ z8>R_y1Lae4fNJ|>SsOs4CXwV`0rsU#Dj0x&+GF~!?Ev#L%4n-tleMcJfZf@F^rmHR zGiaQL%r7(r|K|o+|M{~Al&x9>L+)tM%YwNya*Ug<%DdaJmYNs*%pAX{T(Evo_*q!p zg7ay{V**$G$1l^@yCNS~t?+YuyGXM;@75}y8vDq(s=CbL9ba|&CnqF7O^DA~1*R0k za8(jkii9d$FpgE4dM24xK#+XK4{cNv8)C`JwW)jh;I%@yLPp5t4wI;4*ZJ42uRX-#j8@GnMg(P8LPu< z78$?jw5m4^lpa8e5*`LdTJx5S9h4ox9~K_XF9X}u9Z?gJ2+%v!`qf7%09>7X_ zhKn8gBvuCkoAb?4kX+vF%?bOrS9c`DOH*>XY=I<)-@=gTgEdjNWFgu>rK%)^c96-r z*OCboBjE0Tw;5~rVJbR0UAJb zhMH*K$cBwH-kOPw(lcwg%|nS5gRVt5w#1xLLyny&c#xyY;v9 zuUphN{DYQV-o0Aq*4ij;ZB>g1?=SA%j=F!`>NXolBPZ=#l&qiiG}olQ&6RRo--j4- z(apHvK|!E!G`HSmTm|iO0H!QgbYMajH5Y@9te3?2&P1%3ycd1Q@L=ejlU*+Sx)`jw z8P%c#zTKNKC?P^g)JD#jUQM3dnn!h4C#{xLT>@QCxlda0e|L&~Tpd;5v^huPJ`1$c z7Bl&_d?~S|l~T zt(%(>lwRm&VnwlFp?pQ#Zf7SNzxFE}ixzq#j?d^^l3tk)cnCu`oa4Kc!!1fnmb4D} zMWk7)i1v`^OliEG)LmDjw`u{cF%V0J-lNI7Yf8W9szlrmY?HkCZr+VZ+n;Lk2i55r ziq5vwkF)|<$nQN_$SM(dvs$&i!E=Ly>$vXAx)!E>C2sCCt(DaC_n?;%Jpbw#{r|^1 zLKVR7YVo?Qxf7%*^v>XeD|rhj=32PPM*#QT=?K{H{qI*6rO8*A>~||jtcNeX(1+)T zw#q_4Y7#^st@x!I(5jg-BTGrY1tgf_0nOPdw?NhhVgVIra&Qi4g}8Nn?p65Zk4OLA zt2$^mk(`tZS0rLX3%v9wRlGQMa`?zCt15BnQX6&N&#|o!UWc&CnCo7+5LvE3s6mwX zghN?A5H7`KHQ5)oeOlpR$vIK<`HA?mvZK?>7uuN`8&95%)nQK*3R#x9DZrftHy~x@ zWIKacyrjeY8TNZ zq*FTZ08auF^lTPZ;C)Qp`Q6?5@yo{xx8B1;yu=<&PP9$+LOh8b_`%wvWy2U*8^4mS zfX2$WCzYk2T!Sk+q!VHUwa!R>zY%@I)VLESoaRLTvu7f47WA^(l~{C_IQ)7Xm=t7B zdYmf6i(_7vGh)|#D<_(EEUc19e@;tCu=WB884fZqan2I&cs|8{Q%tSo00^-kXN}Y+ zDr<*Tf+M!SA~!`4z_50yE>X5y@9E|?JzNIcbMZN*wL){1V3VEb!j>Aw}fQHBYRI4 zWKp1E7Beo93rKHy)1=JgTM*@z8VHZ~T7BjCgagW0^SDEJlon{R3apoACe9X?v)<J0j72u>?iu zS-}d9_bV{V<}|CGD052FH#ZAkXw-$e$K>gFAbsx7r7S#?fxuNSPwP0e$807l<|3br zNR5J|#$xO0btIUOK!{^CdY#A>YMYq^nf+KRmcE48HI?dM)c*~rfL;8)71A!Vd za~@gsLxO>Lp$)HPSdjCm?J!; zt#t}dk(Mh>^D??7DE$GgZG2AEcQUI{CJ8Ka7b-PMTQf zPlIart5*i;X%&&Qk_}^LcU_qh?Y;Rt`H=09V}|y;adirUHK)OBw^Ce1_RP0rtgo)< zl8_N9LKK;`Gu*Bm#^9*)u}HcrA$8AaPH*_%h`$ma+d+jMxCiz0uXVak$rsV@C(mp= zb@=`+|68%TfuiN!RmCAbxSP((*v3H`%XOi=m+%sxm)$~oV_SL?Tk0-grv0LGVMk18 zmZBLcYQaTTiC3F0%!z}n=kqk43BA4cJ;*k+%mek&CX!VsH#_IgVR)}+5(!Q^a`_e@-L+@wxCiAuE)CI|D;ZH`Lc&uIhbg)rdB$_^LnBZ!V~;!<;id@z{rv z-dE}*lIh*bH5&(5rGB)r~l&-w{_o-mAs zIE~rIB>FV>Slf@)GPtN+M46NJ8qjCRul8)zm_`Ikz74wRmUNaTa=e{vj{W|Ezqh@k ziu(c(PE7@rxOzN#ru0pCW*8~t9UZ^nHAs_|UbO}5_=8jB-F>N}m@i0IaHNuS7>(bl zQUvvy>g?j~MmUr+i!&uQ?F8pNbv|;G;FKUIszTQyB>V^xytH@q$(Q`zV`7M<=Z%oW z_YarxJn!sb6J`iJ9)AD(^2qPOYkbFlrg(GC1 zD{}USUn;MoC{Z;J*FX{wdwrNH?N3o<6=!>kmyub>HAwX0_yB3EM<8UVPc?}ZvSO*1<+Ad|R?A%@WMY?emBaHO2s%+MLT9kML z7*?vmI2C!?Lp*c9O;&G7r6Qu*0A|Kij!<>U3~eAh$n#`-8U5Pyey7-jxtikIThWl) zSF>gfc=yyidH9mOX!j!KMc*=-<^SEb{t?D!cyRoUQL^_bRE&sAk?5#o_wy{>rl57g#Z9V{9!ys|ktov~-u zlICowLek(WJ2FCdn&@t$pOENX{CEQZk_i?%kI#$ zS%v<1WU$L2(hB4j+;PQjdtQacEa!dqnm{VEmTaD;KO}wHS%=Tz-Ze!08?P&Aw|vgI zbfu>@=Xs`uX0JXR4!wT7=&K@hIC1r9ec=%_pQ_ zE`Os44@LU~_}vt+g@ohbj-P~r6paceWfT`SF^_rFAKqiTUyi$tE3{FnI5vP2c?W<~0%T^9sy*x>$BEvN(Wt|J7RZe7|ynD=D zjrH~j`|ud`M)G=-l!%s5UXLy%AHr$(yw7+yymMd4TK-CDuDI+x42}>;{VZS$Td_=_ zu_xo-$>}I4boqZFKDm9NES%Gi^+5^*g6|3amVVA=LVf?J`5+yV_drE1(SWTem5tawRS<|*x{>cnR6MGmeVV$`_e1A?Y+PK;t|jJ!ikg_~ zqtQI+Z_=%YdVqbuX!vvHe=)%G=OR{mQU>kRqtQc*>;~oNKO7iVhHq-uiMYd%?LWkP zZ3IwE_<;{GQn_*X@&@L&|AGv%qKQM9k)v+^P!`+Om1b>{hi!=L5>1~5t2T6>4d9z4 z3tay15<8HKB+(!80xARBxK-?V9N81n=QdzGP{MmhN2TJH5__!ZzC%>3=5ZEfzDNjE zgAUe0y$&~V-m{F~K$R#`-8?Z?w?SVmt$sz-AFL z_@gE=qS+D%==7Crp4XL_n>NZ)Dzl{U?k*e3;~hidxO<{*6oNO_;H6$k4)MbZV?k`q z*P+TO4^4U6&y8V*&=oMt{*FB8KF}I+@L^W~eYwNi&=$LJQ{w8ur_4>2%jx4 z>LOQpV`me)DZXAz7urDC)EU7yy(|;<)Xgq|o!bZ>bd~>2vv}@zVnVuX2k#3zBTq^b zFY2dFX;LPm5CH5FlNkt~PjiDX{-SdS5Al_!m@4@R5MnhaXi z@W>%T8WQ_&96W*~bT7DT|8SsQZ)M-^iBP$Ce74CW?A6TCqmiuj`HO1Y#RCr*--`3W zJ57!qx(qasLPQz#KCp^%tF9I8Xh{iXF|q3y6rV>MN+)fBsp3_tf_I#5$D!Wy@qwBv zyTJ8jvF|%MdM+zmVBE6(P(T*6cvek*;{}$#dt}WjSs+=hv%JiF^tn&8n0qzkP2)hs zyNb-=`QE&c29x=Z@zD?sVzo~~x@ge+I*-JI;qb+mtm}3vyGJWm0vH@GzA963AID_9 z$2M?L^L~mwT)rRoE^R^NZd;anpHopecjV=5)hC-y_WX1J)PKZ+|J7wm23S|Kc&*q> zDnF@BqS@G=?-5M^(*7Fs;tOlYD>~gHHf3XUPvZ~8P8MvA(uY4O9!|UwVy9Z@!Ju(d z<^}Rpy8FjwmOFu};w6-`4>Y@LhxiicDJAzXmsh*+(a!77yR!Cg5-#qWG8IUER(|a$ ziz`jym6M~zOIQjU+-B!GFzah7f8r%kFEf;)feLw8Q(9MccmQvE*X%w)D*T}Lt;FS0 z=xP%eJoM}==*@-=e`)Gzg^TCy%Pj@k8z)Z=J)h#bjIaIlJtr*QMz~vSEVRVc#r`;4 zm8nuUVVSHz`RGV}0_g(+IQNaB<<<&cBykfG0 zv~}T$W5TB1z4oCA>idv~%cwnllkyia!A-__l2Q1m4}B?(39seODr_%l@3wNrA3HcT zP*LKcIT`L{c21G^?Ht9_Gu3uV#HSk!3Aw`X_JOs4!OgD6WGln)3BpDLx9L$d`EEV~ zJ*Yv%SE)9Jk?Zl1LnWTN{`_ei0olN@oYCwL>sI}YaT9GU3CljV=Y;PeolVmT)7u9+ zY^49r8ox)%{+AgF|2c&Gzwj9p2_~9kpvEcIK*;M-JP-m;u6;^0acrjX@Bv2jKjq@$ z2Kfrbeiu6eUS-HcE@okpRRkQ7+%Rv~)N}Uvql{yN-}3@Lshm5)&Ak=_{rKRC)#cxL z@zmbb9CKQ99ts)>VnR2I;tybZchm&Wy=O_?E!l$iUVGT=K5tLHUN!!Scqx$-U4Jld z7-oBem{9V#?}(c~1b!k)NqerfLs`#H!Mj#}gd6Ba z`tA|tx%eD~-=$@fHUwg!I?rwd3rH4^>;x1%X%~4rUQ?2Vo;wzczo03FQ~Z1^I{7xQ?lSlH(Pl&T5x6GVHyf_e zzv?RGt-K~i(H;~W@~Y8o{Fv6geznf#cAogr!sYfKA!b6;arlvjD%Q{ho=Ep6W#hG( z1-Q1{CzYurL$&pvLniKwxw*M-!oPexZc0Dc%g_xf0W}VjdO}n#;^)Yovjxmqq_p>h zE%UzGuBYYasF{0dhIZjwRfpFox`XElayJnVB1WcbgAcz&tFX-sp!d@Nzb?;Kksxj; zcJFy+IM({|3Y4MA#J#Bw>AT~&GR-^UMI5s0>)2M$z)dJUE02OH)UDie8NV_t)j!|= z_-x^AjhCA=RgH(%GES}0H_I<|irF6&{-W&Obis7;>T?&4$<(oV(;TJl%||0w_wynj9cfnP z3Fq=TTG6(X6BnZJf4ck5sHWPj+hD;;QzM?ixl%CqL0YfdZe z^DPe?pZaF##rDK}RCz3LE#kE4fNkvEvBZ%`#G7;9A5MNEFEumzwPMDpn?R|Xpd}lZ zxfSigJ|()8c=-~`vK}8Zjavo!d%e?z#4CAkE_O)JjEpWPQ#D-zYYg>02{w3Z&UL4O zNl!pY*0C$RJ-=P%@&3*8jr+NLjZDOZVnN+L1Wm;igP`ecx9yd9;&a7}-!FRaC8oUF>R{Prk{G`c6t~2rCyB+EgiPPt!aZ z%1D02qvq`r6g2l%AJ#b)8?4z_#g~|Yl-D(C&o12DRA)X|QZJq^=LoYC{3N#A7%eJ1 zSE_r~V>W*}KlB@9`#ArO`U5r%BiEulA?jHEpy7Z~HdX=c+y3`;i|EYIeF^Ddx4%~< zqNEfy$I`*XGOvL}Ax^mufP}{ zOoT0G&=@)_4KjY;%V=~vxsb1JR(0VfqTLYRp6^r8C?exkco5B8$as6pg$>Z))3 zieExEY*HqUH;rswBpf%^Z9bAe$3I1sgVEe1t=en|)2`>Ui zJpbJI{)7;C)vS(M#?XHS`1iyMKk&!lSdy~XpPT2NE80Jt|AFS)@F`&r5GHNVYt8h= za|Ok&xJ?X=8J0U!Q0Galp}v*}lho6Qe(63>Q&}*+fWx=y^jb`@|7Hv~M}5`Yk#Cl` z9l{6WWGPzD#N-WD8gDfNSB!Jv#j_*4-igP2{2`YMPKJ5%;xVe^t4x%i%1a&pyI{>f z@(f@HK<{(f3Z>ez7-_O7!4^!Js4QdIBfrz*GXipsz%7KBHkO-&%^c3R^RAJpF))ij za7U5rhc1rlv5)7lY_FrG)szN*h0F7oX566%C4yu)grvAQCwUmNFTJ90m60_ct$lX|fuLrVGr zgj#{}tt_c$x))sCo=gj|6Rj6qluY=>uhMc}<|=3n?eyb<*#%r!*ph3!7*Kc4hhb&Z z+>c`H^TSgUpC?{9(;J45&fV}Xqaj#f7-WxIg&2JNW});yQ4J}dQ|^u)y$3y8o>5^H z$cW9E_Y7@!`zf3)k;nqTUb>#ajk0|6b)|vT!+|p-!;@o#*luW%4uEtWjp)=4?V!$d zU(iBCWci8*4yekN5{o<9P%29O`#?w$-0M-uP$`UHrP;%G5f#1m9bfLl_kKv^A27N9 zGU(RLNUK%Yaj%Q+-Ba{0E7Inhc)EL4%;_fmVXwyCxyz=-1U-%?0x`|iE>vdgQ>b}#H6(s~gUlgXb(s<^c*bw-!N#Y0V(eCut_tkR99rbEnySgYjX@VZ2RBv?gLOf*&vrNUZATcyI-P9azFP@@dnm5p)MZO@ zyysn>A=R>NGSaY|UQ>DYaOBwr@0yUH^rz0={NT4`Yz6x?@ef<%lE<~>?|!*6a_&a6 zi?U83~3OvU7u-{Sr@{Mj52i#J5CbSKJU&mv^Stfs(kzM3zRs*)4c{I z1GRzj-Bm%UpL&zaV$L@c+k-)rL<2qUy~fG)1BZcVBLPaFkk8cycn(QiZ9=}6v=5>`R(VeY_m&>?4m{py)EUFIEtQxB$FW0NMq zuC(&zKbyb{@9T+(^I)GVuA2^iFtprHNcUv%P_(b=tY5~POdBQp1z2)Zb;~M?%lLKo z#*VoNc{Gcgf2JfSNXgys>K-KWH|RP> zGy$MMqcXppsF+1)p{I%hqu_SPtbrQ6NI*sU7sPK+5q$E4K>c@F`TxK;836!WFKRlY zYi?Hp1QP*(K%rP2(1ZK6k3Zjrl57Y^MrAprMd7~X8caNjh(yu z>--sqSA!cy@ca)?%1w<-@+uHYyxktC4ZXL?5z^p^XAfC)(Uqy8ln8GtPn1venqlLZ z1^zrC-gxAG+6Hw_Jda-M+?vO&rlPyvH%L|6}iL7txJCx9wj{Wu$De@+`oVqnD`A!`4D?tEJBD-236{7vKFgP zyR{Ajcx>NmSm(U6)Q&@O*%jKP{_*G~&e67LxYa?gzPbTL9FYX`vF>};Xq0{`#oRW& z4u~+bo{1NIAY_)X@m}ttTQb2&T)I-t zHh3Jg61IS7)N`%5_>#r`#J29jc$wsTdL$Gx@tSANJfRcV7eOWtQ{OEicKWuxU!Z7g zE-||S&E2*e?BF&0Moz{WInbgFTk&-r%k#C)J7UBrWV+U)VmM6!iv;i#P zU{4e0m5G3I52~@szMOS8bGA)WuL_?LwLuY~?GNZXkF+{GsX z*95G%-H*>Wo2Zo;r#ok#pSQ3ICg=yuvZ?6se@hy_uEdA=l&Y8X73DJlSe!M~zU*!6 zwP9nY54=A5yt<%IukIM7zpJn8gy72B)(fnm@r-~3mzibha4{oov_tgma6 zVxyCkN8qD)<%L+d?G~Y5698WUTL+g0JVo#w;-=>}qkL1MCBdAA6$p41mVx*me8rcN zH6nO3m1^v9Qd!Bj)uUm51h!9J&lF#`5ZnH_b^A{o;Q&d##lYNkJE|B!fWKc-13*M) zbKwBVBq&W2=RKg{y8UO+DhQk}aiKkGAN2*;bCf`tGH4;RUQcdoIh^AYCjYtil!;qJ@F;9kP+ z!fy})e%D?>emrr5Jz|w_%D9*>qPD)OK5|t$H^EogBm?qDzLQ<+QcsNmji&Dh;>E1~ zHaWWLMnWiacBGi{ILi*7ztYf3Q}pEIw)>sh%shSGC#<_BAm1a+ARf-pMMzX2CI8OO zju`Z+Pc&Usu&3L8brtPxiDL>U)bf|diOS#D-!Os;vn$b4q$< z{HjbyK7T%gg>U&+*?UCM$@nw`_v{l5k$h-6gKTk|`>ev?o2a8(Xo$**!ONT1w#P*c zpf7N{)P*aDmNQ?09H5%<(fU#mkyo*StC{bHfc{jj6z6-vTBo=W;|)-|7wM7q%N6LO zldZd`WiJO0Sx3cY-5n@UsUn(NST<(axCPc>kfjn3Cj0#t0&R*&`NlL?_A>F_&dEEr z1fOODvG+ez3g>Zcr<9K9DbtK*_jL*j!KV1eG4QpGC*XAdC0W5Acu%)5s-5!1&+*Tm zH9!BR=c%e?GL)Gx)n5FaeCX4DQAEye-^RW^A${SUFYP_ZiyS~Np%MU#FqIW~Cc>8* zK_Vx^*;EFEd=*lMTYq`nUPJM&>}4}yX;FApY0`s-H5hyi*ZWpAD|SohJmb!`{!-Cgkxn>%>8 zd~{!^cG+6|TFLheE4Rbm7f~eang%V15}HXRh|qHpU*kEc_#8+IlOJ2EG}i!+sK+C!12;WV28@6nt~8D zq%|kJ4oivNo<3YGjmazy@uN)MSn09lwycjYK6U=EdB?R>KUM2e<~K+wK<1j1wxsDs zmXhPLN?>%$gQ0^|n_cOWK(oie@NALzX-eNBZ|L;-*au zI=d=Kvl^)5vewn`*aZ*rexlx(`N{RSYd}xyU~wry$SWzpk6;utes-frlSHn{J70fy z#Tj`s@{6jW5~t+s4I*+JXy0zy|MmT!UC;lCBM}JZA=MIdQxILqAqYS<4vYFV5H#wN$A?i1V_h&WR^b zEbHg~yQ%Qp_kgA2`;k?eh{*tklzQhPb#Pm=Y78Tfpozr2?i_Z?`{S_z#`w&#_I?Wc ze2f`0{&s2ZPdIxOz*lE9mW}Hxwzf>Cd0dgak7tcniiEtobBpZ2Oi9w(3T1zRCc&K2 z=jD!bV7qnzBpqW^i;!b6BdS+do8CT}FXliWiKRMQFPMbIt3@t(UbZABzPkJM^yqbU z3?_?%kc&H27Nw#jz}m_S60SYzONo+=YucOYP?1thQNH8vdN)X>?Cff&%-CF|%)P04 zm7DGN4fUDht;@Qm&^HLBj9vy$d!|;%(VA!%J;EU#wxAS_+nJm9@-ywIUECI(on1A* zIjI^Ww0ku|i>!r>e%qWELf}%~4(~L-NO*OrmdH*GC^NlAP+H-hKb2XCN>p#2;cr6v z^L1dT9%;Q*W^DWk$9_jHnKLLuB(HWt5$7sg&R93u={^d+-+W6~_Spt_lFsn)p+lS| zg6xpx4uZ&=fyO<}o?JEmI*$f&qy>2@f+6%?c2VX&>!t-94HTPM1@+FFW;Fp@FS%;L z2j##e4bR4c*3N)QQ)QP$T0n;iGzlEX+is!P=I8#pS*^+~Q6#?|9clMKqRoyjR=a8$ zeRDZ`+wgtGM>KDmfc~L|LB`4W@E;gZh#!1-_VTdvp*b}{6EiSnx*>62*C}m8L%n^b z?IlhS)Jblrb#uUuD+uNsIREZ9sCqI3d6D1*afXwT_@q|f>F(g6p;A^7nWWskiVa$w z!tdNvs4cz7#D#LT4(R;j@e!bt;lco^TxW*>#bgt-6wbhaEP(k@n=GLE2XM*V3DDNY zqBUPX!sgsEP+i#h6a|b5@tQ9Ov|N7`gxl>u_C-y#9My^n)84QCPV?$oN1*D_I&>b0 zd^KX%>1CJ~nxPxeO9cIu)GeA*JHsI8!bKb=cysZx@T?G0 zt3`sYkav@6aao#P4~McsoZ0o>f#VGaLX}fJOfl4IF5}2)v&CDasOfLRHyc zsJ2~WRdD^7wV#XjfrPYQKNf`r<^aX4@!X?ZghnCN*-@cnBp*Yp(09)zd_m2JPO9DH zGw_@b_UI|;1CeTB3VD+dv(S+Qjw^Z7&Ze;V#I#n8_i+&D>#QQn49pa5;X0X&J-&n5G_-H2(}tSgIhzZFh0bIt0#q1Dg<5@}$oC-n@QpPz9N= zIx1u0!Z=gm@%#{?x;)nwtbhTyuei*0)oh!-DZ($GKSgL8=yDz7$Q|HDnCbB}E4 zowbP!Kl-VjG4i(YmpQr?$Si%CS?bXx5^Ci)D9v|a@Hfbl3DEBh#Gs+DM332X15hd& z`7`j~b){z%x0cMA;n9B;QNBRIeAC&tG@!3#G? zD}Y!elB*(QSvpPob1w-KY@o3Wk;#FJ&-h@Dj7f!O5Q2^#K07ktO1}I@`y^^+k+VbtjJ)*tv_mZF6hM#sC+% z>d^JcnR)jZB9d-5BI3n$S$9U< zIk1!T6!=S7&#QCFGQa;qaS7A{Z^$m5wj&5lo@8|QceDZ&FYCNHL@(g|B({Tld zz5t{m+&~fvG>Q`X0l)6E(1jv_s#5K-BWr|7WFxzFake5BuGXiY6t%$SFVW zyb8L%1Aq)UkLWuX}aq~V?LXhf5@_>bWxt_2FYCB-Nq z_F!j}VAfWTUpgK9@F@+qRfh9%nHnI-AYj)%cOl@~qB(Uh`(#Rfj-jSEf3~0Db+z|Y zjjwk*f*x%AuO(1+jZ`T{dKnlz*<6%I=+PadRZkpKi{uY`XwGK(sM#dG+teWGnBFsy zQW4}=8%w0k_t{me9ul8}ZXKm%MwCI4I6F=iGrzwQUY;j5TR(ZSL&m)6*Tjfz1`js# zo(-zuPO*IMuNFvLE$0oYz8Js1qu?*Q*?J6NJ7*>q^(ZOxV;57}9x_yd?I^Tvuu3Q< zE&S}GT`mzC;ZJ>>_}IGc^`pIsxy0COs&}gpl%64NhtfGzRorFbq;wgTQbOZAG(<*W zk?*~WH{;j4LUM~bsTl=YPq6hba-()MU_*s}k%aKslQ-3H6f0{Hu5k7ZhJud;t;f#{ zeV`f6om@RnN|C2 ztG2bZ?}GQKKh|-9#_U>6W#xnkpMd`yIrbUzO*kWN4srO)DL-vb@6;>hWNM;CEVhI} zDSlS`s*03QV^J^Y^?OBMgRQS684`M?gr8L~Su_1nbY;rU382_+FOUZtDzVUg(jLr5<2*A$ zd$CdLlEqRP`A-Nnk-5Z&v5nllU^B(z`OGiM8=5>FbbQoq?sMQea?tr&Fy0PhY);T{ zg+qwU_%G88?a6zO5Xf-yWZRSW(ChPc~VS#tQ*D4arv zf#f7IgeYC?)6Mt5aF?Tf@A-_eq5~6(PAu<2eKI#YX)r69?8p?njIQK3Bm#0mV*Wjw z=@T*!7G+_N%IoWsd)RAU)>dH2O_pm$$VB~F%Z&cdtt9^!h{pd8k~1Y0cJ3k(jAztA z8UhkeF#jXYVL{Geah{UNz4mlZqyClh{k!Z*p~LPi^x{8$HaJHhKNfOk>i$!a1KM7=kkN=a3 z0WUS~k^|EH*$2kPJ`w-8UE~W8*yAt5i83f52B*+se)F)Gt1atJ-FT_DzzzD+EtFTO z?P|-Cit2lE3-7*{LMvv$iXh+W-EYu~bL%Hc>4K$;xvz3n+>RLP@D~S1at(2u$Zh_W zZeb9ZJ)T@x$zd}48x?}KK`=P)=U78ZSTlWX%CLIF;30jfAYe_w;-#eP+*d(OUu&K6 zt1=5VxSn&pA5gSVz`YE%SO}zW7<}&FXMN2X=E~yE zh(lwbH0Vk}@hI;H0t$*LDplKRs_4YNy^+pF>nr@$%%~i4oi}b$^9H8Cy;o&du3_8( zs|ifX?S`zZ6ZNghw*|#^Md~acQa#UcWz4wj(=T6F*kKp`hCNT&Ksb-vFsHPKGndzn z9Ap!eIkH|$Y7JNO#51qGc_|?%nwQ#|xN%y3^pFYD#|xxcxb9rnmST6q|B(j*wdNGmEz=VjRPu z9J+n@gZ(-Enxv??iVMx7r`QltR~}UM=WI4Orzud6$&b+EifJ9uy)OWVg#E`IRUc>jntl=5|8+j>yTz5!s9A#Qi3WT0xXPK=Kufz literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/index.md.sSTW_XSN.js b/v0.6.0/assets/index.md.sSTW_XSN.js new file mode 100644 index 00000000..ac16dc1d --- /dev/null +++ b/v0.6.0/assets/index.md.sSTW_XSN.js @@ -0,0 +1,9 @@ +import{_ as s,c as a,a2 as t,o as e}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported.","link":"/tutorials/plottingmaps"},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),l={name:"index.md"};function n(p,i,h,k,r,o){return e(),a("div",null,i[0]||(i[0]=[t(`

Since YAXArrays.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+julia> Pkg.add("YAXArrays.jl")
+# or
+julia> ] # ']' should be pressed
+pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
+Pkg.add("ArchGDAL")
julia
using Pkg
+Pkg.add("NetCDF")
julia
using Pkg
+Pkg.add("Zarr")
julia
using Pkg
+Pkg.add(["GLMakie", "GeoMakie", "AlgebraOfGraphics", "DimensionalData"])
`,8)]))}const E=s(l,[["render",n]]);export{g as __pageData,E as default}; diff --git a/v0.6.0/assets/index.md.sSTW_XSN.lean.js b/v0.6.0/assets/index.md.sSTW_XSN.lean.js new file mode 100644 index 00000000..ac16dc1d --- /dev/null +++ b/v0.6.0/assets/index.md.sSTW_XSN.lean.js @@ -0,0 +1,9 @@ +import{_ as s,c as a,a2 as t,o as e}from"./chunks/framework.BcwRT4E8.js";const g=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"YAXArrays.jl","text":"Yet another xarray-like Julia package","tagline":"A package for operating on out-of-core labeled arrays, based on stores like NetCDF, Zarr or GDAL.","image":{"src":"/logo.png","alt":"VitePress"},"actions":[{"theme":"brand","text":"Get Started","link":"/get_started"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaDataCubes/YAXArrays.jl"},{"theme":"alt","text":"API reference","link":"/api"}]},"features":[{"title":"Flexible I/O capabilities","details":"Open and operate on NetCDF and Zarr datasets directly. Or bring in data from other sources with ArchGDAL.jl, GRIBDatasets.jl, GeoJSON.jl, HDF5.jl, Shapefile.jl, GeoParquet.jl, etc.","link":"/UserGuide/read"},{"title":"Interoperability","details":"Well integrated with Julia's ecosystem, i.e., distributed operations are native. And plotting with Makie.jl is well supported.","link":"/tutorials/plottingmaps"},{"title":"Named dimensions and GroupBy(in memory)","details":"Apply operations over named dimensions, select values by labels and integers as well as efficient split-apply-combine operations with groupby via DimensionalData.jl.","link":"/UserGuide/group"},{"title":"Efficiency","details":"Efficient mapslices(x) and mapCube operations on huge multiple arrays, optimized for high-latency data access (object storage, compressed datasets).","link":"/UserGuide/compute"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}`),l={name:"index.md"};function n(p,i,h,k,r,o){return e(),a("div",null,i[0]||(i[0]=[t(`

How to Install YAXArrays.jl?

Since YAXArrays.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+julia> Pkg.add("YAXArrays.jl")
+# or
+julia> ] # ']' should be pressed
+pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
+Pkg.add("ArchGDAL")
julia
using Pkg
+Pkg.add("NetCDF")
julia
using Pkg
+Pkg.add("Zarr")
julia
using Pkg
+Pkg.add(["GLMakie", "GeoMakie", "AlgebraOfGraphics", "DimensionalData"])
`,8)]))}const E=s(l,[["render",n]]);export{g as __pageData,E as default}; diff --git a/v0.6.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/v0.6.0/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/v0.6.0/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/v0.6.0/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/v0.6.0/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�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

l(X_I+GK&R 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/v0.6.0/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 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 G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-roman-greek.BBVDIX6e.woff2 b/v0.6.0/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/v0.6.0/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-roman-latin.Di8DUHzh.woff2 b/v0.6.0/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/v0.6.0/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/jkytbph.C-WFBMfk.png b/v0.6.0/assets/jkytbph.C-WFBMfk.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb3fc16bed60b60654a8d4020cc783076e1ff20 GIT binary patch literal 81291 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 literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/lnenoem.DldUI1n7.jpeg b/v0.6.0/assets/lnenoem.DldUI1n7.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b4577158cb9aaf449a1d839fcf706df72efa4c29 GIT binary patch literal 39462 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

tpAkcYi?6Hyjg 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 ADgXcg literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/mbalbzx.96k_BqPR.jpeg b/v0.6.0/assets/mbalbzx.96k_BqPR.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c10e40162c11065eee41d5a6108e9f0fa00379c0 GIT binary patch literal 101963 zcmeFZbx<79*ETp!GpUy1oy!`_zXJ0F!}g> z@78YB{t20s=w;EF2EBpqKvvsDx-l46o&05r42iXLKVG z2u=Bk!6aYTN2)ywVHUJ>55vSFBd4IGVqs-t=in3)77-N_mr!`CsHCi-s;2W%S5M!- z(8$W##@5c>!O_Fh%iG7-&p-TYL}XNSOl)e}xAct6?^)S}Ma3nhWxvWR>KhuHnp;}i z+WQ9vhlWQ+$HwR87Z#V6S60D0yLd3^?w2T zKj9*L!G(KSidsBc6(=veOw_ow*{al&+WlFK^@!-Z_izS)*3UK=aH=Aqd>>t3sBZ2Zz zmb4SeZ5w6{Ip2!8c_7!0y+7B>7*CM;OsYSTr>8PC{hf9McSuzIxzJ19Cx30E2gfB) z)Jrs~7%GxRuwd0r-dtDDozj73&ie7%lDo_mYw+Sh0}!A~I_XP1tT5~!bUU%C;3Sh5 zct;!;(9|Bf@d4H2q6oXFMZS>%=`yvOd4F<;@8?k zji4c5YHCgpd5T2w4x!rj;*0I(>`^892N=p8+8vc+1dUO+9jA@#n0mtOD5cN3{{gO~ z9y?7#qxvXi+k$(3-aj9fmmW{_ykBst)~~V6dLLZcHmSV3Jix zVw_(QPcvQDPJ=EQ0#$a1BvB%Q-`qrS@X6$s{J^tqW8T76Dxdnl1lxbkGY{!m? z!@a266=^K{otA4?y+g@3`rKLXW}5$%7`(ou?>KZz*!gMaDE2HiXBz!PFW*uqmX~M4 zpkmLhk8+PmCX24HD^`j&Lw*xnoClxl+3_fNb{f$<*HQHseJs#&+=9F>z*@_ok{!r1 zf+R+QMt9J!^lCsK{{h0HP8IL|%3?EqQa!wY)u6ky z%d8o2VKHi=FW6_DqW@9mK?ref10!jOpBI=dcSa`W{Bp`_uyy1#5%Cs*<2tQp(+qL@=C`dCT zTuTVchLiHgNs2X|y5*+2V>bs_I}Q8OflvlR$eaTWDZT{qLr!`rt*?bKot=4+P>R%8 zvrD;po;SN zTm3KrS&ZHqa|2k}la_Ck@`5L*AR589aI>L=g0@dCIQpK6l|R1?~g8)rGubMBN@Nb8=)+ldCtW4kz

U+a=uL-CjHiLCRW13WKmV+5!6~?C&`z?{`3EJMN6kABM zs-G*Ghel~=i=??OwxS9eQ@Wwv1v?X4s79L&5Sxa@CJZWpA|5xX1n!@fZ?M}4AwP1h z!mp1;dWaEI66yCbc8Jk96R7ZgzD3WB>D-iLUbm478yD8-kBU0oCM1YT8c!=+(vu#Nu#2pxU+x0855ZM3fb@x-xnv)xR- z4NAI6YEZf|>+&y!n-?m*Bc*d(v7Xp7^LolUeYIG^dD64Xp!@+l=;iKteW(-Ee3$?U zEbV>}lD4!Mb6)Df z)h&SrVY14~2n7loWlgIk1DCjB(BNuT)Ls5_$px7}4|V4!R6{V+f_0Mk$mWXDMR-lX zV|I_jlUeYBgu_GdYgp_%oZ!2oKQH&ySIZAUlz%oKPc9;r)Wl$dFjf19gx&B(1~YY} zu8o)p$dI>S;OHy70}a`+QP}8d7v=6dKkCoSPPi`qZ6B+aszumpI`b|`;7Zor2U(?f6rM77Un zY@H9J-5pxKxdD{?Z4wzug7WrH&g@$g;iI~OzDG{&7zi=>-U)~G&9>hYn?;xwSUJc- zKJZX9$daI;^Ju9{}WwqSMG$9(E@VeW+L-MPNeA`wB?xlS@1HI=1k9L-SIq z59Z@%)jY2JK4aBj46C+1ACFo3 zQTHFf!g|~!U7zbV6>d|u>%K6grv~j=FW3)CvU>7{6SiBc4tF@4ARDYASDpobM!dPL z=^nVNgpmf<{f2hFrA6b~;E7t} zpxsM-3O5;O8u~iv;)624ZHJS}pr`X!t|p?-P>;nd!Z0w`2;QSJUYone-s8>jSlXj= z8>a8(MvtIM9m-Yqk)8Q{yn?Z5dC2K7+mD!+2w&VzIP-1fbCM# zDYnL7;!m~M0zE8qjw3SHs-uwjmHwML|IM_S)*&de1)v)8s%5ih`@2F6l+e38>Zt&Z zzwqo**u&F!2?maU1(Y&m_!iGIxX%eU+QSP>fH`G>%ciCOaT>%oOYySNd-+00hHNbf z_Z|y%)D1UcceSi7sE0xba`NkzLw_OP$ULps_~r3`fV5})*>?C=h%%KNWy~YPuQv4}gXa1Nj#{g$%Su=C4qaT{A!I;|UNiOFimm>PKFy zNzS>Vg{ECp5lAufY9Z(+Z*A( z?R-g6#Jd9I@=)iLz%wLFwEfTU_@r+%@nQICSEm-QDO~pCMizx1@{+4H%lep~DZ3O& z^u>RCP$U8Te_I6%e}3V}{unQbYWnAuK`uaWJ%0hPm+K1Z-P1}kvKz+7he;yHO%uE9 z>Y5U~S71iiE)5P9Pagt@QW77`*;|h=&f!vzQHcodKv9@Y;f8Pc%V0Ej6UQZ#s%qpA z8j?)ZXJyhMIf5okM1e2*j5<%C)oG11cT334Yv6kpW zB&}kr&qrO4(6q+T?Aux--}%AzpwgcKP;+e!&Lwu9JiEoBumPJ{{JZZ(0~R~-Oe;re zZEc@zdzbiZsR#eiuJmW zZxG{FGS25}6ITSRy5=K|hnydk>^8rkp9rf&U^(nW$0z$z?{t^^5|Qo*Jf%Mdz!OOw2*;$7&mUZB~^q1AZroW_Q57q;Q68DIz8mS81;_sDB5<A+^7Y5!8&@gE>SFmsSViJz72ubZaCnwXtIURapH7ftjo ze?&Q?Wv8~^lxocs8nwy@iX7Ct82Q-4ll0y1^Ae;~nvw-&;a14=9{`NqYb5ex)YFCH z)H`{<*SS-drT64LtWbjNY9Dgv-`%3?!C;0%qKwt>b9MQZQ_ElQK%8 zSnN=NiQd7wmwt~YJ?S1oIMRE{qY=z{V#c|2u)xP`ypl@&lk$NCRfSMnJjZ#8**1aN zWrB-9&NxO&5GvVw_qdKAZmgTVbj~VX^s1#`%K;szxRErxqq9168Z%fBGeZ(T8XvY| zF`UmMXIFOM;(_Nl+^>18_3o3DE14~EY85TJXe6c$BCuf$ML{*ora>qJWIQfI`^%!_ z5^;5aG!i=dkIpL8+V4ejBlbi)1-D&DaQU>FAZJv-s8nCVs>?Ia(||lRY&%pglS%Ga zJ-aCnBuh*&-O-A6uiAkw(RXx2^HN;JzBwN?m`xnXv5Rv8GMty{csT; zdw&Z2^ZJmg;G7R~JustQ3Ns&Y+cH?^%k+{ysUq}K=A5k}s8U#y{{nc^f7B{6w^U&o!w zX`?DDon0gIjr#M05T$#^qw=W!xf1d*YPQpB(N3!;bzh%;|HzV^9N8F&+>~C$w6UUN zl|)Ek{BUN1>s;UkaL^C?`%I|xe(GCc^#Qz{w)^#0 zy2-DSlX%|at|_|*n=bLit~XlBE$7l8n#z7^QAG%h{wj`71yy24$8$ajbrw9V8p`IK zIY_Z^a5Vi(rKiPK=2nacRBZ&F>b*urtd$Q+*_c0+W0?f=KIaC({{?faCh@=wB*SY5e*eFW2iJ| zoBYbq+XF=y8c87wkhUNL9D?a!MjDQ{&N$-hs{kA%bM>%%Aex$2`8dSw11V#70nmbE~1UOm_L}^@q9pHwLAthnHMb#I5=0{{Uv4mm{0Z zv%7I;OJ}Mmg^B5#uzvu(rB3x~xt#)hBgzYx3!=?U_R$UI_&!~CS9E4~U(!FP;LI;F z_`alp4nBor<*;#Fi_Zzo6=_C!0*A<#Onhms9XT=vlP((y<3C(01pB`L z&bZg@Q)1O-$i3Ga)Gwk=|D-{1q_ zpSmI4nQReK>LrT1vbbug7-uzDes_4V4W4gPNp}v^s6-@{uO!o>QGN7fo3^4GN4@az zU+h*wdMl!)>a42zW{dExFtB07<@4{P3#C~N3ybL)% zoTr6a7fMp#gWr;dn}qm?v`{Nj$Jabg4YD)h%8!YKs3LM_BvLWF=)*V*Gj!Ut)W$3; zEh;wk-__`{{JgpBPr@<@RP4;gU`ymO#@6fZX=R_XXnyBx^A;_y4Zs-P6HotTzFw%9#==O^H;jUXn^@#EGC&Y2%&ee}F_O4u?{h^WDV9wwW4U#`?C% zfDgDE@d@4ReTn)6Dij*5WAWBm-`yv|?;mV!a7-A>WHg$d9v|1nr=834qQ4eil6nm2 zz4yhzZ@@}4&e{RbX3Bp}XCLxTTZs4kE6X_p#g7#3!8u8FprfC=xLI52wZi?wLwqhx z@d}0h7X4?IjzMV|l{8QfU9vu4ICOlUvlDim^{7PVE|8 zQT_IKbJ@truBW_@Ln*2IktQ=zh7GPTFRY@JvYVhanH>FfKwl7Vm)ZVuIIi?zhAFY$6T9ho-(zvYhslyFVwlMfs zC^|KEc{sKhEVKJ1e=XMa`JoKI89R&jl^L!qi_qR_9wK(W88S4FN>dYX!hEa_X!v=y z)uCIfA2M~6Msp2F&kk|Z8VttF(U==-eq?JDs*wZHc!61^z>bXM2t&N*5fy&m4; z0A6|F7EpBN*^+@gc^U!0sGCbtU$Jo^$%!}vXSJ;D;lH+Pc^xzG>iGPkw%eM-wZVMG zRLY_b$aI7-rnMZ^m`JF7HN})FR!T+P9xU97IW#SMxY0(NromCY>m@V56=F;^zl%f5 z=G)w@JeHl9Su;F1Oc~Xz=+E{QfuX#Ii?{rK4k6&{PksDTzd);9u#cr9S&)uaK}|_1 zFx|~;g0~{oMA>f_KQf#2c~Bb@b$4TTPqO*@?AOnjW0J{7(vcn|yIQ0$^C9xWL)q|6 zV3Q&FGb2mt4r)@WPdM@LNBAFC3`+5HvsX;a<)Z%DpeZQm`rU=ehcLCPkZ`H~kvnnN zTE#SNW<*Vj&b(HQHDtY9pO(LWCM*!Bv00i?aX>322gy1zO(W6?Wn8 zDEChj9~Xe;8r6YO-P}#>G1jpfis6&#d!N}jr2HnVTy@2y@kz%a!u-FTs{{Om77>B# zrL(&@Jl^T-ZRRZx&Vd6v1&IZX)8VA#16u^Qge1z?_~5MM8=CS_Y02d(m>mL(?Mc(u z{)IkQ->K#sB;b2zz|CRjA_Bt~bzR82n|ImjY70#%3+LB>)Om`tEK}o>`TH?w?A5ozXJWXv z&(n~O^d0Y%Y(kIhl{9g`IYd_$UCpuu76BPCoTEwF)Ucz^BDschliblh-PO84Le3YT zUi(gNw=}_0UgdeX_A!NPhpAAzji7G-I+19p{aKsjg}=J|K9_$^_?%oD^%bEO+iEWU z-Jd=y^s)`_Q^8=0w@$u3nC-K=|{t$`1%Klc)_8sW!8~WIsz+YVgKjmWpnJ{$ssx7v#K`g_txmuX zQVc1~P1>bEZ=tMd8IWy~JvWE!WROD(VX=!?1#AW_hFO`kqL96$;M;?x9jQQ_bZU(d zuTp;@k9bUwa^`gw+9w?WV8WbhG-=2By1*xFqHI~o5HmIM!>nfqn&4YWSKsmtJDGkrdzO_#CGuJU_5Eu+ zA0fRNu`7grin;3&XZFR`dQWYu(YKeZDiFq**d|lU8wC;A6!ZK`Y8j-t3(P-xqj{e| zGhNU@s)ij+T>mUnO*2{U)8f;%G0y#C+);K%A)6?Vc5WQseVIWkV3>*24 zl8bd-44sOAR1VEJAc!F@{Yk{&z8K!ZhS{3h&+mF9&hUSg7x?2TR60Gh=j&DYwv3pG zz@jJbI;8m&=fSpZWK?Jy?FSkZ?F_ zq%G4Z_F8R0 zcQ5S#TN1o>a@t^s$=Z}}MVpZ&Jswv6G`-cs zf_O-Z7&{N2whzJXlnkmI!V&Rznq0iorj`8wm2O&iPvbm1fvM-P9wEluA2%U`u0=Xu zI$v!i$WJTw-cM$KVOfR(7E`N;wj32G>~mn+rf!_2wx+-oo>0yl@iEyg-*<BV#{4(Oz$jorU#=bvZ9F$Atwm%N(~rSD zyVc^gJi_8JL=>Mtn;*0lpdV(~n((^QTXwYYL^kc7jw0C1;i5BAJln@VBTZ$dG*~%= zrS+I&L|9516q%6?vwWDfTB4}23teh?mx4+DnlUewWex*LY7k7I4DV{@4=b?5;qzPM zg4dB7R&5!dNY&2-xC82bvwJ5B?ze9ZhY;2zdum0I`E=7l4!*r!nUENrH#gxh@9^+R zSTnY=Bw59q4F#eWkkwcibvSEz*pMXP#|eTR3drHQPNmXyO{Ur&SiL(LLfk3|(R==O zpu6?zFeS{}4(cR)nEDRda=a9Ax#@}M<5Ye&U8RTcc)!qCO@@{Te*O8xWh~{Q?KP$M z)dzEGF&-3MSkU%mCWlp#0dKjVd@_!#m@gaXR$ zlsWb_R)(+@uxx~|R#XAzIp2*2z9BYQwV#*o+@@nnIWt#iGyC4y=tqrhq6Fr!b`IO% zVVb1(ch1H%kqtq1c3e*1)!Cldq@F>GvUXc2AfN2RbSU3YdFd+5Z2V|4#>*hv{QQ;P zT3mpuTmi_Ad#g>)L|oRb)3|?=dI4^}>%`Un_|bvquGSCt8#Z&8uz<>r(vcMV*g+D& z-M6;1+Dk)r(2PA}tG~s8H^wRsmr=};Pyx4sxWy8OMvyFM^19Ax`Xv+Zt*&?^cB|%+ zLEYgk4qXf`lh^ex4&ZI8>Vx8)Yz+kC&haiy+CAxB{0wpv$`rjOOt`{iPFAWA!>D@0 zlIZ$|u5!oV1|MmKzN_=gpSWv_NRnsJAI;iQU;F_=1Ba2RMLv;h}wx7lyS>GhKW zKfoq-_|P_6BH+p{RUj~&0r$2k{mRJb_=+F3|4dscTM-?v^5FcFz8n4C$+havuboAS zRM*1%I6tjvv;6j8TFWaXw5R5@m#jK#*1n+pJ3 z=ITcVD#3E9`^uj)heAj?U++|ASRFdtyKiVoeaZ#&gDF2yi=&w?ehZ`E$x1v2FsMKd}_56xUUm9x}6Q$2)3I~K`h7+z}x~Kr^8*EYKcMaZ|=^n zf7RFNeiEp9bzG{{i;j!pMH5fF3nZ5jh0DX%s)j0HYx+b(w)q1);|luANlQMto+0} z`@1dp9HR49&lS*d81Ft7S$FW@=XL&;oS$_AcV+ImJNSQ-A#YCIlb2zgZ#-;X)|YE+ zG)B*y^huNxZgik|DOmUz6k0@Ql%CQ;kgo?0VBcQOU;R5jpt(M2V2xGN%9O3t@Hs7? z)3Z65u+g%NgZ`Z`S6*Flao4_0XMq3m&p>LJi`{PJS`sO&W~Zu?t4Ni`$Nk5jd!1G* z+NR%9Lh*z#R#$~#lW@-Uqdu6zD`sk z6DgXG%9hUf@R*|eh{v)8EasPyQHY(d<+2v!;(MJCp|Qc*a18^;3l73VwKXx`{j{{1 zPZ(07d&g4ZAuevErhe{gDh+S9uWInoY4P{WK7cAsPW?;rBT9$dJUl`qjQemqZB?1Q z#jq;GEd%gwPan4;0`behzS&&WL|a<(LLD7(K>Sm0iEo+Y5{rK{8foL-Y2g8QXQTVc zX+~ER9&7KqiNXzxNanQyg1e?u2KOf@{dQU5orx`G(3Synpj1n+3@o5%bK2ER)%iS5 z&UI?U>`St27VOkcl7#%9*8EvtQpBA{eKX}>%WD|c8jR?Wc9K@v44ptabHX8%#>XvT ztF=O`ksGx%n!nG9aDR11r{BqRIPom_+Cu~-6<2X3xRc`yVMc%F!XeyD9%>K9Xfs!))jE=Xg_(H0qpK4G9z( z-yReh!fy>t$pjDmYFuM~{-m$UH?9p-hWfv7p+#e;Bs6P?M#51&t7eEgfp4cEx~O@n7}ij(AsKvP z-7{|!(5sv43^ty?(AE8hX^;S;Co~J)eTj*1cn)Uas@p(}kyk~`4bl+(*7~+aCfkvS zpE(l`4eSgp&oe62b!KLpz($=brJoInoVSsof--&1T07>tH1&k4OTRX14|+7X1233j z*jroFBp&ih3SWjft@5pra_V!tUZWY$^vh528qOwxRW=4;E*ryoVtYVAB2A;3V{-xo zRiN2o;T&88Bonh6*9n#@Uj^P!kMZk?vn6~JAo7l{K}T(#{UTNL9+D&E2XZf?OV4xK z38krcig*4h@OwK)oAI+4r&kRFPIgr-7IXsY$Ko7tX7C8NE%HA%_^C26?Th03v; z9{O#mg{o?4;H*%-+{rnaNtHQ)IW_$al8@~}4$V#w7a6W_^?2L9&t8ei)uY%rrlnA3 znv~--wpt*}P}1A}F?)QXFMAN{{Xh&l>ZkI50IXgp`G6apbE7zu*Xi$k<(cJVdoza4 zd1`A}k9pyZzb{oU=TVv53=22wTEIPXE`5&SPj-{?ffEh*)$gm?9EYdd86BFW`E!EQ zHP(yb(>Q46zoUk8s`YQpPs>oB_ zx=(Jn@~4=3-O|SOGegu2*oKU~MwZa-o(0Tv|nyH8~o;BtM9-Jvm%IF zc+#)ZfxTxc-77vrn-BK}x4>wGZ`Ea-x{=Ex9NX<@5UYMOl((deKT3N(-{2phvo1M= zR0`O;v>?%(Ry9l{mfZaM_W_jQ?evS=X&++mgG&OB^cbP$UwLyWJq;MY zx#~0H_ui6DY7=F4mJ7jqMwf`xH9en0{=}WN2j}pC88p!29FrUMiTI_>tU0(KDu5o!$D^{jrfF!I(n*SfUkP}`#f^x4IB<+i$-5WmyMLv6djll0 zpEH#Aa1!!9zqf5pn~X-FmmQgj?oQGHE-rCAPztiht%7xL+JZR~tw?dyTo9X?FLi4| zb-q<-n)d1t^L-7Mr#Gjv_;6#^TFCUfd6v4Cl!zbQN)h7%$(z>Rmo(aht=skaZ$6{U z&)sOj*f)O`uP9pWnn&_@NGL@+7cNlBSqzZr>GKTZZ&FIREp^*1!s&%kz2}{=#-8U~ z7Y~COo1k`4)-FP7P@JS6HJu}D6DEE~%Gqm80r0bVnHKgxo5JoDl{rmS2;;JQU|Bxe zb0-4Rw{kq(tg~RCh4)7fSUC$TcaM6(PFgmKLfU_COG#@rWV_IqJl+H7gZ z8f9f05|j{(YvSADt#>HI)@q?+Z%ztV*r8tNffU3DOOqW67@AETCnGBfesTK;I3a}? zoYkTQ>^S}>zA`@y(h%3+diQ)&*u&CI@e*)pc8kDdRD>?che~|=2kVs&&FY%7(B&t& z9S0xx%P&XX1t-Du@8V$MdrH_l)3nF>L!Zsxw_Z6HxzrDKge;v~HGSu|F;k@!>#Z%Q zRQi~gRpBGe8EdId6A>oHf`KDh&LqZE*M|-*TT=L6idq|o>c>Vl*|4u z>6mW_#Q%9tO=X9IOHlU((hqwFf(>4jlW4vQYd?T zFb&Vj%DcvvFmmM37nH)Vl>Xr_M^kn)OfD7SX|4eWS#1UF z74h?J6a@hSSWOQ&wMyR;RWGTOO5Jl&gMdSCi>iSLRKWYaMGj63@QDeaGYfs zdSBy_W{J#!Ck;K&>5rv)-kj2s^FJB;+M?-uOz8O-lUy-(u2RwAh0eegJ+bwe>&S>~2LGkq=FOrIL;G`X$3?XsY17 z+yVr%X|^qRVQX9rm9%FS8BmDp+StX%1Ad*56r^>t2Tz%y!|==H$^%uQq(d7uKe-uP3eDN1YU1p^|NaNa z;P6Cz?rXS;POn!TF>?<@dNP=XfT`0V%6+xS$IC?G#>RC{lIyE)jT7gpPkmKwFDJH1oh#9h~6=W-}NkarX#wx@9{K8P7-kK}u4YS=$_AP!) z2%eBRvCtMZTzt0{@1>wvw%laM$)ZYh)*z z8}{ZXNR>TR`2OM*=6axZ>Sjd${fjBI=)p=J{lsxWBIwTm{h8Te8_DTMlQ=B}kfP)G zj?U$JgT`wFbUT>#cntNb1s%C@d$w>CS$=XWcCKlbN#{_V1Bv`X&tS0xnTfL4D`{_#1nit%d2i|kBX7b}$QSFSMQE;3p~$FCI{LkGaMS~s*+Px{ z4}f8UMu7s*XZv*`O0M0Yc69u1?z8i4p7yd@U1R=XK)D`sEa{&_)xSkc-PqJw6NJ(s zv|368AB=$Z4(3g)3D8SD7fe{x0M$~GozrJ8hF{>5l1t0>2;FS&E*T?(wH?Ef*CQQ{ z=knN2E?Cf>A^ZqB7AWo?|H}xt#%_l%W}>wB-k`QZxhec9&es0$Z5&H;rP3T482gTL zizHCTY6tt0D3Af>R=Vc!h*k{;dmR?m9&Li$`uJCw=hLaJY!j>r-x3MPli`ihb=L7r zDTp!KB}?pf#)(U2(=C=8n80~jAV(w9U$54T{yyfSYqkDvU9@WRy)fe-I-Ko4OMPqa zElCO}1C!VoaFom=L|~GA-Iz-^1t@`1UBA35_j2?yH$xs zk}K1pEyLM8G2OsGk(PzGZgSEIca;uyxSj9&?5H;2 z^V$s|Jq;FF)Yn^Pjs9+7Y-~UuVG%aB;ZaXv^@fzddK+mW)m@b}Y`FFKLw}Jo=O>J+ z)no0jc+H9JgvG=xXj-2{V!0P?Q(kkI70S#h*VT%xS3_;#Om~ zl^^7NcZ;YKtCK2D^?h6(>-qaXIn0EWXc%!7vNX1^p-@yF3MII0{!I9)5UO2ceI(pJ z?f;F0$y#Cwl;fZWawv{fWJphmO%9SHopD5nKwDyX&d+WyNlvoAlEvz6O2(CW#i*S# z$Vnkf;_IAv#Na3kTj-Eb_hXi`jg(TX z9}~-h4lr?ENidHM_N68{0E4H%Wu-p@K&GW4(*ptQ93!-5UDb?_%gKTh5NbHt!oNU zAiHI6?_}+G`mR)#<5Wq6;lB!}(q+=)8L{eyB0k)d9?^iw(}$mM`bEFEJbwCi$^xTI^N zslpMgI$s(j|Kb;k^qQ|0e};%C`XQwn++BiQ0j!zB_z|v#FhNaN%numWWq*LTqF?c( zr(N2aORM1)zpOxG{>L$1d3N8$uwPjuKC{CTA3ns&_%~B|uDRo*ol=bl@Jm3Ui6ozPL0-9i zb844Wm2?bv0)Kh&>jEqICQgzUeZ1QX!uyDib3!#eq?EWDFpXlQSh1o&I{HO=tTmQm zqE6?VUb;G~j9dDiHwd^RQn|MX3wL=L_XJh$mlIyMHamPYo^<}$I3b?N&IB%QQ0+g* zQQ@TUocU9+xqMROZMlwbyZ;M{`zZG0!C-7 zVS&M90E2R(Z}_fA*&dM43|3&iAhY=EL`UeJ=p2i3>gd$OE3pAJntwpJ9QTC(>GqD|vnLxZ?KBr* z*rAU^hjE)#pP}lACTL!YZ!gF2lQHOTk?PDRm5&zPO}oja?a3dmxGcwSW6;H9jZP}n zG9+lyWL#d4=e6y%T|7p`+!$|2|7c5O5QU6>2`+3CE3F4*B%0Ppgq8iO;o!5e2y?XO z`@P})``F;acu`c``?Q6JidO%QiJvQuBHk8y0SZ>NMA5oU+V4CVQvXn>t&R(p>%Xh&x1FLuGGcA*rIF)TQN(N7v+fSpE z2rQ4h{}anXpX*b3x5?cY`gOKGOuUw^u`a>LZ9!H3DJzZg=U++{_-oCU#p1|Myh>YU zud|z~ebZDH2-Jy`QvU(S#3rp0T;8>YpDoMz)M9N6=}LH1Vo%{{DHn-2v(DElssC~@ zS&}|)JQ; z(d@6v_??Nv4W47w7c3uB;<>fV7B`N~Xu4YC2?}=wXJW6RUJMZ-op0GyJD7;3%@?Yp zQ#o?D=ChA)E~8;uOdlFH@dO)jfbM0n9r)p&lFu^uc)EtP7Xzu9)vR?#Y2`@wKGuc~ zb{mf96!KTAdMI1f%^(<#35?J24jE;v_36vtXbmGX1^q=!yq>uJtRO+ug!3<;X{-5a z8pO$)8riQ4d}Zs#V~57$v#mE$RELH(Xgc}1*|t3<&(_13r-%?`7 z2KUFsTgF17<+%HAtz3t9OeMGCe&OafIoBie)5H$WbplI5>>ULZYLLaF?aE)?_a;iSRW@wZDm?5G1MvDFy54I>iO~M_bI8F(4LImU9eq*@BI#ILPf(m z%tPD2cACG3^6r;s$QKz3NPw@$P_Q%|$hY_q)4apo7RAh_cIV#Ycb+L;)=PiqRc513VXpquY z&yY{4GbtKI>5M2c&*gDxlEfa&9^WoKHbM|WA`jG8sQEpX=Vd={CZZh9uM*=gr&kS68=K*fMv&DVdyzEV| zp;$g_s#AYlBbreaPllq989qRu8HJ&~wHd4e+NsNAzfGHG@1F5|fvK^{oID5YO< zB5@fL(Ku^raQyf;RX0;DUaUQPQ{QR2UMZTNk{%OdR8`F%eP9d5m91JMT`+hVIpI_~ zCT?)yIY!Y*c<~9lD1%%6>lB_k850U}CvZ^o9{3rPovAc90NpnF zM2vlFed*7_pQYLym4@p)589qaAaQruFg9raq_YeVb~t{r_vKEofbkgf%qoy5IIC8> z_7FUx-7$YeE)leU*8q5v%7MiX{4g103Xw!$DMP1sq&ulZqc4bujij)M#Jngm@`X`d zS^Ag(ct{uicU8QiYL7z&4W9awA;=*vwV^<2ZCvT5@SQyWH=+*UBGd^hHtPbfFMUVx z`g5<dfAV-1ll_Ml(mmhY-0_rpQtEUB26m*<>5Ag6pUlHyy#7!#T< zN;xwGEieyykHC_K=*MDS!Li2niRRoj7uhdq)nvnKO3yFL7K zBqoQ)$kIo;Fq-<~3}OkUcsyqMglz(q(do%BO|(FGUB>=Gv*-MPD3tCR+HePkJwf|V zRBl~JCkv0!8t5{MJLIt9_nklah~KmR58lqIt*tiN+7x$pcZcFGg%&T`;@0Bsu0@MW zC{Tj6xKku(aCZ;xRy;w2ly_(Uhws}5Ia&ufS=Y0kF~=D91d~ljXQyS^NwVev91qYa zk&B&7^VNZovwvl9b{L3WR3Y2%pkO~uUs^nGCU8&WG;6$itR2AqGv$WFw6;qD&l1bO z!ftZ-Cz24Ie?=i&Bwxm}ET{=;H2CK-aMb8mtTHIim{7`D6QChtYN)Bdi@*LFt5kh} zgDsz#0tELFdDVe>N_a=W4-spNMP?B4*L3hB_vbG!eX71+ly@+zf{rh|VN@6Pvmq$f zzu|8cG9s*t9X;MzIxw;NtBE--R;TOWJl3L|6np&pBlv~~96UtS&ojBTuDSd)x@7L;U+iJS%N z;6IS@K42$;xXeytShGb&C*zUUih-Y~adOPtWg_Y-$_Xb{CV35-2w;7QY=e#A^uFkDLx}ogh{+r~c@fJWmb4 ziHVdWuiQE%R#oLlRWN(`;V=LUYAOcS9NHF%@V)3)|0Vwq$!6}Z^GqUo!h;xV6)7`F zqHp&*ZAt)rWJho|a`QO_%6LOc(1|jlL{2!-=^_HCXUjGB;Y#jX=L} zGBV}Gfsn++%o;@VxBEw+kBpmqRDG>xwUfaX@2pFRWT{0i`SM$SRzj^uX%h*3>fI>r zEXufoZ#%bhsisiN{{N7KU&(y@gIeS6!In^f6A>n4mNwF*wolrIVZh^{MPM|oZOSE} z>-K%wi3J9>7iI-^)7-DU@vk37G0JO$>IbK|W zfF1X0$E+PEg|Rt89WVCI$me{fu=hTQ6OVE8(8OCGj2sM~k7MGqU2BOQ6c!E+C%BeZ zR<++`cG7J+D-n{7oqevgx^z}ho=do)I@>K;^kw=%$lZjj#l4;c(;;JoDRP&%4G&>W zYZ_zFaV6l%AUom{9h%_3`FU5ZQzubDq-m@9S)n>_Yk)inb9QMqRb5MIwK}WiUK%G2~NabWlziPx*Er<+wEwr z+np+}+ydM9qvP{fj;?{&SFW*xVG;&86?dqA|0~V{i05sLisc+w$-Bat@C+Ei_BwiH zPutLEPpn2nA=J8N&zsyLzDix4=GD(af(;0%wrw97+v!q#?rnG>PgRj}PxQ%A2DvaT zel6G@91}(x)QT>tOBZdAW34GQ2(9i)xuW1yrTvm{>mJupIGCs%mu2v@^|M2(ewUma zLJk4?`1RNlP2TXY?3-7GjM2d~wk00O0(yEI6mG#s-Uo z$Qy0Yov&jOR*lza??)CE1PK$UkM+&Xm5*7&k0^1t&&JIXYRNzw+L*0AG;u69Oi%oV zQ?^U5hW*R1U}o<>B*IPpO1kN;aON|;z_kR>0Fght(Pf(bu}hOz;A8IMY<@y*^!>!v z>?Mc*XDi(1bQ@QWJVdgy$!JGaMsp7@2utL6tMRd4Izr~k-7W&0X+ETOot_haQn=$D z`;#u|Q0*^LH;aR67=|7G3X{{Ok(!f4*Zf{mK$+n&{bOIk8sto@_(-xSJQ| zpLjPVHJ}QSQLET?e6m7Ngn+w13599DNY6aF_OoX0TOADMA#*=~=LxXnsemm+I_khK zt7$)+6dupJi%3mWo~EDt;VT7fnalKVp*=SYQ|2c~bMEM)E*|L#9Ozr)OOhs2p|F75 zs;6A0#no!3p5GE}DI`gX&N+5VrmLzorIvaKsKpLhD2?uTTeMIJ)N2^2_UnGU%OxOJ zVnmho3G(Zt1;^Iof_k!+MmWe891BXHth-no~(wg?U)_Z|bWDJkg{8>e}x|1`nE#$#=T;moI%zUZ;*c z0%p(~BBx7#+*dZIlGSctH>%gX8`6}42~!dJ*8eW&_nitZ-gkUY5|vj0`IaTlUmLkH z(q)$W$zd3WdeD(1?9jC=G4U^vpq$_tux!6mtiYoBvtG+ToD3&-s?8%>hM;Qx_NHUv z+lQLqDQj)PMk*wh#bvshvu?%K3^Btq3p;V)@|aZ71z9k?idNCT1DBxg!u{|@GTU|( zh6}^cUm^Cb34&-7gM;|+sSy3}eOYCiSS%iEx#lxV5~u7BvY>_Hs64~bHeo_`I7KqQ&LK|rQL4J6ntIvAqS*(Lch z#DOy3T>GN;)|#mErPm8DV0+~<`}&kR+E~Rp zeHK#e6hY%s=<`r+5j-M3&V`)4& zJLAedMS~KVQqGvFh*{nG#$aL7RjRAVM3>Wy zVoxxRB(C0u2ri2X-RBm;^z8)}S*4)EtV-Ex+>d`flgCvhMCUC+wBX-{A-iDP8jX9t zZF}p0gFza%opKpuGG(bR)}?_zrx{}Tyv8_=tHNa$!h%9(YWt4cl6c#>%a*m_1R6n3 zAq9F;k12H^n}*Y92`e2+7|JRht(!Yh){(kb?~zV1uV9Gm(FV40($wI zE%UCLJmoV|iUO)on*NVUZv6;UVob(#%kaP9RA9lq3$zy$SolDeNnMoJsrzSUBVvz`>bDeAQjPJ(m{<^Gw&O0eyX3x$32PvA>oPE$H)og4p1-JAIC~hNP=6F zv|TwjQbE18vicFULVu2_>T$@l5;A-&3hd@GO!Hj4qy&7dYRVa-BJqL|!3u`;@coBA zoI!J*p{6sSTIhmf5IEVBB$BP8{|pHJ#SLj6pj?WQ^J5I_cpXp z31&O;!c@SRjdid+DmTINA5w$3!mW!TMC^h5!Gmq81~!FTMa7yN#e*^%DZ$*6`%b_c z_(XFb@UK-)Fl=U?KmTiGcl$32+%?;m$=6vOITM%>Hre@JC+VFo98_DLyf^(B3{C|s!Y3Z#=J&dPkG zy6++rIDaAkpZxk@Gsz;_-?zwnVD52jw#|Q1{YHmRIMVW1b?af$4cNu)%wWIc`>OW; zkYe1SXTu%t-}nv|!ZPSPr;=_Yg zmqL_wHsyw&bs9Ps%RsN&DXP%|Qb<`hHNkG|zUju+Z@fpRg8Y70J9a4N^Ve2e4B0v& z2Lh%%cF8C<3VytC1261rUl2i?cKBo1L5R@~;Rs3+uYpIZ(4OHJ^>0z>dGy*}JP}`p zZ4ki=>4GNou>*rLcMU&C9g>DD1?{@aR9JWWMxu61eJ711L0`TI&{AX1@RM@fEtj>3d$PVyLrjvALO#PgWg!tek_XWGm;>_y zvv)X^i*+=UA$j;(f`17x5+0dPPcL6jP1o0R+}zw~$9U)4{nN+B?5xLFA4KlHHS9X| zn?xTZ0kfu01Dstxrw|7^WyYa6B{Urf9wcE~$L&9eic85Ba`TYNniPN4YvA=j<9?^j z_i<|YiMdTN_;UpEwX)M}R7$3Z81FH!0B5`BudN}{1V=5>FZwIIsMbDtz#dvGYA82O zj(`9jPd;~KS$ky=>LNstmA_)#fla!C}8{eWmOI_-udg*tE0*Wr*vKqXLZwsNaPMbG;KQ> zCYJ`dtFN+GS5dacWyY_QYNQ{{uw$zBQ85Da$u>hr-ouY8;mX@a^I)RgiBR_GJqRC% zW=62clX-%4XORGRY@qqW1pm}}{Q4hPoWDB)-b31&odtZx#u)+gkYy!!!(Qw>fReWd zbZHaM#59OKPktR`k74IWEWs8qTK%vk9o)wBC&rjbt2CD_wX&XnQAXF@rOlC4lEKGN z+_!$)T<#$A+l6Jx!qkavbFni0jpgzvOip}(+1HdoiGgT6SxQ!HSeJF)n*}9} zyGlS0OXdj(b=D?4%ZipZ?@-w|M(>c7A8y(hji}4X3`Y6qyx8x_PhAE`)GYYW=J?5= zl<(m(XkeT51M=fNnJvG8(IeU5>KTp~3NgmwQeVY5!Al4o=;}R%R?(3uy{k*iDqDxx zWwFq~K9T|13nu00afF)xUVwG#SaK`rH zG42FU{S^#1ZPAR-nm&4cJN=sKR0;)$PTf|)E8t_*V?Jlkmg*DcyrYAUxKnX868G

wSR{7E}&alwr@LSLOC>n6R1cK?cfvrFOk=c$L$&v)vCjbbG+zoceNjy4Lol5!|=6vdQaLl$Si*b&U_0o-}#3#7+({j0PR|i zZ(a{r&CpELeWspzOB1q+EFBoInbv8P_cg}xMH#*i!`a7$I{q;c?T#-?2D*JOUZ<>a zAt_)<#<0w3oXV2ylNbs#%G zn3M0`!R}jaiOT?Y%8llcpm|jekD32q59RAb)Q5$;@Yq6puzYxUAXn^}N{_2Kztu+` z-q;WMOgcuct2DyaHF=qJ0|N|Lax^anaFpFzv{!z|FiIGDc7>(66GVJ1nvk(G^aS)f zXWyDhwPwjk(Cl#{<}u+hHB|;DcpErkGz(w_ah?)6(XtuC#yF`e;4rI$2U2xr_eMG&17Og|S?PAp82hGB7uNs5=DdU6{VK44}Mb#5S*9$Bhoo`QTCsf5lClqd+2Z$vliVzWGv*~u0IG%UTw>8Tc+ zW;zufcyHOHOq4XJZljb$`2bkY?A8%?D5=qhsRh>fXQKkbmc&1%h>rsuMD z5h}bH!ckZ(zF^+pc%r7$T2O=z|E@)}Vqd9e!<*_Z_*`6GSjtcQ7byM4jz(CnC>(yL zD*)6?+1*fcSOczxER)t|22mU5i`o}==57zxNhz|2_lyhW&uqU`#I!`~kdf)@zN57{ zfoIl+F~e~_!^~P*3=jgf#&agbl@G8*^GwB&Ld29JYBX;H4Cq_K_*rN4ZBzrUbXm!M z-OgO;6e!v*&AzI!ZLUkw>B^Fvz8EaeovJd^dz6_}3|r?+0>kBzK*FYL)tNj$DwdnTI?W)c}ly z*%-969s7z^IP%K>2MX^L6LUM#RQwNV{DypZT2x3|(k!`O0-&;y31;Gl=GgUUqOj3QvPx=L2CQVqMSFvk$i3=2r zDN2QoLd?C?T`KaC&hEsh%t{%8RA_PuMuQ&7dcR+k@!!YO3#I5cvD2;FP2jTcYBy&3 zxA`IeKQ#TqyrZ;Uk8b&vaobLAI3o6jq<-y`ADTi!z(wz=6% zTNy$X9i?D6KKtNT{rcZChB#XFgLT0rubc*~-}|1H)IvVt4vc5%raabDyAy9;;j+3( zCEXRd1_g$FIbf*upGmamS^2rkM3;Udl~VhKDzi*Wg?3pow8GSjT%X%HIrme6JNRHR z+#x@k(%OQbL+XCUx=3XEz4G&U%FxoXs1^^TIZcKj>fEWA{O>C1-(4YEbg~2Wro4Kz zN`sc;Ujgoe%K+s!(c@^o0`Qy&9Fnf)o=vw{aHk4{eYRx73LjMKzn812;T%n*D$8@? zVGORAQ=8ekK!i)jKQFeb6s1ya@+P!$PozAK%Bx?1rC~(-N=hA!)&>`vAhS?FDm^R`Ox*Lo$E zKto)iU|^J40=uQ07%mUMx%3OYq=4hGSq?K7kDCcdne=#u!kXYbs7n2F_uhCHxIH-z zy(pcZaVC?=R<=5~eW_R+tvK6prqR+NH>l9iy^Jp>yYz2wP(b!(L2Zf>uh&Zua+r6And*4erdk zD!wv7wcdxikDAgXGgMO^#z<=wR6f^I+M1ERhAz8VquiX017G zDQ*~BC*c$ePoT4C$!=*9nM0{yVfOx2vOLa(92Fe$(4SSn+yW^Eop|FlL(a=tT>xDA z#tcb2ZhBOzb{L`;>^$yNe+}jFA%TpGZbwq7-!H90%lMR-zaHX#+4CK=$B>4QM3N>< z!^2_KyAMOFHDUCxi@eoR9cw1=Zko{LPRzAxnaT;FTVpfzy!M5~cssbt^;E?9@kn%I>1%F)) zzg2fbd)C&`CPcL~eq6>4|2+@B0!ErrsPD6Qc%O1NcL+#hEg^grE8(Q&(&d|`okHq>f!*m&g7^@MIGPZ_wg9woarsmI5Sco8e3kiB^@u31!qCOD~6IldpLr$yac+=zEFAghQHsrYu=)P$_}-3?zxMPW-{fguif&h z4IuT>W1-q4p%1u<@#k|vvRTPi!&Tr>JKL+;ySO(m#v10#8nr>spXXjg0DKcC0%p@! z?oOpBXe*t$2cuM>zb-@{m!3a{tuPSxI3#PH*SY1YLzh5dDP*Hwx|aNh zwEe**$$F-n=|urnKSURHHfSLPxpcR0&%Y!W&jdg;MD0dhWon%Y5zOJ=9 z^xht@wU{wJos4h@P5{cv9vr)2)VivCNl%^@3gx;?Ko>x&Y(E)6aka5!1D0d=#Q)w; zkyms&m}>swY1~Rol2(=@%0lg|NE82UU*<{wT{6>&0XgyofP36@$AeSikxh3q(>lVi zMN|FHvpy(_j=bQHH0>LOW`{=1-&6;7HAoon&-IuQl4rX7N0Pr*-)AVWPD@tlG1;A% zbgQmsj8$DL8Ui@U)LnDt-&J)M)|dJekio;z%gcI_Wo#?Mtpl{?_eTK-?9Yj-pLs+< zCC2E+9wz`*)qzSsnjfOu$Z+=UA^+@$py`?pgYQKq;SQ(E!}5ZAt;8dQL?h`(>em|7 z%m;YWI6@V6lnlfnh-nX&UA;Scdg*^iwgJH^iRVFLK!)&i{Jo)rFGv7;JA41$2|*<8 z82t*?t@4bN!p7txkaXy$J+|7-(z^U|N1c-n{=6EIE_Mz+y1E^44VE3MO9qsX5}O_F z7^Tk^B!)1VOI)$?f|b8=nKM*ZY;P$1v`bA><}P-(nKM}M(L%9@HRnHb)*02GUCH1$ z`x#J>JQmno3%8$Z`T#|nYY+$Y_^-bNK?5xjjN#4ZAtM!Jb0=J)4^K)HF0ERgv!D7D z+Rv(AL0?Ai3;~BYuB*hiHMLT&s+UWj^Am#f^Mg%V3M?B72ZxoOZC=M1$80H&xQ4fum}St;^kRj2Ui;Uny=4R8)bs`$Gp%i z=3GRz37zgO=x1F@yB0xM^J{CEunslaT@@L8?N7Z|<|F+Cv2wJqku@0&7{`cifOJ2# z@1jA*mT2BG1%-D_-7%hn{15ZNZET@ zMNu7$puJ2L4!=-(3g#c#-N~JZF_WBJN5QE!HeY#6@?tV;w$ukry4#qh&dF{+=XMQy zzHWnKiDA_`Av*TGrz4FnMMI#YasHN~aZdag>oXu+>f}OXB|Xe&L^Nz!ZNhCm!nnP( z{c2Yt(A?N;emh!!vO`O|XIHzXTO77ro>U(;HgvsfmtM5ApK| z$$6&UK@PqA_FCNtk=3e5$gIC{FUSP7IShQTePof2D>b?fJTX{f-oXCQl9tB}w13;M z{6UcPEpp8eNqaAu*MhortkYb=l=VJoU66>tCqU;)wY&ZGK|*5{%i}w;FCR9M$|;fY zrapNumVZAqAwu08+bc?+!5#d8qSH zNuQU(nTZn1fv`+}bycaBLBl1mCnZ-KwrwKWWjCS=bnDP@?9tv*SQQ*xI+g-QRZ^BDF(HPvra>_DRYoO1CX# zz8M>VrdqT8X}Q~P#%lomtbBhCfAWMRYp$_V>L*M&onG3EKzaHnt+Lz`!$<)T+^&N^ zd~*TTl+!B*@whW%Z$2^R_lRMAMWp5Xv!M3LArvy*xX_f&azc{@r6qTJq|;?Jlxf}C z-ml#Xxc!1OY4|JuAq9>228s>YKJsk&dO8(04d)mC4Z7IqNKUS8P0(}XLwzFx2jNt| zcdKiZ6yn=F03a)dB%ccd{pAX}5ebHp?ga$W3OYgpUDy*(a`7q8?aj{4qUVKPX5dmh zS!Nz7RG-}Yqw9)+Z=#6gF$A=L*gcI3z!NmJiG~y1dJ;h@U!|zjo zlKi=pVXvGs$f^@`ZT3Xh7?zHEJ=pLCy{09w$#MZ5%m$a9f%HVrWm9TrM0S$9UC8#G zqqVIB+qmi@-}2gvNDr*6A`K4EBtx`U+>bx9(niK@lIkqB*NA z3Gl7427`d(n{QduWTuEH9hp z{YP%#Qt~Px;v*AuQC94`7EWdrnpjznh9)CL&5}ftthq)s#84T&j z%9NR}t-aOz0L#p@wzd9t5Q)j%XGHj!=yIE&8}~&J8Xi+8zia!Vv2Ynew2u>Kzwkkt z_(CT0&1Ihu5o)^VK)<0)XUa>ROp6?ce6k#2fZO3+I99-W{Y8+H=e??L^^dIa<-8p1 zqRO0Mf#2VBjIs#6adQ9ot;nZlo=>0ttQn%%0NH8#vslaLQ;}ys0PSnl$dX-MWkpSA zLYNz=9UotwTVIyys{^ce35G)%F62m4W_sxbxFY$YGe}Me{O+uzG!8c&8 zQsBSR{m?f*ch6A;oG?pT`R?1b)W~ zjPkr$)$SS>ms{wz-}|rbbU-KJe)!Tf@Z!MuE0BW|){$3@5Dus|MCL*z#hPjbD)K!6 z4#C;qUOXA%gBlA zJwqXyyZOQWCQHLHdzxa-G-siud+DB;wzx?IzP3yew1f(@)OY#v$_w4HCsK7ict<(E z;mhy-WavR`+tOWKKtD;NNunN@JA`CZdoR>J{*GP7>zM~*R0i1ZE%!N!%+US?hFJHV z+?!kL#P$K70;s6YFZCSKH!aX215#iI9n&b38;_tF|Askkv$K3YZ9wK5D)iEXmC+!p zIyGD8f2A_iHa9a4jg5W0(72L-o9iY4V(#kP#|lqu`9k-MZ7podFY1@80=5^vJeN9%+6CM?7(PW?;^CG|={E@KNXEY6;8 zXy>`6b1}y4Q1MvCCVQzoM}8r)MjnjM%XKB4&NgpJxJJ;czzejVeDz=Dx*0cecPL#yke8yqbX zT!}9hA^#yor@xu@gfA=)5fAt6w99{7rtvO6T?;1bXvq{ji{M>0sUSj**2{vwd?6eZiN$BYm41UL3^(BV20=VgO(RDkT+Qa_BJIZ@qZIKat! zlfJ#uNi2PwpD9!IlKVAx&lEZLV}h^+Tj(B5PU;vFL$YBj#Fy@j_T%}aVpTnB#)?68 z!X|Z{u8E)q4%J9z!M<;u3hi_8k1tQu^_5#{Yz^(-0q9;l!h@Cs^)k}C#vn_$24g#< zIgy6%z3JQ(xZ*zD{O6#YS=%ZP7f>|atEO&9@sGjR7?yx##W_CElzsmbs4l(2(>d7F zk<~+cINa~RHN?M9;>whtz1#wp+Zg_hS1P$C$S|_GJ`SMpJK$;nl0~wqP>FT!vi3yU z>4{S3M$U!FN9f%ebnK|i;r6DU1`a}xa)nV0w!Bhw#2%|8>UU^h{gzbY8%#d@BPnZ$ zks>_bSxD>T1uxt&j1_f$&dsH%C$N|)arD6Yo*8Z{0?_9DO&M#DqDPd2!V{ZB7%OBs z46ZCpI_g%TODW)XU+Y}gPG8c>XzfTXeZ_xK>45q76%xbkN0zC@+Up9%W+!$vW}B@Fqv7q&$+>Q-7ddz-i$hj8!QD0zVtbd6^B*T*Y)SH$ ztX^D+Sk--RxAkm#Qw{E8ugB_4dX`;zqJYFc-~l2^5_^ZmTVMNtbc(`Lj9gDsiDpiv zW}u8_tcFUcT3>U^khH(Y(BEfo9b5tbq&vT}=mLr;HyaDI$BP+%X(e9KJ_2X`ht%B` ze-HznK%5rF*hP;o4`yX^MXy{gA;EHakOv{tY(vb$_vM=|^u@Btnsk|itaAN^i-x}g zzV{if;jNuKP1RU-$C;U!D=<$Wwzm+IJJ{&y&+c3kpb~m0pfLF?w@Rx_#x@?wJ{g-h zevax07O{H&CXFB);}Mcs+j#7p6slyAs;w`v`pxOCE1m_n^Lwr4j9x6d;o|Rq*)%Cg zR4-K=^FWqla9HNN(ia`iQBnDoD1HbPnaoI4W2tCMIkQhmMw-C3dbQY((Xb2OYsY78 zmcNd*c9gD}au_=^*DUFLfkL%*T1^D9Hv zC|(~?813b23emzH2)@hHHKRhn6g4WWzZx|i4r&@2_x(_iR1au(XoUdiN@0u}C%KaA z>1QUdDDbF#`IrJG5R4(pw>p>WqFilFBr{7g;Q;9ra|U-nR(U^?dodM*F2ilVSU$v| z{ztfN{d#df1Leh6=yviYUo!(qVD|?#kyG-sNc7LJ#EokuTR`O*-N zXt`5w)+wxKiR5?^g>Cdi{%zF(q-_A>Mphcyyjq5K!giNM z@JDfVk2ua@u8kWA-Hmx#31iBSVG#btZFRqVb}9ET0o@dZ_&ru}6^#B0=Y??g7Ork; z7Eu1VyBmx-5IXe(2iKr9;XkAaLBSpxwZqItIepPxe?1lpFC_g7i-%_gN9wNRneR3H zK99AvHDJjyCHyn53c6Z=aip9;?-Xl|hbr#W0uYMDXA?MnlLtu)sXHD&O3zSJax-$( zQ5wV)_t`u#puU(V%TnRJTAy#aQx_%t%LkO4XSHy7T~FC1?Xk z^VrzOkX6??jX7Jj=m?;uysLA3TN>YhH8P)KyLVcuEAq^&v)w#5j!cDE z)n8C%Y4rB^dEQg6t4(QIP`xy8G3S;Kw*!LfAyLi5JPxeK?8K0v_5ValFwv$pU8 z#NO5$xcq);m-b>A2 z`>*oruCpURW9ZYNnS~~gnn>E^V|0Mvun>huv>;L*8h4gTWtI&HcBiMIRW7?fLk5r9 z3v2Vucat_XA}Vp#lp98ioS#)4Dx8Q%(lJgkZpe~p-~bLseKblTwd-JA=&#T>X~NGO zHZl~cW@~>^rud#IQjGaCeYFV*d1*bAtMCeYBc-2nnH4(?HObTLdT@JJE;3dF(^;n! zzn~$>s;0(~a)cCM_GYVc#=n^a7+o$q4f(s9-60pKD-7Vlf88|$NLKP+vi^YO=_^H) z$RwPWg6aG{VVEUbL2SL@sFhmOY)kHq2yH?SO;}L#RA& zpT=khnz^gf(}w&aKLpj4TKiU*gTP@%{s2$xOKWPcO)V{?OKqn!usQ5)Zv&!S2_M-* zu)0$YBkhAV#RqnqM_nJ#@UJyQ+m+J6AXFvVh#&TolsX~Th|F0eY!aZx5bf%-jctlP z)N`*?5xd8_kL`wWWy8V{q-=Lg)r*AZ?It5~hFYC07;G~79 zw!yT&mt_w=LCXD0HJZ@duRtP={ z1ZI$5m9MP}{ekwfR|Tqk+^fkQ}LBS-<}}q1QeS1$e6&ZVWx{*N$wFqneXZ zsdT13>SBY(@|;nC$W4MLt<0OAs}N zU4O6wTlI5oK(>yjzJ$~VfJIfoSoT!+Q+ zl^gTXL)l^i&Bv}y` zKctsTNefuFhn!ce(WYX)_IKI!#kU4obr-_IBYoVX`5gDQzxPnw{xg6bUNg70Xy2wX z8=3mlNLq6J_`wag?nLu&mfGGI1L2ZPzEVLqIwt4hu1e(3$iHEH5IMS`e=Chl7Gd?g7J1}$|_%xa~wx_?u3#qco;_R77aj0UeNm+NLf>tPpwz=Bpvb} z62f^vf+TJuf*w^1Y=?3@YY%AT~d)i)#(G0ipO#DsfqOWSKXKJizasF}+hE5WK2XTiezSRe*m z6HF00PYV6HmMk0cCcHE1hB0d@cJ>*j^oRpPnzDdonWdB?fr)}UiUd$SMZk#O>k7<1 z4n*g6%NS>FY1TE^`G%GMfpv#mf@)thg%4ajMXqR6qa>ApaP1)FzIG7BU=^KSAF|P{ z4V(ix>yZ9xwLoU}KBkdU6??a3z=g02>dlnCl$+aVz{`|jQ2l2W(s|QSdM>R)NhHHX z2AnUg5HM%Ynh>V>k1stzFgECPwzECinkMa}vJv|6iEem*Xx+(tZAz+SBb_+pFy>+~`$jJJwcvsth~GHqY6>t27vmBJ z?{zuBd7H#iAs!*)R~DuYFNo%gigj;ot{s(3SAi6^?g^W3_>3hV!OTDDzE>uQ9d_2I zN{)`@>Hw9UO|ZdUs98le)j(}1New)_SGCY#Hj}UHtkpk!ye(hv$?xCRwV$U&i{^j? zb$EA0Ug1M#4@ycsiNWy1>R0QDqdS=!L#RQn9l=UJ&)bg%v{LugzqAjVdH+iLiEf*f zcoWZ${z^4D1ix!}R(oSgpSk+;OY!%A_f*%SD^Iv|_6GFR_25q(F#N=N_K8g{qUQ{= z@VF4svPO~nH#&E{wKV0e`uq($36pJ0%norVsD|VFFrp#$1}yO{h<&jZu&kCYh2I>i zYL(p@R4e?=+3HEcT|>kMgRUA|$<`}*ty`QhU$#Zcpoo)q1N$Tdr`kBcatLS`cgKgm zZruE*U9Id-`v-?hLSH>PWBIGnuX(nrJ2x;~t7hgOoI8dn{<65Tl%Oky_kXPiEjVC@ z+k*r#9ZTO+-hwJm&LbW67-sas(J0cBd?q*_5 zbmos?+7WmDkY;InoB-C;iSGHF6f%BY|nag9Bt~4 ztaP%^d8&{~0BZ)>aV+|T@~FWFtGXmfJ*g<2K4|A&YJwc&88*sxvT%=0q{<6L6SG7lP_x6MTB^-j!aPN(^Ze?#v@ zCg?^%GugOXum8yI~XMq8I2pr?c+rs zH9D}gsF8Sm;}l!jN$4aEmex7NIx%~l+jt-+mZ@CVi!wzPm`K+VEnA2b0#&!NlnNH3 zdVa2=`rJ3H{&y^El8g~IReiYgPoD(YVzUaF^3jI86NE%2&kb29CGMyea@2pyGa*?L z89=K>n%-cbjDZ;JMiK=5!}tdXcjt1e7eSm|+vIO_Ssl^J%4qy-X5_DG#^K3n)>Nsq7nwkWj5xg{v5XXGo%7=wn%MwUU&3&4tFNINFMYjzxf5=vi>rD zig?jHlr$}Kwi`z-TI=By2F*}}ii$b@UWYtz->;pEis%EF4Cc{BqR_u#@eUcvd(ChR zs>`oEfjV_)9{3w%bFwBFP3wPuyjY}ORnxHE6ZcOJ;T4i{X!{6)~nT~=A;_{5&?S?$#7xo%?e z8&Qpyz%G8dJ=OHEz=H>e?-UZB7H}`!t&24~xV@}?R&Csj=eUVp{y5d@qmJwJITYd+ zg)JxeuOZyAx{%&{GejCXHF>|Lncr(nP4$ifoAh|HcUq0*V07&bUY1oQ88^4n`R#RH zRkvrnkrU3+tw!f7D2Vpq!ui?IsgT^43IU9&uH*|5b~$8Cr$PUlLcr2+87e_*(=&J#sSe-D9a$guwAT5*a{f{1qb-?owEN~m=r|vxY=rgMK~TdI=Y=w?pI`3>E14h8<4U&p07*X=M#}NGF2AKd)^6?m^ZjFjfz{WZv`#n6 z`;UYh$QU%>#vtr#OZa&y!+m@E*>lUY8 zGogY&TfRWip6vE^%pSW9(y#x++F3TW)rM;nic{Pj3KWVLcPQ@e!CiuDu%gAC;#ORP zySr1|g1fskNc*1rhI3A4_LqFh%$~jT+_Kgs;UhqQoRgNwYkh+o|s-8H3a~KqBnwF(hz)0e+2(e~^3n+zp+uMhV??fZ3(WOehwoAwO*I#n|789)f=M zdM7V45UJRcaJ(zizip;`(cN1DV zbz)=z+$)zw-HYF8#>xOSiAbAdY1M%xd^n@?tP*Y2F!6>Xx+P3y)lmvyTj!3cm0)h} zDXSE1cK#1;RqB|;vl3j-inqE_kUr6k z<<_BqiRX$WNlO>X5@PY0 z*O&Xz0YoO?b$KR1-$hs)qL;!f+3(6c5PXmwzenR)`5dFBWvwz`r{~LDvgoIMUwEiv z6O#GJyR0I;SI2Z2Q#(DzYhrD)-#pSlDZ>f&Ju^lx5`knI%s5zs8$@LcB9`@Xb&gub z9Fh#Lt`v3DHKtySA7zgRkmwbOdrsaG2(dc zgo9^Cu!B&;b0uyMnWfs_d{e8rhy9Nh%vlI#QA>Y*zV?bC2Sv`%;m^5?XTGk=2)#q- zMn|l*E4OR5QqDP|c#S!BXCi*Gc>)c0$V>oZ6+KtyXcmi~vZVU!hgBCj<4W>@5peQd z9~y7OaAC%vgsuuDUoSV_k>P8rbbI}#F8m1_k(5B-O0Sr)A*guYyT!*kkaDX^`BQ?t zq35?Ra5c8&>Ey0PZp|2OMtJsjhPAl9uX+x1?~8kA5>QMC|IKu#RaGB}33DpYg(-y4<(sh9w<#PA050+^pT=lcA z-*_1zieaP`S@#|iyxI&Ya^R5zmmelPELEUQ~fjZPw>Mx(&vLlknp^7*+Fa`{kqpl_|=P_nSHZa>YAi zs-0uce9GIuJJC-$Dj${ZXJ#&oc-aSZP<$*v=*6rGr|`VxUb{C)rrSzIAj|zwl^R(C zb%%6?a{b@uBxx``Y!qC`53U-cT?#yA7t8?5TejW?l-L^)v}ej7#h;syvJ62(@-tru zyG5#-3<}1!7Lpk{qRP?gl#BkRU|I*e4}NwUxw9WAH{j0Uv5wr&;Xk-)O4BG2&i%fR zlS$C9q1Dzw84ik3E{iny0V}s5j&@!NNxDn7mVp7S0hC38Y{ta*pgj;$U8IQDJ|;Uh zkIIq3xrY>KDx5QO4ZMI3>7%-^o~)Q4v=NcNvfK_>i#dqtEGi^WXNDP3?e=`yDns%1QFv3} z%f7Ewhb{u8_is4CBOG3Sb&u=aVCsf^ha6C80jq13h+4nEZLwNRI6 z_R~t`_%t+jz%pY^xxPVr!aD;kA83?-?`bj$nfTBZ^+^}0VWCH95LT1~;8#G27KeMk z-gTV~>2_yNF0cfO)=E2lh{#oT|HZd%W(6^H3oLj3$gb)vl>bb}JhXr2t_v+~QfLcG zFP}*F3%~n*EGzKH^J1+)ZZ8V#g$~`u>fRDZIoDXnQ%}*#A4Od!fb^Xcv_Xp( zr2;qsZGJI}h}BD>DAh4Rk*X+57>%Rt6E&~)=z?6GVw<_mV&YdS85g17+Ajw2=$dKL z$rb`1CW+4YKh=G^6(2Ts>E{X|SlG6^`LoB7k$86TSSz_nSDxl7NJu9;hrN|sS1Ljz z)N87vJ2W{HI6F~W@#H4xOid{F=ruw(l5AtOx5Oomf_cpL$p_dNSC#k>i)Yr_0V{RC~>;JlXCg?(?QI#g* z>1*m$_10z@eMbnDtR*v9L}9mMPc$9#n14zXlV%OB{6jcy%sWVgmm9Ob@cj$Oa+ut) zRv%)dFm?kXtpWSpkD_HE4Lg@7=?oxuJz&U^6RKShFjsOgzLJ}ZmWcakihwDe&XjYp zSPHtWLt+Uhvlo_Hgar=V8$$y#^|)L(ZZsypSw-PL)kTb1*bl7tsA=X2sz8_z<7nt- z5rPA`4dMdciVXX-lQ2jUQ0T}z zv(se4UjR0yCn+N^-Ol}gTB-tNs#w6~>HQ%C;6ChgNMA&Yp^AsZ5@TaeQ<_aE$f%kw zAslzRY5>O!;Sv1NkVbX;*MjirUPrV16KA1a0nxrtTj=H9Vz=3l*GXg%deS+^wjq2! zmM@#rs`z;$b_O*iWy_M7BYbJdZ;Lc8?OR`6YK=um)doP#YQn?$GA{fp^BUc$jNfdc zmh#=ANdVw>bDpi|Xd2fc+e20crkYJ|*uEN1v$87{v!hATNNqGd3FQ4x zct(-4RK(qs0lYiKS*{e2e%2A}~ z{^gYzNj*DBlA5Oo?imF1aq-3Ha}99{%2{uRQ&8Aa=$h(lc-z*+>_zPtm1EAg+;Jb& zmL9Au6@?8w>&6DUIN7-5cx-on%^b)6BwXMzoS3ByqcA?GWfZW*Y&~>D(?6sFoE-B; zn1?G3I#)%F*j3a}JM61zN%lx6bSjDwvMq(!c#Ny!bk(xuz(}g;M@4#s9~;ATwl937 z)Vr_82xM~zm5qo-iVg&j^NV>kd2FiPszanxBov+fnwes0tEb>ZtM;#Nq+|_S6mz1R zPb7E;x{t-CffH+1oG>t(v zM}u;7ttyqUjo@#>)T-FziUC{CE)G&IsS8!SFUGUtU&rl^d5p=b=bzL%#a%snwA5A} z-vad%yAqBU&JdH8NXMmO|KoZP?6VDu@PMY9;wsr!WtJ}^x3MSxt#U@<$ba zsE6e`!Cz;PX$Zd}pcu->m*>vc}(>Io+kXYf_{U0qW5PV7I1}^%_1$9Q)WgK5<>q8fio35lv0N(I<)yz zS$j=P&PKuNMwx_V+*mK?vaBH?HoKTS`yX5$x&RFCGDn(~7^T7qW{xXDz-JVCZ6{K; zI5#~EUs2|1-H?tEEC&`Xfjvq+EB`-38=};Masx_xZ)i83;yC93&)2d#k1uw*&jMS3 zohc)da3`K=C7j=xbRWBXSb~Zfnr^Eg|H0`rwyU@d>ZufOk*pEKtSB(1A?~*O3IR~u( zr%G!XJsD zM{mS$G^c6@ux2;Ubtc4Czu0{6MGQDtdur0$jric>%@`a0D%$#(OK@#72}Cmd6Co;nh9&dZssjwHW;EcELV1 zH7H1OSyRd~sB**5m;`G6alCL`w7w+wc@(H=C$hW|6SJ}%$b3zyIBH2a(iKhTbzXx_ zSWC`%2%UBl(9_L{72Qod!cxe50#)I~)8dS?43_KQtB2 zmLAkWeY>*>@9?GT4!sQX-Lb-dK!w?Yn%dhX?={+aB_ZtyadEE{Ufx2-X$ROi>mb9y zx!EF_eN1=Zsji4jo+59j`WjoPw0Vv#9fK}nuq@}lPq4U&ghG$ozcF{-%we)>@hp&Dv>M0rb^8oKuD4y~(d z?GFm9U!k;xKoLGS!xWj+E<)5;w?jR8PR)j!b~=vBu1@p_B}Z2or@sY|qV!Eaogu=C zJRXk)0G^*_V4{ly;WYaPqnEaJKqb(YQKT~eEmZ@e(ts?$ZA`C1l=woRj>pk=& zcMuulqDr$1R*}PtN+mdQ1ys3YwMLb7Sfqa52$?}b<^q*sVbbA%W~?iF!%#{0bGyDx zRFsULDgQlygQI`^(5&8(TEN0D!m(FfKnzSeBWeV93)t6QZz&}FUPrdhSN3QiAQCu1 zhym|YM?su^fUm=DZ{!1Mx6i&$c~puVD_u-^F~ag__2+++rosLGkTNN_a`$6qEbKdl z0Z6cfD7&}K(~A$Z;@ z*~ZvnDmpN29^cH-rK6BkF?qGrtJt3>wSGh&;^ez-v3sde;}yy#n==|krCFYE4o|xE z9WkrwOn9=kwN|xb&i_N?RCAyE`#vyPm5Zb@QQKi zzODQ-7c{`RX00;lmDr(+|CJA1>&2VJj`bvhT2^h<=r#Oy2@v#P4UydXivDb!D4mJ4 zk&hTt;3*O>-8xsp9M|wQH$5+C_V-TOZxsDoot+4;*m$vfh&*F!)?PZlW=%qk6cb94 z1foSVD>w@7xz6z}J=)`rdk7cQxiUPlPe~zK5Je*yaGbzv%6xZlk-}dRCxA>d^B~AL z>CA?iEB$qVaJrhwe(Cj9P}%kV=Wb2 zFJrF2S*ki%d3{O_$H=Aprb~q^pHyiQABsx;9~_Dp9SAtwi=44%(pPR!*1hsz4`JJ^ z2v&g){b%RYJtp3n`X=e`gM|u16n>a^Ji2@YH7Ro&z022k&vy%#Z@fS%e8aVrVV6#Y1+8cMRHjO*=)r0H9McHa0Htwb*`4qlt=?|LoovrJGJj|I4;+c2JH ztMzLojV;IAp-b6a;f}sAR*S3BwR55wb7MbZEI_O6pY*>f6+}v@fZhHA=e(FPN z*uCU@^_O#GYxA&$mP!K+z4WoHhzX_>;=}nTfIW1_g+uDF@3I;^LdF1w?Jqm2Uu$w- zm}oKB*@lVu7H=0s`Z<@E1IZknJpShR zcxKo4t&$cZ4S$IYc9LY(%hYv#T07w^ICkrf%+A2ce~%v$7#~X zVGROHdgq*LO6{CKS0n9(6;T#%2qCu01FFnn3Egue}Q?* z(k<<5&RHDbNy6WMC4F(+`53AhFtau#?^#`VWV|s7zG$|op4gM8w>&i6L=uJdM5br( zXX6W1fs&}v@X0g0jFefOLmI(;zi*c(9+=n~t+3^ic_xU$Z_`U(drp z>9c9$q+dAs(OBiCS2Mo||HBK-mLN9%*PF)QpCztoSVial1osL94_elCaOpHHXZdjP zJbe*VLS0JwrRmQHN(<3HJ8-2wwdbvWsE7Xpk>sb?Q;IW>cjE(CGTt8QmD_h3+6SSw z5O=DvtM~vK`Rq>Y(}nG715PxSf)@w57g@g@Qg|%Y7JKZJr+3I=6|H9Ty)C|{+Tv2y z!{I71?^@~of*$Pkl>hL=6gOC`bN-xETI9evJ+4FF-fB?HnH(1PGOiQhfo7g&o`9#H z`A7*2RTk1N>-y(P(D-m#x~Z=D=N$i~i}G~A4a4NKAyMW{00^PfV`*A*4fdskv)NdA zW89BwG^?Si6$r%az)7{WLNBdW@R;>70*iBPm@J6&L&l}Gnj*x|tcPiINnY$4)8nu2 z6W=rL*X(&U31zKKGZh^%pnVsCn{$3(f^m~(n&zSRm zDnMeG7%lbU&!f2YmpYQa+28rr0(5Sx)@NC(EAIRISC2+FEgAf7=fj> zK;5b~!r0EV3#Nq`VC3h;)1j=p7B&Jj!SJ{U<4&t^_eH((^53pZKMf0}l|Jcz zLW)G(1o8D&JBES6Q3q>(>UgFo5>U6OlwJD9qJEi*_NPM&uzGFwE1ZxPnTRK0VBtwA z=dX!TCfSCjknB5rNT$Uz*wTS>ynkigt`JF2}O#2 za*D!n5s`Y46&BEC4{`>>coc=YbyEO;e|=~R`%BRcD>lx zp<}06QXX~G-2r$~GV~UxgK&MMhN`u6u^4*FTXz2(jS|z*wdluIhwm31<2}H(Jv{hh zO9_PhqlMa{-cTTT%vFHb(TIjVIOl7m&y$l7$Dj2{twPzzBFR1wT$JwaZ`s- zMKkP$nk~zk8;oS?FXPbCle`hY*w-}w{&Bw#UyAB&{&Rj95$ZIPcLp|napE1m|ux;z!Mbg3~i*ph)q<_{sxsTRO5JIY(*IlR#`e;;K2K zJ#RBDs__&~nB8yvM`{yH*OQ4sS77DxV0%VXvCgb)sY_Zi%6dt@jQm{6FdWw1=!qBEit(;$&pZgUzHxG>xoRoV;saqWc`dzR0ztSDuZ)4BzKBxWnL z3m35mv`7tDKe!E$s-WLrNZtPI)1!LZEQ-}wFX}eo2dweEwyJ@v`Mrof9U6e z#-Pb%mp<-Hy{n@{7K zWa!`6odpE+^?>+`DTGnfgIg?p-cY8Bvjdge?W`hz1J0(eyGkAJpJdN=8m?w`MT&%S zhXcfrT#m#{1)kI7#R&3!OQ-Te=a0P4OYyVOig7JGJC5}!T5R&(%k#C=bvgmr=L3q0K}1*gs| z0*d>a;jL|~XB3ZO@mqo#iItK*@)xK6V=O8^p<5#i=3QQQoQH zzSYKY)qEAk4@>ezM6Hgflr3m>x$8Uh)8h@mE{WQ6FS5BoSLLbp&#Fjl zovAbQ;{e4L43G&+r=~{87)giffn>^BVF+>=T7sLR7H$2B?0YBSGJh)z80uA|zXgi+ z0y|j^B#Cp1-aDL|%X`=Ybv zO7!Uc#!Upgyp^C|;10x-&*b$?g}l#+c=LqiN4>d8al?sO!vg6c^KZ)Xzw?=sJA&(bmfvj&^hN$80C`EXdbj{ z9lIO4NM<~3mT+@*y=!WcZ&{QI_@jmZ?3!E)TP7m=*^U!hBL>a7ocGLEjmQGDSySlf zMRIh$7;_4PNz7Z>O=Broz_L`eh{GhUI2~Kq1NDh0c601a%=7R#KLWpUV!V>A_=Lto zQ^a;=BWA9#-p1_Pg+!hZyGJ9dzM)7kURjqo%GQpZP)~kK*`!5hLl)zYF&nL9ZJrAP z+>ivI^KZiNu$W2rxi_Oawq?Off6_w{ovpk4y(nYi9}UmM=sN<*RwwIwLop>GJQMoG`JdA)Q7C?3AqRGx@K)c}$KJro zBnkP{8K9k)ev}!Nl;fDY6)XcRMxjI$<@!aGrFWiw{vYG1w+Y(vKNTH9@ME4tu35UE zl6@n0eS=dCDzj;B-PTLD4ey>CXI^tqflJo2r|X%<&(F7`XMc|Dd3L;ry|z~`{NFt) z=%fCFKkApcoQ`?3^o$DFiYkaz59f`WIt zv{|ntJ5X#QdNhN#P1hokRdQ_PX0D%ZF6Dq4+RY|&qE8HLY)p=8Vw%PzehOFBso{%z# zUApdKlwnW~{U4%v1=hw$`kFX-jAA$^1cVRmZp)&13|*&zrr74iri5s9(ZHb3z}M}w zfSbA9yguKy7C=LL_u_R?PeVrv+Me0n1UaFV`CO=wHp5O3BUsIa919bKm#ujEmr^cA z)+_s8QUTFBdG&c)I?(HY?USaPo3r?W7r8q5jPGIyi!2<2%yj02>r_VK5cL40rZaH) z-Op=C%7$NcpMiyBlbF@*$4i!+=o;33kB4IZn`(EM<|6xXb9YO!HEhsTJi2?xl{`+f z3Y(sfbl$|YfJ8pkOjuLp)uDO5MX@>lYHmw0m>bQ&rAc#~yl(f;(9kI{L6eBxf&y1pQ_x&0NyTByP7mPRr#V3M=GhpZ#zQnu+SHr#FoJ^2j!-+4l!QrcA!BZzSic5dNN$e|K;o0NzDU0do^9<6+`)fC}cAd~~ zq{IYnK^{hK6~54P?DbP*yU9a~X4q-Mx!^ub*6giA8Fz6uGS|m6=jb*$eZEujYRS*f-jNEX!hr(!KB5Ng(J$RR^*DLQ z=J6|b#0b#RH;{B~Fi-qIOR9|Pn>;~o5K#jgLyNV^!dq`4h8v@;&$_M{GWO0L8+cgl zr1YsN(*~L87OLNMWRXM!>0)j#EY7v(?GlTIc8e7rW;&F*&Q4oR3%q~78QnRD?FU8h z6ZtIih|wrCubE(QDuuTs*zIRw%dk+?)RrSQV5hSV1Pp+E5eR>M-JHvz47Q@l5C2oj zs-ocVN*Fn?I9Mr5&L5CtOf}U7w%(1ZosIR4 zm*kP-S(y(6!&j6iFh!5Fm{-2#OlaDfjJ(*TAT?Czw~mtt< z+(jDPspj3$4ZJ%2i436rz?T6&b=$d2oXs~Cd_UHaH`-Gw(|0^ffQS3ja%cKu`+iJK z4bR@mt8%c7Pd#>gYD-#HI=R;U{2M*txBzd#9rlP4>1%d_8$ysQDv?ps|=uh~CH%+F-wKiiGaXIM4MI$jeL0Lt{6bS7wgNwU=% z3COd%J_(GF5&rwRLP$qJC0L@r-oaZHsE=Xw;wCBU_gIaFW*MiGNKbR7!CdvpqG%*x z%O1lxxVl%5k_khfl7&}K<0l!mgL%}K2{5uoTj{rXXE2@aTg(U_DM{Ij6rsliN!d@r zs_HdeCLY0aW;#c-{W?e1wGX8+8zR|@8~0$DDG%Yx{H3RcSq;FHqbSoLmMfCgont`7 z@0fnhw-$R=Z3=h*r=gQkvKBo8*jO7lt|kBkwHpefpmJ z7YoLSO5HJ1S4=^9ikNi4)=*4yrm0`Go}ISQJn^~%oPpVtiuC5bcERSH zus$>gHEVEQv7Pm9f+g&pqItPA%v7Ga0Bh_^DwL|x5Zf_Sceuppqw+J8^-?%!atA##_7K(=2s`f-mUGmn_}!G^mTn+eecv4S~2?eT26D` zy>~&_Q!l1v`6~H_g;4PkfOwRa_MFO7=_cz8#Y)W?tz{)fcO1fMi_bO-wC|2iRYHVp z_1S8%NkJsrlgaL(iK0nTcJ_%lHy(9Zk)eIZMO&c0%>Y?T}U_ zv*gFN-1cs8G=-pqNp!9mr*+}K{<6iw__EP)6oh^4MNI`No09O|mg~+%v#~IoQa(Dg z5rn`^u!1O3zD?AgjG5wPjOH_UEyWM109`U!HOx@!0iT3%zMR4dij|~pcU+Mx-L(yZ zO|G2?bytp$k()as9@G-7Q`mN!ohZg-`Dtb;8#MSwu%n6GUpP(IAb5LQmygwkdP#A+ zT_a>o$+@A!N#AH8A+OE2`sZFc29n$g2ErSGucDW|H{7z27iTo4jar8} zR~08{==|roZqd4J14GCK8Mr&uBo-9T#9WP-Acgayu>nl)SKnblI!ui@E#%_NeqlBK zGFNpra_SHA+uqL319!fZ+rHR&uLR-kH{DL25{nTxbg$!o!zeh9NeTj4j*9Fhzm3qm z7t^%O=mZensf~!CFJ3qIQ0XHQtI}Jid|eZT!9;erYbPklVY&Ba0hx5!4rM3+BIc?l z%_aaHN`|>LsieA!!d7`z-}Ix3-u~6rqp3sd?Y}glI`2|1@)xjWyMKHQhCh)EE#)ux zd&|$-&m_f`cecYToj-d1&a~!%T9XwhzVc8>+nL_Ti-eJ*(4p&7Bvql&pzk$m-`kV9 z3w)@)(2o{=;Id3JJD`$L`QG>a%uvR*Xx`2N)MQdHA~c*mGV`Ofc)Y4tr?FllWGTbO zo3WC0`0e0By@A6(QX8TcdYINMlkk*BYo5SDXgFcYTFuZxwghdt6>TvyP=0)_>dqs( zjy73u9c|{@Jf5GPG_w!BtUt2jod!uX7$2oY)_lLS*uaxv)I*w3p{mikDFmQ7tSY0& z_a-r3+o^-Moctw=4QDGm4QIcGw}VxcX%J6f#9L^hm=IGQmwTo3zRRKnH|CB%4a=%aO_Nr8?xIuBUr9Eu-DEI%P5Ha(*E4=FVyMbNHr0)g-h5SX4< z^8R_nE01fheCehvQKeT_vS?weO}>4S%+w@nWdh0(dMm)26`-(iXM1M>oQg)&X))NbRC4Q5A(Uo4&z~GG~RS zj@VB;h%xiUlJ55isDNkjTB*4GNE1mn!nBXuFa!x}?sD&$@u}1lx4A?*p(aik_G}*t zdDHyyU_a%|m~sK91b)QAXwV&K*OiYf6dKwnYoyLxsm=@pdGo308(IjC7{<)ClMt%p zJF#-RNbAZ6Pn5@gVy0q|VKsE-)ML8@jYy@)RVs0$$=M``1#;k>5SEv3&<3M|W5KNH zBql8m8;a<``;i)ey~v3ZvftyOJo-z7U~;>-UJPPcpuOldp-Cz*JlS&#%MT zimBU_+^f0G+uq_zkZ;jSGqA0tyLBQ#`=+-COV#{lk@~7-?Ua>Su6lOSV*GNFjvD)U6Y@dZ+mK(d@s3BgERv=di z%qckqQ%7`5?CJB8JSnN++N)I9Wrr4`xw9qauv&}VD^}EXaJf#lW09Kln)cnw7JAg+ zBXaRQ3!rx}W>DpZx_yH1@|* zrElM)ZHX6#I?5@kYH(9}f$0aN2=LJ~ALOikDnV+}^UeW+yG}&=+bmb1&#%u;tHkKx zI90LX(P)Qtzum?DVX-)>+A2mwZ)F{Aas#?EgxB9Q{JU-rTW-v^iEsaef5(8df`L_M zCNy`j{z7GQwojxQl_84zhK9i(uB$KipCDTTj4+eCg~EiW{cn<1PK_6*t{xC!1NX3) zebb{dk*N|qF`0jFU(sbGtKt?j$QrlyjjwW|_Cs`jNX=4C*b|Vkl0rw&4^z>|GtmjX3tItGH?9 z&BiPovTp46R7aYP+PT$gL?GX7oJbEDxwzj%WiHMFmd?6koTUc zjtuF_Yd4~i`vDQ8^MVoL1Bg`NWJ7#61aHB+tIhAm3#0WA+XS|8uT?fVh&)2*L&baxr_dwZR<@H;=SXRf&^4rLm;S`X+MiBRO zypKY;(JoR)lutjLkf#^PUMSZi|291|WH*Q4_Q&5#DbCdzqi&&y5b%lYF`?CAj(0vT?=1)BBLM{@_oRFK{;oR(KYUwM|*LCXNA- zlq8RL8R&Za158mg{&?yKyVeG8f)ee(5We ztFFX8#{&D<1rg{PuTib_qJL62xx=`5F^eQ7byseatzBT38U;Y6dh22aSasSdlKpv5 zNEo|GF&>e7R8N>loR^+BTTXNYxSKX{r<8>*p z0a4g_!)@Yfg_962UG!nRYy2AV@DOe38RoP4Sk~086b8)Cca>E3o!o7O--M$-#QHAa z74)jy1^kuuA(@Dk%8kMzvw3F>l;0)X2b_6oFZ#DA4!vfR6U=!C{mYoF^?N zpj!cgc_M#pf5UTP=FeUH4lS7VkCg}CgmuE>aQkb@4Wb*7f)kb|ESMm5tSUFEpfGmS zn!wU5elB!`-%Jz4Ek^!kSTY|d&{rW_cEUfmu^mG8=t}JbJ``HdI#euKGWpsrgtim9 z%FXiB!8xaWUt+iACkz_O9vKY*uU`-yrCpU`|D@p)qAUq(J`iwpb(NznN?A%)f59j( z_0+7J_$(l*TcTU6hOemYP(7+p)>U3Ct|>+ZstmB)QxY{UjlTYN?;I!h#oFW}#~bU{ zi}TvDPQVNKGY|AfrC71Y9-F2WU&;^#4!5ma9wFqbf@O-ioCzGfS)AS~?`!KvLJDit z)kGcW)4SSH?hae!Ps=K^Di;(Noz5U$8v+d(FDkqLr9B;9OKZWi$6?I?Naoe@)SfOl ztcS}QMIS#@Y#u_Yt7GPmgJ}+J+KU{jqcVn=LKpjA8QMH7I9=HO{`3$5=3XI%2z&hA z&bl%dC4kp_zMhg=DDTasC-Nq`V!482mW@pfS%YJFNIc+=at@F=0CrrrzRX$MyvUmi zcPTLQ`Tg`I`zm)k+6Q=xJy_}G;fTyIqm^GxJj%>#jkbsf_@;`s$zZ^O+dkCIempDh zZco2H*GsqGDoNfv%7eL!|IlYcuh~cLHOnJR?YCap`s(PO#4)&zwD1k7IT}0ks+a#x zd}pwVlT)l+7j@X|l6B}n%!ameKmX)*2TKXs_v)N!!Q|oNRk=Q3d?jrpnI?38UP0Q4 zenQ7$eg_RSgbGE%s;XyZK8zC};m03O^g zIim^8U3F80qrsU`nN|5%!b`KwaWOxJsFqTXHx2XCV6lC#`B@bPZP8b3Eq}$}j}$PU znmxv8=;2c7*izz$&F*r=$u6NrT(Q-ME*_S1-fL z3I4OX($yC~`;J44PZ+)5w|_d8mee$#FXgp1_3YSI&r_7gyLevI5g4!OtDQ)cj3K8| z{EBak)lY$^h40tB|AVErePQ$u>(VynjJF^n|MLp(=ewY=M_-#o-htw; zBaHC%yO9iZ^W+`!`-02{k4Y4H>=%A6c(>%Afp0cW3MWS#?+>d|69!uzUErXJ>dP2_ z?E?Rj4cUb+G5Y9Rn~ickDX4}RP!j{FG(`gig7Y8KPFTZ}Nm_4beVcKmJJsp1l^yJ; z*x@sNjL%@fEPF4!pP*#FCrLpSPz zn-ulSvyG2e=N45G3K_`yD}9K(GWcK<$yJAD5z zZ*zMZd3k}6?F61#qH`uvhW)2Itbuic*Uf6MU3I)QZxEPQI%QAzpO{pbK^k{XX-ao zgqZ!_9~=ke58NhB5K-EO#BBR0^mJ_xbUqgj-?`r32ta3~pbXs84z&(nan!G5I!yT)ja#_p7nVOQLH<+PK z>}NIVndTk)fJHY^KaQKpkKJmQs~zl%ZLE+a(Nk*}{oC2mv=N9gffUes`|+OV%@2Swq`T+pJ}1~^Q`Sy3{EU#qLZxd! z^sH4?T1jxk^Q|ik2(4+DFB~9ra{AR2mm$DQX40=ZH^keN!8ewt_K}R}IiA5#N#*YP1K0qqLxT1V4Coz>`RibPPHU+&GQ8BEByy;RlVNgefhVGkh0_EcoR+{F#q#C7Qg=^U1q+2{znl3b z&Ef7)Xit)0Yd;}q1XAOI6UsL_5Xx<$v~O%cbVO%#LbIxIpl}U#$vkT%L14obu=J@k@z;NFHflshb#b1v7^YITzD3(xY$MbBnrU|O;@3d2}7!A}=GIW1+@H>$cqlQ90OHRBhsE!?n=`ALpL|VAb78QH4 zSYTY7*HEO5C~5`#FxnpmgVhw@ZSSN@Z%S|LB9PlW2X4IVJx4mT@4tPuP7zMz!u@n^ zA~2VtpPQoMxqlmrkEO$|xB1`-I@5rK%Bkh!DJeDAcJ?NIpSAMgR=C3-TTOM~1ITvO z)|)kLqaJ3_{=@CLm4rh^c7-$Yu4qX_F+BwsN7VUNpYhw=+dCbFj$Rt&7-(or3YS^3 zwMvWA@o|TRqSlGtF~)V9A27ri`x|!VIqd{C(@HiNdJYbUMJ<_`eSy;}Ia{GNhZ^tY zC`J7Jd-V5Ti4f&neavUUS=$JWYj?C4HxpSFq{u<@Qr?=b0nUU)M z-brtv;IxUZf93w&+z@$Lq~1+g9>KdV{dIZ%iRepdF+y5((#C&qAf1X|ERdS02q8T- zWhL_l%%1jH1h8r79LKZ_TeFlPuW#!Mi11{&YNPRULpmV$Rp+VaDfPtzGT9`(v*jg- z@<3Q{2ORM8dCms4$^Vc|tG(%J{rDdotEqT*@ZCUsg5Y7L?7vTHUgXideMOeT-$_=w zDby$2DE^1Ew`yyvZKJiJw79h;c!3h!-L(`6?rz21g1Z#gpe0ywcY;fC4HPf#(Bkg! zth~qZ{eiWx;`S?%rJYfT8!GQXk55$Yg%e<+V@7@y=UC!|x<$?WgMkz}jwH zQ=DMoz2Ijb6>@nH-UwTydjC5V{hcmX5;}F4qG5$HXW9I8`p5U6?ZcVaMU`IryMU)# z&Tok*0+k%$^u(nVOc(0IAHtxQ*6Ii4uIut?|KML^B&oEZT8X0Xz*j4-WVr+yRo+1Z zfq=9E2z2pDd5BT)KP0*E)DewVaqEvMiCuLlDNQ<{9pOY&Vw!n6%=Hu(qHYXy zQMhi$PJPe^y&FoaSXH3?ey*Hc9<72dp8`vhw^T+S*?|~$a&nb^KS=cR?r>@( zy;4peAs3piqpdndY(cSk9+-A0MzpZGSnHnm&bwe};k3_Zry=4{=hCV^e)V~j;T2%T z9*N!ALcS|@g4TCL2{T$AM(q1}XRU_FqCx_MaA(^o2z7R>+%(_(c__4VKZK8Jm7c#E z8wVOaC$z+*iZ30?+z5GQso#yM?*sP*y(#Ud2 zjFxoC@q0tawONpbF~du8Z?{g_XniapvBDjMR`lgGmr4c^9NExuBAsO=_>C~fTvs@; zy3=zxduyhq1C5T_`P7haOE9dQcf_%VOexPX?YQpeYDmJ~p8){gB_XD_X;o>cedbs8 z%hEuh#cJ=GKK95UoMSP{jX{z{51;>#V7vlZ@2WEFqLM0)6 zTgfnZxHb_VJD@OE&z^HhN#t+xY)PK)$vAMTS_(71`0#Jm-ZvxS#3K>Sm?c?%U=cmz zwmDg0*F5wRIgbUL)~nRocf9k;=+7G2`({>qdV4NKxh;sM_}M#+%*N8prEs4t0%@x- z>5atO8w6C+-@&MC}cZT+b><}yJ zR~y{4m%Jc$$lGmI_Pul~i|?k6c%&my9TCc}l_`0kR&$rt(Kb*upxNFda9w5Be~oc* z{NlM;tt6-D^d|P+gx&9qwqt&Y&ijzTeHW|}E_1AzBtsz*=Zct9$1hhr{2ToWk56f) z@!ik>xOl}zA7x}n3r#aeii&Q(xdB8jnRdzWP%F`l{*+4`Fw6Uf&2`t;I;e|~kN_}+ zt93zsyx^wktac_4nR{7h<1C=`yRXV;JV_AXfr`fM?+)*prv-6M_cb}8-B%(y_A2{P0SgCbadQTCJ5QUfW(!>9Mc&sV; zUjHl~bJ#R5f327(S%oBSLP1GG!z<%0ZIp=%-Mr}z=gfceR=Cw$GY0J)GTutIGh4@^ zyvzSCS1Kwaw!D#7R}0NG`nkB@sl@L11BUpUEZ&I!6cOq}RCL<~i6APrC`?|O+`oJA zz{gLtEL&;LZF5~ws=W_W>hIE7K}=;OGQElVMVAL%LKtO~?rNIe!&@{x)d&dAp! z_b!1$XfBVT;)E-tx6Gm)$;A#JsEC6zo#6d*q^pwsgq{SB<)(r(A7B(d{_xO%V<1c8 zQI(b*mTcFzfqc0DE~G<^gxY*KpqhX0DQerd=>fMqh619Cob0%KN=T%@P^G0a?ZR)# z*13!;VXjcKBpDpGRX6lvQ<_pDRf$0v-05W7@C?r#jd54q2EInz`TU|IuVuc%cQ@as zuy0Q(_%%Y&tK#p4!v&oHiPXitr;O4dx30`1efB}oH?Id`g3~AD`V$$RwbrG5WfppX zT)}UuF^7kot#v?@vQ2ASF`BFazHX-GFwNFTjaJv{r7529U2$`e1!F4`;Jcpi5Z-AY z63TmHYlhKP=JI&jeyRDd5=c{>ONvBxcQi>D#~32!z#cro`Eqp7hJnvf z>1MNtzp_bW-*mY?<}$rg%;X~*yx3!L?i?PZ-_tsO(B0h*_1S}D?xu}%C;KM*@IqVo zh0+URDUJzIVq!JZ6;>87-9R;o{X&M?(oUyHBfWsz8*6OZcYIw(6dt@fBvI}Nwcj&u z@Aom!ix{)LfLBP5ld^sKV&|9JmOg$&W zU_@dikIPU^U1h=OF3}U5aMQn8QRnsc2l0uYvfS1W{ zr)SO}0(P%Yduhkir+uefe5(fOmfFAQ?Jf26z-g91nASVPH_Vfj@|qSqz?vL6tPHkri!v_w%_%-XzLN%P3%nCXKk0_A5=8G?WL3Rc;sC)SpIUbWYlyZp`pI%Is&4|sY}l{6q`>+{D<9M)O4Cdw7z2HVf5h9xIQTsD61+}ujEk#)4L;^SoZz1()<7sZ5t&im8OaUyoT)KiK zJ+&t63zT${mN`2`6<{9v5)`-gRS| z%)h`ISgg;I<0Y(X7g5I^WSdUu(%JUp8DJd|L)3{PJhW6*8svu=tT$G0vr=J9~!L;zA~? z%$t9p{RiP=oW#BdVT}}(6vgTL+IjI!oo!M zrO5$BRhDx;CVX$=1RpYGxQNk$C!O)u4>t-Pf|4$H{#6duwk}#M+jp-C-69ymqnmB5 zV@Z7#Ibymif+9LWH8v{wYj8`C_X##Rkm(4_IsvLgHN)NC+Jtd1rMtbFHLivn(_(`gwSeJ+e08SvoU{rgSuUdLGzPe<;i^qW`iZDeVMl0@j*6ovYavpu{Q*y)p{p1v3X45Kc_S(x?bI% z-{W*7h{3dAdPRv7@$o*_myeVDzNAlbrS?hprP8m{nZ?oI>srAJ+!#$C2{(aSt@GES z7A{!V=%Mg}Yz&XcTH^q+x{CZGb_W>?uS$jX-zE{34d&7xYT%f=%wcbH#miZXu=1Kv zBO#Vus`Bd`HVGd?^W`S`W~L{;+_d?qA$EJ4`c1CCTj$dy3qt`BDWWgCgoG|2mPUd2 z54_`?^ucIglM|00{-UKRBXPBo4B-DHu6&X2L3mZ|&fvj`#aXW;Fk z$p>c%jS_xHQ91c&S=t!KPLagJ_k=j0#@(RS!wTD<)d57(o_EXY&!i0#=z-Bz2^lvJRwvmjHpKd>yQKO{6q5sAriItAD@flFMJj3eY^ zMFKs>)sNJ5rO8-DqYd{<*5gO0Ge4_y>KdP^%i})fp~WO%#jXjx;;1Nfq^}$R?xMr*rGkK#ETj#r;H zMOF#TrHj5}qzX%tHP^6vrCEe6hQqpyFP~RxM&bwH^y!^0Z6dg6Z@Tn#oBxf98oW3@ z7)XU|64>==Iuul2Hv0LlmAW7%4o)+tcP(*at zvR*6s_40GsUK!Xz?D!#y^=$}(as8YY&DCeLS3OytZ$_XUcLVNl7OrPo^Gz^sb>F=) z4!^_#)=Q*LUHaBK;y1JM9kR+jwBl88GWI+kJf5A0YYQ!I_fFaBZVqueZMyA*CG%~N zuYY;iN=l%SjW(=g*Qkq2!0VF2V&dFuPc?eI?J?=7mHJhyp3BJcRpa}7Zu7k+>~OJt z#nGwx5KKChS7x*Py;~7r@6Y1>=WuvtmIZ;4?js!owar{7JzOGShTPN1!vCx`dbyBcoVP7 z{vo%p`kV3l{!uq^kHbWBJhi#@vaY`!!oKt#ht;LBCCzQ>YdQjhMlq-<%LNK9G$Yl- zse9_2>1Ie2H>296=EWUEO*o`?I`h>{a6X&uR!9qmQB0Mjq!lD;m#K_J4h`ueXxrOk zMJaIW=4h(L&?v7db}w}-0}<5bNHcud1n0U)ZU#%DNDa1E1>selihM4`Sw1K*BcW5p4b7T0KG#cat$!SHI%087tX3BS(fxbjz4jyO=X&-`5Y@Gl*mIZD6>2~ z?)<|8O%&3{FyorF7(~1KAJSBJWD1MsTsk#p=cj^F00Y5fneDa0ZeLP*18lGbQ$HGZE=R66cMcBZiH^a*>|a-2OJ`HCIx96o(Z z#wZ@IljtaNW~2eP0A0-Bca?*oB<&tGDgC)T7l<$1vTn9kb48v!sw7UXUYOB@PXxhz zOL^;m6!r@Z7!xPP#$#4KwY8yi*Yk{bZ!Y3wz?4Qo7xuEFWZ$4}mbtwFvHKvKO>D z9vG_b#f#H|t&S06jzLuzhrs%`TvflHwhO9!)RPI)(uP0toLh);t38k1*m3;?>x!Z~ z#Ns7@<@V|ab*;V#l#!pnX-;WQB}3PgI8$>OX%G({t$=>sYACzrXJbyaP27?qFJb|a zc@mm{0jnB}5qtIDSaT2)lfYr$Rj@6Q?^nCAg4K^5lp@pe`!W>khPVBTiN*dlGb6%_ z(?Rt$r5=>A6zdA1rmU>_@sJ3sSR;o}d0@X({+WbHT&P)<*EL zKWHa0#xs{}PQ0NhhinKW_T#ornzh|%yjbefBYHN0I8S^wE~VJ!(|$;yzBl;GY^SK{ z46G*87AKoddv#ynH}$EA#U}QJ1SNXlf>7E7f|g%f^@l#WMP0d+lGB`A4PT{%$}o_3 zn~rM?RBQTDN_hONIoCbAdwf-T>1pk`A^3XhcOWWk)>%3(ETpryw5M{fT6y#ceAEdu z%ZGeRel>wNTMCiSaeWY|MwRS%t4V~9ZJ|TX#JrTJ<`#<*7h_{qP*s6#8iNh2c0M7T z!2G~T4~_p3(|(>PU(RH@-EKR|f7ZD!?DY(cBB-9EmCOYM=X`^b{Ot#(jF6(EL>&>zZ3BfOHD2{+VX39z_-U%l93 zt8kkF%H}1$Cp7KK;KYp1Mx7dPrxSGaW22}!QfVlw&bhILu~wQo7QX|>&0A#T+Ie?d zu_#$HT!t_*5z$-&yoRBd2qv;+PFfY-OUL$!U~&5HY9VWN?1-ieq)fmEAZEpyluWS9 zH3Snu!Efo9>(ujeCP){0SCmqhOLYP3FIRBieV_6fjhNo99wjaj?ZT?I;yz;#d!R;1#woRbk5f}8D zE0wl$g?k;f-#3*ja3Ldgxdp#UgRkveE9I-7Eq#FK1=2b+ACt>}txPOO_9^LrGI?G; zoX%=+4Wt;X6iw6aLbxKnu(o8-gx%@54&lkXy_|X}#UYuAbvtryv+a?ZD2^!&uN2ZM z9?Np#pKbI#=?HK(4|jm5HA3_?mXz#)D{BMiW8W)*<^L;$qg2zRi$aN8%p+l5$}O-x zjOw@U;#}3}Ltuk&eYNXhV?f&{Ow%8Cr9N+S87^Jyon4URlmr9_(BYq>X6|%9Fo$x= z>Ed3mb=X!<`GS~(&v@L6uXOTxar?7>o13}e=&(pMB_>4VCR?`8VHV*kp?JQ+vSLgP zF7L?qOO<|_&Y^fRs@3@}3hU5h!T%^Tnzg$!)j9TX9MmxJ8D8l;vm}Tj2*db$=lpejKe?ZcT>`yN zhMY9uWWRLCr|6w@-UBgt#5UlS&R*R+a%g!Y%9s%-l=i$R{HX=7zPlq9CP1+^rN567 z@rn5wQ~CEDpNJjLD&v=rYqSp^zalA~0N&=Ppg>c+$Vri=Xw;35I)scXdL2$sA_fi8 z_eM8zyX@Yo4nrMh!_|?i_5kYkO7cp5v^X-m87N+Wwt{hI-sT18yt*1n?M};72GOIc z-foW6T!A%YLIp`-E z_g~h2rV^SPw#JFjhk4Lm=pIK<7Yz9k*Sen)&Y+j{AwOs%rcHk|_9#*#^~)`u7t)c$ zX1fnH>S9~?9?4&jm%~y*y^)f<`TI@IlMe@si~_Qh8{*dNhyZTX{31SPQH$115ox5{fz)9M?&e7#QL-HRF)OR=ZM>r0{9Ds5 zIuQRRD?5MtAHrguLwHu;(Wy`?Sp~N@FJ6X~K#B)%{jj_oCqD|>(f}hMQxgMz3=dio zBf`P|BrT;T85PI;Fn7xZH8Z&RiGt7B`KNi0a-Pp$lw93xBveOaneO2##b;S$lq-H*=YE^uS zP=iNN=-={XyHo`>4p6bBhZDEq>!dK|;HVjQc8Jzq_Pp&H>KV5qVLMa{2?gnKUgR`}R@rQ*>q}+&bXrGBUqzLy#|eQYh%VdX z>g|r-y!&a_O6uZl|9}!FAA|kdra>saoKtF$Ha8Sfe;o}(r*CYZG4&$h+a|_rG(zw5GQ zcv@yMZ^$1XtbmXw{>vAg!_HfgPA5|G)hW5rqupEe|BzNpWOCbqzpFa|B`Q@4+lko5 zdWT}97pi`uUzjN$BGVxl449$Qvh3-9mdTJMDMj4GlMV?H!7s3$VVPcakxdcO0d^_c z4WRT~LA5hatMlBWpL^+$?@BQ$Md;53U-}c)&QpTe}0$OWvPBeF$*!7>aemEE(2|4$#1PCoE%(}^q0zWx>+>h6T^_1%&q%{r(a@pv!>wN9|sL{Boe#5#8A57 z+9_8A9jjJxXX+q9I^`Q0bhl^+y(FV^{_N`C-6x7k-S)0fa9@4qky#H>D$e|T?6a(EhvC3p*pO2_-ejgm!eGd@ zuj(2qv77KKW_AX_tj2rK(z8Trv51Opy#1xJZzzmr_u?zs?v+ zZUsHukzN`H)lRpb0liTjQ*>;%dSdi%8N7O;!mO0ZeiV)@+ucm^Iiz-%^TzW3yj=DF z&D+*QX5VY{LVIGiyZtbzVvp5ODZq|bMJ#UyN}mpr(VoP%>&E4(rsa$EFtpLisJnn$ z?@nVDp(T)NkP`&fXh#^!Qi(b0^QJytU+PX~A?a$Ee1~^@$s4SF5x$;ZW?OF{6SZ%f zyL~7Cj1xY`8qtz9-VO8y3^J*uG001x}45ovZ-dVWzhC-HTUJu{-H zKEFH_aB|{de{btMuAA>y#%f`iPSxXwJpVP=W5RL>8KKoiWyZ4Ii`@Vi<Xe+_i?*OqQUJfKb5R@ zU{%%c5{WdMN;;2IfMNCx&culk1LLOS9#peMvMXz$;Vol(85U)nD6C;}zg+SjvJK_J zfRitWk2NsVn!KdJ$fCsPboG9k(AE^@B#1fo37U~Vnt8r3kCdQ^U|#=+v{dXgJgCI8 z;v+2bSLEbjtz}ZBBjI7#c&XMaa?hbJqxSCiB<);+j)`Ku6K zxVr)?y>f8MCs+|PfoV#zi%_x;eR;J!!%w_0aXV2a?^jwoq6CdGeszgLagJ}~>dCSt z^oZAnod(J9e-J2y(5QnxXGMREuvKHH zzXv{YhgAAG#6)IrJrzx~w2Y1d$og}c)e7{8n6;iGG-f)>=Ed5$nH1DJL)09oE}88| z*5))n>es3n40Tw8?SZ8bJM}3Tm-U7nhzcfmd&>>i+4^lHt#^e_FSqjUM0RO$rmBS=YBgh{MI($)EFmz6iky&U@tLPv?MxQ- z%`8?jY>+~&GJ?%ET(DBhi5W1U>A-72C0btmPTYo&`9UTd|GGT*L}ppAum4S2IT|rf zg{bYSd(~=gMgUM@4FpZ-ic=OQQBLI)T;NCPD0aUPU`EaTf`n~|MWz8ER!I6qj~xe7qS4J zt*eBBB>pjJjd}D`F$3xl#sn1(3R(F?Pa^^0y3*7G_x$_i{D9zAmXtQj| z{nQbkula^A?MDhM48IufZSXiGrWP-htuSGKeA`fax^ACUMY$E!J5_|mWWEuoVu-z% znUcT_r43qpVMr%UJ%PV{e$0mSKM6lEw$_X-JkaGND$MgZs`TIC50^)kG`FkYwlrV* zq~9?KrMeEudI(t3Vi19301eOZWv=-TWaBfx%(id+PoOy7VI=<>yG++=!6}^i##20u7 z_i3Fd&45-D75ueTAl#f6dg_AeiyIw3+86$PWFYbHhLQAx)#bLP03^oqJF*kk_%rH?S1&C_{S9rw3yNkz!fAZE>r_CGH#+kkN+^Xc)ziuF-HQS|UKc{$G9wKv|GMDc$g01BJ z+EJ=hxM8TLL{=yX1Tx2Qn7T-QiVrY0i1GlA2OT{pa;Nnvr{3(zPqq7*!1YQm0~{LD zzQjRO8IazuR|3!8?nj++$y;^Veo<7*R&xxk*wq3>dC<3&HkB6h;De#6iELG1|7BqM zJd0(rL!vRW^VeKC;L_(Qf)@N}D&29v;-Sql(t z^2Zahy=yUTbgJz(PQ&_wS>b$jmz44zXPp8QpY@|fPh+B{tgYAY_`@j2^UfUD87&M4 z@k;{HfvNy+S}*c!^9(l}O$v+TP~Bu7np`E_G+ov}zo@*X@`+c42GKDBEp)f_lfwaI*6X` zbwz_5JVgDg%A5SYu}!(Z9gzSlhQ&`ziA)>I4{SnkR2TJqTY&aR# zPp`Uu!v_@6&WPac-#T$y(cp;Q`ZB%x#a9U>G6NBl08?AkJNj{_|%Dc{9Rf%XG{KwLQT1N%0~f47?M? zddkX6%vN3PLF0om2R@AbwxoIkufB2}~Q7W~$0pJ?8voJR=|KMeN z$$wXWw?+RhqiioDdF%z}u3v=!F;?TAxF6wA85vGhDbLbYT})bD7RJf^`YiJLD1me> z*7*XoAoS0ueLuUvw0K8msZ4K>E5_Tu7;R#N+z! z4mtA}^{iNI4jMNZG^t^ARM12>O8VsDP&@B_p?CAbZ{tChhDHDqvo#6Qj=+!#ilB&9 z3@>A!YrODECVx=>>7vQ6?b|l}LeX7U0*&T}VOBjSSGKd`;L99-O6t=g{Dx}y=KhNe)8>g$}0qosl zW^$w#XKMKzfV_*XBlAriz$jgARBG>^@nHPw`4?=dQGHT+^7D+L9IR)ceSK*wY%tng zDn-2U_!#zRV@dbcl)~t?{e_N*=q^DeyWVO z+5mOM+4=fc($$jgsKl)g@=!g0#JsAIpi8 zJ{Vvw9jZvU>Wd2ZQiyeiDF|u$qE>>b64n*0k`+J}PDn}e6Bh^qHnADnoh++yyoiyQ zji#zGsM5apWOnTA%GW2gOoZnEbH*(Oc6?UQ!_GCmyxdgNnXLSbnsEW_Uw(Xhkr$~y zc}Gkd5&uR4kvw<$;~15F@J^(=^Yl>2^4tPChEhMzc}j2%dMJ+qqAPo6y9 zg+%FF??H*N419P)ot)1!-hx=uNxKKYzsC`31V(WXjARt%N`;>Gw8^@mcgBr`KE>x38-jm>xsJx~8!nEz+f&$G`?3jC{w$a|+ z-p1%Ouw)1sXk-D~5v~MEWejIAnI_=gs-u!Q+1DaEBl~=6svLNo@sH|kZ@nC8+^D5l zQU;mMC=`&gzJ{j-Dkh`2AwQ^m@^5Z{#_<}Fa8KAwhaYw8v69YrKk6Bkq(cLNyor$u z&RYzf2AeOI9#O0iahU04XWMa+gNI?xXv$s4vG-Q};LG0#QRY9Ti%mh_+p)VT8WWbE zv~n3)Pqlt>j!BiX?kC3_hJ+%M@#zv;=}r>18maWU{qY9MT!h1Vb44XaGC04l-0FM~ z8Y;S5t#8B|4hdG=;edp9WelY4W+-JG)o#=eW|$w)yma_Cq~+69?LwUmXjfz{0|=ik zs!7=4EK%lE)%x$91P6gXr+5#*xqBlaUM4^0KFYX4G#bgbq^awymTgNGeo8uBGMipk zx+%Vy9gstHRW)QEaRtHn$dbQS3hY$--W~TBt%?tHiCxJ1D0q-#b6*i&?xo_3a-vwD z*Ag|f;g3e}US}M~Tk~$j4o(L@U|P0;gb5>nAMyH6VjmXU`kQvI^zBP(&#gyY;U?w~ zovS?)f5VPr19*UYIE%*5HS^bj zu+QbD706?>Aak4Lhz$?%pg$Vnw>D0W0on`ZfQ|D51Ub(fporrD^zGAm00lu2Ri|A? zz;||Y@yVt*=5Ty*uDRxn2x>sQf4sb%JybZa1O`?<6lW9dYv|nGja#UPuzefy8MIJ9 zk^0O_z*>>M9c^qjwnXqZ&!-<#))5X@A&|PLDVfnv7g%A&j``L+Y*)usNU-TGSmm?( zU4s+1ufRrHKlNl3U}V@~)*S2E`uo?9{NOh^9L#bRMs~Gx=p>DD$VJI~ID?8&p4Zg| zAncH&*#&VsNEG>d36G-PV~cD6CaN#G_kL!zXy!$g1BC4oC6*M4?r%V+Q8bE8OS825h3xp$;p>h+DxsA?Tb;hkx zORR`XOgXD}O7`96l#3W{%8LeUp?0!iP=)ld?TkU1$ObCwVfjxjY)nl~iXBQqw!sdV zhqs=##NbLpw>|?Z((9mbh*40V;EvoLSv8S-!dLbGi3JYLs^cr4NtJ^-I*trcp|xPH zFJUal1bFK9e_+h^LGQd>yh*8RD^!?PkDPG7axpxxW;AQij2_+_1|EMLjvMeJ28nHC zB1nJPsXHCE&nZehv-5@NyBrkr%yHPWeChrPb5#R5ZMCVsx%Jo+a@#-2E`{dd!8ZiC z>M8m%wx5$_dfMSqtr7brYcLlkI;tzZ0Xffep_!^bBA6l3BA8ml0A&Wt!p}~e@?mWN zBTKA>>_w`WNVEn(bWUmutHrKp4> zZ0Sj!YLdmzdSxYK5yG}dHpmrs98Ky;%iunWh zSnl2tNH43Kc}Wb{SQbzlExlaS>}u06F4|Gh-thq#qevkoOH;O$k;}J>DtMVCDm?aG zdAyedu;I@(&-yI7EmzA+$$d=Z0=M+pi=U)|^2IOdP!XvP)C5JLBuM}#hLp4Cvwq){ zt5%cqq}7}Rb(r)t{%fmuSP5+Lt^S^-k${^p8{>Gafe+9_tYrz2tvcesM4nPjWW z-TzZ_K7e+Bk!|y+lR0uO)EL(WbtABE%F+sgZLiubJRZ0U4dX3C82q_X_xfT71PsLdIJ~Sor==5~s{dKf%N~SmirPvb}5p z@#--Uurj#agXbODf7?xRVVQbsYnt!Ke!a&|V;{*@`%yrTpHL%bOj4CQ0gccz3@-Z7 zEeGaO@lUuA^WNL+!~S%&hC%6ze@AX3VNc;SS5Q$Y>eq5b0v|`tad!a^GsB2Gd?D^4)Sdp3CzJR{%aJuJ) ztXHkHpG|e(U7732!`Evf|wxkgZv>tWTc4H zHVVVjj2VkY>0 z%2_WX;9yOH;_@~mAz2Kv_0SYCf78)nK!yXyl>a*e;x2oa&hts`ZNPTrBzG=z?73L} zc893O6LWt>%6J(-wk3U;Icm3egr%X9YDi^57AaSPu1So+*nUx6w#c6E_O?_BvSV-W z=e_kcD?AX0^zkwTA+&BHvCjTHIMMfgS-jD{fk6(QFvp5GR{t4P1m0xa89n~+EdE!VX|nC|%|@KRV2vHZ zSKAh*n!B$SAX-$y+ZwQ2|G+__o9t_PP^@-dQ(0UB5s&o$YEAf&f0-&5eIQxi5IOj; zIF+kzD+4IbxLbzSbdjFF72x;lLIIK6Vl7%O`QcwiLQvJBX6ac}CNY4pmU)aNeg8lV zUSVD=ekwP}FfchY*ns;l?9Qc@ZJSj}Pre@cx6ItdP8*CVbmdg}m_;VtumphMo`LW0 z!z=HVfBgg5S_hSm3c+b%t6!wQwPBTtAie5a$2}JkABa>JRK(Tq&Zox%yvTJj$-g2* zi>yXbLupLiAAUmh?ZV!joCx0Rgdf{F<9`3yh(^~zi60E>RxhF{D zco4xmgm}I^)<$^fT^rf`Sy?wYSwV=g2J&s=#!{7dT zA+IpZ)<$}yrOwx6IC{XUR~$tWx#H#T4ek2nPqR}ReLISpl<({j$lGO+1N11+pjLcH zDl}aqO=O;%N~5<%SLW~C2cC3k(L<75r6LqfsOK3DNx^WdH?+4=*+e@M-qx5KaROh}g{!9gB?wCoQ`B9|;`vZU$Oo&uOiyUEI& zCWYe2A|la1F35*KN^`FKlGDU;dcu=#SpKMi2Ie-Hg1Usr&D|6Eona?s$LQ& zI#q@$5dFztZ?bDI5vnF%_s(=#LCn+61yw-|1JeJ?Rn_*au@#GG_ewY#@HG^Y6X3rz zmTBHRU3sm`>G9h;T1cL{*Ryh$8K{Hh;of& zlmsVH%|zH+yjSgh_*U{>cGKHmqrfKCwbtOf&??;_Sv?MXBG!2?`EAW0LAVuibCMEL zfGBu-DsuhvIs9f8(IwhGZKYG+)}E*q{!{%ZG(rN=61#>mMcpGN#(9rmLXxgwQ1JOd z_D4oPyIofDxQ&4RL&{AglSiU)gt-0{E4nw|>ZtZS8w|p(A?k-Z<)5FKwB)Ynp1(%p zz;d1p|71s3V^~~4Xe}K0(Y_J)qD8-yh`mKD`=ZS&@4w8~GzH=PV{p2Y!+wa8Mv+sK zG2yII9QdaBWp{^4CwxFaHl~;V-I=V()iYk>rpUBq+W?T?X3j8i{#iUmVc);06Pq+a zuJ<85>)-;;VYqo^lEol8{qiCDZzac!Ef{-H=(@vV0(TWbhZ$w7V|c4b!hmL0$ZN=&Qh zJOx}b6=ZpufB1@{szAmtHlGrq)K~bHgBliV^B%;ONoh~oO!wBRd{sih0y9oHzZdS_ z?g~}H?!0sjQPRVld-KJI=VS*!p8gxdB9*jeCdszud5)cpSy$tYIiJw1;`os&Pe=r} zs@$H6{yI-;6JXqt>HR{b{H7a@g!S;-xetmeBsEd0UbG|Gqf`1OJh))ZxYli`mB5gF z>7UgEv#V9)5ni0Zsqx+lEAvo{iZj<_&4s4(We8I`osS?clb_#8EOVI$8A&eVrU&E` zaV0Y%;71be%`Ws$2cOkp(IKF0-w2 z!pBb;Dvfy1OG{yHGbm#!a?Se?h_S9KMNx0h+Fe*=RBxc9K9bS$BP6*qeq_@_7IUW@ z>AmsfhxWa_%!mDel!Y`E+wY#xX`dSCoq>TLb2fW;_va*SvPh(q^)6xgo`~D`TuERP zaeE5lp6MEt_$SGunB!;K9lS<~I^}!IU%NM@alNwdDQuj~`#V8Vee>QT;|dN-M_euB zTAsUvXvGHSFE{CJ-*zLVQ!T<)f4h$txxIB5KQiGdDOZ{;FO>aPpIiwLu*=L&IR5i( zP<}#nAEqNmNBAS|{c;%`U5n}l;5wjDae}|=Dy7zf9aGKo$3dg>yh7&_)Ay>0fkh=I zo%9kdCOsQ*@vf;ZE{}01g1tSkYG-&BU=dIg$pcl;n0>|j$Cs|+ae=3qPT6qpq^s1` z_;NJ9i2GXx?aR*rqpP7oU?rw|i^jSk$kmm3l%+~ll+-|@ptWGm%XBe zli0tQV}a-A#`^#}dkb}borwc=S7_`C*a1^LM?TT7_!1-z@A-#bY6VtOZ2YLvjw+&o zu6brmd+N)N50mZ5)-aY3Eb%EM0oVb_XDF`wZpcP(zRqlFPnWvTeF%}v_MLa;<|VJu zhH2Ie=yOGoYhdkkX@lzLW+y^xm)ycfMG)p9i=?o@&(2xA1T#o$_Ht6HZB`^BXF5Og zT#=vySHDEhzRZYeF=5%Kg=A2)yOGB03 z9V9w56pm-6F2lELmzQB}lvLvSe;ueA>%xuqd96g_-TAbA#p+3`tQfL>TXj}xJCp}R zj<25f@2Q0yxZNcL;E&rB+H87OE`L;9hNX3KMq1^dZW#MiJ4(qVOuu#Ia4vRu=01lF z6>qllF1HNIg87?!uFAztt?}pZ+AC@P<9X zUz!SH2&yn_wVe7~L}M-baInD}Ek@2@yj^A2!dzz8;x$%Gxa~uWY2b?dBip)1e|5GK zP%%#Ko7+(TcUflbEXco)hJnbHlNo=uS%}3n8!}t%KQUJi*kiK0bBy^I@!>l_$DXFk zq1`J`E+~>`jc$zOriXONNUA`JfFXHj{Np%J0Ts~vE>jcEfRcFai59mgwxFYLT#QI# zglK?E))Z{{rbD{jccENbm!R!tkI-QY~mNiopT{! z7SgBG@05ghdTsl4*e-l+pFg9+jw1=Q&5Xhp_?FW9$#=0l{?|;uDb>tf)<#cI#?9Pz z-(sbRMLvIfS5KM|?UnDw>0isHQu^G~evV<@_okI_Ss+d)>4mxCEk<1CU)%5VK^!3p z`wKBSq5XMKQZtr6e*=hafh}*DXu{Slv3Q?p~Xq?;9e+NTuZQ0T!Op1Lnsp5o!}Ig z|H(7w!~6Bj^PZXPnM@{oCYkK)eed;K>smuf7ohHBtil7=*uG6?;qeb=gD{QD*FxBZ zx@>kW9I<`{KiAr;xK<}lOURv=A6bf=IOlQre1$umJL%QW!jAv>3nB&; zV`h|!x|(7Sfmo~}BA0yV!{V=)ETWz8IOhNgt`$(Ty@Mylr~;qFq%eBmxDzb#qNC-` z4f$=6A;j@2OA6LY$?0GL{<)MGnz~9#Wi5Q@)kSL+6??UGYc|jzL0{KYeU_aTXnFI2 z$GW+VI1IPz^rGh@ez&O-enl@b%d^5xj~dTMF8m*IRG!|msf}c;CS8?ORtU>D^l2Ac zGJ4APdOxZL$S5AF3U zli@Y82de!Ujoxn6K$l7NNL|99olO3v@S?BZ-PUVgmrbPw4u@45Y5rdp2{l7M&R(5- z>i3Op_4agF=Un8&=3!SU?!mcKz&uWx&BOh)b&}P0CRO?3L1wkyZ=|YLfqml>W}@0B zEH?|LW1Rd-aHC~qpz4a>iAB6tVwU0fL#sib_ADI};;MlIm2Vb7)Vk>~6jK@N`gbj_zILeXm-6D}3nSN&S0Wpl z6?VQXiro4atpSARfv&h@1zLQeZWRS%o%)Y3n)}A(^La^6`d$sk7t$)R&g&gM(-al4q$&8!-M};`w35<--ZX$_4QQ!an^ zc3-~fv38GTF?L^I`uXlbDAC8GE6*r zLODi-GwoV?pgX2zn~#niQYgYfi{ID(C9@Ar4-j}Z*F~N4BdyExnQ+Sb?7|faHsVg8 z!qX=+_RHsGA_{&r?pCLc&HbZ|YC{cuANku$toPbbBD-ShjywTV*W+PgWg!+@fBQ_F z)$d!O8IqoA#_fqqTd5hg@{RbT?Y6LFt2>bNTZ+W@8lF##)=|_QAu2^~0V=m?N;$oY zE4y*7bf$}%znn2FikH#FRCyD!38c1l6;QnfSCz+kX9b%&=M8bz222SBft-9gLt`V( zuigeRV}zPCVqWxg2>2FCN6+o)AHg0?BZP;JUG16T$ks<;Bu`aRB73;c;gD6x z6v`W$`Fc<&(&Vr3c>xY;ZlA0(SoW&NcxZ`nv6mdj_eJ1)B(zWXO@%%8o5G<9e* zOSfWy-FSUlD|N@H6OcIt$(%HEk~Vt4{5yQrkY2W19*%iw6hLzx7Xf7EfEAd8IJo{1 zD^p0YYHW_CJx*l7qIDmTqZ;boZ6-|)i3jb}BaAHm0g_9E!6a6?S?~-jq`M)tC7{5<4bNAti`Iy@fu=O(PW(^(O zfKpjkQ_4)Y=Q%dTW-uhI%7gNUkEjLRSthgF+2Io0w}yK?66~{X28wMh4%>(tzUUW2 zeZ;~CgO1|DmC}Tq9DYK?Uz6Ha+uD5=?~#Z_??bCw?moR1>))xztOK&VW?%L_HB9YF z1b$eB1LsD3R94-EBasPaUv5o`GGwAzrrHRYdj<+V&Md4!me%dvPGCN9_R$+2aQ~v@kv#F7ThyFJ?~5TxR|&{y;-I+idKT zJ!`N)`K=6j&~UWSEzlq%lX=lxn0r?P63eO(Ruq)yAC=zA>&16=Hi78dRclDI;c28e; zPJ5^gORk<&w{AIRCL=BMjus(-XjL-eM&YT`*r$`%7Ly*u*Cwa=wsMQ9KM%t6lB$e@l6T8em-^+o$kJeX9(X>8_@4_wo4sV1$AhE=O#>kO1>l_WI~y0l zkLFm6!%gb){ZfoUE=ICKmeu`T0;d8xB20U*_d^gw9Wk!O8~_WV=aYYzUg}-8V%0&U|e*qx1&;`Lk$9EFaDmB}HiaD`dl3;J*p# z>UKS{>y&5E@H2Vi*g9Tm?^!YK_PGWHE3dR>D$}_soSSP9qvTj&y5KLiz7FAdmc3M^bgfd z;y9y%{Mo11&tNGj%^ZBEaDYXRAwgQ;mI{MH=jP(YHKiqbFa_Sa1D+S=Kg=`!aWB%# zdJ}(BXp0ZXUAss%3pw1*_3whiORpPQvM3qhrv_~B;Vi+ODz#Qh_m##GH+mTVE62iA z+AvYFY2=bW{M*Y$K2Cm`d1;TWGu;K!h~;-6PgC_tOq-1ueJKH2S&5v3UJdycCoa+e z9>igp@|x`W$?NY~nc_4Rm=cwU6whXiugY;_bg@|i8 z*i?ton0{z1=m}#?wS&8efIiC-?@|_N@X^yW+cF8S>}asje8hNg+Z%Z%uvNS$qE3zU zXSOXPUS@w@dgJ^`9LqNyi$ZJD(Bzr?KeXU)5hbAMWY1_#Qz-swMzG&W(18Zutz$njeRv z-$gK2joGTDpSR7K7&C>_C{aq=nPDy5MX`e=kw#7}M`K4DnvYcT7JF>*%dXtjONc$O z3px>~DHCDR`ZO<6$!a)QDkwGnX^IRuvxCTU*QEpN-$mPGicP0F`%ss0SV5v-yDhZT z``XE=L13y^bfC7HRM0GKyG_wu_6%01{w?*`tUK)CTT z@jP|}s=!9uU?Gmod^us1`ifaWmRwFWYulb9Dgs}G*_!|x^uyIVmIA1oiT5)I%R9y5 z=*BRM*Hcg+#U6j4r3`1mz{;G)~)KQyDvrez0OQjyY;wURw6T0AVt6nA=}$v^rm z=dz8K45~F++k@P%JRx2BK|@>=&K?-IdYCc267d~aXEN!U-#TaM0?dataV`&n%k@2< zNtR*@+plA|${-|aPGt23HFvs*$qL3$KGj(`OCsu+RbYbd#JrTcR2=`OWa4*k;0MR8 zaKiiI&00h@+fLWY+`i@sc53eSy6HEpj8-Oeadi0F*ci)*XZa&xviVXm`lHjTzhQuv9xK zX?`Do|Jm0)>ZE(t`e)%fZWSX6p7Z|}6~AwOb*1*&j-nR1h@Ax#o&LVvMfw^navd~1 z;Hq?)s`Ji+7n7J2SH;2rievOLT9+Y=T3k-U+tGXPyP-eGZc*|K-g5ce!e}q?>T^cs zHPW%H7B!d)`P;fUou(N(C6^LGn8+uZy<6;OJY9il%1~v8nYeIZTZ@Hx$yB5I>-u6> zZP4AL5lN&Hfu=5|2_{|wKfh^f>(o!Z{Gy*I7KDBG+bPN7KeXoW^>G%BImx)ajRaN< zQES1okN=)TQ)rcRa&=(bx9t?8W^=jgzj$Jzon_b*E-e6LM~8DxjiJN+yq35NGcKyZLVl6-WETr3WG!jQ@x7YbcK_hUWV zKb`WDnV+LR{(kX)x#3lk+?t~UQetLyBhA&goj12>tcxU-`% zjWGo1&j|9g(%H$Nr1}@M|@AalK`9ZFH8^`M$3mjKhd}Lof1jnV9hFQs zJqwsg$4e0M(+<IX-R&YK?6ly#X=C zLO{nT&4%5b-eVCu{7-2p@kfKE04hNUP#)1iNu*rmBd$V!T7(BcUMJW-2qp?D;}A6= z4g#qP?{AJr;Sle=A*9Bui6elGjBnf5Y*3&84|4qLzN_sdHCD=0nJ9(^^T4W*`gF(y z$U;@a;(h9Z{BYZMBc+ZpsBX|>T9F8hL>jU1Ald>xPK%9gKh(_&6YM-wRg1Y*Ta zf`0po@AmNndtzaV@b5Dj_7ODN*aj7n_0BNdtMSD&c(Avy7qL|)*WiooXB zPKmCZ@NU^qf2d(P{}7qUmhe!;p#$x-auK5qQbQgin!1`pj*84AAsloXqGIc;qh_s} z$heqiyF_LiEE*NFMAl|GL7lwStY2-I!ptUBsG5$Rnz#Ik>e$dg!1Yowv)oiE@?AFj zulcfp?&N!-p^CVzry7&nV6lVu^G^R_1kZ;xsR|M&KBS49FmXxZZs#Z6NWV-laq1@& z(!32^k1=6ZAaiRzvi>%+EC*pH8p1pdQ*!qCzEsJT=`O-g9l1Yy0)6DZr+;Mw-Z?y| z+kQ!QMG*ueY7<}y$ZHUnd~&~(h_iDMtW12>t2ezykg)dIS5A{aoV|Oq*$BJ*K938t zaO=1L%&23d`y&*HVLTXd8Pw$tsQA+0s_@!|ET&vC>$NY$jPrXqvlVmoJx2!#3M3!B zTU(g3yFS~R89!=3OkDFV&gUT$NTLViu(H9A5u;;!&~J)e96*303&b>q<7;{Up}DHn z`*@_C{Z#qO5(9MEqGM4?6~y)>wPR_Pd5QNbhKej)rJxZbUi<6JY3Z^baFPSaveCQ< zSMRK9m~sDkOO@yy+6NX8+!&PCWo6{}y^+~)+^yxr%5kgK4u?5g@M=b9eazkXs6@ix zKru>DyV5D{rqmEqZ&Ns^u*FR*T>*katn5<}9_IzHe1)7uoPn7M1*U{yiTri+AdyI} zh*O>27BQb$R!0JMcu_bcDY?<6jNXt(J#1+5!Nv67c>vBfg5B76hTHAa`kY}`i5tIH zD2YD+Pmo{hb(bo{c+Ar>r(KV+iHQKj_ElRk?4A6oQRp{BeA5KP;KfEes7KW$5uCEo ztde|U$_Wko1W_h=AsVH{mVL!Wz~RY0R8C+QlsTKmHrlVp*a7}SfYhXZo7t$Lqf{kQ zw*5k+n4bCVzlu_blB|Vr1D}WzZj^#>fmwWlvP*(dKYO}}7*0~MCipK)lfTo3Q+TBl z5&b4ybEa;nka17&fUa$rO1!7NuP<;;*$soEEIPTISru=`il?>KX&m;C%wB3&}~IoWnZ)5fx;)x-=(Ih>ZDzN~1`*x0K`p|Q?h zg>%`Cio1%O1C6HDGP`~^n+Wl)aQ<$HzU zbnhZ$8L7)hnWHts$Tm4rg!e5(I67F^X1TW*N5+dX6Jr$lS<}O8?rI*|l%mO%MdmH= zBxcgF7H2ue&0yNi9qm3`zIAcDGvi48@j7KbOuAkk7>tb$cQJktv7#(AR%oN5tLfWL z^#1TC%sBJ9QbH-K`NmUpfBIT`3+pfQ4P8eO4PgipzXbJBOT|p>;qNTWSOS|k1;t#& z=6*c_&ibf}VzG0}mY5bzBWVsjOWx5i$v5lA`YODO<+$b}knusGIc%Y+-(5DuJ=N1x z^_nPj=YqKf1ss~J66D5%(R#V$8EI6vqC_i7HnJGLG@tGL$Zd0LgNkrhobDC%!qa!@cHvwCIrAt~%zFzBK-|b5Qoz(rcNi zy;OqCM_XX#(Ir$l zQaI>B_gG%kES`sp6vymt4Z}7@sC3 zAa23+Mt0qnSH6xM;Yab1bOLV!HNz-{%hkM8m0pojz6tFuz>;E|2yqUp-3czLW!KZd zv_6SrfohyXk8&M);APY|x`?z;R7w<^kqA&TEWL~~j4T}VaqitGE;FC030eJZj{j-e zlT*DNAw2Fj{TmU{#$3uw(k_HQ#B242bxddY-P zslpXU&Ue~4g|}2j`$4{y^kT}Xp_&m-oeFXyekk!dYRbP&z76n|fd(%$x}4|8xI`JFbziSb4J0QS#}%|xcAYb)5p!$Oua@fvH-sA5BFwP3jqZo?>}LBA83pQ;(=%M z2m?27XNN9j1L_mpx0o3&=B_GvH`5lx*}P2*4*xD4icYErfOgzX%ng!%#6Odbf=t=@ zFd}(x5&j)bbHtd#sM4Yx&BAsvosEytp!>M2@FE)N7xOPOyC++59+o*I`FJckGb})Dn2F#+hoH z;l`J@zL8QR`bH;9ZFSsbF|5?_WVc1$;=5HsrVRb(w=80Mz;!pWEaom#SdtEND;3fd z#=-BRzQUNIRiv6<+Ha^?|7=7-e?B}6vRRzZuK%J+iwKJ;FhjQdFtknsO)o2}&X{)L z)sjqpL`zgdd!gc1E^5d`0;80fa2y6L?fbm!&Iw^r4g*iRLFwlx1@C!LqJutgv^|*m+_ShJ%h_tuAEf6q zhXM>JZ98`l(O*>ax?C&`^S=IsdS@6-dJu*%@Z6Xsw$0A!_X=0sIe)*XWN#(yp$}=N z)p=-EovXoX%cjwVe&)%${D%sQxBlze+b%n6FCJz7`0>s9k!)5*67_C4kl$=1*+KpL z_q{d}jrcHLp~(@w^qsvo&gD`cxiZbFfU*AE@Uta_+Peh;jThw|(#7iIp`R>(_4x4csz z_Ep|EWAt3om3BbmRfxIRb^zs+{HMG4a|4<sg@Tr=P`3Us%~`VJW;g4WWl|uu=VGi6LcfX0y~sZgQR`(sYY7^34@2t8 zT>nK>rLOx-0fvFrHK~N@DaTVn&uiKLIB$eG^)*(AW+rcb(SaoXG*mscEH4W!sS3GV z71Eq%*TWS82HU^fhY$tN*10aFD^cNO(X63)175EcAA+;|rG^GTi~)neU@xnzG3H-V zblgkYH~A0x``~nnBT;Ayfa6TXXcSh>J7(8W_#fKhfD077avlt(b4-d$!Em`?Uy$~kb@06t%MmaEfmLcS)UvH#fdE+Fn9z;^8KfL&p zD4AAZIuZ|JK?^aGbt)Ou{9!l=H~+lZYL|43y4I{1=%f16!2KJ8pB&%4(1akjKVkFU zfa5G*0v2y^8frHJDZPYP8BOf+v}!{fO)8F!MclU%8wQRnDk!(0tK3@s16nTOLQV(I zFR|9M-k2PMlZQDEO#egsV<=b9$B02|0rOhx#s9o0`9_AWtJ{D_iVnF5G(0X;qOGzS zap@l1F(c|HW7FxE#{UZ=EZA6dD_PGwx?kO)Q^-q|16nuxCRV_SP7P6~&27b^u-z(0 z>u;X%;3V{Lu=H9|4L>*Mm@1h3aJh9y#_5naJOH#8{3yZ_<)>9-o4^}wJcgOLjgBY1 zn<&c^&GylnrApIRZ*~Ku$g6VVO*t>s-)vtmnnV3MtmZ6q_WpaI%f=A?+z?rZ!fq^H zkf=XY%)h~Dwp4k>0br9S1E)k(tF|w?aoyD8 zPOb4pTmy`iBIIZ9M()eJhLuWKhY<Q|=T2(m@7#wGxdYyJsksm6e&b4NQvHu9Wp5ky$H zOj)EWC(AY>i^Et9m=uILxj6iI2_a}MdIVJkJH6@MVt+$E*Dp9)_R*AFBr~Nc8qcq^ zmLpfr>8ZHTby=4@uS}U?7|#Xj zmPVZRv?gsNL2xEmw&m|i$FCOYNjoesB{&b;Ff}!xJS)yiR6BHLJD3V(@R9D{1nI>w zvw$5RV^6OG{z6T>AN2z5RkJp3v!CslHW}GUc)kqgUNYlkK!z;lsi$TDA{76{p+~yVjFUp0IWHoGQ5VVJgQijiIeMp5C*0fpchFwOBForw1nT@^ z?ncwqVO^mU09Sx%5cz0SG5+Xhx^$ljUyU>W7!aDd%HU1PDvg)p=O=nJ9uiN(0M^V+ zXe?)z?smlfy&CqT+c+ldt#Z%_S5r~k8Ody$Q>=NX>HT{9PLk`TSlsznzX2BtIYPF$ z>C@?p=GmV~l{k}y6-%AN;Jc+$alL+19^1K5A*_aI%WUv4P+?1V6f5njT-<4ZZ-v4m zIT0K@Q*XeMke(A_#v0x|I{=3k4*a66$tGq)YW;3H7nm9`8v9TJuN)Z+7pX9~dXrzu zKGd!BCWHxn=6tcip^bU#A>+fW!z0!vYk49gzwuz9@?V^;Ve<`-b%G+GUZ)asOWRiu z?f!53cA5%4HJc#FL>IX*?D+i#qq9MCrFiWe+1^D%4T^CcO=N=AkXz+s)9l_OcdH;tUD}EW(sDGnbIIZbJsw0L?9Tjz60grG@pf)%zDMsNOtVcgoxqID~P8 ze~>-2qc+ALD9iYcR9A7y4r~AQ*Wt*QqMB(=+;uj?y_n6C+t6xuNZq@9z&hnZjSTs% z>ZdntJ=k?Wa=drMRYf5C-|XT`LmxC%6%PYBi`UJLq90cx)^ijeIRYUy zP)efAJ*K48u0>L^Q69^umyM0VQ>$V|`kIvAq-b6Kglenvpke%e(XLERzSf>I^q3TL zTcGPYa^|#RMstEfDS30XuVy$glWLge-bMVM^)M;g|HX53vVItB5$6Q< zgJwz5?@AtYpGTl^J;$E|DQ-V6D&-IuH+yIsXIRXH#0L5JxC#%c{rXu|xwN9CI9=Z^ z;m@vH8+$mlgXh}+cBJY*G;u<8@MYz7##0Ocjsa>kWxw?$TmnkEv}icMGw{;?L(~3^ zN9^kH4>Kljmn}T1f#LYmlUSHn$GJYR$FMR?tundoL89G#ZRgiE9CLm0NUGHObNFP) zka($OlK}h8VA}B#|LF1jPMu_)S}2~!N87b*h1%DIV>lIcP1pGN zEfe9}tks=wFeDDjVj4rRrz}9RKeHC9`M~z}+UdWFANps-h__fJa5A>Km#$iiO-{QY zphea!CPumjA>J(a6a({sB{TdIdyslws)85LgI*^ji4fm#j6>H#~X`vkt_>mc9h(5|c8X(?J? z6O|v$-MiV$n48u8!{YeLjV$d-g>KRe{#0I9!Z5;@Nb0!oM}tC8i@|?riVdw%^0J@s zy2H@nn5gn5-*f#@VetbbyBwbi&71x1<*>N!;_(IOKI4=^{wIugi4*-ekiy;4#sl z?{q0zj4#Jsq8{N#GuwxdMaUhtv+oI)y*lRk+c&rw@`&$cL_Djokv-1JZCcoBch_KP zT4p>uTmJ0Y7opUOrE#dxMYc9(vWjXrDWF^pnp2-8?-|V&7;NXh*6A zJWozHWpr+mQ@|~YXEND7GQ8|0x*at>H(JWl^wOn~e{A(N(kEVAB+AT+A0T^^H2fAX zTgAUX(WQvN?aoi!UY5@>%d22y_GqshjKkUF~#vl^=R>AFyj8~y0P z;$o<&i$+^Mp0?2$#IQKqN^x=DfCS}D+xq2$04u?<^A(&$CpSsYb*;-?Ew9R46o$%w zdiT;=*TMMqM9SG@hpu^2p7M0X;E~i;{cGO?7~tQ&mN^KfxteS(FIC7K?XPDhw3>gG zM|(pB$qa_nnFX6lw$w#kJA7DE30rrJyfXQ`rbb+OlXOgwfyzF*qOY%?>$Y*86ZWqX z)Mltn0)`!6yYVVJ$p+*iL0wRu^@swD?`+??_IpZAz>RYk!|ugvaCeRhOOMpgebtBF z_k=@w9OtS;bs7c03dg)8JJ8CNZ|iXZEZ}5MuHcchsTO;0z?5n7AK0DEt263E_nK%a z?W@aV1L=-;_fR9uEAGpbK=@hO_l@i|MGw8!mQ1XcnJiW9(Z+W~YAX@M=-a8njNuN- z*+L1ovj$wFLaTso4c&@kPNIXU-kv1QjNOJ2glWTU8=*x+#@xfFNq3@969bUBwUyJLLF&LX>zKb$aVHr{EP$ZRYfSt zM3!6DsKfj0-kc&w(3j63NAfFvMOvfhyBy}8)(%qvlUQl zv+WofYfl8tKT+S-DK3nqnoFTF;kSXWt^S%op8!kHgdjDkB2SeP2SzF2G-;{EH-)vA znX|mSbO&F$t_ntkqFQQMycO29O~0Bd6bk%~t;gWCMrtR(HCt78ZVSeZ!c@WUEKy}L zGLTcPkH-7Go5?2WhtKF|4WU?>62j-ZzZ+UOAfii#F`HXji9D~OI9PF;KT^#Xqcuz! zc+5!&MY{io7GYRF1{KWUoT;()R@OKQ!x=?{R|KvSW@MzA!2WRlvY(LBD{5HaC(Hm=SDbDtE;uYx4;B6A zg8R+$zL_SLPeFubqHia;+Cdby;3mep>s~xQLZot(vEP=qSJ7blv!(saEat+%=Irtv zlcU+2c`{1IFef40L6OBi!I!G(B_-faLO&*zsD=ND7MIBe4LdtR#W|Vb%i7T#wO9-T z%sL!6=xKPXsy9FWLmQQ~m`lc(-4aS4p`tuF5Jwt9{NZJA7q^6<8klEz)9ZU_7J^uo=Y-k3EMII)e>Eo4QP zy^q(qA<60rg3JLX0K>E>8hU(SRLhJ(*WuroJM$EHu45a?=2~R@tsttsVp1J6cdwUI zYBn~CX%BaIj(xk(^@Wo5XZO{Ro)9NTP3Zezu&sf`|40_+k=KvE$|n+Frs}(&_9&hZ|$2A9QwP z^Xi4!^IKLryWI?Z?2S6ySFucL6IK_3-Z5gNRw!N?t+3kT|ABdV%AO0wRqQs@W{dO7 z*GO^Yl`JP#8OluZ6D1nN;YPjY-H@sPq)z0M8daZeLfRzAFJ?PNOB|=*>gOLC$-i%8 zuvS(&QijSWSEJIcq-Y8(LFg>sO~VV7Hq63|0^rw9#J8#MQkywYtLdGsoiBs;O58WY z7Z*57?>FN3JvU=$dJSdZp+IyeKzr!iuy675_v>R7sUc#A&5yN1p$b$O5P2QNi*R*w z*Kv4(+iZcCuV|pJi1TGxWWXH7Nzt{Q)2Zb2>5&I@MSCF3biCxSaoS{MxjE6Gz;*1% zCsD&Hf*nmgZA2QIe_C%(7`wGxgbyq8P<^x5O;XaZnDAy5~@W1DG86jL19M66IoTmUk|L)mU~d5_JO9RbQg%$$;X!d$^1m zE#tUSS&&W5-*W48wohk|V7v9ryTSZ#?%;rbb4QgAoQDjg+#BaMQ7D(l*-mRXdK&ij z6`D=4M0RF25B<&2&I29NR2%_&)Y+PU9^P1TsG$k)8{Qs%`ip51jlc4V#qKWT?Gx_Q zKbY8;>Gi3)4B=x3&UiUejcB&G%bBYW?Hqy>&{?+1gu7F+^Qgjtpi$dlB~EN{{;R2zJ;AkA)XON>`1Q@ z&b|Lx!RMyTM8A<*kAg;_-AZ2wQoN=zk`^Epify@Iy5W=OK61M8A=; zk?#rPFXQ(Spue?rH?Fp~QN7PQa+P4oCgYIcZ6t^*_xG*r_s;p{VrH@9Q}Y22HSRPz zKkZ#3_Y*^$xTz5zP>?4Xsh&A{rEAI>lhnoY_p%OZG+E;A5?|#BPl(4rT0G~UaAU2@ z3w-;J#uaux@?pz-YJAr^Bk8C|X|JuUCzcA0X(Urt?VLnV_YqLHGC>>byF~6d#-1cDE4A`#*_H@=u(9bL!+4>pF}rdRJ2jG zAJF=BN1D1JjfEBgSavlU-DPEl=)P|ve*5-P&tjw~GTCyAbDYGP6%S=M6v(k-40$}z z|GSBLWhI7XF=7jl$@Ts8e#-m#pMD(d4r=EkM^z#*AJ+{;@MgR`)kMYg}-?zpefO*Z54!?__gQ(7VFA^B)xG z4wKZHv;#ck3_V0v-xcKn@|tf-Qup1)Ets}Fi(ZFh7pBC#i?*Zr=^mS}eZKOht1Mpb zZHT_cGRe$r#EGwUO6-XK^lY1_H+LTc+QGAM>aKx1H(|agR~hY(_;W0$TGby{VkD#P zFN32V(`jhUf`NKZk$wfnSn&6a0VFGO6{d%s1Qo7&{i!Nec9-Z4PdJHlPOU?KXs->{ zLQEYtPYJxrHl8b;tTwaAZXy`_>PrDtm7eWRB zsYa18hW>*80;lg7w7npG)J_qTSP5T#xZS`k&JO(K97^FIItvb54m^+$_O(|-wxd|g zUwB(-iJK|+A(O-sE@vze74|3QP}Yg%5JX3Ft>_mCDl=LyEh&V19X09CK%6$Yka6BR zNPg5Cpx52<$5G0OE6b0Hj{+A|U(e6o)|&SMr>pPTCQ=!(%d}dYR5Pwyr%h7#;$U+@ z0rVN|T59JQUf~8!HLcYRMjx5N5JW(33`IB}`-x7%NU^Fa!A7)DmbBnb>3wqlLL{X~ zF^3Z))4&*dB~0BBDq^82;DRq=(owO7S~0Gwx7w z;H>#rg^}!flI4(9RPq^A+aL;E9Q>}^mc-?~ehHQOh=l(BFzBPf-HB8lL<#}OA+dGd zgW_NjE|&qjU6(ll{aJIzMghOeD4nM6-CCK+6Fa{vU|4}Ug1c6bv4yc+={jfyjB(uR zI~!4n5nGq38s!}va6GQXONTEo;SUO5l)oy>h@WvyJ-2OU3>lYVYSWhRI#pM5{q0_u zFs}6m=5h*&DP2qc0LB<_>6jsJw zJSMUVVpdUtw7$v|rOwK4`NQ&9xBIK5+fita9zeXe=V&)x;y{UAG~ajR{kYWPA@{ZA zC%mDs`>$@&*D&AS;-xt;9*3@U3B`d&q-6+LL2arum$u99>J+m6efNuwU;LsYLuKtMlnD~MIp;xwh z33qzcmB0oh`$|!PfAtSvybshvB>P?WKIm2CGn<*fJwk4Ap4PfhDRD->cylI(LEwJM z$;nuU*HzqZ)kPeiT;Td3wf7$C36+!9{*mtjbxywj`>k~6Uz)gK=9EplI*EBE%T0lW zRm4<(B|qsv^8F09y6-f#@;?FnblpjV3Y>iqR%a8%$t=yZJm(9 z3nD*NpF`*c9e7*>gKPF07VXYJWpR+4GW%GLe5%G(w(ZBBQBLq*}hFXhh0E2ADEg{Frj$fO7X z&JU{)%ruR%12w(UFRn96f4nOmcEI6(~8lI&dhqnSYDPo;K6R>KK0 zVVmYib9(K#kORVOy4>?Ldht=bo9Y1HP zg$P&&p~9r19iM@ZKdVCB|nqaoK9KPg%-!%+n6q#Zb}<1%>!1NL81FL@6wS`_+z8BNUJ)3f=N+$2mMp6Qq8&0Pe7A^ zIQhTS#t(wflVc3NBs})#DIR=AIV!f^0PU?Q!tg+=C-$CrRAU}0kG9F{d^y^2?#PX) z5LB)Bj*zTXA?+P*nslAWJ5Moz|Ilccy#{rr+NjP5yZF9vGLbj<{J1`5Tmt6T%15T@ zTYfEqBwjopdE1xfVu}J=QQ?pkuV0t4XThtg!$vKRNWJZU`);O`?Hy+Xxehp@p5cBX z*Looj^hT9p+AT&wL2U`24@8^8?c&(HN7aFX?uLlIWzAgO*9n~C^#^491V%SE;o zT5W61mmLC+J*Nu)!F~qp0CKMhaScDYbqBUX6%a4kQ;*E{vTANhm35qbmWGcI=rW7s zTK%sd)utKEZPCVQl)EG$h@NTs=%}t4vAcOtH}HdatjAklwW3?t{+skiMh{zz5qIvF zt!D}vE;OHe zb}hWGX%jP4q1Jucc9tWhoP}n$%P-0z)!W9}rqf%sxgh--gRDFcpTr3TPU~phOI_bh=>8$$%LKgS zFWlZ?VrJsD7UPoH=e3O307`CN)t^p zo6bMSUpWAaiQ$XtGsXgUaY1s(-Cdd>}i-hulsK7qegqAKlQy3?==W%KHHFJnUo~1-^p;S|gyUVI4WQ z24%>#vkJd&C3ZY!MnLk&9Z>uUE?NR6qC4nLX<%c1FD1^d%OWRcX1r*vO)SE8xnvy` z?C$t}YqOJn3mQhjBuFYL+oXhvkJCz z9!xXwTPxEv{Z~1B<#qQXW2L0kl!}Pb7xozAU*=4t#6R-ik0%5up^o@3dihs?WXIY8 zJ6-?LP=T@Mx>L7twR%T;>+*j0+Drs7yuKO0w*rZt;-W0fnh14D3BzYpYfJ&e*OIBs zblQ(x*jCS7wZc%fUEaGT#w&?l0R811FMujISnRJwY6WY3vq0LHD}mV@aipM9bfY1; ztM7F69#CeXm}Oz&Fdp<4k9x>1a!Vll8wQM=)!f(vAhDD>Bv5#ieU)0_vzz%rGcqlmsQrk7*2=NY= z=hQWL3Fq4_v_P%7Nk^wl$sOx@z0k_%eqqQn!+i+;pZ4A=D6XjM7HtBdg9mpA9^BnS zaCetLaCZ$7+$}(G5?njDySux06A0doHbHXwuR4#X>eM;^t$Xjo_pqz>!(Mw=?V4*% z8*>cb7~idxxV>KC%AUF6Vm%cP3U6?^9I&!zg)qCEa>QX``qD54(yY>8@q8k0!pf_l zJZhxr7J#gS`D8)nG3Gu@B&gd-tg>^n%N4LJ!&I%~%r$GohTR;$Zq}vodGu8!MvCad zb1@(Od8+qky1d1%>rj*95w(BMj_r`Fajh~Q-|pmuwBcr+qNxC|bkSY+(gkw6|lX}3(o zuk2qk-XfbwNbvD(%^tDyvw|>1-XQeM=KO%h zP+jmK<}Aa|U&it~qGe>;-#wUV{`-pLQtP2bugVW=5G8J$7*Nyr4K=pGnxDC1hYaCx zOD2W*1fHT{d1{WmPI{+RyXh_$V4(qjNG~&W@$XCT)GZAtND%JGrpVA;T2}gYDswKT zx$_LUki)Ts+1_O+{N*ReKkPCvNtUY)UYjukV7I?Xow{H&n;m zk>}Hkcj;sqG035LHf`o_;G)BlZ~4b=aL|tRMe2$r3}oMq3!Ny61>$H)kSA|e7h|XMmirKox1jg?V~I^A}%`f#D`(OAUgRNIwr8kjSKaqEOmc@3egEY%fiK>Ons8C`D7QKm`aQC za68eUTktC@tS5F!4OsUMkC-V`Y8PeP_3)POvNb4 zH)M5_+oZ2n2sO}@C6v!0(3A!Izi|;BB0!*$wwFeJYvXZ*%-Kli)0&#gCnS%NkA0Bv zgn+Q|!yfJSuNMP{#-eT3t!-gb9>Xkzep?iT7XBzy%g?weB!m`k#NIj{aVAUt0`(^+ z1_#$-XZBFQP{Ji$7gOG)_8$Ml`F1nnKBCyq&mo?y7G?eZSl^r%_T5D2gje0Tcn#b= zco+Jd@WT0ooZ5^fubOT+7oTCOG{ESk88#J){0mQkRQSO|Y7F!WA3N&jinx(q2EU&; z7GbybiKkZlfWO`omi0r-HcW+wC$Cz=sUFW%HKPY*zeigOBkz_!hJ$xdd&So*arkwO z@rh%$^sy!}RdbFjrJDU|Q0;vM^@*|Ps}~&~E=y`E`EPa9 z(3d8Khf|HlgxjJcm!bX903R?A7+2E}c$i0#Bnv20J$%ebGE^WX2wUz>#Kab{33Xnp zvu4|gDv#4nazLY_lq%8R97a`A$AjO>k3aZCG4Ocy10r3~+J zPRD_E&axYauyP-Sdtyeo+Jw+zJjVa->NWZO;{2db^s^i$&zpA%Nzy1(w=qnR9CKb@ z(xTP83kiBZYPD51L~uB`iIV)Gon<34AKAqj{WuAeP2xUfdPD z7z&DfBHS~Nei6>O8XVCNpx0jaOV?o~ptA7MTeL-2!{e^k@-UTJ6Qnl*O})_11u5@S zeo*Bc`pa;b>rI6r?~a(V%df$a)9a@RdzU0lmy<dVW$lX>7kBa@nfuN`mhv~q9g13u^{SUWQ*QpOHvN4`) zv&=ohuA7%(!5YfC=JJ^k`!#s*(1l3X9=*5jb7>RHQ%ji1&SmM3&_%KR2^x9V!)&munz`};;ex;aUDkX@d5pQ|TjEqj zZ^#q4nIsyhYtFq}E9AbDpU_>MIob%n2UGWN z_C^y0V?fQrc9h3{w!S^_U8#2V{0u?;oefUySz2hLC*`WAVX02P@`E}=mTK<&%-loV@4-mABM029bnLEo@qu=T@M+{ua zW0GhtU=Z)n?ixI?Bdf9VhhNHXNL}h+q%JK6UHI`CfL!KFTG@_jCC}fvVcEncabdlZ zLBw7BL?Hno1;Btw!#4Bhq8yD;UWR2?EIksNIad0-rdZnmFEKu!kJthS-0 zt5J@y!OfnA4r`;rY?un$^t2vc)h%DLUwAj_Ox4Nc>w3+m@NS*Jx#07_(LS8DRS3@L zF@n`VebHQYEc6uNcguKlyYFsQL!OVPQa?!+QHj(*G>IORA*)aLg?ppJpe9EN zyy%y=+rcKi`Ig~l4ZV+UH`KbL3qAE!0a5iO$FBsIy_J<|m}z<4MMk@lid^XU2uUZf zVYXnwk>0gN$YnoyCH-<2vp{1B>QF#gTB4W=Z&=*kiWprQAxL5zc!kS0=Eg0VmVm zpm<(8pO@a{bGIz9Gqq&Psd&n1hW;hf6Df{Sw^2Vj&?fDFEUSEoO6I%es}VGM%rw%Y z3{kSn3t#zh?YWa<;8Uhty`GhJJgS|l##4R8DyA5hqIjt^Jkn^LzjZ)CmTGghtfN@a zL?oX0nk93s%>;M&T^n=%fv&VDJF4@N0m#V=ZAHUpfq0YEAZFi*YM%}8!5?Cb z=cI)Y8p#2LDyG^g?IWkrNYrY_4n1Cfpvq^SmYGpwNozmS%{`>I`x|*x@)$N_g{^@tX&WXtw3};Mc5O4JR{x;`lH2}Qb64bTW9;k;hr(nxF~-do5rTvlM5 z5TU`HBzjm3TqqDa;v*YQVjKBpyYk%xUG?Z!Q7P>}jvyp2uFh~)Z{J6>7{9(7rl(}wj2$iLs_rX zabapWEjn$rQ$^QWszjO`q~S`In3*Oe%*0RA`Oe}k3x=}tOmp1s!3Z7>p$-<7Tyl*nfbv=pTPuf-`QNySuwf(3~An+y?O?6(AZ_ zMP2}GK;`=?p;BSh9hLV#$~rp`270bvWNH$+1re&XXw^3CylFb)4W$@O_eEQ3i8BnnaO4 zhH@%0g&V<=~4zp!OJg2wf13)I5 zJv8%xdy)455C^>dkvE6{zH2uZBn1`ESni*h`~yt&inzyPM3XdGt(cc$a!#H~MsQ|8 z6`gIC>u!_32J^&Su@T2BETfJiy@03laFfn>&2gU;;25y@eTJpX-M11{r(_y2M7&+E z_crrfu8CO_AieJ9bNSlKUSF6@8`4!*ZYGT%6~heQwMSYfMtA(8%}69v^p?!c2PZedelu4TwBaC0c4x7=)p^hAju_aC0J|3tts9y$&aMFW$-wq zo5El)%BrNaQZW;@{eaA=?$sB&tuOXORSo@VDZlu!?~474f>#bY6B$+IyXL#*I6SN^ zMJRL%?CG#{eRJGAkEPwKEp7UbHAJpc)pqP_2EN)XrEDL#*#y^8RjQ1sFo7icTFy z*syiXMcRz<=))m)YHU~F|ILXe`2y_O#6vWK{DUUCA;=z{3Xb26C?HuChP!gLV8H8+`=mn zZD0JIlx^KFz;R6~Yo3FWFE+C&cfHBN3zjeqLMIR*dPJP=%VjX57&?2Fm%LDJ2J5R(wVHbNFgk)+0XP zNK)~zaq$t$B>MpYCc?^6KVO~Yas|F^mWw-iAq*6i1E{)`I6-0G^1!zeWg7*oHGBnx zej&)M{yFza6{}$ul4vUnwfv>0z;F0Dum4=YFKP*&TBvpXes46&|-O zLAIo+0>AIeH$tOOE5Aa$hEd%xR!aQ5z$IkM~2l~yfYVA+bqi@~7oi~>Ij z#hb9kEy-nGwSi(+&p%a5B*%sKrfy|*pE!y0;B&ZK8(TyamEmhO_gToWkDhr0Xvptg z6?}X%i?&gOx!`bpmgVB!?wrCuSV<9WFp&omJFNT-&%LU0GJ$P3j(CV_rkYFpt=*!=umOonpHCzugd z7|HMR%TysLrJ(YDOl=8ThqC=;QPLrD z8aEpzSmCcN#}7F;E`dN9XAt zQ0F(6&=TXis6c(#3z&@{H5D(bhc%A4 z8xDtF9g`XC(nxOEH->U=%Q@auE6v~Jqfdwneq3aCVy8i}`no|F$4@m;gx;>!cdB|T z*11o8HVxI@OZ?f7_)OoOUMmH0PoDq1n!G37LHNyZKq7%QkIQ4^e=|S(@8ov>yS1cL z4AAJvAnWp;4Dc+reaCP~obHeA7R4+e2oqZp{lOJn{)CTz=LUo4Tn-8d?qDp@1D$eA za%-1v4~ZdHbjgF%rt?zNslE7;d+CK_T|D%i@IbIC-LT$d=G#VckTrTwfIQe=vGO5|>sQO_Bqk`ho&m68l zgIiQsNS+VBW<_#o;E^-{m` z!GNR;U#Ab#Scqe2OkL%`_xx1;{X;?kv)s-}2)af+RgJ8Kax~Y1JrYy1fdZ}TgF|nk zTIQJWMC(FRBI?kA=Fvhzq0+pgoq-hzzppe@J}$_(qAq~sK)>gOvY1I(8#!g+W=G-Xc#H#l=`SP`vn@3+U!N^GzRy}?FFP6cF5lWLQ~T`h zj?VfXAb7Dpg9f2P#UXnc2q6z5FEMxI#v(V1R%bnAO!cwN=->O6P?56VwxJ_Hs(|9M znUesrXun=SknUkkzh%uA`ZxYN}0YMHoY{`mhKxpV&_baUtO>cS&ZWZMuZtjUXrZsca zSie}8w7#&Of?`4%KoL*UA?{$#h{mn8KP*3v;0h=yI;C2tcyzo=j{jP zn77Jb=tegPpYLPqx+EPbZ{)rxZIfLOo1 zdY9M*Vf*!6V$R^4ElsvLO<*dqqd5sksJNSwMgO-@^0XJw^c=9`EVFkMV*?||+}}9* z*xvHiq5d_KCq2z~wPHZ{<-TrKkJ13)TL_Xd(@sY_&k^s*>Q!J z`t7#8D)^BE|12OgIS3(8UO2TCb@4gsJ%c$LOXfEHWCPE6Z-8LxDIVMy{F!SlNF&Ow zIlM(kO!M=Px;$uAYs?TvW=>Z%ftJ&!$eHv;2`AiwZu^fa z0qDm;fqUYf`@OL)V!U-R8wwc=aej(iTOUp+=@Whd9a)jTBENF$<9g@$7$ZFGuY_hd zN%l+lghd+7tSngwQcSr1{5SUi}ZV|u2zwmUK^%+i~@skxO{F#SXM(OW4~ z#XmR=e(IyGBJ9gGRG83_^wQ%Er&p9LiZ^g_?Zmqb$E?nehM3bGa$`=+)|)T2Z*I6q z$iDxrBCz~;SOlUwf;WjPAhe-u)V5q6w8gB1pQ^PLp@Q+=r)y2yz=52^+pRy=aTtL< z{`8s!x>A#07KBb@zi2u_W=WJiIwInKD2pmF70CQBtls82csQ#^&2oPn9;d&~OV6AJ z&k{S#DVJ=WF0R`zvV@l#ST4+#KSASh5$92_(&HO9ABIjPMNZ?F=ve(2F0XXo?qp!+ zbHNLzfnjd(zE@i&PrP_y?G`a{%hY+Zp0VB5G%1taLyE;%=-w}&v!o3ucJ4!#VC8;i zpigSi^#P1Ak3dNv9hWM2pOI8OQz|&X&Ha1_ANri1F}St1J!{Wa@yRzytLBd!dYVXr zRkFi&`o2%PH{fmgM6i?3Y_0PCUjuuO<=TIMwBBp6@(}{^CgyQa>NQa*6bLrjz^J8` zYK2ia^GLT!b+;}Z>U-OmLN_}nLL)pd-UBHEbl)Q)i3I%KCshe*hXBlvcpTni*txEK zGnkDL(zou_p4MS2J2n>;FQF3J;9`%9@PisLeh zW6a?=Px#iu-_4uRINM;`g8RV1e*hqIAPhKU4o#UckaNE3*62H`8f%R>`iSB#^n|3ug_=w_s(DP8G%oWE8o za9keol)>IdSMvDNLHS_9&0)4nYMdd-TbFY^veF7W4(40n`}B%S7h0MXeRgq69__v5 z3~o^vZz}jm(G(?M{gC|qL$#kz{iDR`3)8AMmgkVjQFsu}-D75ZykgSv#m@$P4;Ax2 zldK$l3Y$?D`dHyPx29IZJshibu6f&a*+dn}X8jhXMwjBj^Sr#Oo}15}JzU%gNV+$( zSW|mW(H2bfkTl2NbOX!o>38c9OT<^B>ZdUAAamSLZtl&3Q!@y{a#3jRfCI9@7JOH8 z{P;q>2Y9R}|xaMoc@GRBjvlsj}D&kghsd#B=%VGI#JY^#K zEE0;bDL<0hbKZV^k5E0vzu*p5b<|;(qA8D^j6Vx~2kSm5U%z$T{sV-;so7(}PQf%U z=T{)Q&|Y<7c-;26_a*L$QH0jp&&2wi%t3f^;Gy)T+uBJ}$I%rxe=ayk_dVU!uY0zC z0H*t3C)l}Znq5nM0tzAJNInS)3;qpZ!^r*%$zozR?&0#Z`>g~^0t6&x3}aLzGVZ1J zi~11lQSG2jNMTiW<^>@fGc_i*ylPZ961Ei<%PU;Ux%4*W&>K_8y{Zd##(tiWZAV^; zL(EQA7#%Ylf3~HVe7jwx+L+oIb?98>Vl9fTe6!n^I>_}!2Tj#occDZ`TfI5#M_x|V<8avJ6XDqTItv(?fnR5Tv6bP*Wb)sqM*r0OC+X(!CDn&&9CucZqN*>+FH@q zmp@JwqYIxX5T;gk7ZePg82tl8o>}T#Gx&Qy8Ztz9J)H0R=KH^+-acAe6?a-?8yH!3 zKu{#T{H{FRvpa0IDHl@wd;E}h7%dh|0h29{x%A3dE^fXSlor;&KCs3tUCuC7#H`T` zwbl+_Xno;$qJbX829qnp9F%8Cw*BIDx)hwW4cd4W-R&tt_~KCL$B2JRJwlRy)5w#{ z1!sHjo8y^|e%gN!lYxk?`mPg4-3XhlSQI^#1tzm7%*Y8xHns=&-b+R!SbcgO^5r(( zhykJ9Pt^8AMi?MM$21iv(Ys3p%PT84Z1T@77rbrm`J>le_dFBzc!z_gJspO@0urYf zWG9l{b5CbWe7lY54J#TznBuTC*E0U0Y#~G_ZtY%3 z8-&;pUq8J}zW}(+{4z)W0Y-fPpdKyLZ@Q>?7BX;2^7v7kJS*wejU`N9v9efR%qIrjggbo)P_^D?f@_oGnof@A@7Z?mFE>TjZFg#C9tqG8>R}(`l%-8it zam4O>G0vMdbE7$~k3GkohLijOl*N}+fKhd6b4mEo3mO{q?rB^S;i6-6M$(Qhj8EP& zOj(t~I984ervfZqzRt_`Jq5$Ep77G|qM;A=V!V}hRCKZaQ^btGlaMGW-VxDz$>eCi z);sy=O`A#LHs8C?G5w0amUTr_x1PaK%0EYyn z35!$Bz$gL}k)$u$hhx&@t>GQL3Qsc7(>@8dLy4_0!W%1ZD~beZ5=m~-19vlB zQ1B3SqeKTiD|Ba5CC$8>F`q9b^$b-(!@~mrNWzwNs#^F$7To#|K;sbX9c25QDmzfbd4KhfA;E)lc0>ca`&px$)PA3=#uZjI(+pzizZ}RX2mk=DxFqol z=)n4CKOW8eq87--@$WK~G4`a+RUIF<|Y^>9)8@EleQE)rF!%1js#hLgPcenZAapc z8ItHvI@dC;KmAVo{}xYdN_;W&x?_?Yr2G@5-^b!sVVno>n`vrPAq$$x2pcdRYF?yM zakiANuTK6c@A2JGskPh22P9CH}Ojg5F!xe^&Ii-}el*%&Cgug2XLM(iNL znIWd~3iC%Wn_f@Qb_31)MUC0IZ5z5`oUjE?enj}=$oi;h#DRZvYZ9&P6=&_|*ip>7 z2wXT>55B_k$e%*10!X;NIa2g!^`4{Q9V5T3I=ucd$rm!+8qXm?=a2&5m>5~qYJ9s+ z;DMI#HFZkC8w--GR!7bh0_lfBmr6UeP)impR2B{H_ckQQ9`k}Q*dtE{&4+PF~wbrmyo zC*2J5TEo~F>_nB=DT!4cTKj`v!*G(s^l`#(lnKAcsS9;^s-&R1*Fabn03R=M*DkWJjkL!vW|DfJg|k;lO-x^j~mH6sQZcGHBM_CDd6q#i8>=`0Yd zwjqo^!V61sP(*fj+}pW)XvcZuVhiQE-Ja4nXvb`yM2H6UwN^7s%=yar<0}XN+&`zleJMaN@4+yi^ ztDEyeJmYj6JOd{)Y?=;w(yRfVz&&IK%QGPHXm zg$Y9n)l02n`ZQ}VRp8^&+9q?U$A8rmo5{23;&D^@Y=0B}Y4H(pDSoBMhtZa>7YEBn zpBrTn3t^^wW}R)JnAX!y z13a;6E$+WQh0L^}i?`KICKEbR`Z{m_8B88%JcK3v%;xO=3+w58Y0cI(J5`|cy76#Y z`~^2HS-03W`9W8Q!{6>&>=&YfJP~Ue?P)?dnsh5m61NV77-R)=z_8Xo>yIE=68}P` ze?iWfd=#aQ^R3lZ*GPacU5uLZu5j=tO1$p-tRd=E<2Xxn?EaZlTH!B3gmAr;0nGF9>Hc!^M8?zToBB?GC#6fEFSRNC>*j!kjai+#dhge zPHalQj_uP$reAR?VCpPTXEvYmd}7UX9n)VDaXmAJ4gCH1G7pd6=fv4yO-woNVB=M% z@caGok~r@T{a&nl9v%*DH^$&@z1HSXEQB*D9C~=qTM}wYj=?X0j-`qrjZp;Q{vT@dokW?khiwXy|=-le74Uq`#{*neZOA z0cHWna=1 zQ}2CRqk-T|L8#qj9`1qv~XmM)4yxHWdsSC>}jn)GuH*6Rz4{Q{++zpK{$LO%XlWM2Z%Hnu2e;QS0_{Se3e-{DpJ|MOZT zt$U?~TZZ+D{*f7jD9D z<7{a7O?%AbCJG5{!sC6wcNSqOfetLidhX2yyS`h>acT7sqTPneP`%qS#Lym4=j%tW zRE`@A+iwSMx??PFgv5$p@o>*LhQnshG>hP63y$KFicr1$h)sKU`_frk@m^v2Hw*@9 z#_s*`6o0SHHRnzF+~Emg562U;^C7AD#c0){&zDcL5z$Zht0O)Qt?OO3C44k$TWAu>%Zv(hr!2`~Fzu8__)k0fGI~@J9B!IAwBnYAT0;(=e_#wA>qmEuZ z_(_ElqD1{5_zyrY`1MfF8}X{Ne}F3{aOCnCnSaWzvZvz#^^R*}n`%M(1Z)R%OvM6S zU(`1uzEb~O+hoe#bWWx0{J80J3pq9al>-dxBHu>Ce<}57J`p+m% zW{|oliv3;9EI+%hS`VU!mWMTg2sg@__h#P;#@w8)pCx2AY<(#M>n7RBywY|aWTpv2 zL8at2Wle%jzL*Ze5ZXS`xG8f(qiLQQU5Ik?SYZK~S*>FYhG+5d-);mgv#UfuQtKiI zJ)X%K=Rt+e@4IS&`57dM<^{VRN|;Y=<*q$h$X794_b+99j)9I;VctD!W1YpyC4tOInPA;>(N`tuRyM(Gp8|6dGjtCNA3q zr`jHisHNbh(0c=D;%;n^Hh9}?Rtv@%e+lVcvTkU#bN;FDL&4%JgN@BbOrd|0qNRiN zsL;_r0LMQ3A0QiXQ@KWbcXSVW`3V1j7``T^c{2`O9KNXGdS#a$=sl3yEb0F@DX8-yt1B?3EWz%>mOc{pN3z`EkLlzOY?)^V51;Z__`l*$N+K( zQOHqOMcWgv{^Fe@9K66HyVtgkeiU*S@g8XQ#uq3SV3qT@5I13Bm>Bqh_23`iffh1A z8n8Y7wE94ef4tjJIKtfbs9Kk9U3j@2P51IJ?MS_L2{t)vhe>>m(LdZ;hyu<5B5)V; zR@Zd&`P#Cm?(BoIPCfmgb;gw7-RZ*j2Ejuc#Vy{2l!Hx>csp!)5WA6{VGtEI$eXcMfZ$c3 z6MEvTd1u};j>8Qnq9%qCOcunQ28Ilnkw;;~r&Kcxl}~43DBiqrF~!~)PS{?sY0 zmx=CDS#+=~pvy)QwMCD8cK^`C$69~=0O Q4gALj{?|4D{I~u;07gfCkpKVy literal 0 HcmV?d00001 diff --git a/v0.6.0/assets/mmzaksu.BJNzQY3Z.png b/v0.6.0/assets/mmzaksu.BJNzQY3Z.png new file mode 100644 index 0000000000000000000000000000000000000000..520e812c2c2a7e0fefe9bfed23768cb29dee0b1e GIT binary patch literal 677879 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

How to Install YAXArrays.jl?