diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..5b5661291 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.venv +__pycache__/ +*.pyc \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..e4fba2183 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/00_index.md b/00_index.md index c900f36fe..266899a97 100644 --- a/00_index.md +++ b/00_index.md @@ -1,18 +1,25 @@ --- -title: 'Unbiased representative images using embedded microscopy maps' -short_title: Re-Imaging the Wheel +title: 'Reimag(in)ing Representative Images' +short_title: Virtual Microscopy numbering: heading_2: false --- +++ {"part": "abstract"} -Add your abstract here. -Avoid complicated equations / citations here, for crossref compatibility. +Static figures are the standard interface for scientific discourse and peer review, so microscopists typically communicate experimental results through representative images and plots. +This article focuses on virtual microscopy, a novel visualization strategy for researchers to share microscopy data in publications. +Web-based microscopy maps improve the transparency, accessibility, and archival of bioimages as an unbiased alternative to representative images. +These features make virtual microscopy useful for the critical appraisal of observational studies. +Using this approach, an original claim of reovirus-induced endoplasmic reticulum remodeling was reexamined. +Virtual microscopy subjects the results of qualitative experiments to unbiased peer review by giving readers direct access to the data. +While data visualization can be refined to minimize subjective biases, the interpretation of data inevitably reflects the author's perspective. +Virtual microscopy allows readers to interpret the same data as the author, which is a meaningful step forward, yet how authors determine the outcome of qualitative microscopy experiments remains unclear. +++ -+++{"part":"epigraph"} ++++ {"part":"epigraph"} + :::{warning} Pre-print This article has not yet been peer-reviewed. _Updated 2025 September 27_ @@ -20,20 +27,22 @@ _Updated 2025 September 27_ +++ -+++ {"part": "acknowledgements"} ++++ {"part":"acknowledgements"} + +We thank the [Baker Institute for Animal Health](https://www.vet.cornell.edu/departments-centers-and-institutes/baker-institute-animal-health) for supporting this unfunded project. -Add your acknowledgments, if any, here. +This work used the Open Storage Network through allocation BIO250450 from the Advanced Cyberinfrastructure Coordination Ecosystem: Services & Support (ACCESS) program, which is supported by U.S. National Science Foundation grants #2138259, #2138286, #2138307, #2137603, and #2138296 [@doi:10.1145/3569951.3597559]. +++ -+++ {"part": "competing interests"} ++++ {"part":"competing interests"} ## Competing Interests -Add your competing interests, if any, here. +All authors declared no conflicts of interest. + +++ -## Data availability +## Data Availability -NucleusNet was [deposited](#huggingface-upload) to Hugging Face to facilitate data sharing and the repository was streamed to present images in interactive figures. -The full collection of 250,000 microscopy fields, 1,600 stitched images and corresponding mask files, as well as the cropped images were zipped and archived at Zenodo. \ No newline at end of file +OME-Zarr data is hosted on the Open Storage Network (https://doi.org/10.6075/J0RR1ZCR), see [Metadata Availability](#metadata_page) for URLs. \ No newline at end of file diff --git a/01_introduction.md b/01_introduction.md index 678053635..87ff1c680 100644 --- a/01_introduction.md +++ b/01_introduction.md @@ -1,71 +1,30 @@ --- title: Introduction numbering: - enumerator: 1.%s -label : introduction_page + enumerator: 0.%s --- -Representative microscopy images are visual communication tools used by microscopists to present the results of research to other scientists. -The earliest representative microscopy images were hand drawings in [Micrographia]() in 1665 by Robert Hooke. -Nowadays, roughly three-quarters of publications in biomedical journals report at least one microscopy image [@doi:10.7554/eLife.55133]. -In scientific journals, microscopists present stereotypical images of described phenomena in static figures. -An un-spoken rule is that scientists trust that representative images are honest and accurate. +Representative microscopy images are visual communication tools used by microscopists to present research results to other scientists. +The earliest representative microscopy images were hand-drawn in Robert Hooke's [Micrographia]() in 1665. +Today, roughly three-quarters of publications in biomedical journals report at least one microscopy image [@doi:10.7554/eLife.55133]. +There is an unspoken expectation that scientists rely on these images to be honest and accurate. However, microscopy image selection and quantitative analyses thereof are vulnerable to bias and deception [@doi:10.1242/jcs.261567]. -Aside from issues with integrity, scientists sincerely misinterpret observations. -The problem is that it is difficult for readers to critically evaluate representative images in static figures. -Furthermore, archival and review of primary microscopy data is disorganized and time-consuming if at all available. - -Virtual nanoscopy was an innovative visualization strategy for unbiased presentation of transmission electron microscopy data [@doi:10.1083/jcb.201201140]. -It used digital map software developed for satellite images to present high-magnification tiled microscopy data in an interactive viewer, like Google Earth for cell biologists. -In practice, it is easy to implement [@doi:10.1242/jcs.262198] but difficult to publish because scientific journals use static figures. -This project introduces embedded microscopy maps as a proof of principle to share immunofluorescence bioimaging data without external links or software. - -Microscopists contribute to the [reproducibility crisis]() in science, which is being adressed through protocol standardization [@doi:10.1111/jmi.13041]. -From the perspective of most biomedical researchers, the perceived cause is the pressure to publish [@doi:10.1371/journal.pbio.3002870]. -Large-scale replicability studies performed by scientists at Amgen and Bayer assessed that 11% [@doi:10.1038/483531a] and 25% [@doi:10.1038/nrd3439-c1] of key findings from preclinical cancer research papers were robust and replicable. -Another reproducibility project evaluated replication success with several criteria, though the 'lowest bar' determined a replication rate of 79% for representative images [@doi:10.7554/eLife.71601]. -Notably, 26% of claimed effects were evidenced by a representative image without quantitative analysis. -Consider that representative images cannot describe population variation and the uncertainty of an observation. - -A study critical of representative microscopy images focused on methods of objective image selection to limit bias (https://doi.org/10.1016/s0006-3495(99)77379-0). -The authors implemented a web server that chose typical images from uploaded data, but it is now unsupported and there is no modern equivalent. -This article started by revisiting the idea of objective image selection, as Barkley and Parker thought it was an interesting use case for artificial intelligence. -Barkley automated the process of sample collection and image selection from a collection of one million single-cell images of the [cell nucleus](), called _NucleusNet_. -Cropped images from NucleusNet were presented in interactive figures, including embedded microscopy maps using free and open-source technology [@doi:10.1242/jcs.262198]. -Representative images were selected from NucleusNet by an [autoencoder]() model. -Autoencoders are unsupervised deep learning models that compress and reconstruct images through a vector bottleneck referred to as _latent space_. -The structure of latent space is a [black box](), though it can be shaped to be more useful with the art of representation learning [@doi:10.1109/TPAMI.2013.50]. -Barkley determined that it would be irresponsible to use an uninterpretable embedding for the task of image selection. -To define what is representative, both the subjective determinations made by humans and the objective determinations made by autoencoders are opaque. -Therefore, this project shifted towards demonstrations of virtual nanoscopy as an alternative to image selection. -Barkley saw the value of using virtual nanoscopy to replicate microscopy experiments and challenged the claim of reovirus-induced endoplasmic reticulum (ER) organelle remodelling. -[OrganelleBox](https://organellebox.sf.czbiohub.org/), was used for cross-validation and to expand the investigation to study sixteen organelles during reovirus infection to create an atlas of bioimaging data. - ---- - -## Contributions - -1. **A single-cell confocal microscopy image dataset of 1,061,277 unique cell nuclei.** - -2. **Demonstration of a novel use case for autoencoders: typical image selection.** - -3. **Embedded microscopy maps for unbiased data sharing with virtual nanoscopy** - -4. **An image atlas of cellular organelles during mammalian orthoreovirus infection.** - ---- - -## Definitions - -_Virtual nanoscopy_ was a term used to describe the process of automated image acquisition, followed by unbiased presentation in an interactive tile-based viewer. [@doi:10.1083/jcb.201201140] - -_Microscopy map_ is the interactive figure used to view virtual nanoscopy data. [@doi:10.1083/jcb.201201140] -The original term '_electron_ microscopy map' was redefined to fit a broader use case because our study used confocal microscopy data. - -A _representative image_ is defined as a visual communication tool used by microscopists to communicate research findings to other scientists. -This definition is agnostic to the research context and it emphasizes the use of pictures as scientific evidence. -Parker suggested that _stereotypical image_ would be an apt name for the current use of representative images. - -A _grayscale image_ is defined as a two-dimensional matrix where each pixel is a single intensity value ranging from $0-1$ that represents the amount of light or intensity information at a specific point [@doi:10.1109/BIP60195.2023.10379342]. - -A _latent space_ is a collection of vectors that form a reduced-dimensionality embedding of the data, fit by a machine learning model [@doi:10.1111/cgf.13672]. +Besides cherry-picking, scientists can sincerely misinterpret observations. +The problem is that readers find it difficult to critically evaluate representative images. +Furthermore, archival and review of primary microscopy data is disorganized and time-consuming, if at all available. +These problems can be addressed with novel visualization strategies like [virtual microscopy]() that transmit entire interactive datasets over the internet. +An example was the unbiased presentation of electron microscopy data to readers as interactive digital maps — or microscopy maps [@doi:10.1083/jcb.201201140]. +In practice, microscopy maps are easy to share but are accessed via external links [@doi:10.1242/jcs.262198]. + +[Reproducibility]() is an essential principle of the [scientific method]() for acquiring knowledge, yet there is a contentious [reproducibility crisis]() in science. +From the perspective of biomedical researchers, the perceived cause is the pressure to publish [@doi:10.1371/journal.pbio.3002870]. +Repeatability within the same study by the same researchers is distinguished from replicability by independent researchers using the same methodology. +Large-scale replicability studies found that only 11% [@doi:10.1038/483531a] and 25% [@doi:10.1038/nrd3439-c1] of key findings from preclinical cancer research papers were replicable. +The replication crisis is multifaceted, but the irreproducibility of representative images deserves scrutiny in its own right. +According to one study, replication rates for representative images ranged from 27% to 90% [@doi:10.7554/eLife.71601]. +This wide range reflects how difficult it is to assess the replicability of representative images without dedicated tools. +A feature of virtual microscopy is the unbiased sampling and transmission of multi-scale image data, making it useful as a method to replicate representative images. +If results are reproducible, original claims should be readily observable in microscopy maps, which capture a broader range of variation. +Here, microscopy maps were used to reassess the claim that mammalian orthoreovirus remodels the endoplasmic reticulum (ER) of cells during infection [@doi:10.1128/mBio.01253-18]. +Using the protocols described in the original paper, hundreds of overlapping tiles were sampled at high-magnification from replicate immunofluorescence experiments on a fully motorized confocal microscope. +Microscopy maps were embedded in the article using the next generation file format OME-Zarr [@doi:10.1007/s00418-023-02209-1] and custom viewers based on Viv [@doi:10.1038/s41592-022-01482-7]. diff --git a/02_approach.md b/02_approach.md new file mode 100644 index 000000000..d245784bb --- /dev/null +++ b/02_approach.md @@ -0,0 +1,97 @@ +--- +title: Approach +numbering: + enumerator: 1.%s +--- + +Already adopted by some clinicians and educators, virtual microscopy could also benefit researchers as an interface for communicating and interpreting image data. +Indeed, interactive microscopy maps were first proposed for precisely this purpose, as an unbiased way to present electron microscopy data [@doi:10.1083/jcb.201201140]. +Free and open-source solutions [@doi:10.1242/jcs.262198] and recent advances in file formats [@doi:10.1007/s00418-023-02209-1] now make this feasible, yet these tools have not been adopted in scientific publishing. +Our approach combined automated image acquisition, multi-scale [pyramid]() formats and embedded interactive viewers ([](#abstract)). + +```{figure} ./figures/Virtual_microscopy.png +:label: abstract +Virtual microscopy. 1. Automated dataset collection with any suitable microscope. ZDC: Z-drift compensation. 2. Stitch tiles then convert the image to DZI or OME-Zarr, host online. 3. Image tiles or data chunks are retrieved from cloud storage as readers interact with microscopy maps. +``` + +Elemental Microscopy supports two interactive viewers; [Vizarr](https://github.com/hms-dbmi/vizarr) [@doi:10.1038/s41592-022-01482-7] and [OpenSeadragon](https://openseadragon.github.io/), enabling two methods of virtual microscopy based on OME-Zarr or Deep Zoom. +Authors can also build custom viewers. +Brodrick developed [microATLAS](https://github.com/LadInTheLab/microATLAS-widget), which was used to view OME-Zarr data in this article. +All three viewers are readily embeddable in Elemental Microscopy. +For Vizarr and OpenSeadragon, authors simply copy the markdown and replace the source URL with a link to their own data. +For microATLAS, authors are encouraged to use the [widget builder](https://ladinthelab.github.io/microATLAS-widget/builder.html) to generate code. + +## OME-Zarr + +OME-Zarr is a standardized and flexible image format developed for use cases like virtual microscopy [@doi:10.1007/s00418-023-02209-1]. +Most native microscopy file formats can be converted to OME-Zarr with preserved metadata using [Bio-Formats](https://www.openmicroscopy.org/bio-formats/). +It is a chunked file type that can support multiple resolution levels. +As an advanced implementation of microscopy maps [@doi:10.1242/jcs.262198], pyramidal OME-Zarr data can be viewed online [@doi:10.1038/s41592-022-01482-7]. + +### Vizarr + +```{code} +:label: vizarr +:caption: Minimal markdown to embed Vizarr in Elemental Microscopy. Replace the source with your data. +:::{any:bundle} https://curvenote.github.io/widgets/widgets/vizarr-viewer.js +{ + "source": "https://your-bucket.s3.amazonaws.com/sample.zarr/", + "height": "600px" +} +::: +``` + +### microATLAS + +```{code} +:label: microatlas +:caption: Example markdown to embed microATLAS in Elemental Microscopy. Create your own with the [builder](https://ladinthelab.github.io/microATLAS-widget/builder.html). +:::{any:bundle} https://ladinthelab.github.io/microATLAS-widget/widget.js +{ + "source": "https://your-bucket.s3.amazonaws.com/sample.zarr/", + "views": [ + { + "name": "Overview", + "zoom": -4, + "target": [4886, 4886, 0] + } + ], + "annotations": [ + { "name": "Region A", "target": [2400, 2400], "color": [100, 200, 255] } + ], + "scaleBar": { "maxWidth": 120, "position": "bottom-right" } +} +::: +``` + +```{figure} ./thumbnail.gif +:label: demo +Interacting with microATLAS: +Use the menu (☰, top-left corner) to change the displayed channels, colours, or contrast. +Scroll (↕) to zoom into cells of interest. +``` + +## Deep Zoom + +[Deep Zoom]() is a free and open-source solution, described elsewhere [@doi:10.1242/jcs.262198], now embeddable in Elemental Microscopy. +Pyramidal Deep Zoom image (DZI) data hosted on Github Pages is streamed to the [OpenSeadragon](https://openseadragon.github.io/) viewer. +By default, readers cannot control dimensions like channels or time, so it is best suited for single-channel or composite images. + +### OpenSeadragon + +```{code} +:label: openseadragon +:caption: Minimal markdown to embed OpenSeadragon in Elemental Microscopy. Replace the source with your DZI. +:::{any:bundle} https://curvenote.github.io/widgets/widgets/openseadragon.mjs +{ + "tileSources": "https://your-github.github.io/your-repository/sample.dzi" +} +::: +``` + +:::{dropdown} Imaging +Data collection was fully-motorized for unbiased sampling of large panoramas from replicate immunofluorescence experiments. +Grids of overlapping tiles were acquired with a robotic XY stage (IX3-SSU) and Z-drift compensation (IX3-ZDC). +Coverslips were imaged with an Olympus Fluoview FV3000 confocal microscope using a 100X objective lens (Olympus model UPLAPO100X, NA 1.50) in immersion oil. +Pinholes in each channel were maximized to capture the widest depth of field. +::: \ No newline at end of file diff --git a/02_nucleusnet.md b/02_nucleusnet.md deleted file mode 100644 index e15dded28..000000000 --- a/02_nucleusnet.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: NucleusNet -numbering: - enumerator: 1.%s -label : nucleusnet_page ---- - -# NucleusNet: one million single-cell microscopy images - -## 1600 tiled panoramas - -Artificial intelligence models need to train on lots of data, motivating Barkley to create a large collection cropped images of the [cell nucleus](), called NucleusNet. -It is the sum of 100 automated imaging experiments that sampled ~37.25cm² of cultured cells, yielding 1,061,277 cropped single-cell images extracted from 1600 stitched panoramas. -Images of cell monolayers were collected over twenty-one passages of the same cell line. -[CV-1 cells](https://www.atcc.org/products/ccl-70) were seeded at varying densities then were fixed in paraformaldehyde (PFA) after at least one day of incubation, so the populations had asynchronous cell cycles. -Fixed cells were stained with DAPI which binds to DNA, making the cell nucleus fluoresce upon excitation with ultraviolet light. -As expected, we observed variation in cell confluence and signal intensity between experiments, and even between regions of the same coverslip ([](#sfig1a)). -Ten stitched images closest to the centroid were selected to represent those with an average number and brightness of ROIs ([](#table1)). - -## 1,061,277 single-cell images - -Nuclei were masked in the stitched images with a custom [cellpose](https://github.com/MouseLand/cellpose) segmentation model [@doi:10.1038/s41592-020-01018-x]. -Cellpose was suitable for segmentation because cell division created instances where two nuclear bodies were separated in space but should count as one ROI. -Specifically, mitotic figures in [anaphase](#anaphase) or [telophase](#telophase) were considered one ROI, and [micronuclei]() and nuclei were masked together. -There were also instances where two or more distinct nuclei made contact but should be separate masks. -Barkley re-trained and tuned the cellpose model until it handled these challenges sufficiently. -Browse the ten representative stitched images ([](#table3)) from [](#sfig1a) to evaluate the cellpose segmentation model using an overlay. -Unique masks were assigned random colours to help differentiate ROIs. -False-positive detections by cellpose were rare but expected as a consequence of high-throughput automation. - -**Figure 1A: Embed OpenSeadragon viewer with this [image](https://russellbarkley.github.io/cellpose_masks/)** - -## NucleusNet-10K - -A small version (n=10,000) of the single-cell dataset was created with one-hundred random images from each imaging session. -An interactive cell browser was made that shows random examples from NucleusNet-10K [](#fig1b), so every reader will see a different subset of the collection. -Generally, nuclei were properly centered, well segemented, and pre-aligned in the cropped images. -Pixels were set to zero outside of the mask, leaving background signal around the nucleus, which was notable because this property seemed to emerge in the reconstructions from the trained autoencoder. -Otherwise, cropped images in this version of NucleusNet were not processed further. - -:::{figure} #nucleusnet10k_cellbrowser -:label: fig1b -:placeholder: ./figures/cellbrowser.png -Figure legend. -::: - -With collections of images in the literature, it is common to see several random examples presented in a static figure. -Barkley fused NucleusNet-10K into a 100x100 tile grid and embedded the stitched image (Figure 1C). -Experiments were reported in chronological order by row from top to bottom and clearly there was variation in signal intensity between experiments. -This observation would warrant image pre-processing techniques that normalize or standardize pixel intensities in NucleusNet. -Interestingly, there is another [example](https://www.allencell.org/deep-cell-zoom.html) of this visualization strategy used to present 200,000 single-cell images of human-induced pluripotent stem cells. - -**Figure 1C: Embed OpenSeadragon viewer with NucleusNet-10K** \ No newline at end of file diff --git a/03_autoencoders.md b/03_autoencoders.md deleted file mode 100644 index 222f47e54..000000000 --- a/03_autoencoders.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Autoencoders -numbering: - enumerator: 2.%s -label : autoencoder_page ---- - -# Preliminaries - -## Autoencoders - -From the Deep Learning book by {cite}`Goodfellow-et-al-2016`; -an autoencoder is a neural network that is trained to copy its input to its output. -Autoencoders originated in the eighties and its primary application was dimensionality reduction for information storage and retrieval. -Autoencoders consist of two parts: an encoder and a decoder with hidden layers that describe the code used to represent the data. -The autoencoder is restricted in some way that it is forced to prioritize which aspects of the input to copy, so it often learns useful properties of the data. - -## Model architecture - -During training, the input to the model was a fixed-size $256*256$ grayscale image. -The architecture of the networks in this study followed a common configuration in autoencoder-based anomaly detection methods [@doi:10.48550/arXiv.2501.13864]. -Rectified linear unit (ReLU) activation functions were used throughout the network for nonlinearity {cite}`NIPS2012_c399862d`, except with a sigmoid activation function at the final layer. -Linear activation functions were used in the fully-connected dense layer connections to and from the latent space bottleneck. -Stacked $3*3$ kernels were used throughout the network, so each layer has two convolutions without spatial pooling in between, giving an effective receptive field of $5*5$ with fewer parameters and greater nonlinearity [@doi:10.48550/arXiv.1409.1556]. -Spatial pooling is carried out by average pooling layers, which is performed over a $2*2$ window with a stride of 2. -A stack of four convolutional layers is followed by a fully-connected dense layer into latent space $z$. The decoder mirrors the encoder. -Latent vectors are reshaped then upsampled with Conv2DTranspose (stride 2) and Conv2D through a stack of convolutional layers to reconstruct a $256*256$ grayscale image. -The network was trained with Adam optimizer [@doi:10.48550/arXiv.1412.6980] to minimize the mean squared error (MSE) between original and reconstructed images. -These configurations were used for all autoencoders in this study. -Models varied in the number of layers, number of filters, latent dimensions, learning rate and batch size which were parameters that were manually tuned to the dataset. -In deciding on a model, Barkley considered the importance of limiting the number of parameters in the model and decided on the vanilla model. -There are variations of autoencoders that have been compared to show the efficiencies and trade-offs of different models at image reconstruction, latent representation and accuracy at anomaly detection [@doi:10.1016/j.mlwa.2024.100572]. - -# Representative images from the MNIST dataset - -## Literature reproduction - -A method of objective representative image selection [@doi:10.1109/BIP60195.2023.10379342] was tested on real-world data like the [MNIST database](), which is a collection of 70,000 images of handwritten numbers that were manually annotated into ten classes corresponding to the digits 0-9. -Briefly, the proposed two-step approach to objective representative image selection calculated theoretical average images then measured the distance between real and theoretical images in a vector space. -Measures of central tendency to compute theoretical representative images were the arithmetic mean, median and geometric median, chosen due to their ease of computation. -Averages were calculated as a 784-dimensional vector then reshaped to reconstruct 28x28 pixel theoretical images. -One of the examples shown in the literature used a sub-set of MNIST images (n=720) labelled "four". -Though the reproduction used all MNIST "four" images (N=6824), the outcome was consistent with the primary literature ([](#fig2a)) [@doi:10.1109/BIP60195.2023.10379342]. - -:::{figure} #fig2a_data -:label: fig2a -:placeholder: ./figures/fig2a.png -Computation of theoretical representative images of the MNIST digit '4'. -N=6824 grayscale images with the label '4' were flattened to 784-dimensional vectors to compute then reshape reconstructed images of the arithmetic mean (left), median (middle) and geometric median (right). -::: - -Chosen exemplars were not the same as the literature ([](#fig2b)) [@doi:10.1109/BIP60195.2023.10379342], though this was unsurprising because our subset of MNIST was not the same. - -:::{figure} #fig2b_data -:label: fig2b -:placeholder: ./figures/fig2b.png -Computation of practical representative images of the MNIST digit '4' using the arithmetic mean (left), median (middle) and geometric median (right). -::: - -## Using autoencoders to select representative MNIST digits - -Barkley adopted this approach to representative image selection using the latent space of an autoencoder model. -First, theoretical average latent vectors were calculated using the same measures of central tendency. -Then, practical examples in the embedding were ranked by Euclidean distance to the calculated centroids. - -### 1. Compute and decode centroid latent vectors - -Barkley trained a convolutional autoencoder model on the MNIST dataset and saved the encoder and decoder weights ([](#sfig2a)). -n=6824 latent vectors labelled "four" were averaged and reconstructed using the decoder weights to synthesize theoretical images of the digit "four" ([](#fig2c)). -Interestingly, the decoded centroid latent vectors appeared like the mean and median reconstructions calculated using independent pixel values ([](#fig2a)). - -:::{figure} #fig2c_data -:name: fig2c -:placeholder: ./figures/fig2c.png -Decoded latent vectors: arithmetic mean (left), median (middle) and geometric median (right). -::: - -### 2. Define practical images in Euclidean space - -The behaviour of the theoretical image generally does not correspond to a distinct image, therefore it is not considered the final representative image. -However, it can be used to select representative examples from the dataset [@doi:10.1109/BIP60195.2023.10379342]. -The closest latent vector to each centroid was found based on the lowest Euclidean distance in the vector embedding ([](#fig2d)). -The resulting images were remarkably similar, if not identical to the practical representative images in [](#fig2b), which suggests that these methods were comparable. - -:::{figure} #fig2d_data -:name: fig2d -:placeholder: ./figures/fig2d.png -Closest examples to the arithmetic mean (left), median (middle) and geometric median (right). -::: - -## Limitation to current methods of objective image selection - -These examples of image selection, while clearly effective, relied on class information from an annotated dataset. -As a counterexample, both methods of image selection fell apart when reconstructing the theoretical average using the global centroid. -Again, the reconstructed images from the latent space of the autoencoder had characteristics like that of the pixel-wise average reconstructions that are difficult to describe, which sheds light on the black box. - -:::{figure} #fig2e_data -:name: fig2e -:placeholder: ./figures/fig2e.png -Figure legend. -::: - -:::{figure} #fig2f_data -:name: fig2f -:placeholder: ./figures/fig2f.png -Figure legend. -::: - -Reconstructing the global average did not produce meaningful images given our knowledge of the digits 0-9. -This suggests that determinations on computing the global or class average will make or break this two step approach to image selection, therefore these methods are not generalizable. -Conceptually it made sense to find an average image of the digit 4, but not to find the average of all digits. -Perhaps this approach to image selection could be viable if averaging by label, but this would require an upstream classifier model or manual annotation. - -# Representative images from NucleusNet - -## Model training - -The entire single-cell image collection was sharded into [TFRecords](https://www.tensorflow.org/tutorials/load_data/tfrecord) to better load the dataset into memory and shuffle it during training. -Barkley trained an autoencoder model for fifty epochs on the full dataset and saved the encoder and decoder weights after training, then encoded the grayscale images into latent vectors. -The purpose of this analysis was not to interpret the latent space for scientific inquiry or biological discovery, because artificial models are black boxes. -Rather, the goal was to show that the autoencoder formed a latent space, then images were chosen near the centroid for presentation as representative images. - -### Loss plot - -:::{figure} #ae1m-loss-plot -:label: fig2g -:placeholder: ./figures/fig2g.png -Mean squared error (MSE) reconstruction loss (batch size: 32) plot for the training and validation datasets recorded during training. -::: - -## Latent space interpolation - -A method to evaluate the quality of latent space is interpolation, whereby mixing codes in latent space and decoding the result creates a semantically meaningful combination of the datapoints [@doi:10.48550/arXiv.1807.07543]. -Interpolating with an autoencoder describes the process of using the decoder to decode a convex combination of two latent vectors [@doi:10.48550/arXiv.1807.07543]. -A high-quality interpolation should have two characteristics: intermediate points along the interpolation should resemble real data and they should provide a semantically meaningful transition between the endpoints [@doi:10.48550/arXiv.1807.07543]. -Interpolating between any two latent vectors of embedded NucleusNet images produced reasonable intermediate reconstructions from the decoder with a smooth transition between endpoints ([](#fig2h)). -This result is consistent with the literature describing smooth interpolations with base model autoencoders [@doi:10.48550/arXiv.1807.07543]. -The authors noted that intermediate points did not always resemble real data, which was true with some of the NucleusNet-10K interpolations. - -:::{figure} #nucleusnet10k-interpolation -:label: fig2h -:placeholder: ./figures/fig2h.png - -Decoded latent vectors along intermediate points of interpolations between random pairs of images from NucleusNet-10K. -Executing the code will randomly draw fifty pairs for interpolation. -Images that you see are decoded latent vectors, with t=0.00 and t=1.00 representing latent vectors corresponding to real images. -Four intermediate interpolations at t=0.20, t=0.40, t=0.60 and t=0.80 are mixed codes. -::: - -## Autoencoder-based determination of representative images - -1. Computation of a theoretical image - -Barkley calculated theoretical latent vectors using measures of central tendency, including the arithmetic mean, median and geometric median in latent space. -Averaged latent vectors were reconstructed with the decoder to synthesize theoretical representative images of the nucleus ([](#fig2i)). -Theoretical representative images do not necessarily look like real data [@doi:10.1109/BIP60195.2023.10379342], so these reconstructions do not represent real data. -Otherwise, theoretical average nuclei appeared to blend all image features from the dataset. -As noted earlier, there is what appears to be background signal around the theoretical nucleus. - -:::{figure} #ae1m-theoretical -:label: fig2i -:placeholder: ./figures/fig2i.png -Figure legend. -::: - -2. Determination of a prototypical image - -Real images were selected based on distance to theoretical centroids in latent space. -Specifically, representative images were defined by the lowest euclidean distance or highest cosine similarity to theoretical averages. -One hundred representative images from NucleusNet were ranked based on each distance metric and measure of central tendency ([](#fig2j)). - - -:::{figure} #ae1m-practical -:label: fig2j -:placeholder: ./figures/fig2j.png -Figure legend. -::: \ No newline at end of file diff --git a/03_model.md b/03_model.md new file mode 100644 index 000000000..96eaeeb6f --- /dev/null +++ b/03_model.md @@ -0,0 +1,25 @@ +--- +title: Model +numbering: + enumerator: 2.%s +--- + +## Immunofluorescence assay of transfected-infected cells + +The objective of this experiment was to visualize the co-occurrence of plasmid transfection and reovirus infection in cells. +In the original study, cells were transfected with mCherry-KDEL using TransIT-2020 before reovirus infection at MOI 1. +Transfected-infected cells are desirable for comparing ER morphology during infection, but a heterogeneous population was expected with four outcomes ([](#model)). +Viral and ER antigens were co-stained with reovirus μNS and calreticulin antibodies. + +```{figure} ./figures/transfectedinfectedmodel.png +:label: model +Overview of the replication experiment. mCherry-KDEL transfected cells (TransIT-2020) were infected with reovirus (MOI 100) then ER and viral antigens were detected by immunofluorescence. +``` + +Over the following pages, individual components of this model were tested before combining them in the final replication experiment. +In the results, Barkley annotated transfected cells by infection status to compare ER morphology across hundreds of cells in a navigable dataset. + +:::{dropdown} Cells +HeLa CCL-2 cells were cultured in Dulbecco’s modification of Eagle’s Medium (DMEM) (50-003-PB, Corning) supplemented with 10% fetal bovine serum (FS-0500-AD, Atlas). +Antibiotics were not used in the replication study, although the original study used 100 U/ml penicillin G, 100μg/ml streptomycin and 0.25μg/ml amphotericin B. +::: \ No newline at end of file diff --git a/04_plasmids.md b/04_plasmids.md new file mode 100644 index 000000000..90659bb62 --- /dev/null +++ b/04_plasmids.md @@ -0,0 +1,782 @@ +--- +title: Plasmids +numbering: + enumerator: 3.%s +--- + +## mCherry-ER reporters + +mCherry-KDEL was the same construct used in the original study; mCherry-ER-3 plasmid (55041, Addgene). +mCherry-CytERM-N-17 (55024, Addgene) was included as a positive control for ER remodelling because organized smooth endoplasmic reticulum (OSER) whorls form through fluorescent protein dimerization [@doi:10.1083/jcb.200306020]. +An [OSER assay](#oser_page) (Figure 8.1) was performed to compare whorl formation across different fluorescent proteins relative to mCherry-CytERM. +Two additional constructs were included with ER proteins fused to mCherry; mCh-Climp63 (136293, Addgene) and mCh-Sec61β (49155, Addgene). +An earlier experiment combining moxGFP::μNS with these constructs was inconclusive (Figure 17.1). + +Cells transiently expressing mCherry-ER fusions were fixed 24 hours after transfection with TransIT-2020 and Lipofectamine 3000. +Parker identified saturated signal in the original experiment and advised Barkley to repeat it, adjusting illumination settings individually. +The corrected maps are presented below (Figure 3.1) and the [saturated maps](#saturated_page) (Figure 15.1) and [discarded maps](#discarded_page) (Figures 16.1 to 16.5) are presented in the Supplemental. + +:::::{figure} +:label: figure3 +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle_02.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-KDEL (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "ER remodeling", + "zoom": -0.798, + "target": [ + 11053, + 10028, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2208 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_KDEL_Cycle_02.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-KDEL (Trans-IT 2020)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "ER remodeling", + "zoom": -1.066, + "target": [ + 9952, + 424, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_cytER_Cycle.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjusted contrast", + "description": "Calreticulin channel", + "zoom": -5.512, + "target": [ + 7323, + 7323, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 3500 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling", + "zoom": -0.51, + "target": [ + 4018, + 9351, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_cyter_Cycle_03.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM (Trans-IT 2020)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjusted contrast", + "description": "Calreticulin channel", + "zoom": -5.512, + "target": [ + 7323, + 7323, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 3500 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling", + "zoom": -0.51, + "target": [ + 10587, + 9413, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_sec61_Cycle_02.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Sec61β (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjusted contrast", + "description": "Calreticulin channel", + "zoom": -5.512, + "target": [ + 7323, + 7323, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 3000 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling", + "zoom": -0.51, + "target": [ + 11070, + 3818, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_sec_Cycle_01.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Sec61β (Trans-IT 2020)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "ER remodeling", + "zoom": -0.51, + "target": [ + 9912, + 1666, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_climp_Cycle.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Climp63 (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "ER remodeling", + "zoom": -1.621, + "target": [ + 11242, + 13229, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_climp_Cycle_01.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Climp63 (TransIT-2020)", + "position": "top-center", + "margin": 12, + "fontSize": 16, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "ER remodeling", + "zoom": -0.332, + "target": [ + 6544, + 6534, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 3.1:** Cells expressing mCherry-ER fusion proteins. Select the 'ER remodeling' view from the menu to see representative fields of punctate structures suspected to be mCherry artifacts. +::::: + +:::{important} Alternative hypothesis +For each of the four mCherry-ER reporters, at least one cell exhibits what Barkley interprets as ER remodeling (see the preset views). +These artifacts were also observed in live cells ([](#figure9)), indicating that they are not a consequence of fixation. +Since these cells were not infected, it is possible that previous investigators misinterpreted mCherry-ER reporter artifacts as an outcome of reovirus infection. +::: + +:::{dropdown} Transfection protocol +3 × 10⁵ HeLa cells were seeded on 35 mm glass-bottom dishes (Mattek, P35G-1.5-20-C). +Lipofectamine 3000 (L3000015, Invitrogen) volumes were based on those for 6-well plates: 125 µl Opti-MEM (31985-062, Gibco) was mixed with 5 µl P3000 reagent and 2.5 µg DNA, and a separate tube of 125 µl Opti-MEM was mixed with 3.75 µl Lipofectamine 3000 reagent. +The tubes were combined, incubated for 20 minutes, then added dropwise to the samples. +TransIT-2020 reagent (MIR 5400, Mirus) volumes were based on those for 6-well plates: 250 µl Opti-MEM was mixed with 2.5 µg DNA and mixed gently, then 7.5 µl TransIT-2020 was added and mixed, followed by 20 minutes of incubation and dropwise addition to the samples. +::: \ No newline at end of file diff --git a/04_replication_study.md b/04_replication_study.md deleted file mode 100644 index ca8c12b8b..000000000 --- a/04_replication_study.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Replication Study -numbering: - enumerator: 4.%s -label : replication_page ---- - -# Background - -[Reproducibility]() is an essential principle of the [scientific method]() for acquiring knowledge. -Repeatability in the same study by the same researchers is distinguished from replicability by independent researchers using the same methodology. -Barkley noticed a lack of methods for reproducing representative images and proposed virtual nanoscopy as a method to assess the replicability of observations evidenced by representative images. -Results should be observed again with a high degree of reliability, therefore the original claim should be evident within a sample of hundreds of cells. -To test this, Barkley challenged the claim that reovirus remodels the ER [@doi:10.1128/mBio.01253-18]. -Most evidence, including key findings, were representative images without quantitation ([](#table4)), which is problematic given the inability to communicate population variation and uncertainty. -The study concluded that reovirus induced fragmented, collapsed, and aggregated ER elements, shown in images of infected cells expressing mCherry-KDEL. -This fluorescent ER reporter was expressed using plasmid transfection or with engineered cell lines. -Barkley designed the replication study using the transfected-infected cell model, and stable cells were used for cross-validation. -In the transfected-infected model, plasmid transfection was followed by reovirus infection, then the cells were fixed and immunostained for ER (calreticulin) and viral (µNS) antigens. -Therefore, the calreticulin channel shows the ER of all cells, reovirus µNS shows the viral factories of infected cells, and mCherry-KDEL shows the ER of transfected cells. -From a sample of hundreds of cells, putative virus-induced ER remodelling should be detectable in the calreticulin and mCherry-KDEL channels between infected and uninfected cells. -Heterogeneity was expected in the population due to viral permissivity and incomplete plasmid transfection efficiency, and coincidence of µNS and mCherry was considered desirable in this context. -Another confounding variable was interferon induction from liposomal transfection reagents [@doi:10.1089/jir.1998.18.947] and plasmid DNA. - -# Results - -:::{any:bundle} https://curvenote.github.io/widgets/widgets/vizarr-viewer.js -:class: w-full - -{ - "source": "https://barkley-replication.s3.us-east-2.amazonaws.com/experiment1/sample1.zarr/", - "height": "600px" -} - -::: \ No newline at end of file diff --git a/05_organellebox.md b/05_organellebox.md deleted file mode 100644 index 7c1710622..000000000 --- a/05_organellebox.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: OrganelleBox -numbering: - enumerator: 5.%s -label : organellebox_page ---- \ No newline at end of file diff --git a/05_virus.md b/05_virus.md new file mode 100644 index 000000000..8f6c9cd89 --- /dev/null +++ b/05_virus.md @@ -0,0 +1,746 @@ +--- +title: Virus +numbering: + enumerator: 4.%s +--- + +## Mammalian orthoreovirus strains + +Parker described the morphology of reovirus strain Type 1 Lang (T1L) factories as filamentous and T3D factories as globular, and identified the M1(T1L)-P208S mutation that disrupted an interaction between μ2 and microtubules determining the filamentous phenotype [@doi:10.1128/JVI.76.9.4483-4496.2002]. +The mBio study did not provide a rationale for using this M1(T1L)-P208S mutant, so wildtype T1L was used instead in the replication study. +Wildtype T1L tends to form filamentous viral factories, whereas the M1(T1L)-P208S mutant would have formed globular factories. +A stock of unpurified reovirus strain Type 3 Dearing (T3D), which forms globular viral factories, was included to compare these morphologies. +Others have reported using MOI 100 due to the low permissivity of HeLa cells to reovirus [@doi:10.1128/jvi.00199-19], so ten-fold dilutions from MOI 0 to 100 were tested (Figure 4.1). +Infected cells were visualized with α-μNS chicken serum and AlexaFluor647-conjugated secondary antibodies. +Most HeLa cells were infected with reovirus T1L at MOI 100, so this concentration was used for replication experiments, an increase from MOI 1 used in the original study. +At MOI 1, only a few infected cells were positively identified and pinned on the map. + +:::::{figure} +:label: reovirus-moi-figure + +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi0.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T1L MOI 0", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi0.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T3D MOI 0", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi1.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T1L MOI 1", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "annotations": [ + { + "name": "Infected cell", + "target": [ + 7471, + 983 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 7362, + 850 + ], + "color": [ + 235, + 87, + 87 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi1.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T3D MOI 1", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "annotations": [ + { + "name": "Infected cell", + "target": [ + 6460, + 2626 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 5199, + 7702 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 8381, + 6188 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 9605, + 5645 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 2486, + 8493 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected cell", + "target": [ + 7598, + 9699 + ], + "color": [ + 235, + 87, + 87 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi10.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T1L MOI 10", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi10.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T3D MOI 10", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi100.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T1L MOI 100", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 2000", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi100.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Reovirus T3D MOI 100", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjust contrast", + "description": "Reovirus channel min 0 max 1250", + "zoom": -4.928, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 1250 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: + +**Figure 4.1:** Reovirus strains T1L (left) and T3D (right) 24 hours post infection, with increasing MOI from top to bottom (0, 1, 10, 100). +::::: + + +:::{tip} +Evaluate the calreticulin channel for reported reovirus-induced ER remodeling. +The uninfected control is MOI 0 and ER morphology can be compared within populations. +::: + +:::{dropdown} Infection protocol +Stocks of purified reovirus T1L were titrated in L-929 (L) cells to estimate the concentration of plaque-forming units (PFU). +L cells were also used for virus titration in the original study, so the calculation of multiplicity of infection (MOI, PFU/cell) was consistent between studies. +For infection, purified reovirus was diluted in 100 µl of serum-free DMEM and adsorbed to cells for one hour at room temperature with agitation every ten minutes. +Thereafter, pre-warmed serum-containing DMEM was added and samples were incubated for one day before fixation. +::: diff --git a/06_antibody_ER.md b/06_antibody_ER.md new file mode 100644 index 000000000..e8cd57eff --- /dev/null +++ b/06_antibody_ER.md @@ -0,0 +1,125 @@ +--- +title: Calreticulin +numbering: + enumerator: 5.%s +--- + +The selectivity and specificity of the calreticulin monoclonal antibody was validated as an immunofluorescence marker of the ER. +The staining pattern was punctate but sufficient to observe ER elements (Figure 5.1). + +::::{figure} +:label: figure5a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/primary_secondary.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Immunofluorescence staining of calreticulin. +:::: + +:::::{figure} +:label: figure5b +::::{grid} 3 3 3 3 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/primary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "+ Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/secondary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/mock.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 5.2:** Immunofluorescence antibody controls. +::::: + +:::{dropdown} Materials and immunofluorescence protocol +The original study used an undisclosed polyclonal antiserum for calreticulin, so it was substituted with a monoclonal antibody for the replication. +Mouse calreticulin monoclonal antibody (MA5-15382, Thermo) was stored at -20°C in 5 µl aliquots for use at 1:1000 dilution. +Donkey α-mouse antibodies conjugated to AlexaFluor488 (715-545-150) were used at 1:800 dilution. +HeLa cells were seeded on 12 mm diameter glass coverslips (1.0 glass) (1254580, Fisher) in 12-well plates (665180, Cellstar). +To fix the cells, media was aspirated and 4% paraformaldehyde (PFA) was applied without washing. +PFA was incubated for twenty minutes at room temperature, followed by three PBS washes. +After fixation, cells were permeabilized and blocked for twenty minutes in PBS with 0.1% Triton X-100 and 1% bovine serum albumin. +Antibodies were diluted in this buffer and incubated for one hour at room temperature in the dark, each followed by three PBS washes. +Nuclei were labelled for 15 minutes in Nucblue Fixed Cell Stain ReadyProbes reagent (containing DAPI) (R37606, Fisher) diluted in PBS. +Coverslips were mounted (P36980, Fisher) on glass slides (1255015, Fisher) and cured overnight in the dark. +::: diff --git a/06_discussion.md b/06_discussion.md deleted file mode 100644 index b152de773..000000000 --- a/06_discussion.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Discussion -numbering: - enumerator: 7.%s -label : discussion_page ---- diff --git a/07_antibody_reovirus.md b/07_antibody_reovirus.md new file mode 100644 index 000000000..d15a28d19 --- /dev/null +++ b/07_antibody_reovirus.md @@ -0,0 +1,665 @@ +--- +title: Reovirus μNS +numbering: + enumerator: 6.%s +--- + +Mammalian orthoreoviruses are thought to replicate and assemble viral particles in cytoplasmic compartments called viral factories. +μNS is a viral protein that self-assembles the scaffold of viral factories and recruits other viral proteins like σNS [@doi:10.1128/JVI.79.10.6194-6206.2005]. +The original study labelled viral factories with anti-μNS and anti-σNS antibodies, including an α-μNS chicken polyclonal serum from our laboratory. +The chicken antiserum was corroborated with an α-μNS antiserum from guinea pigs. +All samples were infected with reovirus T1L at MOI 100 and co-stained with calreticulin antibodies to observe ER elements. +Both the chicken ([Figure 6.1](#figure6a)) and guinea pig ([Figure 6.3](#figure6c)) α-μNS antisera were sufficient to observe virus-infected cells and intracellular viral factories at high magnification. +Since the chicken antiserum paired with AlexaFluor647-conjugated secondary antibodies was the combination used in the replication study, a dedicated [repeat](#antibody_page) ([Figure 14.1](#figure14a)) is presented in the Supplemental. + +## Chicken polyclonal antiserum + +::::{figure} +:label: figure6a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_primary_secondary_Cycle_02.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -4.296, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Testing the chicken α-μNS antiserum in cells infected with reovirus T1L. +:::: + +:::::{figure} +:label: figure6b +::::{grid} 3 3 3 3 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_primary_Cycle_02.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "+ Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_secondary_Cycle.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_noantibody_Cycle.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 6.2:** Immunofluorescence antibody controls. +::::: + +## Guinea pig polyclonal antiserum + +::::{figure} +:label: figure6c +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_primary_secondary_Cycle_01.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -4.296, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Testing the guinea pig α-μNS antiserum in cells infected with reovirus T1L. +:::: + +:::::{figure} +:label: figure6d +::::{grid} 3 3 3 3 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_primary_Cycle_02.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "+ Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_secondary_Cycle.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_noantibody_Cycle.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER and adjust contrast", + "description": "DAPI channel min 0 max 2000", + "zoom": -5.555, + "target": [ + 4891, + 4891, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 6.4:** Immunofluorescence antibody controls. +::::: + +:::{tip} +Hidden by default, evaluate the calreticulin channel for reported reovirus-induced ER remodeling. +ER morphology can be compared within populations of infected cells. +::: + +:::{dropdown} Materials and immunofluorescence protocol +Chicken anti-μNS serum from the Parker lab (1:1000 dilution) was the same used in the original study. +Guinea pig anti-μNS serum was gifted by the Stanifer lab (1:5000 dilution). +Donkey anti-chicken antibodies conjugated to AlexaFluor647 (703-605-155), donkey anti-chicken conjugated to AlexaFluor594 (703-585-155), and donkey anti-guinea pig conjugated to AlexaFluor594 (706-585-148) were stored in 1:1 glycerol and used at 1:800 dilution. +HeLa cells were seeded on 35 mm diameter glass-bottom dishes with 20 mm diameter 1.5 coverslips (Mattek, P35G-1.5-20-C) and infected with reovirus T1L at MOI 100 for 24 hours before fixation with 4% PFA. +Calreticulin antibodies were used in all samples. +Combinations of primary and secondary antibodies to reovirus μNS were tested, with AlexaFluor594-conjugated secondary antibodies used for both antisera to maintain consistent illumination settings. +Antibodies were multiplexed and incubated overnight, primaries and secondaries separately. +Nuclei were labelled for 15 minutes in Nucblue Fixed Cell Stain ReadyProbes reagent (containing DAPI) (R37606, Fisher) diluted in PBS, and cells were imaged in this solution. +::: diff --git a/07_methods.md b/07_methods.md deleted file mode 100644 index 52b80272d..000000000 --- a/07_methods.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Materials and Methods -numbering: - enumerator: 8.%s -label : methods_page ---- - -# NucleusNet - -## Cell culture - -The CV-1 cell line is fibroblast-like and derived from the kidney of an African green monkey. -CV-1 cells were cultured in Eagle's minimal essential medium supplemented with fetal bovine serum (10% volume/volume) at 37 degrees celsius with 5 percent environmental carbon dioxide to buffer pH. -At each passage, six glass-bottom cell culture dishes with a 20mm diameter coverslip (Mattek Corporation, P35G-1.5-20-C) were seeded with varied densities of CV-1 cells (~1e4-5e4 cells) to promote heterogeneous cell confluence. - -## Sample preparation - -The samples were fixed with 4% paraformaldehyde for twenty minutes after one to three days of incubation when the cells approached confluence. -After fixation, the samples were washed with phosphate buffered saline (PBS) then were refrigerated at 4 degrees celsius for storage. -Nuclei were labelled with Nucblue Fixed Cell ReadyProbes Reagent (DAPI) (ThermoFisher Scientific, R37606) in 1 milliliter of PBS for at least 30 minutes then were imaged in the staining solution at room temperature. - -## Image acquisition - -Large regions of no. 1.5 glass coverslips were sampled using a motorized stage (IX3-SSU) on a laser scanning confocal microscope (Olympus Fluoview FV3000) with an oil immersion objective lens at 100X magnification (Olympus, model UPLAPO100X, NA 1.50). -The pinhole diameter was opened to 800μm to maximize the depth of field. -N=2500 fields were imaged in a 50x50 tile grid (snake pattern by rows: right down left down) with 5% overlap at each edge. -Z-drift compensation was active to maintain autofocus. -The confocal microscope was on a pressurized CleanBench isolation laboratory table (TMC Vibration Control). - -```{list-table} Illumination and image processing controls on the Olympus Fluoview FV3000 microscope. -:label: table1 - -* - Excitation wavelength - - 405nm -* - Emission wavelength - - 418nm-496nm -* - Laser intensity - - 0.12%-0.15% -* - Detector sensitivity - - 500V -* - Gain - - 1.0X -* - Offset - - 3% -* - Field resolution - - 1024x1024 pixels -* - Pixel size - - 8.0453 pixels/micrometer -* - Pixel type - - uint16 -* - Bits per pixel - - 12 -``` - -## Data pre-processing - -```{figure} ./figures/fig4.png -:label: fig4 -:align: center -:width: 100% - -An overview of data collection and pre-processing. -A) Tiles were imaged in a 50x50 grid. -B) Then stitched into 25x25 tile grids (quarters). -C) Quarters were cropped into four stitched images. -``` - -1. Conversion to 8-bit .TIF format - -Raw 12-bit files are in the proprietary Olympus .oir file format with metadata. -The raw were converted to 8-bit TIF format using FIJI [@doi:10.1038/nmeth.2019] and were renamed 0-2500.tif corresponding to the order that the tiles were imaged. - -2. Tiles stitched with Microscopy Image Stitching Tool (MIST) - -The size of a full stitched image approaches the maximum value that a 32-bit integer can hold, therefore the N=2500 .tif files were divided into sub-folders containing n=625 images corresponding to four quarters ([](#fig4)). -The images in these sub-folders were stitched into 25x25 tile panoramas using the MIST plugin [@doi:10.1038/s41598-017-04567-y] in FIJI. -MIST was useful to correct for inaccurate step sizes that sometimes occurred with the motorized stage. - -```{list-table} MIST plugin settings. -:label: table2 - -* - Filename pattern type - - Sequential -* - Starting point - - Upper left -* - Direction - - Horizontal continuous -* - Grid width - - 25 -* - Grid height - - 25 -* - Grid start tile - - 0 -* - Timeslices - - 0 -* - Filename pattern - - {pppp}.tif -* - Blending mode - - Linear -* - Compression mode - - Uncompressed -* - Pixel size metadata - - Mirometer X 8.0453 Y 8.0453 -``` - -The stitched quarter was displayed and saved, named by run and position. -For example, Run53TL was from the top left quarter of the 53rd imaging experiment. -The stitched quarters were then cropped into four quarters, yielding n=16 stitched images per coverslip ([](#fig4)) and N=1600 stitched images from all one-hundred experiments. - -(cellpose-segmentation)= -3. Segmentation with cellpose - -Nuclei were masked in the stitched images using a custom [cellpose](https://github.com/MouseLand/cellpose) model [@doi:10.1038/s41592-020-01018-x]. -The pre-trained cellpose nucleus model was re-trained on N=125000 fields from NucleusNet, including n=1000 fields with manually-segmented nuclei. -Weights were saved as CP_20250418_Nuclei_1Kmasks. -Advanced parameters in the graphical user interface were adjusted to flow_threshold: 0.5, cellprob_threshold: -2.0, diameter (pixels): 152.91. -The cellpose model segmented the nuclei in all stitched images and the mask files were saved as PNG files where each region of interest (ROI) is defined by a unique pixel value. - -```{admonition} Bias in NucleusNet from data processing methods -:class: warning -The detection of nuclei and the accuracy of the masks relied on the cellpose model. There are undesirable artifacts like blank images and inaccurate masks in the dataset, and sampling was likely inconsistent between stitched images due to variations in signal intensity. The cellpose model was re-trained and hand-tuned by a human. Training was also semi-supervised with manual masks. Thus, there are human and model biases. -``` - -4. Cropped single cell masked dataset - -The orientation of a cell is known to confound the vector embedding of autoencoder models trained on single-cell microscopy data, motivating the development of orientation-invariant autoencoder models [@doi:10.1038/s41467-024-45362-4]. -Similarly, a multi-encoder variational autoencoder model controlled for several transformational features like orientation that were 'uninformative' in single-cell analyses [@doi:10.1038/s42003-022-03218-x]. -Barkley [pre-aligned](https://github.com/jmhb0/o2vae/tree/master/prealignment) and by fitting and rotating a minimal area rectangle to the cellpose mask. -Nuclei were center-cropped and all values outside of the mask were set to zero in the cropped images. - -## Deep zoom microscopy maps - -Microscopy maps are a novel visualization strategy to present large high-magnification microscopy images as zoomable digital maps. -There are free and open-source options to create microscopy maps [@doi:10.1242/jcs.262198]. -[VIPS](https://www.libvips.org/) was used to generate the Deep Zoom image (.dzi) image tile pyramid and [OpenSeadragon](https://openseadragon.github.io/) v4.1.0 viewed the tiles. -OpenSeadragon v5.0.0+ had unstable performance on mobile devices. -Code and data was hosted on Github Pages. - -# Replication Study - -## Cell culture - -HeLa CCL-2 cells were cultured in Dulbecco’s modification of Eagle’s Medium (DMEM) (50-003-PB, Corning) which was supplemented with 10% fetal bovine serum (FS-0500-AD, Atlas). -Antibiotics were not added to the medium in the replication study, although in the original study the authors used 100 U/ml penicillin G, 100ug/ml streptomycin and 0.25ug/ml amphotericin B. - -## Immunofluorescence - -Cells were seeded on 12mm diameter glass coverslips (1.0 glass) (1254580, Fisher) in 12-well plates (665180, Cellstar). -To fix the cells, media was aspirated and 4% PFA solution was applied without washing. -4% PFA was incubated for twenty minutes at room temperature, followed by three PBS washes. -After fixation the cells were permeabilized and blocked for twenty minutes in PBS with Triton X-100 and bovine serum albumin. -Antibodies were diluted in this buffer and were incubated for one hour at room temperature in the dark, both followed by three PBS washes. -Nuclei were labelled for 15 minutes in Nucblue Fixed Cell Stain ReadyProbes reagent (containing DAPI) (R37606, Fisher) diluted in PBS. -Coverslips were mounted (P36980, Fisher) on glass slides (1255015, Fisher) and cured overnight at room temperature in the dark. -Slides were gently cleaned then stored at four degrees celsius. - -## Antibodies - -The original study used a polyclonal serum for calreticulin but did not include the product number, so it was substituted for a monoclonal antibody. -Mouse calreticulin monoclonal antibody (MA5-15382, Thermo) was stored at -20C in 5ul aliquots to be used at 1:1000 dilution. -Chicken anti-muNS serum was previously made in the Parker lab (1:1000 dilution). -Guinea pig anti-muNS serum was made by the Stanifer lab (1:5000 dilution). -Donkey anti-mouse antibodies conjugated to AlexaFluor488 (715-545-150), donkey anti-chicken antibodies conjugated to AlexaFluor647 (703-605-155) and donkey anti-guinea pig conjugated to AlexaFluor594 (706-585-148) were stored diluted in 1:1 glycerol and were used at 1:800 dilutions. - -## Transfection - -Lipofectamine 3000 (L3000015, Invitrogen) was used with 12-well plates; 62.5ul Opti-MEM (31985-062, Gibco) was mixed with 2.5ul P3000 reagent and 1.25ug DNA, and another tube of 62.5ul Opti-MEM was mixed with 1.875ul lipofectamine 3000 reagent. The tubes were mixed, incubated for 20 minutes, then added dropwise to the samples. -TransIT-2020 Reagent (MIR 5400, Mirus) was used with 12-well plates; 125ul Opti-MEM was mixed with 1.25ug DNA, mixed gently, then 3.75ul TransIT-2020 was added and mixed, followed by 20 minutes of incubation and dropwise addition to the samples. - -## Plasmids - -The mCherry-KDEL construct was the same as the original study; mCherry-ER-3 plasmid (55041, Addgene), which retained mCherry in the lumen of the ER. -Barkley included mCherry-CytERM-N-17 (55024, Addgene) to retain mCherry on the cytoplasmic side of the ER. -mCherry-CytERM was considered a positive control for ER remodelling because of the propensity of fluorescent proteins to cause organized smooth endoplasmic reticulum (OSER) whorls [@doi:10.1083/jcb.200306020]. -Two additional constructs were included with ER proteins fused to mCherry; mCh-Climp63 (136293, Addgene) and mCh-Sec61 beta (49155, Addgene). -mCherry-Climp63 was a control for ER remodelling, given its role in determining ER morphology [@doi:10.1016/j.cell.2010.11.007], while mCherry-Sec61β was considered a general ER marker [@doi:10.1126/science.aay7108]. - -## Virus infection - -The study used a mutant mammalian orthoreovirus strain Type 1 Lang (T1L) M1-P208S, which makes globular viral factories through the loss of interaction with microtubules [@doi:10.1128/JVI.76.9.4483-4496.2002]. -No rationale was provided for using the P208S mutant, nor did our lab have it, so wildtype mammalian orthoreovirus strains T1L and Type 3 Dearing (T3D) were used in the replication study. -The important distinction is that the morphology of viral factories between strains T1L and T3D differ. -T1L tends to form filamentous viral factories, and mutant reovirus M1-P208S used the T1L genetic backbone but formed globular viral factories. -A stock of unpurified reovirus T3D was used in one experiment to compare strains. -Stocks of purified reovirus T1L were titrated in L-929 cells to estimate the concentration of plaque-forming units (PFU). -L-929, or L cells are permissive to reovirus infection and were used for virus titration in the original study, so there was consistency in calculating the multiplicity of infection (MOI). -To clarify, MOI was PFU/cell, and PFU was estimated on L-929 cells in both the original study and the replication study. - -For infection of cells on coverslips in 12-well plates, purified reovirus was diluted in a volume of 100ul of serum-free DMEM. -Media was aspirated from the cells, replaced with 100ul serum-free DMEM to wet the coverslip, then the virus-containing medium was added. -Reovirus was adsorbed to the cells for one hour at room temperature and the plate was rocked every ten minutes to redistribute the inoculum. -Thereafter, one milliliter of pre-warmed serum-containing DMEM was added to the cells, and the plate was incubated at 37C for 24h before PFA fixation. - -## Imaging - -Samples were imaged on an Olympus Fluoview FV3000 laser-scanning confocal microscope with a 100X objective lens using immersion oil. -The pinhole was opened for all channels for the widest depth of field. -Z-draft compensation was used to autofocus the samples during acquisition. -Each channel was excited separately and care was taken to avoid spectral overlap. -The coordinates for a 10x10 grid with 5% overlap was set and the one hundred fields were captured using the multi-area time lapse protocol. \ No newline at end of file diff --git a/08_results.md b/08_results.md new file mode 100644 index 000000000..37ce24112 --- /dev/null +++ b/08_results.md @@ -0,0 +1,5043 @@ +--- +title: Results +numbering: + enumerator: 7.%s +--- + +This study is not an exact replication because some reagents and protocols were modified due to availability. +Specifically, the reovirus strain, MOI, and calreticulin antibody were substituted, while the cell line, plasmid, transfection reagent, and reovirus antibody were consistent. +Rather than relying on a single representative image, the data is presented as an interactive figure ([Figure 7.1](#figure7)), allowing readers to observe hundreds of annotated cells. + +::::{figure} +:label: figure7 +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_4/goodZDC.zarr", + "width": "500px", + "height": "500px", + "views": [ + { + "name": "Compare mCherry-ER", + "zoom": -1.474, + "target": [ + 16291, + 1765, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + false, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 1768 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "Compare mCherry-ER", + "zoom": -1.186, + "target": [ + 16127, + 12089, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + false, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2490 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "Compare mCherry-ER", + "zoom": -1.186, + "target": [ + 22766, + 7555, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + false, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 2624 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.362, + "target": [ + 17738, + 18782, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 2747, + 347 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1290, + 1287 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 124, + 2174 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 663, + 2473 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 56, + 2810 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1553, + 4335 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2669, + 3959 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2977, + 4208 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1510, + 5788 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 162, + 7685 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3029, + 9060 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2739, + 10830 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2219, + 11315 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2913, + 12865 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2184, + 15906 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2292, + 18875 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3391, + 18851 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2695, + 19769 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1637, + 20409 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 921, + 20300 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 291, + 20817 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 283, + 23720 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 172, + 24320 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14, + 23867 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1138, + 21554 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1058, + 21660 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2389, + 2956 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2287, + 2247 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4501, + 2451 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4875, + 4079 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5394, + 4151 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5307, + 4373 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3965, + 5458 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3829, + 5228 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3751, + 5850 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2940, + 6565 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2044, + 7371 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5702, + 6970 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6808, + 7574 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4789, + 7951 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6429, + 10167 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6576, + 11240 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5930, + 11010 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4921, + 11575 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5325, + 11826 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3592, + 11920 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3812, + 12256 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5484, + 14421 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6204, + 14603 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5994, + 19189 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6669, + 21512 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8020, + 17480 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8419, + 17518 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8278, + 17895 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7624, + 18243 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7696, + 17981 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9329, + 18804 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8357, + 19779 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6734, + 20681 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5668, + 21414 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5363, + 23588 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5401, + 23973 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7242, + 23093 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8340, + 21689 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8610, + 21991 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8818, + 21959 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9401, + 21881 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8826, + 20635 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6790, + 17552 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8636, + 10382 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7718, + 12436 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8216, + 11883 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9529, + 11098 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9609, + 11389 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10048, + 11381 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9118, + 14238 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7572, + 14064 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8984, + 15001 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9348, + 14897 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11147, + 17117 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10751, + 18354 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11013, + 18343 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10336, + 20616 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10924, + 22706 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13259, + 23270 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13806, + 23276 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12649, + 20102 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12476, + 19555 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13344, + 19442 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14285, + 20626 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14715, + 20540 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7726, + 4772 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7370, + 4482 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8807, + 1720 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7950, + 1923 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7648, + 1563 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8188, + 1267 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9607, + 1023 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12086, + 2466 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12239, + 2402 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13135, + 2102 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13826, + 2226 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13796, + 2670 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14456, + 2407 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14565, + 1697 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14671, + 1946 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13780, + 1488 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13113, + 781 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13036, + 615 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14100, + 477 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15090, + 709 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14665, + 1411 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16224, + 1483 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15136, + 2922 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14955, + 4068 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13675, + 4645 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13850, + 5834 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13746, + 5940 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12553, + 5599 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12931, + 5769 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13372, + 5867 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12102, + 5988 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11641, + 7840 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11900, + 7411 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13312, + 8327 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13227, + 8553 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13508, + 9464 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13320, + 9453 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13333, + 9903 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13510, + 10142 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13263, + 11685 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13250, + 12041 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13651, + 11916 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13825, + 12906 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14257, + 12977 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13756, + 13018 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12564, + 14035 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12963, + 14333 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12735, + 15188 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14654, + 19551 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14976, + 18995 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14896, + 19591 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15624, + 19171 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15512, + 18635 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15406, + 18385 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15460, + 18139 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17009, + 3569 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16905, + 3754 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17212, + 3918 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20615, + 618 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20431, + 409 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22976, + 867 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23048, + 942 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22839, + 111 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23165, + 1575 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22477, + 2340 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21820, + 2933 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22073, + 3012 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21383, + 3138 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22972, + 3999 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22401, + 4371 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23055, + 5051 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23074, + 5461 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23316, + 5965 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22184, + 6226 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21800, + 6899 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22720, + 7290 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20267, + 6969 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19627, + 6551 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17121, + 6696 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16631, + 6945 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16142, + 6070 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14099, + 7098 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13561, + 6784 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13760, + 7526 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16875, + 7813 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15028, + 10158 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15100, + 11071 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16201, + 12114 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16505, + 11808 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17001, + 12740 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17161, + 12941 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17027, + 13379 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17919, + 13705 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18608, + 12095 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18963, + 11503 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19335, + 11906 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19538, + 7987 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22061, + 11707 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21555, + 12851 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21187, + 13709 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21081, + 14067 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20783, + 14535 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20370, + 14457 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18853, + 15340 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19061, + 15415 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18295, + 14744 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18835, + 16738 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18202, + 17649 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17455, + 20253 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16014, + 21749 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15436, + 21192 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15097, + 22209 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15816, + 23986 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17167, + 23307 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17214, + 23010 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18338, + 22495 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18932, + 22225 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19098, + 20384 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19527, + 19914 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19900, + 19640 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20300, + 22116 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20526, + 22529 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20935, + 22732 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20700, + 23002 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19381, + 23782 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 24037, + 23639 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23040, + 23046 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22761, + 20741 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21698, + 20982 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21034, + 21178 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21129, + 19149 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21320, + 19012 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19704, + 18043 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19989, + 18219 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20873, + 17901 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20277, + 17385 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 24203, + 20628 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 24266, + 19511 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23377, + 18702 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23785, + 17678 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23661, + 17849 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23230, + 17625 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22787, + 16470 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22657, + 15997 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23451, + 16101 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 24149, + 16149 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 24036, + 14470 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23852, + 13260 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20615, + 1084 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18506, + 2686 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16149, + 14724 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15724, + 15068 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14634, + 14630 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14789, + 14939 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11712, + 13085 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11141, + 12926 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11978, + 12869 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12410, + 12560 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10581, + 10733 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9417, + 7917 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9569, + 8031 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8844, + 7492 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8630, + 8260 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7914, + 9046 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4633, + 10730 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10516, + 7222 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12543, + 15681 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14043, + 17053 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11328, + 23860 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11293, + 24170 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7956, + 23957 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7371, + 24116 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3965, + 20129 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2844, + 24055 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7027, + 13281 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6701, + 1486 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8446, + 450 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21826, + 4788 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5057, + 8332 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1119, + 965 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3164, + 12167 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16662, + 512 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16412, + 665 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 2837, + 1787 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2845, + 2117 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2437, + 5884 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2475, + 11406 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2992, + 11478 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2776, + 16467 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 75, + 18747 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 224, + 19017 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 464, + 21772 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1500, + 21561 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3149, + 19657 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 850, + 13967 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1199, + 13846 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3105, + 12306 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3712, + 12617 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1980, + 7725 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2954, + 6052 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5233, + 3523 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6999, + 1298 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 5333, + 79 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 10224, + 741 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 11223, + 3892 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 11196, + 5544 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11305, + 5824 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11654, + 6069 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11616, + 6427 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6119, + 1563 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 9126, + 5812 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9304, + 5085 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9012, + 5054 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8892, + 6225 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8380, + 6460 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9082, + 7113 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8946, + 8384 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5643, + 10524 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5215, + 11084 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1593, + 10557 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 760, + 11553 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 752, + 12051 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 3070, + 21414 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3507, + 22080 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3050, + 22537 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3940, + 22953 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4365, + 24247 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4537, + 24062 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12736, + 22734 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13189, + 22723 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13386, + 22276 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13553, + 22726 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14720, + 20969 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14573, + 21418 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13041, + 18305 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 12890, + 17811 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13151, + 17285 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 13853, + 14316 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13092, + 11089 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14339, + 11317 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14395, + 11077 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14613, + 11034 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14739, + 11043 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14921, + 11081 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15370, + 11019 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15761, + 8564 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15914, + 9183 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14001, + 7289 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14156, + 7820 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14423, + 7731 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15166, + 7788 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 15646, + 4658 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 17142, + 2808 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16535, + 2001 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 19035, + 1644 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18403, + 4397 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20518, + 6009 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20530, + 6231 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 19192, + 4797 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20938, + 5109 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19984, + 4545 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19871, + 4392 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19974, + 4075 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19585, + 4198 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20745, + 4282 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19296, + 3690 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 18965, + 8275 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 18084, + 11499 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 17429, + 12288 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 17941, + 12579 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16237, + 12409 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15953, + 12125 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21773, + 8223 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22622, + 7728 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21810, + 6189 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22428, + 5795 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 24014, + 529 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 24178, + 893 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 23060, + 3561 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22278, + 2995 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 19692, + 13684 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21348, + 14477 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20943, + 14774 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22821, + 20494 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22949, + 20593 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 22838, + 20839 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 21472, + 20425 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 20672, + 23355 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 17275, + 23508 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 17717, + 18784 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14665, + 17750 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15787, + 22923 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12018, + 21544 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11925, + 21913 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7913, + 16541 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 6231, + 12016 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4816, + 18286 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8993, + 18028 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 10254, + 19581 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10240, + 19784 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3092, + 13295 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18364, + 19834 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Immunofluorescence imaging of reovirus-infected HeLa cells expressing mCherry-KDEL. Select preset views from the menu: "Compare mCherry-ER" navigates to fields containing both infected (red pin) and uninfected (blue pin) transfected cells for morphological comparison, while "mCherry-KDEL artifacts" shows an example of punctate ER structures potentially caused by the fluorescent protein. +:::: + +Barkley annotated transfected cells using the [microATLAS](https://github.com/LadInTheLab/microATLAS-widget) [builder](https://ladinthelab.github.io/microATLAS-widget/builder.html) to facilitate the comparison of ER morphology between infected and uninfected cells expressing mCherry-KDEL. +This protocol was repeated five times over four experiments ([](#table5) and supplementary data). +Across the five repetitions, the proportion of transfected cells co-infected with reovirus varied from 24% ([](#figure10a)) to 76% ([](#figure7)). +This variability demonstrates that co-infection of transfected cells cannot be reliably assumed, as was done in the original study. + +```{list-table} microATLAS annotation of transfected cell populations expressing mCherry-KDEL. +:label: table5 +:header-rows: 1 + +* - Sample + - Infected + - Uninfected + - Infection rate + - Grid size (fields) +* - [Figure 10.1](#figure10a) + - 39 + - 126 + - 24% + - 10x10 (n=100) +* - [Figure 11.1](#figure11a) + - 64 + - 125 + - 34% + - 15x15 (n=225) +* - [Figure 12.1](#figure12a) + - 55 + - 40 + - 58% + - 15x15 (n=225) +* - [Figure 7.1](#figure7) + - 299 + - 94 + - 76% + - 25x25 (n=625) +* - [Figure 13.1](#figure13) + - 227 + - 75 + - 75% + - 25x25 (n=625) +``` + +## Conclusion + +Barkley found no robust evidence of reovirus-induced ER remodeling in transfected cells expressing mCherry-KDEL. +Irregular ER morphologies were observed in transfected cells expressing mCherry-KDEL, with or without reovirus infection, suggesting that fluorescent protein artifacts could have been misinterpreted as reovirus-induced ER remodeling. +As illustrated in the preset views titled _Compare mCherry-ER_, there was no obvious difference in ER morphology between infected (red pin) and uninfected (blue pin) transfected cells. + +:::{dropdown} Methods +3 × 10⁵ HeLa cells were seeded on 35 mm diameter glass-bottom dishes with 20 mm diameter no. 1.5 coverslips (Mattek, P35G-1.5-20-C). +mCherry-KDEL was transfected with TransIT-2020 for 24 hours, then cells were infected with reovirus T1L (MOI 100) for 24 hours before fixation (4% PFA, 20 minutes). +Calreticulin and reovirus μNS antigens were detected by immunofluorescence. +Chicken antiserum was paired with AlexaFluor647 secondary antibodies. +Nuclei were labelled for 15 minutes in Nucblue Fixed Cell Stain ReadyProbes reagent (containing DAPI) (R37606, Fisher) diluted in PBS, then a 25×25 grid of 625 fields was imaged. +Barkley annotated transfected cells expressing mCherry-KDEL based on the presence or absence of reovirus infection using the microATLAS builder. +Transfected-infected cells were labelled "Coincidence" because the co-occurrence of transfection and infection in the same cell is incidental, while transfected-uninfected cells were labelled "Transfection". +Ambiguous cells were left unlabelled, and it is likely that some transfected cells were overlooked. +::: diff --git a/08_supplementary_data.md b/08_supplementary_data.md deleted file mode 100644 index e68ab8c6b..000000000 --- a/08_supplementary_data.md +++ /dev/null @@ -1,294 +0,0 @@ ---- -title: Supplementary Data -numbering: - enumerator: 9.%s -label : supplementary_page ---- - -# NucleusNet - -:::{figure} #scatter-plot -:label: sfig1a -:placeholder: ./figures/sfig1a.png -The number and brightness of ROIs in the stitched images was measured using the associated cellpose mask files. A pre-computed centroid 694.5 ROIs and 79.0 mean intensity was marked. -::: - -```{list-table} Representative stitched images ranked by distance to centroid: 694.5 ROIs, 79.0 mean intensity -:label: table3 -:header-rows: 1 - -* - Filename - - Number of ROIs - - Mean intensity - - Distance* -* - Run72TR_bottom_left - - 685 - - 78.6 - - 0.046 -* - Run63TR_top_right - - 709 - - 78.6 - - 0.066 -* - Run72BR_top_right - - 687 - - 80.3 - - 0.074 -* - Run68TR_top_right - - 711 - - 79.6 - - 0.076 -* - Run25BR_top_right - - 698 - - 77.5 - - 0.079 -* - Run25BR_bottom_left - - 681 - - 78.0 - - 0.080 -* - Run72BR_top_left - - 712 - - 79.5 - - 0.080 -* - Run102TR_top_left - - 716 - - 78.3 - - 0.099 -* - Run50TL_top_right - - 714 - - 77.8 - - 0.104 -* - Run72BL_top_right - - 720 - - 79.1 - - 0.109 -``` -Z-score-normalized euclidean distance was used for equal weighting because the features had different scales. - -# MNIST autoencoder - -## Loss plot - -:::{figure} #sfig2a_data -:label: sfig2a -:placeholder: ./figures/sfig2a.png -Autoencoder reconstruction loss over one-hundred epochs of training on the MNIST dataset. -::: - -# Replication study - -Barkley noted the type of data in each figure and supplementary figure, excluding videos, in order of presentation. -For data type, there were four possible options; light microscopy image, electron microscopy image, correlative light-electron microscopy image, quantitation. -Quantitation was considered any analysis with numbers, while the other three data types were representative images. -Some figure panels had multiple images. -If the images were of different samples, then they were counted as unique images (>1 images). -Others were multi-channel or time-lapse images, which was considered one image with multiple frames. - -```{list-table} Assessment of the types of data in the original study [@doi:10.1128/mBio.01253-18]. -:label: table4 -:header-rows: 1 -* - Figure - - Data type - - Images - - Frames - - Frame type -* - 1A - - Light microscopy image - - 1 - - 1 - - -* - 1B - - Light microscopy image - - 1 - - 1 - - -* - 1C - - Electron microscopy image - - 1 - - 1 - - -* - 1D - - Correlative light-electron microscopy image - - 1 - - 1 - - -* - 1E - - Correlative light-electron microscopy image - - 1 - - 1 - - -* - 1F - - Electron microscopy image - - 1 - - 1 - - -* - S1A - - Light microscopy image - - 2 - - 1 - - -* - S1B - - Electron microscopy image - - 4 - - 1 - - -* - 2A - - Electron microscopy image - - 1 - - 1 - - -* - 2B - - Electron microscopy image - - 1 - - 1 - - -* - 2C - - Electron microscopy image - - 1 - - 1 - - -* - 2D - - Electron microscopy image - - 1 - - 1 - - -* - 2E - - Electron microscopy image - - 1 - - 1 - - -* - 2F - - Electron microscopy image - - 1 - - 1 - - -* - 2G - - Electron microscopy image - - 1 - - 1 - - -* - 2H - - Electron microscopy image - - 4 - - 1 - - -* - 3 - - Electron microscopy image - - 1 - - 1 - - -* - 4A - - Light microscopy image - - 1 - - 4 - - Time -* - 4B - - Light microscopy image - - 1 - - 2 - - Channel -* - 4C - - Light microscopy image - - 1 - - 3 - - Channel -* - S2A - - Light microscopy image - - 1 - - 3 - - Time -* - S2B - - Light microscopy image - - 1 - - 3 - - Time -* - 5A - - Light microscopy image - - 4 - - 1 - - -* - 5B - - Light microscopy image - - 1 - - 3 - - Channel -* - 5C - - Light microscopy image - - 1 - - 3 - - Channel -* - 5D - - Electron microscopy image - - 1 - - 1 - - -* - 5E - - Electron microscopy image - - 1 - - 1 - - -* - S3A - - Light microscopy image - - 1 - - 3 - - Channel -* - S3B - - Light microscopy image - - 1 - - 3 - - Channel -* - S3C - - Light microscopy image - - 1 - - 3 - - Channel -* - S3D - - Light microscopy image - - 1 - - 3 - - Channel -* - S3E - - Light microscopy image - - 1 - - 3 - - Channel -* - S3F - - Light microscopy image - - 1 - - 3 - - Channel -* - S3G - - Light microscopy image - - 1 - - 3 - - Channel -* - S3H - - Light microscopy image - - 1 - - 3 - - Channel -* - S3I - - Light microscopy image - - 1 - - 3 - - Channel -* - 6A - - Quantitation - - 0 - - 0 - - -* - 6C - - Quantitation - - 0 - - 0 - - -``` - -# Stereotypical images from NucleusNet-10K - -```{image} ./figures/anaphase.png -:label: anaphase -``` -```{image} ./figures/telophase.png -:label: telophase -``` - diff --git a/09_discussion.md b/09_discussion.md new file mode 100644 index 000000000..84d68d5dd --- /dev/null +++ b/09_discussion.md @@ -0,0 +1,44 @@ +--- +title: Discussion +numbering: + enumerator: 0.%s +--- + +Every academic discipline has its own ways of deciding what counts as valid knowledge (see [epistemology]()). +If biomedical researchers endorse empiricism and objectivity, then why are representative images sufficient to make claims? +A representative image shows that an observation is possible, but a single image cannot describe frequency or variance. +The scientific method demands reproducibility, yet representative images offer no way to communicate repeatability without quantitative analysis. +In practice, representative images can show rare, idealized, or exaggerated examples to embellish results. +The literature is full of exciting outcomes, but at the bench, experiments are nuanced and prone to failure. + +Representative images are figures, which should not be confused with data. +Data is the unprocessed file from the microscope, while figures are visual representations of data, shaped by the microscopist. +Figures are the interface for peer review between the experimentalist and coauthors, principal investigators, reviewers and readers. +Indeed, peer review seldom involves data and scientific discourse is limited by the information provided in figures. +This bottleneck is alleviated by virtual microscopy, which is practical to the broader bioimaging community. +For example, OME-Zarr [@doi:10.1007/s00418-023-02209-1] supports several modalities including multiplexed imaging, spatial transcriptomics, light-sheet, infrared, scanning EM and digital pathology. +To maximize accessibility for readers, embedded interactive viewers retrieve data from cloud storage, which is supported by this journal. +Virtual microscopy requires an internet connection, but this limitation is relatively unimportant for contemporary and future publishing. +Web-based microscopy maps are trivial to make and share on Github [@doi:10.1242/jcs.262198], so they can be readily requested by reviewers of all journals. +Data transparency could incentivize publishers to adopt this technology as an alternative to static figures. +Because it nurtures open and rigorous peer review, microscopists and principal investigators might find virtual microscopy advantageous to make more robust claims with their bioimaging data. + +Barkley advocated for the use of virtual microscopy as an "unbiased" method to replicate highly magnified representative images. +This process involves automated sampling of reasonable populations from which the original claim should be reliably observed. +Virtual microscopy is "unbiased" to the extent that the data was sampled with robotics and is hosted interactively on the web. +To test this approach, an immunofluorescence imaging experiment in reovirus-infected cells [@doi:10.1128/mBio.01253-18] was reexamined with virtual microscopy. +Barkley hypothesized that fluorescent proteins could have restructured the ER [@doi:10.1083/jcb.200306020], which was not addressed by the previous investigators. +In replication attempts, ER remodeling was observed in transfected cells expressing mCherry-KDEL in the absence of reovirus. +This suggests that artifacts from mCherry-ER reporters could have been misinterpreted as an outcome of infection. +Otherwise, it was not clear that reovirus affected ER morphology, certainly not to the extent of fragmentation, collapse, and aggregation as described, though we recognize that this interpretation was influenced by confirmation bias. + +When Barkley sought to uncover ground truths through virtual microscopy, Parker offered the following perspective: +There is no ground truth. +The term is misleading, as all "established facts" are simply our current interpretation of available findings, data, or measurements. +Science does not generate truth; it generates findings or data that are analyzed and then interpreted by humans, and those interpretations can differ, sometimes widely. +Through the accrual of many findings, a consensus picture of current "reality" emerges that is sometimes called "ground truth," but this is only a snapshot, not the final word. +Truth is not a straightforward concept. +All truths can be challenged, and while some become more certain with the passage of time, they are never without caveats. +Science is the process of observing, imagining explanations for the observations, turning those explanations into hypotheses, and then testing them through experimentation. +The truths we derive from this process are "interpreted truths" that may become irrelevant as new information is gathered. +Our job as scientists is not to identify ground truths, but to test hypotheses and garner evidence that supports or contradicts them, and to challenge the prevailing consensus. diff --git a/10_oser.md b/10_oser.md new file mode 100644 index 000000000..c10e3fd5b --- /dev/null +++ b/10_oser.md @@ -0,0 +1,165 @@ +--- +title: OSER Assay +numbering: + enumerator: 8.%s +label : oser_page +--- + +Fluorescent proteins tend to oligomerize when confined to the ER, which can restructure the organelle into organized smooth ER (OSER) whorls [@doi:10.1083/jcb.200306020]. +This phenomenon is used to assess the propensity of fluorescent proteins to oligomerize [@doi:10.1111/j.1600-0854.2012.01336.x]. +Six fluorescent proteins were tested in an OSER assay using interactive microscopy maps (Figure 8.1). +Four of these can be cross-referenced with published estimates of the percentage of cells lacking visible OSER whorls: mEGFP (98.8±1.2), mCherry (95.0±0.8), FusionRed (91.5±3.0), and mNeonGreen (90.4±2.1) [@doi:10.1038/nmeth.3891]. +Among the samples tested here, Dendra2 formed the most prominent whorls, visible in the majority of cells. + +:::::{figure} +:label: figure8 +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/fusionred.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "FusionRed-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/mcherry.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/dendra2.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "Dendra2-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/megfp.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mEGFP-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/mneongreen.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mNeonGreen-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/moxgfp.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "moxGFP-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 8.1:** Qualitative OSER assay presented as interactive microscopy maps. +::::: + +:::{dropdown} Methods +3 × 10⁵ HeLa cells were seeded on 35 mm glass-bottom dishes. +An OSER assay was performed with six fluorescent proteins cloned into the CytERM plasmid. +2.5 µg of each plasmid was transfected with Lipofectamine 3000 for 24 hours before PFA fixation and automated imaging of 15×15 (225 field) grids with a 100X objective lens. +Illumination settings, including excitation and emission wavelengths, were adjusted individually. +mEGFP, moxGFP, Dendra2, and mNeonGreen shared the same wavelengths. +::: \ No newline at end of file diff --git a/11_video.md b/11_video.md new file mode 100644 index 000000000..c0264b3ff --- /dev/null +++ b/11_video.md @@ -0,0 +1,72 @@ +--- +title: Video +numbering: + enumerator: 9.%s +label : video_page +--- + +::::{figure} +:label: figure9 +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/video.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mNeonGreen::μNS + mCherry-KDEL", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Play by default", + "zoom": -3.784, + "target": [ + 3431, + 3431, + 0 + ], + "playback": { + "playing": true, + "fps": 24, + "startFrame": 0 + }, + "default": true + }, + { + "name": "mCherry-KDEL artifacts", + "zoom": 0.106, + "target": [ + 3718, + 5505, + 0 + ], + "playback": { + "playing": true, + "fps": 24, + "startFrame": 0 + } + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Cotransfection of mNeonGreen::μNS and mCherry-KDEL in live cells. +:::: + +:::{dropdown} Methods +HeLa cells were seeded on 35 mm glass-bottom dishes (20 mm coverslips, no. 1.5 glass). +pCI-neo mNeonGreen::μNS(1-721) and mCherry-KDEL plasmids were co-transfected (1:1 ratio, 1.25 µg each) for 24 hours with Lipofectamine 3000. +The stage was heated to 37°C but lacked CO₂, so the media was supplemented with 25 mM HEPES buffer before imaging. +A 7×7 grid of 49 fields was imaged in a serpentine pattern at 4-minute intervals for thirty frames (~2 hours total). +::: \ No newline at end of file diff --git a/12_replicate_one.md b/12_replicate_one.md new file mode 100644 index 000000000..592f565a8 --- /dev/null +++ b/12_replicate_one.md @@ -0,0 +1,3504 @@ +--- +title: Experiment 1 +numbering: + enumerator: 10.%s +--- + +## Testing transfection reagents + +Plasmid transfection was a potential confound for reovirus infection in this model. +Two transfection reagents were compared, and TransIT-2020 was deemed more suitable, consistent with the original study. + +::::{figure} +:label: figure10a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/Transit.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "TransIT-2020", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "description": "Calreticulin DAPI min 0 max 2000", + "zoom": -4.294, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.672, + "target": [ + 6945, + 1675, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + false, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.672, + "target": [ + 8224, + 1300, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + false, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 226, + 677 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2116, + 98 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2139, + 23 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1277, + 2539 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1538, + 2527 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 899, + 3635 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 907, + 5407 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 801, + 5741 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 197, + 9656 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 295, + 9748 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4608, + 8776 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4596, + 8587 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4708, + 8347 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5593, + 7819 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5993, + 7922 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3949, + 6820 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4038, + 6985 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3381, + 7622 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3585, + 7672 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2752, + 7199 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3189, + 6309 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3927, + 5162 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3404, + 3561 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3690, + 2719 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3905, + 962 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5302, + 1996 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7114, + 835 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7894, + 733 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7438, + 7642 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7273, + 8345 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7962, + 8522 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8584, + 8713 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8762, + 5642 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8013, + 5240 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8258, + 5341 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2265, + 3006 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 578, + 909 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1812, + 871 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1681, + 1166 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1576, + 1353 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1892, + 1487 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1297, + 1971 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 414, + 1992 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 853, + 2491 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 179, + 3784 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 94, + 4098 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1662, + 1794 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1034, + 2162 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1189, + 3857 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 467, + 4351 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 405, + 4664 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 601, + 4963 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 622, + 5083 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 111, + 5760 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 972, + 5771 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1131, + 5263 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1192, + 5016 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1398, + 5478 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1861, + 5341 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2298, + 6147 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2343, + 6519 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2478, + 7215 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2638, + 7114 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2129, + 7590 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 471, + 8378 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 855, + 8280 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 721, + 9610 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3005, + 8823 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3284, + 8861 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3203, + 8938 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 3177, + 8635 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 3149, + 9205 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2799, + 9448 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4614, + 4042 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4487, + 4201 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4382, + 4487 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4630, + 4450 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4836, + 3301 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4489, + 2803 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4014, + 2962 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3650, + 1648 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 3682, + 1056 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 2873, + 899 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3329, + 354 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4411, + 475 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4642, + 515 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5794, + 506 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6223, + 201 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6885, + 1623 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7086, + 1538 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7276, + 894 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 8204, + 645 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8159, + 1164 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8261, + 1334 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7001, + 3618 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6864, + 4726 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6867, + 4879 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5927, + 5313 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5224, + 4777 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5079, + 4749 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4990, + 5004 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5044, + 5128 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6731, + 6464 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7440, + 6323 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7371, + 6388 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7864, + 6780 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7919, + 6075 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8666, + 5881 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8760, + 6260 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8199, + 4454 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8231, + 3570 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7687, + 3029 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7247, + 1785 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7252, + 1453 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7772, + 1415 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9179, + 338 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8955, + 1570 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8452, + 7461 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8771, + 7882 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6663, + 9036 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6826, + 8991 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6701, + 9348 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6885, + 8666 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6783, + 8440 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5966, + 7763 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5868, + 7492 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5177, + 8236 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4846, + 8522 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4816, + 8738 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4677, + 8943 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4627, + 9689 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3225, + 6031 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3091, + 4248 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2872, + 4003 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2478, + 3255 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2344, + 3395 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2765, + 2510 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2323, + 2401 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3031, + 1719 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2969, + 1829 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6222, + 1563 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6421, + 1816 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6462, + 2803 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5760, + 2767 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5214, + 3354 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5744, + 5079 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7283, + 5360 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7539, + 4801 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7183, + 5188 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6383, + 3921 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6479, + 4020 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6864, + 3000 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1979, + 4280 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2601, + 7439 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9513, + 4151 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9759, + 4468 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9366, + 4678 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9575, + 6997 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7505, + 9085 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6044, + 9495 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6175, + 9624 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9031, + 9291 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8997, + 9366 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8101, + 8446 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7925, + 8617 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Transfected-infected cells. TransIT-2020 transfection before reovirus T1L infection (MOI 100). +:::: + +::::{figure} +:label: figure10b +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/LF3000.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "Lipofectamine 3000", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "description": "Calreticulin DAPI min 0 max 2000", + "zoom": -4.294, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.404, + "target": [ + 402, + 5634, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.404, + "target": [ + 9426, + 5695, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.404, + "target": [ + 6579, + 1651, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 1089, + 570 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1668, + 517 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 610, + 9264 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7830, + 3959 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9720, + 8972 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4648, + 2861 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3888, + 653 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1997, + 2888 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 1104, + 1264 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1248, + 1906 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1069, + 2167 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 725, + 3695 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 379, + 5596 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 933, + 5965 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 610, + 6387 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 425, + 6664 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2907, + 7658 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2507, + 7795 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2459, + 8131 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1099, + 9631 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 63, + 8420 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3067, + 9720 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6391, + 9327 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6701, + 8808 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7205, + 9388 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7758, + 9613 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9141, + 9403 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9481, + 8979 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9563, + 8306 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9141, + 7337 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8830, + 6579 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8365, + 5910 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9459, + 5694 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9192, + 5305 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9727, + 5737 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8811, + 4245 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9184, + 3851 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8110, + 3523 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7629, + 3092 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7528, + 2680 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8089, + 2755 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6963, + 2065 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6768, + 1702 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6503, + 1679 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6185, + 931 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4709, + 866 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3726, + 319 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7284, + 868 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5682, + 3564 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4103, + 4928 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6449, + 4667 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5928, + 5128 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4825, + 4684 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3488, + 3334 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2652, + 2855 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3355, + 2082 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7994, + 143 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8150, + 388 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 9255, + 384 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9757, + 284 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7219, + 1847 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3956, + 6053 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5934, + 7336 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6952, + 7194 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7717, + 7552 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7028, + 8110 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8144, + 8134 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7702, + 6404 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7779, + 6662 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6896, + 6467 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7415, + 5834 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7070, + 5933 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6883, + 5798 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7687, + 5300 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7870, + 4324 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8069, + 4356 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1146, + 4854 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1455, + 4652 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Transfected-infected cells. Uninfected with Lipofectamine 3000 before reovirus infection. +:::: + +::::{figure} +:label: figure10c +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/Untransfected.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "Untransfected control", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "description": "Calreticulin DAPI min 0 max 2000", + "zoom": -4.294, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 2000 + ], + [ + 0, + 4095 + ], + [ + 0, + 2000 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Untransfected control. Mock transfection (no plasmid or reagent) before reovirus infection. +:::: + +:::{dropdown} Methods +Specimens were glass coverslips (1.0 glass) mounted on slides. +Reovirus μNS was detected with chicken α-μNS serum and AlexaFluor647 secondary antibodies, each incubated for one hour. +A 10×10 grid of 100 fields was recorded. +::: diff --git a/13_replicate_two.md b/13_replicate_two.md new file mode 100644 index 000000000..5e1402775 --- /dev/null +++ b/13_replicate_two.md @@ -0,0 +1,4838 @@ +--- +title: Experiment 2 +numbering: + enumerator: 11.%s +--- + +## Testing other mCherry-ER fusion proteins + +Other mCherry-ER reporters were tested, though few cells were found expressing mCherry-Climp63. +Signal intensity was low, particularly in the calreticulin channel, making it difficult to interpret ER morphology with the antibody. + +::::{figure} +:label: figure11a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-KDEL_T1L.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ mCherry-KDEL + reovirus T1L", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Adjusted contrast", + "zoom": -4.877, + "target": [ + 7316, + 7316, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.431, + "target": [ + 1433, + 4581, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.431, + "target": [ + 7579, + 2861, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "ER remodeling without reovirus", + "zoom": -0.431, + "target": [ + 8118, + 655, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 2965, + 1882 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3397, + 3052 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2096, + 4287 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 53, + 7101 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 221, + 9319 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2420, + 14138 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5586, + 7242 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4171, + 5871 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3363, + 6015 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7133, + 3082 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7577, + 3446 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7061, + 1998 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7661, + 1296 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7006, + 1034 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6987, + 914 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7133, + 225 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11983, + 451 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12796, + 2162 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13314, + 3319 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12744, + 6035 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12438, + 7840 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12230, + 7953 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12360, + 9426 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11943, + 13580 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14482, + 13557 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13526, + 9259 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13072, + 7857 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13685, + 6199 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14317, + 5686 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10356, + 3063 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9943, + 3684 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7379, + 5177 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7150, + 5332 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7734, + 5311 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7598, + 6878 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7831, + 6987 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7621, + 6704 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7256, + 10558 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7485, + 10902 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8252, + 10745 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8852, + 13084 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9238, + 13064 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8389, + 13701 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3734, + 14418 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2597, + 13985 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2325, + 13882 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2373, + 13443 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1411, + 12840 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10115, + 7931 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10115, + 8119 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9684, + 8799 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5750, + 7642 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3387, + 8911 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1879, + 8786 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11204, + 2785 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4421, + 2504 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2120, + 1027 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1479, + 2159 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1594, + 3033 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 2117, + 821 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 996, + 1813 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1056, + 2036 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 117, + 2603 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 189, + 2809 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 709, + 3771 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 689, + 4454 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1255, + 4433 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1442, + 4576 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 1337, + 5490 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 948, + 6430 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 160, + 6748 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 174, + 8776 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1046, + 8610 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2111, + 8799 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1800, + 9529 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 970, + 11366 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1200, + 11257 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 711, + 14202 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2671, + 14417 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3030, + 12897 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4079, + 10917 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3135, + 10948 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3548, + 9155 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3033, + 9250 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4126, + 7139 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4179, + 7487 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3768, + 7149 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5570, + 8933 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6266, + 8469 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6117, + 8214 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4889, + 7396 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4315, + 7737 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4515, + 7950 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4648, + 6708 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5532, + 5993 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5782, + 5147 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6631, + 4946 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5956, + 3997 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6279, + 3771 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7585, + 2789 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7703, + 3002 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8271, + 2039 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8000, + 2086 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8213, + 1218 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8165, + 655 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8793, + 488 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5765, + 377 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10653, + 2031 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11743, + 1517 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11896, + 1520 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12163, + 1773 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14226, + 2405 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14596, + 2069 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12676, + 6523 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13017, + 6644 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11172, + 7727 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11228, + 7349 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11607, + 10755 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12292, + 11216 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12705, + 11176 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12241, + 10974 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10280, + 11236 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10288, + 11060 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10709, + 11022 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9098, + 10017 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8451, + 10233 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7568, + 8775 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7210, + 8857 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9444, + 8881 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8085, + 7927 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7873, + 8112 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9531, + 5201 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10023, + 4067 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10599, + 4443 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10061, + 10403 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10872, + 9893 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11234, + 10337 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12764, + 9603 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12934, + 9837 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13321, + 10013 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13977, + 10668 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14568, + 10464 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14074, + 12424 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13910, + 12598 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13968, + 12850 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13630, + 13035 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13613, + 13382 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14415, + 13222 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13754, + 13714 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10057, + 13958 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10189, + 14211 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10574, + 14044 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7973, + 14566 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8239, + 13165 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 8492, + 13031 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7470, + 13063 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7235, + 11052 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7486, + 11153 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7535, + 11415 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7802, + 11249 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7273, + 10109 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6983, + 9961 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4907, + 14418 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6697, + 14345 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9063, + 6813 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8227, + 4549 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7629, + 4689 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8202, + 2214 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8117, + 2474 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11614, + 5204 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11625, + 5552 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12720, + 7774 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14505, + 7934 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14251, + 8062 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14360, + 8321 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14539, + 8219 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13905, + 9927 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14551, + 11631 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14288, + 11663 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13031, + 11211 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8951, + 6336 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9247, + 3847 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2645, + 4787 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3325, + 4379 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3126, + 3588 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3857, + 3455 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4259, + 3742 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9720, + 11415 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9703, + 11788 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Transfected-infected cells transiently expressing mCherry-KDEL with TransIT-2020. +:::: + +:::::{figure} +:label: figure11b +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-KDEL.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "+ mCherry-KDEL - reovirus T1L", + "position": "bottom-left", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "zoom": -5.51, + "target": [ + 7316, + 7316, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -1.064, + "target": [ + 12890, + 1231, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.509, + "target": [ + 12090, + 3861, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -1.065, + "target": [ + 6020, + 11222, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-Climp63_T1L.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "+ mCherry-Climp63 + reovirus T1L", + "position": "bottom-left", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "zoom": -5.51, + "target": [ + 7316, + 7316, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 9881, + 7352 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2115, + 6584 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 3260, + 1602 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7022, + 5940 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8256, + 14363 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 2198, + 7793 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-CytERM_T1L.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "+ mCherry-CytERM + reovirus T1L", + "position": "bottom-left", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "zoom": -5.51, + "target": [ + 7316, + 7316, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 3500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + }, + { + "name": "mCherry-CytERM artifacts", + "description": "ER remodeling without reovirus", + "zoom": -1.064, + "target": [ + 1409, + 11175, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 3500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-CytERM artifacts", + "description": "ER remodeling without reovirus", + "zoom": -1.064, + "target": [ + 5239, + 11306, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 3500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-CytERM artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.509, + "target": [ + 14118, + 10449, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1500 + ], + [ + 0, + 2500 + ], + [ + 0, + 3500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Uninfected", + "target": [ + 2738, + 640 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6230, + 1406 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 8265, + 896 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6366, + 3056 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7309, + 3193 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 12187, + 3043 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12457, + 3114 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12289, + 4700 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11898, + 5925 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11892, + 6974 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 11311, + 6303 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10760, + 6727 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8389, + 5918 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8404, + 6387 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5160, + 6037 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 5072, + 5716 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 4606, + 5775 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5018, + 5338 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 5170, + 3207 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 1409, + 1077 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 63, + 150 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 796, + 3568 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 104, + 5254 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 556, + 6277 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 173, + 7385 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 1423, + 11113 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 788, + 11620 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 565, + 11482 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 1338, + 13002 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1875, + 13462 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2080, + 13318 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5004, + 12700 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6165, + 12838 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9202, + 13606 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10661, + 13233 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8905, + 12377 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9324, + 12131 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 11323, + 11191 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8315, + 9167 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8558, + 8592 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9092, + 8623 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5174, + 11329 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6261, + 11434 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7557, + 12108 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 13251, + 14108 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13921, + 14581 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 14321, + 13203 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 13031, + 11823 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14111, + 2116 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 10319, + 2970 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8763, + 870 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 6889, + 97 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5252, + 569 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7196, + 2693 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-Sec61b_T1L.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "+ mCherry-Sec61β + reovirus T1L", + "position": "bottom-left", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Contrast adjusted", + "zoom": -5.51, + "target": [ + 7316, + 7316, + 0 + ], + "appearance": { + "channelsVisible": [ + true, + true, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 1000 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ], + [ + 0, + 2500 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 1594, + 1084 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1629, + 3398 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 594, + 4335 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 677, + 5416 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 451, + 7189 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 924, + 7666 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2600, + 8712 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3598, + 8718 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1936, + 11131 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1277, + 12128 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7573, + 12645 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14547, + 13731 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14296, + 12365 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13415, + 12017 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14475, + 10511 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13581, + 8741 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13284, + 7291 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6203, + 6854 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9678, + 3561 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9018, + 3886 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11016, + 2089 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11375, + 386 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5670, + 1921 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6525, + 2807 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10571, + 8940 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11205, + 9416 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6993, + 7969 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7850, + 6195 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2200, + 4802 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2703, + 9138 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4250, + 7955 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 856, + 810 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2165, + 372 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3095, + 2167 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 82, + 4500 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 250, + 6610 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2270, + 8665 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2660, + 8324 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2935, + 10007 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6223, + 13507 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5812, + 13001 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6164, + 12811 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7159, + 13725 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8677, + 13301 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11948, + 12145 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12368, + 12421 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13905, + 13260 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13517, + 11692 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14530, + 9122 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13459, + 7994 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 13557, + 7985 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13772, + 3785 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 13769, + 2871 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 13096, + 126 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 10262, + 6664 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10557, + 6525 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9350, + 7170 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9587, + 7468 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6588, + 6651 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6601, + 6943 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7005, + 4604 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6521, + 193 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5589, + 1299 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5373, + 847 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5223, + 1534 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3144, + 384 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3910, + 9229 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8170, + 480 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9779, + 1036 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5588, + 10264 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5685, + 9125 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 11.2:** Additional mCherry-ER reporters and an uninfected control. +::::: + +:::{dropdown} Methods +Specimens were 35 mm glass-bottom dishes with 20 mm coverslips (no. 1.5 glass). +Reovirus μNS was detected with chicken α-μNS serum and AlexaFluor647 secondary antibodies, each incubated for one hour. +A 15×15 grid of 225 fields was recorded. +::: \ No newline at end of file diff --git a/14_replicate_three.md b/14_replicate_three.md new file mode 100644 index 000000000..c67f7b8f6 --- /dev/null +++ b/14_replicate_three.md @@ -0,0 +1,3640 @@ +--- +title: Experiment 3 +numbering: + enumerator: 12.%s +--- + +::::{figure} +:label: figure12a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-KDEL_T1L.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-KDEL", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Compare mCherry-ER", + "zoom": -0.72, + "target": [ + 9129, + 3538, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.7, + "target": [ + 7379, + 7276, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.412, + "target": [ + 9477, + 10372, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + }, + { + "name": "mCherry-KDEL artifacts", + "description": "ER remodeling without reovirus", + "zoom": -0.412, + "target": [ + 11104, + 779, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 255, + 0, + 255 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 0 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + } + } + ], + "annotations": [ + { + "name": "Infected", + "target": [ + 583, + 746 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 332, + 1942 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1734, + 1174 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4182, + 2481 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5259, + 1640 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7738, + 1235 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6189, + 58 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8767, + 479 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9441, + 1819 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10554, + 877 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10471, + 1379 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10606, + 67 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12963, + 1329 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13788, + 1220 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13218, + 69 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12468, + 1838 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12057, + 1800 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11520, + 2031 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10916, + 2416 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11424, + 6693 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12039, + 6861 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13106, + 8382 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12676, + 8124 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14191, + 8550 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14160, + 9095 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11472, + 13763 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10954, + 12517 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10506, + 11888 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9518, + 13005 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9100, + 13072 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5759, + 13609 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5544, + 14039 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4158, + 14035 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3986, + 14181 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3534, + 13698 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3577, + 13906 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 960, + 9338 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3395, + 8436 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4246, + 7318 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4033, + 6049 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2046, + 3772 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 211, + 5636 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1276, + 6880 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9076, + 3398 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9274, + 3415 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9229, + 3632 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9150, + 8588 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8447, + 9293 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7952, + 8885 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14559, + 13817 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 779, + 1274 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1403, + 2255 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1734, + 10002 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1506, + 10113 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 154, + 11738 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4454, + 12723 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6926, + 12620 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6295, + 11518 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3181, + 9254 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4463, + 9105 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4271, + 7010 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4314, + 5534 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5690, + 1592 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5503, + 1854 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5465, + 2460 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8766, + 2066 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9437, + 2238 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11071, + 744 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10583, + 2884 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11117, + 3266 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11262, + 3504 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11151, + 4803 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9020, + 3594 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7043, + 4750 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6739, + 4927 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7326, + 7277 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7329, + 7647 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9779, + 11335 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9480, + 10319 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8851, + 9650 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10817, + 6606 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10529, + 6569 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 13832, + 8393 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13576, + 8349 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13107, + 11273 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13547, + 11606 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12208, + 10713 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11293, + 11618 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10024, + 13418 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9774, + 14151 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10855, + 13344 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6067, + 9829 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4914, + 6646 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5006, + 6874 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 6141, + 3516 + ], + "color": [ + 235, + 87, + 87 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Transfected-infected cells expressing mCherry-KDEL. +:::: + +:::::{figure} +:label: figure12b +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-Sec61b_T1L.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Sec1β", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "annotations": [ + { + "name": "Infected", + "target": [ + 2996, + 390 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3398, + 810 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 2358, + 525 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3339, + 41 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 333, + 1793 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 569, + 3479 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 519, + 3868 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 211, + 4556 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1858, + 6066 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2021, + 6658 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 1027, + 9030 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 554, + 10097 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 148, + 10743 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 277, + 10377 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 786, + 12920 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 666, + 12606 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 1457, + 12366 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3307, + 14412 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3203, + 13842 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 2664, + 13336 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 579, + 11198 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 2640, + 10709 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2237, + 9910 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1582, + 10847 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 5123, + 8555 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4478, + 8688 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4173, + 9273 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4053, + 8948 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4505, + 9546 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4738, + 9785 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6254, + 9925 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7078, + 10085 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7303, + 9791 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7425, + 10117 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8157, + 9940 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8185, + 8538 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7235, + 7962 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7624, + 8116 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6538, + 7410 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7688, + 6271 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7597, + 7121 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6919, + 7044 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7919, + 6474 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5150, + 5824 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 4870, + 5399 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5978, + 4906 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 5731, + 4192 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 4195, + 3513 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3906, + 3199 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7228, + 30 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6941, + 211 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 6941, + 2301 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7396, + 2408 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8168, + 2631 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9131, + 4744 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9276, + 4831 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 9605, + 3857 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9116, + 7345 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10310, + 7307 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10206, + 7483 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10449, + 8058 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11360, + 7994 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9315, + 8298 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9558, + 8615 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10488, + 9223 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10081, + 10805 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8901, + 11441 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9431, + 14331 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9259, + 14534 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10023, + 13964 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10326, + 14240 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10746, + 14620 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11721, + 13143 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14484, + 14600 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 14042, + 14347 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14639, + 10946 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13630, + 10312 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 14239, + 10023 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13527, + 9216 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13022, + 8634 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12736, + 8450 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11536, + 5936 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11536, + 5790 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 10779, + 5100 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10173, + 4171 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11992, + 4211 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 12349, + 3303 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12477, + 3457 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9449, + 1077 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11097, + 890 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11703, + 537 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10970, + 456 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11400, + 257 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 13663, + 640 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13735, + 1233 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13898, + 1576 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13794, + 2155 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 14476, + 3915 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 13393, + 4340 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14264, + 4699 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14250, + 4872 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 4823, + 7316 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4321, + 6438 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3683, + 6040 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6284, + 14142 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6351, + 14627 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5842, + 14088 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 7236, + 8480 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8762, + 5569 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8342, + 4460 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8478, + 5207 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9808, + 234 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9600, + 39 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9993, + 8181 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10169, + 8750 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9965, + 8845 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 8611, + 10107 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6604, + 2533 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-CytERM_T1L.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 20, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "annotations": [ + { + "name": "Infected", + "target": [ + 1350, + 1928 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1145, + 7357 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 250, + 7669 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3709, + 14083 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4149, + 11877 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3080, + 7303 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5511, + 4412 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5471, + 3945 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7073, + 3042 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7513, + 2262 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8357, + 1659 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8126, + 1253 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4681, + 7683 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4779, + 9267 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7387, + 13068 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7289, + 11965 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8152, + 11511 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6992, + 7440 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6026, + 6912 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9752, + 1380 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8963, + 3590 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9120, + 6192 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9475, + 6200 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13788, + 8513 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14111, + 8201 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 7553, + 7194 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 934, + 1224 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1840, + 2275 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2211, + 2452 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1695, + 8175 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2816, + 8396 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2635, + 11165 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2491, + 10668 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2819, + 13318 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6949, + 13077 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6994, + 12354 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9734, + 4554 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9767, + 3929 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11130, + 4602 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11236, + 3661 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11970, + 1020 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12180, + 1396 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11997, + 336 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11810, + 32 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12964, + 1561 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13687, + 1009 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13975, + 6365 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12975, + 7105 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11802, + 12147 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9010, + 12613 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6491, + 3327 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7842, + 2315 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7902, + 2015 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2209, + 8272 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6376, + 2190 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8928, + 4231 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10154, + 4385 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10882, + 7621 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13910, + 6783 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13935, + 268 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 5374, + 7265 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6992, + 14435 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 12.2:** Additional mCherry-ER reporters. +::::: + +:::{dropdown} Methods +Specimens were 35 mm glass-bottom dishes with 20 mm coverslips (no. 1.5 glass). +Reovirus μNS was detected with chicken α-μNS serum and AlexaFluor647 secondary antibodies. +Primary and secondary antibodies were each multiplexed and incubated overnight at 4°C in the dark. +A 15×15 grid of 225 fields was recorded. +::: \ No newline at end of file diff --git a/15_replicate_four.md b/15_replicate_four.md new file mode 100644 index 000000000..ac99a0d99 --- /dev/null +++ b/15_replicate_four.md @@ -0,0 +1,3660 @@ +--- +title: Experiment 4 +numbering: + enumerator: 13.%s +--- + +::::{figure} +:label: figure13 +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/replicate_4/badZDC.zarr", + "width": "500px", + "height": "500px", + "annotations": [ + { + "name": "Infected", + "target": [ + 1396, + 1594 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2048, + 4496 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2358, + 4955 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2737, + 5506 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2253, + 5783 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1238, + 6127 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 795, + 5239 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2200, + 8343 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2406, + 8601 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 405, + 11538 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 411, + 12553 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1421, + 13276 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1963, + 13694 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2357, + 13920 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1972, + 14059 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 365, + 15251 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 657, + 15347 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1107, + 15839 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1507, + 17375 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1514, + 20679 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1747, + 21841 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2927, + 21022 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2595, + 19634 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2718, + 19692 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3085, + 19074 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2772, + 18082 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3035, + 17484 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3800, + 17971 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5143, + 16140 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4194, + 15249 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2822, + 12767 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2597, + 12596 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2498, + 11502 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1965, + 11284 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3493, + 6486 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4133, + 5315 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4265, + 5118 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3623, + 3999 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4121, + 4082 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3578, + 3208 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 3982, + 3037 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 1691, + 3128 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6050, + 845 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5673, + 1305 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6076, + 2330 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6215, + 2542 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6826, + 5920 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6662, + 6248 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8430, + 5934 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8159, + 5573 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8989, + 7021 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8328, + 9921 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6251, + 12249 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5876, + 14192 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5671, + 15412 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6394, + 14806 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7260, + 17082 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6455, + 17358 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6721, + 18245 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6880, + 18541 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5632, + 19123 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4477, + 19721 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4401, + 19815 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4643, + 20713 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4530, + 20967 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5111, + 23171 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5233, + 23061 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6074, + 21577 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5843, + 20749 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6632, + 21040 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8036, + 20419 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7548, + 19640 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9427, + 19013 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9995, + 19691 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10348, + 17245 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9498, + 15392 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7464, + 14726 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8369, + 14104 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9086, + 12000 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7334, + 8555 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9007, + 8256 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 8278, + 7555 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7953, + 3449 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 7169, + 2490 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9043, + 300 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9461, + 73 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9547, + 343 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9537, + 676 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9046, + 1036 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9570, + 1247 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10240, + 3230 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10023, + 3227 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10993, + 13803 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10879, + 16876 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10909, + 18366 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11104, + 18990 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10734, + 19190 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12338, + 19206 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11066, + 21166 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10170, + 22400 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9955, + 22503 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 9624, + 22800 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12188, + 23558 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12439, + 23338 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13915, + 19799 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13607, + 20487 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13551, + 19009 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14843, + 17347 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13525, + 16550 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12521, + 15574 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14543, + 14946 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14011, + 14981 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14308, + 15432 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15103, + 13776 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15479, + 13758 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15414, + 11964 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15952, + 12142 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13632, + 9675 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12766, + 8869 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12338, + 9278 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11743, + 9869 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11446, + 9408 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11626, + 9318 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13224, + 6281 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12450, + 5813 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12245, + 5060 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 12553, + 1117 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11567, + 113 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14189, + 713 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 13428, + 1804 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14083, + 4874 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14169, + 5450 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14356, + 6475 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 14946, + 20466 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15959, + 21115 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17910, + 22584 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17494, + 22794 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17550, + 21543 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17682, + 20480 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17582, + 19967 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17204, + 18511 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17272, + 18902 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18181, + 11927 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17006, + 11247 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17929, + 5750 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17348, + 5283 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18044, + 4436 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19060, + 4387 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15799, + 1735 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15646, + 1500 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16828, + 1288 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16941, + 121 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17614, + 280 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 17792, + 65 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18206, + 193 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19187, + 3969 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19403, + 6723 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19501, + 8140 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19725, + 8278 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19554, + 12189 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19921, + 14053 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19708, + 14857 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 18926, + 18417 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19125, + 18417 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20191, + 20614 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19639, + 21424 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19575, + 21137 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22337, + 23473 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22546, + 23411 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22230, + 19197 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22536, + 18654 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21127, + 16617 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23539, + 12902 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23952, + 13445 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22229, + 11616 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22615, + 11421 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22454, + 8886 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 21080, + 8959 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20729, + 7979 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20805, + 4990 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20285, + 2631 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22311, + 297 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23174, + 775 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22761, + 596 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 22711, + 1597 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23582, + 1390 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23244, + 1855 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23011, + 5186 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23804, + 18998 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23620, + 19407 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 708, + 4287 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 926, + 3762 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 197, + 4941 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1492, + 4217 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 249, + 9336 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 524, + 9925 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 2488, + 10074 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 2763, + 12363 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 1912, + 13247 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1987, + 13381 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2233, + 14881 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 318, + 16984 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1824, + 17118 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1882, + 17533 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 769, + 19574 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 642, + 19749 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 205, + 19911 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 4496, + 18160 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 6156, + 16523 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4914, + 12192 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5366, + 10072 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 5395, + 9507 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 4580, + 9305 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 5662, + 7931 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6141, + 7843 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 4331, + 5825 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 6030, + 2649 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8411, + 7145 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 8840, + 6804 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 8810, + 10111 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 8392, + 8848 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10207, + 15980 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9596, + 16231 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 9735, + 16620 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10644, + 16254 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 9378, + 17939 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 9926, + 18400 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 10238, + 20305 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 10222, + 20678 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 10675, + 23865 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11294, + 23770 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 12602, + 18562 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12791, + 19415 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 13168, + 17886 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 12031, + 4953 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 15737, + 2041 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16138, + 1918 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 17264, + 1567 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19022, + 4091 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 19808, + 4904 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 20756, + 3612 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20472, + 3882 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 20429, + 4144 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 20701, + 6429 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 19913, + 7496 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20159, + 7869 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21231, + 7440 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21795, + 8119 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 20742, + 8515 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 19555, + 9972 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18866, + 10582 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16088, + 11703 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15822, + 13729 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16064, + 13701 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 15361, + 14042 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 16059, + 17861 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 17291, + 19642 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 20296, + 23693 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20320, + 24170 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20510, + 22212 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 19813, + 22344 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 21213, + 18268 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21304, + 17831 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18902, + 17251 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 19029, + 17035 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18183, + 14278 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 18297, + 12409 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 20873, + 10491 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21211, + 10724 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 17935, + 8824 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21028, + 5514 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 21508, + 6070 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 20261, + 5459 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 23352, + 4580 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 23525, + 2214 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 24211, + 716 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 22716, + 6778 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22982, + 7373 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 22931, + 10415 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 23171, + 10663 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 22612, + 16664 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22782, + 17542 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 22713, + 18401 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 23084, + 22115 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 24110, + 23610 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 11483, + 12520 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 11436, + 11865 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11730, + 17554 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 11801, + 17091 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 6760, + 22829 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 7286, + 22758 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 1040, + 21957 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 2717, + 11138 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 3561, + 2170 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Infected", + "target": [ + 3688, + 2858 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 4878, + 719 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 15768, + 5951 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 16067, + 5974 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19362, + 11020 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Infected", + "target": [ + 19492, + 11556 + ], + "color": [ + 235, + 87, + 87 + ] + }, + { + "name": "Uninfected", + "target": [ + 19272, + 9094 + ], + "color": [ + 99, + 179, + 237 + ] + }, + { + "name": "Uninfected", + "target": [ + 12851, + 8471 + ], + "color": [ + 99, + 179, + 237 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Duplicate sample of the transfected-infected cell model expressing mCherry-KDEL. +:::: + +:::{dropdown} Methods +HeLa cells were seeded on 35 mm glass-bottom dishes with 20 mm coverslips (no. 1.5 glass). +Reovirus μNS was detected with chicken α-μNS serum and AlexaFluor647 secondary antibodies. +Primary antibodies were multiplexed and incubated overnight at 4°C in the dark. +Secondary antibodies were multiplexed and incubated over two consecutive nights. +A 25×25 grid of 625 fields was recorded. +Z-drift compensation malfunctioned in Figure 14.1 but functioned correctly in Figure 7.1. +Overlapping edges were blended to reduce the appearance of stitching artifacts. +::: \ No newline at end of file diff --git a/16_antibody_reovirus.md b/16_antibody_reovirus.md new file mode 100644 index 000000000..d8e94c446 --- /dev/null +++ b/16_antibody_reovirus.md @@ -0,0 +1,658 @@ +--- +title: μNS Antibody +numbering: + enumerator: 14.%s +label : antibody_page +--- + +This experiment used AlexaFluor647 secondary antibodies paired with the chicken α-μNS antiserum, which was used in all replication attempts. +The other used AlexaFluor594 secondary antibodies with both the chicken and guinea pig α-μNS antisera, so that illumination settings were consistent between the two antisera. + +## Chicken polyclonal antiserum + +::::{figure} +:label: figure14a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_primary_secondary.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -4.294, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Immunofluorescence imaging of infected cells with chicken α-μNS antisera. +:::: + +:::::{figure} +:label: figure14b +::::{grid} 3 3 3 3 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_primary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "+ Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_secondary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_mock.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 14.2:** Immunofluorescence antibody controls. +::::: + +## Guinea pig polyclonal antiserum + +::::{figure} +:label: figure14c +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_primary_secondary.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "+ Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -4.294, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Immunofluorescence imaging of infected cells with guinea pig α-μNS antisera. +:::: + +:::::{figure} +:label: figure14d +::::{grid} 3 3 3 3 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_primary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "+ Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_secondary.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary + Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_mock.zarr", + "width": "210px", + "height": "210px", + "title": { + "text": "- Primary - Secondary", + "position": "bottom-left", + "margin": 12, + "fontSize": 12, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Hide ER", + "description": "Calreticulin channel off", + "zoom": -5.554, + "target": [ + 4886, + 4886, + 0 + ], + "appearance": { + "channelsVisible": [ + false, + true, + true + ], + "channelColors": [ + [ + 0, + 255, + 0 + ], + [ + 0, + 0, + 255 + ], + [ + 255, + 0, + 255 + ] + ], + "contrastLimits": [ + [ + 0, + 4095 + ], + [ + 0, + 4095 + ], + [ + 0, + 4095 + ] + ], + "blendMode": "single", + "colormap": "viridis" + }, + "default": true + } + ], + "scaleBar": { + "maxWidth": 50, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 14.4:** Immunofluorescence antibody controls. +::::: + +:::{tip} +Hidden by default, evaluate the calreticulin channel for reported reovirus-induced ER remodeling. +ER morphology can be compared within populations of infected cells. +::: + +:::{dropdown} Methods +HeLa cells were seeded on 12 mm diameter glass coverslips (1.0 glass) (1254580, Fisher) in 12-well plates (665180, Cellstar). +All samples were infected with reovirus T1L (MOI 100) for 24 hours. +AlexaFluor594 was used with the guinea pig α-μNS antiserum, while AlexaFluor647 was used with the chicken α-μNS antiserum. +Z-drift compensation malfunctioned, possibly due to the specimen, resulting in visible stitching artifacts. +Overlapping tiles were cropped rather than blended to preserve these artifacts as evidence of the autofocus failure. +::: diff --git a/17_saturated_maps.md b/17_saturated_maps.md new file mode 100644 index 000000000..7a0aa5d9a --- /dev/null +++ b/17_saturated_maps.md @@ -0,0 +1,298 @@ +--- +title: Saturated Maps +numbering: + enumerator: 15.%s +label : saturated_page +--- + +Illumination settings were set based on the mCherry-KDEL sample with TransIT-2020, resulting in pixel saturation in some samples. +Parker identified the saturated signal and advised repeating the experiment. +The original maps are preserved here (Figure 15.1). + +## Lipofectamine 3000 (left) and TransIT-2020 (right) + +:::::{figure} +:label: figure15 +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-KDEL.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-KDEL", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 7507, + 3372, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-KDEL.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-KDEL", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 5703, + 1706, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-CytERM.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 6561, + 5919, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-CytERM.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-CytERM", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 5346, + 5514, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-Sec61b.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Sec61β", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 5296, + 5118, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-Sec61b.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Sec61β", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 7222, + 3355, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-Climp63.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Climp63", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 4553, + 6248, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-Climp63.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "mCherry-Climp63", + "position": "bottom-left", + "margin": 12, + "fontSize": 22, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "views": [ + { + "name": "Zoom to ER remodeling", + "zoom": 0.074, + "target": [ + 6622, + 1307, + 0 + ] + } + ], + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 15.1:** Original transfection experiment showing the distributions of mCherry-ER reporters. +::::: + +:::{dropdown} Methods +HeLa cells were seeded on 12 mm diameter glass coverslips (1.0 glass) (1254580, Fisher) in 12-well plates (665180, Cellstar). +Lipofectamine 3000 (L3000015, Invitrogen) volumes were based on 12-well plates: 62.5 µl Opti-MEM (31985-062, Gibco) was mixed with 2.5 µl P3000 reagent and 1.25 µg DNA, and a separate tube of 62.5 µl Opti-MEM was mixed with 1.875 µl Lipofectamine 3000 reagent. +The tubes were combined, incubated for 20 minutes, then added dropwise to the samples. +TransIT-2020 reagent (MIR 5400, Mirus) volumes were based on 12-well plates: 125 µl Opti-MEM was mixed with 1.25 µg DNA and mixed gently, then 3.75 µl TransIT-2020 was added and mixed, followed by 20 minutes of incubation and dropwise addition to the samples. +::: \ No newline at end of file diff --git a/18_discarded_maps.md b/18_discarded_maps.md new file mode 100644 index 000000000..76989cde4 --- /dev/null +++ b/18_discarded_maps.md @@ -0,0 +1,150 @@ +--- +title: Discarded Maps +numbering: + enumerator: 16.%s +label : discarded_page +--- + +In this experiment, fixed specimens were refrigerated and select maps were reimaged to address technical issues such as air bubbles in the immersion oil or pixel saturation in the mCherry channel. +Some maps resampled the same location with different illumination settings, while others were new locations on the specimen. +Maps not used in the main figure are shown here. + +::::{figure} +:label: figure16a +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle_01.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-KDEL (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Pixel saturation in the mCherry channel. +:::: + +::::{figure} +:label: figure16b +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-KDEL (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Pixel saturation in the mCherry channel and an air bubble. +:::: + +::::{figure} +:label: figure16c +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_sec61_Cycle_01.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-Sec61β (Lipofectamine)", + "position": "top-center", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Pixel saturation in the mCherry channel. +:::: + +::::{figure} +:label: figure16d +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_cytER_Cycle_01.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-CytERM (Trans-IT 2020)", + "position": "top-center", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Air bubbles. +:::: + +::::{figure} +:label: figure16e +:::{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_sec61b_Cycle_04.zarr", + "width": "500px", + "height": "500px", + "title": { + "text": "mCherry-Sec61β (Trans-IT 2020)", + "position": "top-center", + "margin": 12, + "fontSize": 24, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +::: +Air bubble. +:::: diff --git a/19_archived_maps.md b/19_archived_maps.md new file mode 100644 index 000000000..e0160bad7 --- /dev/null +++ b/19_archived_maps.md @@ -0,0 +1,109 @@ +--- +title: Archived Maps +numbering: + enumerator: 17.%s +label : archival_page +--- + +We were interested in the finding that reovirus μNS colocalized with the ER [@doi:10.1128/mBio.01253-18], so we performed experiments with moxGFP::μNS and mCherry-ER reporters. +The results were unclear, so this research direction was abandoned. +Fortunately, overlapping tiles were recorded in an experiment dated _September 14 2022_. +This data was stitched and converted to OME-Zarr for reinterpretation as interactive microscopy maps (Figure 17.1). + +:::::{figure} +:label: figure17 +::::{grid} 2 2 2 2 +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/archival/FLclimp.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "moxGFP::μNS(1-721) + mCherry-Climp63", + "position": "top-center", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/archival/FLsec61b.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "moxGFP::μNS(1-721) + mCherry-Sec61β", + "position": "top-center", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/archival/MRclimp.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "moxGFP::μNS(472-721) + mCherry-Climp63", + "position": "top-center", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +```{any:bundle} https://LadInTheLab.github.io/microATLAS-widget/widget.js +{ + "source": "https://nyu1.osn.mghpcc.org/barkley-replication/archival/MRsec61b.zarr", + "width": "323px", + "height": "323px", + "title": { + "text": "moxGFP::μNS(472-721) + mCherry-Sec61β", + "position": "top-center", + "margin": 12, + "fontSize": 14, + "font": "Arial", + "color": "rgba(255,255,255,0.95)", + "style": "text" + }, + "scaleBar": { + "maxWidth": 100, + "position": "bottom-right", + "fontSize": 10, + "font": "Arial", + "color": "rgba(255,255,255,0.9)" + } +} +``` +:::: +**Figure 17.1:** Reinterpretation of archived μNS–ER colocalization data as interactive microscopy maps. \ No newline at end of file diff --git a/20_metadata.md b/20_metadata.md new file mode 100644 index 000000000..8fbad4ebf --- /dev/null +++ b/20_metadata.md @@ -0,0 +1,119 @@ +--- +title: Metadata Availability +numbering: + enumerator: 18.%s +label : metadata_page +--- + +## Instructions + +Each dataset is stored as an OME-Zarr on the Open Storage Network (https://doi.org/10.6075/J0RR1ZCR). +Acquisition metadata extracted from the Olympus .oir files using Bio-Formats is available as a JSON file within each Zarr store. +Click any link to view the acquisition parameters directly in your browser, or right-click and copy the link address to use the URL directly. + +### Plasmids +- Figure 3.1: [mCherry-KDEL, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle_02.zarr/metadata.json) +- Figure 3.1: [mCherry-KDEL, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_KDEL_Cycle_02.zarr/metadata.json) +- Figure 3.1: [mCherry-CytERM, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_cytER_Cycle.zarr/metadata.json) +- Figure 3.1: [mCherry-CytERM, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_cyter_Cycle_03.zarr/metadata.json) +- Figure 3.1: [mCherry-Sec61β, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_sec61_Cycle_02.zarr/metadata.json) +- Figure 3.1: [mCherry-Sec61β, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_sec_Cycle_01.zarr/metadata.json) +- Figure 3.1: [mCherry-Climp63, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_climp_Cycle.zarr/metadata.json) +- Figure 3.1: [mCherry-Climp63, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_climp_Cycle_01.zarr/metadata.json) + +### Virus +- Figure 4.1: [Reovirus T1L MOI 0](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi0.zarr/metadata.json) +- Figure 4.1: [Reovirus T1L MOI 1](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi1.zarr/metadata.json) +- Figure 4.1: [Reovirus T1L MOI 10](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi10.zarr/metadata.json) +- Figure 4.1: [Reovirus T1L MOI 100](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t1lmoi100.zarr/metadata.json) +- Figure 4.1: [Reovirus T3D MOI 0](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi0.zarr/metadata.json) +- Figure 4.1: [Reovirus T3D MOI 1](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi1.zarr/metadata.json) +- Figure 4.1: [Reovirus T3D MOI 10](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi10.zarr/metadata.json) +- Figure 4.1: [Reovirus T3D MOI 100](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_moi/t3dmoi100.zarr/metadata.json) + +### Calreticulin Antibody +- Figure 5.1: [+ Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/primary_secondary.zarr/metadata.json) +- Figure 5.2: [+ Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/primary.zarr/metadata.json) +- Figure 5.2: [- Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/secondary.zarr/metadata.json) +- Figure 5.2: [- Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/calreticulin_antibody/mock.zarr/metadata.json) + +### Reovirus μNS Antibody +- Figure 6.1: [Chicken Antiserum: + Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_primary_secondary_Cycle_02.zarr/metadata.json) +- Figure 6.2: [Chicken Antiserum: + Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_primary_Cycle_02.zarr/metadata.json) +- Figure 6.2: [Chicken Antiserum: - Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_secondary_Cycle.zarr/metadata.json) +- Figure 6.2: [Chicken Antiserum: - Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/chicken_noantibody_Cycle.zarr/metadata.json) +- Figure 6.3: [Guinea Pig Antiserum: + Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_primary_secondary_Cycle_01.zarr/metadata.json) +- Figure 6.4: [Guinea Pig Antiserum: + Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_primary_Cycle_02.zarr/metadata.json) +- Figure 6.4: [Guinea Pig Antiserum: - Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_secondary_Cycle.zarr/metadata.json) +- Figure 6.4: [Guinea Pig Antiserum: - Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/antibody_repeat/guineapig_noantibody_Cycle.zarr/metadata.json) + +### Results +- Figure 7.1: [Replication Experiment](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_4/goodZDC.zarr/metadata.json) + +### OSER Assay +- Figure 8.1: [Dendra2-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/dendra2.zarr/metadata.json) +- Figure 8.1: [FusionRed-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/fusionred.zarr/metadata.json) +- Figure 8.1: [mCherry-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/mcherry.zarr/metadata.json) +- Figure 8.1: [mEGFP-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/megfp.zarr/metadata.json) +- Figure 8.1: [mNeonGreen-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/mneongreen.zarr/metadata.json) +- Figure 8.1: [moxGFP-CytERM](https://nyu1.osn.mghpcc.org/barkley-replication/oser_assay/moxgfp.zarr/metadata.json) + +### Video +- Figure 9.1: [mNeonGreen::μNS + mCherry-KDEL](https://nyu1.osn.mghpcc.org/barkley-replication/video.zarr/metadata.json) + +### Replication Attempt 1 +- Figure 10.1: [Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/Transit.zarr/metadata.json) +- Figure 10.2: [Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/LF3000.zarr/metadata.json) +- Figure 10.3: [Untransfected](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_1/Untransfected.zarr/metadata.json) + +### Replication Attempt 2 +- Figure 11.1: [+ mCherry-KDEL + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-KDEL_T1L.zarr/metadata.json) +- Figure 11.2: [+ mCherry-KDEL - Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-KDEL.zarr/metadata.json) +- Data not shown: [- mCherry-KDEL + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/T1L.zarr/metadata.json) +- Data not shown: [- mCherry-KDEL - Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mock.zarr/metadata.json) +- Figure 11.2: [+ mCherry-Sec61β + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-Sec61b_T1L.zarr/metadata.json) +- Figure 11.2: [+ mCherry-CytERM + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-CytERM_T1L.zarr/metadata.json) +- Figure 11.2: [+ mCherry-Climp63 + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_2/mCh-Climp63_T1L.zarr/metadata.json) + +### Replication Attempt 3 +- Figure 12.1: [+ mCherry-KDEL + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-KDEL_T1L.zarr/metadata.json) +- Figure 12.2: [+ mCherry-CytERM + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-CytERM_T1L.zarr/metadata.json) +- Figure 12.2: [+ mCherry-Sec61β + Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mCh-Sec61b_T1L.zarr/metadata.json) +- Data not shown: [Reovirus](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/T1L.zarr/metadata.json) +- Data not shown: [Mock](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_3/mock.zarr/metadata.json) + +### Replication Attempt 4 +- Figure 13.1: [Replication Experiment](https://nyu1.osn.mghpcc.org/barkley-replication/replicate_4/badZDC.zarr/metadata.json) + +### μNS Antibody Repetition +- Figure 14.1: [Chicken Antiserum: + Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_primary_secondary.zarr/metadata.json) +- Figure 14.2: [Chicken Antiserum: + Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_primary.zarr/metadata.json) +- Figure 14.2: [Chicken Antiserum: - Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_secondary.zarr/metadata.json) +- Figure 14.2: [Chicken Antiserum: - Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/chix_mock.zarr/metadata.json) +- Figure 14.3: [Guinea Pig Antiserum: + Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_primary_secondary.zarr/metadata.json) +- Figure 14.4: [Guinea Pig Antiserum: + Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_primary.zarr/metadata.json) +- Figure 14.4: [Guinea Pig Antiserum: - Primary + Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_secondary.zarr/metadata.json) +- Figure 14.4: [Guinea Pig Antiserum: - Primary - Secondary](https://nyu1.osn.mghpcc.org/barkley-replication/reovirus_antibody/gp_mock.zarr/metadata.json) + +### Saturated Maps +- Figure 15.1: [mCherry-KDEL, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-KDEL.zarr/metadata.json) +- Figure 15.1: [mCherry-KDEL, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-KDEL.zarr/metadata.json) +- Figure 15.1: [mCherry-CytERM, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-CytERM.zarr/metadata.json) +- Figure 15.1: [mCherry-CytERM, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-CytERM.zarr/metadata.json) +- Figure 15.1: [mCherry-Sec61β, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-Sec61b.zarr/metadata.json) +- Figure 15.1: [mCherry-Sec61β, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-Sec61b.zarr/metadata.json) +- Figure 15.1: [mCherry-Climp63, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/LF3000_mCh-Climp63.zarr/metadata.json) +- Figure 15.1: [mCherry-Climp63, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/mCherry-ER_plasmids/Transit_mCh-Climp63.zarr/metadata.json) + +### Discarded Maps +- Figure 16.1: [mCherry-KDEL, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle_01.zarr/metadata.json) +- Figure 16.2: [mCherry-KDEL, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_kdel_Cycle.zarr/metadata.json) +- Figure 16.3: [mCherry-Sec61β, Lipofectamine 3000](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/lf3000_sec61_Cycle_01.zarr/metadata.json) +- Figure 16.4: [mCherry-CytERM, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_cytER_Cycle_01.zarr/metadata.json) +- Figure 16.5: [mCherry-Sec61β, Trans-IT 2020](https://nyu1.osn.mghpcc.org/barkley-replication/plasmid_repeat/transit_sec61b_Cycle_04.zarr/metadata.json) + +### Archived Maps +- Figure 17.1: [mCherry-Climp63 + moxGFP::μNS(1-721)](https://nyu1.osn.mghpcc.org/barkley-replication/archival/FLclimp.zarr/metadata.json) +- Figure 17.1: [mCherry-Climp63 + moxGFP::μNS(472-721)](https://nyu1.osn.mghpcc.org/barkley-replication/archival/MRclimp.zarr/metadata.json) +- Figure 17.1: [mCherry-Sec61β + moxGFP::μNS(1-721)](https://nyu1.osn.mghpcc.org/barkley-replication/archival/FLsec61b.zarr/metadata.json) +- Figure 17.1: [mCherry-Sec61β + moxGFP::μNS(472-721)](https://nyu1.osn.mghpcc.org/barkley-replication/archival/MRsec61b.zarr/metadata.json) diff --git a/Dockerfile b/Dockerfile index 848221d8d..cb8408a53 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,16 +4,28 @@ FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim # uv optimization env variables ENV UV_COMPILE_BYTECODE=1 ENV UV_SYSTEM_PYTHON=1 +ENV UV_LINK_MODE=copy -# install deps (system is safe, already isolated) -COPY ./requirements.in . -RUN uv pip install -r requirements.in +# some additional compilation libs +USER root +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential cmake zlib1g-dev liblz4-dev libblosc-dev pkg-config \ + && rm -rf /var/lib/apt/lists/* + +# Copy only dependency metadata +COPY requirements.txt . + +# Sync dependencies into system Python (no project install, no editable) +RUN uv pip install --no-cache-dir -r requirements.txt + +# Remove build-only packages +RUN apt-get purge -y --auto-remove build-essential cmake pkg-config # create user with a home directory for binder ARG NB_USER ARG NB_UID -ENV USER ${NB_USER} -ENV HOME /home/${NB_USER} +ENV USER=${NB_USER} +ENV HOME=/home/${NB_USER} RUN adduser --disabled-password \ --gecos "Default user" \ diff --git a/README.md b/README.md index e62addb9f..732e2a202 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,7 @@ -# Elemental Microscopy Quickstart +# Reimag(in)ing representative images -This repository contains minimal configuration files to get started for an `Elemental Microscopy` article. +Web-based microscopy maps as an unbiased method to replicate highly magnified representative microscopy images. -## People +![Visual abstract depicting virtual microscopy as a novel interface in scientific publications.](figures/summary.png) -This quickstart guide was developed by [Colin Ophus](mailto:cophus@gmail.com) and [Georgios Varnavides](mailto:gvarnavides@berkeley.edu). - -## Installation Instructions - -### Edit locally and push changes - -> [!WARNING] -> First, ask one of the organization members to give you `write` access to the forked repo. - -> [!WARNING] -> In what follows and the configuration files, you will see references to `change-to-repo-name`, which you should replace with the repo name. E.g. this article would be `em-quickstart`. - -Steps to edit locally: -- git clone repo (`git clone git@github.com:msa-em/change-to-repo-name.git`) -- switch to `dev` branch (`git checkout dev`) -- edit `environment.yml` to - - change the environment `name` to the repo name - - add your package dependencies, pinning versions as necessary -- create virtual environment (`conda env create -f environment.yml`) - - you might need to remove the environment if it already exists (`conda remove -n change-to-repo-name --all`) -- activate virtual environment in two terminal windows (`conda activate change-to-repo-name`) -- edit `myst.yml` file by: - - commenting these lines out - ```yml - jupyter: true - ``` - - uncommenting these lines - ```yml - # jupyter: - # server: - # url: 'http://localhost:8888' - # token: '512ac78f14e1141db1fac17e8b4099c1e5bc7d589518b38c' - ``` -- start the jupyter server in one of the terminal windows (`jupyter lab --IdentityProvider.token=512ac78f14e1141db1fac17e8b4099c1e5bc7d589518b38c --ServerApp.allow_origin='http://localhost:3000' --port=8888`) -- start MyST in the other terminal window (`myst start`) -- edit, commit, and push to `dev` as per usual - - make sure **NOT** to commit your `must.yml` changes! -- open a draft pull request into `main` (if one doesn't already exist) and keep pushing your changes to `dev` - - this will enable live previews and checks (see below) - - when you're ready, merge pull request into `main`. Note this need to be "final" -- it's best practice to merge thematic content changes together - -> [!NOTE] -> If you don't plan on editing the notebooks, you can skip the `myst.yml` and `jupyter lab` steps above - -## Preview draft deployed site -The repo has two github actions to automatically deploy computational sites, for the following two case: -- Commits to `main` directly -- Pull requests into `main` - -If you followed the instructions above (i.e. working off of `dev` and have an open pull request into `main`), then you should see a `github-actions` bot at the top of your pull request which will keep getting edited. -Simply click on the `Inspect` link to see the curvenote staging site, and press `preview` to see the deployed site based on your latest commit. diff --git a/data/mnist-ae/decoder_weights.h5 b/data/mnist-ae/decoder_weights.h5 deleted file mode 100644 index db80cd570..000000000 Binary files a/data/mnist-ae/decoder_weights.h5 and /dev/null differ diff --git a/data/mnist-ae/encoder_weights.h5 b/data/mnist-ae/encoder_weights.h5 deleted file mode 100644 index 2729d4a5b..000000000 Binary files a/data/mnist-ae/encoder_weights.h5 and /dev/null differ diff --git a/data/mnist-ae/training_log.csv b/data/mnist-ae/training_log.csv deleted file mode 100644 index fa007b55a..000000000 --- a/data/mnist-ae/training_log.csv +++ /dev/null @@ -1,101 +0,0 @@ -epoch,loss,mse,val_loss,val_mse -0,0.03136184439063072,0.03136172145605087,0.008536850102245808,0.008536849170923233 -1,0.006758300121873617,0.00675829267129302,0.005293272901326418,0.005293273366987705 -2,0.004831706173717976,0.004831705242395401,0.0041712005622684956,0.00417120149359107 -3,0.003951692022383213,0.003951692953705788,0.0035572422202676535,0.003557243850082159 -4,0.003419206477701664,0.003419205080717802,0.003185716224834323,0.0031857164576649666 -5,0.003056747606024146,0.0030567499343305826,0.0028700416442006826,0.0028700432740151882 -6,0.0027904545422643423,0.0027904536109417677,0.0026158010587096214,0.0026158022228628397 -7,0.0025909794494509697,0.002590980613604188,0.0024657032918184996,0.0024657039903104305 -8,0.002434109104797244,0.0024341100361198187,0.00235216342844069,0.0023521645925939083 -9,0.0023035339545458555,0.002303529530763626,0.0022412093821913004,0.002241208916530013 -10,0.002204104559496045,0.0022041043266654015,0.002170410007238388,0.0021704097744077444 -11,0.002118023345246911,0.0021180231124162674,0.002061598002910614,0.0020615977700799704 -12,0.0020472605247050524,0.002047258894890547,0.0019985937979072332,0.001998593332245946 -13,0.001985849579796195,0.0019858507439494133,0.00194886839017272,0.0019488682737573981 -14,0.0019332693191245198,0.001933267922140658,0.0019362358143553138,0.001936235697939992 -15,0.0018889314960688353,0.0018889288185164332,0.0018492862582206726,0.0018492862582206726 -16,0.0018483420135453343,0.0018483405001461506,0.0018452211515977979,0.001845221733674407 -17,0.001813321141526103,0.0018133203266188502,0.0018133390694856644,0.001813338603824377 -18,0.0017821380170062184,0.0017821387154981494,0.001783776911906898,0.0017837770283222198 -19,0.0017550972988829017,0.0017550978809595108,0.0017884064000099897,0.0017884060507640243 -20,0.001727808266878128,0.00172780966386199,0.0017381069483235478,0.001738106831908226 -21,0.0017068193992599845,0.0017068198649212718,0.0017074180068448186,0.001707417774014175 -22,0.0016855874564498663,0.001685588387772441,0.0017088119639083743,0.0017088110325857997 -23,0.0016655224608257413,0.001665524672716856,0.0016771513037383556,0.0016771516529843211 -24,0.0016496028983965516,0.001649606041610241,0.001656887005083263,0.001656886888667941 -25,0.001632409286685288,0.001632407889701426,0.0016474182484671474,0.0016474175499752164 -26,0.00161801278591156,0.0016180113889276981,0.001654639607295394,0.0016546400729566813 -27,0.0016038100002333522,0.0016038090689107776,0.0016287959879264235,0.00162879575509578 -28,0.0015914797550067306,0.0015914823161438107,0.0016174863558262587,0.0016174864722415805 -29,0.0015788325108587742,0.0015788329765200615,0.0015971316024661064,0.00159713183529675 -30,0.0015668148407712579,0.0015668153064325452,0.0015867974143475294,0.0015867975307628512 -31,0.0015569976530969143,0.001556996488943696,0.0015878957929089665,0.0015878960257396102 -32,0.0015460054855793715,0.0015460049035027623,0.0015766306314617395,0.0015766298165544868 -33,0.0015371839981526136,0.0015371856279671192,0.0015764454146847129,0.0015764456475153565 -34,0.0015290386509150267,0.0015290383016690612,0.0015508318319916725,0.0015508331125602126 -35,0.0015184037620201707,0.0015184053918346763,0.0015549322124570608,0.0015549315139651299 -36,0.001510340953245759,0.0015103417681530118,0.0015558800660073757,0.0015558807644993067 -37,0.0015031675575301051,0.0015031711664050817,0.0015476702246814966,0.0015476695261895657 -38,0.0014959799591451883,0.0014959784457460046,0.0015449823113158345,0.0015449825441464782 -39,0.001488633337430656,0.0014886343851685524,0.0015319979283958673,0.0015319965314120054 -40,0.0014830658910796046,0.0014830668224021792,0.0015337152872234583,0.0015337143559008837 -41,0.0014749293914064765,0.001474929740652442,0.001510079950094223,0.0015100802993401885 -42,0.0014689852250739932,0.0014689838280901313,0.001518653822131455,0.0015186532400548458 -43,0.0014631010126322508,0.0014631000813096762,0.001519701792858541,0.0015197020256891847 -44,0.001457161852158606,0.0014571619685739279,0.001515042269602418,0.0015150418039411306 -45,0.0014512318884953856,0.0014512321213260293,0.0014951168559491634,0.001495117205195129 -46,0.0014470895985141397,0.0014470899477601051,0.0014946162700653076,0.001494616735726595 -47,0.0014407008420675993,0.0014406995614990592,0.0014931571204215288,0.0014931586338207126 -48,0.0014368857955560088,0.001436886959709227,0.0014891534810885787,0.0014891540631651878 -49,0.0014319956535473466,0.0014319955371320248,0.0014970258343964815,0.0014970256015658379 -50,0.0014272971311584115,0.001427296781912446,0.00147980113979429,0.0014798010233789682 -51,0.0014225529739633203,0.0014225527411326766,0.001472316449508071,0.0014723165659233928 -52,0.0014176161494106054,0.0014176171971485019,0.0014668944058939815,0.0014668952208012342 -53,0.0014134305529296398,0.001413429738022387,0.0014830841682851315,0.001483083819039166 -54,0.001409456366673112,0.0014094582293182611,0.0014804708771407604,0.0014804700622335076 -55,0.001405804418027401,0.001405803021043539,0.0014666860224679112,0.0014666867209598422 -56,0.0014022613177075982,0.0014022618997842073,0.00146291044075042,0.0014629100915044546 -57,0.001398675492964685,0.001398674794472754,0.001450187060981989,0.0014501868281513453 -58,0.0013947635889053345,0.001394763239659369,0.0014624552568420768,0.0014624547911807895 -59,0.0013903493527323008,0.0013903487706556916,0.0014489844907075167,0.001448984956368804 -60,0.0013886081287637353,0.0013886101078242064,0.001471965224482119,0.0014719658065587282 -61,0.0013842640910297632,0.001384263508953154,0.0014431443996727467,0.0014431449817493558 -62,0.0013812846736982465,0.001381281646899879,0.0014339409535750747,0.0014339410699903965 -63,0.001377648557536304,0.001377648557536304,0.0014435503398999572,0.001443549757823348 -64,0.001375185209326446,0.0013751861406490207,0.001440411084331572,0.0014404108515009284 -65,0.001372007536701858,0.0013720090501010418,0.0014444991247728467,0.0014444993576034904 -66,0.0013692848151549697,0.0013692846987396479,0.0014372323639690876,0.0014372325967997313 -67,0.0013664931757375598,0.0013664911966770887,0.0014316244050860405,0.0014316245215013623 -68,0.0013633191119879484,0.001363319344818592,0.0014496278017759323,0.0014496278017759323 -69,0.00136099464725703,0.001360995345748961,0.001429779571481049,0.0014297793386504054 -70,0.001358470181003213,0.001358469482511282,0.001441875472664833,0.0014418751234188676 -71,0.001355212414637208,0.0013552120653912425,0.0014249581145122647,0.0014249577652662992 -72,0.0013532491866499186,0.0013532462762668729,0.001434893230907619,0.0014348933473229408 -73,0.001350841368548572,0.001350842765532434,0.0014284700155258179,0.0014284689677879214 -74,0.0013485043309628963,0.0013485027011483908,0.0014239216689020395,0.0014239216689020395 -75,0.001345606753602624,0.0013456090819090605,0.0014230910455808043,0.0014230906963348389 -76,0.0013440098846331239,0.0013440098846331239,0.0014129179762676358,0.0014129190240055323 -77,0.0013418789021670818,0.0013418797170743346,0.0014062839327380061,0.001406284631229937 -78,0.001339201582595706,0.001339202281087637,0.0014147170586511493,0.0014147164765745401 -79,0.0013368050567805767,0.0013368063373491168,0.001412313198670745,0.0014123120345175266 -80,0.0013355591800063848,0.0013355605769902468,0.001411913544870913,0.001411913544870913 -81,0.001333537045866251,0.00133353506680578,0.0014184550382196903,0.0014184549218043685 -82,0.0013313028030097485,0.001331302453763783,0.0014122901484370232,0.0014122896827757359 -83,0.0013298392295837402,0.0013298379490152001,0.0014068774180486798,0.0014068776508793235 -84,0.0013272403739392757,0.001327241538092494,0.0014055584324523807,0.0014055590145289898 -85,0.0013255461817607284,0.001325544435530901,0.0013993998290970922,0.001399399247020483 -86,0.001323768519796431,0.001323769218288362,0.0013961964286863804,0.0013961957301944494 -87,0.0013216654770076275,0.0013216652441769838,0.0014006105484440923,0.0014006112469360232 -88,0.0013200528919696808,0.0013200559187680483,0.0013991128653287888,0.0013991129817441106 -89,0.001318474067375064,0.001318476046435535,0.00140379776712507,0.0014037981163710356 -90,0.001316545531153679,0.0013165450654923916,0.0013847463997080922,0.0013847467489540577 -91,0.0013148111756891012,0.0013148096622899175,0.0013979343930259347,0.001397934160195291 -92,0.0013127644779160619,0.0013127661077305675,0.0013942141085863113,0.0013942139921709895 -93,0.0013113438617438078,0.001311344327405095,0.0013940315693616867,0.001394031336531043 -94,0.0013094197493046522,0.001309419283643365,0.0013969950377941132,0.001396994455717504 -95,0.0013083231169730425,0.0013083239318802953,0.0013899510959163308,0.0013899507466703653 -96,0.001306785037741065,0.0013067863183096051,0.0013896356103941798,0.0013896349119022489 -97,0.0013058225158602,0.0013058228651061654,0.001397395390085876,0.0013973957393318415 -98,0.0013040830381214619,0.0013040821067988873,0.0013906555250287056,0.0013906557578593493 -99,0.0013017028104513884,0.0013017035089433193,0.0013894420117139816,0.0013894425937905908 diff --git a/data/nucleus-ae/decoder_weights.h5 b/data/nucleus-ae/decoder_weights.h5 deleted file mode 100644 index c7d9c417f..000000000 Binary files a/data/nucleus-ae/decoder_weights.h5 and /dev/null differ diff --git a/data/nucleus-ae/encoder_weights.h5 b/data/nucleus-ae/encoder_weights.h5 deleted file mode 100644 index 8649b51df..000000000 Binary files a/data/nucleus-ae/encoder_weights.h5 and /dev/null differ diff --git a/data/nucleus-ae/latent_centers.npz b/data/nucleus-ae/latent_centers.npz deleted file mode 100644 index e57ddc2d1..000000000 Binary files a/data/nucleus-ae/latent_centers.npz and /dev/null differ diff --git a/data/nucleus-ae/results.csv b/data/nucleus-ae/results.csv deleted file mode 100644 index f299f123c..000000000 --- a/data/nucleus-ae/results.csv +++ /dev/null @@ -1,1601 +0,0 @@ -image,num_rois,mean_intensity,std_intensity -Run100BL_bottom_left.tif,914,63.3834,56.2255 -Run100BL_bottom_right.tif,1041,64.6608,55.9334 -Run100BL_top_left.tif,1141,66.6572,58.0109 -Run100BL_top_right.tif,1202,66.0841,57.4935 -Run100BR_bottom_left.tif,1163,63.7963,54.9399 -Run100BR_bottom_right.tif,1134,62.7465,54.8140 -Run100BR_top_left.tif,1162,65.4521,56.2609 -Run100BR_top_right.tif,1177,64.9112,56.3899 -Run100TL_bottom_left.tif,1090,67.0688,58.0420 -Run100TL_bottom_right.tif,868,66.5525,58.4079 -Run100TL_top_left.tif,1098,66.1824,57.8436 -Run100TL_top_right.tif,850,64.6686,59.0666 -Run100TR_bottom_left.tif,945,66.0554,57.4375 -Run100TR_bottom_right.tif,1060,66.2822,56.6895 -Run100TR_top_left.tif,984,66.1007,58.0823 -Run100TR_top_right.tif,1046,65.1858,57.8543 -Run101BL_bottom_left.tif,965,68.7450,60.4782 -Run101BL_bottom_right.tif,1037,70.6531,60.6191 -Run101BL_top_left.tif,962,67.6804,59.3406 -Run101BL_top_right.tif,1043,69.8106,59.5071 -Run101BR_bottom_left.tif,1113,72.2942,61.7655 -Run101BR_bottom_right.tif,1092,72.7193,62.8818 -Run101BR_top_left.tif,1031,69.2443,59.6489 -Run101BR_top_right.tif,1064,70.0948,61.1083 -Run101TL_bottom_left.tif,913,66.6249,58.1246 -Run101TL_bottom_right.tif,991,67.7965,58.4472 -Run101TL_top_left.tif,935,64.9036,56.2876 -Run101TL_top_right.tif,932,66.6416,57.8124 -Run101TR_bottom_left.tif,991,66.0131,58.0357 -Run101TR_bottom_right.tif,1126,69.2188,58.7121 -Run101TR_top_left.tif,959,66.5617,57.9881 -Run101TR_top_right.tif,1087,67.8587,58.7012 -Run102BL_bottom_left.tif,811,87.6645,77.2014 -Run102BL_bottom_right.tif,662,86.2915,75.7994 -Run102BL_top_left.tif,824,87.3121,77.9301 -Run102BL_top_right.tif,721,85.7098,77.3751 -Run102BR_bottom_left.tif,675,87.3178,77.0235 -Run102BR_bottom_right.tif,808,85.2749,75.8388 -Run102BR_top_left.tif,791,87.4080,77.3042 -Run102BR_top_right.tif,845,86.3529,77.3478 -Run102TL_bottom_left.tif,891,90.7109,81.1630 -Run102TL_bottom_right.tif,816,89.5704,80.9406 -Run102TL_top_left.tif,952,81.8578,77.4939 -Run102TL_top_right.tif,748,78.0411,76.6854 -Run102TR_bottom_left.tif,821,89.1030,80.7701 -Run102TR_bottom_right.tif,781,91.7454,81.7930 -Run102TR_top_left.tif,716,78.3264,77.5275 -Run102TR_top_right.tif,654,79.1631,77.3519 -Run103BL_bottom_left.tif,659,98.1862,83.8030 -Run103BL_bottom_right.tif,760,103.2213,83.7945 -Run103BL_top_left.tif,548,97.7069,83.9639 -Run103BL_top_right.tif,750,98.6441,82.2305 -Run103BR_bottom_left.tif,822,100.3269,83.9203 -Run103BR_bottom_right.tif,748,102.1149,85.4173 -Run103BR_top_left.tif,743,101.8041,83.5512 -Run103BR_top_right.tif,816,99.5259,81.9342 -Run103TL_bottom_left.tif,473,98.5130,83.5604 -Run103TL_bottom_right.tif,600,97.7866,82.5872 -Run103TL_top_left.tif,514,97.7528,84.5284 -Run103TL_top_right.tif,637,98.2646,83.4110 -Run103TR_bottom_left.tif,763,100.0407,83.2599 -Run103TR_bottom_right.tif,806,98.5554,83.1035 -Run103TR_top_left.tif,765,96.9764,81.5015 -Run103TR_top_right.tif,909,97.5076,81.2882 -Run10BL_bottom_left.tif,398,88.7232,73.1005 -Run10BL_bottom_right.tif,388,92.3580,75.9051 -Run10BL_top_left.tif,488,85.8423,71.3869 -Run10BL_top_right.tif,416,87.3506,71.3790 -Run10BR_bottom_left.tif,430,92.1684,74.9263 -Run10BR_bottom_right.tif,365,89.5316,75.3605 -Run10BR_top_left.tif,350,89.0088,73.3737 -Run10BR_top_right.tif,470,85.9518,71.9278 -Run10TL_bottom_left.tif,469,83.5534,70.7447 -Run10TL_bottom_right.tif,411,82.6570,68.8670 -Run10TL_top_left.tif,479,64.8228,60.2791 -Run10TL_top_right.tif,524,67.9560,61.3124 -Run10TR_bottom_left.tif,396,84.5231,69.9949 -Run10TR_bottom_right.tif,477,79.5550,68.2812 -Run10TR_top_left.tif,393,66.6511,60.1623 -Run10TR_top_right.tif,526,66.0141,60.4000 -Run11BL_bottom_left.tif,451,60.9699,54.0688 -Run11BL_bottom_right.tif,581,61.5254,53.4825 -Run11BL_top_left.tif,553,59.9891,52.2451 -Run11BL_top_right.tif,574,60.1584,53.0314 -Run11BR_bottom_left.tif,526,61.5348,53.9450 -Run11BR_bottom_right.tif,431,61.2607,53.8715 -Run11BR_top_left.tif,566,59.6395,51.9263 -Run11BR_top_right.tif,525,60.5220,53.3148 -Run11TL_bottom_left.tif,535,60.8976,52.1088 -Run11TL_bottom_right.tif,467,58.8105,52.7267 -Run11TL_top_left.tif,457,47.6164,47.4626 -Run11TL_top_right.tif,470,48.2759,46.9948 -Run11TR_bottom_left.tif,553,57.7471,52.3529 -Run11TR_bottom_right.tif,565,59.9003,53.3904 -Run11TR_top_left.tif,545,49.1599,48.6750 -Run11TR_top_right.tif,577,50.3404,47.8711 -Run12BL_bottom_left.tif,423,79.2680,64.1878 -Run12BL_bottom_right.tif,480,75.3794,63.6060 -Run12BL_top_left.tif,406,76.6535,63.3520 -Run12BL_top_right.tif,369,76.7238,62.3503 -Run12BR_bottom_left.tif,527,76.0828,63.0175 -Run12BR_bottom_right.tif,365,80.8609,64.7893 -Run12BR_top_left.tif,450,74.8114,62.1663 -Run12BR_top_right.tif,441,76.3753,62.0798 -Run12TL_bottom_left.tif,443,74.7837,61.3254 -Run12TL_bottom_right.tif,429,75.2510,64.0671 -Run12TL_top_left.tif,412,65.4068,58.7369 -Run12TL_top_right.tif,410,66.0047,59.0462 -Run12TR_bottom_left.tif,419,76.0751,62.6571 -Run12TR_bottom_right.tif,510,75.7242,61.9730 -Run12TR_top_left.tif,460,68.2333,61.5249 -Run12TR_top_right.tif,389,65.3537,59.9701 -Run15BL_bottom_left.tif,395,86.5446,70.0666 -Run15BL_bottom_right.tif,430,86.1056,69.7252 -Run15BL_top_left.tif,465,87.1526,69.5970 -Run15BL_top_right.tif,407,84.6664,67.6400 -Run15BR_bottom_left.tif,426,85.8231,69.6988 -Run15BR_bottom_right.tif,492,88.3726,70.0736 -Run15BR_top_left.tif,436,84.1363,67.4317 -Run15BR_top_right.tif,447,86.4484,68.6310 -Run15TL_bottom_left.tif,522,86.8764,69.8151 -Run15TL_bottom_right.tif,522,81.9617,66.5871 -Run15TL_top_left.tif,622,80.3243,65.7657 -Run15TL_top_right.tif,574,80.4922,67.2893 -Run15TR_bottom_left.tif,545,85.4466,67.3279 -Run15TR_bottom_right.tif,448,84.4380,68.7902 -Run15TR_top_left.tif,557,81.8980,66.6516 -Run15TR_top_right.tif,493,80.1754,65.5090 -Run16BL_bottom_left.tif,419,88.9085,68.4606 -Run16BL_bottom_right.tif,472,90.2566,69.1305 -Run16BL_top_left.tif,399,85.4502,66.6144 -Run16BL_top_right.tif,412,84.4939,67.0329 -Run16BR_bottom_left.tif,448,89.9269,69.5646 -Run16BR_bottom_right.tif,430,89.1195,68.0950 -Run16BR_top_left.tif,425,86.9052,67.8689 -Run16BR_top_right.tif,498,85.9555,65.9117 -Run16TL_bottom_left.tif,405,84.5734,67.4410 -Run16TL_bottom_right.tif,403,82.3396,65.8721 -Run16TL_top_left.tif,385,71.9796,62.0312 -Run16TL_top_right.tif,426,71.8998,63.1266 -Run16TR_bottom_left.tif,442,80.7520,64.9622 -Run16TR_bottom_right.tif,511,82.4705,65.8553 -Run16TR_top_left.tif,376,70.5373,62.2679 -Run16TR_top_right.tif,418,74.3801,64.3700 -Run17BL_bottom_left.tif,241,76.6332,64.1194 -Run17BL_bottom_right.tif,213,78.2919,64.4601 -Run17BL_top_left.tif,224,74.8442,61.2740 -Run17BL_top_right.tif,238,79.0718,63.5634 -Run17BR_bottom_left.tif,196,76.6911,63.8783 -Run17BR_bottom_right.tif,205,77.1048,64.5311 -Run17BR_top_left.tif,231,70.8100,59.0560 -Run17BR_top_right.tif,203,78.9447,65.2671 -Run17TL_bottom_left.tif,253,75.1262,62.4672 -Run17TL_bottom_right.tif,210,74.0462,63.4863 -Run17TL_top_left.tif,244,63.9217,60.5919 -Run17TL_top_right.tif,220,67.0845,62.7318 -Run17TR_bottom_left.tif,263,76.0643,63.9472 -Run17TR_bottom_right.tif,236,72.1862,60.8871 -Run17TR_top_left.tif,232,69.1091,61.0155 -Run17TR_top_right.tif,266,66.0832,58.5642 -Run18BL_bottom_left.tif,525,97.3509,76.4257 -Run18BL_bottom_right.tif,625,101.2854,79.4877 -Run18BL_top_left.tif,499,93.1396,73.5518 -Run18BL_top_right.tif,575,94.6333,75.2285 -Run18BR_bottom_left.tif,510,103.0585,80.6992 -Run18BR_bottom_right.tif,435,102.6725,81.1734 -Run18BR_top_left.tif,510,97.9725,77.2894 -Run18BR_top_right.tif,457,99.9619,77.2786 -Run18TL_bottom_left.tif,583,86.7478,71.6543 -Run18TL_bottom_right.tif,470,85.7533,71.1760 -Run18TL_top_left.tif,581,71.5843,64.2220 -Run18TL_top_right.tif,397,66.2605,62.1945 -Run18TR_bottom_left.tif,515,89.4888,72.5048 -Run18TR_bottom_right.tif,456,88.7365,73.2172 -Run18TR_top_left.tif,462,70.9964,64.1579 -Run18TR_top_right.tif,415,71.1088,63.6301 -Run19BL_bottom_left.tif,445,107.5875,85.6159 -Run19BL_bottom_right.tif,452,105.0063,84.6336 -Run19BL_top_left.tif,467,100.3302,80.6720 -Run19BL_top_right.tif,436,104.4845,82.1113 -Run19BR_bottom_left.tif,481,102.8636,83.7035 -Run19BR_bottom_right.tif,478,104.4966,83.2735 -Run19BR_top_left.tif,356,103.9416,82.9042 -Run19BR_top_right.tif,436,106.0634,83.8066 -Run19TL_bottom_left.tif,398,100.3486,82.8093 -Run19TL_bottom_right.tif,369,101.5631,82.4838 -Run19TL_top_left.tif,434,92.7704,80.1342 -Run19TL_top_right.tif,295,91.4886,77.9788 -Run19TR_bottom_left.tif,428,101.3016,82.5183 -Run19TR_bottom_right.tif,394,100.6528,82.2095 -Run19TR_top_left.tif,326,94.5250,80.0115 -Run19TR_top_right.tif,355,88.1517,77.0385 -Run1BL_bottom_left.tif,671,98.8593,71.5998 -Run1BL_bottom_right.tif,715,102.9625,72.7144 -Run1BL_top_left.tif,748,94.3118,69.7775 -Run1BL_top_right.tif,684,98.5330,70.8966 -Run1BR_bottom_left.tif,647,101.0957,73.6536 -Run1BR_bottom_right.tif,593,100.7623,73.3822 -Run1BR_top_left.tif,589,95.5406,70.8338 -Run1BR_top_right.tif,612,98.5023,70.7293 -Run1TL_bottom_left.tif,719,88.0747,67.5204 -Run1TL_bottom_right.tif,795,85.8200,66.1222 -Run1TL_top_left.tif,738,72.2756,60.5396 -Run1TL_top_right.tif,708,71.5453,60.8647 -Run1TR_bottom_left.tif,645,89.4075,68.0291 -Run1TR_bottom_right.tif,643,92.9688,69.6894 -Run1TR_top_left.tif,611,72.5069,62.1582 -Run1TR_top_right.tif,586,74.1242,63.6877 -Run20BL_bottom_left.tif,712,81.8695,67.7665 -Run20BL_bottom_right.tif,753,81.3600,68.4053 -Run20BL_top_left.tif,813,80.2247,68.2318 -Run20BL_top_right.tif,745,79.5474,67.0610 -Run20BR_bottom_left.tif,642,87.1421,68.5369 -Run20BR_bottom_right.tif,555,86.4015,70.2652 -Run20BR_top_left.tif,853,83.4147,67.4396 -Run20BR_top_right.tif,847,82.0802,68.8609 -Run20TL_bottom_left.tif,753,79.9346,65.0507 -Run20TL_bottom_right.tif,739,78.9963,66.2244 -Run20TL_top_left.tif,626,65.8027,59.3479 -Run20TL_top_right.tif,724,65.5713,57.9399 -Run20TR_bottom_left.tif,762,76.9926,64.9059 -Run20TR_bottom_right.tif,756,79.8208,66.9919 -Run20TR_top_left.tif,785,64.8831,57.9173 -Run20TR_top_right.tif,812,65.1383,57.5297 -Run21BL_bottom_left.tif,524,84.1421,69.1171 -Run21BL_bottom_right.tif,600,83.9515,69.3779 -Run21BL_top_left.tif,606,78.2162,66.3777 -Run21BL_top_right.tif,475,80.9442,66.9436 -Run21BR_bottom_left.tif,510,84.2539,69.3960 -Run21BR_bottom_right.tif,621,85.4874,70.8162 -Run21BR_top_left.tif,546,82.1371,69.0154 -Run21BR_top_right.tif,560,82.4293,67.4915 -Run21TL_bottom_left.tif,425,76.5383,64.5466 -Run21TL_bottom_right.tif,505,76.5279,64.4951 -Run21TL_top_left.tif,349,64.8134,60.5211 -Run21TL_top_right.tif,555,68.3511,60.6417 -Run21TR_bottom_left.tif,651,74.5570,64.2072 -Run21TR_bottom_right.tif,686,76.7143,64.8450 -Run21TR_top_left.tif,560,65.9319,59.8503 -Run21TR_top_right.tif,608,65.6517,61.2838 -Run22BL_bottom_left.tif,532,77.2415,64.7601 -Run22BL_bottom_right.tif,660,77.1331,65.2824 -Run22BL_top_left.tif,537,77.4395,64.1830 -Run22BL_top_right.tif,658,75.4782,65.1307 -Run22BR_bottom_left.tif,542,78.8253,65.8925 -Run22BR_bottom_right.tif,551,77.8810,64.9787 -Run22BR_top_left.tif,653,74.4285,63.2308 -Run22BR_top_right.tif,547,74.1521,62.7854 -Run22TL_bottom_left.tif,482,75.0142,63.3752 -Run22TL_bottom_right.tif,618,70.6051,60.4155 -Run22TL_top_left.tif,560,65.8300,63.0049 -Run22TL_top_right.tif,585,67.8229,60.3216 -Run22TR_bottom_left.tif,702,71.3673,62.1304 -Run22TR_bottom_right.tif,537,70.9649,61.8353 -Run22TR_top_left.tif,614,65.4598,59.4307 -Run22TR_top_right.tif,659,65.6194,59.8618 -Run23BL_bottom_left.tif,625,62.8669,56.2117 -Run23BL_bottom_right.tif,558,62.3051,55.5039 -Run23BL_top_left.tif,643,65.4341,57.0979 -Run23BL_top_right.tif,636,64.2960,56.9625 -Run23BR_bottom_left.tif,731,64.4043,56.4163 -Run23BR_bottom_right.tif,766,63.0536,55.3862 -Run23BR_top_left.tif,635,66.8493,57.4402 -Run23BR_top_right.tif,698,64.8855,56.2750 -Run23TL_bottom_left.tif,638,72.0139,60.2474 -Run23TL_bottom_right.tif,616,68.6051,59.6054 -Run23TL_top_left.tif,648,64.7385,57.4831 -Run23TL_top_right.tif,665,65.0422,57.5657 -Run23TR_bottom_left.tif,544,68.3002,59.5346 -Run23TR_bottom_right.tif,624,68.6992,59.9199 -Run23TR_top_left.tif,534,65.2594,57.2092 -Run23TR_top_right.tif,442,64.9831,55.7179 -Run24BL_bottom_left.tif,597,84.5883,71.0254 -Run24BL_bottom_right.tif,547,84.5159,70.9252 -Run24BL_top_left.tif,549,81.9610,68.7123 -Run24BL_top_right.tif,580,80.9182,68.2014 -Run24BR_bottom_left.tif,546,85.4574,72.0106 -Run24BR_bottom_right.tif,477,84.1544,71.6286 -Run24BR_top_left.tif,562,85.1672,71.4268 -Run24BR_top_right.tif,655,83.6928,70.1435 -Run24TL_bottom_left.tif,613,76.6680,67.4657 -Run24TL_bottom_right.tif,526,74.3842,64.8575 -Run24TL_top_left.tif,634,70.1566,63.2696 -Run24TL_top_right.tif,652,65.4281,59.6936 -Run24TR_bottom_left.tif,477,78.8485,67.0558 -Run24TR_bottom_right.tif,567,76.5080,66.3406 -Run24TR_top_left.tif,508,69.0312,62.9532 -Run24TR_top_right.tif,419,69.2169,63.6773 -Run25BL_bottom_left.tif,863,77.3428,63.3108 -Run25BL_bottom_right.tif,715,76.9881,63.9399 -Run25BL_top_left.tif,769,74.0913,60.4935 -Run25BL_top_right.tif,622,72.1847,60.0222 -Run25BR_bottom_left.tif,681,77.9466,64.5652 -Run25BR_bottom_right.tif,777,82.4845,65.7347 -Run25BR_top_left.tif,747,73.9848,62.0921 -Run25BR_top_right.tif,698,77.4992,64.4563 -Run25TL_bottom_left.tif,804,69.1151,57.8290 -Run25TL_bottom_right.tif,596,69.7231,58.7693 -Run25TL_top_left.tif,787,58.4580,54.0022 -Run25TL_top_right.tif,642,61.8927,56.4017 -Run25TR_bottom_left.tif,576,68.6913,59.3842 -Run25TR_bottom_right.tif,568,70.3768,60.7344 -Run25TR_top_left.tif,693,59.3848,54.3284 -Run25TR_top_right.tif,720,59.4459,54.8867 -Run26BL_bottom_left.tif,567,93.1543,74.9476 -Run26BL_bottom_right.tif,672,94.8579,76.3837 -Run26BL_top_left.tif,603,94.3839,75.7661 -Run26BL_top_right.tif,589,95.2976,75.9435 -Run26BR_bottom_left.tif,541,96.1003,75.8543 -Run26BR_bottom_right.tif,695,95.1699,75.2063 -Run26BR_top_left.tif,745,93.9686,75.6281 -Run26BR_top_right.tif,574,96.6239,76.2098 -Run26TL_bottom_left.tif,591,93.2104,75.1911 -Run26TL_bottom_right.tif,624,90.8041,73.7461 -Run26TL_top_left.tif,705,87.5422,71.6498 -Run26TL_top_right.tif,548,87.2585,72.3242 -Run26TR_bottom_left.tif,615,89.3278,73.1381 -Run26TR_bottom_right.tif,636,89.6553,73.0048 -Run26TR_top_left.tif,613,88.4011,72.5028 -Run26TR_top_right.tif,593,84.5643,69.9367 -Run27BL_bottom_left.tif,480,90.3188,73.5553 -Run27BL_bottom_right.tif,519,87.9018,73.6091 -Run27BL_top_left.tif,474,89.0377,72.2415 -Run27BL_top_right.tif,451,85.6675,70.9758 -Run27BR_bottom_left.tif,545,87.4864,72.9612 -Run27BR_bottom_right.tif,538,89.0127,73.7034 -Run27BR_top_left.tif,337,83.8566,69.3898 -Run27BR_top_right.tif,486,87.1234,72.7608 -Run27TL_bottom_left.tif,544,85.5019,71.3186 -Run27TL_bottom_right.tif,428,85.2584,71.0793 -Run27TL_top_left.tif,603,75.4559,65.8215 -Run27TL_top_right.tif,429,76.6616,64.9913 -Run27TR_bottom_left.tif,445,83.7815,69.0591 -Run27TR_bottom_right.tif,466,83.4347,70.1449 -Run27TR_top_left.tif,468,74.1316,65.4655 -Run27TR_top_right.tif,359,78.5032,66.1635 -Run28BL_bottom_left.tif,354,105.1599,83.1326 -Run28BL_bottom_right.tif,518,107.0781,83.1844 -Run28BL_top_left.tif,471,104.2548,82.8464 -Run28BL_top_right.tif,439,99.9980,81.0999 -Run28BR_bottom_left.tif,439,102.7078,81.4278 -Run28BR_bottom_right.tif,452,104.7080,83.7070 -Run28BR_top_left.tif,436,98.9250,81.4822 -Run28BR_top_right.tif,447,99.2278,81.1177 -Run28TL_bottom_left.tif,385,99.6714,79.6729 -Run28TL_bottom_right.tif,403,98.6749,78.9661 -Run28TL_top_left.tif,409,90.9455,76.3341 -Run28TL_top_right.tif,393,89.0649,76.1006 -Run28TR_bottom_left.tif,325,95.6304,78.3555 -Run28TR_bottom_right.tif,558,94.9188,78.1202 -Run28TR_top_left.tif,464,87.9072,74.8777 -Run28TR_top_right.tif,489,87.6184,74.5989 -Run29BL_bottom_left.tif,371,107.5623,83.9507 -Run29BL_bottom_right.tif,286,106.7463,84.4042 -Run29BL_top_left.tif,447,104.7673,82.6312 -Run29BL_top_right.tif,355,103.3865,83.0288 -Run29BR_bottom_left.tif,235,107.5304,84.1704 -Run29BR_bottom_right.tif,370,108.6928,85.1444 -Run29BR_top_left.tif,345,103.9326,82.1568 -Run29BR_top_right.tif,403,106.7316,84.2417 -Run29TL_bottom_left.tif,433,104.9444,82.4926 -Run29TL_bottom_right.tif,341,102.0585,81.6626 -Run29TL_top_left.tif,399,94.7478,79.6360 -Run29TL_top_right.tif,365,96.0605,78.0782 -Run29TR_bottom_left.tif,396,103.3216,82.1242 -Run29TR_bottom_right.tif,367,100.6612,80.9472 -Run29TR_top_left.tif,366,94.1402,78.4398 -Run29TR_top_right.tif,422,94.4556,77.8145 -Run2BL_bottom_left.tif,464,124.5470,88.6007 -Run2BL_bottom_right.tif,634,121.0157,87.1647 -Run2BL_top_left.tif,432,121.4891,88.2378 -Run2BL_top_right.tif,543,120.0650,87.2077 -Run2BR_bottom_left.tif,583,119.8364,87.3413 -Run2BR_bottom_right.tif,560,122.9354,88.0877 -Run2BR_top_left.tif,645,118.3779,85.8108 -Run2BR_top_right.tif,630,120.2955,86.7891 -Run2TL_bottom_left.tif,478,118.5002,85.9130 -Run2TL_bottom_right.tif,627,115.9124,85.0114 -Run2TL_top_left.tif,470,104.9469,82.4461 -Run2TL_top_right.tif,569,100.5380,79.9441 -Run2TR_bottom_left.tif,724,113.6838,84.3180 -Run2TR_bottom_right.tif,599,111.7601,83.8589 -Run2TR_top_left.tif,608,102.1520,81.2190 -Run2TR_top_right.tif,632,100.6375,79.3148 -Run30BL_bottom_left.tif,623,104.1775,78.7406 -Run30BL_bottom_right.tif,655,105.1890,79.4737 -Run30BL_top_left.tif,748,99.1768,77.8805 -Run30BL_top_right.tif,575,102.0128,78.3705 -Run30BR_bottom_left.tif,758,102.0906,79.7587 -Run30BR_bottom_right.tif,692,103.9923,79.6416 -Run30BR_top_left.tif,765,97.4591,76.4775 -Run30BR_top_right.tif,823,98.2340,77.6967 -Run30TL_bottom_left.tif,938,93.3668,73.9837 -Run30TL_bottom_right.tif,791,97.9086,76.4380 -Run30TL_top_left.tif,883,83.5665,71.6966 -Run30TL_top_right.tif,780,85.8479,72.1749 -Run30TR_bottom_left.tif,766,99.2257,77.4513 -Run30TR_bottom_right.tif,882,93.2707,75.1192 -Run30TR_top_left.tif,699,88.1560,73.0869 -Run30TR_top_right.tif,768,87.1692,72.7475 -Run31BL_bottom_left.tif,445,51.0130,42.9901 -Run31BL_bottom_right.tif,482,50.9986,41.9645 -Run31BL_top_left.tif,569,47.2897,39.7812 -Run31BL_top_right.tif,521,47.2837,40.0064 -Run31BR_bottom_left.tif,533,50.4436,42.1179 -Run31BR_bottom_right.tif,429,50.4403,41.8772 -Run31BR_top_left.tif,528,48.0421,40.1696 -Run31BR_top_right.tif,500,49.2459,41.6915 -Run31TL_bottom_left.tif,515,42.5735,37.4909 -Run31TL_bottom_right.tif,470,43.6592,38.8571 -Run31TL_top_left.tif,476,35.6945,34.9107 -Run31TL_top_right.tif,520,34.0000,34.1432 -Run31TR_bottom_left.tif,402,43.1169,37.5684 -Run31TR_bottom_right.tif,418,45.3146,38.5952 -Run31TR_top_left.tif,311,38.6972,35.7803 -Run31TR_top_right.tif,332,37.7187,34.6557 -Run32BL_bottom_left.tif,512,90.2354,70.5068 -Run32BL_bottom_right.tif,475,89.0207,69.8135 -Run32BL_top_left.tif,544,87.9543,69.7194 -Run32BL_top_right.tif,588,90.7022,70.2146 -Run32BR_bottom_left.tif,610,89.1392,69.0476 -Run32BR_bottom_right.tif,562,91.6583,70.3559 -Run32BR_top_left.tif,584,88.5232,69.2925 -Run32BR_top_right.tif,606,86.1378,68.0768 -Run32TL_bottom_left.tif,547,85.0346,66.6276 -Run32TL_bottom_right.tif,500,84.7009,67.0486 -Run32TL_top_left.tif,558,73.0585,61.9362 -Run32TL_top_right.tif,423,74.3725,62.1433 -Run32TR_bottom_left.tif,566,79.6856,63.9674 -Run32TR_bottom_right.tif,489,82.8255,65.5649 -Run32TR_top_left.tif,509,73.9333,61.6206 -Run32TR_top_right.tif,681,72.4538,62.3822 -Run33BL_bottom_left.tif,804,58.4290,47.8472 -Run33BL_bottom_right.tif,727,59.7411,48.5454 -Run33BL_top_left.tif,775,53.7398,44.1462 -Run33BL_top_right.tif,861,55.8380,45.8371 -Run33BR_bottom_left.tif,823,61.2705,49.4887 -Run33BR_bottom_right.tif,820,60.4659,49.8515 -Run33BR_top_left.tif,818,56.8780,46.5634 -Run33BR_top_right.tif,779,57.0331,47.8072 -Run33TL_bottom_left.tif,712,55.7988,46.7170 -Run33TL_bottom_right.tif,679,57.9668,48.5596 -Run33TL_top_left.tif,582,54.8265,48.0857 -Run33TL_top_right.tif,554,53.5628,48.0659 -Run33TR_bottom_left.tif,737,56.3069,47.6474 -Run33TR_bottom_right.tif,789,55.0699,46.5358 -Run33TR_top_left.tif,663,53.4777,47.6175 -Run33TR_top_right.tif,586,52.2871,47.1541 -Run34BL_bottom_left.tif,448,88.3313,73.9120 -Run34BL_bottom_right.tif,425,88.7557,74.0832 -Run34BL_top_left.tif,460,87.5665,73.2056 -Run34BL_top_right.tif,610,87.5926,71.9074 -Run34BR_bottom_left.tif,490,89.1905,74.6909 -Run34BR_bottom_right.tif,482,90.8292,73.9481 -Run34BR_top_left.tif,572,86.9174,73.0296 -Run34BR_top_right.tif,424,88.3431,73.5102 -Run34TL_bottom_left.tif,492,82.3925,69.9235 -Run34TL_bottom_right.tif,489,85.8982,70.6747 -Run34TL_top_left.tif,554,74.1035,65.8329 -Run34TL_top_right.tif,422,75.1576,65.4394 -Run34TR_bottom_left.tif,392,84.1163,71.4001 -Run34TR_bottom_right.tif,566,84.5200,71.4639 -Run34TR_top_left.tif,395,71.8891,65.3127 -Run34TR_top_right.tif,606,69.7871,62.8070 -Run35BL_bottom_left.tif,395,42.3749,38.0414 -Run35BL_bottom_right.tif,345,42.6777,37.0982 -Run35BL_top_left.tif,376,40.7188,37.2013 -Run35BL_top_right.tif,303,40.6119,37.8243 -Run35BR_bottom_left.tif,332,43.8375,38.2364 -Run35BR_bottom_right.tif,332,43.8595,38.7719 -Run35BR_top_left.tif,214,44.3885,38.6578 -Run35BR_top_right.tif,380,43.0831,37.4391 -Run35TL_bottom_left.tif,447,37.2948,35.3231 -Run35TL_bottom_right.tif,318,37.8815,36.0287 -Run35TL_top_left.tif,297,31.7165,32.9872 -Run35TL_top_right.tif,398,30.8551,32.5248 -Run35TR_bottom_left.tif,258,39.7764,36.8443 -Run35TR_bottom_right.tif,345,39.8422,36.8139 -Run35TR_top_left.tif,519,32.0269,33.4140 -Run35TR_top_right.tif,424,33.5130,34.4633 -Run36BL_bottom_left.tif,918,51.1269,44.3942 -Run36BL_bottom_right.tif,939,49.2805,43.2656 -Run36BL_top_left.tif,947,50.0594,44.2368 -Run36BL_top_right.tif,972,48.9935,43.5303 -Run36BR_bottom_left.tif,1001,46.7510,41.1906 -Run36BR_bottom_right.tif,1062,47.0399,40.9706 -Run36BR_top_left.tif,958,48.2664,42.8140 -Run36BR_top_right.tif,978,47.7701,42.5698 -Run36TL_bottom_left.tif,881,54.4998,48.0597 -Run36TL_bottom_right.tif,876,54.1080,48.1634 -Run36TL_top_left.tif,869,44.6967,43.1946 -Run36TL_top_right.tif,919,41.0496,41.6988 -Run36TR_bottom_left.tif,1017,49.9883,45.3708 -Run36TR_bottom_right.tif,986,47.6744,43.8196 -Run36TR_top_left.tif,971,39.4164,39.9335 -Run36TR_top_right.tif,1024,37.3640,38.6429 -Run37BL_bottom_left.tif,229,114.9773,90.6494 -Run37BL_bottom_right.tif,364,120.0788,90.6084 -Run37BL_top_left.tif,377,115.1003,88.9511 -Run37BL_top_right.tif,294,118.1236,89.5527 -Run37BR_bottom_left.tif,229,114.6017,88.3375 -Run37BR_bottom_right.tif,195,115.0942,89.3859 -Run37BR_top_left.tif,290,113.3996,88.4382 -Run37BR_top_right.tif,254,117.0135,89.8646 -Run37TL_bottom_left.tif,292,112.3941,87.1907 -Run37TL_bottom_right.tif,275,112.5282,87.4295 -Run37TL_top_left.tif,267,104.2435,84.4311 -Run37TL_top_right.tif,212,105.3802,86.2759 -Run37TR_bottom_left.tif,259,111.4261,86.7014 -Run37TR_bottom_right.tif,256,111.6856,87.3436 -Run37TR_top_left.tif,260,108.1084,85.6356 -Run37TR_top_right.tif,252,104.7293,84.3356 -Run38BL_bottom_left.tif,974,58.8943,49.5312 -Run38BL_bottom_right.tif,843,58.1591,49.4830 -Run38BL_top_left.tif,865,55.4572,47.7641 -Run38BL_top_right.tif,746,55.5187,47.5388 -Run38BR_bottom_left.tif,711,59.2637,50.3547 -Run38BR_bottom_right.tif,749,58.7527,49.8899 -Run38BR_top_left.tif,712,55.2230,47.9797 -Run38BR_top_right.tif,796,53.8050,46.5552 -Run38TL_bottom_left.tif,949,52.3129,46.2143 -Run38TL_bottom_right.tif,589,55.7541,49.5039 -Run38TL_top_left.tif,1112,40.5141,39.0915 -Run38TL_top_right.tif,875,46.4163,43.2205 -Run38TR_bottom_left.tif,666,55.2973,48.0287 -Run38TR_bottom_right.tif,860,51.3391,43.8626 -Run38TR_top_left.tif,924,45.7734,42.4449 -Run38TR_top_right.tif,973,41.9297,39.0434 -Run39BL_bottom_left.tif,732,35.2837,31.9427 -Run39BL_bottom_right.tif,635,34.8800,31.4904 -Run39BL_top_left.tif,752,33.1051,30.8853 -Run39BL_top_right.tif,639,33.6826,31.3244 -Run39BR_bottom_left.tif,863,33.3641,29.9750 -Run39BR_bottom_right.tif,908,32.3365,29.5621 -Run39BR_top_left.tif,857,31.2108,28.8642 -Run39BR_top_right.tif,800,31.9116,29.4103 -Run39TL_bottom_left.tif,916,28.9964,28.1841 -Run39TL_bottom_right.tif,850,30.3669,29.3288 -Run39TL_top_left.tif,688,26.0497,27.4431 -Run39TL_top_right.tif,772,25.1877,27.0236 -Run39TR_bottom_left.tif,777,30.1430,29.7188 -Run39TR_bottom_right.tif,861,29.2126,28.6106 -Run39TR_top_left.tif,720,24.9875,26.7767 -Run39TR_top_right.tif,649,26.3646,27.7459 -Run3BL_bottom_left.tif,453,85.2855,65.8832 -Run3BL_bottom_right.tif,473,85.2358,64.6642 -Run3BL_top_left.tif,486,78.5040,61.5921 -Run3BL_top_right.tif,484,78.6340,60.9206 -Run3BR_bottom_left.tif,435,83.0813,64.2410 -Run3BR_bottom_right.tif,488,80.9468,63.2765 -Run3BR_top_left.tif,478,77.0749,60.6990 -Run3BR_top_right.tif,433,76.8851,60.2285 -Run3TL_bottom_left.tif,525,71.9615,57.5445 -Run3TL_bottom_right.tif,539,73.0360,57.1804 -Run3TL_top_left.tif,475,62.5884,53.2520 -Run3TL_top_right.tif,506,64.4700,53.6984 -Run3TR_bottom_left.tif,493,70.3379,56.0330 -Run3TR_bottom_right.tif,502,69.8594,56.2560 -Run3TR_top_left.tif,506,64.6869,52.5308 -Run3TR_top_right.tif,431,63.0188,52.8563 -Run40BL_bottom_left.tif,703,85.3137,68.3058 -Run40BL_bottom_right.tif,557,86.3237,68.8535 -Run40BL_top_left.tif,555,83.7385,66.8765 -Run40BL_top_right.tif,542,89.1273,69.3555 -Run40BR_bottom_left.tif,630,85.2787,68.4357 -Run40BR_bottom_right.tif,797,85.7767,67.2597 -Run40BR_top_left.tif,532,82.6968,68.6187 -Run40BR_top_right.tif,666,87.1285,71.8130 -Run40TL_bottom_left.tif,639,86.7587,69.1376 -Run40TL_bottom_right.tif,384,85.8784,67.4073 -Run40TL_top_left.tif,804,72.1822,63.7363 -Run40TL_top_right.tif,633,67.6302,61.1146 -Run40TR_bottom_left.tif,569,80.8443,69.2705 -Run40TR_bottom_right.tif,778,87.6285,69.2525 -Run40TR_top_left.tif,742,67.5688,60.4893 -Run40TR_top_right.tif,612,71.3036,62.6474 -Run41BL_bottom_left.tif,886,86.6239,71.0392 -Run41BL_bottom_right.tif,874,87.3730,70.5815 -Run41BL_top_left.tif,1038,80.3344,65.8805 -Run41BL_top_right.tif,932,80.9278,66.5355 -Run41BR_bottom_left.tif,896,87.6354,71.3088 -Run41BR_bottom_right.tif,835,90.1032,72.3525 -Run41BR_top_left.tif,908,80.7337,66.5672 -Run41BR_top_right.tif,885,84.9931,69.3425 -Run41TL_bottom_left.tif,1019,73.7879,62.7621 -Run41TL_bottom_right.tif,995,74.9105,64.0916 -Run41TL_top_left.tif,894,65.1809,59.5828 -Run41TL_top_right.tif,828,66.8360,60.3139 -Run41TR_bottom_left.tif,863,75.2041,65.3059 -Run41TR_bottom_right.tif,887,77.7303,66.0214 -Run41TR_top_left.tif,817,66.9578,62.0820 -Run41TR_top_right.tif,927,64.6620,59.4951 -Run42BL_bottom_left.tif,1072,36.4125,33.1437 -Run42BL_bottom_right.tif,800,36.8430,33.2086 -Run42BL_top_left.tif,865,36.1524,33.1687 -Run42BL_top_right.tif,809,34.4390,32.2036 -Run42BR_bottom_left.tif,699,36.6268,33.8276 -Run42BR_bottom_right.tif,603,36.3404,33.0396 -Run42BR_top_left.tif,817,36.8812,33.4743 -Run42BR_top_right.tif,1013,35.6977,33.4581 -Run42TL_bottom_left.tif,731,34.5939,32.4721 -Run42TL_bottom_right.tif,944,33.1199,31.3685 -Run42TL_top_left.tif,758,31.4561,30.6336 -Run42TL_top_right.tif,825,31.5715,31.2023 -Run42TR_bottom_left.tif,931,33.4437,31.4829 -Run42TR_bottom_right.tif,964,32.2018,30.7828 -Run42TR_top_left.tif,834,31.4010,30.5275 -Run42TR_top_right.tif,914,31.8489,30.1488 -Run43BL_bottom_left.tif,884,69.6701,58.4429 -Run43BL_bottom_right.tif,834,73.9593,61.3173 -Run43BL_top_left.tif,933,68.6162,58.9166 -Run43BL_top_right.tif,985,67.9737,57.1729 -Run43BR_bottom_left.tif,825,73.6985,62.8521 -Run43BR_bottom_right.tif,766,73.2057,61.9359 -Run43BR_top_left.tif,813,70.6149,59.7049 -Run43BR_top_right.tif,688,73.4743,62.0866 -Run43TL_bottom_left.tif,851,61.2167,55.2726 -Run43TL_bottom_right.tif,714,64.4454,57.3323 -Run43TL_top_left.tif,810,52.9732,50.1884 -Run43TL_top_right.tif,744,51.8571,49.8849 -Run43TR_bottom_left.tif,477,63.3969,55.0669 -Run43TR_bottom_right.tif,427,65.2149,57.8845 -Run43TR_top_left.tif,585,53.1796,52.6477 -Run43TR_top_right.tif,610,55.9668,54.1339 -Run44BL_bottom_left.tif,806,69.6107,58.0062 -Run44BL_bottom_right.tif,758,68.3478,57.1587 -Run44BL_top_left.tif,628,66.0652,56.8252 -Run44BL_top_right.tif,779,69.3417,57.5463 -Run44BR_bottom_left.tif,836,69.7171,57.7004 -Run44BR_bottom_right.tif,744,69.2927,58.0622 -Run44BR_top_left.tif,834,66.7144,55.8072 -Run44BR_top_right.tif,806,67.9708,58.1461 -Run44TL_bottom_left.tif,590,66.0051,57.5359 -Run44TL_bottom_right.tif,611,68.5682,58.5766 -Run44TL_top_left.tif,518,62.4080,59.2729 -Run44TL_top_right.tif,550,60.6325,57.5466 -Run44TR_bottom_left.tif,762,66.0956,57.8208 -Run44TR_bottom_right.tif,776,63.9116,55.3813 -Run44TR_top_left.tif,728,58.5984,55.4280 -Run44TR_top_right.tif,730,56.5510,54.2687 -Run45BL_bottom_left.tif,576,106.7110,82.3694 -Run45BL_bottom_right.tif,607,105.5510,82.3256 -Run45BL_top_left.tif,434,103.0455,81.7658 -Run45BL_top_right.tif,536,103.9619,82.3495 -Run45BR_bottom_left.tif,716,105.9570,82.4798 -Run45BR_bottom_right.tif,641,105.6890,81.9359 -Run45BR_top_left.tif,581,102.3222,81.3532 -Run45BR_top_right.tif,699,102.8376,82.1954 -Run45TL_bottom_left.tif,518,102.4805,80.4681 -Run45TL_bottom_right.tif,550,102.6129,81.2558 -Run45TL_top_left.tif,414,99.9972,78.6111 -Run45TL_top_right.tif,488,97.2268,78.9885 -Run45TR_bottom_left.tif,611,101.0994,80.1687 -Run45TR_bottom_right.tif,634,98.7670,79.9726 -Run45TR_top_left.tif,627,97.4148,77.8922 -Run45TR_top_right.tif,691,98.7588,78.8019 -Run46BL_bottom_left.tif,571,104.9090,84.0110 -Run46BL_bottom_right.tif,565,104.8067,84.4585 -Run46BL_top_left.tif,561,104.3292,83.8820 -Run46BL_top_right.tif,580,103.2586,83.4701 -Run46BR_bottom_left.tif,604,104.4836,84.1997 -Run46BR_bottom_right.tif,546,102.5788,82.2118 -Run46BR_top_left.tif,508,105.2310,83.7272 -Run46BR_top_right.tif,467,105.7736,83.4508 -Run46TL_bottom_left.tif,623,104.5513,83.3084 -Run46TL_bottom_right.tif,568,104.1091,82.9792 -Run46TL_top_left.tif,491,99.9254,82.5074 -Run46TL_top_right.tif,552,103.2189,81.9859 -Run46TR_bottom_left.tif,552,104.5195,83.5452 -Run46TR_bottom_right.tif,553,103.6319,83.0497 -Run46TR_top_left.tif,493,104.5315,84.3359 -Run46TR_top_right.tif,570,104.4827,83.4800 -Run47BL_bottom_left.tif,812,76.2751,60.7633 -Run47BL_bottom_right.tif,753,75.8300,60.9453 -Run47BL_top_left.tif,916,75.2335,59.9796 -Run47BL_top_right.tif,809,76.6912,61.3886 -Run47BR_bottom_left.tif,751,76.2181,61.7152 -Run47BR_bottom_right.tif,832,74.4683,59.6118 -Run47BR_top_left.tif,690,76.1916,61.2307 -Run47BR_top_right.tif,676,77.4699,61.5071 -Run47TL_bottom_left.tif,777,76.4772,60.8037 -Run47TL_bottom_right.tif,652,76.7991,61.1502 -Run47TL_top_left.tif,781,75.8573,62.0415 -Run47TL_top_right.tif,840,76.4574,61.1497 -Run47TR_bottom_left.tif,830,74.8127,60.5502 -Run47TR_bottom_right.tif,735,75.7130,60.7766 -Run47TR_top_left.tif,686,74.7824,60.5705 -Run47TR_top_right.tif,788,75.1193,61.0434 -Run48BL_bottom_left.tif,577,79.7006,66.5892 -Run48BL_bottom_right.tif,510,79.3713,66.3245 -Run48BL_top_left.tif,536,78.7363,65.0587 -Run48BL_top_right.tif,498,78.7960,67.2106 -Run48BR_bottom_left.tif,614,79.0679,66.0193 -Run48BR_bottom_right.tif,422,79.5396,66.3306 -Run48BR_top_left.tif,439,79.6416,65.7500 -Run48BR_top_right.tif,492,76.5937,63.7027 -Run48TL_bottom_left.tif,497,79.1693,65.2867 -Run48TL_bottom_right.tif,531,77.7088,65.5420 -Run48TL_top_left.tif,427,76.6547,63.4680 -Run48TL_top_right.tif,559,77.2296,64.8728 -Run48TR_bottom_left.tif,523,76.4056,63.3290 -Run48TR_bottom_right.tif,605,75.4911,63.1806 -Run48TR_top_left.tif,573,79.2427,65.5307 -Run48TR_top_right.tif,531,76.5771,64.7957 -Run49BL_bottom_left.tif,811,93.9168,75.4556 -Run49BL_bottom_right.tif,820,92.7768,75.2179 -Run49BL_top_left.tif,810,93.6478,74.4984 -Run49BL_top_right.tif,768,94.4760,75.2473 -Run49BR_bottom_left.tif,733,96.1966,76.4810 -Run49BR_bottom_right.tif,768,97.8059,76.9121 -Run49BR_top_left.tif,671,99.2501,78.5146 -Run49BR_top_right.tif,722,95.8049,75.3978 -Run49TL_bottom_left.tif,915,89.4800,72.3398 -Run49TL_bottom_right.tif,740,95.3545,75.7867 -Run49TL_top_left.tif,766,92.6524,73.9386 -Run49TL_top_right.tif,743,92.0845,74.0536 -Run49TR_bottom_left.tif,674,95.3579,76.6624 -Run49TR_bottom_right.tif,796,87.5473,71.9304 -Run49TR_top_left.tif,762,89.2612,72.0770 -Run49TR_top_right.tif,872,86.9830,71.2965 -Run4BL_bottom_left.tif,602,63.8608,54.3253 -Run4BL_bottom_right.tif,752,64.4871,53.1511 -Run4BL_top_left.tif,717,62.4954,53.0795 -Run4BL_top_right.tif,815,59.3533,50.3890 -Run4BR_bottom_left.tif,762,63.5438,53.0365 -Run4BR_bottom_right.tif,715,66.0711,55.2999 -Run4BR_top_left.tif,785,59.9586,50.4915 -Run4BR_top_right.tif,854,62.4179,53.3770 -Run4TL_bottom_left.tif,773,57.5506,51.0445 -Run4TL_bottom_right.tif,739,58.6224,52.0842 -Run4TL_top_left.tif,743,47.8473,46.1737 -Run4TL_top_right.tif,845,47.3416,45.8569 -Run4TR_bottom_left.tif,707,54.3586,48.5954 -Run4TR_bottom_right.tif,784,56.7396,49.4125 -Run4TR_top_left.tif,697,47.3048,46.1708 -Run4TR_top_right.tif,634,47.9519,46.8199 -Run50BL_bottom_left.tif,592,88.2772,68.8882 -Run50BL_bottom_right.tif,540,87.2711,67.5571 -Run50BL_top_left.tif,627,89.2479,68.4849 -Run50BL_top_right.tif,572,89.7728,69.1050 -Run50BR_bottom_left.tif,601,89.0523,69.0223 -Run50BR_bottom_right.tif,586,87.1236,68.1178 -Run50BR_top_left.tif,582,86.6471,67.6055 -Run50BR_top_right.tif,576,87.9005,67.9388 -Run50TL_bottom_left.tif,661,94.9421,72.1507 -Run50TL_bottom_right.tif,466,97.5115,71.7872 -Run50TL_top_left.tif,661,78.1861,63.2646 -Run50TL_top_right.tif,714,77.8140,63.6384 -Run50TR_bottom_left.tif,617,94.8235,71.7271 -Run50TR_bottom_right.tif,567,92.7637,71.5512 -Run50TR_top_left.tif,577,79.8771,64.3809 -Run50TR_top_right.tif,663,79.1997,63.7561 -Run51BL_bottom_left.tif,475,86.8838,65.0040 -Run51BL_bottom_right.tif,416,89.4191,67.0812 -Run51BL_top_left.tif,522,81.4722,61.6057 -Run51BL_top_right.tif,426,84.3336,63.6967 -Run51BR_bottom_left.tif,386,93.1781,68.9727 -Run51BR_bottom_right.tif,457,89.5853,66.0921 -Run51BR_top_left.tif,489,79.4001,61.8073 -Run51BR_top_right.tif,471,85.7821,64.5410 -Run51TL_bottom_left.tif,413,80.0496,61.9857 -Run51TL_bottom_right.tif,444,82.7894,62.9966 -Run51TL_top_left.tif,459,70.8079,56.8121 -Run51TL_top_right.tif,460,65.8628,53.7890 -Run51TR_bottom_left.tif,433,79.6330,63.1063 -Run51TR_bottom_right.tif,507,80.9239,62.9399 -Run51TR_top_left.tif,424,71.9174,58.4248 -Run51TR_top_right.tif,484,69.9568,56.3763 -Run52BL_bottom_left.tif,844,66.3504,53.7541 -Run52BL_bottom_right.tif,746,66.8861,54.1811 -Run52BL_top_left.tif,707,68.4567,54.3603 -Run52BL_top_right.tif,810,61.2408,49.7785 -Run52BR_bottom_left.tif,765,67.7117,54.4064 -Run52BR_bottom_right.tif,798,65.2204,52.7938 -Run52BR_top_left.tif,668,64.0278,51.9080 -Run52BR_top_right.tif,837,57.0290,46.5277 -Run52TL_bottom_left.tif,707,67.3721,53.4934 -Run52TL_bottom_right.tif,680,65.8773,53.2181 -Run52TL_top_left.tif,820,63.0161,50.2683 -Run52TL_top_right.tif,765,62.6495,51.7257 -Run52TR_bottom_left.tif,777,62.6984,51.5882 -Run52TR_bottom_right.tif,754,61.0261,49.6289 -Run52TR_top_left.tif,801,58.4197,47.4166 -Run52TR_top_right.tif,499,71.4142,58.3894 -Run53BL_bottom_left.tif,627,61.0015,47.9417 -Run53BL_bottom_right.tif,585,60.7435,47.7391 -Run53BL_top_left.tif,635,60.4417,47.2497 -Run53BL_top_right.tif,675,58.4072,46.7360 -Run53BR_bottom_left.tif,607,63.0872,49.0698 -Run53BR_bottom_right.tif,489,65.9970,51.7694 -Run53BR_top_left.tif,466,65.6643,51.6405 -Run53BR_top_right.tif,392,66.6780,53.3949 -Run53TL_bottom_left.tif,485,63.7906,50.0177 -Run53TL_bottom_right.tif,592,58.2004,45.7982 -Run53TL_top_left.tif,492,65.4597,51.3978 -Run53TL_top_right.tif,640,56.4759,45.0732 -Run53TR_bottom_left.tif,593,59.0641,46.7923 -Run53TR_bottom_right.tif,556,61.6375,49.2625 -Run53TR_top_left.tif,548,58.0909,46.5867 -Run53TR_top_right.tif,532,58.2322,47.5235 -Run54BL_bottom_left.tif,913,110.3718,83.5939 -Run54BL_bottom_right.tif,804,109.7667,82.0876 -Run54BL_top_left.tif,990,112.0438,85.2022 -Run54BL_top_right.tif,968,110.2537,83.3403 -Run54BR_bottom_left.tif,597,111.5654,82.7935 -Run54BR_bottom_right.tif,585,112.9380,82.8042 -Run54BR_top_left.tif,711,110.9396,82.7577 -Run54BR_top_right.tif,581,109.6234,83.4481 -Run54TL_bottom_left.tif,1017,109.8645,84.1605 -Run54TL_bottom_right.tif,829,109.6798,81.9163 -Run54TL_top_left.tif,948,106.0316,80.8551 -Run54TL_top_right.tif,859,105.7140,80.4651 -Run54TR_bottom_left.tif,873,110.1776,83.0236 -Run54TR_bottom_right.tif,742,111.3347,82.8972 -Run54TR_top_left.tif,881,105.2868,80.8864 -Run54TR_top_right.tif,914,106.6697,81.3107 -Run55BL_bottom_left.tif,655,117.9643,87.8636 -Run55BL_bottom_right.tif,686,118.7565,87.6248 -Run55BL_top_left.tif,839,118.5650,88.5085 -Run55BL_top_right.tif,812,118.5279,87.8935 -Run55BR_bottom_left.tif,835,118.9960,88.6841 -Run55BR_bottom_right.tif,845,124.0826,90.8387 -Run55BR_top_left.tif,665,118.1376,87.7236 -Run55BR_top_right.tif,813,119.4416,89.7801 -Run55TL_bottom_left.tif,815,115.9685,87.0753 -Run55TL_bottom_right.tif,796,116.6380,87.0473 -Run55TL_top_left.tif,879,111.3168,85.0989 -Run55TL_top_right.tif,806,114.2686,86.3123 -Run55TR_bottom_left.tif,882,115.5609,87.3619 -Run55TR_bottom_right.tif,832,117.6407,89.6594 -Run55TR_top_left.tif,822,113.8696,86.5717 -Run55TR_top_right.tif,862,115.8057,87.3644 -Run56BL_bottom_left.tif,655,94.8053,74.6485 -Run56BL_bottom_right.tif,550,97.6429,75.3707 -Run56BL_top_left.tif,543,94.1533,72.7212 -Run56BL_top_right.tif,534,93.7517,72.6197 -Run56BR_bottom_left.tif,619,96.6598,74.8639 -Run56BR_bottom_right.tif,526,96.0633,75.3925 -Run56BR_top_left.tif,472,95.0186,72.0166 -Run56BR_top_right.tif,538,94.9865,73.7547 -Run56TL_bottom_left.tif,560,96.4385,74.2667 -Run56TL_bottom_right.tif,527,96.8633,74.5651 -Run56TL_top_left.tif,558,99.9101,77.3425 -Run56TL_top_right.tif,473,99.6230,74.6608 -Run56TR_bottom_left.tif,478,97.7465,74.1080 -Run56TR_bottom_right.tif,639,94.0065,73.4129 -Run56TR_top_left.tif,676,97.9200,76.3049 -Run56TR_top_right.tif,533,99.3328,77.0502 -Run57BL_bottom_left.tif,427,106.6296,80.6551 -Run57BL_bottom_right.tif,384,105.6533,80.2056 -Run57BL_top_left.tif,433,104.0400,79.6332 -Run57BL_top_right.tif,479,105.7359,80.8114 -Run57BR_bottom_left.tif,509,105.2813,81.1507 -Run57BR_bottom_right.tif,434,106.4526,80.6959 -Run57BR_top_left.tif,391,103.0423,78.9928 -Run57BR_top_right.tif,495,103.2283,79.5962 -Run57TL_bottom_left.tif,497,100.8921,78.4873 -Run57TL_bottom_right.tif,470,102.0594,78.2960 -Run57TL_top_left.tif,500,101.8598,77.6441 -Run57TL_top_right.tif,484,101.3191,77.5357 -Run57TR_bottom_left.tif,457,101.7925,78.2796 -Run57TR_bottom_right.tif,445,103.2423,78.4549 -Run57TR_top_left.tif,476,98.9877,77.3429 -Run57TR_top_right.tif,492,98.7269,76.7552 -Run58BL_bottom_left.tif,356,114.6855,85.1537 -Run58BL_bottom_right.tif,388,113.2055,84.2794 -Run58BL_top_left.tif,315,116.6025,84.9654 -Run58BL_top_right.tif,246,113.7169,85.0132 -Run58BR_bottom_left.tif,371,115.4105,85.5630 -Run58BR_bottom_right.tif,309,114.5231,85.3197 -Run58BR_top_left.tif,294,108.9049,83.2420 -Run58BR_top_right.tif,220,109.2043,83.8318 -Run58TL_bottom_left.tif,364,114.1574,83.9930 -Run58TL_bottom_right.tif,410,111.4237,84.5069 -Run58TL_top_left.tif,362,107.8850,80.3527 -Run58TL_top_right.tif,490,110.6984,82.5994 -Run58TR_bottom_left.tif,292,108.5262,81.3217 -Run58TR_bottom_right.tif,301,109.9728,81.9771 -Run58TR_top_left.tif,277,109.3191,81.8825 -Run58TR_top_right.tif,352,111.0954,81.5671 -Run59BL_bottom_left.tif,714,98.0943,76.5650 -Run59BL_bottom_right.tif,691,97.7414,74.9654 -Run59BL_top_left.tif,676,98.1531,76.4886 -Run59BL_top_right.tif,572,95.5848,74.4989 -Run59BR_bottom_left.tif,794,93.4330,73.5540 -Run59BR_bottom_right.tif,953,93.5424,73.0602 -Run59BR_top_left.tif,783,93.3876,73.4385 -Run59BR_top_right.tif,975,89.7795,70.3250 -Run59TL_bottom_left.tif,596,101.4250,77.8480 -Run59TL_bottom_right.tif,703,104.8493,79.8077 -Run59TL_top_left.tif,848,87.5958,73.9390 -Run59TL_top_right.tif,1050,90.3159,72.1611 -Run59TR_bottom_left.tif,783,97.0518,74.7752 -Run59TR_bottom_right.tif,934,90.6817,72.4749 -Run59TR_top_left.tif,790,84.1685,72.2271 -Run59TR_top_right.tif,1093,82.8397,68.6898 -Run5BL_bottom_left.tif,707,45.1152,39.6427 -Run5BL_bottom_right.tif,621,44.7448,39.2891 -Run5BL_top_left.tif,597,42.8669,38.3545 -Run5BL_top_right.tif,536,41.0210,36.9323 -Run5BR_bottom_left.tif,596,44.1249,37.8727 -Run5BR_bottom_right.tif,757,43.9112,37.3024 -Run5BR_top_left.tif,601,40.8058,36.1776 -Run5BR_top_right.tif,712,41.2040,36.3758 -Run5TL_bottom_left.tif,606,39.8760,38.1318 -Run5TL_bottom_right.tif,633,41.6674,38.6177 -Run5TL_top_left.tif,625,36.0179,36.8677 -Run5TL_top_right.tif,617,34.4671,35.8709 -Run5TR_bottom_left.tif,619,38.2933,36.3604 -Run5TR_bottom_right.tif,718,41.2017,37.1894 -Run5TR_top_left.tif,616,33.7064,34.8863 -Run5TR_top_right.tif,638,34.5054,35.5951 -Run60BL_bottom_left.tif,645,109.2134,83.9236 -Run60BL_bottom_right.tif,974,108.4483,83.1607 -Run60BL_top_left.tif,720,105.7795,82.2719 -Run60BL_top_right.tif,827,106.7353,82.8313 -Run60BR_bottom_left.tif,829,106.2059,82.8588 -Run60BR_bottom_right.tif,694,106.8355,84.7777 -Run60BR_top_left.tif,728,108.7977,83.8245 -Run60BR_top_right.tif,584,105.3414,82.9714 -Run60TL_bottom_left.tif,779,102.5276,80.2641 -Run60TL_bottom_right.tif,798,100.9171,79.3954 -Run60TL_top_left.tif,726,94.0517,76.9476 -Run60TL_top_right.tif,759,93.1262,74.7590 -Run60TR_bottom_left.tif,479,105.0953,81.1473 -Run60TR_bottom_right.tif,580,106.1767,81.7551 -Run60TR_top_left.tif,505,93.5434,77.0409 -Run60TR_top_right.tif,738,96.2349,77.6827 -Run61BL_bottom_left.tif,485,88.5794,71.4311 -Run61BL_bottom_right.tif,569,88.7816,70.4300 -Run61BL_top_left.tif,528,86.5652,69.2724 -Run61BL_top_right.tif,595,86.5190,69.4857 -Run61BR_bottom_left.tif,619,88.4716,69.5844 -Run61BR_bottom_right.tif,547,86.9355,69.9833 -Run61BR_top_left.tif,506,88.0964,69.6218 -Run61BR_top_right.tif,548,85.6872,67.9115 -Run61TL_bottom_left.tif,572,86.2453,69.0604 -Run61TL_bottom_right.tif,478,83.4391,66.7646 -Run61TL_top_left.tif,650,86.3106,68.4720 -Run61TL_top_right.tif,501,87.8741,68.9746 -Run61TR_bottom_left.tif,501,84.9980,68.1809 -Run61TR_bottom_right.tif,480,84.4109,67.5324 -Run61TR_top_left.tif,536,87.4517,69.8345 -Run61TR_top_right.tif,559,85.3640,67.4565 -Run62BL_bottom_left.tif,854,85.4001,67.9123 -Run62BL_bottom_right.tif,1037,83.9150,66.9967 -Run62BL_top_left.tif,1072,79.4259,64.3560 -Run62BL_top_right.tif,997,79.0224,63.6694 -Run62BR_bottom_left.tif,979,81.8096,65.6817 -Run62BR_bottom_right.tif,1000,81.2503,65.6986 -Run62BR_top_left.tif,1044,77.0365,62.2408 -Run62BR_top_right.tif,990,76.1861,61.8048 -Run62TL_bottom_left.tif,1022,74.7016,60.7587 -Run62TL_bottom_right.tif,909,75.1793,61.8331 -Run62TL_top_left.tif,1131,58.7517,52.5200 -Run62TL_top_right.tif,1045,64.6150,55.6282 -Run62TR_bottom_left.tif,987,75.0574,62.0671 -Run62TR_bottom_right.tif,1153,68.5876,57.8084 -Run62TR_top_left.tif,863,67.4831,57.1947 -Run62TR_top_right.tif,1023,64.2539,55.5745 -Run63BL_bottom_left.tif,654,82.0685,64.9654 -Run63BL_bottom_right.tif,688,83.5994,65.7785 -Run63BL_top_left.tif,802,83.4219,64.3705 -Run63BL_top_right.tif,665,82.3562,65.5272 -Run63BR_bottom_left.tif,806,82.7058,64.7251 -Run63BR_bottom_right.tif,697,82.2134,64.3820 -Run63BR_top_left.tif,646,82.4298,63.8976 -Run63BR_top_right.tif,641,82.3333,64.3016 -Run63TL_bottom_left.tif,642,81.7803,64.8541 -Run63TL_bottom_right.tif,460,81.1298,64.1477 -Run63TL_top_left.tif,786,78.9482,62.2036 -Run63TL_top_right.tif,623,79.9533,63.6877 -Run63TR_bottom_left.tif,742,82.7500,65.8600 -Run63TR_bottom_right.tif,886,80.0860,63.2522 -Run63TR_top_left.tif,606,81.1831,64.0821 -Run63TR_top_right.tif,709,78.5730,61.7890 -Run64BL_bottom_left.tif,452,131.6800,94.5529 -Run64BL_bottom_right.tif,460,126.1118,92.5543 -Run64BL_top_left.tif,579,117.1492,87.7779 -Run64BL_top_right.tif,359,120.7612,88.7078 -Run64BR_bottom_left.tif,718,127.4697,91.4345 -Run64BR_bottom_right.tif,650,128.1864,92.2542 -Run64BR_top_left.tif,623,120.1612,89.0344 -Run64BR_top_right.tif,697,114.8531,86.8541 -Run64TL_bottom_left.tif,583,107.8746,82.1726 -Run64TL_bottom_right.tif,481,110.5465,82.9843 -Run64TL_top_left.tif,594,86.7041,72.1025 -Run64TL_top_right.tif,864,89.9367,74.3202 -Run64TR_bottom_left.tif,531,107.8262,81.7284 -Run64TR_bottom_right.tif,659,106.8718,82.4321 -Run64TR_top_left.tif,635,84.4271,71.5940 -Run64TR_top_right.tif,722,88.0165,72.1054 -Run65BL_bottom_left.tif,872,83.4938,70.1739 -Run65BL_bottom_right.tif,984,83.8893,70.5149 -Run65BL_top_left.tif,955,85.1390,70.4166 -Run65BL_top_right.tif,923,83.2485,70.9609 -Run65BR_bottom_left.tif,879,83.4633,69.6289 -Run65BR_bottom_right.tif,857,83.9471,71.4741 -Run65BR_top_left.tif,897,84.4030,70.9919 -Run65BR_top_right.tif,946,86.5436,71.6564 -Run65TL_bottom_left.tif,1032,84.7529,69.5172 -Run65TL_bottom_right.tif,1021,82.4381,69.5788 -Run65TL_top_left.tif,1050,84.9989,69.1607 -Run65TL_top_right.tif,1067,85.2861,69.6439 -Run65TR_bottom_left.tif,991,81.3545,68.4491 -Run65TR_bottom_right.tif,944,86.3326,70.8172 -Run65TR_top_left.tif,1094,85.4029,70.8187 -Run65TR_top_right.tif,1088,86.1777,69.9522 -Run66BL_bottom_left.tif,828,85.2048,71.0172 -Run66BL_bottom_right.tif,851,85.3187,71.3733 -Run66BL_top_left.tif,632,84.8702,70.8717 -Run66BL_top_right.tif,576,82.9253,69.9254 -Run66BR_bottom_left.tif,763,85.9389,71.1609 -Run66BR_bottom_right.tif,1044,84.0233,70.4166 -Run66BR_top_left.tif,798,84.5988,70.9604 -Run66BR_top_right.tif,861,82.6134,70.1862 -Run66TL_bottom_left.tif,625,81.3456,67.9066 -Run66TL_bottom_right.tif,607,81.7485,67.8467 -Run66TL_top_left.tif,715,75.0133,61.7460 -Run66TL_top_right.tif,766,76.3460,62.7372 -Run66TR_bottom_left.tif,834,84.2150,69.8233 -Run66TR_bottom_right.tif,865,81.6393,68.1398 -Run66TR_top_left.tif,706,74.3826,62.5757 -Run66TR_top_right.tif,922,75.4491,62.5531 -Run67BL_bottom_left.tif,746,85.3439,69.3745 -Run67BL_bottom_right.tif,667,86.1830,69.5903 -Run67BL_top_left.tif,753,82.6564,66.9226 -Run67BL_top_right.tif,713,82.8898,67.6624 -Run67BR_bottom_left.tif,767,86.7389,69.8112 -Run67BR_bottom_right.tif,697,87.0655,69.9250 -Run67BR_top_left.tif,780,85.4308,69.5920 -Run67BR_top_right.tif,777,84.7602,68.8127 -Run67TL_bottom_left.tif,749,85.4269,68.9413 -Run67TL_bottom_right.tif,811,84.9080,67.8974 -Run67TL_top_left.tif,683,83.7256,67.7449 -Run67TL_top_right.tif,833,82.9300,67.1827 -Run67TR_bottom_left.tif,802,83.1544,68.3950 -Run67TR_bottom_right.tif,730,85.8206,69.8148 -Run67TR_top_left.tif,624,79.6914,66.0728 -Run67TR_top_right.tif,673,83.1038,68.7016 -Run68BL_bottom_left.tif,629,89.0151,72.6759 -Run68BL_bottom_right.tif,447,88.0810,71.1248 -Run68BL_top_left.tif,501,87.3422,70.6159 -Run68BL_top_right.tif,614,83.7349,69.3927 -Run68BR_bottom_left.tif,408,85.9604,70.2770 -Run68BR_bottom_right.tif,646,88.6297,71.9005 -Run68BR_top_left.tif,511,85.8012,68.3328 -Run68BR_top_right.tif,596,85.4131,70.2388 -Run68TL_bottom_left.tif,503,83.1669,67.7634 -Run68TL_bottom_right.tif,510,83.7644,68.7152 -Run68TL_top_left.tif,519,79.2726,65.8614 -Run68TL_top_right.tif,564,82.5691,67.9055 -Run68TR_bottom_left.tif,660,83.0526,67.7102 -Run68TR_bottom_right.tif,638,83.3658,67.8259 -Run68TR_top_left.tif,538,81.2733,67.8631 -Run68TR_top_right.tif,711,79.5686,66.6538 -Run69BL_bottom_left.tif,472,102.2914,83.9990 -Run69BL_bottom_right.tif,408,100.7447,81.5464 -Run69BL_top_left.tif,410,104.7756,83.2219 -Run69BL_top_right.tif,387,101.5772,80.4427 -Run69BR_bottom_left.tif,565,101.1870,81.8867 -Run69BR_bottom_right.tif,480,99.4374,81.1036 -Run69BR_top_left.tif,554,100.6677,81.6832 -Run69BR_top_right.tif,477,98.8227,80.3494 -Run69TL_bottom_left.tif,456,101.4048,82.1761 -Run69TL_bottom_right.tif,415,102.4413,82.3822 -Run69TL_top_left.tif,415,96.6979,79.7293 -Run69TL_top_right.tif,419,97.6360,79.3641 -Run69TR_bottom_left.tif,436,98.1306,81.2744 -Run69TR_bottom_right.tif,528,98.2230,79.9683 -Run69TR_top_left.tif,386,92.6165,76.3911 -Run69TR_top_right.tif,613,97.2936,78.8463 -Run70BL_bottom_left.tif,805,74.5012,61.9987 -Run70BL_bottom_right.tif,778,73.0775,60.4954 -Run70BL_top_left.tif,924,74.8071,61.1320 -Run70BL_top_right.tif,901,74.2389,62.0664 -Run70BR_bottom_left.tif,571,74.5553,60.8648 -Run70BR_bottom_right.tif,567,74.0101,60.8578 -Run70BR_top_left.tif,883,75.4589,61.7921 -Run70BR_top_right.tif,823,76.0040,61.6994 -Run70TL_bottom_left.tif,934,77.5623,63.2338 -Run70TL_bottom_right.tif,907,76.5750,62.0674 -Run70TL_top_left.tif,841,75.9969,63.2313 -Run70TL_top_right.tif,835,77.2450,61.9783 -Run70TR_bottom_left.tif,865,76.0866,62.2933 -Run70TR_bottom_right.tif,868,75.8130,62.5058 -Run70TR_top_left.tif,927,77.8196,62.9823 -Run70TR_top_right.tif,947,77.4849,62.0468 -Run71BL_bottom_left.tif,787,73.6661,62.2883 -Run71BL_bottom_right.tif,876,76.2991,64.1110 -Run71BL_top_left.tif,977,73.5210,61.2578 -Run71BL_top_right.tif,817,74.5262,62.6990 -Run71BR_bottom_left.tif,902,76.9578,63.7955 -Run71BR_bottom_right.tif,847,78.5856,65.6951 -Run71BR_top_left.tif,871,76.4147,63.8599 -Run71BR_top_right.tif,781,78.2808,64.7542 -Run71TL_bottom_left.tif,899,71.9108,60.1265 -Run71TL_bottom_right.tif,801,70.8166,59.9138 -Run71TL_top_left.tif,887,70.3056,57.4917 -Run71TL_top_right.tif,939,71.2705,59.7461 -Run71TR_bottom_left.tif,861,75.1016,61.9879 -Run71TR_bottom_right.tif,932,77.2153,63.9337 -Run71TR_top_left.tif,875,73.7939,62.0113 -Run71TR_top_right.tif,859,76.7831,62.3549 -Run72BL_bottom_left.tif,651,76.9294,60.1954 -Run72BL_bottom_right.tif,768,76.8666,60.7419 -Run72BL_top_left.tif,607,78.0160,62.1608 -Run72BL_top_right.tif,720,79.1065,62.6564 -Run72BR_bottom_left.tif,726,77.3963,60.6411 -Run72BR_bottom_right.tif,880,77.2459,60.9976 -Run72BR_top_left.tif,712,79.5411,62.4088 -Run72BR_top_right.tif,687,80.3067,62.4906 -Run72TL_bottom_left.tif,778,79.1219,61.5909 -Run72TL_bottom_right.tif,648,77.5646,61.8456 -Run72TL_top_left.tif,690,74.2932,57.5979 -Run72TL_top_right.tif,617,75.4604,59.6274 -Run72TR_bottom_left.tif,685,78.6077,62.5744 -Run72TR_bottom_right.tif,901,81.4300,62.4876 -Run72TR_top_left.tif,725,75.4077,58.2204 -Run72TR_top_right.tif,806,77.7553,59.8214 -Run73BL_bottom_left.tif,573,86.9943,73.9344 -Run73BL_bottom_right.tif,650,87.3237,74.8417 -Run73BL_top_left.tif,595,82.9894,71.0134 -Run73BL_top_right.tif,642,81.7370,70.5278 -Run73BR_bottom_left.tif,606,85.2782,74.5101 -Run73BR_bottom_right.tif,558,87.6032,74.3758 -Run73BR_top_left.tif,553,83.0647,70.5035 -Run73BR_top_right.tif,635,82.3480,70.8520 -Run73TL_bottom_left.tif,597,77.4958,65.9073 -Run73TL_bottom_right.tif,602,77.6028,65.9707 -Run73TL_top_left.tif,571,66.7315,58.1890 -Run73TL_top_right.tif,636,66.9949,58.7771 -Run73TR_bottom_left.tif,587,79.7904,67.3212 -Run73TR_bottom_right.tif,616,76.5019,65.9931 -Run73TR_top_left.tif,614,64.8310,56.5828 -Run73TR_top_right.tif,609,64.3022,55.3022 -Run74BL_bottom_left.tif,1009,62.6988,52.6255 -Run74BL_bottom_right.tif,945,61.1242,52.5312 -Run74BL_top_left.tif,980,64.3524,54.8272 -Run74BL_top_right.tif,939,64.0941,55.1098 -Run74BR_bottom_left.tif,989,62.9232,52.9210 -Run74BR_bottom_right.tif,925,61.3291,52.8472 -Run74BR_top_left.tif,915,64.3057,55.7123 -Run74BR_top_right.tif,908,64.4090,56.1201 -Run74TL_bottom_left.tif,957,67.9249,58.7295 -Run74TL_bottom_right.tif,805,67.1348,57.9971 -Run74TL_top_left.tif,880,67.4700,58.9632 -Run74TL_top_right.tif,814,67.6507,58.5859 -Run74TR_bottom_left.tif,801,67.1417,58.1863 -Run74TR_bottom_right.tif,963,67.7203,58.3672 -Run74TR_top_left.tif,841,67.7458,59.4149 -Run74TR_top_right.tif,934,70.1340,60.6808 -Run75BL_bottom_left.tif,889,102.0793,84.4071 -Run75BL_bottom_right.tif,904,106.1034,85.7202 -Run75BL_top_left.tif,770,103.5441,84.5005 -Run75BL_top_right.tif,704,103.1107,83.9244 -Run75BR_bottom_left.tif,884,104.9720,84.8718 -Run75BR_bottom_right.tif,727,105.5967,84.9725 -Run75BR_top_left.tif,837,101.1803,82.8884 -Run75BR_top_right.tif,790,104.0106,84.1296 -Run75TL_bottom_left.tif,695,105.2360,84.0883 -Run75TL_bottom_right.tif,531,107.7585,86.3549 -Run75TL_top_left.tif,690,90.4433,76.5219 -Run75TL_top_right.tif,689,89.9887,77.2363 -Run75TR_bottom_left.tif,854,105.0633,84.1969 -Run75TR_bottom_right.tif,825,104.0679,83.9630 -Run75TR_top_left.tif,888,88.6409,76.0111 -Run75TR_top_right.tif,874,89.6831,76.6839 -Run76BL_bottom_left.tif,608,92.9950,74.6766 -Run76BL_bottom_right.tif,482,96.9303,76.9843 -Run76BL_top_left.tif,658,92.1683,74.9434 -Run76BL_top_right.tif,493,91.6069,74.1834 -Run76BR_bottom_left.tif,508,93.8086,76.0487 -Run76BR_bottom_right.tif,573,95.4650,75.8049 -Run76BR_top_left.tif,605,96.0221,76.4703 -Run76BR_top_right.tif,621,90.4565,73.4220 -Run76TL_bottom_left.tif,706,90.4342,72.6092 -Run76TL_bottom_right.tif,607,91.1966,73.7680 -Run76TL_top_left.tif,666,91.7810,72.7972 -Run76TL_top_right.tif,645,89.3393,70.5721 -Run76TR_bottom_left.tif,597,90.1466,71.0935 -Run76TR_bottom_right.tif,633,91.0470,73.2240 -Run76TR_top_left.tif,492,86.0552,69.8160 -Run76TR_top_right.tif,554,87.2341,70.2180 -Run77BL_bottom_left.tif,999,105.0306,83.1038 -Run77BL_bottom_right.tif,940,104.9419,84.0456 -Run77BL_top_left.tif,1053,101.5436,80.6444 -Run77BL_top_right.tif,734,106.4571,83.7682 -Run77BR_bottom_left.tif,992,106.6353,82.3670 -Run77BR_bottom_right.tif,1025,106.5676,83.1199 -Run77BR_top_left.tif,866,104.1362,82.1655 -Run77BR_top_right.tif,1036,102.8932,80.8464 -Run77TL_bottom_left.tif,992,94.7928,76.2098 -Run77TL_bottom_right.tif,865,94.8980,76.2910 -Run77TL_top_left.tif,623,76.3418,67.2962 -Run77TL_top_right.tif,923,72.5028,62.7787 -Run77TR_bottom_left.tif,1007,95.3918,75.4708 -Run77TR_bottom_right.tif,1047,96.3674,76.7201 -Run77TR_top_left.tif,1006,68.5335,59.0888 -Run77TR_top_right.tif,822,72.4834,62.7356 -Run78BL_bottom_left.tif,562,87.8816,70.9422 -Run78BL_bottom_right.tif,485,86.1164,70.0010 -Run78BL_top_left.tif,770,84.5290,69.1214 -Run78BL_top_right.tif,747,85.3975,69.7625 -Run78BR_bottom_left.tif,271,84.5600,70.3892 -Run78BR_bottom_right.tif,532,87.0530,70.0110 -Run78BR_top_left.tif,560,85.3236,69.8086 -Run78BR_top_right.tif,883,85.3261,69.4093 -Run78TL_bottom_left.tif,871,87.2227,70.2532 -Run78TL_bottom_right.tif,762,87.2232,70.4708 -Run78TL_top_left.tif,711,85.7308,69.1124 -Run78TL_top_right.tif,971,90.1995,69.1348 -Run78TR_bottom_left.tif,582,84.3383,68.9010 -Run78TR_bottom_right.tif,907,87.3944,70.3250 -Run78TR_top_left.tif,907,87.6531,69.9549 -Run78TR_top_right.tif,953,86.3198,69.6426 -Run79BL_bottom_left.tif,601,94.4538,76.4227 -Run79BL_bottom_right.tif,580,95.1339,76.4108 -Run79BL_top_left.tif,514,95.4430,78.2507 -Run79BL_top_right.tif,487,97.9761,77.8480 -Run79BR_bottom_left.tif,602,95.7152,76.4073 -Run79BR_bottom_right.tif,434,98.2931,79.8917 -Run79BR_top_left.tif,599,96.4791,77.6659 -Run79BR_top_right.tif,745,93.3489,76.8957 -Run79TL_bottom_left.tif,616,89.1575,72.9050 -Run79TL_bottom_right.tif,522,88.6166,73.2341 -Run79TL_top_left.tif,749,66.7395,59.2303 -Run79TL_top_right.tif,758,65.2566,57.0795 -Run79TR_bottom_left.tif,606,90.8707,74.1286 -Run79TR_bottom_right.tif,714,89.9026,73.0842 -Run79TR_top_left.tif,749,65.2784,57.4813 -Run79TR_top_right.tif,730,63.6819,57.0511 -Run7BL_bottom_left.tif,321,68.0116,53.4335 -Run7BL_bottom_right.tif,351,67.5842,52.9227 -Run7BL_top_left.tif,321,66.1682,51.9688 -Run7BL_top_right.tif,380,65.9169,52.3012 -Run7BR_bottom_left.tif,410,66.8528,53.9080 -Run7BR_bottom_right.tif,404,67.4334,53.1689 -Run7BR_top_left.tif,316,63.7642,51.5855 -Run7BR_top_right.tif,345,66.9079,54.2013 -Run7TL_bottom_left.tif,407,63.3804,52.5764 -Run7TL_bottom_right.tif,366,62.2589,51.3051 -Run7TL_top_left.tif,387,53.5608,48.7126 -Run7TL_top_right.tif,380,58.5712,51.6878 -Run7TR_bottom_left.tif,302,63.0824,51.6414 -Run7TR_bottom_right.tif,294,62.8479,51.4819 -Run7TR_top_left.tif,456,57.0975,51.4076 -Run7TR_top_right.tif,292,56.4941,49.5086 -Run80BL_bottom_left.tif,838,63.9013,55.5953 -Run80BL_bottom_right.tif,899,61.5902,53.9173 -Run80BL_top_left.tif,538,62.5477,54.6203 -Run80BL_top_right.tif,457,57.9629,52.9649 -Run80BR_bottom_left.tif,911,60.2944,52.5411 -Run80BR_bottom_right.tif,913,58.3072,51.7210 -Run80BR_top_left.tif,788,59.5758,52.2328 -Run80BR_top_right.tif,926,59.8112,52.1461 -Run80TL_bottom_left.tif,523,63.3330,56.0949 -Run80TL_bottom_right.tif,363,59.3836,54.3685 -Run80TL_top_left.tif,497,62.1449,55.7249 -Run80TL_top_right.tif,513,61.1826,55.4813 -Run80TR_bottom_left.tif,565,60.0311,54.6053 -Run80TR_bottom_right.tif,762,58.3397,52.4096 -Run80TR_top_left.tif,677,61.2011,55.1393 -Run80TR_top_right.tif,821,59.2483,52.2241 -Run81BL_bottom_left.tif,820,83.3940,70.9216 -Run81BL_bottom_right.tif,732,83.5917,71.0872 -Run81BL_top_left.tif,761,81.4068,68.8603 -Run81BL_top_right.tif,756,83.6001,70.3524 -Run81BR_bottom_left.tif,821,84.1337,70.2792 -Run81BR_bottom_right.tif,771,83.4384,70.9409 -Run81BR_top_left.tif,779,85.8685,71.3158 -Run81BR_top_right.tif,841,83.6526,71.1016 -Run81TL_bottom_left.tif,591,81.8231,69.2106 -Run81TL_bottom_right.tif,499,83.6375,70.9687 -Run81TL_top_left.tif,656,82.6865,69.8509 -Run81TL_top_right.tif,535,82.0803,68.7498 -Run81TR_bottom_left.tif,595,80.7393,69.7617 -Run81TR_bottom_right.tif,653,83.2896,70.8745 -Run81TR_top_left.tif,661,81.8139,69.5983 -Run81TR_top_right.tif,722,82.9362,71.7305 -Run82BL_bottom_left.tif,1176,81.9729,66.2915 -Run82BL_bottom_right.tif,1226,79.0515,65.0230 -Run82BL_top_left.tif,952,81.6189,66.1826 -Run82BL_top_right.tif,881,82.7460,67.1946 -Run82BR_bottom_left.tif,1127,79.3232,65.1407 -Run82BR_bottom_right.tif,1296,82.3665,66.3800 -Run82BR_top_left.tif,1247,85.2763,68.6653 -Run82BR_top_right.tif,1205,84.2844,68.7101 -Run82TL_bottom_left.tif,1108,91.3478,72.9520 -Run82TL_bottom_right.tif,802,88.5012,71.3211 -Run82TL_top_left.tif,1186,81.2128,68.2192 -Run82TL_top_right.tif,833,76.7704,65.6159 -Run82TR_bottom_left.tif,1081,90.2567,72.2895 -Run82TR_bottom_right.tif,1350,91.3691,72.5722 -Run82TR_top_left.tif,1188,79.6827,66.7788 -Run82TR_top_right.tif,1252,80.3372,67.4170 -Run83BL_bottom_left.tif,1119,81.0237,63.1305 -Run83BL_bottom_right.tif,1102,81.4280,63.6441 -Run83BL_top_left.tif,1077,81.3480,62.5809 -Run83BL_top_right.tif,845,78.7438,61.0227 -Run83BR_bottom_left.tif,1223,80.9731,63.2748 -Run83BR_bottom_right.tif,1133,84.0161,65.3558 -Run83BR_top_left.tif,821,80.4580,61.8394 -Run83BR_top_right.tif,734,78.0003,61.6109 -Run83TL_bottom_left.tif,1171,82.6035,62.5620 -Run83TL_bottom_right.tif,786,80.8707,63.0204 -Run83TL_top_left.tif,1185,82.7765,64.1528 -Run83TL_top_right.tif,990,81.6350,62.6350 -Run83TR_bottom_left.tif,662,83.0950,64.1134 -Run83TR_bottom_right.tif,793,80.9161,63.8411 -Run83TR_top_left.tif,1054,81.9602,63.6539 -Run83TR_top_right.tif,972,81.7850,63.2737 -Run84BL_bottom_left.tif,1219,84.4103,69.9433 -Run84BL_bottom_right.tif,1229,84.1080,69.5424 -Run84BL_top_left.tif,1303,88.3563,72.6541 -Run84BL_top_right.tif,1181,87.4065,73.4766 -Run84BR_bottom_left.tif,1186,86.2950,70.9954 -Run84BR_bottom_right.tif,1243,83.8848,69.4130 -Run84BR_top_left.tif,1214,87.8278,73.1571 -Run84BR_top_right.tif,1230,88.5349,73.6957 -Run84TL_bottom_left.tif,1296,93.3305,76.8139 -Run84TL_bottom_right.tif,1105,91.4861,77.6109 -Run84TL_top_left.tif,1278,82.0201,71.5043 -Run84TL_top_right.tif,1155,80.4916,72.0003 -Run84TR_bottom_left.tif,1253,93.4192,77.2607 -Run84TR_bottom_right.tif,1236,95.2905,77.9370 -Run84TR_top_left.tif,1136,81.5611,69.8452 -Run84TR_top_right.tif,1170,83.7272,71.6323 -Run85BL_bottom_left.tif,972,26.0835,21.9370 -Run85BL_bottom_right.tif,927,26.7142,22.1607 -Run85BL_top_left.tif,1013,25.9761,22.2305 -Run85BL_top_right.tif,1050,25.9457,21.8880 -Run85BR_bottom_left.tif,956,26.8178,22.3354 -Run85BR_bottom_right.tif,1024,26.7367,22.1648 -Run85BR_top_left.tif,960,25.9739,22.0837 -Run85BR_top_right.tif,1032,25.4394,21.9159 -Run85TL_bottom_left.tif,931,26.6459,23.1535 -Run85TL_bottom_right.tif,836,25.9063,22.5130 -Run85TL_top_left.tif,904,26.3498,23.4291 -Run85TL_top_right.tif,890,26.1852,23.5163 -Run85TR_bottom_left.tif,959,25.2663,22.1189 -Run85TR_bottom_right.tif,1028,24.7768,21.3008 -Run85TR_top_left.tif,877,24.7057,22.1445 -Run85TR_top_right.tif,1048,24.0427,21.3286 -Run86BL_bottom_left.tif,760,108.8496,86.6917 -Run86BL_bottom_right.tif,705,103.9238,84.9022 -Run86BL_top_left.tif,702,105.5841,86.2173 -Run86BL_top_right.tif,573,104.9380,85.6327 -Run86BR_bottom_left.tif,704,105.9731,85.2675 -Run86BR_bottom_right.tif,568,105.1017,86.3608 -Run86BR_top_left.tif,513,101.4850,84.6258 -Run86BR_top_right.tif,554,106.5660,87.1319 -Run86TL_bottom_left.tif,725,103.1105,84.7256 -Run86TL_bottom_right.tif,667,106.9644,85.9658 -Run86TL_top_left.tif,711,107.8942,87.7044 -Run86TL_top_right.tif,720,108.0929,87.7633 -Run86TR_bottom_left.tif,572,101.3887,84.7054 -Run86TR_bottom_right.tif,577,106.3977,86.0499 -Run86TR_top_left.tif,700,106.9046,85.4575 -Run86TR_top_right.tif,680,106.4430,85.9667 -Run87BL_bottom_left.tif,774,99.2206,84.8656 -Run87BL_bottom_right.tif,768,100.7905,85.2227 -Run87BL_top_left.tif,740,101.0761,85.5219 -Run87BL_top_right.tif,739,98.0007,84.3832 -Run87BR_bottom_left.tif,935,102.8424,85.2410 -Run87BR_bottom_right.tif,773,99.6644,83.6636 -Run87BR_top_left.tif,716,103.6054,86.2373 -Run87BR_top_right.tif,800,99.7260,84.2737 -Run87TL_bottom_left.tif,865,106.0782,88.8749 -Run87TL_bottom_right.tif,878,109.0420,88.7251 -Run87TL_top_left.tif,959,92.2250,80.6886 -Run87TL_top_right.tif,883,93.0810,81.9762 -Run87TR_bottom_left.tif,738,105.2331,89.1601 -Run87TR_bottom_right.tif,712,107.0532,88.6565 -Run87TR_top_left.tif,751,87.7206,79.3263 -Run87TR_top_right.tif,667,91.1851,80.1433 -Run88BL_bottom_left.tif,1000,80.3960,65.8111 -Run88BL_bottom_right.tif,967,79.1325,64.3546 -Run88BL_top_left.tif,1042,79.6088,65.0832 -Run88BL_top_right.tif,963,80.3738,65.5286 -Run88BR_bottom_left.tif,1049,79.1662,65.8507 -Run88BR_bottom_right.tif,969,79.1247,64.6753 -Run88BR_top_left.tif,1035,78.2452,64.0686 -Run88BR_top_right.tif,882,77.7306,63.7716 -Run88TL_bottom_left.tif,1011,78.2468,63.4407 -Run88TL_bottom_right.tif,886,76.8031,63.1440 -Run88TL_top_left.tif,1078,80.0125,64.0986 -Run88TL_top_right.tif,960,76.6027,62.2712 -Run88TR_bottom_left.tif,983,77.8488,63.9044 -Run88TR_bottom_right.tif,985,78.5466,63.8031 -Run88TR_top_left.tif,1037,79.1564,63.9300 -Run88TR_top_right.tif,1019,77.2890,62.9157 -Run89BL_bottom_left.tif,759,62.7483,53.0738 -Run89BL_bottom_right.tif,735,62.1633,52.9596 -Run89BL_top_left.tif,834,59.9939,51.5703 -Run89BL_top_right.tif,780,60.7254,52.5227 -Run89BR_bottom_left.tif,774,59.7947,51.6414 -Run89BR_bottom_right.tif,837,60.7936,52.3810 -Run89BR_top_left.tif,700,60.1317,52.5602 -Run89BR_top_right.tif,710,60.2910,51.3713 -Run89TL_bottom_left.tif,813,58.1904,51.7785 -Run89TL_bottom_right.tif,799,58.2017,51.7314 -Run89TL_top_left.tif,723,53.3890,50.5770 -Run89TL_top_right.tif,679,53.7408,51.0373 -Run89TR_bottom_left.tif,872,57.6170,51.1719 -Run89TR_bottom_right.tif,713,56.5712,50.5165 -Run89TR_top_left.tif,825,50.9810,48.4496 -Run89TR_top_right.tif,689,54.8875,52.0988 -Run8BL_bottom_left.tif,268,102.1098,77.3903 -Run8BL_bottom_right.tif,214,104.1272,78.5981 -Run8BL_top_left.tif,273,101.9297,77.4239 -Run8BL_top_right.tif,298,97.8637,75.2089 -Run8BR_bottom_left.tif,248,105.0017,78.9631 -Run8BR_bottom_right.tif,243,102.2332,76.3521 -Run8BR_top_left.tif,336,99.1088,74.2398 -Run8BR_top_right.tif,244,97.1761,73.8643 -Run8TL_bottom_left.tif,286,97.7243,75.2701 -Run8TL_bottom_right.tif,216,98.3497,76.0748 -Run8TL_top_left.tif,233,93.0863,74.0415 -Run8TL_top_right.tif,292,93.1423,73.8470 -Run8TR_bottom_left.tif,238,100.2142,75.4629 -Run8TR_bottom_right.tif,279,98.0170,75.0814 -Run8TR_top_left.tif,231,90.0420,72.7449 -Run8TR_top_right.tif,299,88.4287,71.0400 -Run90BL_bottom_left.tif,1184,67.2968,54.9349 -Run90BL_bottom_right.tif,864,66.4614,54.8989 -Run90BL_top_left.tif,1146,66.6913,54.3341 -Run90BL_top_right.tif,689,66.6967,54.8959 -Run90BR_bottom_left.tif,1066,67.0265,55.4384 -Run90BR_bottom_right.tif,1169,66.8935,54.8503 -Run90BR_top_left.tif,624,66.2948,54.9479 -Run90BR_top_right.tif,1072,66.2921,54.5455 -Run90TL_bottom_left.tif,1243,66.8903,53.9535 -Run90TL_bottom_right.tif,920,64.3416,52.6600 -Run90TL_top_left.tif,1154,62.9542,51.3140 -Run90TL_top_right.tif,1171,62.4013,51.1983 -Run90TR_bottom_left.tif,779,65.0214,53.3705 -Run90TR_bottom_right.tif,891,63.8257,53.1640 -Run90TR_top_left.tif,1170,61.6024,50.5422 -Run90TR_top_right.tif,1091,62.6513,51.1394 -Run91BL_bottom_left.tif,1069,64.9905,53.7213 -Run91BL_bottom_right.tif,1068,62.6126,52.9704 -Run91BL_top_left.tif,1121,65.3421,53.7862 -Run91BL_top_right.tif,1106,64.1240,54.3439 -Run91BR_bottom_left.tif,1104,63.4450,53.4057 -Run91BR_bottom_right.tif,1135,63.0789,52.9647 -Run91BR_top_left.tif,1115,64.5619,55.6608 -Run91BR_top_right.tif,1127,63.2608,54.7222 -Run91TL_bottom_left.tif,1179,67.3298,57.8115 -Run91TL_bottom_right.tif,900,65.3424,58.2566 -Run91TL_top_left.tif,1095,54.1733,51.9274 -Run91TL_top_right.tif,1006,52.6432,52.1040 -Run91TR_bottom_left.tif,864,65.5464,58.4603 -Run91TR_bottom_right.tif,1100,66.7972,57.6344 -Run91TR_top_left.tif,1023,54.1731,52.8972 -Run91TR_top_right.tif,903,54.6364,54.0025 -Run92BL_bottom_left.tif,1264,65.8442,54.6962 -Run92BL_bottom_right.tif,1380,66.3409,54.5305 -Run92BL_top_left.tif,1296,64.2741,53.3878 -Run92BL_top_right.tif,1320,64.5788,53.5635 -Run92BR_bottom_left.tif,1408,65.7351,53.9183 -Run92BR_bottom_right.tif,1297,66.7970,54.8218 -Run92BR_top_left.tif,1193,63.9916,53.5142 -Run92BR_top_right.tif,1282,66.5791,55.0379 -Run92TL_bottom_left.tif,1204,65.3768,54.3274 -Run92TL_bottom_right.tif,962,63.9552,54.4110 -Run92TL_top_left.tif,881,65.3030,55.0311 -Run92TL_top_right.tif,789,66.4534,56.0570 -Run92TR_bottom_left.tif,930,64.5668,54.5353 -Run92TR_bottom_right.tif,1066,64.9962,55.3803 -Run92TR_top_left.tif,845,65.2206,56.5092 -Run92TR_top_right.tif,875,65.8025,55.8248 -Run93BL_bottom_left.tif,945,69.3371,59.0309 -Run93BL_bottom_right.tif,1070,70.6885,59.0243 -Run93BL_top_left.tif,1034,71.2504,59.1232 -Run93BL_top_right.tif,1061,73.1657,60.6826 -Run93BR_bottom_left.tif,1054,72.4444,60.0754 -Run93BR_bottom_right.tif,1020,71.2967,59.4346 -Run93BR_top_left.tif,1004,71.4636,59.4504 -Run93BR_top_right.tif,790,69.9283,60.4007 -Run93TL_bottom_left.tif,1054,72.3491,59.3978 -Run93TL_bottom_right.tif,811,71.2855,59.9754 -Run93TL_top_left.tif,1002,69.5337,58.4393 -Run93TL_top_right.tif,722,67.4663,58.0945 -Run93TR_bottom_left.tif,656,70.0202,59.9293 -Run93TR_bottom_right.tif,724,69.2690,58.7739 -Run93TR_top_left.tif,638,69.2522,59.1685 -Run93TR_top_right.tif,622,65.6721,57.2075 -Run94BL_bottom_left.tif,724,72.7891,63.2531 -Run94BL_bottom_right.tif,667,68.6496,60.0873 -Run94BL_top_left.tif,680,70.4446,60.7505 -Run94BL_top_right.tif,700,67.2472,59.9150 -Run94BR_bottom_left.tif,625,68.6729,60.0124 -Run94BR_bottom_right.tif,715,69.8468,60.5454 -Run94BR_top_left.tif,713,69.1809,61.3864 -Run94BR_top_right.tif,700,69.2023,60.7073 -Run94TL_bottom_left.tif,721,66.2680,60.1934 -Run94TL_bottom_right.tif,711,66.6941,60.5324 -Run94TL_top_left.tif,689,54.1923,54.7724 -Run94TL_top_right.tif,732,55.7316,55.7025 -Run94TR_bottom_left.tif,746,67.9933,61.6238 -Run94TR_bottom_right.tif,706,71.5009,63.3167 -Run94TR_top_left.tif,831,56.6470,56.2516 -Run94TR_top_right.tif,640,58.2262,56.0677 -Run95BL_bottom_left.tif,1287,59.4204,49.7467 -Run95BL_bottom_right.tif,1344,60.2653,50.2134 -Run95BL_top_left.tif,1384,57.0885,47.2469 -Run95BL_top_right.tif,1202,56.3742,48.8710 -Run95BR_bottom_left.tif,1106,59.0633,50.2447 -Run95BR_bottom_right.tif,1098,59.2627,50.0606 -Run95BR_top_left.tif,1208,57.1846,48.4432 -Run95BR_top_right.tif,1258,57.3880,48.0663 -Run95TL_bottom_left.tif,1488,55.4627,47.1141 -Run95TL_bottom_right.tif,1117,55.7943,47.8515 -Run95TL_top_left.tif,1376,54.4935,45.5739 -Run95TL_top_right.tif,1347,55.6456,46.3931 -Run95TR_bottom_left.tif,1266,57.1368,47.8768 -Run95TR_bottom_right.tif,1280,56.4150,47.5306 -Run95TR_top_left.tif,1275,53.9213,46.3544 -Run95TR_top_right.tif,1323,55.6970,46.7743 -Run96BL_bottom_left.tif,946,81.4716,66.8392 -Run96BL_bottom_right.tif,935,78.8969,65.9078 -Run96BL_top_left.tif,996,79.3067,66.5361 -Run96BL_top_right.tif,961,76.8702,64.7877 -Run96BR_bottom_left.tif,945,79.1055,65.2842 -Run96BR_bottom_right.tif,992,78.3565,65.2164 -Run96BR_top_left.tif,795,82.1692,68.6034 -Run96BR_top_right.tif,834,77.1217,65.9654 -Run96TL_bottom_left.tif,974,77.9444,66.2459 -Run96TL_bottom_right.tif,964,79.6820,67.8896 -Run96TL_top_left.tif,1117,72.5188,62.9800 -Run96TL_top_right.tif,1145,73.8349,64.6927 -Run96TR_bottom_left.tif,1002,79.3563,67.7512 -Run96TR_bottom_right.tif,1034,79.8629,67.8174 -Run96TR_top_left.tif,1174,74.2631,64.7178 -Run96TR_top_right.tif,1219,73.3348,64.3888 -Run97BL_bottom_left.tif,748,72.1525,62.7537 -Run97BL_bottom_right.tif,845,72.5966,63.4762 -Run97BL_top_left.tif,731,75.2662,66.5062 -Run97BL_top_right.tif,874,76.1016,65.6679 -Run97BR_bottom_left.tif,908,73.5245,64.3480 -Run97BR_bottom_right.tif,812,70.0334,62.1014 -Run97BR_top_left.tif,758,75.5624,64.7533 -Run97BR_top_right.tif,812,76.5355,66.0415 -Run97TL_bottom_left.tif,716,80.9855,69.8526 -Run97TL_bottom_right.tif,859,83.5128,71.4261 -Run97TL_top_left.tif,843,74.1395,66.2786 -Run97TL_top_right.tif,989,76.2366,66.0444 -Run97TR_bottom_left.tif,775,82.5398,71.1333 -Run97TR_bottom_right.tif,870,82.2406,69.9679 -Run97TR_top_left.tif,1005,76.0687,66.5386 -Run97TR_top_right.tif,1096,76.2683,66.4643 -Run98BL_bottom_left.tif,861,62.4943,53.7813 -Run98BL_bottom_right.tif,911,61.8662,53.5910 -Run98BL_top_left.tif,885,63.3160,54.2327 -Run98BL_top_right.tif,924,64.1064,54.7245 -Run98BR_bottom_left.tif,929,64.0435,54.7269 -Run98BR_bottom_right.tif,856,61.9173,54.0969 -Run98BR_top_left.tif,941,61.5995,53.8130 -Run98BR_top_right.tif,915,61.0207,52.8442 -Run98TL_bottom_left.tif,868,63.9486,55.3599 -Run98TL_bottom_right.tif,962,62.6818,53.2927 -Run98TL_top_left.tif,882,62.4579,54.0340 -Run98TL_top_right.tif,995,62.4487,53.7561 -Run98TR_bottom_left.tif,861,59.8001,52.1466 -Run98TR_bottom_right.tif,710,61.0964,53.5852 -Run98TR_top_left.tif,899,62.3972,54.1222 -Run98TR_top_right.tif,785,62.7808,54.9179 -Run99BL_bottom_left.tif,771,61.3522,53.8194 -Run99BL_bottom_right.tif,749,61.2151,53.6448 -Run99BL_top_left.tif,750,63.8534,56.1084 -Run99BL_top_right.tif,731,64.7749,55.5593 -Run99BR_bottom_left.tif,779,62.2449,53.7981 -Run99BR_bottom_right.tif,726,60.6423,52.6025 -Run99BR_top_left.tif,667,64.6381,56.1325 -Run99BR_top_right.tif,645,62.5618,56.4065 -Run99TL_bottom_left.tif,632,68.0295,59.2606 -Run99TL_bottom_right.tif,508,69.5619,59.6741 -Run99TL_top_left.tif,721,62.8795,56.0574 -Run99TL_top_right.tif,580,60.8876,54.4500 -Run99TR_bottom_left.tif,695,68.7551,59.0520 -Run99TR_bottom_right.tif,729,68.8317,59.1706 -Run99TR_top_left.tif,717,61.8416,55.7990 -Run99TR_top_right.tif,782,63.9218,56.1049 -Run9BL_bottom_left.tif,531,87.5215,72.5567 -Run9BL_bottom_right.tif,562,86.6020,71.7408 -Run9BL_top_left.tif,470,88.7634,70.8565 -Run9BL_top_right.tif,536,85.7420,70.8279 -Run9BR_bottom_left.tif,546,85.7485,70.2368 -Run9BR_bottom_right.tif,702,84.7837,70.8949 -Run9BR_top_left.tif,576,84.5050,69.4574 -Run9BR_top_right.tif,723,82.0969,69.8843 -Run9TL_bottom_left.tif,632,83.7894,70.3827 -Run9TL_bottom_right.tif,715,85.1035,70.5480 -Run9TL_top_left.tif,688,72.5076,65.1390 -Run9TL_top_right.tif,730,73.0857,65.8406 -Run9TR_bottom_left.tif,654,85.4886,69.9978 -Run9TR_bottom_right.tif,725,81.0263,67.8472 -Run9TR_top_left.tif,735,72.4221,65.3244 -Run9TR_top_right.tif,696,72.0026,65.2024 diff --git a/data/nucleus-ae/training_log.csv b/data/nucleus-ae/training_log.csv deleted file mode 100644 index 54f989e91..000000000 --- a/data/nucleus-ae/training_log.csv +++ /dev/null @@ -1,51 +0,0 @@ -epoch,loss,mse,val_loss,val_mse -0,0.0019057313911616802,0.0019057313911616802,0.000757892441470176,0.000757892441470176 -1,0.0006863507442176342,0.0006863507442176342,0.0006237783236429095,0.0006237783236429095 -2,0.0005934207001700997,0.0005934207001700997,0.000551545643247664,0.000551545643247664 -3,0.0005358380731195211,0.0005358380731195211,0.0005096895038150251,0.0005096895038150251 -4,0.0005003710393793881,0.0005003710393793881,0.00048354826867580414,0.00048354826867580414 -5,0.0004797196597792208,0.0004797196597792208,0.0004698472039308399,0.0004698472039308399 -6,0.00046822341391816735,0.00046822341391816735,0.00046322046546265483,0.00046322046546265483 -7,0.00046043007750995457,0.00046043007750995457,0.00045706285163760185,0.00045706285163760185 -8,0.0004546154523268342,0.0004546154523268342,0.00045332268928177655,0.00045332268928177655 -9,0.0004500431823544204,0.0004500431823544204,0.0004500349750742316,0.0004500349750742316 -10,0.0004465840174816549,0.0004465840174816549,0.0004485051613301039,0.0004485051613301039 -11,0.000443572731455788,0.000443572731455788,0.00044423603685572743,0.00044423603685572743 -12,0.00044086179696023464,0.00044086179696023464,0.00044186340528540313,0.00044186340528540313 -13,0.00043875095434486866,0.00043875095434486866,0.0004407902015373111,0.0004407902015373111 -14,0.00043685498530976474,0.00043685498530976474,0.00043882307363674045,0.00043882307363674045 -15,0.0004350255476310849,0.0004350255476310849,0.0004386181535664946,0.0004386181535664946 -16,0.0004336510319262743,0.0004336510319262743,0.00043693115003407,0.00043693115003407 -17,0.00043212942546233535,0.00043212942546233535,0.0004385057254694402,0.0004385057254694402 -18,0.00043079021270386875,0.00043079021270386875,0.0004355933051556349,0.0004355933051556349 -19,0.0004295668622944504,0.0004295668622944504,0.00043590948916971684,0.00043590948916971684 -20,0.0004284556780476123,0.0004284556780476123,0.0004344172775745392,0.0004344172775745392 -21,0.0004274327075108886,0.0004274327075108886,0.0004330925294198096,0.0004330925294198096 -22,0.000426698534283787,0.000426698534283787,0.00043431425001472235,0.00043431425001472235 -23,0.00042583674076013267,0.00042583674076013267,0.0004339042934589088,0.0004339042934589088 -24,0.0004250472702551633,0.0004250472702551633,0.00043732518679462373,0.00043732518679462373 -25,0.0004242952854838222,0.0004242952854838222,0.00043338394607417285,0.00043338394607417285 -26,0.00042361646774224937,0.00042361646774224937,0.0004321066371630877,0.0004321066371630877 -27,0.0004229390760883689,0.0004229390760883689,0.000431342312367633,0.000431342312367633 -28,0.0004224515869282186,0.0004224515869282186,0.0004321499727666378,0.0004321499727666378 -29,0.0004218521644361317,0.0004218521644361317,0.00043025187915191054,0.00043025187915191054 -30,0.00042127748019993305,0.00042127748019993305,0.00043107953388243914,0.00043107953388243914 -31,0.0004206731100566685,0.0004206731100566685,0.00043049370287917554,0.00043049370287917554 -32,0.0004201804113108665,0.0004201804113108665,0.0004308088682591915,0.0004308088682591915 -33,0.0004197436210233718,0.0004197436210233718,0.0004296454135328531,0.0004296454135328531 -34,0.00041929836152121425,0.00041929836152121425,0.00043047548388130963,0.00043047548388130963 -35,0.00041880333446897566,0.00041880333446897566,0.00043053633999079466,0.00043053633999079466 -36,0.0004184541176073253,0.0004184541176073253,0.00043188611743971705,0.00043188611743971705 -37,0.0004179833922535181,0.0004179833922535181,0.00042958007543347776,0.00042958007543347776 -38,0.0004176366492174566,0.0004176366492174566,0.0004293396486900747,0.0004293396486900747 -39,0.0004172598128207028,0.0004172598128207028,0.0004307926574256271,0.0004307926574256271 -40,0.0004168885061517358,0.0004168885061517358,0.00043142098002135754,0.00043142098002135754 -41,0.00041648742626421154,0.00041648742626421154,0.000429533829446882,0.000429533829446882 -42,0.0004161580582149327,0.0004161580582149327,0.0004282962472643703,0.0004282962472643703 -43,0.0004158795636612922,0.0004158795636612922,0.0004285582108423114,0.0004285582108423114 -44,0.0004154836933594197,0.0004154836933594197,0.0004295226535759866,0.0004295226535759866 -45,0.000415201298892498,0.000415201298892498,0.00042949209455400705,0.00042949209455400705 -46,0.00041504326509311795,0.00041504326509311795,0.00042855917126871645,0.00042855917126871645 -47,0.0004147453582845628,0.0004147453582845628,0.0004288642085157335,0.0004288642085157335 -48,0.0004145278362557292,0.0004145278362557292,0.00042844994459301233,0.00042844994459301233 -49,0.0004142077814321965,0.0004142077814321965,0.000429660954978317,0.000429660954978317 diff --git a/environment.yml b/environment.yml index e8292f8a0..dbce09d02 100644 --- a/environment.yml +++ b/environment.yml @@ -16,7 +16,4 @@ dependencies: - jupyterlab-myst - 'nodejs>=20,<21' - mystmd - - tifffile - - tensorflow - - pillow - vizarr \ No newline at end of file diff --git a/figures/Virtual_microscopy.png b/figures/Virtual_microscopy.png new file mode 100644 index 000000000..3bb40cc2f Binary files /dev/null and b/figures/Virtual_microscopy.png differ diff --git a/figures/anaphase.png b/figures/anaphase.png deleted file mode 100644 index acb2c27e9..000000000 Binary files a/figures/anaphase.png and /dev/null differ diff --git a/figures/cellbrowser.png b/figures/cellbrowser.png deleted file mode 100644 index 5ca0f6800..000000000 Binary files a/figures/cellbrowser.png and /dev/null differ diff --git a/figures/fig2a.png b/figures/fig2a.png deleted file mode 100644 index eb3bdae16..000000000 Binary files a/figures/fig2a.png and /dev/null differ diff --git a/figures/fig2b.png b/figures/fig2b.png deleted file mode 100644 index 7a3ed9065..000000000 Binary files a/figures/fig2b.png and /dev/null differ diff --git a/figures/fig2c.png b/figures/fig2c.png deleted file mode 100644 index d080c4ae0..000000000 Binary files a/figures/fig2c.png and /dev/null differ diff --git a/figures/fig2d.png b/figures/fig2d.png deleted file mode 100644 index 1e1dbf7dc..000000000 Binary files a/figures/fig2d.png and /dev/null differ diff --git a/figures/fig2e.png b/figures/fig2e.png deleted file mode 100644 index af652d501..000000000 Binary files a/figures/fig2e.png and /dev/null differ diff --git a/figures/fig2f.png b/figures/fig2f.png deleted file mode 100644 index f75c8c4cd..000000000 Binary files a/figures/fig2f.png and /dev/null differ diff --git a/figures/fig2g.png b/figures/fig2g.png deleted file mode 100644 index a778a3b22..000000000 Binary files a/figures/fig2g.png and /dev/null differ diff --git a/figures/fig2h.png b/figures/fig2h.png deleted file mode 100644 index 62261291e..000000000 Binary files a/figures/fig2h.png and /dev/null differ diff --git a/figures/fig2i.png b/figures/fig2i.png deleted file mode 100644 index ae87fbeeb..000000000 Binary files a/figures/fig2i.png and /dev/null differ diff --git a/figures/fig2j.png b/figures/fig2j.png deleted file mode 100644 index abdf35ec9..000000000 Binary files a/figures/fig2j.png and /dev/null differ diff --git a/figures/fig4.png b/figures/fig4.png deleted file mode 100644 index 2679bedbb..000000000 Binary files a/figures/fig4.png and /dev/null differ diff --git a/figures/sfig1a.png b/figures/sfig1a.png deleted file mode 100644 index b38d2f7de..000000000 Binary files a/figures/sfig1a.png and /dev/null differ diff --git a/figures/sfig2a.png b/figures/sfig2a.png deleted file mode 100644 index dce005ab8..000000000 Binary files a/figures/sfig2a.png and /dev/null differ diff --git a/figures/summary.png b/figures/summary.png new file mode 100644 index 000000000..3c493df1b Binary files /dev/null and b/figures/summary.png differ diff --git a/figures/telophase.png b/figures/telophase.png deleted file mode 100644 index 9fbb2ab91..000000000 Binary files a/figures/telophase.png and /dev/null differ diff --git a/figures/transfectedinfectedmodel.png b/figures/transfectedinfectedmodel.png new file mode 100644 index 000000000..da6e24253 Binary files /dev/null and b/figures/transfectedinfectedmodel.png differ diff --git a/myst.doi.bib b/myst.doi.bib new file mode 100644 index 000000000..9e1e43e20 --- /dev/null +++ b/myst.doi.bib @@ -0,0 +1,292 @@ +% AUTOGENERATED FILE - EDITS MAY BE LOST +% To regenerate, run `myst build --doi-bib` + +@article{Broering_2005, + author = {Broering, Teresa J. and Arnold, Michelle M. and Miller, Cathy L. and Hurt, Jessica A. and Joyce, Patricia L. and Nibert, Max L.}, + journal = {Journal of Virology}, + doi = {10.1128/jvi.79.10.6194-6206.2005}, + issn = {1098-5514}, + number = {10}, + year = {2005}, + month = {5}, + pages = {6194--6206}, + publisher = {American Society for Microbiology}, + title = {Carboxyl-{Proximal} {Regions} of {Reovirus} {Nonstructural} {Protein} $\mu${NS} {Necessary} and {Sufficient} for {Forming} {Factory}-{Like} {Inclusions}}, + url = {http://dx.doi.org/10.1128/JVI.79.10.6194-6206.2005}, + volume = {79}, +} + + +@article{Moore_2023, + author = {Moore, Josh and Basurto-Lozada, Daniela and Besson, S{\' e}bastien and Bogovic, John and Bragantini, Jord{\~ a}o and Brown, Eva M. and Burel, Jean-Marie and Casas Moreno, Xavier and de Medeiros, Gustavo and Diel, Erin E. and Gault, David and Ghosh, Satrajit S. and Gold, Ilan and Halchenko, Yaroslav O. and Hartley, Matthew and Horsfall, Dave and Keller, Mark S. and Kittisopikul, Mark and Kovacs, Gabor and K{\" u}pc{\" u} Yolda{\c s}, Ayb{\" u}ke and Kyoda, Koji and le Tournoulx de la Villegeorges, Albane and Li, Tong and Liberali, Prisca and Lindner, Dominik and Linkert, Melissa and L{\" u}thi, Joel and Maitin-Shepard, Jeremy and Manz, Trevor and Marconato, Luca and McCormick, Matthew and Lange, Merlin and Mohamed, Khaled and Moore, William and Norlin, Nils and Ouyang, Wei and {\" O}zdemir, Bugra and Palla, Giovanni and Pape, Constantin and Pelkmans, Lucas and Pietzsch, Tobias and Preibisch, Stephan and Prete, Martin and Rzepka, Norman and Samee, Sameeul and Schaub, Nicholas and Sidky, Hythem and Solak, Ahmet Can and Stirling, David R. and Striebel, Jonathan and Tischer, Christian and Toloudis, Daniel and Virshup, Isaac and Walczysko, Petr and Watson, Alan M. and Weisbart, Erin and Wong, Frances and Yamauchi, Kevin A. and Bayraktar, Omer and Cimini, Beth A. and Gehlenborg, Nils and Haniffa, Muzlifah and Hotaling, Nathan and Onami, Shuichi and Royer, Loic A. and Saalfeld, Stephan and Stegle, Oliver and Theis, Fabian J. and Swedlow, Jason R.}, + journal = {Histochemistry and Cell Biology}, + doi = {10.1007/s00418-023-02209-1}, + issn = {1432-119X}, + number = {3}, + year = {2023}, + month = {7}, + pages = {223--251}, + publisher = {Springer Science}, + title = {OME-{Zarr}: a cloud-optimized bioimaging file format with international community support}, + url = {http://dx.doi.org/10.1007/s00418-023-02209-1}, + volume = {160}, +} + + +@article{Wohlmann_2024, + author = {Wohlmann, Jens}, + journal = {Journal of Cell Science}, + doi = {10.1242/jcs.262198}, + issn = {1477-9137}, + number = {20}, + year = {2024}, + month = {10}, + publisher = {The Company of Biologists}, + title = {Expanding the field of view -- a simple approach for interactive visualisation of electron microscopy data}, + url = {http://dx.doi.org/10.1242/jcs.262198}, + volume = {137}, +} + + +@article{Tenorio2018Reovirus, + author = {Tenorio, Raquel and Fern{\' a}ndez de Castro, Isabel and Knowlton, Jonathan J. and Zamora, Paula F. and Lee, Christopher H. and Mainou, Bernardo A. and Dermody, Terence S. and Risco, Cristina}, + journal = {mBio}, + doi = {10.1128/mbio.01253-18}, + editor = {Griffin, Diane E.}, + issn = {2161-2129}, + number = {4}, + year = {2018}, + month = {sep 5}, + publisher = {American Society for Microbiology}, + title = {Reovirus $\sigma${NS} and $\mu${NS} {Proteins} {Remodel} the {Endoplasmic} {Reticulum} to {Build} {Replication} {Neo}-{Organelles}}, + url = {http://dx.doi.org/10.1128/mBio.01253-18}, + volume = {9}, +} + + +@article{Snapp_2003, + author = {Snapp, Erik L. and Hegde, Ramanujan S. and Francolini, Maura and Lombardo, Francesca and Colombo, Sara and Pedrazzini, Emanuela and Borgese, Nica and Lippincott-Schwartz, Jennifer}, + journal = {The Journal of Cell Biology}, + doi = {10.1083/jcb.200306020}, + issn = {0021-9525}, + number = {2}, + year = {2003}, + month = {10}, + pages = {257--269}, + publisher = {Rockefeller University Press}, + title = {Formation of stacked {ER} cisternae by low affinity protein interactions}, + url = {http://dx.doi.org/10.1083/jcb.200306020}, + volume = {163}, +} + + +@article{Cranfill_2016, + author = {Cranfill, Paula J and Sell, Brittney R and Baird, Michelle A and Allen, John R and Lavagnino, Zeno and de Gruiter, H Martijn and Kremers, Gert-Jan and Davidson, Michael W and Ustione, Alessandro and Piston, David W}, + journal = {Nature Methods}, + doi = {10.1038/nmeth.3891}, + issn = {1548-7105}, + number = {7}, + year = {2016}, + month = {5}, + pages = {557--562}, + publisher = {Springer Science}, + title = {Quantitative assessment of fluorescent proteins}, + url = {http://dx.doi.org/10.1038/nmeth.3891}, + volume = {13}, +} + + +@inproceedings{Boerner_2023, + author = {Boerner, Timothy J. and Deems, Stephen and Furlani, Thomas R. and Knuth, Shelley L. and Towns, John}, + series = {PEARC \textquoteright{}23}, + booktitle = {Practice and {Experience} in {Advanced} {Research} {Computing}}, + doi = {10.1145/3569951.3597559}, + year = {2023}, + pages = {173--176}, + organization = {ACM}, + title = {ACCESS: Advancing {Innovation}: NSF\textquoteright{}s {Advanced} {Cyberinfrastructure} {Coordination} {Ecosystem}: Services \& {Support}}, + url = {http://dx.doi.org/10.1145/3569951.3597559}, +} + + +@article{Marqu_s_2020, + author = {Marqu{\' e}s, Guillermo and Pengo, Thomas and Sanders, Mark A}, + journal = {eLife}, + doi = {10.7554/elife.55133}, + issn = {2050-084X}, + year = {2020}, + month = {8}, + publisher = {eLife Sciences Publications, Ltd}, + title = {Imaging methods are vastly underreported in biomedical research}, + url = {http://dx.doi.org/10.7554/eLife.55133}, + volume = {9}, +} + + +@article{Lee_2024, + author = {Lee, Rachel M. and Eisenman, Leanna R. and Khuon, Satya and Aaron, Jesse S. and Chew, Teng-Leong}, + journal = {Journal of Cell Science}, + doi = {10.1242/jcs.261567}, + issn = {1477-9137}, + number = {1}, + year = {2024}, + month = {1}, + publisher = {The Company of Biologists}, + title = {Believing is seeing -- the deceptive influence of bias in quantitative microscopy}, + url = {http://dx.doi.org/10.1242/jcs.261567}, + volume = {137}, +} + + +@article{Faas_2012, + author = {Faas, Frank G.A. and Avramut, M. Cristina and M. van den Berg, Bernard and Mommaas, A. Mieke and Koster, Abraham J. and Ravelli, Raimond B.G.}, + journal = {Journal of Cell Biology}, + doi = {10.1083/jcb.201201140}, + issn = {0021-9525}, + number = {3}, + year = {2012}, + month = {8}, + pages = {457--469}, + publisher = {Rockefeller University Press}, + title = {Virtual nanoscopy: Generation of ultra-large high resolution electron microscopy maps}, + url = {http://dx.doi.org/10.1083/jcb.201201140}, + volume = {198}, +} + + +@article{Cobey_2024, + author = {Cobey, Kelly D. and Ebrahimzadeh, Sanam and Page, Matthew J. and Thibault, Robert T. and Nguyen, Phi-Yen and Abu-Dalfa, Farah and Moher, David}, + journal = {PLOS Biology}, + doi = {10.1371/journal.pbio.3002870}, + editor = {Lino de Oliveira, Cilene}, + issn = {1545-7885}, + number = {11}, + year = {2024}, + month = {11}, + pages = {e3002870}, + publisher = {Public Library of Science (PLoS)}, + title = {Biomedical researchers\textquoteright{} perspectives on the reproducibility of research}, + url = {http://dx.doi.org/10.1371/journal.pbio.3002870}, + volume = {22}, +} + + +@article{Begley2012Raise, + author = {Begley, C. Glenn and Ellis, Lee M.}, + journal = {Nature}, + doi = {10.1038/483531a}, + issn = {0028-0836}, + number = {7391}, + year = {2012}, + month = {mar 28}, + pages = {531--533}, + publisher = {{Springer Science and Business Media LLC}}, + title = {Raise standards for preclinical cancer research}, + url = {http://dx.doi.org/10.1038/483531a}, + volume = {483}, +} + + +@article{Prinz_2011, + author = {Prinz, Florian and Schlange, Thomas and Asadullah, Khusru}, + journal = {Nature Reviews Drug Discovery}, + doi = {10.1038/nrd3439-c1}, + issn = {1474-1784}, + number = {9}, + year = {2011}, + month = {8}, + pages = {712--712}, + publisher = {Springer Science}, + title = {Believe it or not: how much can we rely on published data on potential drug targets?}, + url = {http://dx.doi.org/10.1038/nrd3439-c1}, + volume = {10}, +} + + +@article{Errington_2021, + author = {Errington, Timothy M and Mathur, Maya and Soderberg, Courtney K and Denis, Alexandria and Perfito, Nicole and Iorns, Elizabeth and Nosek, Brian A}, + journal = {eLife}, + doi = {10.7554/elife.71601}, + issn = {2050-084X}, + year = {2021}, + month = {12}, + publisher = {eLife Sciences Publications, Ltd}, + title = {Investigating the replicability of preclinical cancer biology}, + url = {http://dx.doi.org/10.7554/eLife.71601}, + volume = {10}, +} + + +@article{Manz_2022, + author = {Manz, Trevor and Gold, Ilan and Patterson, Nathan Heath and McCallum, Chuck and Keller, Mark S. and Herr, Bruce W. and B{\" o}rner, Katy and Spraggins, Jeffrey M. and Gehlenborg, Nils}, + journal = {Nature Methods}, + doi = {10.1038/s41592-022-01482-7}, + issn = {1548-7105}, + number = {5}, + year = {2022}, + month = {5}, + pages = {515--516}, + publisher = {Springer Science}, + title = {Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web}, + url = {http://dx.doi.org/10.1038/s41592-022-01482-7}, + volume = {19}, +} + + +@article{Parker_2002, + author = {Parker, John S. L. and Broering, Teresa J. and Kim, Jonghwa and Higgins, Darren E. and Nibert, Max L.}, + journal = {Journal of Virology}, + doi = {10.1128/jvi.76.9.4483-4496.2002}, + issn = {1098-5514}, + number = {9}, + year = {2002}, + month = {5}, + pages = {4483--4496}, + publisher = {American Society for Microbiology}, + title = {Reovirus {Core} {Protein} $\mu$2 {Determines} the {Filamentous} {Morphology} of {Viral} {Inclusion} {Bodies} by {Interacting} with and {Stabilizing} {Microtubules}}, + url = {http://dx.doi.org/10.1128/JVI.76.9.4483-4496.2002}, + volume = {76}, +} + + +@article{Roebke_2019, + author = {Roebke, Katherine E. and Danthi, Pranav}, + journal = {Journal of Virology}, + doi = {10.1128/jvi.00199-19}, + editor = {Dermody, Terence S.}, + issn = {1098-5514}, + number = {11}, + year = {2019}, + month = {6}, + publisher = {American Society for Microbiology}, + title = {Cell {Entry}-{Independent} {Role} for the {Reovirus} $\mu$1 {Protein} in {Regulating} {Necroptosis} and the {Accumulation} of {Viral} {Gene} {Products}}, + url = {http://dx.doi.org/10.1128/jvi.00199-19}, + volume = {93}, +} + + +@article{Costantini_2012, + author = {Costantini, Lindsey M. and Fossati, Matteo and Francolini, Maura and Snapp, Erik Lee}, + journal = {Traffic}, + doi = {10.1111/j.1600-0854.2012.01336.x}, + issn = {1600-0854}, + number = {5}, + year = {2012}, + month = {2}, + pages = {643--649}, + publisher = {Wiley}, + title = {Assessing the {Tendency} of {Fluorescent} {Proteins} to {Oligomerize} {Under} {Physiologic} {Conditions}}, + url = {http://dx.doi.org/10.1111/j.1600-0854.2012.01336.x}, + volume = {13}, +} + + +@misc{https://doi.org/10.6075/j0rr1zcr, + author = {Kirkpatrick, Christine R. and Coakley, Kevin and Cragin, Melissa H. and Cramer, Catherine and McHenry, Kenton and Marini, Luigi and Kooper, Rob and Glasgow, James and Foster, Ian T. and Szalay, Alex S. and Simmel, Derek}, + doi = {10.6075/J0RR1ZCR}, + year = {2021}, + publisher = {UC San Diego Library Digital Collections}, + title = {Open {Storage} {Network} {Concept} {Paper}: Open {Storage} {Network} {Retrospective} \& the {Future} of {Distributed} {Storage} for {eInfrastructure}. {In} {San} {Diego} {Supercomputer} {Center} ({SDSC}) {Research} {Data} {Services} {Materials} {Collection}}, + url = {https://library.ucsd.edu/dc/object/bb56058395}, +} + diff --git a/myst.yml b/myst.yml index 723c7d8d9..b6b05bb2f 100644 --- a/myst.yml +++ b/myst.yml @@ -2,26 +2,27 @@ version: 1 project: id: msa-em-cell-browser-1 - title: Unbiased representative images using embedded microscopy maps - description: Using automated imaging and next generation file formats for honest presentation and archival of light microscopy data. - short_title: Re-Imaging the Wheel + title: Reimag(in)ing representative images + description: Web-based microscopy maps as an unbiased method to replicate highly magnified representative microscopy images. + short_title: Virtual Microscopy keywords: - NucleusNet + - Virtual - Microscopy - - Maps - - Virtual nanoscopy - - Reproducibility + - Map + - Replication - OME-Zarr + - Deep Zoom github: https://github.com/msa-em/cell-browser - jupyter: true - # jupyter: - # server: - # url: 'http://localhost:8888' - # token: '512ac78f14e1141db1fac17e8b4099c1e5bc7d589518b38c' + jupyter: true + # jupyter: + # server: + # url: 'http://localhost:8888' + # token: '512ac78f14e1141db1fac17e8b4099c1e5bc7d589518b38c' open_access: true license: CC-BY-4.0 banner: banner.png - thumbnail: thumbnail.webp + thumbnail: thumbnail.gif date: 2025-09-26 requirements: - 'Dockerfile' @@ -48,9 +49,29 @@ project: ror: 05bnh6r87 roles: - Conceptualization - - Project administration + - Data Curation + - Formal Analysis + - Investigation + - Resources + - Software + - Visualization - Writing - original draft - - Data collection, analysis and visualizations + - Writing - review & editing + - id: ajbrodrick + name: Andrew James Brodrick + email: ajb64@umd.edu + orcid: 0009-0000-6389-0643 + affiliations: + - id: maryland + department: + institution: University of Maryland + address: + ror: 047s2c258 + roles: + - Conceptualization + - Methodology + - Software + - Visualization - id: jslparker name: John Stuart Leslie Parker email: jsp7@cornell.edu @@ -58,10 +79,11 @@ project: affiliations: - id: cornell roles: - - Funding acquisition + - Funding Acquisition + - Supervision + - Project Administration + - Writing - review & editing abbreviations: - Barkley: Russell JR Barkley - Parker: John SL Parker ER: endoplasmic reticulum ROI: region of interest T1L: type 1 Lang @@ -70,8 +92,41 @@ project: MOI: multiplicity of infection DAPI: 4',6-Diamidino-2-phenylindole DNA: deoxyribonucleic acid - MSE: mean squared error PBS: phosphate buffered saline PFA: paraformaldehyde + DZI: deep zoom image + ZDC: Z-drift compensation + toc: + - file: 00_index.md + - file: 01_introduction.md + - title: Microscopy Maps + children: + - file: 02_approach.md + - file: 03_model.md + - file: 04_plasmids.md + - file: 05_virus.md + - title: Antibodies + children: + - file: 06_antibody_ER.md + - file: 07_antibody_reovirus.md + - file: 08_results.md + - file: 09_discussion.md + - title: Supplemental + children: + - file: 10_oser.md + - file: 11_video.md + - title: Replication Attempts + children: + - file: 12_replicate_one.md + - file: 13_replicate_two.md + - file: 14_replicate_three.md + - file: 15_replicate_four.md + - title: Repetition Experiments + children: + - file: 16_antibody_reovirus.md + - file: 17_saturated_maps.md + - file: 18_discarded_maps.md + - file: 19_archived_maps.md + - file: 20_metadata.md site: template: book-theme diff --git a/notebooks/experiment1_vizarr.ipynb b/notebooks/experiment1_vizarr.ipynb deleted file mode 100644 index c786b4d2a..000000000 --- a/notebooks/experiment1_vizarr.ipynb +++ /dev/null @@ -1,83 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "a76a9c97-3ed2-458d-811b-7d6d647f8df4", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "541e2b11d4f14addb75c9c9894627293", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "GridspecLayout(children=(, \n", - "
\n", - " Figure\n", - "
\n", - " \n", - " \n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: nucleusnet10k_cellbrowser\n", - "\n", - "%matplotlib widget\n", - "\n", - "import os, logging\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.widgets import Slider, RangeSlider, Button\n", - "from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar\n", - "import matplotlib.font_manager as fm\n", - "import fsspec\n", - "from tifffile import imread as tiff_imread\n", - "from urllib.parse import urlparse\n", - "\n", - "# ── Quiet mode: suppress HF/fsspec progress bars & noisy logs ────────────\n", - "os.environ[\"HF_HUB_DISABLE_PROGRESS_BARS\"] = \"1\"\n", - "os.environ[\"HF_HUB_DISABLE_SYMLINKS_WARNING\"] = \"1\"\n", - "os.environ[\"TQDM_DISABLE\"] = \"1\"\n", - "try:\n", - " from huggingface_hub.utils import disable_progress_bars\n", - " disable_progress_bars()\n", - "except Exception:\n", - " pass\n", - "for _name in (\"fsspec\", \"huggingface_hub\", \"urllib3\", \"datasets\"):\n", - " logging.getLogger(_name).setLevel(logging.ERROR)\n", - "\n", - "# ── Config ───────────────────────────────────────────────────────────────\n", - "REPO_ID = \"RussellBarkley/msa-em-figures\"\n", - "BRANCH = \"main\"\n", - "HF_GLOBS = [\n", - " f\"hf://datasets/{REPO_ID}@{BRANCH}/**/*.tif\",\n", - " f\"hf://datasets/{REPO_ID}@{BRANCH}/**/*.tiff\",\n", - "]\n", - "K_SAMPLES = 50\n", - "SEED = None\n", - "USE_SIMPLECACHE = True\n", - "\n", - "# Scale bar\n", - "PX_PER_UM = 8.0453\n", - "SCALER_LENGTH_UM = 1.0\n", - "\n", - "rng = np.random.default_rng(SEED)\n", - "fs = fsspec.filesystem(\"hf\")\n", - "\n", - "def _ensure_hf_uri(p: str) -> str:\n", - " return p if p.startswith(\"hf://\") else (\"hf://\" + p.lstrip(\"/\"))\n", - "\n", - "def _maybe_cache(uri: str) -> str:\n", - " return f\"simplecache::{uri}\" if USE_SIMPLECACHE else uri\n", - "\n", - "def _basename_from_uri(uri: str) -> str:\n", - " return os.path.basename(urlparse(uri).path)\n", - "\n", - "def _list_all_tiff_paths():\n", - " paths = []\n", - " for pat in HF_GLOBS:\n", - " try:\n", - " for p in fs.glob(pat):\n", - " paths.append(_ensure_hf_uri(p))\n", - " except Exception:\n", - " pass\n", - " return sorted(set(paths))\n", - "\n", - "ALL_PATHS = _list_all_tiff_paths()\n", - "MODE = \"files\" if len(ALL_PATHS) > 0 else \"dataset\"\n", - "\n", - "def _load_gray_from_uri(uri: str):\n", - " with fsspec.open(_maybe_cache(uri), \"rb\") as f:\n", - " arr = tiff_imread(f)\n", - " if arr.ndim == 3:\n", - " arr = arr[..., 0]\n", - " name = _basename_from_uri(uri)\n", - " return name, arr\n", - "\n", - "def _sample_and_load_files(k=K_SAMPLES):\n", - " k = min(k, len(ALL_PATHS))\n", - " idx = rng.choice(len(ALL_PATHS), size=k, replace=False)\n", - " chosen = [ALL_PATHS[i] for i in idx]\n", - " recs = [_load_gray_from_uri(u) for u in chosen]\n", - " recs.sort(key=lambda t: t[0])\n", - " filenames = [r[0] for r in recs]\n", - " images = [r[1] for r in recs]\n", - " return filenames, images\n", - "\n", - "def _sample_and_load_dataset(k=K_SAMPLES):\n", - " from datasets import load_dataset\n", - " ds = load_dataset(REPO_ID, split=\"train\", keep_in_memory=False)\n", - " k = min(k, len(ds))\n", - " idx = rng.choice(len(ds), size=k, replace=False)\n", - " subset = ds.select(sorted(idx.tolist()))\n", - " filenames, images = [], []\n", - " for ex in subset:\n", - " arr = np.asarray(ex[\"image\"])\n", - " if arr.ndim == 3:\n", - " arr = arr[..., 0]\n", - " name = ex.get(\"filename\", f\"sample_{len(filenames):05d}.tif\")\n", - " filenames.append(name)\n", - " images.append(arr)\n", - " return filenames, images\n", - "\n", - "def _sample_and_load(k=K_SAMPLES):\n", - " return _sample_and_load_files(k) if MODE == \"files\" else _sample_and_load_dataset(k)\n", - "\n", - "# ── Initial load (random 50) ─────────────────────────────────────────────\n", - "filenames, images = _sample_and_load()\n", - "if len(images) == 0:\n", - " raise RuntimeError(\"No images found in repo/dataset.\")\n", - "n = len(images)\n", - "\n", - "# ── Viewer ──────────────────────────────────────────────────────────────\n", - "img0 = images[0]\n", - "if np.issubdtype(img0.dtype, np.integer):\n", - " lo0, hi0 = 0, int(np.iinfo(img0.dtype).max)\n", - "else:\n", - " lo0, hi0 = float(np.nanmin(img0)), float(np.nanmax(img0))\n", - "if not np.isfinite(lo0): lo0 = 0.0\n", - "if not np.isfinite(hi0): hi0 = lo0 + 1.0\n", - "if hi0 <= lo0: hi0 = lo0 + 1.0\n", - "\n", - "fig, ax = plt.subplots(figsize=(6.5, 6.5))\n", - "plt.subplots_adjust(bottom=0.30, top=0.95)\n", - "\n", - "im = ax.imshow(img0, cmap='gray', vmin=lo0, vmax=hi0)\n", - "ax.set_axis_off()\n", - "title = ax.set_title(filenames[0], fontsize=10) # ← repo name removed\n", - "\n", - "# Scalebar\n", - "bar_px = SCALER_LENGTH_UM * PX_PER_UM\n", - "fontprops = fm.FontProperties(size=10, weight='bold')\n", - "scalebar = AnchoredSizeBar(\n", - " ax.transData, bar_px, f\"{SCALER_LENGTH_UM:g} μm\",\n", - " loc='lower right', pad=0.5, color='red',\n", - " frameon=False, size_vertical=1, fontproperties=fontprops\n", - ")\n", - "ax.add_artist(scalebar)\n", - "\n", - "# Contrast slider\n", - "contrast_ax = fig.add_axes([0.15, 0.12, 0.70, 0.03])\n", - "step = max(1, int((hi0 - lo0) // 1024)) if np.issubdtype(img0.dtype, np.integer) else None\n", - "contrast_slider = RangeSlider(\n", - " ax=contrast_ax, label='Min/max',\n", - " valmin=float(lo0), valmax=float(hi0),\n", - " valinit=(float(lo0), float(hi0)), valstep=step,\n", - ")\n", - "def update_contrast(_):\n", - " lo, hi = contrast_slider.val\n", - " im.set_clim(lo, hi)\n", - " fig.canvas.draw_idle()\n", - "contrast_slider.on_changed(update_contrast)\n", - "\n", - "# Index slider\n", - "idx_ax = fig.add_axes([0.15, 0.06, 0.70, 0.03])\n", - "idx_slider = Slider(ax=idx_ax, label='Index', valmin=0, valmax=n-1, valinit=0, valstep=1, valfmt='%0.0f')\n", - "\n", - "def update_image(_):\n", - " idx = int(idx_slider.val)\n", - " im.set_data(images[idx])\n", - " lo, hi = contrast_slider.val\n", - " im.set_clim(lo, hi)\n", - " title.set_text(filenames[idx]) # ← repo name removed\n", - " fig.canvas.draw_idle()\n", - "idx_slider.on_changed(update_image)\n", - "\n", - "# Resample (new random 50)\n", - "btn_ax = fig.add_axes([0.15, 0.18, 0.18, 0.04])\n", - "resample_btn = Button(btn_ax, \"Resample\")\n", - "def on_resample(event=None):\n", - " global filenames, images, n\n", - " filenames, images = _sample_and_load()\n", - " n = len(images)\n", - " idx_slider.valmax = n - 1\n", - " idx_slider.set_val(0)\n", - " im.set_data(images[0])\n", - " lo, hi = contrast_slider.val\n", - " im.set_clim(lo, hi)\n", - " title.set_text(filenames[0]) # ← repo name removed\n", - " fig.canvas.draw_idle()\n", - "resample_btn.on_clicked(on_resample)\n", - "\n", - "# Toolbar back/forward → prev/next index\n", - "tb = getattr(fig.canvas, \"toolbar\", None)\n", - "if tb is not None:\n", - " def _back_override(*args, **kwargs):\n", - " cur = int(idx_slider.val)\n", - " if cur > 0:\n", - " idx_slider.set_val(cur - 1)\n", - " def _forward_override(*args, **kwargs):\n", - " cur = int(idx_slider.val)\n", - " if cur < n - 1:\n", - " idx_slider.set_val(cur + 1)\n", - " tb.back = _back_override\n", - " tb.forward = _forward_override\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2ab_mnist_replication_example.ipynb b/notebooks/fig2ab_mnist_replication_example.ipynb deleted file mode 100644 index 8647077d8..000000000 --- a/notebooks/fig2ab_mnist_replication_example.ipynb +++ /dev/null @@ -1,270 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4ff4dda1", - "metadata": {}, - "source": [ - "# MNIST literature reproduction" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2f9a07c9", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "%matplotlib widget\n", - "\n", - "import os, gzip, struct, urllib.request\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# MNIST IDX mirror + cache\n", - "DATA_DIR = os.path.join(os.path.expanduser(\"~\"), \".cache\", \"mnist_idx\")\n", - "USE_MIRROR = \"https://storage.googleapis.com/cvdf-datasets/mnist/\"\n", - "FILES = {\n", - " \"train_images\": \"train-images-idx3-ubyte.gz\",\n", - " \"train_labels\": \"train-labels-idx1-ubyte.gz\",\n", - " \"test_images\": \"t10k-images-idx3-ubyte.gz\",\n", - " \"test_labels\": \"t10k-labels-idx1-ubyte.gz\",\n", - "}\n", - "\n", - "LABEL_OF_INTEREST = 4\n", - "GEOMED_MAX_ITERS = 1000\n", - "GEOMED_TOL = 1e-7\n", - "GEOMED_SUBSAMPLE = None # set to e.g. 3000 if geomedian is slow\n", - "\n", - "def _download_if_needed():\n", - " os.makedirs(DATA_DIR, exist_ok=True)\n", - " for fn in FILES.values():\n", - " path = os.path.join(DATA_DIR, fn)\n", - " if not os.path.exists(path):\n", - " urllib.request.urlretrieve(USE_MIRROR + fn, path)\n", - "\n", - "def _read_idx_images(path_gz):\n", - " with gzip.open(path_gz, \"rb\") as f:\n", - " magic, n, rows, cols = struct.unpack(\">IIII\", f.read(16))\n", - " if magic != 2051:\n", - " raise ValueError(f\"Invalid magic for images: {magic}\")\n", - " arr = np.frombuffer(f.read(rows * cols * n), dtype=np.uint8)\n", - " return arr.reshape(n, rows, cols)\n", - "\n", - "def _read_idx_labels(path_gz):\n", - " with gzip.open(path_gz, \"rb\") as f:\n", - " magic, n = struct.unpack(\">II\", f.read(8))\n", - " if magic != 2049:\n", - " raise ValueError(f\"Invalid magic for labels: {magic}\")\n", - " return np.frombuffer(f.read(n), dtype=np.uint8)\n", - "\n", - "def load_mnist_all():\n", - " _download_if_needed()\n", - " paths = {k: os.path.join(DATA_DIR, v) for k, v in FILES.items()}\n", - " x_tr = _read_idx_images(paths[\"train_images\"]).astype(np.float32) / 255.0\n", - " y_tr = _read_idx_labels(paths[\"train_labels\"])\n", - " x_te = _read_idx_images(paths[\"test_images\"]).astype(np.float32) / 255.0\n", - " y_te = _read_idx_labels(paths[\"test_labels\"])\n", - " X = np.concatenate([x_tr, x_te], axis=0)\n", - " y = np.concatenate([y_tr, y_te], axis=0)\n", - " return X, y\n", - "\n", - "def geometric_median_weiszfeld(X, max_iters=1000, tol=1e-7):\n", - " X = np.asarray(X, dtype=np.float64)\n", - " x = np.median(X, axis=0)\n", - " if not np.all(np.isfinite(x)):\n", - " x = np.mean(X, axis=0)\n", - " eps = 1e-12\n", - " for _ in range(max_iters):\n", - " diffs = X - x\n", - " dists = np.linalg.norm(diffs, axis=1)\n", - " hit = np.where(dists < eps)[0]\n", - " if hit.size:\n", - " return X[hit[0]].copy()\n", - " w = 1.0 / np.maximum(dists, eps)\n", - " x_new = (w[:, None] * X).sum(axis=0) / w.sum()\n", - " if np.linalg.norm(x_new - x) < tol:\n", - " return x_new\n", - " x = x_new\n", - " return x\n", - "\n", - "def svd_basis(A):\n", - " U, s, Vt = np.linalg.svd(A, full_matrices=False)\n", - " tol = s[0] * max(A.shape) * np.finfo(float).eps if s.size > 0 else 0.0\n", - " r = int(np.sum(s > tol)) if s.size > 0 else 0\n", - " if r == 0 and s.size > 0:\n", - " r = 1\n", - " return U[:, :r], s[:r], Vt[:r]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "935a60c8", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "# Compute theory reps for label 4 and choose practical reps\n", - "X_all, y_all = load_mnist_all()\n", - "X4 = X_all[y_all == LABEL_OF_INTEREST] # (N, 28, 28)\n", - "N, H, W = X4.shape\n", - "X4_flat = X4.reshape(N, H*W) # (N, 784)\n", - "\n", - "# Theoretical centers (pixel space)\n", - "mean_vec = np.mean(X4_flat, axis=0)\n", - "median_vec = np.median(X4_flat, axis=0)\n", - "if GEOMED_SUBSAMPLE is not None and GEOMED_SUBSAMPLE < X4_flat.shape[0]:\n", - " rng = np.random.default_rng(123)\n", - " take = rng.choice(X4_flat.shape[0], size=GEOMED_SUBSAMPLE, replace=False)\n", - " X_geo = X4_flat[take]\n", - "else:\n", - " X_geo = X4_flat\n", - "geomed_vec = geometric_median_weiszfeld(X_geo, max_iters=GEOMED_MAX_ITERS, tol=GEOMED_TOL)\n", - "\n", - "theory = {\n", - " \"mean\": mean_vec.reshape(H, W),\n", - " \"median\": median_vec.reshape(H, W),\n", - " \"geom_median\": geomed_vec.reshape(H, W)\n", - "}\n", - "\n", - "# SVD basis over all '4's\n", - "A = X4_flat.T # (784, N) columns are images\n", - "U_r, s_r, Vt_r = svd_basis(A) # U_r: (784, r)\n", - "C = U_r.T @ X4_flat.T # (r, N) coordinates of all real images\n", - "\n", - "def nearest_in_basis(xT_vec):\n", - " cT = U_r.T @ xT_vec # (r,)\n", - " dists = np.linalg.norm(C.T - cT[None, :], axis=1)\n", - " idx = int(np.argmin(dists))\n", - " return idx, float(dists[idx])\n", - "\n", - "chosen = {}\n", - "for name, vec in {\"mean\": mean_vec, \"median\": median_vec, \"geomedian\": geomed_vec}.items():\n", - " idx, dist = nearest_in_basis(vec)\n", - " chosen[name] = (idx, dist)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3226805e", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ae06bdb7442f48c99490c4af3974780a", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEsCAYAAACCOVFyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKQlJREFUeJzt3Xl0lPX1x/HPZJJMMgkJECBQDURAIMgiiBWx4gIWXChUEW1tkerBrbVq63JsS8Vji0dbwJZa0VNEaz21nha1oEdUFBfQlkXUKiQFWWpNG1Ag+zKZ7+8PfkyJAZ4rPBC+8n79JTM3d548k8zcj0+SG3HOOcE706dP19NPP601a9bss2bTpk067rjj9Pbbb+vEE088bMe2P8XFxbrxxht14403tvWhAPiCW7p0qc466yxt375d7du31yOPPKIbb7xRO3bsaOtDA/AFdeaZZ+rEE0/Ufffd19aHEuizM1kkEtFTTz2lCRMmtOlxIVhaWx8ApOXLlysajWrs2LHmj7n55pu1ZMmS1L+nTJlyRH3DPfLII2rfvn2r21esWKGrrrrq8B8QgCPOlClTFIlEdM0117S677rrrlMkEtGUKVNCe7xLLrlEZWVlofUDEOw///mPbrjhBvXu3VtZWVkqLCzUV77yFc2dO1e1tbVtfXgmkUhETz/9tKl2wYIFuuuuuw7tAR0i5eXlOvfcc9v6MGBAgDsCPPzww7r++uv1xhtvaMuWLfutdc4pkUgoNzdXBQUFh+kIw9O5c2fF4/G2PgwAR4iioiI98cQTqqurS91WX1+vP/7xj+revXuoj5Wdna0uXbqE2hPAvn344YcaMmSIXnjhBc2YMUNvv/22XnrpJd10001auHChXnrppbY+xNA0NTVJkjp27Kh27dq18dEcmK5duyoWi7X1YcCAANfGampq9OSTT+raa6/VBRdcoEceeaTF/UuXLlUkEtHixYs1bNgwxWIxvf7665o+fXrqxyKnT5+uRx99VM8884wikYgikYiWLl2a6vHhhx/qrLPOUjwe1+DBg/Xmm2+m7tt9pWzRokXq27ev4vG4Jk6cqJqaGj366KMqLi5Whw4ddP3116u5uTn1cY2Njbr11lt1zDHHKCcnR6ecckrqMZcuXarvfOc72rlzZ+p4pk+fLmnX5fo9f6xgx44duuqqq1RYWKisrCwNGDBAixYt2uf5ikQievDBB3XBBRcoHo+rpKREb775ptavX68zzzxTOTk5OvXUU7Vhw4YWH7dw4UKddNJJysrKUs+ePXXnnXcqkUik7p81a5YGDhyonJwcFRUV6brrrlN1dXWr87R48WKVlJQoNzdXY8eOVXl5+f6eXgABhg4dqu7du2vBggWp2xYsWKCioiINGTIkdZtzTvfee6969uyp7OxsDR48WH/+859b9HruuefUp08fZWdn66yzztKmTZta3P/ZnwzYsGGDxo8fr8LCQuXm5urkk09uNVAWFxdrxowZuuKKK9SuXTt1795dDz30UHgnAPgCu+6665Senq6VK1dq0qRJKikp0cCBA3XRRRfp2Wef1bhx41K1O3fu1FVXXaUuXbooLy9PZ599tt55550W/R544AH16tVLmZmZ6tu3rx577LEW9x+KGaG4uFiS9PWvf12RSCT1791z2MMPP6yePXsqFovJOaczzzyzxa+JNDQ06NZbb1VRUZFisZiOP/54zZs3b5/nrLi4WD/72c80efJk5ebmqkePHnrmmWe0detWjR8/Xrm5uRo4cKBWrlzZ4uOWL1+ukSNHKjs7W0VFRfr+97+vmpqa1P0VFRUaN26csrOzddxxx+nxxx9v9difvdJ42223qU+fPorH4+rZs6emTZuWCqp7noPHHntMxcXFys/P16WXXqqqqqp9fn4IiUObmjdvnhs2bJhzzrmFCxe64uJil0wmU/e/8sorTpIbNGiQe+GFF9z69evdtm3b3B133OEGDx7snHOuqqrKTZo0yY0dO9aVl5e78vJy19DQ4DZu3OgkuX79+rlFixa50tJSN3HiRNejRw/X1NTknHNu/vz5LiMjw51zzjlu9erV7tVXX3UFBQXuq1/9qps0aZJ7//333cKFC11mZqZ74oknUsf1zW9+040YMcK99tprbv369e4Xv/iFi8VirqyszDU0NLj77rvP5eXlpY6nqqrKOedcjx493OzZs51zzjU3N7vhw4e7E044wb3wwgtuw4YNbuHChe65557b5/mS5I455hj3pz/9yZWWlroJEya44uJid/bZZ7vnn3/effDBB2748OFu7NixqY95/vnnXV5ennvkkUfchg0b3AsvvOCKi4vd9OnTUzWzZ892L7/8svvwww/dkiVLXN++fd21116bun/3eRo9erRbsWKFW7VqlSspKXHf/OY3D/CZB3D55Ze78ePHu1mzZrlRo0albh81apSbPXu2Gz9+vLv88sudc8796Ec/cv369XPPP/+827Bhg5s/f76LxWJu6dKlzjnntmzZ4mKxmLvhhhvcunXr3B/+8AdXWFjoJLnt27c753Z9H+fn56ceZ82aNW7u3Lnu3XffdWVlZe7HP/6xy8rKcps3b07V9OjRw3Xs2NHdf//97p///Ke7++67XVpamlu7du0hPz+Az7Zt2+YikYi7++67A2uTyaQ77bTT3Lhx49yKFStcWVmZ++EPf+gKCgrcJ5984pxzbsGCBS4jI8Pdf//9rrS01M2cOdNFo1H38ssvp/ocihmhoqLCSXLz58935eXlrqKiwjnn3B133OFycnLcmDFj3OrVq90777zjksmkO+OMM9wNN9yQ6j9p0iRXVFTkFixY4DZs2OBeeumlFvPUZ+1+zZk7d64rKytz1157rWvXrp0bO3ase/LJJ1OfV0lJSWpefPfdd11ubq6bPXu2Kysrc8uWLXNDhgxxU6ZMSfU999xz3YABA9zy5cvdypUr3YgRI1x2dnZqJtt9/p566qnUv++66y63bNkyt3HjRvfXv/7VFRYWunvuuSd1/x133OFyc3PdhRde6N577z332muvua5du7of/ehHgc85Dg4Bro2NGDHC3Xfffc4555qamlynTp3ciy++mLp/d4B7+umnW3zcngHOuf8NQnvaHeB+97vfpW57//33naTU8DF//nwnya1fvz5Vc/XVV7t4PJ4KXc45N2bMGHf11Vc755xbv369i0Qi7t///neLxxs1apS7/fbbU333HJR22zPALV682KWlpbnS0tL9naIWJLmf/OQnqX+/+eabTpKbN29e6rY//vGPLisrK/Xv008/3c2YMaNFn8cee8x169Ztn4/z5JNPuoKCgtS/93ae7r//fldYWGg+dgAt7X7d2rp1q4vFYm7jxo1u06ZNLisry23dujUV4Kqrq11WVpZbvnx5i4+/8sor3Te+8Q3nnHO33357i4HGOeduu+22/Qa4venfv7+bM2dO6t89evRw3/rWt1L/TiaTrkuXLu6BBx44yM8e+GJ76623nCS3YMGCFrcXFBS4nJwcl5OT42699VbnnHNLlixxeXl5rr6+vkVtr1693IMPPuic2zUvTZ06tcX9F198sTvvvPNS/z5UM8Jng41zu+awjIyMVKDbbc8AV1pa6iS1mOuCfPY1p7y83Ely06ZNa/V5lZeXO+ec+/a3v+2uuuqqFn1ef/11l5aW5urq6lLH8dZbb6XuX7t2rZO03wD3Wffee6876aSTWpyDeDzuKisrU7fdcsst7pRTTjF/vjgw6YftUh9aKS0t1d///vfUjw6lp6frkksu0cMPP6zRo0e3qB02bNgBP86gQYNS/92tWzdJuy6l9+vXT5IUj8fVq1evVE1hYaGKi4uVm5vb4raKigpJ0urVq+WcU58+fVo8TkNDw+f6vbw1a9bo2GOPbdXn83w+hYWFkqSBAwe2uK2+vl6VlZXKy8vTqlWrtGLFCv385z9P1TQ3N6u+vl61tbWKx+N65ZVXNGPGDH3wwQeqrKxUIpFQfX29ampqlJOTI6n1eerWrVvqnAA4cJ06ddL555+vRx99VM45nX/++erUqVPq/g8++ED19fU655xzWnxcY2Nj6scs165dq+HDhysSiaTuP/XUU/f7uDU1Nbrzzju1aNEiffzxx0okEqqrq2v1u8h7vuZEIhF17dqV733AaM/vSUn6+9//rmQyqcsuu0wNDQ2SpFWrVqm6urrVDFFXV5f6cce1a9e2+iNop512mn71q1+1uO1QzAj70qNHD3Xu3Hmf969Zs0bRaFRnnHHGPmv2xvI5SLtmua5du2rVqlVav359ix+LdM4pmUxq48aNKisrU3p6eotZsl+/fnv9Y3N7+vOf/6z77rtP69evV3V1tRKJhPLy8lrUFBcXt/idP2ajw4MA14bmzZunRCKhY445JnWbc04ZGRnavn27OnTokLp9d4g4EBkZGan/3v1Cmkwm93r/7pq93bb7Y5LJpKLRqFatWqVoNNqibs/QFyQ7O9tcu6e9fT77+xyTyaTuvPNOXXjhha16ZWVlafPmzTrvvPN0zTXX6K677lLHjh31xhtv6Morr2zxs957OyeOLRxAKK644gp973vfkyTdf//9Le7b/b387LPPtni9lJT6hfsD+V685ZZbtHjxYv3yl79U7969lZ2drYkTJ6qxsbFF3f5eDwHsXe/evRWJRLRu3boWt/fs2VNSyxkgmUyqW7duLX5/f7c9Q8Znw6BzrtVtYc8I+xM0mx3OOefqq6/W97///Va9unfvrtLS0hYfZ/HWW2/p0ksv1Z133qkxY8YoPz9fTzzxhGbOnLnPY939GLw+HnoEuDaSSCT0+9//XjNnztRXv/rVFvdddNFFevzxx1PDjEVmZmaLPzJyKA0ZMkTNzc2qqKjQ6aeffsDHM2jQIH300UcqKyv73FfhPo+hQ4eqtLRUvXv33uv9K1euVCKR0MyZM5WWtuvv+jz55JOH7HgAtDZ27NhUcBozZkyL+/r3769YLKYtW7bs8/9k9+/fv9Wf+X7rrbf2+5ivv/66pkyZoq9//euSpOrq6lZ/+ATAgSkoKNA555yj3/zmN7r++uv3G3aGDh2q//znP0pPT0/9kZDPKikp0RtvvKHJkyenblu+fLlKSkoO6jiDZgRpV0g5kBlr4MCBSiaTevXVV1v9ZFWYhg4dqvfff3+fn0NJSYkSiYRWrlypL3/5y5J2/RTY/nZiLlu2TD169NCPf/zj1G2bN28O9bhx4AhwbWTRokXavn27rrzySuXn57e4b+LEiZo3b97nCnDFxcVavHixSktLVVBQ0KpnmPr06aPLLrtMkydP1syZMzVkyBBt27ZNL7/8sgYOHKjzzjtPxcXFqq6u1pIlSzR48GDF4/FWP4ZwxhlnaOTIkbrooos0a9Ys9e7dW+vWrVMkEvlcO/GC/PSnP9UFF1ygoqIiXXzxxUpLS9O7776r9957Tz/72c/Uq1cvJRIJzZkzR+PGjdOyZcs0d+7c0B4fQLBoNKq1a9em/ntP7dq1080336ybbrpJyWRSX/nKV1RZWanly5crNzdXl19+ua655hrNnDlTP/jBD3T11Vdr1apVrf6q72f17t1bCxYs0Lhx4xSJRDRt2jT+zzEQot/+9rc67bTTNGzYME2fPl2DBg1SWlqaVqxYoXXr1umkk06SJI0ePVqnnnqqJkyYoHvuuUd9+/bVxx9/rOeee04TJkzQsGHDdMstt2jSpEkaOnSoRo0apYULF2rBggUHvYogaEaQds1YS5Ys0WmnnaZYLNbiJ6T2p7i4WJdffrmuuOIK/frXv9bgwYO1efNmVVRUaNKkSQd13Hu67bbbNHz4cH33u9/V1KlTlZOTo7Vr1+rFF1/UnDlz1LdvX40dO1ZTp07VQw89pPT0dN144437vULYu3dvbdmyRU888YROPvlkPfvss3rqqadCO2YcHNYItJF58+Zp9OjRew1aF110kdasWaPVq1eb+02dOlV9+/bVsGHD1LlzZy1btizMw21l/vz5mjx5sn74wx+qb9+++trXvqa//e1vKioqkiSNGDFC11xzjS655BJ17txZ99577177/OUvf9HJJ5+sb3zjG+rfv79uvfXW0K8kjhkzRosWLdKLL76ok08+WcOHD9esWbPUo0cPSdKJJ56oWbNm6Z577tGAAQP0+OOP6+677w71GAAEy8vLa/X7Fbvddddd+ulPf6q7775bJSUlGjNmjBYuXKjjjjtO0q4fE/rLX/6ihQsXavDgwZo7d65mzJix38ebPXu2OnTooBEjRmjcuHEaM2aMhg4dGvrnBRytevXqpbffflujR4/W7bffrsGDB2vYsGGaM2eObr755tTC60gkoueee04jR47UFVdcoT59+ujSSy/Vpk2bUr/vNWHCBP3qV7/SL37xC51wwgl68MEHNX/+fJ155pkHdYxBM4IkzZw5Uy+++GKr9SYWDzzwgCZOnKjrrrtO/fr109SpU1v8ef8wDBo0SK+++qr++c9/6vTTT9eQIUM0bdq01N89kHbNbUVFRTrjjDN04YUXplY27Mv48eN100036Xvf+55OPPFELV++XNOmTQv1uHHgIo5f4gEAAAAAL3AFDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBPpYTaLRCJhtgPwBXSoVk/y+gMgCK8/ANpKmK8/XIEDAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPBEelsfAHCkikQih/0xnXOH/TEBAAB2Y/458nEFDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADyR3tYHcDQLc9O9pVeYjxcm63GlpQX//4Ywe1lqrI+ZTCZNvZqbm0OpsdY550y9AAAIC/PPLtbjstRZZxbmn118n3+4AgcAAAAAniDAAQAAAIAnCHAAAAAA4AkCHAAAAAB4ggAHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeIJF3v+vLRZAR6PRwJr0dNtTZKmzHpeFdTGjZVGi9dzHYrFQaiQpKysrsMZ6viznorGx0dSrvr4+lBpJqq2tDaxpamoy9fJ94SUAYO/aYpn04Z5/LI9nZZ1/LHVhzj+WucZaZ30eLbNBQ0ODqZdltqmrqzP1stT5Pv9wBQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8YVtz7znLpnvr1vn09OBTlpGRYeoVi8UCa3Jycky9srKyAmssxy5JyWQysKaxsdHUq6GhIbDG8vxIts+xffv2pl7t2rULrLE+j5bPsaamxtSrsrLSVGdheY4SiYSpl3PuYA8HAHCYWd5fre/B0Wg0sOZInX8yMzNNvcKcf+rr6011FvF4PLDGOv/k5+cH1lifR8vnWFVVZeq1c+fOwBrL8yMdHfMPV+AAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE+wyPv/WRd5WxZZWpZKSlJeXl5gTZiLqa2LvJuamgJrqqurTb0sdc3NzaZeubm5gTUFBQWmXh07dgyssZ4vy5JK6+dYW1trqrM4UpdPAkc7y+uUZdGxJH388ccHezg4yoU5/1i/bi3zT4cOHULrZV1MbZl/KisrTb0s59W6TNqyyNs6/3Tq1CmwxvJcS7ZzYTmnkn2uxC5cgQMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPpLf1ARwp0tJsWTY9PfiUZWVlmXrl5eUF1nTu3NnUKz8/P7AmGo2aetXW1gbWJJNJU6/6+vrQesViscAay3mQ7OfVIpFIBNZYz72lV1NTk6lXc3NzYI1zztQL2J+cnJzAmng8buq1devWgz2cNmN5jZKkkSNHhvaYr7zySmDNjh07Qns8+CUSiYRSI4U7/7Rr1y6wxvo+3bFjx8Aa64xnmX8s762SVFdXF1hjfQ/OzMwMrAlz/rEeV2Njo6nOgvnn8+EKHAAAAAB4ggAHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeIMABAAAAgCcIcAAAAADgiaNikfeRusiyffv2gTXWRZaWXtblk2EuN7QsebQ+nmVJbocOHUy9CgoKAmssS8gl6ZNPPgmsaWhoMPWyPKb1uI6GRZY4tKyvP8OGDQussX7dLl++PLDG+v10uA0ePNhUN3z48MCaiooKU6/XXnvNVAfsi3X+iUajgTXWZfaWmaVLly6mXpb382QyaepleU+0vm9alk5bj8syV1rOg7XOstDcyvp6bVl8bu1lWQru+/zDFTgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwRHpbH8CRIi3NlmUzMjICa3Jzc029OnToEFjTuXNnU6+8vLzAmsrKSlOvpqamwJqqqipTr5qamsCaWCxm6hWPxwNrrOerY8eOgTXbtm0z9WpsbAysqa2tNfWynC/L8yNJyWTSVAfsy6hRo0x1/fv3D6z54IMPTL0aGhpMdUeisWPHmuoGDBgQWPPOO++Yen3yySemOmBfwpx/cnJyTL0s78FdunQx9bLMUmHOP9ZelvfzrKwsUy/LeQ1z/rHOGfX19YE11dXVpl51dXWBNdbjcs6Z6nzGFTgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBNHxSLvSCQSWGNdZGlZupifn2/qVVhYGFjTtWtXU69oNBpYs2PHDlMvS9327dtNvSxLea2LPwsKCgJrLOdUsi1br6ioMPWyLKm0LrK0nK/m5mZTr6NhkSUO3PDhwwNrzj33XFMvy+vi6tWrTb2OVN27dw+sGTFihKmX5bWssbHR1AvYnzDnn8zMzMCadu3amXpZ3qu7detm6mVZMP7pp5+aelnqrLOU5f3cer46deoUWGM9X/F4PLDmo48+MvWqqqoKrLEsNJeYfz4vrsABAAAAgCcIcAAAAADgCQIcAAAAAHiCAAcAAAAAniDAAQAAAIAnCHAAAAAA4AkCHAAAAAB4ggAHAAAAAJ4gwAEAAACAJ9Lb+gAORiQSCa1XerrtVGRnZwfWdOrUydTrS1/6UmBN586dTb0qKysDa6qrq029du7cGVjT1NRk6hWLxQJrrOere/fugTVdu3Y19WpsbAysqaurM/WqqakJ5fEkKZlMmuosLN8fzrnQHg9Hhmg0aqq7+OKLA2sGDhxo6vXRRx8F1mzcuNHU60h1ySWXBNaccMIJpl719fWBNZs3bzb1Ag6W9TUjHo8H1lhnFsv806VLF1OvqqqqUGokafv27YE1Yc4/BQUFpl6W+aewsNDUyzKz1NbWhtbLer4s84h17j8a5h+uwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeIMABAAAAgCcIcAAAAADgCQIcAAAAAHiCAAcAAAAAnvB6kbdVWlpwTs3IyDD1at++fWCNdfmkZem05fEk29Jpy3mQpNzc3MCabt26mXpZFn/27dvX1KtPnz6BNdYlouXl5YE1iUTC1MuyMNK6KNXydWg9LsuSSt8XWaK14cOHm+pGjhwZWGNZtitJn3zySWBNdna2qdfhdsopp5jqLrvsssAa6yJdy+uPZUEuEMTy/mSdf/Ly8gJrrN8DlhkiPz/f1Mu6dNoizPknKysrsKakpMTUq1+/foE1nTp1MvWyzIvWOcPCOv+kpwdHkubmZlOvo2H+4QocAAAAAHiCAAcAAAAAniDAAQAAAIAnCHAAAAAA4AkCHAAAAAB4ggAHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeCJ47fkXQFpacE7Nysoy9crPzw+s6dSpk6lXx44dA2vatWtn6lVXVxdYU1xcbOqVm5sbWJNIJELr1bNnT1OvPn36BNbE43FTr23btgXWZGZmmnplZ2eHUiPZnkfruU8mk6HUwC/nnHOOqe64444LrLG+/li+hy+77DJTL8vrVH19valXr169AmsuvfRSU68BAwaY6iwsry0FBQWhPR6+eCKRiKnOMv9Y3+uO1PnH8npgnX8sj2l9D87JyQms6d27t6nX8ccfH1hjnX/S04NH/4yMDFOvMOcfy/PY3Nxs6mWt8xlX4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxwVi7wtCy+j0aipl2XhpbVXmEuUO3ToEFhjWd4oSUVFRYE11iWilkWWnTt3NvWyLLZtaGgw9bIseXTOmXpZWJapWuus597C2ivMc4FDy/r6E+brYteuXQNrxo8fb+p19tlnB9ZYv24ti4cLCwtNvcL8vmtsbAysORoW0eLQs3zdWpc2W+Yf6/dJmPNP+/btA2v69etn6mVZJm1lmX+srz+WBenWYw9z/rHMLNb5x/J+Y/36stT5Pv9wBQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8kd7WB3A4JJPJUGokqbq6OrDmv//9r6lXPB4PrNm5c6epV0ZGRmBNmNvk09NtXzqW48rMzDT1amxsDKz59NNPTb0sz9HWrVtNvSorKwNramtrTb0sn2Nzc7Opl+X5DvNrAkeGZ555xlR3/PHHB9b06dPH1CsajQbWWF9jLXVZWVmmXjk5OaY6izC/n/7xj38E1rz66qumXsD+WL4mrd+bNTU1gTXW982NGzcG1ljeWyXbnBGmMOcf67E3NDQE1mzbts3Uq7y8PLCmoqLC1Msyo9bV1Zl6Mf98PlyBAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA84fUib+sSPsuSSuuiQetyw7B6WRfRWpZBWpbtWuvat29v6lVUVBRYY13MaDmuf//736ZeZWVlgTWbN2829bI8j1VVVaZe9fX1gTVNTU2mXtblrPhiWblypalu8uTJgTVdu3Y19crLywusyc3NNfWyvLaccMIJpl7jxo0LrBk4cKCpl+X157333jP1mjNnTmBNaWmpqReOTm0x/1iXdIfVKx6Pm3rFYrHAGuv8Y1nSbZ1/jj322MAa6/xjmfGsM8u6desCa7Zs2WLqZVkezvxzaHAFDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADwRvHL+C8Cy6b6mpsbU67///W9gjXXr/L/+9a/AmvR021MUjUYDazIyMky98vPzA2u+9KUvmXpZNDU1meqcc4E1H330kanXpk2bAmsqKipMvSzPd319vamX5Vwkk0lTL8v5wtGrsbExsGbLli2H4Ug+v7/97W+mukgkElizc+dOUy/L+8hTTz1l6vX888+b6oCDZXm/qKurM/WyvCdWV1ebelneq9ti/snLywusOfbYY0290tKCr5FY36ctdZa5RpI2b94cWLN161ZTr8rKysCahoYGU69EIhFYw/zzP1yBAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8cVQs8rYs9LMstZVsy1xra2tNvSxLHi01km3hZTweN/Wy6NChg6nOsuTa+jlallxbl2/v2LEjsCbM5duWrxvJtqTyaFhQCezP9u3bTXXvvPNOaI9pWVD87LPPhvZ4QBgO9/xjXQoe5vxjWeRtnX8svayzgeU1Y9u2baZelmXYYS7ftn6OluXbzD+HBlfgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBPpbX0Ah4Nlc3uYm+Itm+klKRKJBNZEo1FTL4u0NFtez8zMDO0x6+rqAmssz48kNTY2BtZUVVWZejU1NQXWWL8mrMcP4PDauHFjYI3ldUWStm3bFljz6aefmnoBh4vl/cky11h7WYU5/8RisdB6ZWRkBNZYZ6n6+vrAmh07dph6NTQ0BNaEOf+0xdeEheXrRjo65jKuwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeIMABAAAAgCcIcAAAAADgCQIcAAAAAHiCAAcAAAAAnjgqFnlbWJf+WeqsiwYtiyXDXL6dlZUVWi/r+aqtrQ2ssS4+tyzctSzOlOxLui0sz7f1a8JaByDYxx9/HFhTWVlp6rVz586DPRzgiNQW84+lzjr/WJZvW+cfa51FXV1dYI11/rHMNkfq/BNmr6NhQbcVV+AAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAE+ltfQBfRNbN9Ja69HTbU5SZmRlKjVVjY6OpzvI5JhIJU6+mpqbAGutxWR/Twvp8Azi8amtrQ6kBEK60tODrB9Fo1NTLMtvEYjFTL8txWWYRSaqrqwussc4iDQ0NgTXW+SeZTAbWWOcay/liRjo0uAIHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeIMABAAAAgCcIcAAAAADgCQIcAAAAAHiCRd5tyLLcMMyl4JbljZJtGWRNTY2pl2XhpXVZuaVXmMfV3Nxs6uWcM9Ud7l4AABxOYc4sliXR1jrr+7llYbb1uCxzhnVZuaWXZXG4ZJvx2mL+wefDFTgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwRHpbH8DRzLLBvrm52dSrvr4+sCYSiZh6NTQ0BNakp9u+dCx11uNKJpOBNZZjl6S6urrAGss5tdYlEglTL8vXhKUGAIDDzfr+dLjnn7Q02/WKpqamwJqMjAxTL8v8E41GTb0sx2Wdf2prawNrLDOSJDU2NgbWWJ9Hy4zH/PM/XIEDAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADwRcSFuxbMuZMYulvNlXT5pqbP2CvO4LL3CXOQd5sJIS421juWT/3OozgWvPwCC8PpzZDjc84/1+QlzlrLWWTD/fDGEeS64AgcAAAAAniDAAQAAAIAnCHAAAAAA4AkCHAAAAAB4ggAHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeiLgQ14JbN90DOHqF+JLTAq8/AILw+gOgrYT5+sMVOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8QYADAAAAAE8Q4AAAAADAEwQ4AAAAAPAEAQ4AAAAAPEGAAwAAAABPEOAAAAAAwBMEOAAAAADwBAEOAAAAADxBgAMAAAAATxDgAAAAAMATBDgAAAAA8AQBDgAAAAA8EXHOubY+CAAAAABAMK7AAQAAAIAnCHAAAAAA4AkCHAAAAAB4ggAHAAAAAJ4gwAEAAACAJwhwAAAAAOAJAhwAAAAAeIIABwAAAACeIMABAAAAgCcIcAAAAADgCQIcAAAAAHiCAAcAAAAAniDAAQAAAIAnCHAAAAAA4In/AwK0X+Stt28fAAAAAElFTkSuQmCC", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "#| label: fig2a_data\n", - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(8.8, 3))\n", - "for ax, key, ttl in zip(\n", - " axes,\n", - " [\"mean\", \"median\", \"geom_median\"],\n", - " [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "):\n", - " ax.imshow(np.clip(theory[key], 0, 1), cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(ttl, fontsize=10)\n", - " ax.axis(\"off\")\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "23dba138", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "31638eda55f9455180bf953a5678af5a", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEsCAYAAACCOVFyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAISBJREFUeJzt3X201XO+B/DPrjjn9GSI0u2mQ02J0oOYZJARNYiQmCcaFnkYgzserplrZGWyMGGu64o7iWssrkW4xZIwnoqZipihTlOelpEVrqdSOJ3v/cNqjyPaW+2cvvV6/XX27/fZn993/8463/V9n9/e+1dIKaUgO2PHjo177rkn5s2b95U1r7zySuy4447x7LPPRt++fb+xsa1NbW1tnHXWWXHWWWc19VCATdyjjz4a+++/f7z77rvxrW99K2666aY466yz4r333mvqoQGbqMGDB0ffvn3j6quvbuqhlPTFNVmhUIi77747RowY0aTjorRmTT0AImbNmhXNmzePYcOGlf2cc845Jx5++OHi49GjR29Uf3A33XRTfOtb31pj++zZs+Pkk0/+5gcEbHRGjx4dhUIhTjnllDX2nXbaaVEoFGL06NEVO94xxxwTCxcurFg/oLQ333wzzjzzzOjWrVtUV1dHhw4d4rvf/W5MnDgxPvroo6YeXlkKhULcc889ZdVOmTIlxo0bt2EHtIEsWbIkvv/97zf1MCiDALcRuPHGG+OMM86IJ598Ml577bW11qaUor6+Plq3bh3t2rX7hkZYOdttt120bNmyqYcBbCQ6d+4ct99+e6xYsaK4beXKlXHbbbfFDjvsUNFj1dTURPv27SvaE/hqL730UvTr1y8efPDBGD9+fDz77LPx0EMPxdlnnx1Tp06Nhx56qKmHWDGffvppRERss8020aZNmyYezbrZfvvto6qqqqmHQRkEuCa2fPnyuOOOO+LUU0+NQw89NG666aZG+x999NEoFAoxffr0GDBgQFRVVcUTTzwRY8eOLb4tcuzYsXHzzTfHvffeG4VCIQqFQjz66KPFHi+99FLsv//+0bJly+jTp0889dRTxX2rr5RNmzYtevToES1btoyRI0fG8uXL4+abb47a2trYeuut44wzzohVq1YVn/fJJ5/EeeedF506dYpWrVrFd77zneIxH3300fjpT38a77//fnE8Y8eOjYjPLtd//m0F7733Xpx88snRoUOHqK6ujl69esW0adO+8nwVCoW4/vrr49BDD42WLVtGz54946mnnopFixbF4MGDo1WrVrHXXnvF4sWLGz1v6tSpsfvuu0d1dXXstNNOcfHFF0d9fX1x/5VXXhm9e/eOVq1aRefOneO0006LZcuWrXGepk+fHj179ozWrVvHsGHDYsmSJWv79QIl9O/fP3bYYYeYMmVKcduUKVOic+fO0a9fv+K2lFJcfvnlsdNOO0VNTU306dMn7rzzzka97r///ujevXvU1NTE/vvvH6+88kqj/V98Z8DixYvj8MMPjw4dOkTr1q1jjz32WGNBWVtbG+PHj48TTjgh2rRpEzvssEPccMMNlTsBsAk77bTTokWLFjFnzpwYNWpU9OzZM3r37h1HHXVU3HfffTF8+PBi7fvvvx8nn3xytG/fPtq2bRvf+9734rnnnmvU77rrrouuXbvGlltuGT169Ihbbrml0f4NsUaora2NiIgjjjgiCoVC8fHqddiNN94YO+20U1RVVUVKKQYPHtzoYyIff/xxnHfeedG5c+eoqqqKb3/72zFp0qSvPGe1tbVxySWXxHHHHRetW7eOLl26xL333htvvfVWHH744dG6devo3bt3zJkzp9HzZs2aFfvuu2/U1NRE586d4+c//3ksX768uH/p0qUxfPjwqKmpiR133DFuvfXWNY79xSuN559/fnTv3j1atmwZO+20U1x44YXFoPr5c3DLLbdEbW1tbLXVVnHsscfGhx9++JWvjwpJNKlJkyalAQMGpJRSmjp1aqqtrU0NDQ3F/X/84x9TRKTddtstPfjgg2nRokXp7bffThdddFHq06dPSimlDz/8MI0aNSoNGzYsLVmyJC1ZsiR9/PHH6eWXX04RkXbeeec0bdq0VFdXl0aOHJm6dOmSPv3005RSSpMnT05bbLFFOvDAA9MzzzyTHnvssdSuXbt00EEHpVGjRqUXXnghTZ06NW255Zbp9ttvL47rhz/8YRo0aFB6/PHH06JFi9IVV1yRqqqq0sKFC9PHH3+crr766tS2bdvieD788MOUUkpdunRJV111VUoppVWrVqWBAwemXXfdNT344INp8eLFaerUqen+++//yvMVEalTp07pf/7nf1JdXV0aMWJEqq2tTd/73vfSAw88kF588cU0cODANGzYsOJzHnjggdS2bdt00003pcWLF6cHH3ww1dbWprFjxxZrrrrqqvTII4+kl156KT388MOpR48e6dRTTy3uX32ehgwZkmbPnp3mzp2bevbsmX74wx+u428eOP7449Phhx+errzyynTAAQcUtx9wwAHpqquuSocffng6/vjjU0op/fKXv0w777xzeuCBB9LixYvT5MmTU1VVVXr00UdTSim99tprqaqqKp155plpwYIF6Q9/+EPq0KFDioj07rvvppQ++zveaqutiseZN29emjhxYnr++efTwoUL069+9atUXV2dXn311WJNly5d0jbbbJOuvfba9Le//S1deumlqVmzZmn+/Pkb/PxAzt5+++1UKBTSpZdeWrK2oaEh7b333mn48OFp9uzZaeHChekXv/hFateuXXrnnXdSSilNmTIlbbHFFunaa69NdXV1acKECal58+bpkUceKfbZEGuEpUuXpohIkydPTkuWLElLly5NKaV00UUXpVatWqWhQ4emZ555Jj333HOpoaEh7bfffunMM88s9h81alTq3LlzmjJlSlq8eHF66KGHGq2nvmj1nDNx4sS0cOHCdOqpp6Y2bdqkYcOGpTvuuKP4unr27FlcLz7//POpdevW6aqrrkoLFy5MM2fOTP369UujR48u9v3+97+fevXqlWbNmpXmzJmTBg0alGpqaoprstXn7+677y4+HjduXJo5c2Z6+eWX0//+7/+mDh06pMsuu6y4/6KLLkqtW7dORx55ZPrLX/6SHn/88bT99tunX/7ylyV/56wfAa6JDRo0KF199dUppZQ+/fTTtO2226YZM2YU968OcPfcc0+j530+wKX0j4XQ560OcL///e+L21544YUUEcXFx+TJk1NEpEWLFhVrxowZk1q2bFkMXSmlNHTo0DRmzJiUUkqLFi1KhUIh/f3vf290vAMOOCBdcMEFxb6fXyit9vkAN3369NSsWbNUV1e3tlPUSESkf/u3fys+fuqpp1JEpEmTJhW33Xbbbam6urr4eJ999knjx49v1OeWW25JHTt2/Mrj3HHHHaldu3bFx192nq699trUoUOHsscONLZ63nrrrbdSVVVVevnll9Mrr7ySqqur01tvvVUMcMuWLUvV1dVp1qxZjZ5/4oknph/84AcppZQuuOCCRgualFI6//zz1xrgvswuu+ySrrnmmuLjLl26pB//+MfFxw0NDal9+/bpuuuuW89XD5u2p59+OkVEmjJlSqPt7dq1S61atUqtWrVK5513XkoppYcffji1bds2rVy5slFt165d0/XXX59S+my9dNJJJzXaf/TRR6eDDz64+HhDrRG+GGxS+mwdtsUWWxQD3WqfD3B1dXUpIhqt60r54pyzZMmSFBHpwgsvXON1LVmyJKWU0k9+8pN08sknN+rzxBNPpGbNmqUVK1YUx/H0008X98+fPz9FxFoD3Bddfvnlaffdd290Dlq2bJk++OCD4rZzzz03fec73yn79bJuWnxjl/pYQ11dXfz5z38uvnWoRYsWccwxx8SNN94YQ4YMaVQ7YMCAdT7ObrvtVvy5Y8eOEfHZpfSdd945IiJatmwZXbt2LdZ06NAhamtro3Xr1o22LV26NCIinnnmmUgpRffu3Rsd5+OPP/5an8ubN29e/PM///Mafb7O6+nQoUNERPTu3bvRtpUrV8YHH3wQbdu2jblz58bs2bPjN7/5TbFm1apVsXLlyvjoo4+iZcuW8cc//jHGjx8fL774YnzwwQdRX18fK1eujOXLl0erVq0iYs3z1LFjx+I5AdbdtttuG4ccckjcfPPNkVKKQw45JLbddtvi/hdffDFWrlwZBx54YKPnffLJJ8W3Wc6fPz8GDhwYhUKhuH+vvfZa63GXL18eF198cUybNi3eeOONqK+vjxUrVqzxWeTPzzmFQiG23357f/tQps//TUZE/PnPf46Ghob40Y9+FB9//HFERMydOzeWLVu2xhpixYoVxbc7zp8/f40vQdt7773jd7/7XaNtG2KN8FW6dOkS22233VfunzdvXjRv3jz222+/r6z5MuW8hojP1nLbb799zJ07NxYtWtTobZEppWhoaIiXX345Fi5cGC1atGi0ltx5552/9MvmPu/OO++Mq6++OhYtWhTLli2L+vr6aNu2baOa2traRp/5szb6ZghwTWjSpElRX18fnTp1Km5LKcUWW2wR7777bmy99dbF7atDxLrYYostij+vnkgbGhq+dP/qmi/btvo5DQ0N0bx585g7d240b968Ud3nQ18pNTU1Zdd+3pe9nrW9xoaGhrj44ovjyCOPXKNXdXV1vPrqq3HwwQfHKaecEuPGjYttttkmnnzyyTjxxBMbvdf7y85JchcOqIgTTjghfvazn0VExLXXXtto3+q/5fvuu6/RfBkRxQ/cr8vf4rnn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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "#| label: fig2b_data\n", - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(8.8, 3))\n", - "for ax, key, ttl in zip(\n", - " axes,\n", - " [\"mean\", \"median\", \"geomedian\"],\n", - " [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "):\n", - " idx, _ = chosen[key]\n", - " ax.imshow(X4[idx], cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(ttl, fontsize=10)\n", - " ax.axis(\"off\")\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2cd_mnist_autoencoder_example.ipynb b/notebooks/fig2cd_mnist_autoencoder_example.ipynb deleted file mode 100644 index a26a3bb4e..000000000 --- a/notebooks/fig2cd_mnist_autoencoder_example.ipynb +++ /dev/null @@ -1,444 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "da41d574", - "metadata": {}, - "source": [ - "# MNIST autoencoder" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0278101b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "TensorFlow: 2.20.0\n" - ] - } - ], - "source": [ - "%matplotlib widget\n", - "\n", - "import os, math, random\n", - "import numpy as np\n", - "import h5py\n", - "import matplotlib.pyplot as plt\n", - "import tensorflow as tf\n", - "from tensorflow.keras.models import Model\n", - "from tensorflow.keras.layers import Input, Dense, Reshape, Conv2DTranspose, ReLU\n", - "from tensorflow.keras.datasets import mnist\n", - "from pathlib import Path\n", - "\n", - "np.random.seed(42)\n", - "tf.random.set_seed(42)\n", - "\n", - "print(\"TensorFlow:\", tf.__version__)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0c77339f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RESULTS_DIR: ..\\data\\mnist-ae\n" - ] - } - ], - "source": [ - "# ─────────────────────────────────────────────────────────\n", - "# CONFIG — set this back to your original style/path\n", - "# ─────────────────────────────────────────────────────────\n", - "RESULTS_DIR = Path(\"..\") / \"data\" / \"mnist-ae\" # ← change to your actual folder if needed\n", - "LATENTS_H5 = os.path.join(RESULTS_DIR, \"latents.h5\")\n", - "DECODER_WEIGHTS = os.path.join(RESULTS_DIR, \"decoder_weights.h5\")\n", - "\n", - "# Must match training\n", - "N_LAYERS = 2\n", - "BASE_FILTERS = 16\n", - "LATENT_DIM = 64\n", - "\n", - "# Geometric median settings\n", - "GEOMED_MAX_ITERS = 1000\n", - "GEOMED_TOL = 1e-7\n", - "GEOMED_SUBSAMPLE = None\n", - "\n", - "print(\"RESULTS_DIR:\", RESULTS_DIR)\n", - "assert os.path.exists(LATENTS_H5), f\"Missing file: {LATENTS_H5}\"\n", - "assert os.path.exists(DECODER_WEIGHTS), f\"Missing file: {DECODER_WEIGHTS}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "416ac830", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loaded Z: (70000, 64), labels: (70000,)\n" - ] - } - ], - "source": [ - "with h5py.File(LATENTS_H5, \"r\") as hf:\n", - " Z = hf[\"z\"][:].astype(np.float32) # (N, D)\n", - " labels = hf[\"labels\"][:].astype(np.int64) # (N,)\n", - "\n", - "N, D = Z.shape\n", - "print(f\"Loaded Z: {Z.shape}, labels: {labels.shape}\")\n", - "assert D == LATENT_DIM, f\"LATENT_DIM mismatch: expected {LATENT_DIM}, got {D}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9db62815", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ALL_IMAGES: (70000, 28, 28, 1) ALL_LABELS: (70000,)\n" - ] - } - ], - "source": [ - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", - "x_train = np.expand_dims(x_train.astype(\"float32\") / 255.0, -1)\n", - "x_test = np.expand_dims(x_test.astype(\"float32\") / 255.0, -1)\n", - "\n", - "ALL_IMAGES = np.concatenate([x_train, x_test], axis=0)\n", - "ALL_LABELS = np.concatenate([y_train, y_test], axis=0)\n", - "assert ALL_IMAGES.shape[0] == N, \"Mismatch between number of latents and images\"\n", - "\n", - "print(\"ALL_IMAGES:\", ALL_IMAGES.shape, \"ALL_LABELS:\", ALL_LABELS.shape)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "f5e3045d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Subset size for label 4: 6824 latents\n" - ] - } - ], - "source": [ - "target_label = 4\n", - "idx_subset = np.where(labels == target_label)[0]\n", - "\n", - "if idx_subset.size == 0:\n", - " raise ValueError(f\"No samples found with label == {target_label}\")\n", - "\n", - "Z_sub = Z[idx_subset]\n", - "IM_sub = ALL_IMAGES[idx_subset]\n", - "LBL_sub = labels[idx_subset]\n", - "\n", - "print(f\"Subset size for label {target_label}: {Z_sub.shape[0]} latents\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "bb09f689", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Decoder loaded from: ..\\data\\mnist-ae\\decoder_weights.h5\n" - ] - } - ], - "source": [ - "def build_decoder(n_layers=2, base_filters=16, latent_dim=64):\n", - " latent_in = Input((latent_dim,), name=\"z_sampling\")\n", - " spatial = 28 // (2**n_layers) # 28 -> 7 for 2 layers\n", - " channels = base_filters * (2**(n_layers-1))\n", - "\n", - " x = Dense(spatial * spatial * channels)(latent_in)\n", - " x = Reshape((spatial, spatial, channels))(x)\n", - "\n", - " for i in reversed(range(n_layers)):\n", - " f = base_filters * (2**i)\n", - " x = Conv2DTranspose(f, 3, strides=(2,2), padding=\"same\")(x)\n", - " x = ReLU()(x)\n", - "\n", - " out = tf.keras.layers.Conv2D(1, 3, padding=\"same\", activation=\"sigmoid\", name=\"decoder_output\")(x)\n", - " return Model(latent_in, out, name=\"decoder\")\n", - "\n", - "decoder = build_decoder(N_LAYERS, BASE_FILTERS, LATENT_DIM)\n", - "decoder.load_weights(DECODER_WEIGHTS)\n", - "print(\"Decoder loaded from:\", DECODER_WEIGHTS)\n", - "\n", - "_ = decoder.predict(np.zeros((1, LATENT_DIM), dtype=np.float32), verbose=0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fb3b0062", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Central latents computed for label==4 subset.\n" - ] - } - ], - "source": [ - "def geometric_median(points, tol=1e-7, max_iters=1000):\n", - " P = points.astype(np.float64)\n", - " x = P.mean(axis=0)\n", - " eps = 1e-12\n", - " for _ in range(max_iters):\n", - " diff = P - x\n", - " d = np.linalg.norm(diff, axis=1) + eps\n", - " w = 1.0 / d\n", - " x_new = (w[:, None] * P).sum(axis=0) / w.sum()\n", - " if np.linalg.norm(x_new - x) <= tol:\n", - " return x_new.astype(np.float32)\n", - " x = x_new\n", - " return x.astype(np.float32)\n", - "\n", - "mean_z = Z_sub.mean(axis=0)\n", - "median_z = np.median(Z_sub, axis=0)\n", - "\n", - "if GEOMED_SUBSAMPLE is None or GEOMED_SUBSAMPLE >= Z_sub.shape[0]:\n", - " gm_input = Z_sub\n", - "else:\n", - " sel = np.random.choice(Z_sub.shape[0], GEOMED_SUBSAMPLE, replace=False)\n", - " gm_input = Z_sub[sel]\n", - "\n", - "geom_z = geometric_median(gm_input, tol=GEOMED_TOL, max_iters=GEOMED_MAX_ITERS)\n", - "print(\"Central latents computed for label==4 subset.\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "166a095a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reconstructions: (3, 28, 28)\n" - ] - } - ], - "source": [ - "central_stack = np.stack([mean_z, median_z, geom_z], axis=0).astype(np.float32)\n", - "recons = decoder.predict(central_stack, verbose=0) # (3, 28, 28, 1)\n", - "recons = np.squeeze(recons, axis=-1) # -> (3, 28, 28)\n", - "print(\"Reconstructions:\", recons.shape)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9420572d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Closest (global) indices: [3639, 3639, 3639]\n", - "Distances: ['2.435483', '2.347138', '2.327151']\n", - "Labels : [4, 4, 4]\n" - ] - } - ], - "source": [ - "def nearest_idx(vec, Z):\n", - " diff = Z - vec[None, :]\n", - " d2 = np.sum(diff*diff, axis=1)\n", - " idx = int(np.argmin(d2))\n", - " dist = float(np.sqrt(d2[idx]))\n", - " return idx, dist\n", - "\n", - "mean_i_sub, mean_dist = nearest_idx(mean_z, Z_sub)\n", - "median_i_sub, median_dist = nearest_idx(median_z, Z_sub)\n", - "geom_i_sub, geom_dist = nearest_idx(geom_z, Z_sub)\n", - "\n", - "mean_idx_global = int(idx_subset[mean_i_sub])\n", - "median_idx_global = int(idx_subset[median_i_sub])\n", - "geom_idx_global = int(idx_subset[geom_i_sub])\n", - "\n", - "closest_global_indices = [mean_idx_global, median_idx_global, geom_idx_global]\n", - "closest_dists = [mean_dist, median_dist, geom_dist]\n", - "closest_labels = [int(labels[i]) for i in closest_global_indices] # should all be 4\n", - "closest_images = [ALL_IMAGES[i, ..., 0] for i in closest_global_indices]\n", - "\n", - "print(\"Closest (global) indices:\", closest_global_indices)\n", - "print(\"Distances:\", [f\"{d:.6f}\" for d in closest_dists])\n", - "print(\"Labels :\", closest_labels)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "13226f21", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f2fc6a826b3a4317a0f31a5177cb4088", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAEsCAYAAACbnn2RAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKI9JREFUeJzt3XtU1HX+x/H3MDPAcBcoQJSLlwDT1TAts/K2e7pomV1cbSu1q9W2tdvVOqV2t4ubna30JF3cvFR2OS2ezLaMLCmz2krEyhumInlDURBh+Pz+6DA/R9DvWxxF+zwf5/gHw2vefGdgPnxeMyNflzHGCAAAAADAOmGtfQAAAAAAgNZBIQQAAAAAS1EIAQAAAMBSFMIQe/bZZ8XlcknXrl0P+bpr164Vl8slr7zySuCyxYsXy4QJE6SysrJJPisrS4YMGXIYRxt6zz//fNDxN2rutgHA/l555RVxuVzicrnkk08+afJ5Y4x06tRJXC6X9O/fP2RfNysrS0aPHh34+JNPPjngMQAIve+//16uueYa6dixo/h8PvH5fNK5c2e54YYbZOnSpa19eCEza9YseeaZZw7pOr+3PdTo0aMlKysr6DKXyyUTJkxoleMBhTDkXnrpJRERKSkpkS+//PKQrpuWlibFxcUyePDgwGWLFy+WiRMnNlsIj0UHKoTN3TYAOJDY2FgpKChocnlRUZGsWrVKYmNjj+jXz8/Pl+LiYsnPzz+iXweAyLRp06Rnz57y5Zdfyq233iqFhYUyb948ue2226SkpER69eolq1atau3DDImWFEIb9lDFxcVy7bXXtvZhWMvT2gfwe7J06VL57rvvZPDgwTJv3jwpKCiQ0047zfF6fr9f6uvrJSIiQk4//fSjcKRH3+/5tgEIvT//+c8yc+ZMee655yQuLi5weUFBgfTp00d27tx5RL9+XFwcaxZwFHz++edy0003yeDBg2Xu3LkSHh4e+NzAgQPl5ptvljfffFN8Pl8rHmXrsGF/2Oj3fvuOdbxCGEKNz2Y//vjjcsYZZ8icOXOkuro6KNP4sv8TTzwhDz/8sGRnZ0tERIQsXLiwyVsCJkyYIHfeeaeIiGRnZx/wbVTz58+X/Px88fl8kpubG3iVslHjW7A+/vhjue666yQpKUni4uLkqquukt27d8umTZtk+PDhkpCQIGlpaXLHHXdIXV1d0Iy9e/fKww8/LLm5uRIRESEnnHCCjBkzRjZv3hzIZGVlSUlJiRQVFQWOtfEtAQd6u8OKFStk5MiRkpKSIhEREZKRkSFXXXWV1NbWHvB+bpz15JNPyqRJkyQrK0t8Pp/0799ffvrpJ6mrq5N77rlH2rZtK/Hx8TJs2DD59ddfm8x5/fXXpU+fPhIdHS0xMTFyzjnnyLfffhuUWbp0qYwYMSLwNbKysmTkyJFSVlbW7H28cOFCufHGGyU5OVmSkpLk4osvlo0bNx7wtgBo3siRI0VEZPbs2YHLduzYIW+99ZZcffXVTfKaNUpEpK6uTu666y5JTU2VqKgoOfPMM2XJkiVN5jX3llHWAyD0Hn30UXG73TJt2rSgMrivyy67TNq2bRt02dKlS+XCCy+UxMREiYyMlFNOOUXeeOONJtddtmyZDB06VNq0aSORkZHSo0cPefXVV4MyjY/3WbNmyd133y1paWkSExMjF1xwgVRUVEhVVZVcf/31kpycLMnJyTJmzBjZtWtX0AxjjDz//PPSo0cP8fl80qZNG7n00ktl9erVgUz//v1l3rx5UlZWFtgnuVwuETm0/WGjY30PJfLbepiTkyMRERGSl5cnM2bMaPa49n/L6ObNm+Wmm26SLl26SExMjJx44okycOBAWbRoUbO356mnnpLJkydLdna2xMTESJ8+feSLL7444P2A/RiERHV1tYmPjze9evUyxhgzffp0IyLmlVdeCcqtWbPGiIhJT083AwYMMHPnzjULFiwwa9asCXzu5ZdfNsYY88svv5hbbrnFiIh5++23TXFxsSkuLjY7duwwxhiTmZlp2rVrZ7p06WJmzJhhPvjgA3PZZZcZETFFRUWBr/nyyy8bETHZ2dnm9ttvNwsWLDCTJk0ybrfbjBw50uTn55uHH37YfPjhh+buu+82ImKefvrpwPX9fr8599xzTXR0tJk4caL58MMPzfTp0016errp0qWLqa6uNsYY880335gOHTqYU045JXCs33zzTdDtbrxtxhjzv//9z8TExJisrCwzdepU89FHH5nXXnvNDB8+3OzcufOA93XjrMzMTHPBBReYwsJC89prr5mUlBRz0kknmSuvvNJcffXV5v333zdTp041MTEx5oILLgia8cgjjxiXy2WuvvpqU1hYaN5++23Tp08fEx0dbUpKSgK5N9980zzwwAPmnXfeMUVF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bdt2xI8TwG/P5D/wwAMydepUeeSRR5rNaNeoxg3Dpk2bJD09PfD5+vr6JhvD/bEeAKHndrtl4MCBsmDBAikvLw8qQ126dBERaVIcGn+Hjxs3Ti6++OJm5+bk5IjIb4/58vLyJp9v/ONOjbMOV3JysrhcLlm0aFGgiOyrucsORLM/PB72UPuut/tr7rL9vfbaa9K/f3954YUXgi6vqqo6lMOFEoXwMPn9fnn11VelY8eOMn369CafLywslKefflref//9Fp1E/lh4hmPIkCEyZ84c8fv9jqfRONCrk/vz+XzSr18/efPNN+WRRx4J2aKscc4554jH45FVq1bJJZdccsCcy+USY0yThXz69Oni9/uP9GECEJH09HS58847ZcWKFTJq1KhmM9o1qvFE9jNnzpSePXsGLn/jjTekvr7+oMfBegAcGePGjZP3339fxo4dK3PnznV8u2ROTo507txZvvvuO3n00UcPmh00aJC88847snHjxqC/UjpjxgyJiooK2akOhgwZIo8//rhs2LBBhg8fftCsdp90MMfDHionJ0fS0tJk9uzZ8o9//CNQdMvKymTx4sVN/mrs/lwuV5P19vvvv5fi4uImbwHG4aMQHqb3339fNm7cKJMmTQpsNvbVtWtX+de//iUFBQUtKoTdunUTEZEpU6bIqFGjxOv1Sk5OzhE/KfO+RowYITNnzpTzzz9fbr31Vundu7d4vV5Zv369LFy4UIYOHSrDhg0LHO+cOXPk9ddflw4dOkhkZGTgNuxv8uTJcuaZZ8ppp50m99xzj3Tq1EkqKirkvffek2nTph2x25iVlSUPPvig3HfffbJ69Wo599xzpU2bNlJRUSFLliyR6OhomThxosTFxcnZZ58tTz75pCQnJ0tWVpYUFRVJQUGBJCQkHJFjA9DU448/ftDPa9eovLw8ueKKK+SZZ54Rr9crf/zjH2XZsmXy1FNPBZ3rsDmsB8CR0bdvX3nuuefklltukfz8fLn++uvl5JNPlrCwMCkvL5e33npLRCToMTpt2jQ577zz5JxzzpHRo0dLenq6bNu2TUpLS+Wbb76RN998U0RExo8fL4WFhTJgwAB54IEHJDExUWbOnCnz5s2TJ554QuLj40N2G66//noZM2aMLF26VM4++2yJjo6W8vJy+eyzz6Rbt25y4403ishv+6S3335bXnjhBenZs6eEhYXJqaeeeshf81jfQ4WFhclDDz0k1157rQwbNkyuu+46qayslAkTJjT7NtL9DRkyRB566CEZP3689OvXT3788Ud58MEHJTs72/EJPBw6CuFhKigokPDwcBkzZkyzn09OTpZhw4bJ3LlzA++7PhT9+/eXcePGyauvviovvviiNDQ0yMKFC5stn0eK2+2W9957T6ZMmSL//ve/5bHHHhOPxyPt2rWTfv36BRW+iRMnSnl5uVx33XVSVVUlmZmZB3yfePfu3WXJkiUyfvx4GTdunFRVVUlqaqoMHDjwgP8XKFTGjRsnXbp0kSlTpsjs2bOltrZWUlNTpVevXjJ27NhAbtasWXLrrbfKXXfdJfX19dK3b1/58MMPm/ynawCt51DWqIKCAklJSZFXXnlFnn32WenRo4e89dZbgT8IdjCsB8CRMXbsWOnTp49MmTJF/vnPf8rGjRvF5XJJu3bt5IwzzpCPPvpIBg4cGMgPGDBAlixZIo888ojcdtttsn37dklKSpIuXboEvUKXk5MjixcvlnvvvVduvvlmqampkby8PHn55Zdl9OjRIb0N06ZNk9NPP12mTZsmzz//vDQ0NEjbtm2lb9++0rt370Du1ltvlZKSErn33ntlx44dYn77i/+H/PWOhz3UNddcIyIikyZNkosvvliysrLk3nvvlaKiIsc/tHPfffdJdXW1FBQUyBNPPCFdunSRqVOnyjvvvNOiP2aIg3OZlvwUAgAAAACOe5x2AgAAAAAsRSEEAAAAAEtRCAEAAADAUhRCAAAAALAUhRAAAAAALEUhBAAAAABLUQgBAAAAwFIUQgAAAACwlKelV3S5XKE8DgAWMcYc1a/HegWgpVivABwvWrpe8QohAAAAAFiKQggAAAAAlqIQAgAAAIClKIQAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFiKQggAAAAAlqIQAgAAAIClKIQAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFiKQggAAAAAlqIQAgAAAIClKIQAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGAp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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Bac…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: fig2c_data\n", - "\n", - "titles = [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "fig1, axes1 = plt.subplots(1, 3, figsize=(9, 3), constrained_layout=True)\n", - "for ax, img, title in zip(axes1, recons, titles):\n", - " ax.imshow(img, cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(title)\n", - " ax.axis(\"off\")\n", - "fig1.canvas.header_visible = False\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "8050b87a", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "642efc305a434829a02c914e0735c21f", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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P/30GmPceuutqVAopPPPPz/NmzcvPfbYY6lPnz6pZcuWacWKFdV1jz76aLrxxhvT448/npYsWZJmz56d+vbtmw455JD07rvv1voeH3HEEWnMmDHpySefTFOnTk2tW7dO/fv3r/f3B/hc1XPp+eefT9/73vfSCSecUP3Yfffdl1q2bJk+/PDDdPTRR6e+ffumlIrvUSmldN5556VCoZCuueaatHDhwjRx4sRUUVGRWrVqlc4777zqusWLF6eISIsXL67eph9A49q8eXMqLS1Nffr02aH9nn766bTffvulk08+OT3yyCNpwYIFadSoUbXWGa+++mo64IADUufOndP06dPT/Pnz08iRI1NEpAkTJlTXVT3fO3bsmEaNGpUWLFhQvX7o379/+su//Mt09dVX11g/jRkzpsacLrzwwtSsWbN01VVXpQULFqSZM2emo446KrVt2za98847KaWUVqxYkU466aTUrl276nXS0qVLU0o7tj5Mae9YQ1X1wjPOOCP9y7/8S3r44YdTly5d0uGHH546duxYY8yISOPGjavxs7v00kvT7Nmz0zPPPJPmzZuXLrjggtSkSZMafbnqfCorK9Npp52WfvGLX6Rf/OIXqUePHql169Zp3bp12/xe8CcCYSOZPn16iog0efLklFJK69evT2VlZenkk0+uUVf1i9u5c+f0xz/+sc7HvviEv+OOO1JEpDfeeKPWMTt27JhatGiRVq1aVb1t48aNqU2bNuniiy+u3lb1hNy6eX3rW99KEZEmTpxYY3vPnj1Tr169qr+eNWtWiog0d+7cGnXPP/98ioh07733Vm/74iKtvnMbMGBAOuigg9Lvf//7WvXbUzXWsccem7Zs2VK9/e67704RkYYOHVqj/sorr0wRUR2k33rrrVRSUlLr+7F+/frUrl27NHz48G0ee/Pmzemjjz5KLVu2TJMmTareXvU9vuyyy2rU33777Ski0po1a3boHCFXXwyEVYu0l19+OaWUUu/evdOoUaNSSjV7TbE96pVXXkkRkf72b/+2Rt2MGTNSRNQbCLemH8DOeeedd1JEpBEjRtR6bPPmzWnTpk3V/z777LPqx4466qh03HHHpU2bNtXYZ8iQIal9+/bVa4MRI0ak5s2bp7feeqtG3Te/+c20//77V4eFquf71sGnav3wN3/zNzW2f+tb30pt2rSp/nrp0qW1XkxP6fMX9ktLS9O1115bvW3w4MG1wlBKO74+3NPXUFu2bEkdOnRIvXr1qvGze/PNN1OzZs3qDYRbq/p9OPXUU9OwYcNqnU+PHj3S5s2bq7cvW7YsRUSaNWtWcd+YzLlltJFMmzYtSktLY8SIERERUVZWFmeffXY8++yz8T//8z+16ocOHRrNmjXb6eP27NkzvvKVr1R/3aJFizjyyCNr3cIUEbXekbRbt24REbX+SLlbt2419p83b14cdNBBcfrpp8fmzZur//Xs2TPatWvXoHfh27BhQyxZsiSGDx8ehxxyyA7vHxExaNCgaNLkT7/C2zufiIi33norIiKefPLJ2Lx5c5x77rk1zqdFixbRt2/fGufz0UcfxXXXXRddunSJkpKSKCkpibKysvj444/jlVdeqTWnoUOH1vj6z/7szyIi6vx5ANvXt2/f6Ny5c9x///3xX//1X/H888/XebtosT1q8eLFERHx13/91zX2Hz58eJSU1P8n9foBfHmOP/74aNasWfW/u+66KyIiVq5cGa+++mr18/iLz/lBgwbFmjVr4rXXXouIiKeffjpOPfXUOPzww2uMPWrUqNiwYUMsXbq0xvYdWSe9//771beNzps3LwqFQpxzzjk15tOuXbs49thjd2idVMz6cG9YQ7322muxevXq+O53v1t9W2xERMeOHePEE08sao6TJ0+OXr16RYsWLaKkpCSaNWsWTz31VJ39dvDgwdG0adPqr/XbHeNNZRrBypUr41//9V/jrLPOipRS9TuCfvvb344HHngg7r///vjJT35SY5/27ds3yrEPPvjgWtuaN28eGzdurLW9TZs2Nb6uule/ru2ffPJJ9ddr166NdevWbfPe/v/7v//b4Xn/4Q9/iC1btsRhhx22w/tW2ZHziYjqc1q7dm1ERPTu3bvOcb/YIL/73e/GU089FT/84Q+jd+/e0apVqygUCjFo0KA6v8db/zyaN28eEVFnLbB9hUIhRo8eHffcc0988sknceSRR8bJJ59cq67YHvXee+9FRES7du1qPF5SUlJnL92afgCNq7y8PEpLS+tctM+cOTM2bNgQa9asqfHiStX/4VdffXVcffXVdY77xed8Xeutqr9HrOoJVRqyrigrK4u1a9dGSinatm1b53yOOOKIOrfXpZj14d6whtpWv63a9uabb253fhMnToyrrroqLrnkkrjllluivLw8mjZtGj/84Q/rDIT67c4RCBvB/fffHymlmDNnTsyZM6fW4w899FCMHz++xisXX3y1ZE9X9YYICxYsqPPxhrz9e5s2baJp06bxu9/9bment8PKy8sjImLOnDnRsWPHbdZ98MEHMW/evBg3blxcf/311ds//fTTeP/993f5PIHPX8m/8cYbY/LkyXHrrbfWWVNsj6paMLzzzjtRUVFR/fjmzZtrLQy3ph9A42vatGkMGDAgFi5cGGvWrKkRhrp37x4RUSs4VP0fPnbs2DjzzDPrHLdr164R8flzfs2aNbUer3pzp6qxdlZ5eXkUCoV49tlnq4PIF9W1bVuKWR/uDWuoL/bbrdW1bWsPP/xw9OvXL+67774a29evX78j06VIAuFO2rJlSzz00EPRuXPnmDp1aq3H582bF3fddVc88cQTDfoQ+T3hFY4hQ4bE7NmzY8uWLfV+jMa2rk5urbS0NPr27RuPPvpo3HrrrY3WlIsxcODAKCkpiddffz3OOuusbdYVCoVIKdVq5FOnTo0tW7bs6mkCEVFRURHXXHNNvPrqq3HeeefVWVNsj6r6IPsZM2bE8ccfX7395z//eWzevHm789APYNcYO3ZsPPHEE3HJJZfEnDlz6r1dsmvXrvHVr341Xnzxxfjxj3+83dpTTz01Hn/88Vi9enWNdymdPn167L///o32UQdDhgyJ2267Ld5+++0YPnz4dmuLXSdtz96whuratWu0b98+Zs2aFX/3d39XHXRXrVoVzz33XK13jd1aoVCo1W9feumlWLp0aa1bgNl5AuFOeuKJJ2L16tUxYcKE6sXGFx1zzDHxj//4jzFt2rQGBcIePXpERMSkSZPivPPOi2bNmkXXrl13+Ycyf9GIESNixowZMWjQoLjiiivihBNOiGbNmsXvfve7WLx4cZxxxhkxbNiw6vnOnj07HnnkkTjiiCOiRYsW1eewtYkTJ8Y3vvGN+NrXvhbXX399dOnSJdauXRu//OUvY8qUKbvsHCsrK+NHP/pR/OAHP4jf/va3cdppp0Xr1q1j7dq1sWzZsmjZsmXcfPPN0apVqzjllFPijjvuiPLy8qisrIwlS5bEtGnT4qCDDtolcwNqu+2227b7eLE9qlu3bnHOOefE3XffHc2aNYu/+Iu/iJdffjnuvPPOGp91WBf9AHaNk046KX7605/GmDFjolevXnHRRRfF0UcfHU2aNIk1a9bE3LlzIyJqPEenTJkS3/zmN2PgwIExatSoqKioiPfffz9eeeWVeOGFF+LRRx+NiIhx48bFvHnzon///nHjjTdGmzZtYsaMGTF//vy4/fbb48ADD2y0c7joooti9OjRsXz58jjllFOiZcuWsWbNmvi3f/u36NGjR1x66aUR8fk66bHHHov77rsvjj/++GjSpEn8+Z//+Q4fc09fQzVp0iRuueWW+P73vx/Dhg2LCy+8MNatWxc33XRTnbeRbm3IkCFxyy23xLhx46Jv377x2muvxY9+9KPo1KlTvS/gseMEwp00bdq02G+//WL06NF1Pl5eXh7Dhg2LOXPmVN93vSP69esXY8eOjYceeih+9rOfxWeffRaLFy+uM3zuKk2bNo1f/vKXMWnSpPinf/qn+MlPfhIlJSVx2GGHRd++fWsEvptvvjnWrFkTF154Yaxfvz46duy4zfvEjz322Fi2bFmMGzcuxo4dG+vXr4927drFgAEDtvm3QI1l7Nix0b1795g0aVLMmjUrPv3002jXrl307t07Lrnkkuq6mTNnxhVXXBHXXnttbN68OU466aRYtGhRrT+6BnafHelR06ZNi7Zt28aDDz4Y99xzT/Ts2TPmzp1b/YZg26MfwK5xySWXRJ8+fWLSpEnx93//97F69eooFApx2GGHxYknnhhPPfVUDBgwoLq+f//+sWzZsrj11lvjyiuvjD/84Q9x8MEHR/fu3WtcoevatWs899xzccMNN8Tll18eGzdujG7dusUDDzwQo0aNatRzmDJlSnz961+PKVOmxL333hufffZZdOjQIU466aQ44YQTquuuuOKKWLFiRdxwww3xwQcfRPr8Hf93+Hh7wxrqggsuiIiICRMmxJlnnhmVlZVxww03xJIlS+p9o50f/OAHsWHDhpg2bVrcfvvt0b1795g8eXI8/vjjDXozQ7avkBryWwgAAMBez8dOAAAAZEogBAAAyJRACAAAkCmBEAAAIFMCIQAAQKYEQgAAgEwJhAAAAJkSCAEAADJV0tAdC4VCY84DyEhK6Us9nn4FNJR+BewtGtqvXCEEAADIlEAIAACQKYEQAAAgUwIhAABApgRCAACATAmEAAAAmRIIAQAAMiUQAgAAZEogBAAAyJRACAAAkCmBEAAAIFMCIQAAQKYEQgAAgEwJhAAA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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Bac…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: fig2d_data\n", - "\n", - "titles2 = [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "fig2, axes2 = plt.subplots(1, 3, figsize=(9, 3), constrained_layout=True)\n", - "for ax, img, title in zip(axes2, closest_images, titles2):\n", - " ax.imshow(img, cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(title)\n", - " ax.axis(\"off\")\n", - "fig2.canvas.header_visible = False\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7003ab06", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'subset_size_label4': 6824,\n", - " 'mean': {'global_index': 3639, 'distance': 2.4354825019836426, 'label': 4},\n", - " 'median': {'global_index': 3639, 'distance': 2.3471381664276123, 'label': 4},\n", - " 'geom': {'global_index': 3639, 'distance': 2.32715106010437, 'label': 4}}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "summary = {\n", - " \"subset_size_label4\": int(Z_sub.shape[0]),\n", - " \"mean\": {\"global_index\": int(closest_global_indices[0]), \"distance\": float(closest_dists[0]), \"label\": int(closest_labels[0])},\n", - " \"median\": {\"global_index\": int(closest_global_indices[1]), \"distance\": float(closest_dists[1]), \"label\": int(closest_labels[1])},\n", - " \"geom\": {\"global_index\": int(closest_global_indices[2]), \"distance\": float(closest_dists[2]), \"label\": int(closest_labels[2])},\n", - "}\n", - "summary\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2e_mnist_replication_counterexample.ipynb b/notebooks/fig2e_mnist_replication_counterexample.ipynb deleted file mode 100644 index 4e2e97e0c..000000000 --- a/notebooks/fig2e_mnist_replication_counterexample.ipynb +++ /dev/null @@ -1,267 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4ff4dda1", - "metadata": {}, - "source": [ - "# MNIST literature reproduction" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2f9a07c9", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "%matplotlib widget\n", - "\n", - "import os, gzip, struct, urllib.request\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# MNIST IDX mirror + cache\n", - "DATA_DIR = os.path.join(os.path.expanduser(\"~\"), \".cache\", \"mnist_idx\")\n", - "USE_MIRROR = \"https://storage.googleapis.com/cvdf-datasets/mnist/\"\n", - "FILES = {\n", - " \"train_images\": \"train-images-idx3-ubyte.gz\",\n", - " \"train_labels\": \"train-labels-idx1-ubyte.gz\",\n", - " \"test_images\": \"t10k-images-idx3-ubyte.gz\",\n", - " \"test_labels\": \"t10k-labels-idx1-ubyte.gz\",\n", - "}\n", - "\n", - "LABEL_OF_INTEREST = 4\n", - "GEOMED_MAX_ITERS = 1000\n", - "GEOMED_TOL = 1e-7\n", - "GEOMED_SUBSAMPLE = None # set to e.g. 3000 if geomedian is slow\n", - "\n", - "def _download_if_needed():\n", - " os.makedirs(DATA_DIR, exist_ok=True)\n", - " for fn in FILES.values():\n", - " path = os.path.join(DATA_DIR, fn)\n", - " if not os.path.exists(path):\n", - " urllib.request.urlretrieve(USE_MIRROR + fn, path)\n", - "\n", - "def _read_idx_images(path_gz):\n", - " with gzip.open(path_gz, \"rb\") as f:\n", - " magic, n, rows, cols = struct.unpack(\">IIII\", f.read(16))\n", - " if magic != 2051:\n", - " raise ValueError(f\"Invalid magic for images: {magic}\")\n", - " arr = np.frombuffer(f.read(rows * cols * n), dtype=np.uint8)\n", - " return arr.reshape(n, rows, cols)\n", - "\n", - "def _read_idx_labels(path_gz):\n", - " with gzip.open(path_gz, \"rb\") as f:\n", - " magic, n = struct.unpack(\">II\", f.read(8))\n", - " if magic != 2049:\n", - " raise ValueError(f\"Invalid magic for labels: {magic}\")\n", - " return np.frombuffer(f.read(n), dtype=np.uint8)\n", - "\n", - "def load_mnist_all():\n", - " _download_if_needed()\n", - " paths = {k: os.path.join(DATA_DIR, v) for k, v in FILES.items()}\n", - " x_tr = _read_idx_images(paths[\"train_images\"]).astype(np.float32) / 255.0\n", - " y_tr = _read_idx_labels(paths[\"train_labels\"])\n", - " x_te = _read_idx_images(paths[\"test_images\"]).astype(np.float32) / 255.0\n", - " y_te = _read_idx_labels(paths[\"test_labels\"])\n", - " X = np.concatenate([x_tr, x_te], axis=0)\n", - " y = np.concatenate([y_tr, y_te], axis=0)\n", - " return X, y\n", - "\n", - "def geometric_median_weiszfeld(X, max_iters=1000, tol=1e-7):\n", - " X = np.asarray(X, dtype=np.float64)\n", - " x = np.median(X, axis=0)\n", - " if not np.all(np.isfinite(x)):\n", - " x = np.mean(X, axis=0)\n", - " eps = 1e-12\n", - " for _ in range(max_iters):\n", - " diffs = X - x\n", - " dists = np.linalg.norm(diffs, axis=1)\n", - " hit = np.where(dists < eps)[0]\n", - " if hit.size:\n", - " return X[hit[0]].copy()\n", - " w = 1.0 / np.maximum(dists, eps)\n", - " x_new = (w[:, None] * X).sum(axis=0) / w.sum()\n", - " if np.linalg.norm(x_new - x) < tol:\n", - " return x_new\n", - " x = x_new\n", - " return x\n", - "\n", - "def svd_basis(A):\n", - " U, s, Vt = np.linalg.svd(A, full_matrices=False)\n", - " tol = s[0] * max(A.shape) * np.finfo(float).eps if s.size > 0 else 0.0\n", - " r = int(np.sum(s > tol)) if s.size > 0 else 0\n", - " if r == 0 and s.size > 0:\n", - " r = 1\n", - " return U[:, :r], s[:r], Vt[:r]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "935a60c8", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "# Compute theory reps on the GLOBAL set (no labels) and choose practical reps\n", - "X_all, y_all = load_mnist_all()\n", - "N, H, W = X_all.shape\n", - "X_flat = X_all.reshape(N, H*W)\n", - "\n", - "# Theoretical centers (pixel space)\n", - "mean_vec = np.mean(X_flat, axis=0)\n", - "median_vec = np.median(X_flat, axis=0)\n", - "if GEOMED_SUBSAMPLE is not None and GEOMED_SUBSAMPLE < X_flat.shape[0]:\n", - " rng = np.random.default_rng(123)\n", - " take = rng.choice(X_flat.shape[0], size=GEOMED_SUBSAMPLE, replace=False)\n", - " X_geo = X_flat[take]\n", - "else:\n", - " X_geo = X_flat\n", - "geomed_vec = geometric_median_weiszfeld(X_geo, max_iters=GEOMED_MAX_ITERS, tol=GEOMED_TOL)\n", - "\n", - "theory = {\n", - " \"mean\": mean_vec.reshape(H, W),\n", - " \"median\": median_vec.reshape(H, W),\n", - " \"geom_median\": geomed_vec.reshape(H, W)\n", - "}\n", - "\n", - "# SVD basis over all '4's\n", - "A = X_flat.T # (784, N) columns are images\n", - "U_r, s_r, Vt_r = svd_basis(A) # U_r: (784, r)\n", - "C = U_r.T @ X_flat.T # (r, N) coordinates of all real images\n", - "\n", - "def nearest_in_basis(xT_vec):\n", - " cT = U_r.T @ xT_vec # (r,)\n", - " dists = np.linalg.norm(C.T - cT[None, :], axis=1)\n", - " idx = int(np.argmin(dists))\n", - " return idx, float(dists[idx])\n", - "\n", - "chosen = {}\n", - "for name, vec in {\"mean\": mean_vec, \"median\": median_vec, \"geomedian\": geomed_vec}.items():\n", - " idx, dist = nearest_in_basis(vec)\n", - " chosen[name] = (idx, dist)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3226805e", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "be89d957cfb94a43914d8f388af7a96b", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEsCAYAAACCOVFyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKR9JREFUeJzt3Xt0VOXVx/HfZJJMMhMSIISANiQCBaICglER74qFWilUEe1NqS68td7qbalFcWlxqQVsrRW7imitq9bVohZ0iYjFKmgFlNqFGAQF2ooFNIGEXCfzvH/wMhIjnA0cEh75fv4iMzv7PHNmzjl7c5LsiHPOCd6ZPHmynn32WS1fvnyXMWvXrtVhhx2md955R0cddVS7rW13ysrKdO211+raa6/t6KUA+IpbuHChTjvtNFVVValz58567LHHdO2116q6urqjlwbgK+rUU0/VUUcdpQceeKCjlxLoizVZJBLRM888o7Fjx3bouhAso6MXAGnx4sWKRqMaNWqU+XtuuOEGLViwIP31hAkTDqgD7rHHHlPnzp3bPL5kyRJdeuml7b8gAAecCRMmKBKJ6PLLL2/z3JVXXqlIJKIJEyaEtr3zzz9fq1atCi0fgGCffPKJrrnmGvXt21c5OTkqLi7WiSeeqBkzZqiurq6jl2cSiUT07LPPmmJnz56tu+66a/8uaD/ZsGGDvvnNb3b0MmBAA3cAePTRR3XVVVfp9ddf1/r163cb65xTMplUXl6eCgsL22mF4SkqKlI8Hu/oZQA4QJSUlOipp55SfX19+rGGhgb98Y9/VK9evULdVm5urrp37x5qTgC79uGHH2rIkCF66aWXNGXKFL3zzjt6+eWXdd1112nOnDl6+eWXO3qJoWlubpYkde3aVZ06derg1eydHj16KBaLdfQyYEAD18G2bdump59+WldccYXOPvtsPfbYY62eX7hwoSKRiObNm6eKigrFYjG99tprmjx5cvrHIidPnqzHH39czz33nCKRiCKRiBYuXJjO8eGHH+q0005TPB7X4MGD9cYbb6Sf23GnbO7cuerfv7/i8bjGjRunbdu26fHHH1dZWZm6dOmiq666Si0tLenva2pq0k033aRDDz1UiURCxx13XHqbCxcu1I9+9CNt2bIlvZ7JkydL2n67fucfK6iurtall16q4uJi5eTk6Mgjj9TcuXN3ub8ikYgeeeQRnX322YrH4yovL9cbb7yh1atX69RTT1UikdDxxx+vNWvWtPq+OXPm6Oijj1ZOTo569+6tO++8U8lkMv38tGnTNHDgQCUSCZWUlOjKK69UbW1tm/00b948lZeXKy8vT6NGjdKGDRt29/YCCDB06FD16tVLs2fPTj82e/ZslZSUaMiQIenHnHO677771Lt3b+Xm5mrw4MH685//3CrXCy+8oH79+ik3N1ennXaa1q5d2+r5L/5kwJo1azRmzBgVFxcrLy9PxxxzTJuCsqysTFOmTNHFF1+sTp06qVevXvrtb38b3g4AvsKuvPJKZWZmaunSpRo/frzKy8s1cOBAnXvuuXr++ec1evTodOyWLVt06aWXqnv37srPz9fpp5+uf/7zn63yPfzww+rTp4+ys7PVv39/PfHEE62e3x81QllZmSTpO9/5jiKRSPrrHXXYo48+qt69eysWi8k5p1NPPbXVr4k0NjbqpptuUklJiWKxmL7+9a9r5syZu9xnZWVluvvuu3XhhRcqLy9PpaWleu6557Rp0yaNGTNGeXl5GjhwoJYuXdrq+xYvXqyTTz5Zubm5Kikp0dVXX61t27aln9+4caNGjx6t3NxcHXbYYXryySfbbPuLdxpvvvlm9evXT/F4XL1799akSZPSjerO++CJJ55QWVmZCgoKdMEFF6impmaXrw8hcehQM2fOdBUVFc455+bMmePKyspcKpVKP/+3v/3NSXKDBg1yL730klu9erXbvHmzu+OOO9zgwYOdc87V1NS48ePHu1GjRrkNGza4DRs2uMbGRvfRRx85SW7AgAFu7ty5rrKy0o0bN86Vlpa65uZm55xzs2bNcllZWe7MM890b7/9tnv11VddYWGh+8Y3vuHGjx/vVqxY4ebMmeOys7PdU089lV7X9773PTd8+HD397//3a1evdrdf//9LhaLuVWrVrnGxkb3wAMPuPz8/PR6ampqnHPOlZaWuunTpzvnnGtpaXHDhg1zRxxxhHvppZfcmjVr3Jw5c9wLL7ywy/0lyR166KHuT3/6k6usrHRjx451ZWVl7vTTT3cvvviie++999ywYcPcqFGj0t/z4osvuvz8fPfYY4+5NWvWuJdeesmVlZW5yZMnp2OmT5/uXnnlFffhhx+6BQsWuP79+7srrrgi/fyO/TRixAi3ZMkSt2zZMldeXu6+973v7eU7D+Ciiy5yY8aMcdOmTXNnnHFG+vEzzjjDTZ8+3Y0ZM8ZddNFFzjnnbr31VjdgwAD34osvujVr1rhZs2a5WCzmFi5c6Jxzbv369S4Wi7lrrrnGvf/+++4Pf/iDKy4udpJcVVWVc277cVxQUJDezvLly92MGTPcu+++61atWuVuu+02l5OT49atW5eOKS0tdV27dnUPPfSQ++CDD9w999zjMjIy3MqVK/f7/gF8tnnzZheJRNw999wTGJtKpdwJJ5zgRo8e7ZYsWeJWrVrlrr/+eldYWOg+/fRT55xzs2fPdllZWe6hhx5ylZWVburUqS4ajbpXXnklnWd/1AgbN250ktysWbPchg0b3MaNG51zzt1xxx0ukUi4kSNHurffftv985//dKlUyp1yyinummuuSecfP368KykpcbNnz3Zr1qxxL7/8cqt66ot2nHNmzJjhVq1a5a644grXqVMnN2rUKPf000+nX1d5eXm6Xnz33XddXl6emz59ulu1apVbtGiRGzJkiJswYUI67ze/+U135JFHusWLF7ulS5e64cOHu9zc3HRNtmP/PfPMM+mv77rrLrdo0SL30Ucfub/+9a+uuLjY3Xvvvenn77jjDpeXl+fOOecc969//cv9/e9/dz169HC33npr4HuOfUMD18GGDx/uHnjgAeecc83Nza5bt25u/vz56ed3NHDPPvtsq+/buYFz7vNCaGc7Grjf/e536cdWrFjhJKWLj1mzZjlJbvXq1emYyy67zMXj8XTT5ZxzI0eOdJdddplzzrnVq1e7SCTi/vvf/7ba3hlnnOFuueWWdN6dC6Uddm7g5s2b5zIyMlxlZeXudlErktzPfvaz9NdvvPGGk+RmzpyZfuyPf/yjy8nJSX990kknuSlTprTK88QTT7iePXvucjtPP/20KywsTH/9ZfvpoYcecsXFxea1A2htx3lr06ZNLhaLuY8++sitXbvW5eTkuE2bNqUbuNraWpeTk+MWL17c6vsvueQS993vftc559wtt9zSqqBxzrmbb755tw3clzn88MPdgw8+mP66tLTU/eAHP0h/nUqlXPfu3d3DDz+8j68e+Gp78803nSQ3e/bsVo8XFha6RCLhEomEu+mmm5xzzi1YsMDl5+e7hoaGVrF9+vRxjzzyiHNue700ceLEVs+fd9557qyzzkp/vb9qhC82Ns5tr8OysrLS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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "#| label: fig2e_data\n", - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(8.8, 3))\n", - "for ax, key, ttl in zip(\n", - " axes,\n", - " [\"mean\", \"median\", \"geom_median\"],\n", - " [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "):\n", - " ax.imshow(np.clip(theory[key], 0, 1), cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(ttl, fontsize=10)\n", - " ax.axis(\"off\")\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "23dba138", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "53e5e2b315694578809c1262ba675593", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEsCAYAAACCOVFyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIClJREFUeJzt3XmUVdWZN+D3MlhUMTigok2QEqplUGQQO6hRHDAQI0IU0STdSrQVtTVqx2Fp2ojLBFoNaELbalYj2rZLQidIAtrO0ahoRNSYIIKgwkokC02cUBCh9veHHzcUKPcIBcUmz/MXdc5737Pvhdpr/zj33l1KKaUgO2PGjInp06fHCy+88Jk1r7/+euy9997x/PPPR58+fbba2DamtrY2LrjggrjggguaeijAdu7RRx+NI444It5+++3Yaaed4rbbbosLLrgg3nnnnaYeGrCdOvzww6NPnz5xww03NPVQKlp/TVYqleLuu++O4cOHN+m4qKxZUw+AiFmzZkXz5s1jyJAhhR9z0UUXxcMPP1z+edSoUdvUL9xtt90WO+200wbHZ8+eHWeeeebWHxCwzRk1alSUSqU466yzNjh3zjnnRKlUilGjRjXa9U466aRYsGBBo/UDKvvTn/4U559/ftTV1UWrVq2iQ4cO8aUvfSluvvnm+PDDD5t6eIWUSqWYPn16odpp06bF1VdfvWUHtIUsXbo0vvKVrzT1MChAgNsG3HrrrXHeeefFE088EUuWLNlobUopVq9eHW3atIn27dtvpRE2nt122y1qamqaehjANqJTp04xZcqUWLFiRfnYypUr46677oq99tqrUa9VXV0du+++e6P2BD7bq6++Gn379o0HHnggxo4dG88//3w89NBDceGFF8aMGTPioYceauohNpqPP/44IiJ22WWXaNu2bROPZtPsscceUVVV1dTDoAABrol98MEHMXXq1Dj77LPj2GOPjdtuu63B+UcffTRKpVLcf//90b9//6iqqorHH388xowZU35b5JgxY+L222+PX/ziF1EqlaJUKsWjjz5a7vHqq6/GEUccETU1NdG7d+946qmnyufW3imbOXNmdOvWLWpqamLEiBHxwQcfxO233x61tbWx8847x3nnnRdr1qwpP27VqlVxySWXRMeOHaN169bxxS9+sXzNRx99NL71rW/Fu+++Wx7PmDFjIuKT2/Xrvq3gnXfeiTPPPDM6dOgQrVq1iv322y9mzpz5ma9XqVSKW265JY499tioqamJHj16xFNPPRULFy6Mww8/PFq3bh0HHXRQLFq0qMHjZsyYEQcccEC0atUqunTpEldddVWsXr26fH7ChAnRq1evaN26dXTq1CnOOeecWL58+Qav0/333x89evSINm3axJAhQ2Lp0qUb++sFKujXr1/stddeMW3atPKxadOmRadOnaJv377lYymluPbaa6NLly5RXV0dvXv3jp/97GcNet17772xzz77RHV1dRxxxBHx+uuvNzi//jsDFi1aFMOGDYsOHTpEmzZt4sADD9xgQVlbWxtjx46N0047Ldq2bRt77bVX/OQnP2m8FwC2Y+ecc060aNEinn322Rg5cmT06NEjevXqFSeccELcc889MXTo0HLtu+++G2eeeWbsvvvu0a5duzjyyCPjt7/9bYN+N910U3Tt2jV22GGH6NatW9xxxx0Nzm+JNUJtbW1ERHzta1+LUqlU/nntOuzWW2+NLl26RFVVVaSU4vDDD2/wMZGPPvooLrnkkujUqVNUVVXF3//938ekSZM+8zWrra2N73//+3HKKadEmzZtonPnzvGLX/wi3nzzzRg2bFi0adMmevXqFc8++2yDx82aNSsOO+ywqK6ujk6dOsW3v/3t+OCDD8rnly1bFkOHDo3q6urYe++9484779zg2uvfabz00ktjn332iZqamujSpUtcccUV5aC67mtwxx13RG1tbey4445x8sknx/vvv/+Zz49GkmhSkyZNSv37908ppTRjxoxUW1ub6uvry+d/9atfpYhI+++/f3rggQfSwoUL01tvvZWuvPLK1Lt375RSSu+//34aOXJkGjJkSFq6dGlaunRp+uijj9Jrr72WIiJ17949zZw5M82fPz+NGDEide7cOX388ccppZQmT56cWrZsmY4++uj03HPPpcceeyy1b98+ffnLX04jR45Mc+fOTTNmzEg77LBDmjJlSnlc3/jGN9LBBx+cfv3rX6eFCxem6667LlVVVaUFCxakjz76KN1www2pXbt25fG8//77KaWUOnfunK6//vqUUkpr1qxJAwYMSPvuu2964IEH0qJFi9KMGTPSvffe+5mvV0Skjh07pp/+9Kdp/vz5afjw4am2tjYdeeSR6b777ksvvfRSGjBgQBoyZEj5Mffdd19q165duu2229KiRYvSAw88kGpra9OYMWPKNddff3165JFH0quvvpoefvjh1K1bt3T22WeXz699nQYNGpRmz56d5syZk3r06JG+8Y1vbOLfPHDqqaemYcOGpQkTJqSjjjqqfPyoo45K119/fRo2bFg69dRTU0opXX755al79+7pvvvuS4sWLUqTJ09OVVVV6dFHH00ppbRkyZJUVVWVzj///PTyyy+n//mf/0kdOnRIEZHefvvtlNInv8c77rhj+TovvPBCuvnmm9OLL76YFixYkL773e+mVq1apcWLF5drOnfunHbZZZd04403pldeeSWNGzcuNWvWLM2bN2+Lvz6Qs7feeiuVSqU0bty4irX19fXpkEMOSUOHDk2zZ89OCxYsSN/5zndS+/bt05///OeUUkrTpk1LLVu2TDfeeGOaP39+Gj9+fGrevHl65JFHyn22xBph2bJlKSLS5MmT09KlS9OyZctSSildeeWVqXXr1mnw4MHpueeeS7/97W9TfX19GjhwYDr//PPL/UeOHJk6deqUpk2blhYtWpQeeuihBuup9a2dc26++ea0YMGCdPbZZ6e2bdumIUOGpKlTp5afV48ePcrrxRdffDG1adMmXX/99WnBggXpySefTH379k2jRo0q9/3KV76S9ttvvzRr1qz07LPPpoMPPjhVV1eX12RrX7+77767/PPVV1+dnnzyyfTaa6+lX/7yl6lDhw7pmmuuKZ+/8sorU5s2bdLxxx+ffve736Vf//rXaY899kiXX355xb9zNo8A18QOPvjgdMMNN6SUUvr444/Trrvumh588MHy+bUBbvr06Q0et26AS+mvC6F1rQ1w//Vf/1U+Nnfu3BQR5cXH5MmTU0SkhQsXlmtGjx6dampqyqErpZQGDx6cRo8enVJKaeHChalUKqU//vGPDa531FFHpcsuu6zcd92F0lrrBrj7778/NWvWLM2fP39jL1EDEZH+7d/+rfzzU089lSIiTZo0qXzsrrvuSq1atSr/fOihh6axY8c26HPHHXekPffc8zOvM3Xq1NS+ffvyz5/2Ot14442pQ4cOhccONLR23nrzzTdTVVVVeu2119Lrr7+eWrVqld58881ygFu+fHlq1apVmjVrVoPHn3766enrX/96Simlyy67rMGCJqWULr300o0GuE/Ts2fPNHHixPLPnTt3Tv/4j/9Y/rm+vj7tvvvu6aabbtrMZw/bt6effjpFRJo2bVqD4+3bt0+tW7dOrVu3TpdccklKKaWHH344tWvXLq1cubJBbdeuXdMtt9ySUvpkvXTGGWc0OH/iiSemY445pvzzllojrB9sUvpkHdayZctyoFtr3QA3f/78FBEN1nWVrD/nLF26NEVEuuKKKzZ4XkuXLk0ppfRP//RP6cwzz2zQ5/HHH0/NmjVLK1asKI/j6aefLp+fN29eioiNBrj1XXvttemAAw5o8BrU1NSk9957r3zs4osvTl/84hcLP182TYutdquPDcyfPz+eeeaZ8luHWrRoESeddFLceuutMWjQoAa1/fv33+Tr7L///uU/77nnnhHxya307t27R0RETU1NdO3atVzToUOHqK2tjTZt2jQ4tmzZsoiIeO655yKlFPvss0+D63z00Uef63N5L7zwQnzhC1/YoM/neT4dOnSIiIhevXo1OLZy5cp47733ol27djFnzpyYPXt2/OAHPyjXrFmzJlauXBkffvhh1NTUxK9+9asYO3ZsvPTSS/Hee+/F6tWrY+XKlfHBBx9E69atI2LD12nPPfcsvybAptt1113jq1/9atx+++2RUoqvfvWrseuuu5bPv/TSS7Fy5co4+uijGzxu1apV5bdZzps3LwYMGBClUql8/qCDDtrodT/44IO46qqrYubMmfHGG2/E6tWrY8WKFRt8FnndOadUKsUee+zhdx8KWvd3MiLimWeeifr6+vjmN78ZH330UUREzJkzJ5YvX77BGmLFihXltzvOmzdvgy9BO+SQQ+JHP/pRg2NbYo3wWTp37hy77bbbZ55/4YUXonnz5jFw4MDPrPk0RZ5DxCdruT322CPmzJkTCxcubPC2yJRS1NfXx2uvvRYLFiyIFi1aNFhLdu/e/VO/bG5dP/vZz+KGG26IhQsXxvLly2P16tXRrl27BjW1tbUNPvNnbbR1CHBNaNKkSbF69ero2LFj+VhKKVq2bBlvv/127LzzzuXja0PEpmjZsmX5z2sn0vr6+k89v7bm046tfUx9fX00b9485syZE82bN29Qt27oq6S6urpw7bo+7fls7DnW19fHVVddFccff/wGvVq1ahWLFy+OY445Js4666y4+uqrY5dddoknnngiTj/99Abv9f601yTZhQMaxWmnnRbnnntuRETceOONDc6t/V2+5557GsyXEVH+wP2m/C5efPHFcf/998cPf/jDqKuri+rq6hgxYkSsWrWqQd3G5kPg09XV1UWpVIqXX365wfEuXbpERMM1QH19fey5554NPr+/1rohY/0wmFLa4FhjrxE2ptLabGuuc0aPHh3f/va3N+i11157xfz58xs8roinn346Tj755Ljqqqti8ODBseOOO8aUKVNi/PjxnznWtdcwP255AlwTWb16dfz3f/93jB8/Pr785S83OHfCCSfEnXfeWV7MFLHDDjs0+JKRLalv376xZs2aWLZsWRx66KGbPJ79998//vCHP8SCBQs+9124z6Nfv34xf/78qKur+9Tzzz77bKxevTrGjx8fzZp98r0+U6dO3WLjATY0ZMiQcnAaPHhwg3M9e/aMqqqqWLJkyWf+T3bPnj03+Jrvp59+eqPXfPzxx2PUqFHxta99LSIili9fvsEXnwCbpn379nH00UfHf/zHf8R555230bDTr1+/+NOf/hQtWrQof0nI+nr06BFPPPFEnHLKKeVjs2bNih49emzWOCutESI+CSmbssbq1atX1NfXx2OPPbbBO6saU79+/WLu3Lmf+Rx69OgRq1evjmeffTb+4R/+ISI+eRfYxvbEfPLJJ6Nz587x3e9+t3xs8eLFjTpuNp0A10RmzpwZb7/9dpx++umx4447Njg3YsSImDRp0ucKcLW1tXH//ffH/Pnzo3379hv0bEz77LNPfPOb34xTTjklxo8fH3379o233norHnnkkejVq1ccc8wxUVtbG8uXL4+HH344evfuHTU1NRu8DWHgwIFx2GGHxQknnBATJkyIurq6ePnll6NUKn2uPfEq+d73vhfHHntsdOrUKU488cRo1qxZvPjii/G73/0uvv/970fXrl1j9erVMXHixBg6dGg8+eSTcfPNNzfa9YHKmjdvHvPmzSv/eV1t27aNiy66KC688MKor6+PL33pS/Hee+/FrFmzok2bNnHqqafGWWedFePHj49//dd/jdGjR8ecOXM2+Fbf9dXV1cW0adNi6NChUSqV4oorrvA/x9CI/vM//zMOOeSQ6N+/f4wZMyb233//aNasWcyePTtefvnlOOCAAyIiYtCgQXHQQQfF8OHD45prrolu3brFG2+8Effee28MHz48+vfvHxdffHGMHDky+vXrF0cddVTMmDEjpk2bttlbEVRaI0R8ssZ6+OGH45BDDomqqqoG75DamNra2jj11FPjtNNOix//+MfRu3fvWLx4cSxbtixGjhy5WeNe16WXXhoDBgyIf/mXf4kzzjgjWrduHfPmzYsHH3wwJk6cGN26dYshQ4bEGWecET/5yU+iRYsWccEFF2z0DmFdXV0sWbIkpkyZEgceeGDcc889cffddzfamNk8thFoIpMmTYpBgwZ9atA64YQT4oUXXojnnnuucL8zzjgjunXrFv3794/ddtstnnzyycYc7gYmT54cp5xySnznO9+Jbt26xXHHHRe/+c1volOnThERcfDBB8dZZ50VJ510Uuy2225x7bXXfmqfn//853HggQfG17/+9ejZs2dccskljX4ncfDgwTFz5sx48MEH48ADD4wBAwbEhAkTonPnzhER0adPn5gwYUJcc801sd9++8Wdd94Z48aNa9QxAJW1a9dug89XrHX11VfH9773vRg3blz06NEjBg8eHDNmzIi99947Ij55m9DPf/7zmDFjRvTu3TtuvvnmGDt27Eavd/3118fOO+8cBx98cAwdOjQGDx4c/fr1a/TnBX+runbtGs8//3wMGjQoLrvssujdu3f0798/Jk6cGBdddFF5w+tSqRT33ntvHHbYYXHaaafFPvvsEyeffHK8/vrr5c97DR8+PH70ox/FddddF/vuu2/ccsstMXny5Dj88MM3a4yV1ggREePHj48HH3xwg+1NirjppptixIgRcc4550T37t3jjDPOaPD1/o1h//33j8ceeyxeeeWVOPTQQ6Nv375xxRVXlL/3IOKTdVunTp1i4MCBcfzxx5e3bPgsw4YNiwsvvDDOPffc6NOnT8yaNSuuuOKKRh03m66UfIgHAAAgC+7AAQAAZEKAAwAAyIQABwAAkAkBDgAAIBMCHAAAQCYEOAAAgEwIcAAAAJlo0ZjNSqVSY7YDtkNbautJ8w9QifkHaCqNOf+4AwcAAJAJAQ4AACATAhwAAEAmBDgAAIBMCHAAAACZEOAAAAAyIcABAABkQoADAADIhAAHAACQCQEOAAAgEwIcAABAJgQ4AACATAhwAAAAmRDgAAAAMiHAAQAAZEKAAwAAyIQABwAAkAkBDgAAIBMCHAAAQCYEOAAAgEwIcAAAAJkQ4AAAADIhwAEAAGRCgAMAAMiEAAcAAJAJAQ4AACATAhwAAEAmBDgAAIBMCHAAAACZEOAA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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(8.8, 3))\n", - "for ax, key, ttl in zip(\n", - " axes,\n", - " [\"mean\", \"median\", \"geomedian\"],\n", - " [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "):\n", - " idx, _ = chosen[key]\n", - " ax.imshow(X_all[idx], cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(ttl, fontsize=10)\n", - " ax.axis(\"off\")\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2f_mnist_autoencoder_counterexample.ipynb b/notebooks/fig2f_mnist_autoencoder_counterexample.ipynb deleted file mode 100644 index a22bf2fde..000000000 --- a/notebooks/fig2f_mnist_autoencoder_counterexample.ipynb +++ /dev/null @@ -1,347 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "da41d574", - "metadata": {}, - "source": [ - "# MNIST autoencoder" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0278101b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "TensorFlow: 2.20.0\n" - ] - } - ], - "source": [ - "%matplotlib widget\n", - "\n", - "import os, math, random\n", - "import numpy as np\n", - "import h5py\n", - "import matplotlib.pyplot as plt\n", - "import tensorflow as tf\n", - "from tensorflow.keras.models import Model\n", - "from tensorflow.keras.layers import Input, Dense, Reshape, Conv2DTranspose, ReLU\n", - "from tensorflow.keras.datasets import mnist\n", - "from pathlib import Path\n", - "\n", - "np.random.seed(42)\n", - "tf.random.set_seed(42)\n", - "\n", - "print(\"TensorFlow:\", tf.__version__)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0c77339f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RESULTS_DIR: ..\\data\\mnist-ae\n" - ] - } - ], - "source": [ - "# ─────────────────────────────────────────────────────────\n", - "# CONFIG — set this back to your original style/path\n", - "# ─────────────────────────────────────────────────────────\n", - "RESULTS_DIR = Path(\"..\") / \"data\" / \"mnist-ae\" # ← change to your actual folder if needed\n", - "LATENTS_H5 = os.path.join(RESULTS_DIR, \"latents.h5\")\n", - "DECODER_WEIGHTS = os.path.join(RESULTS_DIR, \"decoder_weights.h5\")\n", - "\n", - "# Must match training\n", - "N_LAYERS = 2\n", - "BASE_FILTERS = 16\n", - "LATENT_DIM = 64\n", - "\n", - "# Geometric median settings\n", - "GEOMED_MAX_ITERS = 1000\n", - "GEOMED_TOL = 1e-7\n", - "GEOMED_SUBSAMPLE = None\n", - "\n", - "print(\"RESULTS_DIR:\", RESULTS_DIR)\n", - "assert os.path.exists(LATENTS_H5), f\"Missing file: {LATENTS_H5}\"\n", - "assert os.path.exists(DECODER_WEIGHTS), f\"Missing file: {DECODER_WEIGHTS}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "416ac830", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loaded Z: (70000, 64), labels: (70000,)\n" - ] - } - ], - "source": [ - "with h5py.File(LATENTS_H5, \"r\") as hf:\n", - " Z = hf[\"z\"][:].astype(np.float32) # (N, D)\n", - " labels = hf[\"labels\"][:].astype(np.int64) # (N,)\n", - "\n", - "N, D = Z.shape\n", - "print(f\"Loaded Z: {Z.shape}, labels: {labels.shape}\")\n", - "assert D == LATENT_DIM, f\"LATENT_DIM mismatch: expected {LATENT_DIM}, got {D}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9db62815", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ALL_IMAGES: (70000, 28, 28, 1) ALL_LABELS: (70000,)\n" - ] - } - ], - "source": [ - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", - "x_train = np.expand_dims(x_train.astype(\"float32\") / 255.0, -1)\n", - "x_test = np.expand_dims(x_test.astype(\"float32\") / 255.0, -1)\n", - "\n", - "ALL_IMAGES = np.concatenate([x_train, x_test], axis=0)\n", - "ALL_LABELS = np.concatenate([y_train, y_test], axis=0)\n", - "assert ALL_IMAGES.shape[0] == N, \"Mismatch between number of latents and images\"\n", - "\n", - "print(\"ALL_IMAGES:\", ALL_IMAGES.shape, \"ALL_LABELS:\", ALL_LABELS.shape)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "f5e3045d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using GLOBAL set: 70000 latents\n" - ] - } - ], - "source": [ - "# UPDATED: Use the entire dataset (GLOBAL) independent of labels\n", - "Z_sub = Z\n", - "IM_sub = ALL_IMAGES\n", - "LBL_sub = labels\n", - "\n", - "print(f\"Using GLOBAL set: {Z_sub.shape[0]} latents\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "bb09f689", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Decoder loaded from: ..\\data\\mnist-ae\\decoder_weights.h5\n" - ] - } - ], - "source": [ - "def build_decoder(n_layers=2, base_filters=16, latent_dim=64):\n", - " latent_in = Input((latent_dim,), name=\"z_sampling\")\n", - " spatial = 28 // (2**n_layers) # 28 -> 7 for 2 layers\n", - " channels = base_filters * (2**(n_layers-1))\n", - "\n", - " x = Dense(spatial * spatial * channels)(latent_in)\n", - " x = Reshape((spatial, spatial, channels))(x)\n", - "\n", - " for i in reversed(range(n_layers)):\n", - " f = base_filters * (2**i)\n", - " x = Conv2DTranspose(f, 3, strides=(2,2), padding=\"same\")(x)\n", - " x = ReLU()(x)\n", - "\n", - " out = tf.keras.layers.Conv2D(1, 3, padding=\"same\", activation=\"sigmoid\", name=\"decoder_output\")(x)\n", - " return Model(latent_in, out, name=\"decoder\")\n", - "\n", - "decoder = build_decoder(N_LAYERS, BASE_FILTERS, LATENT_DIM)\n", - "decoder.load_weights(DECODER_WEIGHTS)\n", - "print(\"Decoder loaded from:\", DECODER_WEIGHTS)\n", - "\n", - "_ = decoder.predict(np.zeros((1, LATENT_DIM), dtype=np.float32), verbose=0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fb3b0062", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Central latents computed for label==4 subset.\n" - ] - } - ], - "source": [ - "def geometric_median(points, tol=1e-7, max_iters=1000):\n", - " P = points.astype(np.float64)\n", - " x = P.mean(axis=0)\n", - " eps = 1e-12\n", - " for _ in range(max_iters):\n", - " diff = P - x\n", - " d = np.linalg.norm(diff, axis=1) + eps\n", - " w = 1.0 / d\n", - " x_new = (w[:, None] * P).sum(axis=0) / w.sum()\n", - " if np.linalg.norm(x_new - x) <= tol:\n", - " return x_new.astype(np.float32)\n", - " x = x_new\n", - " return x.astype(np.float32)\n", - "\n", - "mean_z = Z_sub.mean(axis=0)\n", - "median_z = np.median(Z_sub, axis=0)\n", - "\n", - "if GEOMED_SUBSAMPLE is None or GEOMED_SUBSAMPLE >= Z_sub.shape[0]:\n", - " gm_input = Z_sub\n", - "else:\n", - " sel = np.random.choice(Z_sub.shape[0], GEOMED_SUBSAMPLE, replace=False)\n", - " gm_input = Z_sub[sel]\n", - "\n", - "geom_z = geometric_median(gm_input, tol=GEOMED_TOL, max_iters=GEOMED_MAX_ITERS)\n", - "print(\"Central latents computed for label==4 subset.\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "166a095a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reconstructions: (3, 28, 28)\n" - ] - } - ], - "source": [ - "central_stack = np.stack([mean_z, median_z, geom_z], axis=0).astype(np.float32)\n", - "recons = decoder.predict(central_stack, verbose=0) # (3, 28, 28, 1)\n", - "recons = np.squeeze(recons, axis=-1) # -> (3, 28, 28)\n", - "print(\"Reconstructions:\", recons.shape)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9420572d", - "metadata": {}, - "outputs": [], - "source": [ - "def nearest_idx(vec, Z):\n", - " diff = Z - vec[None, :]\n", - " d2 = np.sum(diff*diff, axis=1)\n", - " idx = int(np.argmin(d2))\n", - " dist = float(np.sqrt(d2[idx]))\n", - " return idx, dist\n", - "\n", - "# UPDATED: compute nearest matches against the full latent set (GLOBAL)\n", - "mean_i_global, mean_dist = nearest_idx(mean_z, Z)\n", - "median_i_global, median_dist = nearest_idx(median_z, Z)\n", - "geom_i_global, geom_dist = nearest_idx(geom_z, Z)\n", - "\n", - "closest_global_indices = [int(mean_i_global), int(median_i_global), int(geom_i_global)]\n", - "closest_dists = [float(mean_dist), float(median_dist), float(geom_dist)]\n", - "closest_images = ALL_IMAGES[closest_global_indices]\n", - "closest_labels = labels[closest_global_indices]" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "13226f21", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a125244aa23d4622808e4760061411cc", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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5O677w5f3tjYKFVVVQf8OAH88pv8+++/X2bMmCGPPvpouxntGtWyYSgvL5euXbuGPx8IBNpsDHfFegBEXnR0tIwaNUo+/PBDKSsra1WG+vXrJyLSpji0/AyfPHmyXHDBBe3OLSgoEJFfnvNlZWVtPt/yx51aZu2vjIwMcRxHPvvss3AR+bX2Ltsdzf7wcNhD/Xq93VV7l+3qtddekxEjRsiLL77Y6vLa2tq9OVwoUQj3UzAYlFdffVV69uwps2bNavP5oqIieeaZZ+T999/fp5PIHwq/4RgzZozMnz9fgsGg62k0dvfq5K4SEhJk+PDh8uabb8qjjz4asUVZ44wzzhCPxyM//vijXHjhhbvNOY4jxpg2C/msWbMkGAwe6MMEICJdu3aVO+64Q9asWSNXXHFFuxntGtVyIvs5c+bICSecEL78jTfekEAgsMfjYD0ADozJkyfL+++/L9dff70sWLDA9e2SBQUFcvTRR8s333wjjz322B6zp59+urzzzjtSWlra6q+Uzp49WxITEyN2qoMxY8bIE088IZs3b5Zx48btMavdJ+3J4bCHKigokJycHJk3b5785S9/CRfdjRs3ytKlS9v81dhdOY7TZr399ttvpbi4uM1bgLH/KIT76f3335fS0lKZOnVqeLPxa8cee6z87W9/k8LCwn0qhP379xcRkenTp8sVV1whMTExUlBQcMBPyvxr48ePlzlz5sjZZ58tt9xyiwwZMkRiYmJk06ZNsnjxYjnvvPNk7Nix4eOdP3++vP7669KjRw+Jj48P34ZdTZs2TU455RQ58cQT5e6775ZevXpJRUWFvPfeezJz5swDdhvz8/PloYceknvvvVfWr18vZ555pqSmpkpFRYUsW7ZMvF6vPPjgg5KUlCSnnXaaPPXUU5KRkSH5+fmyZMkSKSwslJSUlANybADaeuKJJ/b4ee0a1bdvX7n00kvl2WeflZiYGPntb38r3333nTz99NOtznXYHtYD4MAYNmyYPP/883LzzTfLoEGD5Nprr5VjjjlGoqKipKysTN566y0RkVbP0ZkzZ8pZZ50lZ5xxhkycOFG6du0qVVVVsnr1almxYoW8+eabIiIyZcoUKSoqkpEjR8r9998vaWlpMmfOHFm4cKE8+eSTkpycHLHbcO2118qkSZNk+fLlctppp4nX65WysjL5z3/+I/3795cbbrhB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GlSzfD6fKqddS5OTk10z2v3VsGHDVDnNsf3rX/9Szfr6669VOdarwxevEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFiKQggAAAAAlnLMPp5923GcSB8L/j/tCVG7dOmiyh1zzDGqXI8ePVwzTU1Nqlnr169X5VavXu2aKSsrU83SnnCWE853vIP9GLBeHTjx8fGqXG5urio3cOBAVa5Xr16umfr6etWsdevWqXIrV650zZSXl6tmNTc3q3KsVx2P9erI4fV6Vbm8vDxVbsiQIapcz549XTPaPcwPP/ygyi1fvtw1s3nzZtWsxsZGVY71quPt62PAK4QAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKcfs4yntHceJ9LHgANE+VpF8TEOhUMRm4cizj8vOPmO9Onx0xGN1sL8fcXhhvcLuREXpXlfpiP0V65qd9vVx5xVCAAAAALAUhRAAAAAALEUhBAAAAABLUQgBAAAAwFIUQgAAAACwFIUQAAAAACxFIQQAAAAAS1EIAQAAAMBSFEIAAAAAsJSnow8AB54xJqI5ADhQWIcAHC5CoVBHHwIQEbxCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFiKQggAAAAAlqIQAgAAAIClKIQAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFiKQggAAAAAlqIQAgAAAIClKIQAAAAAYCkKIQAAAABYikIIAAAAAJaiEAIAAACApSiEAAAAAGApCiEAAAAAWIpCCAAAAACWohACAAAAgKUohAAAAABgKQohAAAAAFjKMcaYjj4IAAAAAMDBxyuEAAAAAGApCiEAAAAAWIpCCAAAAACW+n8FP+2xRktf9QAAAABJRU5ErkJggg==", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Bac…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: fig2f_data\n", - "\n", - "titles = [\"Arithmetic mean\", \"Median\", \"Geometric median\"]\n", - "fig1, axes1 = plt.subplots(1, 3, figsize=(9, 3), constrained_layout=True)\n", - "for ax, img, title in zip(axes1, recons, titles):\n", - " ax.imshow(img, cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_title(title)\n", - " ax.axis(\"off\")\n", - "fig1.canvas.header_visible = False\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2g_ae1m_lossplot.ipynb b/notebooks/fig2g_ae1m_lossplot.ipynb deleted file mode 100644 index 151b082d7..000000000 --- a/notebooks/fig2g_ae1m_lossplot.ipynb +++ /dev/null @@ -1,173 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c8d93c9c-e3a2-422b-8bd8-31d6826f5623", - "metadata": {}, - "source": [ - "# Plotting the training log." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "acb4391a-9c63-4d5e-ab1d-d0dd32880d25", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[i] Loaded CSV: ..\\data\\nucleus-ae\\training_log.csv\n", - "[i] Columns found: ['epoch', 'loss', 'mse', 'val_loss', 'val_mse']\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "602033581ff944268dd166220ae69b9b", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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RETktKwW7gAQGBiIwMBAXLlyBYIg4J577uHNl+qh2yPuOjtHQkRERER1xepUGZ1Oh/nz58PHxwehoaFo2rQpGjRogDfffBM6HQvE+uR24c4RdyIiIiJnZXXE/bXXXsOqVavwzjvvoGfPnhBFEYcPH8a8efNQXFyMt956y5ZxUgVU8tvruIuiCEEQ7BwREREREdU2q4X7f/7zH3z22WcYOnSosa1Tp0645557MHHiRBbu9YiqbMRdFIESjc44552IiIiInIfVqTI3btxAmzZtzNrbtGmDGzdu1GlQVDWqcoU6V5YhIiIick5WC/dOnTph6dKlZu1Lly41WWWG7E8mlUAh1aeykGu5ExERETklq1Nl3n33XTzyyCPYs2cPoqKiIAgCjhw5gsuXL2P79u22jJEqQaWQorRIxxF3IiIiIidldcS9T58+uHDhAkaMGIFbt27hxo0bGDlyJM6fP49evXrZMkaqBMN0GRbuRERERM6pwnXcg4ODeRGqgzAsCVnIJSGJiIiInJJJ4X727NlKv7Fjx461HgxVn2FlmSLOcSciIiJySiZTZTp37owuXbqgc+fOFT66dOlSrYMtW7YMYWFhcHNzQ0REBA4ePFhh//379yMiIgJubm5o1qwZVqxYYdZn06ZNCA8Ph1KpRHh4ODZv3myy/cCBAxgyZAiCg4MhCAK2bNli8VipqakYOnQofHx84OXlhfvuuw/p6enV+pz2wKkyRERERM7NZMQ9LS2tzg60ceNGTJ06FcuWLUPPnj3xySefYNCgQfj111/RtGlTs/5paWkYPHgwJkyYgC+//BKHDx/GxIkT4efnh1GjRgEAkpOTERMTgzfffBMjRozA5s2bMXr0aBw6dAg9evQAABQUFKBTp0545plnjO+7059//on7778fzz33HN544w34+PggNTUVbm5udfb7qG0ccSciIiJyboIoiqItDtSjRw907doVy5cvN7a1bdsWw4cPR2Jioln/mTNnYtu2bUhNTTW2xcXF4cyZM0hOTgYAxMTEIDc3Fzt27DD2GThwIBo2bIj169eb7VMQBGzevBnDhw83aX/88cchl8vxxRdfVOuz5ebmwsfHBzk5OfD29q7WPgBAp9MhKysL/v7+kEisXjds0QtfnMCuX/7BguHt8dR9odWOgWyjJrkmx8Jcuw7m2rUw367DXrm2VF/a5OilpaU4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VpUpUuvsHAkRERER1Tazwj00NBQAoNOx+HM0t6fKcMSdiIiIyNlYvTg1MTERn3/+uVn7559/joULF9ZpUFQ9XFWGiIiIyHlZLdw/+eQTtGnTxqy9Xbt2WLFiRZ0GRdVze6oMC3ciIiIiZ2O1cM/MzERQUJBZu5+fHzIyMuo0KKoed0XZcpAccSciIiJyOlYL95CQEBw+fNis/fDhwwgODq7ToKh6VAp9OjlVhoiIiMj5mF2cajB+/HhMnToVarXauCzkDz/8gBkzZuCVV16xWYBUebwBExEREZHzslq4z5gxAzdu3MDEiRONd1B1c3PDzJkzMXv2bJsFSJXHGzAREREROS+rhbsgCFi4cCHmzJmD1NRUqFQqtGzZEkql0pbxURWUvwGTKIoQBMHOERERERFRbbFauBt4enqiW7dutoiFashQuOtEoFSrg1LGG2UREREROQurhXu/fv0qHLH98ccf6yQgqj7DcpCAfroMC3ciIiIi52G1cO/cubPJa7VajdOnT+Pnn3/G2LFj6zouqga5VAK5VIBaK6JIrUUDewdERERERLXGauH+4YcfWmyfN28e8vPz6ywgqhmVXAq1VsMlIYmIiIicjNV13K156qmn8Pnnn9dFLFQLVFxZhoiIiMgpVblwT05OhpubW13EQrXAePdUruVORERE5FSsTpUZOXKkyWtRFJGRkYETJ05gzpw5dR4YVY/hAlVOlSEiIiJyLlYLdx8fH5PXEokErVu3xvz589G/f/86D4yq5/ZUGY2dIyEiIiKi2mRxqoxWq8W4cePw73//G6tXr8bq1auxatUqvPPOOzUq2pctW4awsDC4ubkhIiICBw8erLD//v37ERERATc3NzRr1gwrVqww67Np0yaEh4dDqVQiPDwcmzdvNtl+4MABDBkyBMHBwRAEAVu2bKnwmC+88AIEQcCiRYuq+vHqBePdUzlVhoiIiMipWCzcpVIpBgwYgJycnFo70MaNGzF16lS89tprSElJQa9evTBo0CCkp6db7J+WlobBgwejV69eSElJwauvvorJkydj06ZNxj7JycmIiYlBbGwszpw5g9jYWIwePRpHjx419ikoKECnTp2wdOnSu8a4ZcsWHD16FMHBwTX/wHbCqTJEREREzsnqxakdOnTAX3/9VWsH+uCDD/Dcc89h/PjxaNu2LRYtWoSQkBAsX77cYv8V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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: ae1m-loss-plot\n", - "import os, csv\n", - "from pathlib import Path\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# Optional interactive backend (ok to keep)\n", - "try:\n", - " from IPython import get_ipython\n", - " ip = get_ipython()\n", - " if ip is not None:\n", - " ip.run_line_magic(\"matplotlib\", \"widget\")\n", - "except Exception:\n", - " pass\n", - "\n", - "# Point to the DIRECTORY that contains training_log.csv\n", - "LOG_PATH = Path(\"..\") / \"data\" / \"nucleus-ae\"\n", - "\n", - "def _pick_csv_from_dir(d: Path) -> Path:\n", - " \"\"\"Return /training_log.csv or raise if missing.\"\"\"\n", - " p = d / \"training_log.csv\"\n", - " if not p.is_file():\n", - " raise FileNotFoundError(f\"'training_log.csv' not found in: {d}\")\n", - " return p\n", - "\n", - "def _resolve_log_path(p: Path) -> Path:\n", - " \"\"\"\n", - " Only allow:\n", - " - a directory containing training_log.csv\n", - " - OR the file itself named exactly training_log.csv\n", - " \"\"\"\n", - " if p.is_dir():\n", - " return _pick_csv_from_dir(p)\n", - " if p.is_file():\n", - " if p.name != \"training_log.csv\":\n", - " raise FileNotFoundError(f\"Expected 'training_log.csv', got: {p.name}\")\n", - " return p\n", - " raise FileNotFoundError(f\"Path does not exist: {p}\")\n", - "\n", - "def load_log(path_like):\n", - " csv_path = _resolve_log_path(Path(path_like))\n", - " with open(csv_path, \"r\", newline=\"\", encoding=\"utf-8-sig\") as f:\n", - " reader = csv.DictReader(f)\n", - " rows = list(reader)\n", - " fieldnames = reader.fieldnames or []\n", - "\n", - " if not rows:\n", - " raise ValueError(f\"CSV is empty: {csv_path}\")\n", - "\n", - " def col(names):\n", - " \"\"\"Try multiple possible column names; return first match as float array or None.\"\"\"\n", - " for name in (names if isinstance(names, (list, tuple)) else [names]):\n", - " if name in fieldnames:\n", - " vals = []\n", - " for r in rows:\n", - " v = r.get(name, \"\")\n", - " try:\n", - " vals.append(float(v))\n", - " except Exception:\n", - " vals.append(np.nan)\n", - " return np.asarray(vals, dtype=float)\n", - " return None\n", - "\n", - " # Common variants\n", - " epoch = col([\"epoch\"])\n", - " loss = col([\"loss\", \"mse\", \"train_loss\", \"training_loss\"])\n", - " val_loss = col([\"val_loss\", \"val_mse\", \"validation_loss\"])\n", - "\n", - " epochs = (epoch.astype(int) + (0 if epoch is not None and epoch.min() >= 1 else 1)) \\\n", - " if epoch is not None else np.arange(1, len(rows) + 1)\n", - "\n", - " print(f\"[i] Loaded CSV: {csv_path}\")\n", - " print(f\"[i] Columns found: {fieldnames}\")\n", - " return epochs, loss, val_loss\n", - "\n", - "# ----- load + plot -----\n", - "epochs, loss, val_loss = load_log(LOG_PATH)\n", - "\n", - "fig, ax = plt.subplots(figsize=(7.5, 4.5), constrained_layout=True)\n", - "plotted = False\n", - "if loss is not None:\n", - " ax.plot(epochs, loss, label=\"training_loss\"); plotted = True\n", - "if val_loss is not None:\n", - " ax.plot(epochs, val_loss, label=\"validation_loss\"); plotted = True\n", - "\n", - "if not plotted:\n", - " raise ValueError(\"No recognizable loss columns found \"\n", - " \"(looked for: loss/mse/train_loss/training_loss and val_loss/val_mse/validation_loss).\")\n", - "\n", - "ax.set_xlabel(\"Epoch\")\n", - "ax.set_ylabel(\"Mean squared error reconstruction loss\")\n", - "ax.grid(True, alpha=0.3)\n", - "ax.legend()\n", - "fig.canvas.toolbar_visible = True\n", - "fig.canvas.header_visible = False\n", - "fig.canvas.footer_visible = False\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2h_latent_interpolation_nucleusnet10k.ipynb b/notebooks/fig2h_latent_interpolation_nucleusnet10k.ipynb deleted file mode 100644 index 3ca015a16..000000000 --- a/notebooks/fig2h_latent_interpolation_nucleusnet10k.ipynb +++ /dev/null @@ -1,393 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "60c3d42f-05b8-4f79-b216-e860f9c108a3", - "metadata": {}, - "source": [ - "# Decoded latent interpolations between pairs from NucleusNet-10K." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "b8894e88-92a0-448f-983d-a3fd3a331123", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ab99936e7a00436fb98a82adb904bb5c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(HBox(children=(Button(button_style='info', description='Resample pairs', style=ButtonStyle()), …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: nucleusnet10k-interpolation\n", - "\n", - "%matplotlib widget\n", - "\n", - "import os, random, math, logging\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import ipywidgets as W\n", - "from IPython.display import display\n", - "from tifffile import imread as tiff_imread\n", - "from urllib.parse import urlparse\n", - "import fsspec\n", - "from pathlib import Path\n", - "\n", - "# Quiet HF logs\n", - "os.environ[\"HF_HUB_DISABLE_PROGRESS_BARS\"] = \"1\"\n", - "os.environ[\"HF_HUB_DISABLE_SYMLINKS_WARNING\"] = \"1\"\n", - "os.environ[\"TQDM_DISABLE\"] = \"1\"\n", - "for _name in (\"fsspec\", \"huggingface_hub\", \"urllib3\", \"datasets\"):\n", - " logging.getLogger(_name).setLevel(logging.ERROR)\n", - "\n", - "import tensorflow as tf\n", - "from tensorflow.keras.models import Model\n", - "from tensorflow.keras.layers import (\n", - " Input, Conv2D, Conv2DTranspose, AveragePooling2D,\n", - " Flatten, Dense, Reshape, ReLU\n", - ")\n", - "\n", - "# ── Config ──────────────────────────────────────────────────────────────\n", - "REPO_ID = \"RussellBarkley/msa-em-figures\"\n", - "BRANCH = \"main\"\n", - "WEIGHT_DIRS = [\n", - " Path(\"..\") / \"data\" / \"nucleus-ae\",\n", - "]\n", - "ENC_NAME = 'encoder_weights.h5'\n", - "DEC_NAME = 'decoder_weights.h5'\n", - "LATENT_DIM = 512\n", - "\n", - "N_PAIRS = 50\n", - "T_VALUES = np.round(np.linspace(0.0, 1.0, 6), 2)\n", - "\n", - "# ── Build models to match your AE ───────────────────────────────────────\n", - "def build_encoder(latent_dim=LATENT_DIM):\n", - " inp = Input((256,256,1), name='encoder_input')\n", - " x = inp\n", - " for filters in [16, 32, 64, 128]:\n", - " x = Conv2D(filters, 3, padding='same')(x); x = ReLU()(x)\n", - " x = Conv2D(filters, 3, padding='same')(x); x = ReLU()(x)\n", - " x = AveragePooling2D(pool_size=2)(x)\n", - " flat = Flatten()(x)\n", - " z = Dense(latent_dim, name='z')(flat)\n", - " return Model(inp, z, name='encoder')\n", - "\n", - "def build_decoder(latent_dim=LATENT_DIM):\n", - " z_in = Input((latent_dim,), name='z_sampling')\n", - " x = Dense(16 * 16 * 128)(z_in)\n", - " x = Reshape((16, 16, 128))(x)\n", - " for filters in [128, 64, 32, 16]:\n", - " x = Conv2DTranspose(filters, 3, strides=2, padding='same')(x); x = ReLU()(x)\n", - " x = Conv2D(filters, 3, padding='same')(x); x = ReLU()(x)\n", - " out = Conv2D(1, 3, padding='same', activation='sigmoid', name='decoder_output')(x)\n", - " return Model(z_in, out, name='decoder')\n", - "\n", - "# Tame GPU memory spikes\n", - "try:\n", - " for g in tf.config.list_physical_devices(\"GPU\"):\n", - " tf.config.experimental.set_memory_growth(g, True)\n", - "except Exception:\n", - " pass\n", - "\n", - "encoder = build_encoder()\n", - "decoder = build_decoder()\n", - "\n", - "# Try to find and load weights (silent)\n", - "enc_path = dec_path = None\n", - "for d in WEIGHT_DIRS:\n", - " e = os.path.join(d, ENC_NAME)\n", - " c = os.path.join(d, DEC_NAME)\n", - " if os.path.isfile(e) and os.path.isfile(c):\n", - " enc_path, dec_path = e, c\n", - " break\n", - "\n", - "latent_ready = False\n", - "if enc_path and dec_path:\n", - " try:\n", - " encoder.load_weights(enc_path)\n", - " decoder.load_weights(dec_path)\n", - " latent_ready = True\n", - " except Exception:\n", - " pass # stay silent\n", - "# else: stay silent\n", - "\n", - "# ── HF file/dataset discovery ───────────────────────────────────────────\n", - "USE_SIMPLECACHE = True\n", - "fs_hf = fsspec.filesystem(\"hf\")\n", - "\n", - "def _ensure_hf_uri(p: str) -> str:\n", - " return p if p.startswith(\"hf://\") else (\"hf://\" + p.lstrip(\"/\"))\n", - "\n", - "def _maybe_cache(uri: str) -> str:\n", - " return f\"simplecache::{uri}\" if USE_SIMPLECACHE else uri\n", - "\n", - "def _basename_from_uri(uri: str) -> str:\n", - " return os.path.basename(urlparse(uri).path)\n", - "\n", - "def _list_all_tiff_paths():\n", - " globs = [\n", - " f\"hf://datasets/{REPO_ID}@{BRANCH}/**/*.tif\",\n", - " f\"hf://datasets/{REPO_ID}@{BRANCH}/**/*.tiff\",\n", - " ]\n", - " paths = []\n", - " for pat in globs:\n", - " try:\n", - " for p in fs_hf.glob(pat):\n", - " paths.append(_ensure_hf_uri(p))\n", - " except Exception:\n", - " pass\n", - " return sorted(set(paths))\n", - "\n", - "ALL_PATHS = _list_all_tiff_paths()\n", - "MODE = \"files\" if len(ALL_PATHS) > 0 else \"dataset\"\n", - "\n", - "DS_OBJ = None\n", - "DS_LEN = 0\n", - "if MODE == \"dataset\":\n", - " from datasets import load_dataset\n", - " DS_OBJ = load_dataset(REPO_ID, split=\"train\", keep_in_memory=False)\n", - " DS_LEN = len(DS_OBJ)\n", - "\n", - "# ── Helpers ─────────────────────────────────────────────────────────────\n", - "def normalize01(x):\n", - " x = x.astype(np.float32)\n", - " return x/255.0 if x.max() > 1.0 else x\n", - "\n", - "def load_img_file_hf(uri: str):\n", - " with fsspec.open(_maybe_cache(uri), \"rb\") as f:\n", - " img = tiff_imread(f)\n", - " if img.ndim == 3:\n", - " if img.shape[-1] == 1: img = img[...,0]\n", - " elif img.shape[-1] == 3: img = 0.2126*img[...,0] + 0.7152*img[...,1] + 0.0722*img[...,2]\n", - " else: img = img[...,0]\n", - " if img.shape != (256,256):\n", - " raise ValueError(f\"{_basename_from_uri(uri)} has shape {img.shape}, expected 256x256.\")\n", - " return normalize01(img)\n", - "\n", - "def load_img_dataset_idx(idx: int):\n", - " ex = DS_OBJ[int(idx)]\n", - " arr = np.asarray(ex[\"image\"])\n", - " if arr.ndim == 3:\n", - " if arr.shape[-1] == 1: arr = arr[...,0]\n", - " elif arr.shape[-1] == 3: arr = 0.2126*arr[...,0] + 0.7152*arr[...,1] + 0.0722*arr[...,2]\n", - " else: arr = arr[...,0]\n", - " if arr.shape != (256,256):\n", - " raise ValueError(f\"sample_{idx} has shape {arr.shape}, expected 256x256.\")\n", - " return normalize01(arr)\n", - "\n", - "def encode_img(img01):\n", - " return encoder.predict(img01[None, ..., None], batch_size=8, verbose=0)[0]\n", - "\n", - "def decode_many(z_batch):\n", - " rec = decoder.predict(z_batch, batch_size=min(len(z_batch), 16), verbose=0)[..., 0]\n", - " return np.clip(rec, 0.0, 1.0)\n", - "\n", - "# ── Pair construction from FULL dataset (no 1k pre-sample) ──────────────\n", - "rng_py = random.Random()\n", - "\n", - "def make_pairs_from_full(n_pairs=N_PAIRS):\n", - " pairs = []\n", - " if MODE == \"files\":\n", - " N = len(ALL_PATHS)\n", - " if N < 2:\n", - " return []\n", - " m = min(2*n_pairs, N)\n", - " idxs = list(range(N))\n", - " rng_py.shuffle(idxs)\n", - " chosen = idxs[:m]\n", - " for i in range(0, m - (m % 2), 2):\n", - " pairs.append((ALL_PATHS[chosen[i]], ALL_PATHS[chosen[i+1]]))\n", - " while len(pairs) < n_pairs:\n", - " a = ALL_PATHS[rng_py.randrange(N)]\n", - " b = ALL_PATHS[rng_py.randrange(N)]\n", - " pairs.append((a, b))\n", - " else:\n", - " N = DS_LEN\n", - " if N < 2:\n", - " return []\n", - " m = min(2*n_pairs, N)\n", - " idxs = list(range(N))\n", - " rng_py.shuffle(idxs)\n", - " chosen = idxs[:m]\n", - " for i in range(0, m - (m % 2), 2):\n", - " pairs.append((chosen[i], chosen[i+1])) # store indices\n", - " while len(pairs) < n_pairs:\n", - " a = rng_py.randrange(N)\n", - " b = rng_py.randrange(N)\n", - " pairs.append((a, b))\n", - " return pairs\n", - "\n", - "# ── Widgets ─────────────────────────────────────────────────────────────\n", - "w_rescan = W.Button(description=\"Resample pairs\", button_style=\"info\")\n", - "w_pair = W.IntSlider(value=0, min=0, max=N_PAIRS-1, step=1, description=\"Pair #\", readout=True, continuous_update=False)\n", - "w_prev = W.Button(description=\"Prev\")\n", - "w_next = W.Button(description=\"Next\")\n", - "w_status = W.HTML(\"\")\n", - "\n", - "# ── Figure (single small row, ~4x2 in; titles above each image) ─────────\n", - "_was_interactive = plt.isinteractive()\n", - "plt.ioff()\n", - "\n", - "K = len(T_VALUES)\n", - "n_cols, n_rows = K, 1\n", - "\n", - "FIG_W_IN, FIG_H_IN, DPI = 4.4, 2.0, 150\n", - "fig = plt.figure(figsize=(FIG_W_IN, FIG_H_IN), dpi=DPI, constrained_layout=False)\n", - "gs = fig.add_gridspec(n_rows, n_cols)\n", - "\n", - "axes, ims = [], []\n", - "for k in range(K):\n", - " ax = fig.add_subplot(gs[0, k])\n", - " im = ax.imshow(np.zeros((256, 256)), cmap=\"gray\", vmin=0, vmax=1)\n", - " ax.set_xticks([]); ax.set_yticks([]); ax.set_frame_on(False)\n", - " ax.set_title(f\"t={T_VALUES[k]:.2f}\", fontsize=6, pad=2) # ← title above the image\n", - " axes.append(ax); ims.append(im)\n", - "\n", - "# Tight spacing; no forced 100% width so it won't zoom/stretch\n", - "fig.subplots_adjust(left=0.01, right=0.99, bottom=0.02, top=0.88, wspace=0.02)\n", - "fig.canvas.header_visible = False\n", - "fig.canvas.toolbar_visible = False\n", - "fig.canvas.layout.width = \"auto\"\n", - "fig.canvas.layout.height = \"auto\"\n", - "\n", - "if _was_interactive:\n", - " plt.ion()\n", - "\n", - "\n", - "# ── State & cache ───────────────────────────────────────────────────────\n", - "pairs = [] # files mode: list[(uriA, uriB)], dataset mode: list[(idxA, idxB)]\n", - "pair_cache = {} # idx -> dict('imgs', 'A','B','A_z','B_z')\n", - "\n", - "def set_status(msg, ok=True):\n", - " # keep a minimal status line; still helpful for errors\n", - " color = \"#1b5e20\" if ok else \"#b71c1c\"\n", - " w_status.value = f\"{msg}\"\n", - "\n", - "def _handle_to_name(h):\n", - " if MODE == \"files\":\n", - " return _basename_from_uri(h)\n", - " else:\n", - " return f\"sample_{int(h):06d}.tif\"\n", - "\n", - "def _load_handle(h):\n", - " if MODE == \"files\":\n", - " return load_img_file_hf(h)\n", - " else:\n", - " return load_img_dataset_idx(int(h))\n", - "\n", - "def show_frames(framesK, pair_idx):\n", - " for k, im in enumerate(ims):\n", - " im.set_data(framesK[k])\n", - " fig.canvas.draw_idle()\n", - "\n", - "\n", - "def compute_pair(idx):\n", - " if idx in pair_cache:\n", - " return pair_cache[idx][\"imgs\"]\n", - " a_h, b_h = pairs[idx]\n", - " A = _load_handle(a_h)\n", - " B = _load_handle(b_h)\n", - " A_z = encode_img(A)\n", - " B_z = encode_img(B)\n", - " Z = np.stack([(1.0 - t) * A_z + t * B_z for t in T_VALUES], axis=0) # (K, latent_dim)\n", - " frames = decode_many(Z) # (K, 256, 256)\n", - " pair_cache[idx] = {\"imgs\": frames, \"A\": a_h, \"B\": b_h, \"A_z\": A_z, \"B_z\": B_z}\n", - " return frames\n", - "\n", - "def on_rescan_clicked(_):\n", - " if not latent_ready:\n", - " set_status(\"Weights not loaded; cannot interpolate in latent space.\", ok=False)\n", - " return\n", - " if MODE == \"files\" and len(ALL_PATHS) < 2:\n", - " set_status(\"No TIFFs found in repo.\", ok=False)\n", - " return\n", - " if MODE == \"dataset\" and DS_LEN < 2:\n", - " set_status(\"Dataset is empty.\", ok=False)\n", - " return\n", - "\n", - " global pairs, pair_cache\n", - " pairs = make_pairs_from_full(N_PAIRS)\n", - " pair_cache = {}\n", - " if not pairs:\n", - " set_status(\"Could not build pairs from the repository.\", ok=False)\n", - " return\n", - "\n", - " w_pair.max = len(pairs)-1\n", - " w_pair.value = 0\n", - " # no verbose banner; just build silently and show first pair\n", - " try:\n", - " frames = compute_pair(0)\n", - " show_frames(frames, 0)\n", - " except Exception as ex:\n", - " set_status(f\"Failed pair 1: {ex}\", ok=False)\n", - "\n", - "def on_pair_change(change):\n", - " idx = int(change['new'])\n", - " if not pairs:\n", - " return\n", - " try:\n", - " frames = compute_pair(idx)\n", - " show_frames(frames, idx)\n", - " except Exception as ex:\n", - " set_status(f\"Failed pair {idx+1}: {ex}\", ok=False)\n", - "\n", - "def on_prev(_):\n", - " if pairs:\n", - " w_pair.value = max(0, w_pair.value - 1)\n", - "\n", - "def on_next(_):\n", - " if pairs:\n", - " w_pair.value = min(w_pair.max, w_pair.value + 1)\n", - "\n", - "w_rescan.on_click(on_rescan_clicked)\n", - "w_pair.observe(on_pair_change, names='value')\n", - "w_prev.on_click(on_prev)\n", - "w_next.on_click(on_next)\n", - "\n", - "# ── Display ──────────\n", - "container = W.VBox([\n", - " W.HBox([w_rescan, w_prev, w_next, w_pair]),\n", - " fig.canvas\n", - "], layout=W.Layout(width=\"100%\"))\n", - "display(container)\n", - "\n", - "# Kick off an initial build\n", - "on_rescan_clicked(None)\n", - "\n", - "None\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2i_theoretical_average_images.ipynb b/notebooks/fig2i_theoretical_average_images.ipynb deleted file mode 100644 index cb53bc5b2..000000000 --- a/notebooks/fig2i_theoretical_average_images.ipynb +++ /dev/null @@ -1,221 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "42e34ece-1ce4-411d-9019-b63becda572f", - "metadata": {}, - "outputs": [], - "source": [ - "# ── 0) Interactive backend & quiet TF logs ─────────────────────────────\n", - "try:\n", - " get_ipython().run_line_magic(\"matplotlib\", \"widget\")\n", - "except Exception:\n", - " pass\n", - "\n", - "import os\n", - "os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = \"2\" # quiet TensorFlow logs\n", - "\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import ipywidgets as W\n", - "\n", - "import tensorflow as tf\n", - "from tensorflow.keras.layers import Input, Dense, Reshape, Conv2D, Conv2DTranspose, ReLU\n", - "from tensorflow.keras.models import Model\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "bd33f58c-8d51-406a-a2d3-775ee03e5bf6", - "metadata": {}, - "outputs": [], - "source": [ - "# ── 1) Paths (edit if needed) ──────────────────────────────────────────\n", - "RESULTS_DIR = Path(\"..\") / \"data\" / \"nucleus-ae\" \n", - "CENTERS_NPZ = os.path.join(RESULTS_DIR, \"latent_centers.npz\")\n", - "DECODER_WEIGHTS = os.path.join(RESULTS_DIR, \"decoder_weights.h5\")\n", - "\n", - "# model constants (must match training)# ── 2) GPU memory growth (safe even if no GPU) ─────────────────────────\n", - "try:\n", - " gpus = tf.config.list_physical_devices(\"GPU\")\n", - " for g in gpus:\n", - " tf.config.experimental.set_memory_growth(g, True)\n", - "except Exception:\n", - " pass\n", - "IMG_SHAPE = (256, 256, 1)\n", - "LATENT_SIDE = 16 # after 4× AveragePooling2D from 256 → 16\n", - "BASE_CH = 128\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "5c75327d-faf3-497d-b87c-c85442a48095", - "metadata": {}, - "outputs": [], - "source": [ - "# ── 2) GPU memory growth (safe even if no GPU) ─────────────────────────\n", - "try:\n", - " gpus = tf.config.list_physical_devices(\"GPU\")\n", - " for g in gpus:\n", - " tf.config.experimental.set_memory_growth(g, True)\n", - "except Exception:\n", - " pass\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "af58dc4f-5b96-4cf2-9245-27c863afbed8", - "metadata": {}, - "outputs": [], - "source": [ - "# ── 3) Rebuild decoder to match your training script ───────────────────\n", - "def build_decoder(latent_dim: int) -> Model:\n", - " z_in = Input((latent_dim,), name=\"z_sampling\")\n", - " x = Dense(LATENT_SIDE * LATENT_SIDE * BASE_CH)(z_in)\n", - " x = Reshape((LATENT_SIDE, LATENT_SIDE, BASE_CH))(x)\n", - " for f in [BASE_CH, 64, 32, 16]:\n", - " x = Conv2DTranspose(f, 3, strides=2, padding=\"same\")(x); x = ReLU()(x)\n", - " x = Conv2D(f, 3, padding=\"same\")(x); x = ReLU()(x)\n", - " out = Conv2D(1, 3, padding=\"same\", activation=\"sigmoid\", name=\"decoder_output\")(x)\n", - " return Model(z_in, out, name=\"decoder\")\n", - "\n", - "# Load latent centers\n", - "npz = np.load(CENTERS_NPZ)\n", - "z_mean = npz[\"mean\"].astype(np.float32)\n", - "z_median = npz[\"median\"].astype(np.float32)\n", - "z_geomed = npz[\"geomedian\"].astype(np.float32)\n", - "latent_dim = int(z_mean.shape[0])\n", - "\n", - "# Build and load decoder weights\n", - "decoder = build_decoder(latent_dim)\n", - "decoder.load_weights(DECODER_WEIGHTS)\n", - "decoder.trainable = False\n", - "\n", - "# Decode all three\n", - "def _decode(z_vec):\n", - " z_vec = np.asarray(z_vec, dtype=np.float32)[None, ...] # (1, D)\n", - " x = decoder.predict(z_vec, verbose=0)[0, ..., 0] # in [0,1]\n", - " x = (x * 255.0).astype(np.float32) # now 0–255 float\n", - " return x\n", - "\n", - "img_mean = _decode(z_mean)\n", - "img_median = _decode(z_median)\n", - "img_geomed = _decode(z_geomed)\n", - "\n", - "imgs = [img_mean, img_median, img_geomed]\n", - "titles = [\"Mean\", \"Median\", \"Geometric median\"]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "4fe453ca-2a52-4cf4-8216-18af2efc688a", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "131782b50ff64121abfb6bba69531f47", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(IntRangeSlider(value=(0, 255), description='Intensity', layout=Layout(width='600px'), max=255, …" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "fd3db491fa5f47d990c6513f4d30b715", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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H/7DfxCRhzTNHsdll10m995776xdjSuvvLK4/g//8A/lnnvuke/+7u9O9YdYu1PPwS7T5fZ4P/7xj8vzn/982djYmJ3XIx7xCHn6058+0/g777xTptPpnMZvbGzI85///Oox0W4+/HCSOLIQLr/8cjn77LPlLW95i3zmM5+R66+/fk+b++67T37nd35HNjc396z7y3/5L4vIQyVUV1xxhTz60Y+Wd7/73fLEJz5Rjh07Jq985SvlxIkTc9scP3587gEg8tDMydiOEEIOiqG08X//7/8tIiKPecxj5tafe+65xf3v7u7KNddcI1/72tfkn/7TfypPfvKT5cwzz5Q3velN8oUvfGFP+6/7uq+b+3zkyBFqKiGHiEc96lFy9OjRPU7XZZddNnMGr7nmmtny++67T0RkT/BPUUfzq1/9qjz2sY/ds/6xj32s/Pmf//ncMk9H0GbTv1Vf7rvvPplOp/KoRz0qPI4nPvGJ7jrljDPOkDPPPLPYRsu5zzvvvGK7CHtueg413bzvvvvkPe95j7znPe/Z09/x48dF5CGN39zclEc84hFz62saT7t5OaCDThbC+vq6XHfddfKud71Lvv3bv12+4Ru+YU+bc845R/723/7b8pa3vGXPuqNHj4rIQ6/CuOeee+SjH/2oPP3pT5+t/9rXvibnn3/+4k6AEEIWwFDa+LjHPU5ERL7yla/I4x//+Nn6P/mTPynu/4/+6I/k937v9+TDH/7wXCbmwQcf7HQ+hJBxs7GxIRdffLH8+q//uuzs7Mj6+rqIiDziEY+Qv/E3/oaIyJyTds4554iIyHvf+1656KKL9vSnjuw555yzZ6y5iMi9994766MP55xzjkwmE/nN3/zNPU6kiMhTnvKUah9YNeDxyEc+UkREvvzlL7cfZEfOOeccueqqq+RVr3rVnnVnn322iDyk8VtbW/LVr351zkmvaTzt5uWADjpZGDfeeKN88YtflJe+9KXu+ssvv1z+zb/5N/KN3/iNYYRTjUYrzr/9278td91111xZFSGEHBaG0MZv/uZvluPHj8ttt90m3/qt3zpbfuuttxb37Wnq3XffLb/1W781K88khCwX3//93y/Pe97z5G1ve5u88Y1vLLZ96lOfKueff7788R//sbz61a8O2z3rWc+SD33oQ/LZz35Wnva0p4mIyAMPPCAf/ehH5XnPe17vY77ssstE5KEM99VXXx22O3LkyNzEaq085SlPkfPPP19+5md+Rq677rrO/bRw+eWXy2c+8xn51m/91lnABLnwwgtlMpnIbbfdNiu/397elo985CPFvmk3Lwd00MnC+JZv+Rb58Ic/HK7//u//fvnFX/xFueSSS+S1r32tfP3Xf7386Z/+qfzn//yf5bzzzpPv+77vk2/7tm+Ts846S1796lfLTTfdJF/60pfk5ptvnssYEULIYWIIbTznnHPke77ne+Qd73iHHD9+XP76X//rcsstt8jdd99d3Lca3zfddJPs7OzIAw88IG9+85upqYQsMVdddZXcdNNN8qY3vUk+9alPyXd913fJ4x73OPna174mn/zkJ+Xee++dZW4nk4m8+93vlhe/+MXywAMPyFVXXSVnnnmm3H333XL77bfL2972Nrngggvk7/29vyc/9mM/Js973vPkrW99q5x11lnyzne+Ux588EG56aabeh/zBRdcIK9+9avlZS97mbz+9a+Xiy66SLa2tuRzn/uc/Kf/9J9mGvqN3/iNsr29LT/+4z8uz3zmM+VhD3tYKruu6CvXrr/+ennhC18oN9xwgxw9elTuuOMOufDCCwcJNiA//MM/LBdeeKE897nPlb//9/++nHvuuXLvvffKb/zGb8h3fMd3yPXXXy9Pe9rT5AUveIG87nWvkxMnTsiTnvQked/73ic7OzvFvmk3LwecJI4cGI985CPld37nd+RbvuVb5Ad/8AfliiuukO/7vu+Tu+66a1ZWde6558oHP/hB+cpXviLPf/7z5T3veY/81E/9lDz5yU8+4KMnhJDFkNFGEZF3vOMd8j3f8z3yzne+U6677jqZTCby1re+tdj30aNH5Zd+6Zfk6NGjcu2118ob3/hG+aEf+iG55JJLFn1ahJAD5O1vf7t89KMflQcffFBe9apXyaWXXio33nijfPrTn5af/umflh/5kR+Ztb322mvlV37lV+QP/uAP5Prrr5drrrlGfvRHf1Se9KQnzcZAn3322fIbv/Eb8oxnPEO+93u/V170ohfJ5uamfOITn5CnPvWpgxzzP//n/1ze+ta3yvvf/3656qqr5CUveYm8//3vn9Orq6++Wl71qlfJ29/+drnooovkH/yDf9C8n+/6ru+Sj3zkI/KlL31JXvSiF8n1118vv/mbv7mwkvAnP/nJcuedd8ojH/lI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DjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghI4AOOiGEEEIIIYQQMgLooBNCCCGEEEIIISOADjohhBBCCCGEEDIC6KATQgghhBBCCCEjgA46IYQQQgghhBAyAuigE0IIIYQQQgghIyDloE+n00UfByGEHDhDah11kxCy7FAzCSGkjYzWpRz0+++/v/fBEELI2BlS66ibhJBlh5pJCCFtZLRuMk248bu7u/LlL39Zzj77bJlMJoMcHCGEjIXpdCr333+/nHfeebK2NszIH+omIWRZoWYSQkgbLbqZctAJIYQQQgghhBCyWDhJHCGEEEIIIYQQMgL+HyuvewvSMXhzAAAAAElFTkSuQmCC", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: ae1m-theoretical\n", - "\n", - "# ── 4) Interactive figure with 0–255 Intensity slider (non-editable readout) ──\n", - "fig, axes = plt.subplots(1, 3, figsize=(10, 3.4), constrained_layout=True)\n", - "ims = []\n", - "for ax, arr, title in zip(axes, imgs, titles):\n", - " # 'nearest' = nearest-neighbor (no smoothing)\n", - " im = ax.imshow(arr, cmap=\"gray\", vmin=0.0, vmax=255.0, interpolation=\"nearest\")\n", - " ax.set_title(title, fontsize=11)\n", - " ax.set_xticks([]); ax.set_yticks([])\n", - " ims.append(im)\n", - "\n", - "# Non-editable range display\n", - "rng = W.IntRangeSlider(\n", - " value=[0, 255],\n", - " min=0, max=255, step=1,\n", - " description=\"Intensity\",\n", - " continuous_update=True,\n", - " readout=False, # hide the editable textbox\n", - " layout=W.Layout(width=\"600px\")\n", - ")\n", - "val_label = W.Label(f\"range: {rng.value[0]} – {rng.value[1]}\")\n", - "\n", - "def on_range_change(change):\n", - " vmin, vmax = change[\"new\"]\n", - " if vmax <= vmin:\n", - " return\n", - " for im in ims:\n", - " im.set_clim(vmin=float(vmin), vmax=float(vmax))\n", - " val_label.value = f\"range: {vmin} – {vmax}\"\n", - " fig.canvas.draw_idle()\n", - "\n", - "rng.observe(on_range_change, names=\"value\")\n", - "\n", - "display(W.HBox([rng, val_label]))\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fig2j_practical_average_images.ipynb b/notebooks/fig2j_practical_average_images.ipynb deleted file mode 100644 index caaecde63..000000000 --- a/notebooks/fig2j_practical_average_images.ipynb +++ /dev/null @@ -1,294 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d5a37d68-3d8e-42c6-a05d-6ea2a5032531", - "metadata": {}, - "source": [ - "# Representative microscopy images of the cell nucleus." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "74c0f06d-3de1-4907-a5b3-d6dd90c12a15", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d21e5c24be40418c9a2d784baa679b96", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(HBox(children=(ToggleButtons(description='Distance metric:', layout=Layout(width='auto'), optio…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3afca0fc17f54655bffbd3df9d159590", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkH5JREFUeJztnXmwZFd933+999vmzb5pmZElFEnYQsgCscjYRBarsTG7qkyQZAiFhQlVJKJUNpbkImDLiZ3EYbGIEQIkIEDJcWQQm8AxRHKNXUkMVQYDkUCjWTTbe/P2ft1988fke9+vv+ec7n6zaebq+6lSPU33Xc49fbvP/f7WUpZlmQkhhBDirKb8VA9ACCGEECeOFnQhhBCiAGhBF0IIIQqAFvSzgE984hNWKpXy/6rVqm3bts3e9KY32Q9/+MNTeu7du3fbu9/9bvvFX/xFW7t2rZVKJfvEJz4R3faBBx6wf/Ev/oX93M/9nNVqNSuVStHtvvWtb/VcT6lUsnXr1tnVV19t99xzT7D9zp07e7YdGxuzK6+80v7zf/7PdjwhIKVSyd75zneuer8Ue/bssdtvv93+9//+38F7X/rSl+z2228/aec63eCz+ta3vrXqfR977DErlUr27/7dvxu47YnM0+23395zf9RqNTv//PPtbW97m+3bty+6z9zcnP3BH/yBPfvZz7bx8XEbGxuzK664wj7wgQ/Y3NxcsP3OnTvtV37lV1Y1rs985jP2ohe9yLZs2WKNRsO2b99ur3rVq+x//s//Gd3+s5/9rF1xxRXWbDZt+/bt9u53v9tmZ2eD7WZnZ+3d7363bd++3ZrNpl1xxRX22c9+dqgx9ZvnnTt32g033NDz2v/6X//LfvEXf9EmJyetVCrZf/gP/2Go84inBi3oZxF33323Pfzww/b1r3/d3vnOd9pf/uVf2jXXXGNHjhw5Zef80Y9+ZPfee6/V63V7xSte0Xfb+++/3x555BG77LLL7FnPetbAY3/gAx+whx9+2B5++GH71Kc+ZTt27LAbbrjB/vRP/zTY9oUvfGHPtqOjo/bbv/3b9sEPfvC4r+1ksWfPHrvjjjuSC/odd9xx+gd1krjyyivt4YcftiuvvPKUnudkzNODDz5oDz/8sH35y1+2N73pTfbxj3/crr32WlteXu7Zbv/+/fa85z3Pfv/3f99e+tKX2v33329/8Rd/YS9/+cvt/e9/vz3vec+z/fv3n9BYzMwOHTpkL3zhC+3DH/6wffWrX7U//uM/tv3799uLXvQi++u//uuebe+99167/vrr7TnPeY59+ctftttuu80+8YlP2Gte85rguK95zWvsnnvusdtuu82+/OUv23Oe8xy7/vrr7b777hs4pn7zfP/999v73ve+ntduuukm27t3r332s5+1hx9+2N70pjetYgbEaScTZzx33313ZmbZrl27el6/4447MjPLPv7xj5+yc3c6nfz/d+3alZlZdvfddw/c9uabb85St9c3v/nNzMyyz3/+88H+O3fuzJ7//Of3vL5jx47sla98Zc9r09PT2eTkZHb++eev5nKyLMsyM8tuvvnmVe+Xot+89JuHM5lWq5UtLy+f0DEeffTRzMyyP/qjPxq47YnM02233ZaZWXbgwIGe12+88cbMzLKHHnqo5/WXvOQlWbVazf7mb/4mONbf/M3fZNVqNXvpS1/a83rsHjwepqamslqtlr35zW/OX2u329m2bduyl7zkJT3b3nvvvZmZZV/60pfy1/7qr/4qM7Psvvvu69n2uuuuy7Zv35612+2+51/tPFer1ewd73jH0NuLpxYp9LOYq666yswsVxO/9Eu/ZL/0S78UbHfDDTfYzp078397U+gf//Ef2wUXXGDj4+P2/Oc/3x555JGefcvl4W+R1Wyb2n98fNxqtdrAbdesWWMXX3zxCSmpP/uzP7OLL77YGo2GXXbZZVGz5fe+9z37tV/7NVu3bl1u3vRugW9961v2nOc8x8zMbrzxxtzse/vtt9sNN9xgH/rQh8zMekzCjz32mJmZLS4u2q233moXXHCB1et1O+ecc+zmm2+2qampnjHA3PvAAw/Ys5/9bBsZGbFLL73UHnjgATM75pK59NJLbWxszJ773Ofa3/3d361qHmBW/9SnPmXvec977JxzzrFGo2E/+tGPkib3j33sYz1zd9999wX3mafffTZono4X/n6Ymf3d3/2dffWrX7Xf/M3ftGuuuSbY55prrrGbbrrJvvKVr9jf//3fn9D5Y0xMTFiz2bRqtZq/9sgjj9jevXvtxhtv7Nn29a9/vY2Pj9v999+fv3b//ffb+Pi4vf71r+/Z9sYbb7Q9e/bY3/7t3ybPPWievckdbr52u20f+chH8m3FmU118CbiTOXRRx81M7OLL774uPb/0Ic+ZJdccknuF3vf+95nr3jFK+zRRx+1ycnJkzXMJN1u19rttpkdM0/efffd9r3vfc/uuuuugfu22217/PHHj/va//Iv/9K++c1v2u///u/b2NiYffjDH7brr7/eqtWqve51rzMzsx/84Af2ghe8wDZv3mz/6T/9J9uwYYN9+tOfthtuuMH2799vt9xyi1155ZV2991324033mi/+7u/a6985SvNzOzcc8+1paUlm5ubsy984Qv28MMP5+fetm2bZVlmr371q+0b3/iG3XrrrfYLv/AL9g//8A9222235a6FRqOR7/N//s//sVtvvdV+53d+xyYnJ+2OO+6w17zmNXbrrbfaN77xDfvABz5gpVLJ3vve99qv/Mqv2KOPPmojIyOrmpNbb73Vnv/859tHP/pRK5fLtnnz5qgP+q677rK3v/3t9trXvtb+5E/+xKanp+2OO+6wpaWl6HEH3Wfve9/7kvN0IsS+H1/72tfMzOzVr351cr9Xv/rVdtddd9nXvvY1+/mf//kTGoOZWafTsW63a0888YR98IMftCzL7Oabb87f/973vmdmZpdffnnPfrVazS655JL8fWx76aWX9jwQ+H2/973v2Qte8ILoOFYzz6985Svt4Ycftuc///n2ute9zt7znves8qrFU4EW9LOITqdj7XbbFhcX7Tvf+Y69//3vtxe96EX2q7/6q8d1vImJCXvggQesUqmYmdn27dvtuc99bu6DPNW88Y1v7Pl3uVy23/md37G3ve1twbZZluWL/549e+z973+/HTp0yP7Lf/kvx3XugwcP2q5du2zLli1mZvaKV7zCfvZnf9ZuvfXWfEG//fbbrdVq2Te/+U0777zz8u2mpqbsjjvusLe//e02OTlpP/uzP2tmZhdeeKE973nP6zkPjs+vf+UrX7GvfOUrduedd9q/+Tf/xszMrrvuOjvvvPPsjW98o33yk5/smYdDhw7ZI488Yuecc46ZHfusrrjiCvvYxz5mP/rRj2x0dNTMjimvV7/61fb1r3/dXvWqV61qTi688EL7/Oc/33ebbrdrt912m1199dX2hS98IX/9mmuusYsuusi2b98e7DPoPrvwwguT87Qa8P2YnZ21r33ta/aRj3zErr/++h7//09/+lMzM7vggguSx8F72PZEeeYzn2k/+MEPzOzY4vnggw/2PCgcOnTIzMzWr18f7Lt+/foeS8WhQ4fsZ37mZ6Lb+WPFWM08b9q0yTZt2mRmx+7hE/lcxOlDJveziOc973lWq9VsYmLCXvayl9m6devsv/23/xY8rQ/LK1/5yvxH1mzlKf8nP/nJSRnvIP7wD//Qdu3aZbt27bKvfe1rdsstt9gf/MEf5Auc50tf+pLVajWr1Wq2Y8cO+9jHPmZ/+qd/mivi1XLttdfmP25mZpVKxd74xjfaj370I9u9e7eZmT300EN27bXX5os5uOGGG2x+fr5H5ayWhx56KD+W5/Wvf72NjY3ZN77xjZ7Xr7jiinwxNzO79NJLzeyYmwWLuX/9eD7D1772tQO3+cEPfmD79u2zN7zhDT2vn3/++fbCF74wus/pus+2bt1qtVrN1q1bZ294wxvs53/+56NZE4PI/n/mxMkyMX/xi1+0v/3bv7XPf/7zdtlll9nLX/7yaNZA6nz8er9xySz+9EYL+lnEJz/5Sdu1a5c99NBD9va3v93+8R//0a6//vrjPt6GDRt6/g0T78LCwgmNc1h+5md+xq666iq76qqr7Jd/+Zftgx/8oL31rW+1f//v/719//vf79n2mmuusV27dtkjjzxin/rUp2znzp32zne+07797W8f17m3bt2afA0q59ChQ1FzJFRoPzU0iEOHDlm1Ws1VECiVSrZ169bg2Kze6vV639cXFxdXPaZhTNwYl38YArHXzE7fffb1r3/ddu3aZV/5ylfsta99rf2P//E/7Ld/+7d7tjn//PPNbMUcHwOKmB/kjpdnPvOZ9tznPtde97rX2YMPPmg7duywf/Wv/lX+PuYndj8dPny45zPesGFDcjuzuMoXTx+0oJ9FXHrppXbVVVfZi1/8YvvoRz9qb33rW+3BBx/MTZ/NZjPqxzx48ODpHupxc/nll1uWZfYP//APPa9PTk7aVVddZVdffbX9xm/8hn31q1+1Wq1mv/Vbv2XdbnfV54n5hvEafmA3bNhge/fuDbbbs2ePmZlt3Lhx1ecFGzZssHa7bQcOHOh5Pcsy27dv3wkd+3gZRt1hbmLBiKmc79PFs571LLvqqqvsJS95iX3+85+36667zu666y7btWtXvs11111nZmZ/8Rd/kTwO3sO2J5NqtWpXXnml/dM//VP+2s/93M+Zmdl3v/vdnm3b7bZ9//vfz1062PYf//Efc/cTwL5+W/H0Qwv6Wcydd95p69ats9/7vd+zbrdrO3futH/6p3/qWdQPHTqULGRxJoJc7s2bN/fd7hnPeIbdcsst9t3vftc+97nPrfo83/jGN3oWpU6nY5/73OfswgsvtHPPPdfMjpnlH3rooXwBB5/85CdtdHQ09yv2U5yp96699lozM/v0pz/d8/oXv/hFm5uby98/0/hn/+yf2datW+2//tf/2vP6T3/60xO6z062ai+VSvahD33IKpWK/e7v/m7+Ohb8P//zP7fvfOc7wX7f/va37eMf/7i97GUvOykBcczi4qI98sgjdtFFF+WvXX311bZt27agYNMXvvAFm52d7clF//Vf/3WbnZ21L37xiz3b3nPPPbZ9+3a7+uqr+57/dFvhxOlFQXFnMevWrbNbb73VbrnlFrvvvvvszW9+s/3Zn/2Z/cZv/Ia97W1vs0OHDtmdd95pa9asOaHzwALwf//v/zWzY6k/4+PjZmZ5AJnZMZ8o1NCPf/zjnn137tyZpxGBH/7wh3n60vT0tH3961+3P//zP7errrrKfuEXfmHguP71v/7X9tGPftTuuOMOe8Mb3tDjpx3Exo0b7Z//839u73vf+/Io9+9///s9qWu33XabPfDAA/biF7/Yfu/3fs/Wr19v9957r/3VX/2V3XnnnXkmwIUXXmgjIyN277332qWXXmrj4+O2fft22759e66+/vAP/9Be/vKXW6VSscsvv9yuu+46e+lLX2rvfe977ejRo/bCF74wj3J/9rOfbW9+85uHvpbTSblczgMCX/e619lNN92UBwlu27btuFMXU/MEF8Lx8IxnPMP+5b/8l/bhD3/Yvv3tb+dpap/85Cftl3/5l+0lL3mJvetd78ofnh566CH7j//xP9oll1ySrIa4Gl7wghfYr/7qr9qll15qk5OT9thjj9lHPvIR+/GPf9yTilapVOzOO++0N7/5zfb2t7/drr/+evvhD39ot9xyi1133XX2spe9LN/25S9/uV133XX2jne8w44ePWoXXXSRfeYzn7EHH3zQPv3pT/d8B37zN3/T7rnnHvvxj39sO3bsMLNTM8/iDOKpTIIXw5EqLJNlWbawsJCdf/752TOe8Yys3W5n99xzT3bppZdmzWYzu+yyy7LPfe5z2Vve8pZsx44d+T79Cn6YWXbbbbcFr6X+i40z9t9b3vKWfDsUlvH/jY2NZZdddll2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", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: ae1m-practical\n", - "\n", - "# ── Config ───────────────────────────────────────────────────────────────\n", - "HF_REPO = \"RussellBarkley/representative_nuclei\" # datasets repo name\n", - "HF_ROOT = f\"hf://datasets/{HF_REPO}\"\n", - "\n", - "# ── Imports & backend ───────────────────────────────────────────────────\n", - "try:\n", - " get_ipython().run_line_magic(\"matplotlib\", \"widget\")\n", - "except Exception:\n", - " pass\n", - "\n", - "import os, re\n", - "from io import BytesIO\n", - "from functools import lru_cache\n", - "from typing import List\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import ipywidgets as W\n", - "import fsspec\n", - "from tifffile import imread as tiff_imread\n", - "\n", - "# ── Constants ────────────────────────────────────────────────────────────\n", - "CENTERS = [\"mean\", \"median\", \"geomedian\"]\n", - "METRICS = [\"euclidean\", \"cosine\"]\n", - "EXTS = (\".tif\", \".tiff\", \".png\")\n", - "rank_pat = re.compile(r\"^(\\d{1,4})__\") # e.g., '001__...tif'\n", - "\n", - "# ── Filesystem (quiet—no prints) ────────────────────────────────────────\n", - "fs = fsspec.filesystem(\"hf\")\n", - "\n", - "def _natural_sort_key(path: str):\n", - " base = os.path.basename(path)\n", - " m = rank_pat.match(base)\n", - " if m:\n", - " try:\n", - " return (0, int(m.group(1)), base.lower())\n", - " except Exception:\n", - " pass\n", - " return (1, base.lower())\n", - "\n", - "def list_ranked_images(center: str, metric: str) -> List[str]:\n", - " \"\"\"List and rank-sort up to 100 files under /
// (quiet)\"\"\"\n", - " folder = f\"{HF_ROOT}/{center}/{metric}\"\n", - " try:\n", - " files = fs.glob(f\"{folder}/*\")\n", - " except FileNotFoundError:\n", - " files = []\n", - " files = [p for p in files if os.path.splitext(p)[1].lower() in EXTS]\n", - " files.sort(key=_natural_sort_key)\n", - " return files[:100]\n", - "\n", - "# Build the index used by the viewer code (quiet)\n", - "repo_index = {(c, m): list_ranked_images(c, m) for c in CENTERS for m in METRICS}\n", - "\n", - "# ── Loader with small cache ─────────────────────────────────────────────\n", - "@lru_cache(maxsize=64)\n", - "def load_image_bytes(hf_path: str) -> np.ndarray:\n", - " \"\"\"Read image from HF as grayscale float32 0..255.\"\"\"\n", - " with fs.open(hf_path, \"rb\") as f:\n", - " data = f.read()\n", - " arr = tiff_imread(BytesIO(data))\n", - "\n", - " if arr.ndim > 2:\n", - " arr = arr[..., 0]\n", - " arr = np.asarray(arr)\n", - "\n", - " if np.issubdtype(arr.dtype, np.floating):\n", - " a = arr.astype(np.float32)\n", - " if a.max() <= 1.0 + 1e-6:\n", - " a *= 255.0\n", - " else:\n", - " a = arr.astype(np.float32)\n", - "\n", - " a = np.clip(a, 0, 255)\n", - " return a\n", - "\n", - "# ── Helper to trim \"NNN__\" prefix from titles ───────────────────────────\n", - "def _display_name(path: str) -> str:\n", - " b = os.path.basename(path)\n", - " return b[5:] if len(b) > 5 else b # remove first 5 chars like '001__'\n", - "\n", - "# ── UI widgets (renamed + wider spacing) ────────────────────────────────\n", - "CENTERS = [\"mean\", \"median\", \"geomedian\"]\n", - "METRICS = [\"euclidean\", \"cosine\"]\n", - "\n", - "w_metric = W.ToggleButtons(\n", - " options=METRICS, value=\"euclidean\",\n", - " description=\"Distance metric:\", button_style=\"\",\n", - " layout=W.Layout(width=\"auto\")\n", - ")\n", - "w_center = W.ToggleButtons(\n", - " options=CENTERS, value=\"mean\",\n", - " description=\"Measure of central tendency:\", button_style=\"\",\n", - " layout=W.Layout(width=\"auto\")\n", - ")\n", - "\n", - "# Rank control with Prev/Next buttons\n", - "w_prev = W.Button(description=\"◀ Prev\", layout=W.Layout(width=\"80px\"))\n", - "w_next = W.Button(description=\"Next ▶\", layout=W.Layout(width=\"80px\"))\n", - "w_rank = W.IntSlider(\n", - " value=1, min=1, max=100, step=1, description=\"Rank:\", readout=False,\n", - " continuous_update=True, layout=W.Layout(width=\"320px\"))\n", - "w_rank_label = W.Label(f\"{w_rank.value}/100\", layout=W.Layout(width=\"60px\"))\n", - "rank_row = W.HBox([w_prev, w_rank, w_rank_label, w_next],\n", - " layout=W.Layout(align_items=\"center\", gap=\"8px\"))\n", - "\n", - "# Intensity range\n", - "w_rng = W.IntRangeSlider(\n", - " value=[0, 255], min=0, max=255, step=1, description=\"Intensity:\",\n", - " readout=False, continuous_update=True, layout=W.Layout(width=\"480px\"))\n", - "w_rng_label = W.Label(f\"{w_rng.value[0]} – {w_rng.value[1]}\")\n", - "\n", - "# Put metric and center side-by-side with extra gap\n", - "row1 = W.HBox([w_metric, w_center],\n", - " layout=W.Layout(justify_content=\"flex-start\", gap=\"28px\"))\n", - "row2 = rank_row\n", - "row3 = W.HBox([w_rng, w_rng_label], layout=W.Layout(align_items=\"center\", gap=\"8px\"))\n", - "\n", - "ui = W.VBox([row1, row2, row3], layout=W.Layout(gap=\"10px\"))\n", - "display(ui)\n", - "\n", - "# ── Figure (title shows filename without numeric prefix) ────────────────\n", - "fig, ax = plt.subplots(figsize=(5.0, 5.0), constrained_layout=True)\n", - "im = ax.imshow(np.zeros((10,10), dtype=np.float32), cmap=\"gray\",\n", - " vmin=0, vmax=255, interpolation=\"nearest\")\n", - "ax.set_xticks([]); ax.set_yticks([])\n", - "title = ax.set_title(\"\", fontsize=12)\n", - "\n", - "def _current_files():\n", - " return repo_index.get((w_center.value, w_metric.value), [])\n", - "\n", - "def _clamp_rank(n):\n", - " files = _current_files()\n", - " if not files:\n", - " return 1\n", - " return int(np.clip(n, 1, len(files)))\n", - "\n", - "def update_image(*_):\n", - " files = _current_files()\n", - " if not files:\n", - " im.set_data(np.zeros((10,10), dtype=np.float32))\n", - " title.set_text(\"\") # no filename if missing\n", - " fig.canvas.draw_idle()\n", - " return\n", - "\n", - " w_rank.value = _clamp_rank(w_rank.value)\n", - " idx = w_rank.value - 1\n", - " path = files[idx]\n", - " arr = load_image_bytes(path)\n", - "\n", - " vmin, vmax = w_rng.value\n", - " im.set_data(arr)\n", - " im.set_clim(vmin=float(vmin), vmax=float(vmax))\n", - "\n", - " # trimmed filename (remove first 5 chars like '001__')\n", - " title.set_text(_display_name(path))\n", - " fig.canvas.draw_idle()\n", - "\n", - "def on_intensity_change(change):\n", - " vmin, vmax = change[\"new\"]\n", - " if vmax <= vmin:\n", - " return\n", - " w_rng_label.value = f\"{vmin} – {vmax}\"\n", - " im.set_clim(vmin=float(vmin), vmax=float(vmax))\n", - " fig.canvas.draw_idle()\n", - "\n", - "def on_rank_change(change):\n", - " w_rank.value = _clamp_rank(change[\"new\"])\n", - " files = _current_files()\n", - " total = len(files) if files else 100\n", - " w_rank_label.value = f\"{w_rank.value}/{total}\"\n", - " update_image()\n", - "\n", - "def on_prev_clicked(_):\n", - " w_rank.value = _clamp_rank(w_rank.value - 1)\n", - "\n", - "def on_next_clicked(_):\n", - " w_rank.value = _clamp_rank(w_rank.value + 1)\n", - "\n", - "# ── Bind toolbar arrows (Back/Forward) and keyboard arrows ──────────────\n", - "def _bind_toolbar_arrows(fig):\n", - " tb = getattr(fig.canvas, \"toolbar\", None)\n", - " if tb is None:\n", - " return\n", - " try:\n", - " # Monkey-patch toolbar navigation to use our index navigation\n", - " tb.back = lambda *a, **k: on_prev_clicked(None)\n", - " tb.forward = lambda *a, **k: on_next_clicked(None)\n", - " except Exception:\n", - " pass\n", - "\n", - "def _on_key(event):\n", - " if event.key in (\"left\", \"a\"):\n", - " on_prev_clicked(None)\n", - " elif event.key in (\"right\", \"d\"):\n", - " on_next_clicked(None)\n", - "\n", - "# wire events\n", - "w_metric.observe(update_image, names=\"value\")\n", - "w_center.observe(update_image, names=\"value\")\n", - "w_rank.observe(on_rank_change, names=\"value\")\n", - "w_rng.observe(on_intensity_change, names=\"value\")\n", - "w_prev.on_click(on_prev_clicked)\n", - "w_next.on_click(on_next_clicked)\n", - "\n", - "# Activate toolbar + keyboard hooks\n", - "fig.canvas.mpl_connect(\"key_press_event\", _on_key)\n", - "_bind_toolbar_arrows(fig)\n", - "\n", - "update_image()\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/sfig1a_scatterplot.ipynb b/notebooks/sfig1a_scatterplot.ipynb deleted file mode 100644 index 1715355b0..000000000 --- a/notebooks/sfig1a_scatterplot.ipynb +++ /dev/null @@ -1,203 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a53d7651-cb6d-4eb2-b439-d2e5f6baec69", - "metadata": {}, - "source": [ - "# Supplementary Figure 1A" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "f6dae75d-1c5f-4e00-95a1-c4c9d8f0d742", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The ipympl module is not an IPython extension.\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d57a1e49daaa44a4b2cfabc53f19999c", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "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qiwBae4xJDIFSQghTDHTQkRERERExDUgRERERERkMkxAiIiIiIjIZJiAEBERERGRyTABISIiIiIik2ECQkREREREJsMEhIiIiIiITIYJCBERERERmQwTECIiIiIiMhkmIEREf0N6ejokSUJcXFxDd0UvMTERTz31FBQKBby8vBq6O0RERJViAkJETZK/vz8kScKKFSsMju/duxeSJDVQrxpWUFAQrK2tkZSUhMOHD1da537cJEmCubk5OnTogDfeeAO5ublGdaOjo/H888+jVatWUCgU8PT0xMqVK1FRUWFQT5Ik7N27tz6GREREjyEmIETUZCkUCoSGhlZ68dxUlZWV/e1zL1++jAEDBqBjx45o3bp1lfWGDx+OGzduID09HVu3bsW+ffswa9Ysgzp79uzBwIED4eTkhMjISCQmJiIwMBAffPABJkyYACHE3+4nERE1b0xAiKjJGjJkCNRqNZYvX15lneDgYKPbkdasWQNnZ2f9e39/f4wePRohISFwdHSEra0t3n33XZSXl2PhwoWws7ODk5MTPvvsM6P2ExMT4e3tDYVCAQ8PDxw9etSgPCEhAc8//zyUSiUcHR3h5+eHnJwcffmgQYMQEBCA+fPnw97eHkOHDq10HDqdDu+99x6cnJwgl8vh5eWFiIgIfbkkSYiJicF7770HSZIQHBxcZUzkcjnUajWcnJzg6+uL8ePH4+DBg/rywsJCvPbaaxg1ahQ2b94MLy8vODs7Y/r06di+fTu+++47fPvtt5W2XVZWhoCAALRt2xYKhQLOzs7V/v8QEVHzwwSEiJosMzMzhISEYN26dbh27Vqt2jpy5AgyMzNx7NgxrFq1CsHBwRgxYgRatWqFM2fOYObMmZg5cyYyMjIMzlu4cCEWLFiA8+fPw9vbG6NGjcKtW7cAADdu3MDAgQPh5eWFX375BREREbh58ybGjRtn0Mb27dthbm6OkydP4tNPP620fx9//DFWrlyJjz76CPHx8Rg2bBhGjRqFlJQU/Wd5eHhgwYIFuHHjBt58880ajTs1NRURERGwsLDQHzt48CBu3bpVaRsjR47EE088ga+//rrS9tauXYvw8HB8++23SEpKwo4dOwySPSIiIiYgRNSkvfjii/Dy8kJQUFCt2rGzs8PatWvh5uaGadOmwc3NDUVFRViyZAlcXV3x9ttvw9LSEidPnjQ4LyAgAC+//DLc3d2xadMmqFQqbNu2DQCwadMm9O7dGyEhIejatSt69eqFzz77DJGRkUhOTta30aVLF4SFhcHNzQ1du3attH8fffQRFi1ahAkTJsDNzQ2hoaHw8vLCmjVrAABqtRrm5uZQKpVQq9VQKpVVjvXHH3+EUqmElZUVOnfujISEBCxatEhffr9v7u7ulZ7ftWtXg/4/6OrVq3B1ddXfCjZgwABMnDixyr4QEVHzwwSEiJq80NBQbN++HQkJCX+7DQ8PD8hkf/5IdHR0hKenp/69mZkZWrdujezsbIPznn76af2/zc3N0adPH/z2228AgJiYGERGRkKpVOpf9xOMy5cv68/r06dPtX3Lz89HZmYm+vfvb3C8f//++s96FM8++yzi4uJw5swZzJkzB8OGDcOcOXOM6lW1zkMIUeVCf39/f8TFxcHNzQ1z5841uLWLiIgIYAJCRI8BHx8fDBs2DEuWLDEqk8lkRhfSWq3WqN6DtyAB99ZUVHZMp9M9tD/3L851Oh1GjhyJuLg4g1dKSgp8fHz09a2trR/a5hSxtCsAAAMWSURBVIPt3lddIlAda2trdOnSBT169MDatWtRWlqKd999V1/+xBNPAECVyU1iYiJcXV0rLevduzfS0tLw/vvvo7i4GOPGjcOYMWMeuY9ERPT4YgJCRI+FFStWYN++fYiOjjY43qZNG2RlZRkkIXX57I7Tp0/r/11eXo6YmBj9LEfv3r1x6dIlODs7o0uXLgavmiYdANCyZUtoNBqcOHHC4Hh0dHSVt0k9iqCgIHz00UfIzMwEAPj6+sLOzg4rV640qhseHo6UlJRqb6tq2bIlxo8fjy1btuCbb77B999/j9u3b9e6n0RE9HhgAkJEjwVPT09MnjwZ69atMzg+aNAg/PHHHwgLC8Ply5exYcMGHDhwoM4+d8OGDdizZw8SExMxe/Zs5ObmYtq0aQCA2bNn4/bt25g4cSLOnj2L1NRUHDx4ENOmTTN6lsbDLFy4EKGhofjmm2+QlJSExYsXIy4uDoGBgbUew6BBg+Dh4YGQkBAA92ZIPv30U/zwww94/fXXER8fj/T0dGzbtg3+/v4YM2aM0UL6+1avXo1du3YhMTERycnJ+O9//wu1Wg1bW9ta95OIiB4PTECI6LHx/vvvG91u5e7ujo0bN2LDhg3o2bMnzp49W+MdompixYoVCA0NRc+ePXH8+HH88MMPsLe3BwBoNBqcPHkSFRUVGDZsGLp3747AwECoVCqD9SY1MXfuXCxYsAALFiyAp6cnIiIiEB4eXuWtUI9q/vz52LJli36XrzFjxiAyMhIZGRnw8fGBm5sbVq1ahaVLl2LXrl1V3vqlVCoRGhqKPn36oG/fvkhPT8f+/fsfebxERPT4kgSfJkVERERERCbCP0kREREREZHJMAEhIiIiIiKTYQJCREREREQmwwSEiIiIiIhMhgkIERERERGZDBMQIiIiIiIyGSYgRERERERkMkxAiIiIiIjIZJiAEBERERGRyTABISIiIiIik2ECQkREREREJsMEhIiIiIiITIYJCBERERERmQwTECIiIiIiMhkmIEREREREZDJMQIiIiIiIyGSYgBARERERkcn8P+ALfNRmBVpoAAAAAElFTkSuQmCC", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: scatter-plot\n", - "\n", - "%load_ext ipympl\n", - "\n", - "%matplotlib widget\n", - "\n", - "import os\n", - "import csv\n", - "import numpy as np\n", - "from scipy.spatial import cKDTree\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path\n", - "\n", - "# ────────────────────────────────────────────────────────────────────────\n", - "# CONFIGURATION\n", - "# ────────────────────────────────────────────────────────────────────────\n", - "BASE_DIR = Path(\"..\") / \"data\" / \"nucleus-ae\"\n", - "CSV_NAME = 'results.csv'\n", - "CSV_PATH = os.path.join(BASE_DIR, CSV_NAME)\n", - "\n", - "# Your precomputed centroid:\n", - "CENTROID_ROIS = 694.49\n", - "CENTROID_MEAN = 79.0141\n", - "# ────────────────────────────────────────────────────────────────────────\n", - "\n", - "def _to_float(x):\n", - " try:\n", - " return float(x)\n", - " except Exception:\n", - " return np.nan\n", - "\n", - "def load_csv_rows(csv_path):\n", - " \"\"\"\n", - " Returns (images: list[str], num_rois: np.ndarray, mean: np.ndarray, std: np.ndarray)\n", - " Filters out rows with NaNs so array indices align.\n", - " \"\"\"\n", - " images, xs, ys, cs = [], [], [], []\n", - " with open(csv_path, newline='', encoding='utf-8') as f:\n", - " reader = csv.DictReader(f)\n", - " # Expected columns: image, num_rois, mean_intensity, std_intensity\n", - " for row in reader:\n", - " img = row.get('image', '')\n", - " x = _to_float(row.get('num_rois', ''))\n", - " y = _to_float(row.get('mean_intensity', ''))\n", - " c = _to_float(row.get('std_intensity', ''))\n", - " if img and np.isfinite(x) and np.isfinite(y) and np.isfinite(c):\n", - " images.append(img)\n", - " xs.append(x); ys.append(y); cs.append(c)\n", - " return images, np.asarray(xs), np.asarray(ys), np.asarray(cs)\n", - "\n", - "def plot_interactive(csv_path, centroid_rois, centroid_mean, hover_px=8.0):\n", - " images, x, y, c = load_csv_rows(csv_path)\n", - "\n", - " fig, ax = plt.subplots(figsize=(8, 6))\n", - " sc = ax.scatter(x, y, c=c, cmap='viridis', edgecolors='k')\n", - " cbar = fig.colorbar(sc, ax=ax)\n", - " cbar.set_label('Standard deviation Intensity')\n", - "\n", - " # Centroid\n", - " ax.scatter([centroid_rois], [centroid_mean], marker='x', s=200,\n", - " c='black', linewidths=3, label='Centroid')\n", - " ax.annotate('Centroid',\n", - " xy=(centroid_rois, centroid_mean),\n", - " xytext=(10, -10), textcoords='offset points',\n", - " color='black', fontsize=10, fontweight='bold')\n", - "\n", - " ax.set_xlabel('Number of ROIs')\n", - " ax.set_ylabel('Mean Intensity')\n", - " ax.legend(loc='upper right')\n", - " fig.tight_layout()\n", - "\n", - " # Tooltip annotation (initially hidden)\n", - " annot = ax.annotate(\n", - " \"\", xy=(0, 0), xytext=(10, 10), textcoords=\"offset points\",\n", - " bbox=dict(boxstyle=\"round\", fc=\"w\", ec=\"0.5\", alpha=0.9),\n", - " arrowprops=dict(arrowstyle=\"->\")\n", - " )\n", - " annot.set_visible(False)\n", - "\n", - " # We’ll build a KD-tree in display (pixel) coordinates for fast hover lookup\n", - " tree = None\n", - " disp_xy = None\n", - "\n", - " def build_tree(event=None):\n", - " nonlocal tree, disp_xy\n", - " # Transform data coords -> display (pixel) coords\n", - " data_xy = np.column_stack((x, y))\n", - " disp_xy = ax.transData.transform(data_xy)\n", - " tree = cKDTree(disp_xy)\n", - "\n", - " def on_draw(event):\n", - " # Recompute the KD-tree whenever the figure is drawn (resize, zoom, etc.)\n", - " build_tree()\n", - "\n", - " def on_move(event):\n", - " if tree is None or not event.inaxes:\n", - " if annot.get_visible():\n", - " annot.set_visible(False)\n", - " fig.canvas.draw_idle()\n", - " return\n", - " if event.x is None or event.y is None:\n", - " return\n", - "\n", - " # Query nearest point in pixel space\n", - " dist, idx = tree.query([event.x, event.y], k=1)\n", - " if np.isfinite(dist) and dist <= hover_px:\n", - " # Update annotation\n", - " px, py = x[idx], y[idx]\n", - " annot.xy = (px, py)\n", - " annot.set_text(str(images[idx]))\n", - " if not annot.get_visible():\n", - " annot.set_visible(True)\n", - " fig.canvas.draw_idle()\n", - " else:\n", - " if annot.get_visible():\n", - " annot.set_visible(False)\n", - " fig.canvas.draw_idle()\n", - "\n", - " # Initial tree, then connect events\n", - " build_tree()\n", - " cid_draw = fig.canvas.mpl_connect('draw_event', on_draw)\n", - " cid_move = fig.canvas.mpl_connect('motion_notify_event', on_move)\n", - "\n", - " return fig, ax\n", - "\n", - "fig, ax = plot_interactive(CSV_PATH, CENTROID_ROIS, CENTROID_MEAN)\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/sfig2a_mnist_autoencoder_lossplot.ipynb b/notebooks/sfig2a_mnist_autoencoder_lossplot.ipynb deleted file mode 100644 index 7ce33a720..000000000 --- a/notebooks/sfig2a_mnist_autoencoder_lossplot.ipynb +++ /dev/null @@ -1,176 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "76e58ba7", - "metadata": {}, - "source": [ - "# Supplemental Figure 1A: MNIST AE loss plot" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ca05bd3a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matplotlib: 3.10.5\n" - ] - } - ], - "source": [ - "%matplotlib widget\n", - "\n", - "import os, csv\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path\n", - "\n", - "print(\"Matplotlib:\", plt.matplotlib.__version__)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ff04a8e2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LOG_CSV: ..\\data\\mnist-ae\\training_log.csv\n" - ] - } - ], - "source": [ - "# ─────────────────────────────────────────────\n", - "# CONFIG — set to your results directory\n", - "# ─────────────────────────────────────────────\n", - "RESULTS_DIR = Path(\"..\") / \"data\" / \"mnist-ae\" # change if needed\n", - "LOG_CSV = os.path.join(RESULTS_DIR, \"training_log.csv\")\n", - "\n", - "print(\"LOG_CSV:\", LOG_CSV)\n", - "assert os.path.exists(LOG_CSV), f\"Missing file: {LOG_CSV}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ef416874", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "rows=100, train finite=100, val finite=100\n" - ] - } - ], - "source": [ - "def load_training_log(csv_path):\n", - " epochs, loss, val_loss = [], [], []\n", - " with open(csv_path, \"r\", newline=\"\") as f:\n", - " reader = csv.DictReader(f)\n", - " has_val = \"val_loss\" in reader.fieldnames if reader.fieldnames else False\n", - " for row in reader:\n", - " e = row.get(\"epoch\", None)\n", - " if e is not None:\n", - " try:\n", - " epochs.append(int(e))\n", - " except:\n", - " epochs.append(len(epochs))\n", - " else:\n", - " epochs.append(len(epochs))\n", - " loss.append(float(row[\"loss\"]) if \"loss\" in row and row[\"loss\"] != \"\" else np.nan)\n", - " if has_val:\n", - " v = row.get(\"val_loss\", \"\")\n", - " val_loss.append(float(v) if v != \"\" else np.nan)\n", - " return np.array(epochs), np.array(loss), (np.array(val_loss) if val_loss else None)\n", - "\n", - "epochs, train_loss, val_loss = load_training_log(LOG_CSV)\n", - "print(f\"rows={len(epochs)}, train finite={np.isfinite(train_loss).sum()}, val finite={np.isfinite(val_loss).sum() if val_loss is not None else 0}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "6d995ccc", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2beb820def8c448493ca34041184207d", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAGQCAYAAABMPLOTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXgpJREFUeJzt3Xl8VNX9//HXnSWTlT0kgCxBRUAEMUEMilpRtoobVoqK8K3LFzeE/KiCaAWk4oKWWgS+WlyoC7R1w4plUUGUKIuACIjUIggkhoCQsCSTmXt+f0xmyJAEAyZkMryfj8eQmXPPvefMfELyuSfnnmsZYwwiIiIiIlHKUdsdEBERERGpSUp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEREREopoSXhERERGJakp4RURERCSqKeEVERERkaimhFdEBHj55ZexLItVq1bVdleqTZs2bRg2bNhx73fo0CHGjx/PkiVLqr1PIiK1QQmviIiEOXToEBMmTFDCKyJRQwmviIiIiEQ1JbwiIsfh008/pVevXiQlJREfH0+PHj14//33w+ocOnSI0aNHk5aWRmxsLI0aNSIjI4M33ngjVOe///0vv/3tb2nevDkej4eUlBR69erF2rVrj9n+sGHDSExMZMOGDfTq1YuEhASSk5O55557OHTo0M/2f/v27dx88800bdoUj8dDhw4dePrpp7FtG4Dvv/+e5ORkACZMmIBlWViWdUJTI0REIoWrtjsgIlJXLF26lCuuuILOnTsza9YsPB4P06dPZ8CAAbzxxhsMGjQIgKysLP72t78xadIkunbtysGDB/n666/Zs2dP6Fj9+/fH7/fz5JNP0qpVK/Lz81m+fDn79u372X6UlJTQv39//vd//5cxY8awfPlyJk2axLZt23jvvfcq3W/37t306NEDr9fLo48+Sps2bfjXv/7F6NGj+e6775g+fTrNmjXj3//+N3379uXWW2/ltttuAwgl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pzS8/PLLNGjQgAULFtChQwcSExPp27cvOTk5oX18Ph8jRoygQYMGNG7cmAceeIChQ4dyzTXXnNBn8NNPP3HLLbfQsGFD4uPj6devH1u2bAlt37ZtGwMGDKBhw4YkJCRw9tlnM3/+/NC+N910E8nJycTFxXHmmWfy0ksvnVA/pPop4a3DgiO8Po3wiohELGMMh7y+WnkYU/UBkT//+c9kZmZy++23k5OTQ05ODi1btgTg/vvvZ/LkyWzatInOnTtz4MAB+vfvz+LFi1mzZg19+vRhwIABbN++/ZhtTJgwgRtuuIGvvvqK/v37c9NNN7F3795K6x86dIgpU6bwt7/9jU8++YTt27czevTo0PYnnniC1157jZdeeonPPvuMgoIC3nnnnSq/56MNGzaMVatWMW/ePLKzszHG0L9//9ASYHfffTfFxcV88sknrF+/nieeeILExEQAHn74YTZu3MgHH3zApk2bmDFjBk2aNDnhvkj10pSGOswdGuFVwisiEqkOl/jp+IcFtdL2xol9iI+p2q/6+vXrExMTQ3x8fGhqwTfffAPAxIkTueKKK0J1GzduTJcuXUKvJ02axNtvv828efO45557Km1j2LBhDB48GIDHHnuMv/zlL6xYsYK+fftWWL+kpISZM2dy+umnA3DPPfcwceLE0Pa//OUvjB07lmuvvRaAadOmhUZcj9eWLVuYN28en332GT169ADgtddeo2XLlrzzzjv85je/Yfv27QwcOJBzzjkHgLZt24b23759O127diUjIwMIjHBL5NAIbx3m1pQGERE5CYJJXNDBgwe5//776dixIw0aNCAxMZFvvvnmZ0d4O3fuHHqekJBAUlJS6Fa5FYmPjw8luxC4nW6w/v79+/nxxx85//zzQ9udTifp6enH9d6CNm3ahMvlonv37qGyxo0bc9ZZZ7Fp0yYARowYwaRJk7jwwgt55JFH+Oqrr0J177zzTubMmcO5557L/fffz/Lly0+oH1IzNMJbh7kdgSkNGuEVEYlccW4nGyf2qbW2q8PRqy38/ve/Z8GCBUyZMoUzzjiDuLg4rr/+erxe7zGP43a7w15bloVtV/47rKL6R0/TOPpGDMczjaMq+xljQm3cdttt9OnTh/fff5+FCxcyefJknn76ae6991769evHtm3beP/991m8eDG9evXi7rvvZsqUKSfUH6leGuGtw9yu0mXJdOMJEZGIZVkW8TGuWnkc7125YmJiQrdGPpZly5YxbNgwrr32Ws455xxSU1P5/vvvT/ATOjH169cnJSWFFStWhMr8fj9r1qw5oeN17NgRn8/HF198ESrbs2cP3377LR06dAiVtWzZkuHDh/PWW2/x//7f/+OFF14IbUtOTmbYsGG8+uqrTJ06leeff/6E+iLVr04kvNOnTyctLY3Y2FjS09NZtmzZMesvXbqU9PR0YmNjadu2LTNnzgzb/tZbb5GRkUGDBg1ISEjg3HPP5W9/+9svbvdkczm0LJmIiFSfNm3a8MUXX/D999+Tn59f6ejrGWecwVtvvcXatWtZt24dN9544zFHamvKvffey+TJk3n33XfZvHkz9913Hz/99NMJ3X73zDPP5Oqrr+b222/n008/Zd26ddx88820aNGCq6++GoCRI0eyYMECtm7dypdffslHH30USob/8Ic/8O677/Kf//yHDRs28K9//SssUZbaFfEJ79y5cxk5ciTjxo1jzZo19OzZk379+lU6T2jr1q3079+fnj17smbNGh588EFGjBjBm2++GarTqFEjxo0bR3Z2Nl999RX/8z//w//8z/+wYMGRiwqOt93aoBtPiIhIdRo9ejROp5OOHTuSnJxc6e+8P/3pTzRs2JAePXowYMAA+vTpw3nnnXeSewsPPPAAgwcP5pZbbiEzM5PExET69OlDbGzsCR3vpZdeIj09nSuvvJLMzEyMMcyfPz80tcLv93P33XfToUMH+vbty1lnncX06dOBwOj42LFj6dy5MxdffDFOp5M5c+ZU23uVX8YyJzrZ5STp3r075513HjNmzAiVdejQgWuuuYbJkyeXq//AAw8wb9680ARzgOHDh7Nu3Tqys7Mrbee8887j17/+NY8++ugJtVuRgoIC6tevz/79+6lXr16V9jked7+2mvfX5/KHKzvwu4va/vwOUqNs2yYvL4+mTZvicET8uWRUUywiy6kWj6KiIrZu3Rr6C2GkMcbg8/lwuY5/ykOks22bDh06cMMNN4R+n0eyE4nFsb6/ajrvqMsi+ieP1+tl9erV9O7dO6y8d+/elV79mJ2dXa5+nz59WLVqVWgdvbKMMXz44Yds3ryZiy+++ITbrQ1alkxERE5l27Zt44UXXuDbb79l/fr13HnnnWzdupUbb7yxtrsmESaiV2nIz8/H7/eTkpISVp6SkkJubm6F++Tm5lZY3+fzkZ+fT7NmzYDAciYtWrSguLgYp9PJ9OnTQ2sMnki7AMXFxRQXF4deFxQUAIEzzpqY2xSaw+urmePL8bFtG2OMYhEBFIvIcqrFI/h+g49IFOxXpPavqoJ3gxs9ejTGGDp16sSiRYto374927Zt4+yzz6503w0bNtCqVauT2NuKHW8sgt9XFeUWp8r/sRMR0QlvUEVLjhxr6L+yJUrKliclJbF27VoOHDjAhx9+SFZWFm3btuXSSy894XYnT57MhAkTypXv3r2boqKiSvc7UT5v4Jj7CgqPuY6hnBy2bbN//36MMafEn20jmWIRWU61eJSUlGDbNj6fD5/PV9vdKccYE1qJoa5PaWjWrBlLliwpV+7z+WjatCkrV66sdN+mTZvWenxOJBY+nw/bttmzZ0+5ZdsKCwurvY/RIqIT3iZNmuB0OsuNqubl5ZUbfQ1KTU2tsL7L5aJx48ahMofDwRlnnAHAueeey6ZNm5g8eTKXXnrpCbULMHbsWLKyskKvCwoKaNmyJcnJyTUyl6Ze4m5gD57YeJo2bVrtx5fjY9s2lmWRnJx8SvxSj2SKRWQ51eJRVFREYWEhLpcLlytyf80enSxFG5fLRfv27Wu7G1VyPLFwuVw4HA4aN25cbg5vJM4ZjxSR+z+RwBWP6enpLFq0KHTbQIBFixaFlgg5WmZmJu+9915Y2cKFC8nIyDjmN5QxJjQd4UTaBfB4PHg8nnLlDoejRn7Il12H91T4JVIXWJZVY/GW46NYRJZTKR4OhwPLskKPSFP2r5WR2L9TyYnEIvh9VdH/p1Ph/9eJiuiEFyArK4shQ4aQkZFBZmYmzz//PNu3b2f48OFAYFR1586dzJ49GwisyDBt2jSysrK4/fbbyc7OZtasWbzxxhuhY06ePJmMjAxOP/10vF4v8+fPZ/bs2WErMvxcu5EgdNGabjwhIiIiUqmIT3gHDRrEnj17mDhxIjk5OXTq1In58+fTunVrAHJycsLWCUxLS2P+/PmMGjWK5557jubNm/Pss88ycODAUJ2DBw9y1113sWPHDuLi4mjfvj2vvvoqgwYNqnK7kSB0a2GfJqmLiIiIVCbi1+Gty2p6PbxnF3/LM4u3MCjjNJ64vku1H1+Oz6m21mgkUywiy6kWD63DK1WldXhPnuj/yRPFXM7Afw6fpjSIiIiIVEoJbx0WnMPr1ZQGERGJAG3atGHq1Kmh15Zl8c4771Ra//vvv8eyLNauXfuL2q2u4xyPn3tvElkifg6vVC6Y8GqEV0REIlFOTg4NGzas1mMOGzaMffv2hSWbLVu2JCcnhyZNmlRrWxI9lPDWYe7SKQ26tbCIiESi1NTUk9KO0+k8aW1J3aQpDXVYaFkyv0Z4RUTkl/m///s/WrRoUe72tFdddRVDhw7lu+++4+qrryYlJYXExES6devG4sWLj3nMo//sv2LFCrp27UpsbCwZGRmsWbMmrL7f7+fWW28lLS2NuLg4zjrrLP785z+Hto8fP55XXnmFd999N7Qe7ZIlSyqc0rB06VLOP/98PB4PzZo1Y8yYMWF3Vrv00ksZMWIE999/P40aNSI1NZXx48cf/wdXav369Vx22WXExcXRuHFj7rjjDg4cOBDavmTJEs4//3wSEhJo0KABF154Idu2bQNg3bp1/OpXvyIpKYl69eqRnp7OqlWrTrgvUp4S3jrMpRFeEZHIZwx4D9bO4zgWYvrNb35Dfn4+H3/8cajsp59+YsGCBdx0000cOHCA/v37s3jxYtasWUOfPn0YMGBA2NKgx3Lw4EGuvPJKzjrrLFavXs348eMZPXp0WB3btjnttNP4+9//zsaNG/nDH/7Agw8+yN///ncARo8ezQ033EDfvn3JyckhJyeHHj16lGtr586d9O/fn27durFu3TpmzJjBrFmzmDRpUli9V155hYSEBL744guefPJJJk6cyKJFi6r8mQUdOnSIvn370rBhQ1auXMk//vEPFi9ezD333AMEbgd8zTXXcMkll/DVV1+RnZ3NHXfcEVqZ4eabb+a0005j5cqVrF69mjFjxkT9nfBONk1pqMNignN4lfCKiESukkPwWPPaafvBXRCTUKWqjRo1om/fvrz++uv06tULgH/84x80atSIXr164XQ66dLlyBKYkyZN4u2332bevHmhxO5YXnvtNfx+Py+++CLx8fGcffbZ7NixgzvvvDNUx+12M2HChNDrtLQ0li9fzt///nduuOEGEhMTiYuLo7i4+JhTGKZPn07Lli2ZNm0almXRvn17du3axQMPPMAf/vCH0PJ4nTt35pFHHgHgzDPPZNq0aXz44YdcccUVVfrMyr63w4cPM3v2bBISAp/3tGnTGDBgAE888QRut5v9+/dz5ZVXcvrppwPQoUOH0LJk27dv5/e//33oVshnnnnmcbUvP08jvHWYS1MaRESkGt100028+eabFBcXA4FE7re//S1Op5ODBw9y//3307FjRxo0aEBiYiLffPNNlUd4N23aRJcuXYiPjw+VZWZmlqs3c+ZMMjIySE5OJjExkRdeeKHKbZRtKzMzM2xt2wsvvJADBw6wY8eOUFnnzp3D9mvWrBl5eXnH1VawvS5duoSS3WB7tm2zefNmGjVqxLBhw0Kj4n/+85/JyckJ1R01ahS33XYbl19+OY8//jjffffdcfdBjk0jvHWYLloTEakD3PGBkdbaavs4DBgwANu2ef/99+nWrRvLli3jmWeeAeD3v/89CxYsYMqUKZxxxhnExcVx/fXX4/V6q3Tsqtzn6u9//zujRo3i6aefJjMzk6SkJJ566im++OKL43ofxphyN3IItl+2/OhpA5ZllZvDfKLtlT0mwEsvvcSIESP497//zdy5c3nooYdYuHAhGRkZjB8/nptuuon333+fDz74gEceeYQ5c+Zw7bXXHndfpGJKeOuw0EVrWpZMRCRyWVaVpxXUtri4OK677jpee+01/vOf/9CuXTvS09MBWLZsGcOGDQslYQcOHOD777+v8rE7duzI3/72Nw4fPkxcXBwAn3/+eVidZcuW0aNHD+66665Q2dGjnTExMfj9/p9t68033wxLRJcvX05SUhItWrSocp+rqmPHjrzyyiscPHgwNMr72Wef4XA4aNeuXahe165d6dq1K2PHjiUzM5PXX3+djIwMANq1a0e7du0YNWoUgwcP5qWXXlLCW400paEOcztKR3h14wkREakmwZHGF198kZtvvjlUfsYZZ/DWW2+xdu1a1q1bx4033nhco6E33ngjDoeDW2+9lY0bNzJ//nymTJkSVueMM85g1apVLFiwgG+//ZaHH36YlStXhtVp06YNX331FZs3byY/P5+SkpJybd1111388MMP3HvvvXzzzTe8++67PPLII2RlZdXI7a1vuukmYmNjGTp0KF9//TUff/wx9957L0OGDCElJYWtW7cyduxYsrOz2bZtGwsXLuTbb7+lQ4cOHD58mHvuuYclS5awbds2PvvsM1auXEmHDh2qvZ+nMiW8dZjbFbzxhBJeERGpHpdddhmNGjVi8+bN3HjjjaHyP/3pTzRs2JAePXowYMAA+vTpw3nnnVfl4yYmJvLee++xceNGunbtyrhx43jiiSfC6gwfPpzrrruOQYMG0b17d/bs2RM22gtw++23c9ZZZ4Xm+X722Wfl2mrRogXz589nxYoVdOnSheHDh3Prrbfy0EMPHeenUTXx8fEsWLCAvXv30q1bN66//np69erFtGnTQtu/+eYbBg4cSLt27bjjjju45557+N///V+cTid79+7llltuoV27dtxwww3069cv7OI9+eUsU5VJNXJCCgoKqF+/Pvv376devXrVfvy123/imunLaVY/luyxvar9+HJ8bNsmLy+Ppk2b1sgIglSdYhFZTrV4FBUVsXXrVtLS0oiNja3t7pQTXBnA5XJVOu9UTo4TicWxvr9qOu+oy6L/J08U00VrIiIiIj9PCW8dpjutiYiIVL/XXnuNxMTECh9nn312bXdPToBWaajDNMIrIiJS/a666iq6d+9e4TbdAa1uUsJbh7l0pzUREZFql5SURFJSUm13Q6qRpjTUYcFbC3v9pkoLeouIiIicipTw1mHBKQ0Aft18QkQkomggQmrCidwJTjSloU4LTmmAwIVrLmctdkZERIDAHE/Lsti9ezfJyckRt/SXliWLHMcTC2MMXq+X3bt343A4iImJOUm9jA5KeOuwsiO8JbZNHMp4RURqm9Pp5LTTTmPHjh3Hdevdk8UYg23bOBwOJby17ERiER8fT6tWrU6JNa2rkxLeOsxd5ptdtxcWEYkciYmJnHnmmRXe9ra22bbNnj17aNy4sZKmWna8sXA6nRqZP0FKeOswh8PCaYHfaC1eEZFI43Q6cToj7y9vtm3jdruJjY1VwlvLFIuTR59uHedyaC1eERERkWNRwlvHuXTzCREREZFjUsJbxwVvL+zTsmQiIiIiFVLCW8cFpzR4ddGaiIiISIWU8NZxwYRXI7wiIiIiFVPCW8dpDq+IiIjIsSnhrePcWqVBRERE5JiU8NZxR5Yl05QGERERkYoo4a3jgrcX1p3WRERERCqmhLeOC87h9dlKeEVEREQqooS3jgstS6YpDSIiIiIVUsJbx7lL773t00VrIiIiIhVSwlvHaVkyERERkWOrEwnv9OnTSUtLIzY2lvT0dJYtW3bM+kuXLiU9PZ3Y2Fjatm3LzJkzw7a/8MIL9OzZk4YNG9KwYUMuv/xyVqxYEVZn/PjxWJYV9khNTa329/ZLaZUGERERkWOL+IR37ty5jBw5knHjxrFmzRp69uxJv3792L59e4X1t27dSv/+/enZsydr1qzhwQcfZMSIEbz55puhOkuWLGHw4MF8/PHHZGdn06pVK3r37s3OnTvDjnX22WeTk5MTeqxfv75G3+uJcGkdXhEREZFjctV2B37OM888w6233sptt90GwNSpU1mwYAEzZsxg8uTJ5erPnDmTVq1aMXXqVAA6dOjAqlWrmDJlCgMHDgTgtddeC9vnhRde4J///Ccffvght9xyS6jc5XJF5KhuWW5NaRARERE5pohOeL1eL6tXr2bMmDFh5b1792b58uUV7pOdnU3v3r3Dyvr06cOsWbMoKSnB7XaX2+fQoUOUlJTQqFGjsPItW7bQvHlzPB4P3bt357HHHqNt27aV9re4uJji4uLQ64KCAgBs28augWXDbNvGGVylwVczbUjV2baNMUZxiACKRWRRPCKL4hE5qjsWimnlIjrhzc/Px+/3k5KSElaekpJCbm5uhfvk5uZWWN/n85Gfn0+zZs3K7TNmzBhatGjB5ZdfHirr3r07s2fPpl27dvz4449MmjSJHj16sGHDBho3blxh25MnT2bChAnlynfv3k1RUdHPvt/jZds2xucFYF9BIXl5edXehlSdbdvs378fYwwOR8TPFopqikVkUTwii+IROao7FoWFhdXQq+gU0QlvkGVZYa+NMeXKfq5+ReUATz75JG+88QZLliwhNjY2VN6vX7/Q83POOYfMzExOP/10XnnlFbKysipsd+zYsWHbCgoKaNmyJcnJydSrV+8Y7/DE2LZNQtwOoBBPbDxNmzat9jak6mzbxrIskpOT9UuklikWkUXxiCyKR+So7liUzWMkXEQnvE2aNMHpdJYbzc3Lyys3ihuUmppaYX2Xy1VuZHbKlCk89thjLF68mM6dOx+zLwkJCZxzzjls2bKl0joejwePx1Ou3OFw1NgPlSN3WtOZeiSwLKtG4y1Vp1hEFsUjsigekaM6Y6F4Vi6iP5mYmBjS09NZtGhRWPmiRYvo0aNHhftkZmaWq79w4UIyMjLC5u8+9dRTPProo/z73/8mIyPjZ/tSXFzMpk2bKpwSUZuCN57QsmQiIiIiFYvohBcgKyuLv/71r7z44ots2rSJUaNGsX37doYPHw4EphGUXVlh+PDhbNu2jaysLDZt2sSLL77IrFmzGD16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ewyArl27smHDBmbMmMEtt9wSqqd4nBxz587l1Vdf5fXXX+fss89m7dq1jBw5kubNmzN06NBQPcWj9pzIZ6/4nDhNaaiDmjRpgtPpLHeWl5eXV+6MUWrGvffey7x58/j444857bTTQuWpqakAis1JsHr1avLy8khPT8flcuFyuVi6dCnPPvssLpcr9HkrFidHs2bN6NixY1hZhw4dQhfS6v/GyfX73/+eMWPG8Nvf/pZzzjmHIUOGMGrUKCZPngwoHrWpKp99amoqXq+Xn376qdI6cnyU8NZBMTExpKens2jRorDyRYsW0aNHj1rq1anBGMM999zDW2+9xUcffURaWlrY9rS0NFJTU8Ni4/V6Wbp0qWJTzXr16sX69etZu3Zt6JGRkcFNN93E2rVradu2rWJxEl144YXlluj79ttvad26NaD/GyfboUOHcDjCf8U7nc7QsmSKR+2pymefnp6O2+0Oq5OTk8PXX3+t+JyoWrtcTn6ROXPmGLfbbWbNmmU2btxoRo4caRISEsz3339f212LanfeeaepX7++WbJkicnJyQk9Dh06FKrz+OOPm/r165u33nrLrF+/3gwePNg0a9bMFBQU1GLPTw1lV2kwRrE4mVasWGFcLpf54x//aLZs2WJee+01Ex8fb1599dVQHcXj5Bk6dKhp0aKF+de//mW2bt1q3nrrLdOkSRNz//33h+ooHjWnsLDQrFmzxqxZs8YA5plnnjFr1qwx27ZtM8ZU7bMfPny4Oe2008zixYvNl19+aS677DLTpUsX4/P5autt1WlKeOuw5557zrRu3drExMSY8847L7Q0ltQcoMLHSy+9FKpj27Z55JFHTGpqqvF4PObiiy8269evr71On0KOTngVi5PrvffeM506dTIej8e0b9/ePP/882HbFY+Tp6CgwNx3332mVatWJjY21rRt29aMGzfOFBcXh+ooHjXn448/rvB3xdChQ40xVfvsDx8+bO655x7TqFEjExcXZ6688kqzffv2Wng30cEyxpjaGVsWEREREal5msMrIiIiIlFNCa+IiIiIRDUlvCIiIiIS1ZTwioiIiEhUU8IrIiIiIlFNCa+IiIiIRDUlvCIiIiIS1ZTwiohECcuyeOedd2q7GyIiEUcJr4hINRg2bBiWZZV79O3bt7a7JiJyynPVdgdERKJF3759eemll8LKPB5PLfVGRESCNMIrIlJNPB4PqampYY+GDRsCgekGM2bMoF+/fsTFxZGWlsY//vGPsP3Xr1/PZZddRlxcHI0bN+aOO+7gwIEDYXVefPFFzj77bDweD82aNeOee+4J256fn8+1115LfHw8Z555JvPmzavZNy0iUgco4RUROUkefvhhBg4cyLp167j55psZPHgwmzZtAuDQoUP07duXhg0bsnLlSv7xj3+wePHisIR2xowZ3H333dxxxx2sX7+eefPmccYZZ4S1MWHCBG644Qa++uor+vfvz0033cTevXtP6vsUEYk0ljHG1HYnRETqumHDhvHqq68SGxsbVv7AAw/w8MMPY1kWw4cPZ8aMGaFtF1xwAeeddx7Tp0/nhRde4IEHHuCHH34gISEBgPnz5zNgwAB27dpFSkoKLVq04H/+53+YNGlShX2wLIuHHnqIRx99FICDBw+SlJTE/PnzNZdYRE5pmsMrIlJNfvWrX4UltACNGjUKPc/MzAzblpmZydq1awHYtGkTXbp0CSW7ABdeeCG2bbN582Ysy2LXrl306tXrmH3o3Llz6HlCQgJJSUnk5eWd6FsSEYkKSnhFRKpJQkJCuSkGP8eyLACMMaHnFdWJi4ur0vHcbne5fW3bPq4+iYhEG83hFRE5ST7//PNyr9u3bw9Ax44dWbt2LQcPHgxt/+yzz3A4HLRr146kpCTatGnDhx9+eFL7LCISDTTCKyJSTYqLi8nNzQ0rc7lcNGnSBIB//OMfZGRkcNFFF/Haa6+xYsUKZs2aBcBNN93EI488wtChQxk/fjy7d+/m3nvvZciQIaSkpAAwfvx4hg8fTtOmTenXrx+FhYV89tln3HvvvSf3jYqI1DFKeEVEqsm///1vmjVrFlZ21lln8c033wCBFRTmzJnDXXfdRWpqKq+99hodO3YEID4+ngULFnDffffRrVs34uPjGThwIM8880zoWEOHDqWoqIg//elPjB49miZNmnD99defvDcoIlJHaZUGEZGTwLIs3n77ba655pra7oqIyClHc3hFREREJKop4RURERGRqKY5vCIiJ4Fmj4mI1J7/D3z1qLJ6fUf9AAAAAElFTkSuQmCC", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Bac…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: sfig2a_data\n", - "\n", - "fig, ax = plt.subplots(figsize=(7, 4))\n", - "fig.canvas.header_visible = False\n", - "\n", - "tmask = np.isfinite(train_loss)\n", - "ax.plot(epochs[tmask], train_loss[tmask], label=\"training_loss\")\n", - "\n", - "if val_loss is not None:\n", - " vmask = np.isfinite(val_loss)\n", - " if vmask.any():\n", - " ax.plot(epochs[vmask], val_loss[vmask], label=\"validation_loss\")\n", - "\n", - "ax.set_xlabel(\"Epoch\")\n", - "ax.set_ylabel(\"Loss\")\n", - "ax.set_title(\"Loss plot\")\n", - "ax.legend()\n", - "ax.grid(True, alpha=0.3)\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/sfig2b_mnist_autoencoder_reconstructions.ipynb b/notebooks/sfig2b_mnist_autoencoder_reconstructions.ipynb deleted file mode 100644 index 274bbec02..000000000 --- a/notebooks/sfig2b_mnist_autoencoder_reconstructions.ipynb +++ /dev/null @@ -1,268 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e1759548", - "metadata": {}, - "source": [ - "# Supplemental Figure 1B: MNIST autoencoder reconstructions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "5c81c577", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matplotlib: 3.10.5\n" - ] - } - ], - "source": [ - "%matplotlib widget\n", - "\n", - "import os, glob, re\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.widgets import Slider\n", - "from functools import lru_cache\n", - "from pathlib import Path\n", - "\n", - "from PIL import Image\n", - "from tifffile import imread as tiff_imread\n", - "\n", - "print(\"Matplotlib:\", plt.matplotlib.__version__)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "fdd45c0b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORIG_DIR : ..\\data\\mnist-ae\\recon_train\\originals\n", - "RECON_DIR: ..\\data\\mnist-ae\\recon_train\\reconstructions\n" - ] - } - ], - "source": [ - "# ─────────────────────────────────────────────────────────────\n", - "# CONFIG — point to your MNIST AE results\n", - "# ─────────────────────────────────────────────────────────────\n", - "RESULTS_DIR = Path(\"..\") / \"data\" / \"mnist-ae\" # change if needed\n", - "SPLIT = \"recon_train\" # \"recon_train\" or \"recon_val\"\n", - "\n", - "ORIG_DIR = os.path.join(RESULTS_DIR, \"recon_train\" if SPLIT==\"recon_train\" else \"recon_val\", \"originals\")\n", - "RECON_DIR = os.path.join(RESULTS_DIR, \"recon_train\" if SPLIT==\"recon_train\" else \"recon_val\", \"reconstructions\")\n", - "\n", - "print(\"ORIG_DIR :\", ORIG_DIR)\n", - "print(\"RECON_DIR:\", RECON_DIR)\n", - "assert os.path.isdir(ORIG_DIR), f\"Not a directory: {ORIG_DIR}\"\n", - "assert os.path.isdir(RECON_DIR), f\"Not a directory: {RECON_DIR}\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "b56705a0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found epochs: 100. First epoch 1 has 100 indices.\n" - ] - } - ], - "source": [ - "pat = re.compile(r\"^(orig|recon)_epoch(\\d+)_(\\d+)\\.(?:png|tif|tiff)$\", re.IGNORECASE)\n", - "\n", - "def parse_epoch_index(directory, prefix):\n", - " data = {}\n", - " for ext in (\"png\", \"tif\", \"tiff\"):\n", - " for p in glob.glob(os.path.join(directory, f\"{prefix}_epoch*_*.\" + ext)):\n", - " m = pat.match(os.path.basename(p))\n", - " if not m:\n", - " continue\n", - " _, ep_str, idx_str = m.groups()\n", - " ep, idx = int(ep_str), int(idx_str)\n", - " data.setdefault(ep, {})[idx] = p\n", - " return data\n", - "\n", - "orig = parse_epoch_index(ORIG_DIR, \"orig\")\n", - "reco = parse_epoch_index(RECON_DIR, \"recon\")\n", - "if not orig or not reco:\n", - " raise RuntimeError(\"No matching files found. Check ORIG_DIR/RECON_DIR and filename pattern.\")\n", - "\n", - "epochs = sorted(set(orig).intersection(reco))\n", - "indices_by_epoch = {e: sorted(set(orig[e]).intersection(reco[e])) for e in epochs}\n", - "epochs = [e for e in epochs if indices_by_epoch[e]]\n", - "if not epochs:\n", - " raise RuntimeError(\"No overlapping (epoch, index) pairs between originals and reconstructions.\")\n", - "\n", - "current_epoch = epochs[0]\n", - "current_index = indices_by_epoch[current_epoch][0]\n", - "\n", - "print(f\"Found epochs: {len(epochs)}. First epoch {current_epoch} has {len(indices_by_epoch[current_epoch])} indices.\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "739b82f9", - "metadata": {}, - "outputs": [], - "source": [ - "@lru_cache(maxsize=1024)\n", - "def read_img(path):\n", - " ext = Path(path).suffix.lower()\n", - " if ext in {\".tif\", \".tiff\"}:\n", - " img = tiff_imread(path)\n", - " else:\n", - " img = np.array(Image.open(path))\n", - " if img.ndim == 3 and img.shape[-1] == 1:\n", - " img = img[..., 0]\n", - " elif img.ndim == 3 and img.shape[-1] >= 3:\n", - " img = img[..., 0]\n", - " return img\n", - "\n", - "def vmin_vmax(arr):\n", - " if np.issubdtype(arr.dtype, np.integer):\n", - " info = np.iinfo(arr.dtype)\n", - " return float(info.min), float(info.max)\n", - " return float(np.nanmin(arr)), float(np.nanmax(arr)) if np.isfinite(arr).all() else (0.0, 1.0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "abff870b", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "cf5bb793162a4bf381b372df6282e88a", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHgCAYAAACvu1xQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK2FJREFUeJzt3Xl0lfWd+PHPzUIgBiJLWBVxAZStFrUV4VjRjgUcbRWsC3bESq21Wqw4tmoritPqMGLp1KI9g0txqFtPdTrWalVcWgWxOsoidSpFUVQMi5UqxCzP7w9/ZBoReb4YvQqv1zmcY24++T5fgrk37zz3PilkWZYFAAAAuZUUewMAAACfNEIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpKKL58+fHscceGz169Ig2bdpE9+7dY9y4cTFv3rzca1x88cVRKBS26fgPPvhgFAqFePDBB7fp4/M65JBD4pBDDvlQjwHsGG644YYoFArNf8rKyqJHjx5x/PHHx5///Odib69VzZw5M2644Yai7uEXv/hFzJgx4z3fVygU4uKLL/5I9wMfJ0IKiuQnP/lJDB8+PF566aWYNm1a3HfffXHFFVfEypUrY8SIEXHVVVflWmfixIlJ4fX3hg4dGvPmzYuhQ4du08cDFMv1118f8+bNi/vuuy/OPPPM+PWvfx0jRoyIdevWFXtrrebjHlLz5s2LiRMnfrQbgo+RsmJvAHZEjzzySJx99tkxZsyYuP3226Os7P++FI8//vg4+uijY9KkSfHpT386hg8f/p5rvPXWW1FZWRm77LJL7LLLLtu0jw4dOsSBBx64TR8LUEyDBg2K/fffPyLeOevd2NgYU6ZMiTvuuCNOOeWUIu/uo1dfX998hu6j4vGDHZ0zUlAEl112WRQKhbj66qs3e9ArKyuLmTNnRqFQiMsvvzwi/u/pe08++WSMGzcuOnbsGHvuuWeL9/29urq6mDx5cnTv3j0qKyvj4IMPjieeeCL69OkTEyZMaJ57r6f2TZgwIaqqquK5556LMWPGRFVVVey6664xefLkqKura3GcSy65JD772c9Gp06dokOHDjF06NC49tprI8uyVvxsAWzdpqhatWpV821//OMf46ijjopOnTpF27Zt49Of/nTceuutm33sypUr47TTTotdd9012rRpEz179oxx48a1WGvFihVx0kknRdeuXaOioiL22WefmD59ejQ1NTXPPP/881EoFOKKK66IK6+8MnbfffeoqqqKYcOGxfz581sc8y9/+Uscf/zx0bNnz6ioqIhu3brFYYcdFk899VRERPTp0yeWLFkSDz30UPPTGPv06RMR/3fffeONN8bkyZOjV69eUVFREc8999wWn+696SmRzz//fIvbf/GLX8SwYcOiqqoqqqqqYt99941rr702It4J1N/85jfxwgsvtHg65Sbv9dS+xYsXxxe/+MXo2LFjtG3bNvbdd9/4+c9/3mJm0/5vuummuPDCC6Nnz57RoUOH+PznPx/PPvvsZnuHjytnpOAj1tjYGA888EDsv//+WzyTtOuuu8Z+++0Xc+fOjcbGxubbjznmmDj++OPj9NNPjzfffHOLxzjllFPilltuifPOOy8OPfTQeOaZZ+Loo4+ON954I9ce6+vr46ijjopTTz01Jk+eHA8//HBceumlUV1dHRdddFHz3PPPPx9f//rXo3fv3hHxzmu+zjrrrFi5cmWLOYAP2/LlyyMiol+/fhER8cADD8SoUaPis5/9bFxzzTVRXV0dN998cxx33HHx1ltvNf9QaeXKlXHAAQdEfX19XHDBBTFkyJBYs2ZN3HPPPbFu3bro1q1b1NbWxkEHHRRvv/12XHrppdGnT5+4884749xzz41ly5bFzJkzW+zlpz/9aey9997NT4n7/ve/H2PGjInly5dHdXV1RESMGTMmGhsbY9q0adG7d+9YvXp1PProo/H6669HRMTtt98e48aNi+rq6ub1KyoqWhzn/PPPj2HDhsU111wTJSUl0bVr16TP2UUXXRSXXnppHHPMMTF58uSorq6OxYsXxwsvvBAR7zy18LTTTotly5bF7bffvtX1nn322TjooIOia9eu8e///u/RuXPn+M///M+YMGFCrFq1Ks4777wW8xdccEEMHz48Zs2aFW+88UZ85zvfiSOPPDKWLl0apaWlSX8XKIoM+Ei9+uqrWURkxx9//PvOHXfccVlEZKtWrcqmTJmSRUR20UUXbTa36X2bLFmyJIuI7Dvf+U6LuZtuuimLiOzkk09uvu2BBx7IIiJ74IEHmm87+eSTs4jIbr311hYfP2bMmKx///5b3G9jY2NWX1+fTZ06NevcuXPW1NTU/L7Pfe5z2ec+97n3/fsC5HH99ddnEZHNnz8/q6+vz9avX5/dfffdWffu3bODDz44q6+vz7Isy/bee+/s05/+dPPbm/zjP/5j1qNHj6yxsTHLsiz76le/mpWXl2fPPPPMFo/53e9+N4uI7LHHHmtx+ze+8Y2sUChkzz77bJZlWbZ8+fIsIrLBgwdnDQ0NzXMLFizIIiK76aabsizLstWrV2cRkc2YMeN9/64DBw58z/vOTffdBx988Gbve/djwiabPm/Lly/PsizL/vKXv2SlpaXZ+PHj33cPRxxxRLbbbru95/siIpsyZUrz28cff3xWUVGRrVixosXc6NGjs8rKyuz1119vsf8xY8a0mLv11luziMjmzZv3vnuCjwtP7YOPqez/Pz3u759GMXbs2K1+3EMPPRQREV/+8pdb3D5u3Ljcz50vFApx5JFHtrhtyJAhzT+l3GTu3Lnx+c9/Pqqrq6O0tDTKy8vjoosuijVr1sRrr72W61gA2+LAAw+M8vLyaN++fYwaNSo6duwY//Vf/xVlZWXx3HPPxZ/+9KcYP358REQ0NDQ0/xkzZky88sorzU8h++1vfxsjR46MffbZZ4vHmjt3bgwYMCA+85nPtLh9woQJkWVZzJ07t8XtRxxxRIszKkOGDImIaL4P7dSpU+y5557xb//2b3HllVfG//zP/7R4imBeeR4TtuTee++NxsbG+OY3v7nNa7zb3Llz47DDDotdd921xe0TJkyIt956a7MLIx111FEt3n735wk+7oQUfMS6dOkSlZWVzU9D2ZLnn38+Kisro1OnTs239ejRY6vrr1mzJiIiunXr1uL2srKy6Ny5c649VlZWRtu2bVvcVlFRERs3bmx+e8GCBXH44YdHRMR//Md/xCOPPBKPP/54XHjhhRERsWHDhlzHAtgWs2fPjscffzzmzp0bX//612Pp0qVxwgknRMT/vU7q3HPPjfLy8hZ/zjjjjIiIWL16dURE1NbWbvWCPWvWrHnP+9+ePXs2v//vvfu+dtNT8jbdLxYKhbj//vvjC1/4QkybNi2GDh0aNTU18a1vfSvWr1+f+3OQ5zFhS2prayMitvliRe+ltT9P8HHnNVLwESstLY2RI0fG3XffHS+99NJ7Poi99NJL8cQTT8To0aNb/FQzz++L2vTAtGrVqujVq1fz7Q0NDZs9iH0QN998c5SXl8edd97ZIrruuOOOVjsGwJbss88+zReYGDlyZDQ2NsasWbPil7/8ZQwePDgi3nkN0THHHPOeH9+/f/+IiKipqYmXXnrpfY/VuXPneOWVVza7/eWXX46Id35Almq33XZrvqjD//7v/8att94aF198cbz99ttxzTXX5FrjvR4TNt0f19XVtXhN1aZw3KSmpiYi3nm8efcZpG31YXye4OPMGSkogvPPPz+yLIszzjijxcUkIt65GMU3vvGNyLIszj///OS1Dz744IiIuOWWW1rc/stf/jIaGhq2fdPvsukyu38fehs2bIgbb7yx1Y4BkNe0adOiY8eOcdFFF0Xfvn2jb9++8fTTT8f+++//nn/at28fERGjR4+OBx544H2vFnfYYYfFM888E08++WSL22fPnh2FQiFGjhz5gfber1+/+N73vheDBw9ucYyKiorkszObruy3cOHCFrf/93//d4u3Dz/88CgtLY2rr776fddL2cNhhx0Wc+fObQ6nTWbPnh2VlZUul852xxkpKILhw4fHjBkz4uyzz44RI0bEmWeeGb17944VK1bET3/603jsscdixowZcdBBByWvPXDgwDjhhBNi+vTpUVpaGoceemgsWbIkpk+fHtXV1VFS0jo/PzniiCPiyiuvjBNPPDFOO+20WLNmTVxxxRWbXVUK4KPQsWPHOP/88+O8886LX/ziF/Gzn/0sRo8eHV/4whdiwoQJ0atXr1i7dm0sXbo0nnzyybjtttsiImLq1Knx29/+Ng4++OC44IILYvDgwfH666/H3XffHeecc07svffe8e1vfztmz54dRxxxREydOjV22223+M1vfhMzZ86Mb3zjG81XCsxr4cKFceaZZ8axxx4bffv2jTZt2sTcuXNj4cKF8d3vfrd5bvDgwXHzzTfHLbfcEnvssUe0bdu2+WzblowZMyY6deoUp556akydOjXKysrihhtuiBdffLHFXJ8+feKCCy6ISy+9NDZs2BAnnHBCVFdXxzPPPBOrV6+OSy65pHkPv/rVr+Lqq6+O/fbbL0pKSprPBL7blClT4s4774yRI0fGRRddFJ06dYo5c+bEb37zm5g2bVrzFQtheyGkoEjOOuusOOCAA2L69OkxefLkWLNmTXTq1ClGjBgRf/jDH2LYsGHbvPb1118fPXr0iGuvvTZ+9KMfxb777hu33nprjBo1KnbeeedW2f+hhx4a1113Xfzrv/5rHHnkkdGrV6/42te+Fl27do1TTz21VY4BkOKss86Kq666KqZOnRpLly6NBQsWxA9+8IM4++yzY926ddG5c+cYMGBAi4vx9OrVKxYsWBBTpkyJyy+/PNasWRM1NTUxYsSI5teo1tTUxKOPPhrnn39+nH/++fHGG2/EHnvsEdOmTYtzzjkneZ/du3ePPffcM2bOnBkvvvhiFAqF2GOPPWL69Olx1llnNc9dcskl8corr8TXvva1WL9+fey2226b/R6od+vQoUPcfffdcfbZZ8dJJ50UO++8c0ycODFGjx4dEydObDE7derU6Nu3b/zkJz+J8ePHR1lZWfTt2ze+9a1vNc9MmjQplixZEhdccEH89a9/jSzLtvi7Avv37x+PPvpoXHDBBfHNb34zNmzYEPvss09cf/31LX6HIWwvCtmWvhqA7cqjjz4aw4cPjzlz5sSJJ55Y7O0AAHyiCSnYDt17770xb9682G+//aJdu3bx9NNPx+WXXx7V1dWxcOHCza7IBwBAGk/tg+1Qhw4d4ne/+13MmDEj1q9fH126dInRo0fHZZddJqIAAFqBM1IAAACJXP4cAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRy59/QhQKhWJvAaCZC75unftt4OPE/Xbrc0YKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIVFbsDQAAbE1paWmuubKy/N/aFAqFXHMNDQ2512xqamrVOeDjyxkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIFFZsTcArWXQoEG5Z2+66aZWP/6TTz6Za27OnDm513zjjTdyzc2fPz/3mgAftpKSfD+n7dq1a+41DznkkFxzw4YNy71mZWVlrrmNGzfmXvPFF1/MNbdy5cpcc4899ljuY69bty7XXN7HloiIhoaGXHNZluVek9ZVKBSKvYUdljNSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAEAiIQUAAJBISAEAACQSUgAAAIkKmV9F/Yngt1Zv3YEHHph79o477sg1V1NTs4272bKUf8v6+vpcc2vWrNnW7WxR3n2m3IUsXLgw19wpp5ySe81XXnkl9yytx0PH1u3I99vt2rXLNXfSSSflXvO4447LNbf77rvnXrOuri7XXGVlZe41895v5/0aeuutt3Ife6eddso199prr+Ve88c//nGuudtuuy33mu4/isPnvfU5IwUAAJBISAEAACQSUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkKmRZlhV7E2xdoVAo9ha2Kz169Mg1V1NTk3vNww47rFWPHRExduzYXHPt2rXLvWZe1dXVuebatm2be81Vq1blmuvZs2fuNSkODx1btyPfb1dUVOSa22uvvXKvOWTIkFxznTt3zr3mG2+8kWsu5bGgffv2ueZ69+6da27QoEG5j73HHnvkmsv77xMR8eCDD+aaO/roo3Ov2dDQkHuW1uN+u/U5IwUAAJBISAEAACQSUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQqKzYG4BieOWVV1p1LiJi4cKF27qdLTrvvPNafc28Vq5cmWuue/fuude87777tnU7wCdIXV1drrlnnnkm95ops3kVCoVWnYuIKCnJ9zPq6urqXHP//M//nPvYu+22W665srL83/5VVVXlmmtqasq9JmwvnJECAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEpUVewPAR2fEiBG5Z3v27JlrLsuy3Gu++uqruWeB7V/K/ccn5fiNjY255tauXZtr7t5778197AkTJuSaS/l7L1q0KNdcU1NT7jVpXYVCodhb2GE5IwUAAJBISAEAACQSUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQqKzYGwA+Osccc0zu2by/+T7vXETEk08+mXsWYHvW1NSUa668vDz3mhUVFbnmGhsbc6/529/+Nvcs7GickQIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASlRV7A8BHZ8CAAa2+Zm1tbe7Zhx56qNWPD/BJVFKS72fZI0aMyL1mRUVFrrnXX38995rz5s3LPQs7GmekAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABKVFXsDwCfbjTfemHv2lVde+RB3AvDJUV5enmvuqKOOavVjv/DCC7ln169f3+rHp3VlWVbsLeywnJECAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASFRW7A0AH1x1dXWuucGDB7f6sV999dVWXxNge9e3b99cczvvvHPuNbMsyzX3+OOP516zqakp9yzFUSgUir2FHZYzUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAECismJvAPjgvvKVr+Sa6969+4e8E4AdW6FQyDU3atSoXHNVVVW5j93Q0JBr7p577sm9ZpZluWcpDv9GxeOMFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAECismJvAPjgxo4dW7Rj33nnnUU7NsDHTWlpaa65gw8+ONdcWVn+b9U2bNiQa+6Pf/xj7jX5+CsUCsXewg7LGSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgUVmxNwB8cDvvvHOrr/nEE0/kmlu+fHmrHxvgk6pNmza55vbcc89cc2Vl+b9VW7duXa651atX516Tj78sy4q9hR2WM1IAAACJhBQAAEAiIQUAAJBISAEAACQSUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAifL/umzgI9e+fftccx06dMg1VygUch97yZIluebefvvt3GsCbO/y3h+3a9cu11xTU1PuYy9btizXXJZludfk4y/lsZ3W5YwUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAEAiIQUAAJBISAEAACQSUgAAAImEFAAAQCIhBQAAkKis2BsAtmyPPfbINdenT59cc1mW5T72/fffn3sWgHd07tw511yhUMg1t3HjxtzHXrp0aa65pqam3GsCW+aMFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAECismJvANiytm3bFnsLACQoLy/PNZdlWa65hoaG3Meur6/PNVdSkv/n6I2NjblnKY68/y/R+pyRAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABKVFXsDwJaNHTu22FsAIMHAgQNzzZWWluaaa2xsbPVjt2nTJveaGzZsyD0LOxpnpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASlRV7A8CWFQqFVp1LceSRR+aaa2pqyr3mnDlztnU7AEWTch+7//7755qrrKzMNVdSkv9n3v369cs1V1NTk3vNFStW5J6FHY0zUgAAAImEFAAAQCIhBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAECismJvANiyLMtadS7FuHHjcs09/fTTrX5sgI+TQqGQe3bffffNNVdZWbmNu/nga3bt2jX3mitWrNjW7cB2zxkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERlxd4AsGUbN24s2rGff/75XHOzZ8/+cDcCUGSFQiH37N/+9rdWXzOvVatW5Zp76aWXWv3YsCNyRgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIVFbsDQBbNmvWrFxzZ5xxRq65jh075j72eeedl2vuxRdfzL0mwCdRY2Nj7tmHH34419zQoUNzzf3tb3/LfewpU6bkmnvttddyrwlsmTNSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAEAiIQUAAJBISAEAACQSUgAAAIkKWZZlxd4EW1coFIq9BYBmHjq2zv32jqm0tDTXXHV1da65hoaG3Mdev359rjlfvzsm/+6tzxkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIFEhy7Ks2Jtg6wqFQrG3ANDMQ8fWud/m/XwY/3/4uuT9+P+j9TkjBQAAkEhIAQAAJBJSAAAAiYQUAABAIiEFAACQSEgBAAAkElIAAACJhBQAAEAiIQUAAJCokPk1xwAAAEmckQIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEpUVewMUR5ZlUV9fH42NjVFaWhrl5eVRKBSKvS0AAPhEEFKfIIVCIW6//fb40pe+tM1r1NfXx6pVq2LlypWxYcOG5tvbtWsXvXr1im7dukV5eXkr7BYAALZfntqX04QJE6JQKGz2Z9SoUcXeWm5r166N+fPnx7Jly6KqqioGDBgQQ4YMiQEDBkRVVVUsW7Ys5s+fH2vXri32VgEAtlsPP/xwHHnkkdGzZ88oFApxxx13FHtLbANnpBKMGjUqrr/++ha3VVRUFGk3adauXRuLFi2Kjh07Rv/+/Tfbd9euXaOuri6effbZWLRoUQwePDg6depUpN0CAGy/3nzzzfjUpz4Vp5xySowdO7bY22EbCakEFRUV0b179/d8X6FQiJkzZ8avf/3rePDBB6N79+4xbdq0OPbYY5tnFi1aFJMmTYp58+ZFZWVljB07Nq688sqoqqpqnrnuuuti+vTp8dxzz0WnTp1i7NixcdVVVzW/f/Xq1XH00UfHPffcE7169Yrp06fHUUcd9b77rq+vjyVLlkTHjh1j0KBBUVLy3iciKyoqYtCgQbF48eLm6NrSLAAAEYMGDUr+mNGjR8fo0aM/hN3wUfJdciv6/ve/H2PHjo2nn346TjrppDjhhBNi6dKlERHx1ltvxahRo6Jjx47x+OOPx2233Rb33XdfnHnmmc0ff/XVV8c3v/nNOO2002LRokXx61//Ovbaa68Wx7jkkkviy1/+cixcuDDGjBkT48eP3+pT8VatWhVNTU3Rv3//rYZRSUlJ9O/fP7Isi7q6um38TAAAwPZNSCW48847o6qqqsWfSy+9tPn9xx57bEycODH69esXl156aey///7xk5/8JCIi5syZExs2bIjZs2fHoEGD4tBDD42rrroqbrzxxli1alVERPzLv/xLTJ48OSZNmhT9+vWLAw44IM4+++wWe5gwYUKccMIJsddee8UPf/jDePPNN2PBggVb3HOWZbFy5cro0qVL7qchVlRURE1NTWzcuDGyLEv8LAEAwPbPU/sSjBw5Mq6++uoWt/3964iGDRvW4n3Dhg2Lp556KiIili5dGp/61Kdip512an7/8OHDo6mpKZ599tkoFArx8ssvx2GHHfa+exgyZEjzf++0007Rvn37eO2117Y4X19fHxs2bIjdd999q3+/v1dTUxO1tbWRZZnLogMAwLsIqQQ77bTTZk+125pNEfJ+QVIoFKJdu3a51nv3pckLhUI0NTVtcb6xsTEiIsrK0v6pN807IwUAAJvz1L5WNH/+/M3e3nvvvSMiYsCAAfHUU0/Fm2++2fz+Rx55JEpKSqJfv37Rvn376NOnT9x///2tuqfS0tKIiGhoaEj6uE3zzkYBAMDmnJFKUFdXF6+++mqL28rKyqJLly4REXHbbbfF/vvvHyNGjIg5c+bEggUL4tprr42IiPHjx8eUKVPi5JNPjosvvjhqa2vjrLPOiq985SvRrVu3iIi4+OKL4/TTT4+uXbvG6NGjY/369fHII4/EWWedtc17Li8vj3bt2kVtbW107do198fV1tZGaWmpkAIAaGV/+9vf4rnnnmt+e/ny5fHUU09Fp06donfv3kXcGSmEVIK77747evTo0eK2/v37x5/+9KeIeOeKejfffHOcccYZ0b1795gzZ04MGDAgIiIqKyvjnnvuiUmTJsUBBxzQ4vLnm5x88smxcePG+NGPfhTnnntudOnSJcaNG/eB9lwoFKJXr16xbNmyqKury3XBibq6uli9enXsueeescsuu3yg4wMA0NIf//jHGDlyZPPb55xzTkS8873gDTfcUKRdkaqQeRFMqygUCnH77bfHl770pWJvZTP19fUxf/78qK6uft/fIxUR0dTUFIsXL46//vWvceCBB272miwAAMBrpHYI5eXlMXDgwFi3bl0sXrx4i78fqq6uLhYvXhzr1q2LgQMHiigAANgCT+3bQXTq1CkGDx4cS5Ysifnz50eXLl2ipqYmysrKoqGhIWpra2P16tVRUlISgwcPbnFZdwAAoCVP7dvB1NfXx6pVq2LlypWxYcOG5tvbtWsXvXr1iu7duydfKh0AAHY0QmoHlWVZNDQ0RENDQ5SVlUVZWZkr9AEAQE5CCgAAIJGLTQAAACTyYpgdVJZlUV9fH42NjVFaWhrl5eWe2gcAADkJqSL7qH//1NYuNtGtWzeXPQcAgK3w1L4PYMKECR/LX8C7JWvXro358+fHsmXLoqqqKgYMGBBDhgyJAQMGRFVVVSxbtizmz58fa9euLfZWAQC2azNnzozdd9892rZtG/vtt1/8/ve/L/aWSOSM1A5i7dq1sWjRoujYsWP0798/KioqWry/a9euUVdXF88++2wsWrTI75ICAPiQ3HLLLXH22WfHzJkzY/jw4fGzn/0sRo8eHc8880z07t272NsjJyHVSg455JAYMmRItG3bNmbNmhVt2rSJ008/PS6++OLmmT//+c9x6qmnxoIFC2KPPfaIH//4x5uts3LlyjjnnHPid7/7XZSUlMSIESPixz/+cfTp0yf+9Kc/xdChQ2PWrFlx4oknRkTEr371qzjxxBPj8ccfj8GDB7/n3urr62PJkiXRsWPHGDRoUJSUvPeJyIqKihg0aFAsXry4Obq2NAsAQMSgQYOSP+bKK6+MU089NSZOnBgRETNmzIh77rknrr766rjssstae4t8SHyX3Ip+/vOfx0477RSPPfZYTJs2LaZOnRr33ntvREQ0NTXFMcccE6WlpTF//vy45ppr4jvf+U6Lj3/rrbdi5MiRUVVVFQ8//HD84Q9/iKqqqhg1alS8/fbbsffee8cVV1wRZ5xxRrzwwgvx8ssvx9e+9rW4/PLLtxhRERGrVq2Kpqam6N+//1bDqKSkJPr37x9ZlkVdXd0H/6QAANDs7bffjieeeCIOP/zwFrcffvjh8eijjxZpV2wLZ6Ra0ZAhQ2LKlCkREdG3b9+46qqr4v77749/+Id/iPvuuy+WLl0azz//fOyyyy4REfHDH/4wRo8e3fzxN998c5SUlMSsWbOar6B3/fXXx8477xwPPvhgHH744XHGGWfEXXfdFV/5yleiTZs2sd9++8WkSZO2uKcsy2LlypXRpUuXzZ7OtyUVFRVRU1MTa9eujbZt27qaHwBAK1m9enU0NjZGt27dWtzerVu3ePXVV4u0K7aFkGpFQ4YMafF2jx494rXXXouIiKVLl0bv3r2bIyoiYtiwYS3mn3jiiXjuueeiffv2LW7fuHFjLFu2rPnt6667Lvr16xclJSWxePHi9w2d+vr62LBhQ+y+++5Jf5eampqora2NLMuEFABAK3v391e+5/rkEVKt6N2XDS8UCtHU1BQR73xxvNu7v1iamppiv/32izlz5mw2W1NT0/zfTz/9dLz55ptRUlISr776avTs2XOLe2psbIyIiLKytH/qTfPvtW8AALZNly5dorS0dLOzT6+99tpmZ6n4ePMaqY/IgAEDYsWKFfHyyy833zZv3rwWM0OHDo0///nP0bVr19hrr71a/Kmuro6Id66+N2HChLjwwgvjlFNOifHjx7f4fVDvVlpaGhERDQ0NSfvdNO8nIwAArWfTSzM2vY5+k3vvvTcOOuigIu2KbSGkPiKf//zno3///vFP//RP8fTTT8fvf//7uPDCC1vMjB8/Prp06RJf/OIX4/e//30sX748HnrooZg0aVK89NJLERFx+umnx6677hrf+9734sorr4wsy+Lcc8/d4nHLy8ujXbt2UVtbm7Tf2traKC0tFVIAAK3snHPOiVmzZsV1110XS5cujW9/+9uxYsWKOP3004u9NRIIqY9ISUlJ3H777VFXVxef+cxnYuLEifGDH/ygxUxlZWU8/PDD0bt37zjmmGNin332ia9+9auxYcOG6NChQ8yePTvuuuuuuPHGG6OsrCwqKytjzpw5MWvWrLjrrrve87iFQiF69eoVq1evzn0Vvrq6uqitrXWhCQCAD8Fxxx0XM2bMiKlTp8a+++4bDz/8cNx1112x2267FXtrJChkXgSz3auvr4/58+dHdXX1+/4eqYh3Xqe1ePHi+Otf/xoHHnjgZq/7AgAAnJHaIZSXl8fAgQNj3bp1sXjx4i2emaqrq4vFixfHunXrYuDAgSIKAAC2wBmpHcjatWtjyZIl0dTUFF26dImampooKyuLhoaGqK2tjdWrV0dJSUkMHDgwOnXqVOztAgDAx5aQ2sHU19fHqlWrYuXKlS2u9teuXbvo1atXdO/ePflS6QAAsKMRUjuoLMuioaEhGhoaoqysLMrKylxYAgAAchJSAAAAiVxsAgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASCSkAAAAEgkpAACAREIKAAAgkZACAABIJKQAAAASCSkAAIBEQgoAACCRkAIAAEgkpAAAABIJKQAAgERCCgAAIJGQAgAASPT/AOLtdNo1aItTAAAAAElFTkSuQmCC", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#| label: sfig2b_data\n", - "\n", - "fig, (ax_o, ax_r) = plt.subplots(1, 2, figsize=(8.5, 4.8))\n", - "plt.subplots_adjust(bottom=0.22, wspace=0.25)\n", - "\n", - "img_o = read_img(orig[current_epoch][current_index])\n", - "img_r = read_img(reco[current_epoch][current_index])\n", - "v0, V0 = vmin_vmax(img_o)\n", - "v1, V1 = vmin_vmax(img_r)\n", - "\n", - "im_o = ax_o.imshow(img_o, cmap=\"gray\", vmin=v0, vmax=V0)\n", - "ax_o.set_title(\"Original\")\n", - "ax_o.axis(\"off\")\n", - "\n", - "im_r = ax_r.imshow(img_r, cmap=\"gray\", vmin=v1, vmax=V1)\n", - "ax_r.set_title(\"Reconstruction\")\n", - "ax_r.axis(\"off\")\n", - "\n", - "# Sliders\n", - "ax_epoch = plt.axes([0.15, 0.10, 0.70, 0.03])\n", - "ax_index = plt.axes([0.15, 0.06, 0.70, 0.03])\n", - "\n", - "epoch_slider = Slider(ax_epoch, \"Epoch\",\n", - " valmin=min(epochs), valmax=max(epochs),\n", - " valinit=current_epoch, valstep=1, valfmt=\"%0.0f\")\n", - "\n", - "idxs = indices_by_epoch[current_epoch]\n", - "index_slider = Slider(ax_index, \"Index\",\n", - " valmin=idxs[0], valmax=idxs[-1],\n", - " valinit=current_index, valstep=1, valfmt=\"%0.0f\")\n", - "\n", - "def update_images(ep, idx):\n", - " o = read_img(orig[ep][idx])\n", - " r = read_img(reco[ep][idx])\n", - " im_o.set_data(o); im_o.set_clim(*vmin_vmax(o))\n", - " im_r.set_data(r); im_r.set_clim(*vmin_vmax(r))\n", - " # Titles remain simple (no epoch/index)\n", - " fig.canvas.draw_idle()\n", - "\n", - "def on_epoch_change(val):\n", - " ep = int(val)\n", - " idxs = indices_by_epoch.get(ep, [])\n", - " if not idxs:\n", - " return\n", - " cur = int(index_slider.val)\n", - " cur = min(max(cur, idxs[0]), idxs[-1])\n", - " index_slider.eventson = False\n", - " index_slider.valmin, index_slider.valmax = idxs[0], idxs[-1]\n", - " index_slider.ax.set_xlim(idxs[0], idxs[-1])\n", - " index_slider.set_val(cur)\n", - " index_slider.eventson = True\n", - " update_images(ep, cur)\n", - "\n", - "def on_index_change(val):\n", - " idx = int(val)\n", - " ep = int(epoch_slider.val)\n", - " if idx in orig.get(ep, {}) and idx in reco.get(ep, {}):\n", - " update_images(ep, idx)\n", - "\n", - "epoch_slider.on_changed(on_epoch_change)\n", - "index_slider.on_changed(on_index_change)\n", - "\n", - "fig.canvas.toolbar_visible = True\n", - "fig.canvas.header_visible = False\n", - "fig.canvas.footer_visible = False\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/upload_NucleusNet10K_huggingface.ipynb b/notebooks/upload_NucleusNet10K_huggingface.ipynb deleted file mode 100644 index 998332cb1..000000000 --- a/notebooks/upload_NucleusNet10K_huggingface.ipynb +++ /dev/null @@ -1,140 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "3ce7206c-f11e-4c6b-b588-8d31e470e72d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset({\n", - " features: ['image', 'filename'],\n", - " num_rows: 10000\n", - "})\n", - "{'image': Image(mode=None, decode=True), 'filename': Value('string')}\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "943dd17c894341b0a06ddd675bab94fd", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "README.md: 0%| | 0.00/24.0 [00:00\") # e.g. 'hf_xxx...' ← your access code with write perms\n", - "\n", - "# ── Local data & target repo ─────────────────────────────────────────────\n", - "DATA_DIR = r\"C:\\Users\\Work\\Desktop\\NucleusNet-10K\" # 10,000 .tif files in a flat folder\n", - "REPO_ID = \"RussellBarkley/msa-em-figures\" # target HF *dataset* repo\n", - "\n", - "# ── Build the dataset from a folder of images ────────────────────────────\n", - "# Note: For a flat folder (no class subfolders), \"imagefolder\" will still create a \"label\" column.\n", - "# We'll drop it so the dataset has just {\"image\", \"filename\"}.\n", - "ds = load_dataset(\n", - " \"imagefolder\",\n", - " data_dir=DATA_DIR,\n", - " split=\"train\",\n", - " keep_in_memory=False,\n", - ")\n", - "\n", - "# Remove dummy label column if present\n", - "if \"label\" in ds.column_names:\n", - " ds = ds.remove_columns(\"label\")\n", - "\n", - "# Attach the filename while avoiding image decoding during the map\n", - "ds = ds.cast_column(\"image\", Image(decode=False))\n", - "\n", - "def add_filename(ex):\n", - " return {\"filename\": os.path.basename(ex[\"image\"][\"path\"])}\n", - "\n", - "ds = ds.map(add_filename, batched=False)\n", - "\n", - "# Re-enable decode for sanity checks / downstream usage\n", - "ds = ds.cast_column(\"image\", Image())\n", - "\n", - "print(ds)\n", - "print(ds.features) # {'image': Image(...), 'filename': Value('string')}\n", - "\n", - "# ── Push to hub without sharding ─────────────────────────────────────────\n", - "# Set max_shard_size to something larger than your dataset size so it stays as ONE .arrow file.\n", - "# (If your 10K TIFFs total, say, < 8–10 GB, \"50GB\" is plenty.)\n", - "ds.push_to_hub(\n", - " REPO_ID,\n", - " private=True, # set False if you want it public\n", - " max_shard_size=\"50GB\", # force a single shard for this small dataset\n", - " # revision=\"main\", # optional: target branch\n", - ")\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/upload_NucleusNet_huggingface.ipynb b/notebooks/upload_NucleusNet_huggingface.ipynb deleted file mode 100644 index 17eb03a30..000000000 --- a/notebooks/upload_NucleusNet_huggingface.ipynb +++ /dev/null @@ -1,2115 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "9f909b67-0226-444a-84eb-f7f9fd2b4dcc", - "metadata": {}, - "source": [ - "(huggingface-upload)=\n", - "# Hugging Face upload" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "275eab52-4dcb-4bcd-9506-2f510f650e7f", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d7c1cf74c1054e518dcd19cac951301f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Resolving data files: 0%| | 0/1061277 [00:00\n", - "
\n", - " Figure\n", - "
\n", - " \n", - " \n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# ── Config ───────────────────────────────────────────────────────────────\n", - "HF_REPO = \"RussellBarkley/representative_nuclei\" # datasets repo name\n", - "HF_ROOT = f\"hf://datasets/{HF_REPO}\"\n", - "\n", - "# ── Imports & backend ───────────────────────────────────────────────────\n", - "try:\n", - " get_ipython().run_line_magic(\"matplotlib\", \"widget\")\n", - "except Exception:\n", - " pass\n", - "\n", - "import os, re\n", - "from io import BytesIO\n", - "from functools import lru_cache\n", - "from typing import List\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import ipywidgets as W\n", - "import fsspec\n", - "from tifffile import imread as tiff_imread\n", - "\n", - "# ── Constants ────────────────────────────────────────────────────────────\n", - "CENTERS = [\"mean\", \"median\", \"geomedian\"]\n", - "METRICS = [\"euclidean\", \"cosine\"]\n", - "EXTS = (\".tif\", \".tiff\", \".png\")\n", - "rank_pat = re.compile(r\"^(\\d{1,4})__\") # e.g., '001__...tif'\n", - "\n", - "# ── Filesystem (quiet—no prints) ────────────────────────────────────────\n", - "fs = fsspec.filesystem(\"hf\")\n", - "\n", - "def _natural_sort_key(path: str):\n", - " base = os.path.basename(path)\n", - " m = rank_pat.match(base)\n", - " if m:\n", - " try:\n", - " return (0, int(m.group(1)), base.lower())\n", - " except Exception:\n", - " pass\n", - " return (1, base.lower())\n", - "\n", - "def list_ranked_images(center: str, metric: str) -> List[str]:\n", - " \"\"\"List and rank-sort up to 100 files under /
// (quiet)\"\"\"\n", - " folder = f\"{HF_ROOT}/{center}/{metric}\"\n", - " try:\n", - " files = fs.glob(f\"{folder}/*\")\n", - " except FileNotFoundError:\n", - " files = []\n", - " files = [p for p in files if os.path.splitext(p)[1].lower() in EXTS]\n", - " files.sort(key=_natural_sort_key)\n", - " return files[:100]\n", - "\n", - "# Build the index used by the viewer code (quiet)\n", - "repo_index = {(c, m): list_ranked_images(c, m) for c in CENTERS for m in METRICS}\n", - "\n", - "# ── Loader with small cache ─────────────────────────────────────────────\n", - "@lru_cache(maxsize=64)\n", - "def load_image_bytes(hf_path: str) -> np.ndarray:\n", - " \"\"\"Read image from HF as grayscale float32 0..255.\"\"\"\n", - " with fs.open(hf_path, \"rb\") as f:\n", - " data = f.read()\n", - " arr = tiff_imread(BytesIO(data))\n", - "\n", - " if arr.ndim > 2:\n", - " arr = arr[..., 0]\n", - " arr = np.asarray(arr)\n", - "\n", - " if np.issubdtype(arr.dtype, np.floating):\n", - " a = arr.astype(np.float32)\n", - " if a.max() <= 1.0 + 1e-6:\n", - " a *= 255.0\n", - " else:\n", - " a = arr.astype(np.float32)\n", - "\n", - " a = np.clip(a, 0, 255)\n", - " return a\n", - "\n", - "# ── UI widgets (renamed + wider spacing) ────────────────────────────────\n", - "CENTERS = [\"mean\", \"median\", \"geomedian\"]\n", - "METRICS = [\"euclidean\", \"cosine\"]\n", - "\n", - "w_metric = W.ToggleButtons(\n", - " options=METRICS, value=\"euclidean\",\n", - " description=\"Distance metric:\", button_style=\"\",\n", - " layout=W.Layout(width=\"auto\")\n", - ")\n", - "w_center = W.ToggleButtons(\n", - " options=CENTERS, value=\"mean\",\n", - " description=\"Measure of central tendency:\", button_style=\"\",\n", - " layout=W.Layout(width=\"auto\")\n", - ")\n", - "\n", - "# Rank control with Prev/Next buttons (unchanged)\n", - "w_prev = W.Button(description=\"◀ Prev\", layout=W.Layout(width=\"80px\"))\n", - "w_next = W.Button(description=\"Next ▶\", layout=W.Layout(width=\"80px\"))\n", - "w_rank = W.IntSlider(\n", - " value=1, min=1, max=100, step=1, description=\"Rank:\", readout=False,\n", - " continuous_update=True, layout=W.Layout(width=\"320px\"))\n", - "w_rank_label = W.Label(f\"{w_rank.value}/100\", layout=W.Layout(width=\"60px\"))\n", - "rank_row = W.HBox([w_prev, w_rank, w_rank_label, w_next],\n", - " layout=W.Layout(align_items=\"center\", gap=\"8px\"))\n", - "\n", - "# Intensity range (unchanged)\n", - "w_rng = W.IntRangeSlider(\n", - " value=[0, 255], min=0, max=255, step=1, description=\"Intensity:\",\n", - " readout=False, continuous_update=True, layout=W.Layout(width=\"480px\"))\n", - "w_rng_label = W.Label(f\"{w_rng.value[0]} – {w_rng.value[1]}\")\n", - "\n", - "# Put metric and center side-by-side with extra gap\n", - "row1 = W.HBox([w_metric, w_center],\n", - " layout=W.Layout(justify_content=\"flex-start\", gap=\"28px\"))\n", - "row2 = rank_row\n", - "row3 = W.HBox([w_rng, w_rng_label], layout=W.Layout(align_items=\"center\", gap=\"8px\"))\n", - "\n", - "ui = W.VBox([row1, row2, row3], layout=W.Layout(gap=\"10px\"))\n", - "display(ui)\n", - "\n", - "# ── Figure (title shows filename only) ──────────────────────────────────\n", - "fig, ax = plt.subplots(figsize=(5.0, 5.0), constrained_layout=True)\n", - "im = ax.imshow(np.zeros((10,10), dtype=np.float32), cmap=\"gray\",\n", - " vmin=0, vmax=255, interpolation=\"nearest\")\n", - "ax.set_xticks([]); ax.set_yticks([])\n", - "title = ax.set_title(\"\", fontsize=12)\n", - "\n", - "def _current_files():\n", - " return repo_index.get((w_center.value, w_metric.value), [])\n", - "\n", - "def _clamp_rank(n):\n", - " files = _current_files()\n", - " if not files:\n", - " return 1\n", - " return int(np.clip(n, 1, len(files)))\n", - "\n", - "def update_image(*_):\n", - " files = _current_files()\n", - " if not files:\n", - " im.set_data(np.zeros((10,10), dtype=np.float32))\n", - " title.set_text(\"\") # no filename if missing\n", - " fig.canvas.draw_idle()\n", - " return\n", - "\n", - " w_rank.value = _clamp_rank(w_rank.value)\n", - " idx = w_rank.value - 1\n", - " path = files[idx]\n", - " arr = load_image_bytes(path)\n", - "\n", - " vmin, vmax = w_rng.value\n", - " im.set_data(arr)\n", - " im.set_clim(vmin=float(vmin), vmax=float(vmax))\n", - "\n", - " # filename only\n", - " title.set_text(os.path.basename(path))\n", - " fig.canvas.draw_idle()\n", - "\n", - "def on_intensity_change(change):\n", - " vmin, vmax = change[\"new\"]\n", - " if vmax <= vmin:\n", - " return\n", - " w_rng_label.value = f\"{vmin} – {vmax}\"\n", - " im.set_clim(vmin=float(vmin), vmax=float(vmax))\n", - " fig.canvas.draw_idle()\n", - "\n", - "def on_rank_change(change):\n", - " w_rank.value = _clamp_rank(change[\"new\"])\n", - " files = _current_files()\n", - " total = len(files) if files else 100\n", - " w_rank_label.value = f\"{w_rank.value}/{total}\"\n", - " update_image()\n", - "\n", - "def on_prev_clicked(_):\n", - " w_rank.value = _clamp_rank(w_rank.value - 1)\n", - "\n", - "def on_next_clicked(_):\n", - " w_rank.value = _clamp_rank(w_rank.value + 1)\n", - "\n", - "# wire events\n", - "w_metric.observe(update_image, names=\"value\")\n", - "w_center.observe(update_image, names=\"value\")\n", - "w_rank.observe(on_rank_change, names=\"value\")\n", - "w_rng.observe(on_intensity_change, names=\"value\")\n", - "w_prev.on_click(on_prev_clicked)\n", - "w_next.on_click(on_next_clicked)\n", - "\n", - "update_image()\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..4f19540ea --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,26 @@ +[project] +name = "cell-browser" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ + "cmasher>=1.9.2", + "colorspacious>=1.1.2", + "datasets>=2.20.0", + "fsspec>=2025.10.0", + "h5py>=3.15.1", + "huggingface-hub>=1.2.4", + "ipympl>=0.9.8", + "ipywidgets>=8.1.8", + "jupyterlab>=4.5.1", + "jupyterlab-myst>=2.6.0", + "matplotlib>=3.10.8", + "numpy>=2.4.0", + "pillow>=12.1.0", + "scipy>=1.16.3", + "tensorflow>=2.20.0", + "tifffile>=2025.12.20", + "tqdm>=4.67.1", + "vizarr>=0.1.1", +] diff --git a/references.bib b/references.bib index b88dbc552..3aa1949e7 100644 --- a/references.bib +++ b/references.bib @@ -6,18 +6,6 @@ @book{Goodfellow-et-al-2016 year={2016} } -@inproceedings{NIPS2012_c399862d, - author = {Krizhevsky, Alex and Sutskever, Ilya and Hinton, Geoffrey E}, - booktitle = {Advances in Neural Information Processing Systems}, - editor = {F. Pereira and C.J. Burges and L. Bottou and K.Q. Weinberger}, - pages = {}, - publisher = {Curran Associates, Inc.}, - title = {ImageNet Classification with Deep Convolutional Neural Networks}, - url = {https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf}, - volume = {25}, - year = {2012} -} - @article{JMLR:v9:vandermaaten08a, author = {Laurens van der Maaten and Geoffrey Hinton}, title = {Visualizing Data using t-SNE}, diff --git a/requirements.in b/requirements.in index 5a548c67d..7a941803d 100644 --- a/requirements.in +++ b/requirements.in @@ -9,6 +9,4 @@ ipympl jupyterlab jupyterlab-myst cmasher -tifffile -tensorflow -pillow \ No newline at end of file +vizarr \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..7b6ee9fbd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2359 @@ +# This file was autogenerated by uv via the following command: +# uv export -o requirements.txt +absl-py==2.3.1 \ + --hash=sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9 \ + --hash=sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d + # via + # keras + # tensorboard + # tensorflow +aiohappyeyeballs==2.6.1 \ + --hash=sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558 \ + --hash=sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8 + # via aiohttp +aiohttp==3.13.3 \ + --hash=sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf \ + --hash=sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c \ + --hash=sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c \ + --hash=sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423 \ + --hash=sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f \ + --hash=sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2 \ + --hash=sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf \ + --hash=sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998 \ + --hash=sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d \ + --hash=sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463 \ + --hash=sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767 \ + --hash=sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43 \ + --hash=sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592 \ + --hash=sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a \ + --hash=sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687 \ + --hash=sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8 \ + --hash=sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261 \ + --hash=sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4 \ + --hash=sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587 \ + --hash=sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91 \ + --hash=sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3 \ + --hash=sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344 \ + --hash=sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6 \ + --hash=sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3 \ + --hash=sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29 \ + --hash=sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c \ + --hash=sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926 \ + --hash=sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64 \ + --hash=sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e \ + --hash=sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6 \ + --hash=sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d \ + --hash=sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415 \ + --hash=sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce \ + --hash=sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603 \ + --hash=sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0 \ + --hash=sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf \ + --hash=sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591 \ + --hash=sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26 \ + --hash=sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a \ + --hash=sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a \ + --hash=sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9 \ + --hash=sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba \ + --hash=sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df \ + --hash=sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679 \ + --hash=sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc \ + --hash=sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984 \ + --hash=sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632 \ + --hash=sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56 \ + --hash=sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168 \ + --hash=sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88 \ + --hash=sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc \ + --hash=sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046 \ + --hash=sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0 \ + --hash=sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3 \ + --hash=sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1 \ + --hash=sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c \ + --hash=sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25 \ + --hash=sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033 \ + --hash=sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1 \ + --hash=sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d \ + --hash=sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f \ + --hash=sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f \ + --hash=sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29 \ + --hash=sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72 \ + --hash=sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57 \ + --hash=sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808 \ + --hash=sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0 \ + --hash=sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730 \ + --hash=sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa + # via fsspec +aiosignal==1.4.0 \ + --hash=sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e \ + --hash=sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7 + # via aiohttp +anyio==4.12.1 \ + --hash=sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703 \ + --hash=sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c + # via + # httpx + # jupyter-server +anywidget==0.9.21 \ + --hash=sha256:78c268e0fbdb1dfd15da37fb578f9cf0a0df58a430e68d9156942b7a9391a761 \ + --hash=sha256:b8d0172029ac426573053c416c6a587838661612208bb390fa0607862e594b27 + # via vizarr +appnope==0.1.4 ; sys_platform == 'darwin' \ + --hash=sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee \ + --hash=sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c + # via ipykernel +argon2-cffi==25.1.0 \ + --hash=sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1 \ + --hash=sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741 + # via jupyter-server +argon2-cffi-bindings==25.1.0 \ + --hash=sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99 \ + --hash=sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6 \ + --hash=sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44 \ + --hash=sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a \ + --hash=sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f \ + --hash=sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2 \ + --hash=sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0 \ + --hash=sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f \ + --hash=sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623 \ + --hash=sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b \ + --hash=sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44 \ + --hash=sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98 \ + --hash=sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500 \ + --hash=sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94 \ + --hash=sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6 \ + --hash=sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d \ + --hash=sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85 \ + --hash=sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92 \ + --hash=sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d \ + --hash=sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a \ + --hash=sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb + # via argon2-cffi +arrow==1.4.0 \ + --hash=sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205 \ + --hash=sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7 + # via isoduration +asciitree==0.3.3 \ + --hash=sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e + # via zarr +asttokens==3.0.1 \ + --hash=sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a \ + --hash=sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7 + # via stack-data +astunparse==1.6.3 \ + --hash=sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872 \ + --hash=sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8 + # via tensorflow +async-lru==2.0.5 \ + --hash=sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb \ + --hash=sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943 + # via jupyterlab +attrs==25.4.0 \ + --hash=sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11 \ + --hash=sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373 + # via + # aiohttp + # jsonschema + # referencing +babel==2.17.0 \ + --hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \ + --hash=sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2 + # via jupyterlab-server +beautifulsoup4==4.14.3 \ + --hash=sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb \ + --hash=sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86 + # via nbconvert +bleach==6.3.0 \ + --hash=sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22 \ + --hash=sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6 + # via nbconvert +certifi==2026.1.4 \ + --hash=sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c \ + --hash=sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120 + # via + # httpcore + # httpx + # requests +cffi==2.0.0 \ + --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ + --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \ + --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \ + --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \ + --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \ + --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \ + --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \ + --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \ + --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \ + --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \ + --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \ + --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \ + --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \ + --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \ + --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \ + --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \ + --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \ + --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \ + --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \ + --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \ + --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \ + --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \ + --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \ + --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \ + --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \ + --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \ + --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \ + --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \ + --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \ + --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \ + --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \ + --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \ + --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \ + --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \ + --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \ + --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \ + --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \ + --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \ + --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \ + --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \ + --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \ + --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \ + --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \ + --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \ + --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \ + --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \ + --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 + # via + # argon2-cffi-bindings + # pyzmq +charset-normalizer==3.4.4 \ + --hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \ + --hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \ + --hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \ + --hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \ + --hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \ + --hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \ + --hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \ + --hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \ + --hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \ + --hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \ + --hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \ + --hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \ + --hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \ + --hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \ + --hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \ + --hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \ + --hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \ + --hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \ + --hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \ + --hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \ + --hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \ + --hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \ + --hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \ + --hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \ + --hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \ + --hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \ + --hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \ + --hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \ + --hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \ + --hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \ + --hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \ + --hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \ + --hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \ + --hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \ + --hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \ + --hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \ + --hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \ + --hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \ + --hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \ + --hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \ + --hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \ + --hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \ + --hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \ + --hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \ + --hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \ + --hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \ + --hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \ + --hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \ + --hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \ + --hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 + # via requests +click==8.3.1 \ + --hash=sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a \ + --hash=sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 + # via typer-slim +cmasher==1.9.2 \ + --hash=sha256:2fe45fde06051050dda5c023a527ba9066ca21f161c793f22839a6ebe6e4bbbb \ + --hash=sha256:6c90c2cec87146e3210d3e7f2321fceee38ac7d87c136cd0de25160a14f57ff5 + # via cell-browser +colorama==0.4.6 ; sys_platform == 'win32' \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 + # via + # click + # ipython + # tqdm +colorspacious==1.1.2 \ + --hash=sha256:5e9072e8cdca889dac445c35c9362a22ccf758e97b00b79ff0d5a7ba3e11b618 \ + --hash=sha256:c78befa603cea5dccb332464e7dd29e96469eebf6cd5133029153d1e69e3fd6f + # via + # cell-browser + # cmasher +comm==0.2.3 \ + --hash=sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971 \ + --hash=sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417 + # via + # ipykernel + # ipywidgets +contourpy==1.3.3 \ + --hash=sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69 \ + --hash=sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc \ + --hash=sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880 \ + --hash=sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc \ + --hash=sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5 \ + --hash=sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263 \ + --hash=sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b \ + --hash=sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5 \ + --hash=sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3 \ + --hash=sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4 \ + --hash=sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e \ + --hash=sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772 \ + --hash=sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286 \ + --hash=sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301 \ + --hash=sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7 \ + --hash=sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411 \ + --hash=sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1 \ + --hash=sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9 \ + --hash=sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a \ + --hash=sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b \ + --hash=sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6 \ + --hash=sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea \ + --hash=sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67 \ + --hash=sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5 \ + --hash=sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d \ + --hash=sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36 \ + --hash=sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99 \ + --hash=sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b \ + --hash=sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8 \ + --hash=sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d \ + --hash=sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7 \ + --hash=sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339 \ + --hash=sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659 \ + --hash=sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4 \ + --hash=sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f \ + --hash=sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20 \ + --hash=sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36 \ + --hash=sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb \ + --hash=sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d \ + --hash=sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8 \ + --hash=sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0 \ + --hash=sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b \ + --hash=sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7 \ + --hash=sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe \ + --hash=sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77 \ + --hash=sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd \ + --hash=sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1 \ + --hash=sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216 \ + --hash=sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13 \ + --hash=sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae \ + --hash=sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae \ + --hash=sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77 \ + --hash=sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3 \ + --hash=sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f \ + --hash=sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9 \ + --hash=sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a + # via matplotlib +cycler==0.12.1 \ + --hash=sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 \ + --hash=sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c + # via matplotlib +datasets==4.4.2 \ + --hash=sha256:6f5ef3417504d9cd663c71c1b90b9a494ff4c2076a2cd6a6e40ceee6ad95befc \ + --hash=sha256:9de16e415c4ba4713eac0493f7c7dc74f3aa21599297f00cc6ddab409cb7b24b + # via cell-browser +debugpy==1.8.19 \ + --hash=sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b \ + --hash=sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af \ + --hash=sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38 \ + --hash=sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee \ + --hash=sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d \ + --hash=sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606 \ + --hash=sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f \ + --hash=sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d \ + --hash=sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976 \ + --hash=sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e \ + --hash=sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73 \ + --hash=sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809 \ + --hash=sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de \ + --hash=sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb + # via ipykernel +decorator==5.2.1 \ + --hash=sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360 \ + --hash=sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a + # via ipython +defusedxml==0.7.1 \ + --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ + --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 + # via nbconvert +deprecated==1.3.1 \ + --hash=sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f \ + --hash=sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223 + # via numcodecs +dill==0.4.0 \ + --hash=sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0 \ + --hash=sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049 + # via + # datasets + # multiprocess +executing==2.2.1 \ + --hash=sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4 \ + --hash=sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017 + # via stack-data +fasteners==0.20 ; sys_platform != 'emscripten' \ + --hash=sha256:55dce8792a41b56f727ba6e123fcaee77fd87e638a6863cec00007bfea84c8d8 \ + --hash=sha256:9422c40d1e350e4259f509fb2e608d6bc43c0136f79a00db1b49046029d0b3b7 + # via zarr +fastjsonschema==2.21.2 \ + --hash=sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463 \ + --hash=sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de + # via nbformat +filelock==3.20.2 \ + --hash=sha256:a2241ff4ddde2a7cebddf78e39832509cb045d18ec1a09d7248d6bfc6bfbbe64 \ + --hash=sha256:fbba7237d6ea277175a32c54bb71ef814a8546d8601269e1bfc388de333974e8 + # via + # datasets + # huggingface-hub +flatbuffers==25.12.19 \ + --hash=sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4 + # via tensorflow +fonttools==4.61.1 \ + --hash=sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796 \ + --hash=sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75 \ + --hash=sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d \ + --hash=sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371 \ + --hash=sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b \ + --hash=sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b \ + --hash=sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2 \ + --hash=sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3 \ + --hash=sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9 \ + --hash=sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd \ + --hash=sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c \ + --hash=sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c \ + --hash=sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0 \ + --hash=sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5 \ + --hash=sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118 \ + --hash=sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69 \ + --hash=sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261 \ + --hash=sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c \ + --hash=sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba \ + --hash=sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c \ + --hash=sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91 \ + --hash=sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19 \ + --hash=sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5 \ + --hash=sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2 \ + --hash=sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d \ + --hash=sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063 \ + --hash=sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7 \ + --hash=sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e \ + --hash=sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e \ + --hash=sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8 \ + --hash=sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa \ + --hash=sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e \ + --hash=sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c \ + --hash=sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd + # via matplotlib +fqdn==1.5.1 \ + --hash=sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f \ + --hash=sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014 + # via jsonschema +frozenlist==1.8.0 \ + --hash=sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686 \ + --hash=sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0 \ + --hash=sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121 \ + --hash=sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd \ + --hash=sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7 \ + --hash=sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c \ + --hash=sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d \ + --hash=sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b \ + --hash=sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79 \ + --hash=sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f \ + --hash=sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7 \ + --hash=sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef \ + --hash=sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed \ + --hash=sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b \ + --hash=sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe \ + --hash=sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143 \ + --hash=sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e \ + --hash=sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930 \ + --hash=sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37 \ + --hash=sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128 \ + --hash=sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2 \ + --hash=sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f \ + --hash=sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746 \ + --hash=sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df \ + --hash=sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8 \ + --hash=sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c \ + --hash=sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0 \ + --hash=sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad \ + --hash=sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82 \ + --hash=sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29 \ + --hash=sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30 \ + --hash=sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf \ + --hash=sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62 \ + --hash=sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383 \ + --hash=sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c \ + --hash=sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52 \ + --hash=sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d \ + --hash=sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1 \ + --hash=sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a \ + --hash=sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714 \ + --hash=sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65 \ + --hash=sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506 \ + --hash=sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888 \ + --hash=sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41 \ + --hash=sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608 \ + --hash=sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa \ + --hash=sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8 \ + --hash=sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1 \ + --hash=sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed \ + --hash=sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231 \ + --hash=sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496 \ + --hash=sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a \ + --hash=sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3 \ + --hash=sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24 \ + --hash=sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7 \ + --hash=sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4 \ + --hash=sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e \ + --hash=sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e \ + --hash=sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8 \ + --hash=sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51 \ + --hash=sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8 \ + --hash=sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806 \ + --hash=sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042 \ + --hash=sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b \ + --hash=sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a \ + --hash=sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2 \ + --hash=sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0 \ + --hash=sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e \ + --hash=sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b \ + --hash=sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d \ + --hash=sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52 \ + --hash=sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1 \ + --hash=sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94 \ + --hash=sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822 \ + --hash=sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a \ + --hash=sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11 \ + --hash=sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51 \ + --hash=sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40 \ + --hash=sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5 \ + --hash=sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4 \ + --hash=sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027 \ + --hash=sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd + # via + # aiohttp + # aiosignal +fsspec==2025.10.0 \ + --hash=sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d \ + --hash=sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59 + # via + # cell-browser + # datasets + # huggingface-hub +gast==0.7.0 \ + --hash=sha256:0bb14cd1b806722e91ddbab6fb86bba148c22b40e7ff11e248974e04c8adfdae \ + --hash=sha256:99cbf1365633a74099f69c59bd650476b96baa5ef196fec88032b00b31ba36f7 + # via tensorflow +google-pasta==0.2.0 \ + --hash=sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed \ + --hash=sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e + # via tensorflow +grpcio==1.76.0 \ + --hash=sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280 \ + --hash=sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd \ + --hash=sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc \ + --hash=sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba \ + --hash=sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03 \ + --hash=sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2 \ + --hash=sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb \ + --hash=sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958 \ + --hash=sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468 \ + --hash=sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc \ + --hash=sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09 \ + --hash=sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980 \ + --hash=sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f \ + --hash=sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882 \ + --hash=sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae \ + --hash=sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77 \ + --hash=sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e \ + --hash=sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73 \ + --hash=sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8 \ + --hash=sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3 \ + --hash=sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e \ + --hash=sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42 \ + --hash=sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6 \ + --hash=sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11 \ + --hash=sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a \ + --hash=sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347 \ + --hash=sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4 \ + --hash=sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8 \ + --hash=sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8 \ + --hash=sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc \ + --hash=sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62 + # via + # tensorboard + # tensorflow +h11==0.16.0 \ + --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ + --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 + # via httpcore +h5py==3.15.1 \ + --hash=sha256:121b2b7a4c1915d63737483b7bff14ef253020f617c2fb2811f67a4bed9ac5e8 \ + --hash=sha256:25c8843fec43b2cc368aa15afa1cdf83fc5e17b1c4e10cd3771ef6c39b72e5ce \ + --hash=sha256:28a20e1a4082a479b3d7db2169f3a5034af010b90842e75ebbf2e9e49eb4183e \ + --hash=sha256:316dd0f119734f324ca7ed10b5627a2de4ea42cc4dfbcedbee026aaa361c238c \ + --hash=sha256:59b0d63b318bf3cc06687def2b45afd75926bbc006f7b8cd2b1a231299fc8599 \ + --hash=sha256:59b25cf02411bf12e14f803fef0b80886444c7fe21a5ad17c6a28d3f08098a1e \ + --hash=sha256:5f4fb0567eb8517c3ecd6b3c02c4f4e9da220c8932604960fd04e24ee1254763 \ + --hash=sha256:61d5a58a9851e01ee61c932bbbb1c98fe20aba0a5674776600fb9a361c0aa652 \ + --hash=sha256:8a33bfd5dfcea037196f7778534b1ff7e36a7f40a89e648c8f2967292eb6898e \ + --hash=sha256:954e480433e82d3872503104f9b285d369048c3a788b2b1a00e53d1c47c98dd2 \ + --hash=sha256:99d374a21f7321a4c6ab327c4ab23bd925ad69821aeb53a1e75dd809d19f67fa \ + --hash=sha256:9c73d1d7cdb97d5b17ae385153472ce118bed607e43be11e9a9deefaa54e0734 \ + --hash=sha256:a308fd8681a864c04423c0324527237a0484e2611e3441f8089fd00ed56a8171 \ + --hash=sha256:a6d8c5a05a76aca9a494b4c53ce8a9c29023b7f64f625c6ce1841e92a362ccdf \ + --hash=sha256:ab2219dbc6fcdb6932f76b548e2b16f34a1f52b7666e998157a4dfc02e2c4123 \ + --hash=sha256:b51469890e58e85d5242e43aab29f5e9c7e526b951caab354f3ded4ac88e7b76 \ + --hash=sha256:c256254a8a81e2bddc0d376e23e2a6d2dc8a1e8a2261835ed8c1281a0744cd97 \ + --hash=sha256:c8440fd8bee9500c235ecb7aa1917a0389a2adb80c209fa1cc485bd70e0d94a5 \ + --hash=sha256:c86e3ed45c4473564de55aa83b6fc9e5ead86578773dfbd93047380042e26b69 \ + --hash=sha256:d8cb02c3a96255149ed3ac811eeea25b655d959c6dd5ce702c9a95ff11859eb5 \ + --hash=sha256:dea78b092fd80a083563ed79a3171258d4a4d307492e7cf8b2313d464c82ba52 \ + --hash=sha256:e02fe77a03f652500d8bff288cbf3675f742fc0411f5a628fa37116507dc7cc0 \ + --hash=sha256:f4a016df3f4a8a14d573b496e4d1964deb380e26031fc85fb40e417e9131888a \ + --hash=sha256:fa8df5267f545b4946df8ca0d93d23382191018e4cda2deda4c2cedf9a010e13 \ + --hash=sha256:fd125c131889ebbef0849f4a0e29cf363b48aba42f228d08b4079913b576bb3a + # via + # cell-browser + # keras + # tensorflow +hf-xet==1.2.0 ; platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64' \ + --hash=sha256:10bfab528b968c70e062607f663e21e34e2bba349e8038db546646875495179e \ + --hash=sha256:210d577732b519ac6ede149d2f2f34049d44e8622bf14eb3d63bbcd2d4b332dc \ + --hash=sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4 \ + --hash=sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382 \ + --hash=sha256:29c8fc913a529ec0a91867ce3d119ac1aac966e098cf49501800c870328cc090 \ + --hash=sha256:2a212e842647b02eb6a911187dc878e79c4aa0aa397e88dd3b26761676e8c1f8 \ + --hash=sha256:30e06daccb3a7d4c065f34fc26c14c74f4653069bb2b194e7f18f17cbe9939c0 \ + --hash=sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd \ + --hash=sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848 \ + --hash=sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737 \ + --hash=sha256:66e159cbfcfbb29f920db2c09ed8b660eb894640d284f102ada929b6e3dc410a \ + --hash=sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f \ + --hash=sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc \ + --hash=sha256:9c91d5ae931510107f148874e9e2de8a16052b6f1b3ca3c1b12f15ccb491390f \ + --hash=sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865 \ + --hash=sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f \ + --hash=sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813 \ + --hash=sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5 \ + --hash=sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649 \ + --hash=sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c \ + --hash=sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69 \ + --hash=sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832 + # via huggingface-hub +httpcore==1.0.9 \ + --hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \ + --hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8 + # via httpx +httpx==0.28.1 \ + --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \ + --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad + # via + # datasets + # huggingface-hub + # jupyterlab +huggingface-hub==1.2.4 \ + --hash=sha256:2db69b91877d9d34825f5cd2a63b94f259011a77dcf761b437bf510fbe9522e9 \ + --hash=sha256:7a1d9ec4802e64372d1d152d69fb8e26d943f15a2289096fbc8e09e7b90c21a5 + # via + # cell-browser + # datasets +idna==3.11 \ + --hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \ + --hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902 + # via + # anyio + # httpx + # jsonschema + # requests + # yarl +ipykernel==7.1.0 \ + --hash=sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db \ + --hash=sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c + # via jupyterlab +ipympl==0.9.8 \ + --hash=sha256:4a03612f77d92c9e2160c9e0d2a80b277e30387126399088f780dba9622247be \ + --hash=sha256:6d7230d518384521093f3854f7db89d069dcd9c28a935b371e9c9f126354dee1 + # via cell-browser +ipython==9.9.0 \ + --hash=sha256:48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220 \ + --hash=sha256:b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b + # via + # ipykernel + # ipympl + # ipywidgets +ipython-pygments-lexers==1.1.1 \ + --hash=sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81 \ + --hash=sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c + # via ipython +ipywidgets==8.1.8 \ + --hash=sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668 \ + --hash=sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e + # via + # anywidget + # cell-browser + # ipympl +isoduration==20.11.0 \ + --hash=sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9 \ + --hash=sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042 + # via jsonschema +jedi==0.19.2 \ + --hash=sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0 \ + --hash=sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9 + # via ipython +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via + # jupyter-server + # jupyterlab + # jupyterlab-server + # nbconvert +json5==0.13.0 \ + --hash=sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc \ + --hash=sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf + # via jupyterlab-server +jsonpointer==3.0.0 \ + --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \ + --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef + # via jsonschema +jsonschema==4.26.0 \ + --hash=sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326 \ + --hash=sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce + # via + # jupyter-events + # jupyterlab-server + # nbformat +jsonschema-specifications==2025.9.1 \ + --hash=sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe \ + --hash=sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d + # via jsonschema +jupyter-client==8.7.0 \ + --hash=sha256:3357212d9cbe01209e59190f67a3a7e1f387a4f4e88d1e0433ad84d7b262531d \ + --hash=sha256:3671a94fd25e62f5f2f554f5e95389c2294d89822378a5f2dd24353e1494a9e0 + # via + # ipykernel + # jupyter-server + # nbclient +jupyter-core==5.9.1 \ + --hash=sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508 \ + --hash=sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # nbclient + # nbconvert + # nbformat +jupyter-events==0.12.0 \ + --hash=sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb \ + --hash=sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b + # via jupyter-server +jupyter-lsp==2.3.0 \ + --hash=sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245 \ + --hash=sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f + # via jupyterlab +jupyter-server==2.17.0 \ + --hash=sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5 \ + --hash=sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f + # via + # jupyter-lsp + # jupyterlab + # jupyterlab-myst + # jupyterlab-server + # notebook-shim +jupyter-server-terminals==0.5.3 \ + --hash=sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa \ + --hash=sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269 + # via jupyter-server +jupyterlab==4.5.1 \ + --hash=sha256:09da1ddfbd9eec18b5101dbb8515612aa1e47443321fb99503725a88e93d20d9 \ + --hash=sha256:31b059de96de0754ff1f2ce6279774b6aab8c34d7082e9752db58207c99bd514 + # via cell-browser +jupyterlab-myst==2.6.0 \ + --hash=sha256:1502e776153a43588eeb26ce04fb20a0a401805e20edbc57090c9ac932bd42e0 \ + --hash=sha256:9a0e0ffb318798998be91b7303ffca8a5f15c29bcf339c968c0c3edbc1926265 + # via cell-browser +jupyterlab-pygments==0.3.0 \ + --hash=sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d \ + --hash=sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780 + # via nbconvert +jupyterlab-server==2.28.0 \ + --hash=sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c \ + --hash=sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968 + # via jupyterlab +jupyterlab-widgets==3.0.16 \ + --hash=sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0 \ + --hash=sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8 + # via ipywidgets +keras==3.13.0 \ + --hash=sha256:096793e2be6230816f3f7e030370e66c0f4a89707c59bf2d8fad3ca33869bd1c \ + --hash=sha256:ec51ad2ffcef086d0e3077ac461fa9e3bc54f91d94b49b7c9a84c9af7f54cf5e + # via tensorflow +kiwisolver==1.4.9 \ + --hash=sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c \ + --hash=sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7 \ + --hash=sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21 \ + --hash=sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff \ + --hash=sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c \ + --hash=sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f \ + --hash=sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1 \ + --hash=sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891 \ + --hash=sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77 \ + --hash=sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d \ + --hash=sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce \ + --hash=sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3 \ + --hash=sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60 \ + --hash=sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab \ + --hash=sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78 \ + --hash=sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b \ + --hash=sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14 \ + --hash=sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32 \ + --hash=sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185 \ + --hash=sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed \ + --hash=sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1 \ + --hash=sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c \ + --hash=sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11 \ + --hash=sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752 \ + --hash=sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4 \ + --hash=sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58 \ + --hash=sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5 \ + --hash=sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198 \ + --hash=sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134 \ + --hash=sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2 \ + --hash=sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370 \ + --hash=sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197 \ + --hash=sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386 \ + --hash=sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a \ + --hash=sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748 \ + --hash=sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c \ + --hash=sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8 \ + --hash=sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5 \ + --hash=sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999 \ + --hash=sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369 \ + --hash=sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122 \ + --hash=sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098 \ + --hash=sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f \ + --hash=sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799 \ + --hash=sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525 \ + --hash=sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d \ + --hash=sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64 \ + --hash=sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf \ + --hash=sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552 \ + --hash=sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2 \ + --hash=sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c \ + --hash=sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6 \ + --hash=sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64 \ + --hash=sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d \ + --hash=sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548 \ + --hash=sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07 \ + --hash=sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d \ + --hash=sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c \ + --hash=sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3 \ + --hash=sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145 \ + --hash=sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2 \ + --hash=sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2 \ + --hash=sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04 \ + --hash=sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54 \ + --hash=sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df + # via matplotlib +lark==1.3.1 \ + --hash=sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905 \ + --hash=sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12 + # via rfc3987-syntax +libclang==18.1.1 \ + --hash=sha256:0b2e143f0fac830156feb56f9231ff8338c20aecfe72b4ffe96f19e5a1dbb69a \ + --hash=sha256:3f0e1f49f04d3cd198985fea0511576b0aee16f9ff0e0f0cad7f9c57ec3c20e8 \ + --hash=sha256:4dd2d3b82fab35e2bf9ca717d7b63ac990a3519c7e312f19fa8e86dcc712f7fb \ + --hash=sha256:54dda940a4a0491a9d1532bf071ea3ef26e6dbaf03b5000ed94dd7174e8f9592 \ + --hash=sha256:69f8eb8f65c279e765ffd28aaa7e9e364c776c17618af8bff22a8df58677ff4f \ + --hash=sha256:6f14c3f194704e5d09769108f03185fce7acaf1d1ae4bbb2f30a72c2400cb7c5 \ + --hash=sha256:83ce5045d101b669ac38e6da8e58765f12da2d3aafb3b9b98d88b286a60964d8 \ + --hash=sha256:a1214966d08d73d971287fc3ead8dfaf82eb07fb197680d8b3859dbbbbf78250 \ + --hash=sha256:c533091d8a3bbf7460a00cb6c1a71da93bffe148f172c7d03b1c31fbf8aa2a0b \ + --hash=sha256:cf4a99b05376513717ab5d82a0db832c56ccea4fd61a69dbb7bccf2dfb207dbe + # via tensorflow +markdown==3.10 \ + --hash=sha256:37062d4f2aa4b2b6b32aefb80faa300f82cc790cb949a35b8caede34f2b68c0e \ + --hash=sha256:b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c + # via tensorboard +markdown-it-py==4.0.0 \ + --hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \ + --hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3 + # via rich +markupsafe==3.0.3 \ + --hash=sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf \ + --hash=sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175 \ + --hash=sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219 \ + --hash=sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb \ + --hash=sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6 \ + --hash=sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab \ + --hash=sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce \ + --hash=sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218 \ + --hash=sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634 \ + --hash=sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73 \ + --hash=sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c \ + --hash=sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe \ + --hash=sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa \ + --hash=sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37 \ + --hash=sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f \ + --hash=sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d \ + --hash=sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 \ + --hash=sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19 \ + --hash=sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9 \ + --hash=sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9 \ + --hash=sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc \ + --hash=sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4 \ + --hash=sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354 \ + --hash=sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698 \ + --hash=sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9 \ + --hash=sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b \ + --hash=sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc \ + --hash=sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485 \ + --hash=sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f \ + --hash=sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12 \ + --hash=sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025 \ + --hash=sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009 \ + --hash=sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d \ + --hash=sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a \ + --hash=sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5 \ + --hash=sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f \ + --hash=sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1 \ + --hash=sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287 \ + --hash=sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6 \ + --hash=sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581 \ + --hash=sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed \ + --hash=sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b \ + --hash=sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 \ + --hash=sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676 \ + --hash=sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e \ + --hash=sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d \ + --hash=sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d \ + --hash=sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795 \ + --hash=sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5 \ + --hash=sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d \ + --hash=sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe \ + --hash=sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda \ + --hash=sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e \ + --hash=sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737 \ + --hash=sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523 \ + --hash=sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50 + # via + # jinja2 + # nbconvert + # werkzeug +matplotlib==3.10.8 \ + --hash=sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a \ + --hash=sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f \ + --hash=sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5 \ + --hash=sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3 \ + --hash=sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f \ + --hash=sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b \ + --hash=sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8 \ + --hash=sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008 \ + --hash=sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b \ + --hash=sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958 \ + --hash=sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04 \ + --hash=sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b \ + --hash=sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6 \ + --hash=sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908 \ + --hash=sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c \ + --hash=sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1 \ + --hash=sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d \ + --hash=sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1 \ + --hash=sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c \ + --hash=sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a \ + --hash=sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce \ + --hash=sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a \ + --hash=sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11 \ + --hash=sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466 \ + --hash=sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486 \ + --hash=sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077 \ + --hash=sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565 \ + --hash=sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f \ + --hash=sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50 \ + --hash=sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58 \ + --hash=sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645 \ + --hash=sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39 \ + --hash=sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf \ + --hash=sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149 \ + --hash=sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22 \ + --hash=sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6 + # via + # cell-browser + # cmasher + # ipympl +matplotlib-inline==0.2.1 \ + --hash=sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76 \ + --hash=sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe + # via + # ipykernel + # ipython +mdurl==0.1.2 \ + --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ + --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba + # via markdown-it-py +mistune==3.2.0 \ + --hash=sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a \ + --hash=sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1 + # via nbconvert +ml-dtypes==0.5.4 \ + --hash=sha256:0d2ffd05a2575b1519dc928c0b93c06339eb67173ff53acb00724502cda231cf \ + --hash=sha256:11942cbf2cf92157db91e5022633c0d9474d4dfd813a909383bd23ce828a4b7d \ + --hash=sha256:14a4fd3228af936461db66faccef6e4f41c1d82fcc30e9f8d58a08916b1d811f \ + --hash=sha256:2314892cdc3fcf05e373d76d72aaa15fda9fb98625effa73c1d646f331fcecb7 \ + --hash=sha256:2b857d3af6ac0d39db1de7c706e69c7f9791627209c3d6dedbfca8c7e5faec22 \ + --hash=sha256:304ad47faa395415b9ccbcc06a0350800bc50eda70f0e45326796e27c62f18b6 \ + --hash=sha256:35f29491a3e478407f7047b8a4834e4640a77d2737e0b294d049746507af5175 \ + --hash=sha256:3bbbe120b915090d9dd1375e4684dd17a20a2491ef25d640a908281da85e73f1 \ + --hash=sha256:4381fe2f2452a2d7589689693d3162e876b3ddb0a832cde7a414f8e1adf7eab1 \ + --hash=sha256:531eff30e4d368cb6255bc2328d070e35836aa4f282a0fb5f3a0cd7260257298 \ + --hash=sha256:533ce891ba774eabf607172254f2e7260ba5f57bdd64030c9a4fcfbd99815d0d \ + --hash=sha256:5a0f68ca8fd8d16583dfa7793973feb86f2fbb56ce3966daf9c9f748f52a2049 \ + --hash=sha256:6a0df4223b514d799b8a1629c65ddc351b3efa833ccf7f8ea0cf654a61d1e35d \ + --hash=sha256:805cef3a38f4eafae3a5bf9ebdcdb741d0bcfd9e1bd90eb54abd24f928cd2465 \ + --hash=sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453 \ + --hash=sha256:8c6a2dcebd6f3903e05d51960a8058d6e131fe69f952a5397e5dbabc841b6d56 \ + --hash=sha256:8c760d85a2f82e2bed75867079188c9d18dae2ee77c25a54d60e9cc79be1bc48 \ + --hash=sha256:9ad459e99793fa6e13bd5b7e6792c8f9190b4e5a1b45c63aba14a4d0a7f1d5ff \ + --hash=sha256:9bad06436568442575beb2d03389aa7456c690a5b05892c471215bfd8cf39460 \ + --hash=sha256:a174837a64f5b16cab6f368171a1a03a27936b31699d167684073ff1c4237dac \ + --hash=sha256:a7f7c643e8b1320fd958bf098aa7ecf70623a42ec5154e3be3be673f4c34d900 \ + --hash=sha256:bfc534409c5d4b0bf945af29e5d0ab075eae9eecbb549ff8a29280db822f34f9 \ + --hash=sha256:c1a953995cccb9e25a4ae19e34316671e4e2edaebe4cf538229b1fc7109087b7 \ + --hash=sha256:cb73dccfc991691c444acc8c0012bee8f2470da826a92e3a20bb333b1a7894e6 \ + --hash=sha256:ce756d3a10d0c4067172804c9cc276ba9cc0ff47af9078ad439b075d1abdc29b \ + --hash=sha256:f21c9219ef48ca5ee78402d5cc831bd58ea27ce89beda894428bc67a52da5328 + # via + # keras + # tensorflow +multidict==6.7.0 \ + --hash=sha256:040f393368e63fb0f3330e70c26bfd336656bed925e5cbe17c9da839a6ab13ec \ + --hash=sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd \ + --hash=sha256:0591b48acf279821a579282444814a2d8d0af624ae0bc600aa4d1b920b6e924b \ + --hash=sha256:07f5594ac6d084cbb5de2df218d78baf55ef150b91f0ff8a21cc7a2e3a5a58eb \ + --hash=sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f \ + --hash=sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7 \ + --hash=sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd \ + --hash=sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d \ + --hash=sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0 \ + --hash=sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3 \ + --hash=sha256:19a1d55338ec1be74ef62440ca9e04a2f001a04d0cc49a4983dc320ff0f3212d \ + --hash=sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa \ + --hash=sha256:2090d3718829d1e484706a2f525e50c892237b2bf9b17a79b059cb98cddc2f10 \ + --hash=sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202 \ + --hash=sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718 \ + --hash=sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e \ + --hash=sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1 \ + --hash=sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2 \ + --hash=sha256:2d2cfeec3f6f45651b3d408c4acec0ebf3daa9bc8a112a084206f5db5d05b754 \ + --hash=sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c \ + --hash=sha256:30d193c6cc6d559db42b6bcec8a5d395d34d60c9877a0b71ecd7c204fcf15390 \ + --hash=sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128 \ + --hash=sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3 \ + --hash=sha256:3b29b980d0ddbecb736735ee5bef69bb2ddca56eff603c86f3f29a1128299b4f \ + --hash=sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842 \ + --hash=sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9 \ + --hash=sha256:3da4fb467498df97e986af166b12d01f05d2e04f978a9c1c680ea1988e0bc4b6 \ + --hash=sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8 \ + --hash=sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599 \ + --hash=sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec \ + --hash=sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34 \ + --hash=sha256:4ef089f985b8c194d341eb2c24ae6e7408c9a0e2e5658699c92f497437d88c3c \ + --hash=sha256:53a42d364f323275126aff81fb67c5ca1b7a04fda0546245730a55c8c5f24bc4 \ + --hash=sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38 \ + --hash=sha256:654030da3197d927f05a536a66186070e98765aa5142794c9904555d3a9d8fb5 \ + --hash=sha256:6b4c3d199f953acd5b446bf7c0de1fe25d94e09e79086f8dc2f48a11a129cdf1 \ + --hash=sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a \ + --hash=sha256:749a72584761531d2b9467cfbdfd29487ee21124c304c4b6cb760d8777b27f9c \ + --hash=sha256:7516c579652f6a6be0e266aec0acd0db80829ca305c3d771ed898538804c2036 \ + --hash=sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38 \ + --hash=sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99 \ + --hash=sha256:7b022717c748dd1992a83e219587aabe45980d88969f01b316e78683e6285f64 \ + --hash=sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e \ + --hash=sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159 \ + --hash=sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12 \ + --hash=sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1 \ + --hash=sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0 \ + --hash=sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184 \ + --hash=sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b \ + --hash=sha256:94218fcec4d72bc61df51c198d098ce2b378e0ccbac41ddbed5ef44092913288 \ + --hash=sha256:9600082733859f00d79dee64effc7aef1beb26adb297416a4ad2116fd61374bd \ + --hash=sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45 \ + --hash=sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a \ + --hash=sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca \ + --hash=sha256:9fb0211dfc3b51efea2f349ec92c114d7754dd62c01f81c3e32b765b70c45c9b \ + --hash=sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f \ + --hash=sha256:9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32 \ + --hash=sha256:a027ec240fe73a8d6281872690b988eed307cd7d91b23998ff35ff577ca688b5 \ + --hash=sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4 \ + --hash=sha256:a37bd74c3fa9d00be2d7b8eca074dc56bd8077ddd2917a839bd989612671ed17 \ + --hash=sha256:a60a4d75718a5efa473ebd5ab685786ba0c67b8381f781d1be14da49f1a2dc60 \ + --hash=sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394 \ + --hash=sha256:ad9ce259f50abd98a1ca0aa6e490b58c316a0fce0617f609723e40804add2c00 \ + --hash=sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304 \ + --hash=sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13 \ + --hash=sha256:b3bc26a951007b1057a1c543af845f1c7e3e71cc240ed1ace7bf4484aa99196e \ + --hash=sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e \ + --hash=sha256:b4121773c49a0776461f4a904cdf6264c88e42218aaa8407e803ca8025872792 \ + --hash=sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb \ + --hash=sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b \ + --hash=sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000 \ + --hash=sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6 \ + --hash=sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62 \ + --hash=sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63 \ + --hash=sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5 \ + --hash=sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e \ + --hash=sha256:caf53b15b1b7df9fbd0709aa01409000a2b4dd03a5f6f5cc548183c7c8f8b63c \ + --hash=sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827 \ + --hash=sha256:cd240939f71c64bd658f186330603aac1a9a81bf6273f523fca63673cb7378a8 \ + --hash=sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96 \ + --hash=sha256:d1d964afecdf3a8288789df2f5751dc0a8261138c3768d9af117ed384e538fad \ + --hash=sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6 \ + --hash=sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4 \ + --hash=sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064 \ + --hash=sha256:e93a0617cd16998784bf4414c7e40f17a35d2350e5c6f0bd900d3a8e02bd3762 \ + --hash=sha256:ea3334cabe4d41b7ccd01e4d349828678794edbc2d3ae97fc162a3312095092e \ + --hash=sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546 \ + --hash=sha256:f0feece2ef8ebc42ed9e2e8c78fc4aa3cf455733b507c09ef7406364c94376c6 \ + --hash=sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d \ + --hash=sha256:f8a93b1c0ed2d04b97a5e9336fd2d33371b9a6e29ab7dd6503d63407c20ffbaf \ + --hash=sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885 \ + --hash=sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7 + # via + # aiohttp + # yarl +multiprocess==0.70.18 \ + --hash=sha256:5aa6eef98e691281b3ad923be2832bf1c55dd2c859acd73e5ec53a66aae06a1d \ + --hash=sha256:60c194974c31784019c1f459d984e8f33ee48f10fcf42c309ba97b30d9bd53ea \ + --hash=sha256:871743755f43ef57d7910a38433cfe41319e72be1bbd90b79c7a5ac523eb9334 \ + --hash=sha256:9b78f8e5024b573730bfb654783a13800c2c0f2dfc0c25e70b40d184d64adaa2 \ + --hash=sha256:dbf705e52a154fe5e90fb17b38f02556169557c2dd8bb084f2e06c2784d8279b \ + --hash=sha256:e78ca805a72b1b810c690b6b4cc32579eba34f403094bbbae962b7b5bf9dfcb8 \ + --hash=sha256:f9597128e6b3e67b23956da07cf3d2e5cba79e2f4e0fba8d7903636663ec6d0d + # via datasets +namex==0.1.0 \ + --hash=sha256:117f03ccd302cc48e3f5c58a296838f6b89c83455ab8683a1e85f2a430aa4306 \ + --hash=sha256:e2012a474502f1e2251267062aae3114611f07df4224b6e06334c57b0f2ce87c + # via keras +nbclient==0.10.4 \ + --hash=sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9 \ + --hash=sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440 + # via nbconvert +nbconvert==7.16.6 \ + --hash=sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b \ + --hash=sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582 + # via jupyter-server +nbformat==5.10.4 \ + --hash=sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a \ + --hash=sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b + # via + # jupyter-server + # nbclient + # nbconvert +nest-asyncio==1.6.0 \ + --hash=sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe \ + --hash=sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c + # via ipykernel +notebook-shim==0.2.4 \ + --hash=sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef \ + --hash=sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb + # via jupyterlab +numcodecs==0.15.1 \ + --hash=sha256:1d471a1829ce52d3f365053a2bd1379e32e369517557c4027ddf5ac0d99c591e \ + --hash=sha256:1dfdea4a67108205edfce99c1cb6cd621343bc7abb7e16a041c966776920e7de \ + --hash=sha256:a34f0fe5e5f3b837bbedbeb98794a6d4a12eeeef8d4697b523905837900b5e1c \ + --hash=sha256:a4f7bdb26f1b34423cb56d48e75821223be38040907c9b5954eeb7463e7eb03c \ + --hash=sha256:b0a9d9cd29a0088220682dda4a9898321f7813ff7802be2bbb545f6e3d2f10ff \ + --hash=sha256:c3a09e22140f2c691f7df26303ff8fa2dadcf26d7d0828398c0bc09b69e5efa3 \ + --hash=sha256:daed6066ffcf40082da847d318b5ab6123d69ceb433ba603cb87c323a541a8bc \ + --hash=sha256:e3d82b70500cf61e8d115faa0d0a76be6ecdc24a16477ee3279d711699ad85f3 \ + --hash=sha256:eeed77e4d6636641a2cc605fbc6078c7a8f2cc40f3dfa2b3f61e52e6091b04ff + # via zarr +numpy==2.4.0 \ + --hash=sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee \ + --hash=sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3 \ + --hash=sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5 \ + --hash=sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d \ + --hash=sha256:1d8f9fde5f6dc1b6fc34df8162f3b3079365468703fee7f31d4e0cc8c63baed9 \ + --hash=sha256:1ee32359fb7543b7b7bd0b2f46294db27e29e7bbdf70541e81b190836cd83ded \ + --hash=sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93 \ + --hash=sha256:23a3e9d1a6f360267e8fbb38ba5db355a6a7e9be71d7fce7ab3125e88bb646c8 \ + --hash=sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037 \ + --hash=sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83 \ + --hash=sha256:355354388cba60f2132df297e2d53053d4063f79077b67b481d21276d61fc4df \ + --hash=sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb \ + --hash=sha256:36667db4d6c1cea79c8930ab72fadfb4060feb4bfe724141cd4bd064d2e5f8ce \ + --hash=sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6 \ + --hash=sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667 \ + --hash=sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d \ + --hash=sha256:3d857f55e7fdf7c38ab96c4558c95b97d1c685be6b05c249f5fdafcbd6f9899e \ + --hash=sha256:3de19cfecd1465d0dcf8a5b5ea8b3155b42ed0b639dba4b71e323d74f2a3be5e \ + --hash=sha256:40483b2f2d3ba7aad426443767ff5632ec3156ef09742b96913787d13c336471 \ + --hash=sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c \ + --hash=sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344 \ + --hash=sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c \ + --hash=sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344 \ + --hash=sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e \ + --hash=sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475 \ + --hash=sha256:65167da969cd1ec3a1df31cb221ca3a19a8aaa25370ecb17d428415e93c1935e \ + --hash=sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98 \ + --hash=sha256:6bbaebf0d11567fa8926215ae731e1d58e6ec28a8a25235b8a47405d301332db \ + --hash=sha256:6c05483c3136ac4c91b4e81903cb53a8707d316f488124d0398499a4f8e8ef51 \ + --hash=sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa \ + --hash=sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934 \ + --hash=sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6 \ + --hash=sha256:77f0d13fa87036d7553bf81f0e1fe3ce68d14c9976c9851744e4d3e91127e95f \ + --hash=sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3 \ + --hash=sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a \ + --hash=sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d \ + --hash=sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c \ + --hash=sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95 \ + --hash=sha256:9a818668b674047fd88c4cddada7ab8f1c298812783e8328e956b78dc4807f9f \ + --hash=sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea \ + --hash=sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d \ + --hash=sha256:b1f5b45829ac1848893f0ddf5cb326110604d6df96cdc255b0bf9edd154104d4 \ + --hash=sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4 \ + --hash=sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681 \ + --hash=sha256:bb50ce5fb202a26fd5404620e7ef820ad1ab3558b444cb0b55beb7ef66cd2d63 \ + --hash=sha256:c95eb6db2884917d86cde0b4d4cf31adf485c8ec36bf8696dd66fa70de96f36b \ + --hash=sha256:d0ffd9e2e4441c96a9c91ec1783285d80bf835b677853fc2770a89d50c1e48ac \ + --hash=sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6 \ + --hash=sha256:d9e6a7664ddd9746e20b7325351fe1a8408d0a2bf9c63b5e898290ddc8f09544 \ + --hash=sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63 \ + --hash=sha256:e0434aa22c821f44eeb4c650b81c7fbdd8c0122c6c4b5a576a76d5a35625ecd9 \ + --hash=sha256:e493962256a38f58283de033d8af176c5c91c084ea30f15834f7545451c42059 \ + --hash=sha256:ecb0019d44f4cdb50b676c5d0cb4b1eae8e15d1ed3d3e6639f986fc92b2ec52c \ + --hash=sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2 + # via + # cell-browser + # cmasher + # colorspacious + # contourpy + # datasets + # h5py + # ipympl + # keras + # matplotlib + # ml-dtypes + # numcodecs + # pandas + # scipy + # tensorboard + # tensorflow + # tifffile + # zarr +opt-einsum==3.4.0 \ + --hash=sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd \ + --hash=sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac + # via tensorflow +optree==0.18.0 \ + --hash=sha256:02d9999840fabef85a6b22e757f336d5591f712f99c710d8b232d52e53115314 \ + --hash=sha256:057b983a9526645133553184bed7090bb07855df986abd9e99c456922045c6bc \ + --hash=sha256:07c5f64783ad0f0f80e61c25f276ce79b47deda83ed7956a4a9af6385fe8f60d \ + --hash=sha256:0959bac58631e64e2ac6349cc284b37872c24f353b3d73b4682202a431f07d76 \ + --hash=sha256:0d25941de1acba176305dbdeb931dea6143b30d64ebdc5bfea2bfc12ef9e2b0a \ + --hash=sha256:1b75e083137f361377ff8d70df885ab3a1cf8980e4019e3f311237579adadb64 \ + --hash=sha256:1db0a6497203a13063a8f044ae751dd5d8253cb815359270c38de0e4c9f8bed5 \ + --hash=sha256:1f674e34202383f8b42fa9335f13bedfb6b6f019c66e1f41034929e4be203423 \ + --hash=sha256:20536964ba2458f166c1e8ab25951e3fc0a5056b651bd08f16be99bb3ffed54a \ + --hash=sha256:27611c6c122745a003b5be7aedba49ef86e9fef46d743c234596de0bde6dc679 \ + --hash=sha256:27b1d0cadcf4627c98abbbdce912dbc2243f5687f3c7df39963b793c89321c65 \ + --hash=sha256:289b184cc41dfc400a30db6207ec997884d14540aae2cba10cb88dc7ebaae2a1 \ + --hash=sha256:2b5cfb5fc643f16d3a7d957807e55a937dce07566c49ccc4aa71b01064c56758 \ + --hash=sha256:3014537ff7e4e091ee46e57976f7d95c52f66a0e3eb5ebcbe0de0d924504b58e \ + --hash=sha256:30a2636279bdc805c8e154a0f346bcf704626b831ff44724d305fb72c90b7389 \ + --hash=sha256:328857d7a35129904b21164f6b0c2ff1d728ad1f5838589c5f437a16c94213c8 \ + --hash=sha256:3804fb6ddc923855db2dc4805b4524c66e00f1ef30b166be4aadd52822b13e06 \ + --hash=sha256:385bd727cc7bd3c01bd6204028ac2adce8a8f622c296053d9df434aa0e30b01f \ + --hash=sha256:446c46c53cb8f13abcc0d7dd1989d59bb059953c122fe9901ef53de7fb38b33e \ + --hash=sha256:4eb146711d4cd0876bf93e0118d3e74050b6f633d756c269ce7cda907281b499 \ + --hash=sha256:51e2cd9ac7fecfd5f6f56ce69f4f805553c226a2744810175959eb408101513c \ + --hash=sha256:571b732229d7b2e7a2215f57586f8ec0140e07c0faea916e456cbbfa819e56cb \ + --hash=sha256:5b126c34b459ef4f10f3a4d7d222416d9102b3c5a76b39f346c611792f144821 \ + --hash=sha256:5b75e32c191e4b8cf42a8aa854ed264df82936136c0bcad77be44605da41cdfc \ + --hash=sha256:5bc1221068a58175e0ad62afc199893f77c653206673a5552992a604c66fb77e \ + --hash=sha256:5e669f98b9af9f66144c7ae09912d0367ac3182abe016f67cdd15cb45e13c923 \ + --hash=sha256:6fc9f8acde3bb561b2034e96079507fbe6d4624058fe204161eb8ef29f961296 \ + --hash=sha256:7172b16e87c87160475275e4bfaa6e4067ccde184d2cca65ba25a402a8ed7758 \ + --hash=sha256:71ca2fcad8972ba56d6cfffbcd962f45f5d4bc04182f23d66154b38c2eb37de3 \ + --hash=sha256:79bbe14d6cad81f5840958589daa1b836864ada40031712a446dce8129917efd \ + --hash=sha256:7ae6945f68771b1389ee46a1778e779f4ad76bca9306f3e39eb397f9a0dd2753 \ + --hash=sha256:80d971060c888c3989132b7e75dfb50848636d41bc931af1b93fe2019fba469c \ + --hash=sha256:81e755124b77e766166c9d05206b90c68f234f425ad2e3c8a6c96f0db548c67b \ + --hash=sha256:895f23a4cd8aee2c2464efdad2d9bde28a2aaabee634c96423a933f40e74a67e \ + --hash=sha256:89d5156f8a0a3792701e1c31473eb307f0b45696f48dc51d721f1bfe0c3a950f \ + --hash=sha256:89e81afb11792d13d3777b503c6f21ec17b1a3b7de69cde1ae2c5471bcdcd4a0 \ + --hash=sha256:8a2003fab79694e04b5f260628511e441c248b46a9fc46138e2424038ac04ada \ + --hash=sha256:8a4ca121b6fc6b04300fa225fe6c31897e424db0d92691875af326f8c4e1cead \ + --hash=sha256:8b9ad4a01a1346b11acc574b7f932dea1a7c7ab31d93546a7540a1f02b3e724a \ + --hash=sha256:8d88c00c70b5914904feaf8f505f3512c2f3f4493dbbd93951fcdddc85dcfe8c \ + --hash=sha256:9104fc8915890e7292e5833fc677e4749607c67aa3cf8884677267078201c2f3 \ + --hash=sha256:9460cba62e941626beb75c99a803373b38a52136d5f1932fcdfdcede1df6f2ef \ + --hash=sha256:94983b3aa31ee401d2ac77ba570a3157d83f9508cfbb006095a48770e0a1c5ca \ + --hash=sha256:9d4b9d8c7e9335120ecf222d817699d17de743ad118080fb40467c367f009143 \ + --hash=sha256:a479fa25b6e2430e530d00f0c27a55e15ecb9de8ad2d0aec3d40b680e2d6df64 \ + --hash=sha256:a5c213a291c798139ed9ff80aec4bfcd2ac8f001bc015a9cdeb78457e9687dd3 \ + --hash=sha256:a63df296fec376c5cd08298a85109db4a130f4cc8df15916fc92d44ef6068937 \ + --hash=sha256:a74c45f04def041504bd21682eaf7f359f1a50dc7cf42b548b6f19aab50596bd \ + --hash=sha256:b4da3223c5b4cf694822752d0fbb6bf34c3f41648af1bd1b443cc3d68cc55106 \ + --hash=sha256:b8adc912ecb6e4fd9df227ded66efaa6702f46a98e1403554be3c9c51d0ca920 \ + --hash=sha256:c017539e1196ea08f20aea3a4c473f758149b851678edd3d15773b4326decf83 \ + --hash=sha256:c1f20e8754abe312a701ee00d071ddd8502e9d97ca38fbc56204d14a9ffcb41c \ + --hash=sha256:c8841d44f3648b0662e99fc39ef8c248726ddfb4d1bfce4bdba982e51bb7e3f8 \ + --hash=sha256:cbb083a15ea968ad99e7da17d24632348d69e26534e83c69941f3020ed7536eb \ + --hash=sha256:cde70c97e4cc4e997e8fda2266e40a9bff7679c72ab4af6e15e81748a12882cc \ + --hash=sha256:cfa2e16993ba47e671a4e7ee1ad805f67b8d6744eb30a9d27ea0b07b3b7a22ed \ + --hash=sha256:d2844478690b5892159df0b2500e9d146dc8d3aa5b44e4564d05787b7330eca3 \ + --hash=sha256:d569730b2647c51a5ee68d67198aa9a78c7a55563d57b8cc1ca8d8c8377e7621 \ + --hash=sha256:db00c604c1ae452f6092293bf230984d4f6cbb3ad905a9991e8cf680fd7d1523 \ + --hash=sha256:e28024e6e343353285cf99ae9c74210f0e89e47b2f0f3af7c72c4a9e89dc3ebc \ + --hash=sha256:e4a468ae1541614b5aa7b4f00254bce005ab7572fbb1fc764af4ee17d90fde7b \ + --hash=sha256:f02faeda66d531dc5f5356589afcf2a6bc41c8d00bc903efab60f9a2182b140d \ + --hash=sha256:f5197f864630162f008f5dfad3fceef32553c0fa7639eee1b8e280d924ed678e \ + --hash=sha256:fa8e3878a1857761d64f08a23b32140d29754a53f85f7c87186ced2b5b1b49cb + # via keras +packaging==25.0 \ + --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ + --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f + # via + # datasets + # huggingface-hub + # ipykernel + # jupyter-events + # jupyter-server + # jupyterlab + # jupyterlab-server + # keras + # matplotlib + # nbconvert + # tensorboard + # tensorflow +pandas==2.3.3 \ + --hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \ + --hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \ + --hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \ + --hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \ + --hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \ + --hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \ + --hash=sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084 \ + --hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \ + --hash=sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35 \ + --hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \ + --hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \ + --hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \ + --hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \ + --hash=sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53 \ + --hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \ + --hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \ + --hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \ + --hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \ + --hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \ + --hash=sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b \ + --hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \ + --hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \ + --hash=sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98 \ + --hash=sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89 \ + --hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \ + --hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \ + --hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \ + --hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \ + --hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \ + --hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \ + --hash=sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908 \ + --hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \ + --hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \ + --hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee + # via datasets +pandocfilters==1.5.1 \ + --hash=sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e \ + --hash=sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc + # via nbconvert +parso==0.8.5 \ + --hash=sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a \ + --hash=sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887 + # via jedi +pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' \ + --hash=sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523 \ + --hash=sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f + # via ipython +pillow==12.1.0 \ + --hash=sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d \ + --hash=sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc \ + --hash=sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de \ + --hash=sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0 \ + --hash=sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef \ + --hash=sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4 \ + --hash=sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82 \ + --hash=sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9 \ + --hash=sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030 \ + --hash=sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b \ + --hash=sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6 \ + --hash=sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179 \ + --hash=sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e \ + --hash=sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd \ + --hash=sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924 \ + --hash=sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616 \ + --hash=sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a \ + --hash=sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94 \ + --hash=sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8 \ + --hash=sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9 \ + --hash=sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91 \ + --hash=sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c \ + --hash=sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670 \ + --hash=sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea \ + --hash=sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c \ + --hash=sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc \ + --hash=sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0 \ + --hash=sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b \ + --hash=sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65 \ + --hash=sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661 \ + --hash=sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1 \ + --hash=sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0 \ + --hash=sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4 \ + --hash=sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8 \ + --hash=sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61 \ + --hash=sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51 \ + --hash=sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551 \ + --hash=sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45 \ + --hash=sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644 \ + --hash=sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796 \ + --hash=sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587 \ + --hash=sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b \ + --hash=sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17 \ + --hash=sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171 \ + --hash=sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7 \ + --hash=sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988 \ + --hash=sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a \ + --hash=sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2 \ + --hash=sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14 \ + --hash=sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5 \ + --hash=sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a \ + --hash=sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5 \ + --hash=sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d \ + --hash=sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac \ + --hash=sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c \ + --hash=sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554 \ + --hash=sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643 \ + --hash=sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13 \ + --hash=sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208 \ + --hash=sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e \ + --hash=sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0 \ + --hash=sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831 + # via + # cell-browser + # ipympl + # matplotlib + # tensorboard +platformdirs==4.5.1 \ + --hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \ + --hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31 + # via jupyter-core +prometheus-client==0.23.1 \ + --hash=sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce \ + --hash=sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99 + # via jupyter-server +prompt-toolkit==3.0.52 \ + --hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \ + --hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 + # via ipython +propcache==0.4.1 \ + --hash=sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4 \ + --hash=sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be \ + --hash=sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3 \ + --hash=sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85 \ + --hash=sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b \ + --hash=sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367 \ + --hash=sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf \ + --hash=sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393 \ + --hash=sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1 \ + --hash=sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717 \ + --hash=sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe \ + --hash=sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75 \ + --hash=sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e \ + --hash=sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12 \ + --hash=sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367 \ + --hash=sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874 \ + --hash=sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf \ + --hash=sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566 \ + --hash=sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a \ + --hash=sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a \ + --hash=sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1 \ + --hash=sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6 \ + --hash=sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61 \ + --hash=sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726 \ + --hash=sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49 \ + --hash=sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44 \ + --hash=sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af \ + --hash=sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa \ + --hash=sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153 \ + --hash=sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc \ + --hash=sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8 \ + --hash=sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c \ + --hash=sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0 \ + --hash=sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1 \ + --hash=sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992 \ + --hash=sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f \ + --hash=sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d \ + --hash=sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1 \ + --hash=sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e \ + --hash=sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89 \ + --hash=sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a \ + --hash=sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b \ + --hash=sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1 \ + --hash=sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66 \ + --hash=sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded \ + --hash=sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0 \ + --hash=sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778 \ + --hash=sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455 \ + --hash=sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f \ + --hash=sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b \ + --hash=sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237 \ + --hash=sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81 \ + --hash=sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859 \ + --hash=sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c \ + --hash=sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835 \ + --hash=sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393 \ + --hash=sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641 \ + --hash=sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144 \ + --hash=sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74 \ + --hash=sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db \ + --hash=sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403 \ + --hash=sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9 \ + --hash=sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f \ + --hash=sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311 \ + --hash=sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36 \ + --hash=sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f \ + --hash=sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2 \ + --hash=sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7 \ + --hash=sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72 \ + --hash=sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9 \ + --hash=sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4 \ + --hash=sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24 \ + --hash=sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207 \ + --hash=sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d \ + --hash=sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37 \ + --hash=sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e \ + --hash=sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af + # via + # aiohttp + # yarl +protobuf==6.33.2 \ + --hash=sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f \ + --hash=sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4 \ + --hash=sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c \ + --hash=sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d \ + --hash=sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872 \ + --hash=sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e \ + --hash=sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43 \ + --hash=sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4 + # via + # tensorboard + # tensorflow +psutil==7.2.1 \ + --hash=sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1 \ + --hash=sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266 \ + --hash=sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442 \ + --hash=sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79 \ + --hash=sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf \ + --hash=sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f \ + --hash=sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679 \ + --hash=sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8 \ + --hash=sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49 \ + --hash=sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f \ + --hash=sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129 \ + --hash=sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67 \ + --hash=sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6 \ + --hash=sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17 \ + --hash=sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42 \ + --hash=sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d \ + --hash=sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672 \ + --hash=sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a \ + --hash=sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc \ + --hash=sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3 \ + --hash=sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8 + # via ipykernel +psygnal==0.15.1 \ + --hash=sha256:07b4c4e03bbf4e8cad7e25f4fbc1ba9575fb9c3d14991bc7edfeb8b09c8d6d54 \ + --hash=sha256:0c85b7d05b92ccbec47c75ab8a5545eda462e81a492c82424aba5ab81a3ad89d \ + --hash=sha256:0f3bf68ca42569dfdce20c6cf915d34b78b9e3ddddacb9f78728224fda6946b4 \ + --hash=sha256:0febcf757a1323d9b8bd75735ee3569213d8110012a7bf0f478e85c5ab459fc6 \ + --hash=sha256:1ac399566852fe4354ce26a1acbe12319232e8c2b615fe5ad1e114c547095cf6 \ + --hash=sha256:2087aadc9404f007f79c2899e329932869e362c50de58b90631c5f49b4768cc5 \ + --hash=sha256:4221140e633e45b076953c64bcb9b41a744833527f9a037c1ca98bc270798cbf \ + --hash=sha256:4f0ce91b9c18e92281bf2c3fc4bb4e808d90f0b023d0a37b302d354188520338 \ + --hash=sha256:4f53b4b83355b0a785b745987fd04e59bbf169a9028ed81a68ca7e05fb76d458 \ + --hash=sha256:803fc33c4280c822c6f4b22e6c3ea7c4483e190f3cc69e69350098b3799476f3 \ + --hash=sha256:8d56f0f35eaf4a21f660de76885222faf9e8c7112454528d3394d464f3d4d1a3 \ + --hash=sha256:ac0e693b29e0a429e97315a52313321855bef6140e9975b7ae78b4d93c8fbb42 \ + --hash=sha256:b5e4837dfbfa4974dabe0795e32be9aadcd87603adf734738ce1114f72238a05 \ + --hash=sha256:bcbca12190f5aa65c1f8fb04a81fa6f4463c5f5dde25cd74c3a56ceff6f37b02 \ + --hash=sha256:d3a03055f331ce91d44581c71edb79938ccc133a94af2ce7ad3a18fa57ac7be5 \ + --hash=sha256:e9fca977f5335deea39aed22e31d9795983e4f243e59a7d3c4105793adb7693d \ + --hash=sha256:f64f62dee2306fc1c22050a59b6c6cdad126e04b0cf50e393ff858a1da719096 + # via anywidget +ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32') \ + --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ + --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 + # via + # pexpect + # terminado +pure-eval==0.2.3 \ + --hash=sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 \ + --hash=sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42 + # via stack-data +pyarrow==22.0.0 \ + --hash=sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901 \ + --hash=sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae \ + --hash=sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8 \ + --hash=sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941 \ + --hash=sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5 \ + --hash=sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9 \ + --hash=sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754 \ + --hash=sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d \ + --hash=sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80 \ + --hash=sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde \ + --hash=sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f \ + --hash=sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91 \ + --hash=sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2 \ + --hash=sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc \ + --hash=sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0 \ + --hash=sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7 \ + --hash=sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d \ + --hash=sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145 \ + --hash=sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746 \ + --hash=sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9 \ + --hash=sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730 \ + --hash=sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f \ + --hash=sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc \ + --hash=sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d \ + --hash=sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d \ + --hash=sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e \ + --hash=sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe \ + --hash=sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70 \ + --hash=sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691 \ + --hash=sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6 \ + --hash=sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a \ + --hash=sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a \ + --hash=sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9 \ + --hash=sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95 \ + --hash=sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c \ + --hash=sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1 + # via datasets +pycparser==2.23 ; implementation_name != 'PyPy' \ + --hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \ + --hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 + # via cffi +pygments==2.19.2 \ + --hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \ + --hash=sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b + # via + # ipython + # ipython-pygments-lexers + # nbconvert + # rich +pyparsing==3.3.1 \ + --hash=sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82 \ + --hash=sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c + # via matplotlib +python-dateutil==2.9.0.post0 \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + # via + # arrow + # jupyter-client + # matplotlib + # pandas +python-json-logger==4.0.0 \ + --hash=sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2 \ + --hash=sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f + # via jupyter-events +pytz==2025.2 \ + --hash=sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3 \ + --hash=sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00 + # via pandas +pywinpty==3.0.2 ; os_name == 'nt' \ + --hash=sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004 \ + --hash=sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51 \ + --hash=sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a \ + --hash=sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767 \ + --hash=sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b \ + --hash=sha256:99fdd9b455f0ad6419aba6731a7a0d2f88ced83c3c94a80ff9533d95fa8d8a9e + # via + # jupyter-server + # jupyter-server-terminals + # terminado +pyyaml==6.0.3 \ + --hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \ + --hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \ + --hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \ + --hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \ + --hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \ + --hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \ + --hash=sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea \ + --hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \ + --hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \ + --hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \ + --hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \ + --hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \ + --hash=sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b \ + --hash=sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c \ + --hash=sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd \ + --hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \ + --hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \ + --hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \ + --hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \ + --hash=sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 \ + --hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \ + --hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \ + --hash=sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e \ + --hash=sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28 \ + --hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \ + --hash=sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5 \ + --hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \ + --hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \ + --hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \ + --hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc \ + --hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \ + --hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \ + --hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \ + --hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \ + --hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \ + --hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \ + --hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \ + --hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \ + --hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0 + # via + # datasets + # huggingface-hub + # jupyter-events +pyzmq==27.1.0 \ + --hash=sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d \ + --hash=sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05 \ + --hash=sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28 \ + --hash=sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea \ + --hash=sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0 \ + --hash=sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113 \ + --hash=sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92 \ + --hash=sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd \ + --hash=sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233 \ + --hash=sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31 \ + --hash=sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc \ + --hash=sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd \ + --hash=sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e \ + --hash=sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128 \ + --hash=sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96 \ + --hash=sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f \ + --hash=sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c \ + --hash=sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2 \ + --hash=sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146 \ + --hash=sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97 \ + --hash=sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5 \ + --hash=sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf \ + --hash=sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540 \ + --hash=sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db \ + --hash=sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39 \ + --hash=sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a \ + --hash=sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a \ + --hash=sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856 \ + --hash=sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9 \ + --hash=sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7 \ + --hash=sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7 \ + --hash=sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496 \ + --hash=sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6 + # via + # ipykernel + # jupyter-client + # jupyter-server +referencing==0.37.0 \ + --hash=sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231 \ + --hash=sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events +requests==2.32.5 \ + --hash=sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6 \ + --hash=sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf + # via + # datasets + # jupyterlab-server + # tensorflow +rfc3339-validator==0.1.4 \ + --hash=sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b \ + --hash=sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa + # via + # jsonschema + # jupyter-events +rfc3986-validator==0.1.1 \ + --hash=sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 \ + --hash=sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055 + # via + # jsonschema + # jupyter-events +rfc3987-syntax==1.1.0 \ + --hash=sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f \ + --hash=sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d + # via jsonschema +rich==14.2.0 \ + --hash=sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4 \ + --hash=sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd + # via keras +rpds-py==0.30.0 \ + --hash=sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136 \ + --hash=sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7 \ + --hash=sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65 \ + --hash=sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf \ + --hash=sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2 \ + --hash=sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4 \ + --hash=sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3 \ + --hash=sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6 \ + --hash=sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa \ + --hash=sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6 \ + --hash=sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87 \ + --hash=sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856 \ + --hash=sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f \ + --hash=sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53 \ + --hash=sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad \ + --hash=sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23 \ + --hash=sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db \ + --hash=sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27 \ + --hash=sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18 \ + --hash=sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083 \ + --hash=sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898 \ + --hash=sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e \ + --hash=sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7 \ + --hash=sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08 \ + --hash=sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6 \ + --hash=sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551 \ + --hash=sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e \ + --hash=sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0 \ + --hash=sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2 \ + --hash=sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05 \ + --hash=sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0 \ + --hash=sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5 \ + --hash=sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404 \ + --hash=sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7 \ + --hash=sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394 \ + --hash=sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb \ + --hash=sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15 \ + --hash=sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6 \ + --hash=sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e \ + --hash=sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95 \ + --hash=sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950 \ + --hash=sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e \ + --hash=sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e \ + --hash=sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b \ + --hash=sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd \ + --hash=sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad \ + --hash=sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8 \ + --hash=sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d \ + --hash=sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51 \ + --hash=sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f \ + --hash=sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8 \ + --hash=sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f \ + --hash=sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d \ + --hash=sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07 \ + --hash=sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31 \ + --hash=sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94 \ + --hash=sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28 \ + --hash=sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000 \ + --hash=sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1 \ + --hash=sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1 \ + --hash=sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40 \ + --hash=sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0 \ + --hash=sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84 \ + --hash=sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419 \ + --hash=sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8 \ + --hash=sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a \ + --hash=sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9 \ + --hash=sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be \ + --hash=sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed \ + --hash=sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d \ + --hash=sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f \ + --hash=sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2 \ + --hash=sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f \ + --hash=sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5 + # via + # jsonschema + # referencing +scipy==1.16.3 \ + --hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \ + --hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \ + --hash=sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203 \ + --hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \ + --hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \ + --hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \ + --hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \ + --hash=sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe \ + --hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \ + --hash=sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9 \ + --hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \ + --hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \ + --hash=sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686 \ + --hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \ + --hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \ + --hash=sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc \ + --hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \ + --hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \ + --hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \ + --hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \ + --hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \ + --hash=sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1 \ + --hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \ + --hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \ + --hash=sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6 \ + --hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \ + --hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \ + --hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \ + --hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \ + --hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \ + --hash=sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2 \ + --hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \ + --hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \ + --hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \ + --hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \ + --hash=sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70 \ + --hash=sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07 \ + --hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \ + --hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \ + --hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \ + --hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \ + --hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \ + --hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \ + --hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \ + --hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \ + --hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \ + --hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \ + --hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \ + --hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \ + --hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \ + --hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d + # via cell-browser +send2trash==2.0.0 \ + --hash=sha256:1761421da3f9930bfe51ed7c45343948573383ad4c27e3acebc91be324e7770d \ + --hash=sha256:e70d5ce41dbb890882cc78bc25d137478330b39a391e756fadf82e34da4d85b8 + # via jupyter-server +setuptools==80.9.0 \ + --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ + --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c + # via + # jupyterlab + # tensorboard + # tensorflow +shellingham==1.5.4 \ + --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ + --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de + # via huggingface-hub +six==1.17.0 \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 + # via + # astunparse + # google-pasta + # python-dateutil + # rfc3339-validator + # tensorflow +soupsieve==2.8.1 \ + --hash=sha256:4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350 \ + --hash=sha256:a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434 + # via beautifulsoup4 +stack-data==0.6.3 \ + --hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \ + --hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695 + # via ipython +tensorboard==2.20.0 \ + --hash=sha256:9dc9f978cb84c0723acf9a345d96c184f0293d18f166bb8d59ee098e6cfaaba6 + # via tensorflow +tensorboard-data-server==0.7.2 \ + --hash=sha256:7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb \ + --hash=sha256:9fe5d24221b29625dbc7328b0436ca7fc1c23de4acf4d272f1180856e32f9f60 \ + --hash=sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530 + # via tensorboard +tensorflow==2.20.0 \ + --hash=sha256:1590cbf87b6bcbd34d8e9ad70d0c696135e0aa71be31803b27358cf7ed63f8fc \ + --hash=sha256:197f0b613b38c0da5c6a12a8295ad4a05c78b853835dae8e0f9dfae3ce9ce8a5 \ + --hash=sha256:25265b0bc527e0d54b1e9cc60c44a24f44a809fe27666b905f0466471f9c52ec \ + --hash=sha256:2bfbfb3dd0e22bffc45fe1e922390d27753e99261fab8a882e802cf98a0e078f \ + --hash=sha256:47c88e05a07f1ead4977b4894b3ecd4d8075c40191065afc4fd9355c9db3d926 \ + --hash=sha256:52b122f0232fd7ab10f28d537ce08470d0b6dcac7fff9685432daac7f8a06c8f \ + --hash=sha256:5fa3729b0126f75a99882b89fb7d536515721eda8014a63e259e780ba0a37372 \ + --hash=sha256:c25edad45e8cb9e76366f7a8c835279f9169028d610f3b52ce92d332a1b05438 + # via cell-browser +termcolor==3.3.0 \ + --hash=sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5 \ + --hash=sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5 + # via tensorflow +terminado==0.18.1 \ + --hash=sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0 \ + --hash=sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e + # via + # jupyter-server + # jupyter-server-terminals +tifffile==2025.12.20 \ + --hash=sha256:bc0345a20675149353cfcb3f1c48d0a3654231ee26bd46beebaab4d2168feeb6 \ + --hash=sha256:cb8a4fee327d15b3e3eeac80bbdd8a53b323c80473330bcfb99418ee4c1c827f + # via cell-browser +tinycss2==1.4.0 \ + --hash=sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7 \ + --hash=sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289 + # via bleach +tornado==6.5.4 \ + --hash=sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1 \ + --hash=sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1 \ + --hash=sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843 \ + --hash=sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335 \ + --hash=sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8 \ + --hash=sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f \ + --hash=sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84 \ + --hash=sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7 \ + --hash=sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17 \ + --hash=sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9 \ + --hash=sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f \ + --hash=sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # terminado +tqdm==4.67.1 \ + --hash=sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2 \ + --hash=sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2 + # via + # cell-browser + # datasets + # huggingface-hub +traitlets==5.14.3 \ + --hash=sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7 \ + --hash=sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f + # via + # ipykernel + # ipympl + # ipython + # ipywidgets + # jupyter-client + # jupyter-core + # jupyter-events + # jupyter-server + # jupyterlab + # matplotlib-inline + # nbclient + # nbconvert + # nbformat +typer-slim==0.21.1 \ + --hash=sha256:6e6c31047f171ac93cc5a973c9e617dbc5ab2bddc4d0a3135dc161b4e2020e0d \ + --hash=sha256:73495dd08c2d0940d611c5a8c04e91c2a0a98600cbd4ee19192255a233b6dbfd + # via huggingface-hub +typing-extensions==4.15.0 \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via + # aiosignal + # anyio + # anywidget + # beautifulsoup4 + # grpcio + # huggingface-hub + # optree + # referencing + # tensorflow + # typer-slim +tzdata==2025.3 \ + --hash=sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1 \ + --hash=sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7 + # via + # arrow + # pandas +uri-template==1.3.0 \ + --hash=sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7 \ + --hash=sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363 + # via jsonschema +urllib3==2.6.3 \ + --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \ + --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4 + # via requests +vizarr==0.1.1 \ + --hash=sha256:a3d2ed7d681eeb93575c535359bef96e74a29d00b59ae2aba89d3960d955203d \ + --hash=sha256:aa5812be5fa8b5f0b07ea9a1ecd5f2faca979c87537a9fe717e3cf6d061a2f43 \ + --hash=sha256:b1e5f6a7e0e7c14b2574b2f5c989132062c5bc5eedef276c2721850912496d16 + # via cell-browser +wcwidth==0.2.14 \ + --hash=sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605 \ + --hash=sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1 + # via prompt-toolkit +webcolors==25.10.0 \ + --hash=sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d \ + --hash=sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf + # via jsonschema +webencodings==0.5.1 \ + --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ + --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 + # via + # bleach + # tinycss2 +websocket-client==1.9.0 \ + --hash=sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98 \ + --hash=sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef + # via jupyter-server +werkzeug==3.1.4 \ + --hash=sha256:2ad50fb9ed09cc3af22c54698351027ace879a0b60a3b5edf5730b2f7d876905 \ + --hash=sha256:cd3cd98b1b92dc3b7b3995038826c68097dcb16f9baa63abe35f20eafeb9fe5e + # via tensorboard +wheel==0.45.1 \ + --hash=sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729 \ + --hash=sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248 + # via astunparse +widgetsnbextension==4.0.15 \ + --hash=sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366 \ + --hash=sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9 + # via ipywidgets +wrapt==2.0.1 \ + --hash=sha256:17fb85fa4abc26a5184d93b3efd2dcc14deb4b09edcdb3535a536ad34f0b4dba \ + --hash=sha256:1fdbb34da15450f2b1d735a0e969c24bdb8d8924892380126e2a293d9902078c \ + --hash=sha256:2879af909312d0baf35f08edeea918ee3af7ab57c37fe47cb6a373c9f2749c7b \ + --hash=sha256:2afa23318136709c4b23d87d543b425c399887b4057936cd20386d5b1422b6fa \ + --hash=sha256:2da620b31a90cdefa9cd0c2b661882329e2e19d1d7b9b920189956b76c564d75 \ + --hash=sha256:35cdbd478607036fee40273be8ed54a451f5f23121bd9d4be515158f9498f7ad \ + --hash=sha256:3793ac154afb0e5b45d1233cb94d354ef7a983708cc3bb12563853b1d8d53747 \ + --hash=sha256:386fb54d9cd903ee0012c09291336469eb7b244f7183d40dc3e86a16a4bace62 \ + --hash=sha256:3cd1a4bd9a7a619922a8557e1318232e7269b5fb69d4ba97b04d20450a6bf970 \ + --hash=sha256:3d32794fe940b7000f0519904e247f902f0149edbe6316c710a8562fb6738841 \ + --hash=sha256:3d366aa598d69416b5afedf1faa539fac40c1d80a42f6b236c88c73a3c8f2d41 \ + --hash=sha256:3e271346f01e9c8b1130a6a3b0e11908049fe5be2d365a5f402778049147e7e9 \ + --hash=sha256:47b0f8bafe90f7736151f61482c583c86b0693d80f075a58701dd1549b0010a9 \ + --hash=sha256:4811e15d88ee62dbf5c77f2c3ff3932b1e3ac92323ba3912f51fc4016ce81ecf \ + --hash=sha256:4ae879acc449caa9ed43fc36ba08392b9412ee67941748d31d94e3cedb36628c \ + --hash=sha256:4b55cacc57e1dc2d0991dbe74c6419ffd415fb66474a02335cb10efd1aa3f84f \ + --hash=sha256:4d2ce1bf1a48c5277d7969259232b57645aae5686dba1eaeade39442277afbca \ + --hash=sha256:4e54bbf554ee29fcceee24fa41c4d091398b911da6e7f5d7bffda963c9aed2e1 \ + --hash=sha256:5a4939eae35db6b6cec8e7aa0e833dcca0acad8231672c26c2a9ab7a0f8ac9c8 \ + --hash=sha256:5e53b428f65ece6d9dad23cb87e64506392b720a0b45076c05354d27a13351a1 \ + --hash=sha256:61c4956171c7434634401db448371277d07032a81cc21c599c22953374781395 \ + --hash=sha256:641e94e789b5f6b4822bb8d8ebbdfc10f4e4eae7756d648b717d980f657a9eb9 \ + --hash=sha256:6c72328f668cf4c503ffcf9434c2b71fdd624345ced7941bc6693e61bbe36bef \ + --hash=sha256:6d2d947d266d99a1477cd005b23cbd09465276e302515e122df56bb9511aca1b \ + --hash=sha256:7164a55f5e83a9a0b031d3ffab4d4e36bbec42e7025db560f225489fa929e509 \ + --hash=sha256:7b219cb2182f230676308cdcacd428fa837987b89e4b7c5c9025088b8a6c9faf \ + --hash=sha256:7d539241e87b650cbc4c3ac9f32c8d1ac8a54e510f6dca3f6ab60dcfd48c9b10 \ + --hash=sha256:83ce30937f0ba0d28818807b303a412440c4b63e39d3d8fc036a94764b728c92 \ + --hash=sha256:8639b843c9efd84675f1e100ed9e99538ebea7297b62c4b45a7042edb84db03e \ + --hash=sha256:908f8c6c71557f4deaa280f55d0728c3bca0960e8c3dd5ceeeafb3c19942719d \ + --hash=sha256:9219a1d946a9b32bb23ccae66bdb61e35c62773ce7ca6509ceea70f344656b7b \ + --hash=sha256:949520bccc1fa227274da7d03bf238be15389cd94e32e4297b92337df9b7a349 \ + --hash=sha256:98d873ed6c8b4ee2418f7afce666751854d6d03e3c0ec2a399bb039cd2ae89db \ + --hash=sha256:9c9c635e78497cacb81e84f8b11b23e0aacac7a136e73b8e5b2109a1d9fc468f \ + --hash=sha256:9ca66b38dd642bf90c59b6738af8070747b610115a39af2498535f62b5cdc1c3 \ + --hash=sha256:a453257f19c31b31ba593c30d997d6e5be39e3b5ad9148c2af5a7314061c63eb \ + --hash=sha256:a52f93d95c8d38fed0669da2ebdb0b0376e895d84596a976c15a9eb45e3eccb3 \ + --hash=sha256:ad3ee9d0f254851c71780966eb417ef8e72117155cff04821ab9b60549694a55 \ + --hash=sha256:aea9c7224c302bc8bfc892b908537f56c430802560e827b75ecbde81b604598b \ + --hash=sha256:b4c2e3d777e38e913b8ce3a6257af72fb608f86a1df471cb1d4339755d0a807c \ + --hash=sha256:b89ef9223d665ab255ae42cc282d27d69704d94be0deffc8b9d919179a609684 \ + --hash=sha256:be9e84e91d6497ba62594158d3d31ec0486c60055c49179edc51ee43d095f79c \ + --hash=sha256:bfb5539005259f8127ea9c885bdc231978c06b7a980e63a8a61c8c4c979719d0 \ + --hash=sha256:c1c91405fcf1d501fa5d55df21e58ea49e6b879ae829f1039faaf7e5e509b41e \ + --hash=sha256:c235095d6d090aa903f1db61f892fffb779c1eaeb2a50e566b52001f7a0f66ed \ + --hash=sha256:c5ef2f2b8a53b7caee2f797ef166a390fef73979b15778a4a153e4b5fedce8fa \ + --hash=sha256:c654eafb01afac55246053d67a4b9a984a3567c3808bb7df2f8de1c1caba2e1c \ + --hash=sha256:c8d60527d1ecfc131426b10d93ab5d53e08a09c5fa0175f6b21b3252080c70a9 \ + --hash=sha256:c9e850f5b7fc67af856ff054c71690d54fa940c3ef74209ad9f935b4f66a0233 \ + --hash=sha256:cbeb0971e13b4bd81d34169ed57a6dda017328d1a22b62fda45e1d21dd06148f \ + --hash=sha256:d67956c676be5a24102c7407a71f4126d30de2a569a1c7871c9f3cabc94225d7 \ + --hash=sha256:d7b822c61ed04ee6ad64bc90d13368ad6eb094db54883b5dde2182f67a7f22c0 \ + --hash=sha256:e042d653a4745be832d5aa190ff80ee4f02c34b21f4b785745eceacd0907b815 \ + --hash=sha256:e2f84e9af2060e3904a32cea9bb6db23ce3f91cfd90c6b426757cf7cc01c45c7 \ + --hash=sha256:e3612dc06b436968dfb9142c62e5dfa9eb5924f91120b3c8ff501ad878f90eb3 \ + --hash=sha256:e505629359cb5f751e16e30cf3f91a1d3ddb4552480c205947da415d597f7ac2 \ + --hash=sha256:e60690ba71a57424c8d9ff28f8d006b7ad7772c22a4af432188572cd7fa004a1 \ + --hash=sha256:e76e3f91f864e89db8b8d2a8311d57df93f01ad6bb1e9b9976d1f2e83e18315c \ + --hash=sha256:eb7cffe572ad0a141a7886a1d2efa5bef0bf7fe021deeea76b3ab334d2c38218 \ + --hash=sha256:fa4184e74197af3adad3c889a1af95b53bb0466bced92ea99a0c014e48323eec \ + --hash=sha256:fe21b118b9f58859b5ebaa4b130dee18669df4bd111daad082b7beb8799ad16b \ + --hash=sha256:fec0d993ecba3991645b4857837277469c8cc4c554a7e24d064d1ca291cfb81f + # via + # deprecated + # tensorflow +xxhash==3.6.0 \ + --hash=sha256:01262da8798422d0685f7cef03b2bd3f4f46511b02830861df548d7def4402ad \ + --hash=sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c \ + --hash=sha256:016e9190af8f0a4e3741343777710e3d5717427f175adfdc3e72508f59e2a7f3 \ + --hash=sha256:0226aa89035b62b6a86d3c68df4d7c1f47a342b8683da2b60cedcddb46c4d95b \ + --hash=sha256:0444e7967dac37569052d2409b00a8860c2135cff05502df4da80267d384849f \ + --hash=sha256:0e4edbfc7d420925b0dd5e792478ed393d6e75ff8fc219a6546fb446b6a417b1 \ + --hash=sha256:1244460adc3a9be84731d72b8e80625788e5815b68da3da8b83f78115a40a7ec \ + --hash=sha256:1cf9dcc4ab9cff01dfbba78544297a3a01dafd60f3bde4e2bfd016cf7e4ddc67 \ + --hash=sha256:2577b276e060b73b73a53042ea5bd5203d3e6347ce0d09f98500f418a9fcf799 \ + --hash=sha256:25915e6000338999236f1eb68a02a32c3275ac338628a7eaa5a269c401995679 \ + --hash=sha256:2aa5ee3444c25b69813663c9f8067dcfaa2e126dc55e8dddf40f4d1c25d7effa \ + --hash=sha256:39be8e4e142550ef69629c9cd71b88c90e9a5db703fecbcf265546d9536ca4ad \ + --hash=sha256:3cd01fa2aa00d8b017c97eb46b9a794fbdca53fc14f845f5a328c71254b0abb7 \ + --hash=sha256:3ed0df1b11a79856df5ffcab572cbd6b9627034c1c748c5566fa79df9048a7c5 \ + --hash=sha256:40c391dd3cd041ebc3ffe6f2c862f402e306eb571422e0aa918d8070ba31da11 \ + --hash=sha256:418daf3db71e1413cfe211c2f9a528456936645c17f46b5204705581a45390ae \ + --hash=sha256:42c36dd7dbad2f5238950c377fcbf6811b1cdb1c444fab447960030cea60504d \ + --hash=sha256:457b8f85dec5825eed7b69c11ae86834a018b8e3df5e77783c999663da2f96d6 \ + --hash=sha256:49e03e6fe2cac4a1bc64952dd250cf0dbc5ef4ebb7b8d96bce82e2de163c82a2 \ + --hash=sha256:4b54219177f6c6674d5378bd862c6aedf64725f70dd29c472eaae154df1a2e89 \ + --hash=sha256:4f6f72232f849eb9d0141e2ebe2677ece15adfd0fa599bc058aad83c714bb2c6 \ + --hash=sha256:50fc255f39428a27299c20e280d6193d8b63b8ef8028995323bf834a026b4fbb \ + --hash=sha256:51a73fb7cb3a3ead9f7a8b583ffd9b8038e277cdb8cb87cf890e88b3456afa0b \ + --hash=sha256:568a6d743219e717b07b4e03b0a828ce593833e498c3b64752e0f5df6bfe84db \ + --hash=sha256:5851f033c3030dd95c086b4a36a2683c2ff4a799b23af60977188b057e467119 \ + --hash=sha256:599e64ba7f67472481ceb6ee80fa3bd828fd61ba59fb11475572cc5ee52b89ec \ + --hash=sha256:5c1343d49ac102799905e115aee590183c3921d475356cb24b4de29a4bc56518 \ + --hash=sha256:5f059d9faeacd49c0215d66f4056e1326c80503f51a1532ca336a385edadd033 \ + --hash=sha256:6105ef7e62b5ac73a837778efc331a591d8442f8ef5c7e102376506cb4ae2729 \ + --hash=sha256:627f0af069b0ea56f312fd5189001c24578868643203bca1abbc2c52d3a6f3ca \ + --hash=sha256:63275a8aba7865e44b1813d2177e0f5ea7eadad3dd063a21f7cf9afdc7054063 \ + --hash=sha256:653a91d7c2ab54a92c19ccf43508b6a555440b9be1bc8be553376778be7f20b5 \ + --hash=sha256:6f2580ffab1a8b68ef2b901cde7e55fa8da5e4be0977c68f78fc80f3c143de42 \ + --hash=sha256:6fb5f5476bef678f69db04f2bd1efbed3030d2aba305b0fc1773645f187d6a4e \ + --hash=sha256:757320d45d2fbcce8f30c42a6b2f47862967aea7bf458b9625b4bbe7ee390392 \ + --hash=sha256:78e7f2f4c521c30ad5e786fdd6bae89d47a32672a80195467b5de0480aa97b1f \ + --hash=sha256:794fe9145fe60191c6532fa95063765529770edcdd67b3d537793e8004cabbfd \ + --hash=sha256:7d14a6cfaf03b1b6f5f9790f76880601ccc7896aff7ab9cd8978a939c1eb7e0d \ + --hash=sha256:7d8b8aaa30fca4f16f0c84a5c8d7ddee0e25250ec2796c973775373257dde8f1 \ + --hash=sha256:843b52f6d88071f87eba1631b684fcb4b2068cd2180a0224122fe4ef011a9374 \ + --hash=sha256:858dc935963a33bc33490128edc1c12b0c14d9c7ebaa4e387a7869ecc4f3e263 \ + --hash=sha256:8cb2f4f679b01513b7adbb9b1b2f0f9cdc31b70007eaf9d59d0878809f385b11 \ + --hash=sha256:9176dcaddf4ca963d4deb93866d739a343c01c969231dbe21680e13a5d1a5bf0 \ + --hash=sha256:93f107c673bccf0d592cdba077dedaf52fe7f42dcd7676eba1f6d6f0c3efffd2 \ + --hash=sha256:9b3222c686a919a0f3253cfc12bb118b8b103506612253b5baeaac10d8027cf6 \ + --hash=sha256:a40a3d35b204b7cc7643cbcf8c9976d818cb47befcfac8bbefec8038ac363f3e \ + --hash=sha256:a42e633d75cdad6d625434e3468126c73f13f7584545a9cf34e883aa1710e702 \ + --hash=sha256:a54844be970d3fc22630b32d515e79a90d0a3ddb2644d8d7402e3c4c8da61405 \ + --hash=sha256:a756fe893389483ee8c394d06b5ab765d96e68fbbfe6fde7aa17e11f5720559f \ + --hash=sha256:a881851cf38b0a70e7c4d3ce81fc7afd86fbc2a024f4cfb2a97cf49ce04b75d3 \ + --hash=sha256:aa912c62f842dfd013c5f21a642c9c10cd9f4c4e943e0af83618b4a404d9091a \ + --hash=sha256:b1e420ef35c503869c4064f4a2f2b08ad6431ab7b229a05cce39d74268bca6b8 \ + --hash=sha256:b45fad44d9c5c119e9c6fbf2e1c656a46dc68e280275007bbfd3d572b21426db \ + --hash=sha256:b465afd7909db30168ab62afe40b2fcf79eedc0b89a6c0ab3123515dc0df8b99 \ + --hash=sha256:b7b2df81a23f8cb99656378e72501b2cb41b1827c0f5a86f87d6b06b69f9f204 \ + --hash=sha256:b9c6df83594f7df8f7f708ce5ebeacfc69f72c9fbaaababf6cf4758eaada0c9b \ + --hash=sha256:ba284920194615cb8edf73bf52236ce2e1664ccd4a38fdb543506413529cc546 \ + --hash=sha256:bb79b1e63f6fd84ec778a4b1916dfe0a7c3fdb986c06addd5db3a0d413819d95 \ + --hash=sha256:bd17fede52a17a4f9a7bc4472a5867cb0b160deeb431795c0e4abe158bc784e9 \ + --hash=sha256:bec91b562d8012dae276af8025a55811b875baace6af510412a5e58e3121bc54 \ + --hash=sha256:c0f2ab8c715630565ab8991b536ecded9416d615538be8ecddce43ccf26cbc7c \ + --hash=sha256:c1ce4009c97a752e682b897aa99aef84191077a9433eb237774689f14f8ec152 \ + --hash=sha256:c5294f596a9017ca5a3e3f8884c00b91ab2ad2933cf288f4923c3fd4346cf3d4 \ + --hash=sha256:c5aa639bc113e9286137cec8fadc20e9cd732b2cc385c0b7fa673b84fc1f2a93 \ + --hash=sha256:c6e193e9f56e4ca4923c61238cdaced324f0feac782544eb4c6d55ad5cc99ddd \ + --hash=sha256:d597acf8506d6e7101a4a44a5e428977a51c0fadbbfd3c39650cca9253f6e5a6 \ + --hash=sha256:d706dca2d24d834a4661619dcacf51a75c16d65985718d6a7d73c1eeeb903ddf \ + --hash=sha256:dc94790144e66b14f67b10ac8ed75b39ca47536bf8800eb7c24b50271ea0c490 \ + --hash=sha256:eae5c13f3bc455a3bbb68bdc513912dc7356de7e2280363ea235f71f54064829 \ + --hash=sha256:ec44b73a4220623235f67a996c862049f375df3b1052d9899f40a6382c32d746 \ + --hash=sha256:f01375c0e55395b814a679b3eea205db7919ac2af213f4a6682e01220e5fe292 \ + --hash=sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6 \ + --hash=sha256:f205badabde7aafd1a31e8ca2a3e5a763107a71c397c4481d6a804eb5063d8bd \ + --hash=sha256:f22927652cba98c44639ffdc7aaf35828dccf679b10b31c4ad72a5b530a18eb7 \ + --hash=sha256:f7f99123f0e1194fa59cc69ad46dbae2e07becec5df50a0509a808f90a0f03f0 \ + --hash=sha256:fba27a198363a7ef87f8c0f6b171ec36b674fe9053742c58dd7e3201c1ab30ee + # via datasets +yarl==1.22.0 \ + --hash=sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a \ + --hash=sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da \ + --hash=sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093 \ + --hash=sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79 \ + --hash=sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683 \ + --hash=sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2 \ + --hash=sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff \ + --hash=sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02 \ + --hash=sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03 \ + --hash=sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c \ + --hash=sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124 \ + --hash=sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c \ + --hash=sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da \ + --hash=sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2 \ + --hash=sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0 \ + --hash=sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d \ + --hash=sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53 \ + --hash=sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138 \ + --hash=sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4 \ + --hash=sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d \ + --hash=sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2 \ + --hash=sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa \ + --hash=sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f \ + --hash=sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1 \ + --hash=sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d \ + --hash=sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694 \ + --hash=sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3 \ + --hash=sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a \ + --hash=sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a \ + --hash=sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b \ + --hash=sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5 \ + --hash=sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f \ + --hash=sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df \ + --hash=sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b \ + --hash=sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b \ + --hash=sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2 \ + --hash=sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708 \ + --hash=sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8 \ + --hash=sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10 \ + --hash=sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b \ + --hash=sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e \ + --hash=sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33 \ + --hash=sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590 \ + --hash=sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c \ + --hash=sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53 \ + --hash=sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74 \ + --hash=sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f \ + --hash=sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1 \ + --hash=sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27 \ + --hash=sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520 \ + --hash=sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273 \ + --hash=sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601 \ + --hash=sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7 \ + --hash=sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb \ + --hash=sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784 \ + --hash=sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71 \ + --hash=sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b \ + --hash=sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a \ + --hash=sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c \ + --hash=sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face \ + --hash=sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d \ + --hash=sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e \ + --hash=sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9 \ + --hash=sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95 \ + --hash=sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf \ + --hash=sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca \ + --hash=sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62 \ + --hash=sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df \ + --hash=sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67 \ + --hash=sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f \ + --hash=sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529 \ + --hash=sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486 \ + --hash=sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a \ + --hash=sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74 \ + --hash=sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d \ + --hash=sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b \ + --hash=sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2 \ + --hash=sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e \ + --hash=sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8 \ + --hash=sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82 \ + --hash=sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd \ + --hash=sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249 + # via aiohttp +zarr==2.18.7 \ + --hash=sha256:ac3dc4033e9ae4e9d7b5e27c97ea3eaf1003cc0a07f010bd83d5134bf8c4b223 \ + --hash=sha256:b2b8f66f14dac4af66b180d2338819981b981f70e196c9a66e6bfaa9e59572f5 + # via vizarr diff --git a/data/mnist-ae/latents.h5 b/thumbnail.gif similarity index 55% rename from data/mnist-ae/latents.h5 rename to thumbnail.gif index 4222f4fb9..e8c5851c5 100644 Binary files a/data/mnist-ae/latents.h5 and b/thumbnail.gif differ diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..0456ef7c8 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3498 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" +resolution-markers = [ + "python_full_version >= '3.14'", + "python_full_version == '3.13.*'", + "python_full_version < '3.13'", +] + +[[package]] +name = "absl-py" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/10/2a/c93173ffa1b39c1d0395b7e842bbdc62e556ca9d8d3b5572926f3e4ca752/absl_py-2.3.1.tar.gz", hash = "sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9", size = 116588, upload-time = "2025-07-03T09:31:44.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/aa/ba0014cc4659328dc818a28827be78e6d97312ab0cb98105a770924dc11e/absl_py-2.3.1-py3-none-any.whl", hash = "sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d", size = 135811, upload-time = "2025-07-03T09:31:42.253Z" }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.13.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, + { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, + { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, + { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, + { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, + { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "anyio" +version = "4.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, +] + +[[package]] +name = "anywidget" +version = "0.9.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipywidgets" }, + { name = "psygnal" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/5e/cbea445bf062b81e4d366ca29dae4f0aedc7a64f384afc24670e07bec560/anywidget-0.9.21.tar.gz", hash = "sha256:b8d0172029ac426573053c416c6a587838661612208bb390fa0607862e594b27", size = 390517, upload-time = "2025-11-12T17:06:03.035Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/03/c17464bbf682ea87e7e3de2ddc63395e359a78ae9c01f55fc78759ecbd79/anywidget-0.9.21-py3-none-any.whl", hash = "sha256:78c268e0fbdb1dfd15da37fb578f9cf0a0df58a430e68d9156942b7a9391a761", size = 231797, upload-time = "2025-11-12T17:06:01.564Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/2d/db8af0df73c1cf454f71b2bbe5e356b8c1f8041c979f505b3d3186e520a9/argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d", size = 1783441, upload-time = "2025-07-30T10:02:05.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/3c0a35f46e52108d4707c44b95cfe2afcafc50800b5450c197454569b776/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f", size = 54393, upload-time = "2025-07-30T10:01:40.97Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f4/98bbd6ee89febd4f212696f13c03ca302b8552e7dbf9c8efa11ea4a388c3/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b", size = 29328, upload-time = "2025-07-30T10:01:41.916Z" }, + { url = "https://files.pythonhosted.org/packages/43/24/90a01c0ef12ac91a6be05969f29944643bc1e5e461155ae6559befa8f00b/argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a", size = 31269, upload-time = "2025-07-30T10:01:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/d4/d3/942aa10782b2697eee7af5e12eeff5ebb325ccfb86dd8abda54174e377e4/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44", size = 86558, upload-time = "2025-07-30T10:01:43.943Z" }, + { url = "https://files.pythonhosted.org/packages/0d/82/b484f702fec5536e71836fc2dbc8c5267b3f6e78d2d539b4eaa6f0db8bf8/argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb", size = 92364, upload-time = "2025-07-30T10:01:44.887Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/a606ff83b3f1735f3759ad0f2cd9e038a0ad11a3de3b6c673aa41c24bb7b/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92", size = 85637, upload-time = "2025-07-30T10:01:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/44/b4/678503f12aceb0262f84fa201f6027ed77d71c5019ae03b399b97caa2f19/argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85", size = 91934, upload-time = "2025-07-30T10:01:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c7/f36bd08ef9bd9f0a9cff9428406651f5937ce27b6c5b07b92d41f91ae541/argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f", size = 28158, upload-time = "2025-07-30T10:01:48.341Z" }, + { url = "https://files.pythonhosted.org/packages/b3/80/0106a7448abb24a2c467bf7d527fe5413b7fdfa4ad6d6a96a43a62ef3988/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6", size = 32597, upload-time = "2025-07-30T10:01:49.112Z" }, + { url = "https://files.pythonhosted.org/packages/05/b8/d663c9caea07e9180b2cb662772865230715cbd573ba3b5e81793d580316/argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623", size = 28231, upload-time = "2025-07-30T10:01:49.92Z" }, + { url = "https://files.pythonhosted.org/packages/1d/57/96b8b9f93166147826da5f90376e784a10582dd39a393c99bb62cfcf52f0/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500", size = 54121, upload-time = "2025-07-30T10:01:50.815Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/a9bebdb2e0e602dde230bdde8021b29f71f7841bd54801bcfd514acb5dcf/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44", size = 29177, upload-time = "2025-07-30T10:01:51.681Z" }, + { url = "https://files.pythonhosted.org/packages/b6/02/d297943bcacf05e4f2a94ab6f462831dc20158614e5d067c35d4e63b9acb/argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0", size = 31090, upload-time = "2025-07-30T10:01:53.184Z" }, + { url = "https://files.pythonhosted.org/packages/c1/93/44365f3d75053e53893ec6d733e4a5e3147502663554b4d864587c7828a7/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6", size = 81246, upload-time = "2025-07-30T10:01:54.145Z" }, + { url = "https://files.pythonhosted.org/packages/09/52/94108adfdd6e2ddf58be64f959a0b9c7d4ef2fa71086c38356d22dc501ea/argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a", size = 87126, upload-time = "2025-07-30T10:01:55.074Z" }, + { url = "https://files.pythonhosted.org/packages/72/70/7a2993a12b0ffa2a9271259b79cc616e2389ed1a4d93842fac5a1f923ffd/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d", size = 80343, upload-time = "2025-07-30T10:01:56.007Z" }, + { url = "https://files.pythonhosted.org/packages/78/9a/4e5157d893ffc712b74dbd868c7f62365618266982b64accab26bab01edc/argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99", size = 86777, upload-time = "2025-07-30T10:01:56.943Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/15777dfde1c29d96de7f18edf4cc94c385646852e7c7b0320aa91ccca583/argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2", size = 27180, upload-time = "2025-07-30T10:01:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/a759ece8f1829d1f162261226fbfd2c6832b3ff7657384045286d2afa384/argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98", size = 31715, upload-time = "2025-07-30T10:01:58.56Z" }, + { url = "https://files.pythonhosted.org/packages/42/b9/f8d6fa329ab25128b7e98fd83a3cb34d9db5b059a9847eddb840a0af45dd/argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94", size = 27149, upload-time = "2025-07-30T10:01:59.329Z" }, +] + +[[package]] +name = "arrow" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/33/032cdc44182491aa708d06a68b62434140d8c50820a087fac7af37703357/arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7", size = 152931, upload-time = "2025-10-18T17:46:46.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c9/d7977eaacb9df673210491da99e6a247e93df98c715fc43fd136ce1d3d33/arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205", size = 68797, upload-time = "2025-10-18T17:46:45.663Z" }, +] + +[[package]] +name = "asciitree" +version = "0.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/6a/885bc91484e1aa8f618f6f0228d76d0e67000b0fdd6090673b777e311913/asciitree-0.3.3.tar.gz", hash = "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e", size = 3951, upload-time = "2016-09-05T19:10:42.681Z" } + +[[package]] +name = "asttokens" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308, upload-time = "2025-11-15T16:43:48.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, +] + +[[package]] +name = "astunparse" +version = "1.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "wheel" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/af/4182184d3c338792894f34a62672919db7ca008c89abee9b564dd34d8029/astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872", size = 18290, upload-time = "2019-12-22T18:12:13.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/03/13dde6512ad7b4557eb792fbcf0c653af6076b81e5941d36ec61f7ce6028/astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8", size = 12732, upload-time = "2019-12-22T18:12:11.297Z" }, +] + +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "attrs" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, +] + +[[package]] +name = "bleach" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/18/3c8523962314be6bf4c8989c79ad9531c825210dd13a8669f6b84336e8bd/bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22", size = 203533, upload-time = "2025-10-27T17:57:39.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6", size = 164437, upload-time = "2025-10-27T17:57:37.538Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "cell-browser" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "cmasher" }, + { name = "colorspacious" }, + { name = "datasets" }, + { name = "fsspec" }, + { name = "h5py" }, + { name = "huggingface-hub" }, + { name = "ipympl" }, + { name = "ipywidgets" }, + { name = "jupyterlab" }, + { name = "jupyterlab-myst" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "scipy" }, + { name = "tensorflow" }, + { name = "tifffile" }, + { name = "tqdm" }, + { name = "vizarr" }, +] + +[package.metadata] +requires-dist = [ + { name = "cmasher", specifier = ">=1.9.2" }, + { name = "colorspacious", specifier = ">=1.1.2" }, + { name = "datasets", specifier = ">=2.20.0" }, + { name = "fsspec", specifier = ">=2025.10.0" }, + { name = "h5py", specifier = ">=3.15.1" }, + { name = "huggingface-hub", specifier = ">=1.2.4" }, + { name = "ipympl", specifier = ">=0.9.8" }, + { name = "ipywidgets", specifier = ">=8.1.8" }, + { name = "jupyterlab", specifier = ">=4.5.1" }, + { name = "jupyterlab-myst", specifier = ">=2.6.0" }, + { name = "matplotlib", specifier = ">=3.10.8" }, + { name = "numpy", specifier = ">=2.4.0" }, + { name = "pillow", specifier = ">=12.1.0" }, + { name = "scipy", specifier = ">=1.16.3" }, + { name = "tensorflow", specifier = ">=2.20.0" }, + { name = "tifffile", specifier = ">=2025.12.20" }, + { name = "tqdm", specifier = ">=4.67.1" }, + { name = "vizarr", specifier = ">=0.1.1" }, +] + +[[package]] +name = "certifi" +version = "2026.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, + { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, + { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, + { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, + { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, + { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, + { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, + { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, + { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, + { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, + { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, + { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, + { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, + { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, + { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, + { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, + { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "cmasher" +version = "1.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorspacious" }, + { name = "matplotlib" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/ca/39152b506133881be74bd46cced27ec10d9bbc85db5bdfc22c8f8e4011f9/cmasher-1.9.2.tar.gz", hash = "sha256:6c90c2cec87146e3210d3e7f2321fceee38ac7d87c136cd0de25160a14f57ff5", size = 520860, upload-time = "2024-11-19T11:17:02.084Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/d2/6fcb93a60777fef7662d84ba60846d2dee9b6b70b4a62472515110f79cee/cmasher-1.9.2-py3-none-any.whl", hash = "sha256:2fe45fde06051050dda5c023a527ba9066ca21f161c793f22839a6ebe6e4bbbb", size = 506496, upload-time = "2024-11-19T11:16:58.549Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "colorspacious" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/e4/aa41ae14c5c061205715006c8834496d86ec7500f1edda5981f0f0190cc6/colorspacious-1.1.2.tar.gz", hash = "sha256:5e9072e8cdca889dac445c35c9362a22ccf758e97b00b79ff0d5a7ba3e11b618", size = 688573, upload-time = "2018-04-08T04:27:30.83Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/a1/318b9aeca7b9856410ededa4f52d6f82174d1a41e64bdd70d951e532675a/colorspacious-1.1.2-py2.py3-none-any.whl", hash = "sha256:c78befa603cea5dccb332464e7dd29e96469eebf6cd5133029153d1e69e3fd6f", size = 37735, upload-time = "2018-04-08T04:27:22.143Z" }, +] + +[[package]] +name = "comm" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload-time = "2025-07-25T14:02:04.452Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "datasets" +version = "4.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, + { name = "filelock" }, + { name = "fsspec", extra = ["http"] }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "multiprocess" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "tqdm" }, + { name = "xxhash" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/54/9359803da96bc65439a28fbb014dc2c90b7d4d8034a93b72362b0d40191f/datasets-4.4.2.tar.gz", hash = "sha256:9de16e415c4ba4713eac0493f7c7dc74f3aa21599297f00cc6ddab409cb7b24b", size = 586474, upload-time = "2025-12-19T15:03:09.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/b5/fefa518c809de7bced5cddb7c21c010da66fa2ae494bda96844a280cc6ce/datasets-4.4.2-py3-none-any.whl", hash = "sha256:6f5ef3417504d9cd663c71c1b90b9a494ff4c2076a2cd6a6e40ceee6ad95befc", size = 512268, upload-time = "2025-12-19T15:03:07.087Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/75/9e12d4d42349b817cd545b89247696c67917aab907012ae5b64bbfea3199/debugpy-1.8.19.tar.gz", hash = "sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb", size = 1644590, upload-time = "2025-12-15T21:53:28.044Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/15/d762e5263d9e25b763b78be72dc084c7a32113a0bac119e2f7acae7700ed/debugpy-1.8.19-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e", size = 2549995, upload-time = "2025-12-15T21:53:43.773Z" }, + { url = "https://files.pythonhosted.org/packages/a7/88/f7d25c68b18873b7c53d7c156ca7a7ffd8e77073aa0eac170a9b679cf786/debugpy-1.8.19-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de", size = 4309891, upload-time = "2025-12-15T21:53:45.26Z" }, + { url = "https://files.pythonhosted.org/packages/c5/4f/a65e973aba3865794da65f71971dca01ae66666132c7b2647182d5be0c5f/debugpy-1.8.19-cp312-cp312-win32.whl", hash = "sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee", size = 5286355, upload-time = "2025-12-15T21:53:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/d8/3a/d3d8b48fec96e3d824e404bf428276fb8419dfa766f78f10b08da1cb2986/debugpy-1.8.19-cp312-cp312-win_amd64.whl", hash = "sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d", size = 5328239, upload-time = "2025-12-15T21:53:48.868Z" }, + { url = "https://files.pythonhosted.org/packages/71/3d/388035a31a59c26f1ecc8d86af607d0c42e20ef80074147cd07b180c4349/debugpy-1.8.19-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d", size = 2538859, upload-time = "2025-12-15T21:53:50.478Z" }, + { url = "https://files.pythonhosted.org/packages/4a/19/c93a0772d0962294f083dbdb113af1a7427bb632d36e5314297068f55db7/debugpy-1.8.19-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606", size = 4292575, upload-time = "2025-12-15T21:53:51.821Z" }, + { url = "https://files.pythonhosted.org/packages/5c/56/09e48ab796b0a77e3d7dc250f95251832b8bf6838c9632f6100c98bdf426/debugpy-1.8.19-cp313-cp313-win32.whl", hash = "sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976", size = 5286209, upload-time = "2025-12-15T21:53:53.602Z" }, + { url = "https://files.pythonhosted.org/packages/fb/4e/931480b9552c7d0feebe40c73725dd7703dcc578ba9efc14fe0e6d31cfd1/debugpy-1.8.19-cp313-cp313-win_amd64.whl", hash = "sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73", size = 5328206, upload-time = "2025-12-15T21:53:55.433Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b9/cbec520c3a00508327476c7fce26fbafef98f412707e511eb9d19a2ef467/debugpy-1.8.19-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af", size = 2537372, upload-time = "2025-12-15T21:53:57.318Z" }, + { url = "https://files.pythonhosted.org/packages/88/5e/cf4e4dc712a141e10d58405c58c8268554aec3c35c09cdcda7535ff13f76/debugpy-1.8.19-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809", size = 4268729, upload-time = "2025-12-15T21:53:58.712Z" }, + { url = "https://files.pythonhosted.org/packages/82/a3/c91a087ab21f1047db328c1d3eb5d1ff0e52de9e74f9f6f6fa14cdd93d58/debugpy-1.8.19-cp314-cp314-win32.whl", hash = "sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b", size = 5286388, upload-time = "2025-12-15T21:54:00.687Z" }, + { url = "https://files.pythonhosted.org/packages/17/b8/bfdc30b6e94f1eff09f2dc9cc1f9cd1c6cde3d996bcbd36ce2d9a4956e99/debugpy-1.8.19-cp314-cp314-win_amd64.whl", hash = "sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f", size = 5327741, upload-time = "2025-12-15T21:54:02.148Z" }, + { url = "https://files.pythonhosted.org/packages/25/3e/e27078370414ef35fafad2c06d182110073daaeb5d3bf734b0b1eeefe452/debugpy-1.8.19-py2.py3-none-any.whl", hash = "sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38", size = 5292321, upload-time = "2025-12-15T21:54:16.024Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "deprecated" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, +] + +[[package]] +name = "dill" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/80/630b4b88364e9a8c8c5797f4602d0f76ef820909ee32f0bacb9f90654042/dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", size = 186976, upload-time = "2025-04-16T00:41:48.867Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "fasteners" +version = "0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/18/7881a99ba5244bfc82f06017316ffe93217dbbbcfa52b887caa1d4f2a6d3/fasteners-0.20.tar.gz", hash = "sha256:55dce8792a41b56f727ba6e123fcaee77fd87e638a6863cec00007bfea84c8d8", size = 25087, upload-time = "2025-08-11T10:19:37.785Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/ac/e5d886f892666d2d1e5cb8c1a41146e1d79ae8896477b1153a21711d3b44/fasteners-0.20-py3-none-any.whl", hash = "sha256:9422c40d1e350e4259f509fb2e608d6bc43c0136f79a00db1b49046029d0b3b7", size = 18702, upload-time = "2025-08-11T10:19:35.716Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, +] + +[[package]] +name = "filelock" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/e0/a75dbe4bca1e7d41307323dad5ea2efdd95408f74ab2de8bd7dba9b51a1a/filelock-3.20.2.tar.gz", hash = "sha256:a2241ff4ddde2a7cebddf78e39832509cb045d18ec1a09d7248d6bfc6bfbbe64", size = 19510, upload-time = "2026-01-02T15:33:32.582Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/30/ab407e2ec752aa541704ed8f93c11e2a5d92c168b8a755d818b74a3c5c2d/filelock-3.20.2-py3-none-any.whl", hash = "sha256:fbba7237d6ea277175a32c54bb71ef814a8546d8601269e1bfc388de333974e8", size = 16697, upload-time = "2026-01-02T15:33:31.133Z" }, +] + +[[package]] +name = "flatbuffers" +version = "25.12.19" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/2d/d2a548598be01649e2d46231d151a6c56d10b964d94043a335ae56ea2d92/flatbuffers-25.12.19-py2.py3-none-any.whl", hash = "sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4", size = 26661, upload-time = "2025-12-19T23:16:13.622Z" }, +] + +[[package]] +name = "fonttools" +version = "4.61.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/ca/cf17b88a8df95691275a3d77dc0a5ad9907f328ae53acbe6795da1b2f5ed/fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69", size = 3565756, upload-time = "2025-12-12T17:31:24.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/16/7decaa24a1bd3a70c607b2e29f0adc6159f36a7e40eaba59846414765fd4/fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e", size = 2851593, upload-time = "2025-12-12T17:30:04.225Z" }, + { url = "https://files.pythonhosted.org/packages/94/98/3c4cb97c64713a8cf499b3245c3bf9a2b8fd16a3e375feff2aed78f96259/fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2", size = 2400231, upload-time = "2025-12-12T17:30:06.47Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/82dbef0f6342eb01f54bca073ac1498433d6ce71e50c3c3282b655733b31/fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796", size = 4954103, upload-time = "2025-12-12T17:30:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/6c/44/f3aeac0fa98e7ad527f479e161aca6c3a1e47bb6996b053d45226fe37bf2/fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d", size = 5004295, upload-time = "2025-12-12T17:30:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/14/e8/7424ced75473983b964d09f6747fa09f054a6d656f60e9ac9324cf40c743/fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8", size = 4944109, upload-time = "2025-12-12T17:30:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/c8/8b/6391b257fa3d0b553d73e778f953a2f0154292a7a7a085e2374b111e5410/fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0", size = 5093598, upload-time = "2025-12-12T17:30:15.79Z" }, + { url = "https://files.pythonhosted.org/packages/d9/71/fd2ea96cdc512d92da5678a1c98c267ddd4d8c5130b76d0f7a80f9a9fde8/fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261", size = 2269060, upload-time = "2025-12-12T17:30:18.058Z" }, + { url = "https://files.pythonhosted.org/packages/80/3b/a3e81b71aed5a688e89dfe0e2694b26b78c7d7f39a5ffd8a7d75f54a12a8/fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9", size = 2319078, upload-time = "2025-12-12T17:30:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cf/00ba28b0990982530addb8dc3e9e6f2fa9cb5c20df2abdda7baa755e8fe1/fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c", size = 2846454, upload-time = "2025-12-12T17:30:24.938Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ca/468c9a8446a2103ae645d14fee3f610567b7042aba85031c1c65e3ef7471/fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e", size = 2398191, upload-time = "2025-12-12T17:30:27.343Z" }, + { url = "https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5", size = 4928410, upload-time = "2025-12-12T17:30:29.771Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8d/6fb3494dfe61a46258cd93d979cf4725ded4eb46c2a4ca35e4490d84daea/fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd", size = 4984460, upload-time = "2025-12-12T17:30:32.073Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f1/a47f1d30b3dc00d75e7af762652d4cbc3dff5c2697a0dbd5203c81afd9c3/fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3", size = 4925800, upload-time = "2025-12-12T17:30:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/a7/01/e6ae64a0981076e8a66906fab01539799546181e32a37a0257b77e4aa88b/fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d", size = 5067859, upload-time = "2025-12-12T17:30:36.593Z" }, + { url = "https://files.pythonhosted.org/packages/73/aa/28e40b8d6809a9b5075350a86779163f074d2b617c15d22343fce81918db/fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c", size = 2267821, upload-time = "2025-12-12T17:30:38.478Z" }, + { url = "https://files.pythonhosted.org/packages/1a/59/453c06d1d83dc0951b69ef692d6b9f1846680342927df54e9a1ca91c6f90/fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b", size = 2318169, upload-time = "2025-12-12T17:30:40.951Z" }, + { url = "https://files.pythonhosted.org/packages/32/8f/4e7bf82c0cbb738d3c2206c920ca34ca74ef9dabde779030145d28665104/fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd", size = 2846094, upload-time = "2025-12-12T17:30:43.511Z" }, + { url = "https://files.pythonhosted.org/packages/71/09/d44e45d0a4f3a651f23a1e9d42de43bc643cce2971b19e784cc67d823676/fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e", size = 2396589, upload-time = "2025-12-12T17:30:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/89/18/58c64cafcf8eb677a99ef593121f719e6dcbdb7d1c594ae5a10d4997ca8a/fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c", size = 4877892, upload-time = "2025-12-12T17:30:47.709Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ec/9e6b38c7ba1e09eb51db849d5450f4c05b7e78481f662c3b79dbde6f3d04/fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75", size = 4972884, upload-time = "2025-12-12T17:30:49.656Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/b5339da8e0256734ba0dbbf5b6cdebb1dd79b01dc8c270989b7bcd465541/fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063", size = 4924405, upload-time = "2025-12-12T17:30:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/0b/47/e3409f1e1e69c073a3a6fd8cb886eb18c0bae0ee13db2c8d5e7f8495e8b7/fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2", size = 5035553, upload-time = "2025-12-12T17:30:54.823Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/1f6600161b1073a984294c6c031e1a56ebf95b6164249eecf30012bb2e38/fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c", size = 2271915, upload-time = "2025-12-12T17:30:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/91e7b01e37cc8eb0e1f770d08305b3655e4f002fc160fb82b3390eabacf5/fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c", size = 2323487, upload-time = "2025-12-12T17:30:59.804Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/908ad78e46c61c3e3ed70c3b58ff82ab48437faf84ec84f109592cabbd9f/fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa", size = 2929571, upload-time = "2025-12-12T17:31:02.574Z" }, + { url = "https://files.pythonhosted.org/packages/bd/41/975804132c6dea64cdbfbaa59f3518a21c137a10cccf962805b301ac6ab2/fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91", size = 2435317, upload-time = "2025-12-12T17:31:04.974Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5a/aef2a0a8daf1ebaae4cfd83f84186d4a72ee08fd6a8451289fcd03ffa8a4/fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19", size = 4882124, upload-time = "2025-12-12T17:31:07.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/33/d6db3485b645b81cea538c9d1c9219d5805f0877fda18777add4671c5240/fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba", size = 5100391, upload-time = "2025-12-12T17:31:09.732Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d6/675ba631454043c75fcf76f0ca5463eac8eb0666ea1d7badae5fea001155/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7", size = 4978800, upload-time = "2025-12-12T17:31:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/7f/33/d3ec753d547a8d2bdaedd390d4a814e8d5b45a093d558f025c6b990b554c/fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118", size = 5006426, upload-time = "2025-12-12T17:31:13.764Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/cc11f378b561a67bea850ab50063366a0d1dd3f6d0a30ce0f874b0ad5664/fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5", size = 2335377, upload-time = "2025-12-12T17:31:16.49Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/c9a2b66b39f8628531ea58b320d66d951267c98c6a38684daa8f50fb02f8/fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b", size = 2400613, upload-time = "2025-12-12T17:31:18.769Z" }, + { url = "https://files.pythonhosted.org/packages/c7/4e/ce75a57ff3aebf6fc1f4e9d508b8e5810618a33d900ad6c19eb30b290b97/fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371", size = 1148996, upload-time = "2025-12-12T17:31:21.03Z" }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, + { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, + { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, + { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, + { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, + { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4e/e4691508f9477ce67da2015d8c00acd751e6287739123113a9fca6f1604e/frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027", size = 234391, upload-time = "2025-10-06T05:36:31.301Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/c202df58e3acdf12969a7895fd6f3bc016c642e6726aa63bd3025e0fc71c/frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822", size = 233048, upload-time = "2025-10-06T05:36:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c0/8746afb90f17b73ca5979c7a3958116e105ff796e718575175319b5bb4ce/frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121", size = 226549, upload-time = "2025-10-06T05:36:33.706Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/4c7eefc718ff72f9b6c4893291abaae5fbc0c82226a32dcd8ef4f7a5dbef/frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5", size = 239833, upload-time = "2025-10-06T05:36:34.947Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/e5c02187cf704224f8b21bee886f3d713ca379535f16893233b9d672ea71/frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e", size = 245363, upload-time = "2025-10-06T05:36:36.534Z" }, + { url = "https://files.pythonhosted.org/packages/1f/96/cb85ec608464472e82ad37a17f844889c36100eed57bea094518bf270692/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11", size = 229314, upload-time = "2025-10-06T05:36:38.582Z" }, + { url = "https://files.pythonhosted.org/packages/5d/6f/4ae69c550e4cee66b57887daeebe006fe985917c01d0fff9caab9883f6d0/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1", size = 243365, upload-time = "2025-10-06T05:36:40.152Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/afd56de246cf11780a40a2c28dc7cbabbf06337cc8ddb1c780a2d97e88d8/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1", size = 237763, upload-time = "2025-10-06T05:36:41.355Z" }, + { url = "https://files.pythonhosted.org/packages/cb/36/cdfaf6ed42e2644740d4a10452d8e97fa1c062e2a8006e4b09f1b5fd7d63/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8", size = 240110, upload-time = "2025-10-06T05:36:42.716Z" }, + { url = "https://files.pythonhosted.org/packages/03/a8/9ea226fbefad669f11b52e864c55f0bd57d3c8d7eb07e9f2e9a0b39502e1/frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed", size = 233717, upload-time = "2025-10-06T05:36:44.251Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0b/1b5531611e83ba7d13ccc9988967ea1b51186af64c42b7a7af465dcc9568/frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496", size = 39628, upload-time = "2025-10-06T05:36:45.423Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cf/174c91dbc9cc49bc7b7aab74d8b734e974d1faa8f191c74af9b7e80848e6/frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231", size = 43882, upload-time = "2025-10-06T05:36:46.796Z" }, + { url = "https://files.pythonhosted.org/packages/c1/17/502cd212cbfa96eb1388614fe39a3fc9ab87dbbe042b66f97acb57474834/frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62", size = 39676, upload-time = "2025-10-06T05:36:47.8Z" }, + { url = "https://files.pythonhosted.org/packages/d2/5c/3bbfaa920dfab09e76946a5d2833a7cbdf7b9b4a91c714666ac4855b88b4/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94", size = 89235, upload-time = "2025-10-06T05:36:48.78Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d6/f03961ef72166cec1687e84e8925838442b615bd0b8854b54923ce5b7b8a/frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c", size = 50742, upload-time = "2025-10-06T05:36:49.837Z" }, + { url = "https://files.pythonhosted.org/packages/1e/bb/a6d12b7ba4c3337667d0e421f7181c82dda448ce4e7ad7ecd249a16fa806/frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52", size = 51725, upload-time = "2025-10-06T05:36:50.851Z" }, + { url = "https://files.pythonhosted.org/packages/bc/71/d1fed0ffe2c2ccd70b43714c6cab0f4188f09f8a67a7914a6b46ee30f274/frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51", size = 284533, upload-time = "2025-10-06T05:36:51.898Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/fb1685a7b009d89f9bf78a42d94461bc06581f6e718c39344754a5d9bada/frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65", size = 292506, upload-time = "2025-10-06T05:36:53.101Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3b/b991fe1612703f7e0d05c0cf734c1b77aaf7c7d321df4572e8d36e7048c8/frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82", size = 274161, upload-time = "2025-10-06T05:36:54.309Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ec/c5c618767bcdf66e88945ec0157d7f6c4a1322f1473392319b7a2501ded7/frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714", size = 294676, upload-time = "2025-10-06T05:36:55.566Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ce/3934758637d8f8a88d11f0585d6495ef54b2044ed6ec84492a91fa3b27aa/frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d", size = 300638, upload-time = "2025-10-06T05:36:56.758Z" }, + { url = "https://files.pythonhosted.org/packages/fc/4f/a7e4d0d467298f42de4b41cbc7ddaf19d3cfeabaf9ff97c20c6c7ee409f9/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506", size = 283067, upload-time = "2025-10-06T05:36:57.965Z" }, + { url = "https://files.pythonhosted.org/packages/dc/48/c7b163063d55a83772b268e6d1affb960771b0e203b632cfe09522d67ea5/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51", size = 292101, upload-time = "2025-10-06T05:36:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d0/2366d3c4ecdc2fd391e0afa6e11500bfba0ea772764d631bbf82f0136c9d/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e", size = 289901, upload-time = "2025-10-06T05:37:00.811Z" }, + { url = "https://files.pythonhosted.org/packages/b8/94/daff920e82c1b70e3618a2ac39fbc01ae3e2ff6124e80739ce5d71c9b920/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0", size = 289395, upload-time = "2025-10-06T05:37:02.115Z" }, + { url = "https://files.pythonhosted.org/packages/e3/20/bba307ab4235a09fdcd3cc5508dbabd17c4634a1af4b96e0f69bfe551ebd/frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41", size = 283659, upload-time = "2025-10-06T05:37:03.711Z" }, + { url = "https://files.pythonhosted.org/packages/fd/00/04ca1c3a7a124b6de4f8a9a17cc2fcad138b4608e7a3fc5877804b8715d7/frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b", size = 43492, upload-time = "2025-10-06T05:37:04.915Z" }, + { url = "https://files.pythonhosted.org/packages/59/5e/c69f733a86a94ab10f68e496dc6b7e8bc078ebb415281d5698313e3af3a1/frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888", size = 48034, upload-time = "2025-10-06T05:37:06.343Z" }, + { url = "https://files.pythonhosted.org/packages/16/6c/be9d79775d8abe79b05fa6d23da99ad6e7763a1d080fbae7290b286093fd/frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042", size = 41749, upload-time = "2025-10-06T05:37:07.431Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/85da824b7e7b9b6e7f7705b2ecaf9591ba6f79c1177f324c2735e41d36a2/frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0", size = 86127, upload-time = "2025-10-06T05:37:08.438Z" }, + { url = "https://files.pythonhosted.org/packages/8e/e8/a1185e236ec66c20afd72399522f142c3724c785789255202d27ae992818/frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f", size = 49698, upload-time = "2025-10-06T05:37:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c", size = 49749, upload-time = "2025-10-06T05:37:10.569Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b2/fabede9fafd976b991e9f1b9c8c873ed86f202889b864756f240ce6dd855/frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2", size = 231298, upload-time = "2025-10-06T05:37:11.993Z" }, + { url = "https://files.pythonhosted.org/packages/3a/3b/d9b1e0b0eed36e70477ffb8360c49c85c8ca8ef9700a4e6711f39a6e8b45/frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8", size = 232015, upload-time = "2025-10-06T05:37:13.194Z" }, + { url = "https://files.pythonhosted.org/packages/dc/94/be719d2766c1138148564a3960fc2c06eb688da592bdc25adcf856101be7/frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686", size = 225038, upload-time = "2025-10-06T05:37:14.577Z" }, + { url = "https://files.pythonhosted.org/packages/e4/09/6712b6c5465f083f52f50cf74167b92d4ea2f50e46a9eea0523d658454ae/frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e", size = 240130, upload-time = "2025-10-06T05:37:15.781Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d4/cd065cdcf21550b54f3ce6a22e143ac9e4836ca42a0de1022da8498eac89/frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a", size = 242845, upload-time = "2025-10-06T05:37:17.037Z" }, + { url = "https://files.pythonhosted.org/packages/62/c3/f57a5c8c70cd1ead3d5d5f776f89d33110b1addae0ab010ad774d9a44fb9/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128", size = 229131, upload-time = "2025-10-06T05:37:18.221Z" }, + { url = "https://files.pythonhosted.org/packages/6c/52/232476fe9cb64f0742f3fde2b7d26c1dac18b6d62071c74d4ded55e0ef94/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f", size = 240542, upload-time = "2025-10-06T05:37:19.771Z" }, + { url = "https://files.pythonhosted.org/packages/5f/85/07bf3f5d0fb5414aee5f47d33c6f5c77bfe49aac680bfece33d4fdf6a246/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7", size = 237308, upload-time = "2025-10-06T05:37:20.969Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/ae3a33d5befd41ac0ca2cc7fd3aa707c9c324de2e89db0e0f45db9a64c26/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30", size = 238210, upload-time = "2025-10-06T05:37:22.252Z" }, + { url = "https://files.pythonhosted.org/packages/b2/60/b1d2da22f4970e7a155f0adde9b1435712ece01b3cd45ba63702aea33938/frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7", size = 231972, upload-time = "2025-10-06T05:37:23.5Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ab/945b2f32de889993b9c9133216c068b7fcf257d8595a0ac420ac8677cab0/frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806", size = 40536, upload-time = "2025-10-06T05:37:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/59/ad/9caa9b9c836d9ad6f067157a531ac48b7d36499f5036d4141ce78c230b1b/frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0", size = 44330, upload-time = "2025-10-06T05:37:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/e6950121764f2676f43534c555249f57030150260aee9dcf7d64efda11dd/frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b", size = 40627, upload-time = "2025-10-06T05:37:28.075Z" }, + { url = "https://files.pythonhosted.org/packages/c0/c7/43200656ecc4e02d3f8bc248df68256cd9572b3f0017f0a0c4e93440ae23/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d", size = 89238, upload-time = "2025-10-06T05:37:29.373Z" }, + { url = "https://files.pythonhosted.org/packages/d1/29/55c5f0689b9c0fb765055629f472c0de484dcaf0acee2f7707266ae3583c/frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed", size = 50738, upload-time = "2025-10-06T05:37:30.792Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7d/b7282a445956506fa11da8c2db7d276adcbf2b17d8bb8407a47685263f90/frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930", size = 51739, upload-time = "2025-10-06T05:37:32.127Z" }, + { url = "https://files.pythonhosted.org/packages/62/1c/3d8622e60d0b767a5510d1d3cf21065b9db874696a51ea6d7a43180a259c/frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c", size = 284186, upload-time = "2025-10-06T05:37:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/2d/14/aa36d5f85a89679a85a1d44cd7a6657e0b1c75f61e7cad987b203d2daca8/frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24", size = 292196, upload-time = "2025-10-06T05:37:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/05/23/6bde59eb55abd407d34f77d39a5126fb7b4f109a3f611d3929f14b700c66/frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37", size = 273830, upload-time = "2025-10-06T05:37:37.663Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3f/22cff331bfad7a8afa616289000ba793347fcd7bc275f3b28ecea2a27909/frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a", size = 294289, upload-time = "2025-10-06T05:37:39.261Z" }, + { url = "https://files.pythonhosted.org/packages/a4/89/5b057c799de4838b6c69aa82b79705f2027615e01be996d2486a69ca99c4/frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2", size = 300318, upload-time = "2025-10-06T05:37:43.213Z" }, + { url = "https://files.pythonhosted.org/packages/30/de/2c22ab3eb2a8af6d69dc799e48455813bab3690c760de58e1bf43b36da3e/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef", size = 282814, upload-time = "2025-10-06T05:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/59/f7/970141a6a8dbd7f556d94977858cfb36fa9b66e0892c6dd780d2219d8cd8/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe", size = 291762, upload-time = "2025-10-06T05:37:46.657Z" }, + { url = "https://files.pythonhosted.org/packages/c1/15/ca1adae83a719f82df9116d66f5bb28bb95557b3951903d39135620ef157/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8", size = 289470, upload-time = "2025-10-06T05:37:47.946Z" }, + { url = "https://files.pythonhosted.org/packages/ac/83/dca6dc53bf657d371fbc88ddeb21b79891e747189c5de990b9dfff2ccba1/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a", size = 289042, upload-time = "2025-10-06T05:37:49.499Z" }, + { url = "https://files.pythonhosted.org/packages/96/52/abddd34ca99be142f354398700536c5bd315880ed0a213812bc491cff5e4/frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e", size = 283148, upload-time = "2025-10-06T05:37:50.745Z" }, + { url = "https://files.pythonhosted.org/packages/af/d3/76bd4ed4317e7119c2b7f57c3f6934aba26d277acc6309f873341640e21f/frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df", size = 44676, upload-time = "2025-10-06T05:37:52.222Z" }, + { url = "https://files.pythonhosted.org/packages/89/76/c615883b7b521ead2944bb3480398cbb07e12b7b4e4d073d3752eb721558/frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd", size = 49451, upload-time = "2025-10-06T05:37:53.425Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a3/5982da14e113d07b325230f95060e2169f5311b1017ea8af2a29b374c289/frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79", size = 42507, upload-time = "2025-10-06T05:37:54.513Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/7f/2747c0d332b9acfa75dc84447a066fdf812b5a6b8d30472b74d309bfe8cb/fsspec-2025.10.0.tar.gz", hash = "sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59", size = 309285, upload-time = "2025-10-30T14:58:44.036Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/02/a6b21098b1d5d6249b7c5ab69dde30108a71e4e819d4a9778f1de1d5b70d/fsspec-2025.10.0-py3-none-any.whl", hash = "sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d", size = 200966, upload-time = "2025-10-30T14:58:42.53Z" }, +] + +[package.optional-dependencies] +http = [ + { name = "aiohttp" }, +] + +[[package]] +name = "gast" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/f6/e73969782a2ecec280f8a176f2476149dd9dba69d5f8779ec6108a7721e6/gast-0.7.0.tar.gz", hash = "sha256:0bb14cd1b806722e91ddbab6fb86bba148c22b40e7ff11e248974e04c8adfdae", size = 33630, upload-time = "2025-11-29T15:30:05.266Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/33/f1c6a276de27b7d7339a34749cc33fa87f077f921969c47185d34a887ae2/gast-0.7.0-py3-none-any.whl", hash = "sha256:99cbf1365633a74099f69c59bd650476b96baa5ef196fec88032b00b31ba36f7", size = 22966, upload-time = "2025-11-29T15:30:03.983Z" }, +] + +[[package]] +name = "google-pasta" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/4a/0bd53b36ff0323d10d5f24ebd67af2de10a1117f5cf4d7add90df92756f1/google-pasta-0.2.0.tar.gz", hash = "sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e", size = 40430, upload-time = "2020-03-13T18:57:50.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/de/c648ef6835192e6e2cc03f40b19eeda4382c49b5bafb43d88b931c4c74ac/google_pasta-0.2.0-py3-none-any.whl", hash = "sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed", size = 57471, upload-time = "2020-03-13T18:57:48.872Z" }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182, upload-time = "2025-10-21T16:23:12.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/05/8e29121994b8d959ffa0afd28996d452f291b48cfc0875619de0bde2c50c/grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", size = 5799718, upload-time = "2025-10-21T16:21:17.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/75/11d0e66b3cdf998c996489581bdad8900db79ebd83513e45c19548f1cba4/grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", size = 11825627, upload-time = "2025-10-21T16:21:20.466Z" }, + { url = "https://files.pythonhosted.org/packages/28/50/2f0aa0498bc188048f5d9504dcc5c2c24f2eb1a9337cd0fa09a61a2e75f0/grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", size = 6359167, upload-time = "2025-10-21T16:21:23.122Z" }, + { url = "https://files.pythonhosted.org/packages/66/e5/bbf0bb97d29ede1d59d6588af40018cfc345b17ce979b7b45424628dc8bb/grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", size = 7044267, upload-time = "2025-10-21T16:21:25.995Z" }, + { url = "https://files.pythonhosted.org/packages/f5/86/f6ec2164f743d9609691115ae8ece098c76b894ebe4f7c94a655c6b03e98/grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", size = 6573963, upload-time = "2025-10-21T16:21:28.631Z" }, + { url = "https://files.pythonhosted.org/packages/60/bc/8d9d0d8505feccfdf38a766d262c71e73639c165b311c9457208b56d92ae/grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", size = 7164484, upload-time = "2025-10-21T16:21:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/67/e6/5d6c2fc10b95edf6df9b8f19cf10a34263b7fd48493936fffd5085521292/grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", size = 8127777, upload-time = "2025-10-21T16:21:33.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c8/dce8ff21c86abe025efe304d9e31fdb0deaaa3b502b6a78141080f206da0/grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", size = 7594014, upload-time = "2025-10-21T16:21:41.882Z" }, + { url = "https://files.pythonhosted.org/packages/e0/42/ad28191ebf983a5d0ecef90bab66baa5a6b18f2bfdef9d0a63b1973d9f75/grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", size = 3984750, upload-time = "2025-10-21T16:21:44.006Z" }, + { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003, upload-time = "2025-10-21T16:21:46.244Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716, upload-time = "2025-10-21T16:21:48.475Z" }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522, upload-time = "2025-10-21T16:21:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558, upload-time = "2025-10-21T16:21:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990, upload-time = "2025-10-21T16:21:56.476Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387, upload-time = "2025-10-21T16:21:59.051Z" }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668, upload-time = "2025-10-21T16:22:02.049Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928, upload-time = "2025-10-21T16:22:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983, upload-time = "2025-10-21T16:22:07.881Z" }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727, upload-time = "2025-10-21T16:22:10.032Z" }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799, upload-time = "2025-10-21T16:22:12.709Z" }, + { url = "https://files.pythonhosted.org/packages/b4/46/39adac80de49d678e6e073b70204091e76631e03e94928b9ea4ecf0f6e0e/grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62", size = 5808417, upload-time = "2025-10-21T16:22:15.02Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f5/a4531f7fb8b4e2a60b94e39d5d924469b7a6988176b3422487be61fe2998/grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", size = 11828219, upload-time = "2025-10-21T16:22:17.954Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1c/de55d868ed7a8bd6acc6b1d6ddc4aa36d07a9f31d33c912c804adb1b971b/grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", size = 6367826, upload-time = "2025-10-21T16:22:20.721Z" }, + { url = "https://files.pythonhosted.org/packages/59/64/99e44c02b5adb0ad13ab3adc89cb33cb54bfa90c74770f2607eea629b86f/grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", size = 7049550, upload-time = "2025-10-21T16:22:23.637Z" }, + { url = "https://files.pythonhosted.org/packages/43/28/40a5be3f9a86949b83e7d6a2ad6011d993cbe9b6bd27bea881f61c7788b6/grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", size = 6575564, upload-time = "2025-10-21T16:22:26.016Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a9/1be18e6055b64467440208a8559afac243c66a8b904213af6f392dc2212f/grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", size = 7176236, upload-time = "2025-10-21T16:22:28.362Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/dba05d3fcc151ce6e81327541d2cc8394f442f6b350fead67401661bf041/grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", size = 8125795, upload-time = "2025-10-21T16:22:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/4a/45/122df922d05655f63930cf42c9e3f72ba20aadb26c100ee105cad4ce4257/grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", size = 7592214, upload-time = "2025-10-21T16:22:33.831Z" }, + { url = "https://files.pythonhosted.org/packages/4a/6e/0b899b7f6b66e5af39e377055fb4a6675c9ee28431df5708139df2e93233/grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", size = 4062961, upload-time = "2025-10-21T16:22:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/19/41/0b430b01a2eb38ee887f88c1f07644a1df8e289353b78e82b37ef988fb64/grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", size = 4834462, upload-time = "2025-10-21T16:22:39.772Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "h5py" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/6a/0d79de0b025aa85dc8864de8e97659c94cf3d23148394a954dc5ca52f8c8/h5py-3.15.1.tar.gz", hash = "sha256:c86e3ed45c4473564de55aa83b6fc9e5ead86578773dfbd93047380042e26b69", size = 426236, upload-time = "2025-10-16T10:35:27.404Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/b8/c0d9aa013ecfa8b7057946c080c0c07f6fa41e231d2e9bd306a2f8110bdc/h5py-3.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:316dd0f119734f324ca7ed10b5627a2de4ea42cc4dfbcedbee026aaa361c238c", size = 3399089, upload-time = "2025-10-16T10:34:12.135Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5e/3c6f6e0430813c7aefe784d00c6711166f46225f5d229546eb53032c3707/h5py-3.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b51469890e58e85d5242e43aab29f5e9c7e526b951caab354f3ded4ac88e7b76", size = 2847803, upload-time = "2025-10-16T10:34:14.564Z" }, + { url = "https://files.pythonhosted.org/packages/00/69/ba36273b888a4a48d78f9268d2aee05787e4438557450a8442946ab8f3ec/h5py-3.15.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a33bfd5dfcea037196f7778534b1ff7e36a7f40a89e648c8f2967292eb6898e", size = 4914884, upload-time = "2025-10-16T10:34:18.452Z" }, + { url = "https://files.pythonhosted.org/packages/3a/30/d1c94066343a98bb2cea40120873193a4fed68c4ad7f8935c11caf74c681/h5py-3.15.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25c8843fec43b2cc368aa15afa1cdf83fc5e17b1c4e10cd3771ef6c39b72e5ce", size = 5109965, upload-time = "2025-10-16T10:34:21.853Z" }, + { url = "https://files.pythonhosted.org/packages/81/3d/d28172116eafc3bc9f5991b3cb3fd2c8a95f5984f50880adfdf991de9087/h5py-3.15.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a308fd8681a864c04423c0324527237a0484e2611e3441f8089fd00ed56a8171", size = 4561870, upload-time = "2025-10-16T10:34:26.69Z" }, + { url = "https://files.pythonhosted.org/packages/a5/83/393a7226024238b0f51965a7156004eaae1fcf84aa4bfecf7e582676271b/h5py-3.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f4a016df3f4a8a14d573b496e4d1964deb380e26031fc85fb40e417e9131888a", size = 5037161, upload-time = "2025-10-16T10:34:30.383Z" }, + { url = "https://files.pythonhosted.org/packages/cf/51/329e7436bf87ca6b0fe06dd0a3795c34bebe4ed8d6c44450a20565d57832/h5py-3.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:59b25cf02411bf12e14f803fef0b80886444c7fe21a5ad17c6a28d3f08098a1e", size = 2874165, upload-time = "2025-10-16T10:34:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/09/a8/2d02b10a66747c54446e932171dd89b8b4126c0111b440e6bc05a7c852ec/h5py-3.15.1-cp312-cp312-win_arm64.whl", hash = "sha256:61d5a58a9851e01ee61c932bbbb1c98fe20aba0a5674776600fb9a361c0aa652", size = 2458214, upload-time = "2025-10-16T10:34:35.733Z" }, + { url = "https://files.pythonhosted.org/packages/88/b3/40207e0192415cbff7ea1d37b9f24b33f6d38a5a2f5d18a678de78f967ae/h5py-3.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8440fd8bee9500c235ecb7aa1917a0389a2adb80c209fa1cc485bd70e0d94a5", size = 3376511, upload-time = "2025-10-16T10:34:38.596Z" }, + { url = "https://files.pythonhosted.org/packages/31/96/ba99a003c763998035b0de4c299598125df5fc6c9ccf834f152ddd60e0fb/h5py-3.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ab2219dbc6fcdb6932f76b548e2b16f34a1f52b7666e998157a4dfc02e2c4123", size = 2826143, upload-time = "2025-10-16T10:34:41.342Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c2/fc6375d07ea3962df7afad7d863fe4bde18bb88530678c20d4c90c18de1d/h5py-3.15.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8cb02c3a96255149ed3ac811eeea25b655d959c6dd5ce702c9a95ff11859eb5", size = 4908316, upload-time = "2025-10-16T10:34:44.619Z" }, + { url = "https://files.pythonhosted.org/packages/d9/69/4402ea66272dacc10b298cca18ed73e1c0791ff2ae9ed218d3859f9698ac/h5py-3.15.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:121b2b7a4c1915d63737483b7bff14ef253020f617c2fb2811f67a4bed9ac5e8", size = 5103710, upload-time = "2025-10-16T10:34:48.639Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f6/11f1e2432d57d71322c02a97a5567829a75f223a8c821764a0e71a65cde8/h5py-3.15.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59b0d63b318bf3cc06687def2b45afd75926bbc006f7b8cd2b1a231299fc8599", size = 4556042, upload-time = "2025-10-16T10:34:51.841Z" }, + { url = "https://files.pythonhosted.org/packages/18/88/3eda3ef16bfe7a7dbc3d8d6836bbaa7986feb5ff091395e140dc13927bcc/h5py-3.15.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e02fe77a03f652500d8bff288cbf3675f742fc0411f5a628fa37116507dc7cc0", size = 5030639, upload-time = "2025-10-16T10:34:55.257Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ea/fbb258a98863f99befb10ed727152b4ae659f322e1d9c0576f8a62754e81/h5py-3.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:dea78b092fd80a083563ed79a3171258d4a4d307492e7cf8b2313d464c82ba52", size = 2864363, upload-time = "2025-10-16T10:34:58.099Z" }, + { url = "https://files.pythonhosted.org/packages/5d/c9/35021cc9cd2b2915a7da3026e3d77a05bed1144a414ff840953b33937fb9/h5py-3.15.1-cp313-cp313-win_arm64.whl", hash = "sha256:c256254a8a81e2bddc0d376e23e2a6d2dc8a1e8a2261835ed8c1281a0744cd97", size = 2449570, upload-time = "2025-10-16T10:35:00.473Z" }, + { url = "https://files.pythonhosted.org/packages/a0/2c/926eba1514e4d2e47d0e9eb16c784e717d8b066398ccfca9b283917b1bfb/h5py-3.15.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5f4fb0567eb8517c3ecd6b3c02c4f4e9da220c8932604960fd04e24ee1254763", size = 3380368, upload-time = "2025-10-16T10:35:03.117Z" }, + { url = "https://files.pythonhosted.org/packages/65/4b/d715ed454d3baa5f6ae1d30b7eca4c7a1c1084f6a2edead9e801a1541d62/h5py-3.15.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:954e480433e82d3872503104f9b285d369048c3a788b2b1a00e53d1c47c98dd2", size = 2833793, upload-time = "2025-10-16T10:35:05.623Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d4/ef386c28e4579314610a8bffebbee3b69295b0237bc967340b7c653c6c10/h5py-3.15.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fd125c131889ebbef0849f4a0e29cf363b48aba42f228d08b4079913b576bb3a", size = 4903199, upload-time = "2025-10-16T10:35:08.972Z" }, + { url = "https://files.pythonhosted.org/packages/33/5d/65c619e195e0b5e54ea5a95c1bb600c8ff8715e0d09676e4cce56d89f492/h5py-3.15.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28a20e1a4082a479b3d7db2169f3a5034af010b90842e75ebbf2e9e49eb4183e", size = 5097224, upload-time = "2025-10-16T10:35:12.808Z" }, + { url = "https://files.pythonhosted.org/packages/30/30/5273218400bf2da01609e1292f562c94b461fcb73c7a9e27fdadd43abc0a/h5py-3.15.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa8df5267f545b4946df8ca0d93d23382191018e4cda2deda4c2cedf9a010e13", size = 4551207, upload-time = "2025-10-16T10:35:16.24Z" }, + { url = "https://files.pythonhosted.org/packages/d3/39/a7ef948ddf4d1c556b0b2b9559534777bccc318543b3f5a1efdf6b556c9c/h5py-3.15.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99d374a21f7321a4c6ab327c4ab23bd925ad69821aeb53a1e75dd809d19f67fa", size = 5025426, upload-time = "2025-10-16T10:35:19.831Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d8/7368679b8df6925b8415f9dcc9ab1dab01ddc384d2b2c24aac9191bd9ceb/h5py-3.15.1-cp314-cp314-win_amd64.whl", hash = "sha256:9c73d1d7cdb97d5b17ae385153472ce118bed607e43be11e9a9deefaa54e0734", size = 2865704, upload-time = "2025-10-16T10:35:22.658Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b7/4a806f85d62c20157e62e58e03b27513dc9c55499768530acc4f4c5ce4be/h5py-3.15.1-cp314-cp314-win_arm64.whl", hash = "sha256:a6d8c5a05a76aca9a494b4c53ce8a9c29023b7f64f625c6ce1841e92a362ccdf", size = 2465544, upload-time = "2025-10-16T10:35:25.695Z" }, +] + +[[package]] +name = "hf-xet" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/6e/0f11bacf08a67f7fb5ee09740f2ca54163863b07b70d579356e9222ce5d8/hf_xet-1.2.0.tar.gz", hash = "sha256:a8c27070ca547293b6890c4bf389f713f80e8c478631432962bb7f4bc0bd7d7f", size = 506020, upload-time = "2025-10-24T19:04:32.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/a5/85ef910a0aa034a2abcfadc360ab5ac6f6bc4e9112349bd40ca97551cff0/hf_xet-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ceeefcd1b7aed4956ae8499e2199607765fbd1c60510752003b6cc0b8413b649", size = 2861870, upload-time = "2025-10-24T19:04:11.422Z" }, + { url = "https://files.pythonhosted.org/packages/ea/40/e2e0a7eb9a51fe8828ba2d47fe22a7e74914ea8a0db68a18c3aa7449c767/hf_xet-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b70218dd548e9840224df5638fdc94bd033552963cfa97f9170829381179c813", size = 2717584, upload-time = "2025-10-24T19:04:09.586Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7d/daf7f8bc4594fdd59a8a596f9e3886133fdc68e675292218a5e4c1b7e834/hf_xet-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d40b18769bb9a8bc82a9ede575ce1a44c75eb80e7375a01d76259089529b5dc", size = 3315004, upload-time = "2025-10-24T19:04:00.314Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ba/45ea2f605fbf6d81c8b21e4d970b168b18a53515923010c312c06cd83164/hf_xet-1.2.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd3a6027d59cfb60177c12d6424e31f4b5ff13d8e3a1247b3a584bf8977e6df5", size = 3222636, upload-time = "2025-10-24T19:03:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4a/1d/04513e3cab8f29ab8c109d309ddd21a2705afab9d52f2ba1151e0c14f086/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6de1fc44f58f6dd937956c8d304d8c2dea264c80680bcfa61ca4a15e7b76780f", size = 3408448, upload-time = "2025-10-24T19:04:20.951Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7c/60a2756d7feec7387db3a1176c632357632fbe7849fce576c5559d4520c7/hf_xet-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f182f264ed2acd566c514e45da9f2119110e48a87a327ca271027904c70c5832", size = 3503401, upload-time = "2025-10-24T19:04:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/4e/64/48fffbd67fb418ab07451e4ce641a70de1c40c10a13e25325e24858ebe5a/hf_xet-1.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:293a7a3787e5c95d7be1857358a9130694a9c6021de3f27fa233f37267174382", size = 2900866, upload-time = "2025-10-24T19:04:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/51/f7e2caae42f80af886db414d4e9885fac959330509089f97cccb339c6b87/hf_xet-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:10bfab528b968c70e062607f663e21e34e2bba349e8038db546646875495179e", size = 2861861, upload-time = "2025-10-24T19:04:19.01Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1d/a641a88b69994f9371bd347f1dd35e5d1e2e2460a2e350c8d5165fc62005/hf_xet-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a212e842647b02eb6a911187dc878e79c4aa0aa397e88dd3b26761676e8c1f8", size = 2717699, upload-time = "2025-10-24T19:04:17.306Z" }, + { url = "https://files.pythonhosted.org/packages/df/e0/e5e9bba7d15f0318955f7ec3f4af13f92e773fbb368c0b8008a5acbcb12f/hf_xet-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e06daccb3a7d4c065f34fc26c14c74f4653069bb2b194e7f18f17cbe9939c0", size = 3314885, upload-time = "2025-10-24T19:04:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/21/90/b7fe5ff6f2b7b8cbdf1bd56145f863c90a5807d9758a549bf3d916aa4dec/hf_xet-1.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:29c8fc913a529ec0a91867ce3d119ac1aac966e098cf49501800c870328cc090", size = 3221550, upload-time = "2025-10-24T19:04:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/6f/cb/73f276f0a7ce46cc6a6ec7d6c7d61cbfe5f2e107123d9bbd0193c355f106/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e159cbfcfbb29f920db2c09ed8b660eb894640d284f102ada929b6e3dc410a", size = 3408010, upload-time = "2025-10-24T19:04:28.598Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1e/d642a12caa78171f4be64f7cd9c40e3ca5279d055d0873188a58c0f5fbb9/hf_xet-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9c91d5ae931510107f148874e9e2de8a16052b6f1b3ca3c1b12f15ccb491390f", size = 3503264, upload-time = "2025-10-24T19:04:30.397Z" }, + { url = "https://files.pythonhosted.org/packages/17/b5/33764714923fa1ff922770f7ed18c2daae034d21ae6e10dbf4347c854154/hf_xet-1.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:210d577732b519ac6ede149d2f2f34049d44e8622bf14eb3d63bbcd2d4b332dc", size = 2901071, upload-time = "2025-10-24T19:04:37.463Z" }, + { url = "https://files.pythonhosted.org/packages/96/2d/22338486473df5923a9ab7107d375dbef9173c338ebef5098ef593d2b560/hf_xet-1.2.0-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:46740d4ac024a7ca9b22bebf77460ff43332868b661186a8e46c227fdae01848", size = 2866099, upload-time = "2025-10-24T19:04:15.366Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8c/c5becfa53234299bc2210ba314eaaae36c2875e0045809b82e40a9544f0c/hf_xet-1.2.0-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:27df617a076420d8845bea087f59303da8be17ed7ec0cd7ee3b9b9f579dff0e4", size = 2722178, upload-time = "2025-10-24T19:04:13.695Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/cf3ab0b652b082e66876d08da57fcc6fa2f0e6c70dfbbafbd470bb73eb47/hf_xet-1.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3651fd5bfe0281951b988c0facbe726aa5e347b103a675f49a3fa8144c7968fd", size = 3320214, upload-time = "2025-10-24T19:04:03.596Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/3f7ec4a1b6a65bf45b059b6d4a5d38988f63e193056de2f420137e3c3244/hf_xet-1.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d06fa97c8562fb3ee7a378dd9b51e343bc5bc8190254202c9771029152f5e08c", size = 3229054, upload-time = "2025-10-24T19:04:01.949Z" }, + { url = "https://files.pythonhosted.org/packages/0b/dd/7ac658d54b9fb7999a0ccb07ad863b413cbaf5cf172f48ebcd9497ec7263/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4c1428c9ae73ec0939410ec73023c4f842927f39db09b063b9482dac5a3bb737", size = 3413812, upload-time = "2025-10-24T19:04:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/92/68/89ac4e5b12a9ff6286a12174c8538a5930e2ed662091dd2572bbe0a18c8a/hf_xet-1.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a55558084c16b09b5ed32ab9ed38421e2d87cf3f1f89815764d1177081b99865", size = 3508920, upload-time = "2025-10-24T19:04:26.927Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/870d44b30e1dcfb6a65932e3e1506c103a8a5aea9103c337e7a53180322c/hf_xet-1.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:e6584a52253f72c9f52f9e549d5895ca7a471608495c4ecaa6cc73dba2b24d69", size = 2905735, upload-time = "2025-10-24T19:04:35.928Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "huggingface-hub" +version = "1.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "fsspec" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "shellingham" }, + { name = "tqdm" }, + { name = "typer-slim" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/94/42ed2ff780f4bc58acbe4b8cb98eb4574310ad6feba12f76a820e7546120/huggingface_hub-1.2.4.tar.gz", hash = "sha256:7a1d9ec4802e64372d1d152d69fb8e26d943f15a2289096fbc8e09e7b90c21a5", size = 614771, upload-time = "2026-01-06T11:01:29.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b0/113c4a688e7af9f0b92f5585cb425e71134e04c83a0a4a1e62db90edee20/huggingface_hub-1.2.4-py3-none-any.whl", hash = "sha256:2db69b91877d9d34825f5cd2a63b94f259011a77dcf761b437bf510fbe9522e9", size = 520980, upload-time = "2026-01-06T11:01:27.789Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "ipykernel" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579, upload-time = "2025-10-27T09:46:39.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968, upload-time = "2025-10-27T09:46:37.805Z" }, +] + +[[package]] +name = "ipympl" +version = "0.9.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipython" }, + { name = "ipywidgets" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/8c/f9e60abf409cef8234e66e69ce3fe263f1236b285f9105ea125e4660b77a/ipympl-0.9.8.tar.gz", hash = "sha256:6d7230d518384521093f3854f7db89d069dcd9c28a935b371e9c9f126354dee1", size = 58483988, upload-time = "2025-10-09T14:20:07.741Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/6e/9148bfed8ca535e4c61ce7843327c76ec7c63c40e33848ec03aa844a26af/ipympl-0.9.8-py3-none-any.whl", hash = "sha256:4a03612f77d92c9e2160c9e0d2a80b277e30387126399088f780dba9622247be", size = 515832, upload-time = "2025-10-09T14:20:05.39Z" }, +] + +[[package]] +name = "ipython" +version = "9.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/dd/fb08d22ec0c27e73c8bc8f71810709870d51cadaf27b7ddd3f011236c100/ipython-9.9.0.tar.gz", hash = "sha256:48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220", size = 4425043, upload-time = "2026-01-05T12:36:46.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/92/162cfaee4ccf370465c5af1ce36a9eacec1becb552f2033bb3584e6f640a/ipython-9.9.0-py3-none-any.whl", hash = "sha256:b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b", size = 621431, upload-time = "2026-01-05T12:36:44.669Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/ae/c5ce1edc1afe042eadb445e95b0671b03cee61895264357956e61c0d2ac0/ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668", size = 116739, upload-time = "2025-11-01T21:18:12.393Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e", size = 139808, upload-time = "2025-11-01T21:18:10.956Z" }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "json5" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/e8/a3f261a66e4663f22700bc8a17c08cb83e91fbf086726e7a228398968981/json5-0.13.0.tar.gz", hash = "sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf", size = 52441, upload-time = "2026-01-01T19:42:14.99Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/9e/038522f50ceb7e74f1f991bf1b699f24b0c2bbe7c390dd36ad69f4582258/json5-0.13.0-py3-none-any.whl", hash = "sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc", size = 36163, upload-time = "2026-01-01T19:42:13.962Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "rfc3987-syntax" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/27/d10de45e8ad4ce872372c4a3a37b7b35b6b064f6f023a5c14ffcced4d59d/jupyter_client-8.7.0.tar.gz", hash = "sha256:3357212d9cbe01209e59190f67a3a7e1f387a4f4e88d1e0433ad84d7b262531d", size = 344691, upload-time = "2025-12-09T18:37:01.953Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/f5/fddaec430367be9d62a7ed125530e133bfd4a1c0350fe221149ee0f2b526/jupyter_client-8.7.0-py3-none-any.whl", hash = "sha256:3671a94fd25e62f5f2f554f5e95389c2294d89822378a5f2dd24353e1494a9e0", size = 106215, upload-time = "2025-12-09T18:37:00.024Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/49/9d1284d0dc65e2c757b74c6687b6d319b02f822ad039e5c512df9194d9dd/jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508", size = 89814, upload-time = "2025-10-16T19:19:18.444Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/e7/80988e32bf6f73919a113473a604f5a8f09094de312b9d52b79c2df7612b/jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407", size = 29032, upload-time = "2025-10-16T19:19:16.783Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/5a/9066c9f8e94ee517133cd98dba393459a16cd48bba71a82f16a65415206c/jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245", size = 54823, upload-time = "2025-08-27T17:47:34.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/60/1f6cee0c46263de1173894f0fafcb3475ded276c472c14d25e0280c18d6d/jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f", size = 76687, upload-time = "2025-08-27T17:47:33.15Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/ac/e040ec363d7b6b1f11304cc9f209dac4517ece5d5e01821366b924a64a50/jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5", size = 731949, upload-time = "2025-08-21T14:42:54.042Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/80/a24767e6ca280f5a49525d987bf3e4d7552bf67c8be07e8ccf20271f8568/jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f", size = 388221, upload-time = "2025-08-21T14:42:52.034Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/21/413d142686a4e8f4268d985becbdb4daf060524726248e73be4773786987/jupyterlab-4.5.1.tar.gz", hash = "sha256:09da1ddfbd9eec18b5101dbb8515612aa1e47443321fb99503725a88e93d20d9", size = 23992251, upload-time = "2025-12-15T16:58:59.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/c3/acced767eecc11a70c65c45295db5396c4f0c1937874937d5a76d7b177b6/jupyterlab-4.5.1-py3-none-any.whl", hash = "sha256:31b059de96de0754ff1f2ce6279774b6aab8c34d7082e9752db58207c99bd514", size = 12384821, upload-time = "2025-12-15T16:58:55.563Z" }, +] + +[[package]] +name = "jupyterlab-myst" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/91/63e3c2c54c707050c9844563c810829a8834fecd0b6b2c3506c2d7dd6995/jupyterlab_myst-2.6.0.tar.gz", hash = "sha256:1502e776153a43588eeb26ce04fb20a0a401805e20edbc57090c9ac932bd42e0", size = 12941853, upload-time = "2025-12-14T20:59:30.685Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/70/f0563af672535bbecc96071ef1ade96f37433e68645a6ea45973dc07c915/jupyterlab_myst-2.6.0-py3-none-any.whl", hash = "sha256:9a0e0ffb318798998be91b7303ffca8a5f15c29bcf339c968c0c3edbc1926265", size = 2710158, upload-time = "2025-12-14T20:59:27.514Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.28.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/2c/90153f189e421e93c4bb4f9e3f59802a1f01abd2ac5cf40b152d7f735232/jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c", size = 76996, upload-time = "2025-10-22T13:59:18.37Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968", size = 59830, upload-time = "2025-10-22T13:59:16.767Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/2d/ef58fed122b268c69c0aa099da20bc67657cdfb2e222688d5731bd5b971d/jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0", size = 897423, upload-time = "2025-11-01T21:11:29.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/b5/36c712098e6191d1b4e349304ef73a8d06aed77e56ceaac8c0a306c7bda1/jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8", size = 914926, upload-time = "2025-11-01T21:11:28.008Z" }, +] + +[[package]] +name = "keras" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py" }, + { name = "h5py" }, + { name = "ml-dtypes" }, + { name = "namex" }, + { name = "numpy" }, + { name = "optree" }, + { name = "packaging" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/eb/960ec65476a6f5c9223fac7e6ae09999cd75a75fb87afe130e4b1d43f0ac/keras-3.13.0.tar.gz", hash = "sha256:ec51ad2ffcef086d0e3077ac461fa9e3bc54f91d94b49b7c9a84c9af7f54cf5e", size = 1153648, upload-time = "2025-12-17T23:49:25.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/d2/c6734cbf15288d75722ed3eb9d8ebf9204e48379c08160fd40fcd58a0c8b/keras-3.13.0-py3-none-any.whl", hash = "sha256:096793e2be6230816f3f7e030370e66c0f4a89707c59bf2d8fad3ca33869bd1c", size = 1512339, upload-time = "2025-12-17T23:49:24.46Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, +] + +[[package]] +name = "lark" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, +] + +[[package]] +name = "libclang" +version = "18.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/5c/ca35e19a4f142adffa27e3d652196b7362fa612243e2b916845d801454fc/libclang-18.1.1.tar.gz", hash = "sha256:a1214966d08d73d971287fc3ead8dfaf82eb07fb197680d8b3859dbbbbf78250", size = 39612, upload-time = "2024-03-17T16:04:37.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/49/f5e3e7e1419872b69f6f5e82ba56e33955a74bd537d8a1f5f1eff2f3668a/libclang-18.1.1-1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:0b2e143f0fac830156feb56f9231ff8338c20aecfe72b4ffe96f19e5a1dbb69a", size = 25836045, upload-time = "2024-06-30T17:40:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e5/fc61bbded91a8830ccce94c5294ecd6e88e496cc85f6704bf350c0634b70/libclang-18.1.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:6f14c3f194704e5d09769108f03185fce7acaf1d1ae4bbb2f30a72c2400cb7c5", size = 26502641, upload-time = "2024-03-18T15:52:26.722Z" }, + { url = "https://files.pythonhosted.org/packages/db/ed/1df62b44db2583375f6a8a5e2ca5432bbdc3edb477942b9b7c848c720055/libclang-18.1.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:83ce5045d101b669ac38e6da8e58765f12da2d3aafb3b9b98d88b286a60964d8", size = 26420207, upload-time = "2024-03-17T15:00:26.63Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fc/716c1e62e512ef1c160e7984a73a5fc7df45166f2ff3f254e71c58076f7c/libclang-18.1.1-py2.py3-none-manylinux2010_x86_64.whl", hash = "sha256:c533091d8a3bbf7460a00cb6c1a71da93bffe148f172c7d03b1c31fbf8aa2a0b", size = 24515943, upload-time = "2024-03-17T16:03:45.942Z" }, + { url = "https://files.pythonhosted.org/packages/3c/3d/f0ac1150280d8d20d059608cf2d5ff61b7c3b7f7bcf9c0f425ab92df769a/libclang-18.1.1-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:54dda940a4a0491a9d1532bf071ea3ef26e6dbaf03b5000ed94dd7174e8f9592", size = 23784972, upload-time = "2024-03-17T16:12:47.677Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2f/d920822c2b1ce9326a4c78c0c2b4aa3fde610c7ee9f631b600acb5376c26/libclang-18.1.1-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:cf4a99b05376513717ab5d82a0db832c56ccea4fd61a69dbb7bccf2dfb207dbe", size = 20259606, upload-time = "2024-03-17T16:17:42.437Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c2/de1db8c6d413597076a4259cea409b83459b2db997c003578affdd32bf66/libclang-18.1.1-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:69f8eb8f65c279e765ffd28aaa7e9e364c776c17618af8bff22a8df58677ff4f", size = 24921494, upload-time = "2024-03-17T16:14:20.132Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2d/3f480b1e1d31eb3d6de5e3ef641954e5c67430d5ac93b7fa7e07589576c7/libclang-18.1.1-py2.py3-none-win_amd64.whl", hash = "sha256:4dd2d3b82fab35e2bf9ca717d7b63ac990a3519c7e312f19fa8e86dcc712f7fb", size = 26415083, upload-time = "2024-03-17T16:42:21.703Z" }, + { url = "https://files.pythonhosted.org/packages/71/cf/e01dc4cc79779cd82d77888a88ae2fa424d93b445ad4f6c02bfc18335b70/libclang-18.1.1-py2.py3-none-win_arm64.whl", hash = "sha256:3f0e1f49f04d3cd198985fea0511576b0aee16f9ff0e0f0cad7f9c57ec3c20e8", size = 22361112, upload-time = "2024-03-17T16:42:59.565Z" }, +] + +[[package]] +name = "markdown" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/ab/7dd27d9d863b3376fcf23a5a13cb5d024aed1db46f963f1b5735ae43b3be/markdown-3.10.tar.gz", hash = "sha256:37062d4f2aa4b2b6b32aefb80faa300f82cc790cb949a35b8caede34f2b68c0e", size = 364931, upload-time = "2025-11-03T19:51:15.007Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl", hash = "sha256:b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c", size = 107678, upload-time = "2025-11-03T19:51:13.887Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" }, + { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" }, + { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" }, + { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" }, + { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" }, + { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" }, + { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" }, + { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" }, + { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" }, + { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" }, + { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" }, + { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" }, + { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" }, + { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" }, + { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/74/97e72a36efd4ae2bccb3463284300f8953f199b5ffbc04cbbb0ec78f74b1/matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe", size = 8110, upload-time = "2025-10-23T09:00:22.126Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516, upload-time = "2025-10-23T09:00:20.675Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mistune" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/55/d01f0c4b45ade6536c51170b9043db8b2ec6ddf4a35c7ea3f5f559ac935b/mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a", size = 95467, upload-time = "2025-12-23T11:36:34.994Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1", size = 53598, upload-time = "2025-12-23T11:36:33.211Z" }, +] + +[[package]] +name = "ml-dtypes" +version = "0.5.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/b8/3c70881695e056f8a32f8b941126cf78775d9a4d7feba8abcb52cb7b04f2/ml_dtypes-0.5.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a174837a64f5b16cab6f368171a1a03a27936b31699d167684073ff1c4237dac", size = 676927, upload-time = "2025-11-17T22:31:48.182Z" }, + { url = "https://files.pythonhosted.org/packages/54/0f/428ef6881782e5ebb7eca459689448c0394fa0a80bea3aa9262cba5445ea/ml_dtypes-0.5.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a7f7c643e8b1320fd958bf098aa7ecf70623a42ec5154e3be3be673f4c34d900", size = 5028464, upload-time = "2025-11-17T22:31:50.135Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cb/28ce52eb94390dda42599c98ea0204d74799e4d8047a0eb559b6fd648056/ml_dtypes-0.5.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ad459e99793fa6e13bd5b7e6792c8f9190b4e5a1b45c63aba14a4d0a7f1d5ff", size = 5009002, upload-time = "2025-11-17T22:31:52.001Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f0/0cfadd537c5470378b1b32bd859cf2824972174b51b873c9d95cfd7475a5/ml_dtypes-0.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:c1a953995cccb9e25a4ae19e34316671e4e2edaebe4cf538229b1fc7109087b7", size = 212222, upload-time = "2025-11-17T22:31:53.742Z" }, + { url = "https://files.pythonhosted.org/packages/16/2e/9acc86985bfad8f2c2d30291b27cd2bb4c74cea08695bd540906ed744249/ml_dtypes-0.5.4-cp312-cp312-win_arm64.whl", hash = "sha256:9bad06436568442575beb2d03389aa7456c690a5b05892c471215bfd8cf39460", size = 160793, upload-time = "2025-11-17T22:31:55.358Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a1/4008f14bbc616cfb1ac5b39ea485f9c63031c4634ab3f4cf72e7541f816a/ml_dtypes-0.5.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c760d85a2f82e2bed75867079188c9d18dae2ee77c25a54d60e9cc79be1bc48", size = 676888, upload-time = "2025-11-17T22:31:56.907Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b7/dff378afc2b0d5a7d6cd9d3209b60474d9819d1189d347521e1688a60a53/ml_dtypes-0.5.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce756d3a10d0c4067172804c9cc276ba9cc0ff47af9078ad439b075d1abdc29b", size = 5036993, upload-time = "2025-11-17T22:31:58.497Z" }, + { url = "https://files.pythonhosted.org/packages/eb/33/40cd74219417e78b97c47802037cf2d87b91973e18bb968a7da48a96ea44/ml_dtypes-0.5.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:533ce891ba774eabf607172254f2e7260ba5f57bdd64030c9a4fcfbd99815d0d", size = 5010956, upload-time = "2025-11-17T22:31:59.931Z" }, + { url = "https://files.pythonhosted.org/packages/e1/8b/200088c6859d8221454825959df35b5244fa9bdf263fd0249ac5fb75e281/ml_dtypes-0.5.4-cp313-cp313-win_amd64.whl", hash = "sha256:f21c9219ef48ca5ee78402d5cc831bd58ea27ce89beda894428bc67a52da5328", size = 212224, upload-time = "2025-11-17T22:32:01.349Z" }, + { url = "https://files.pythonhosted.org/packages/8f/75/dfc3775cb36367816e678f69a7843f6f03bd4e2bcd79941e01ea960a068e/ml_dtypes-0.5.4-cp313-cp313-win_arm64.whl", hash = "sha256:35f29491a3e478407f7047b8a4834e4640a77d2737e0b294d049746507af5175", size = 160798, upload-time = "2025-11-17T22:32:02.864Z" }, + { url = "https://files.pythonhosted.org/packages/4f/74/e9ddb35fd1dd43b1106c20ced3f53c2e8e7fc7598c15638e9f80677f81d4/ml_dtypes-0.5.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:304ad47faa395415b9ccbcc06a0350800bc50eda70f0e45326796e27c62f18b6", size = 702083, upload-time = "2025-11-17T22:32:04.08Z" }, + { url = "https://files.pythonhosted.org/packages/74/f5/667060b0aed1aa63166b22897fdf16dca9eb704e6b4bbf86848d5a181aa7/ml_dtypes-0.5.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a0df4223b514d799b8a1629c65ddc351b3efa833ccf7f8ea0cf654a61d1e35d", size = 5354111, upload-time = "2025-11-17T22:32:05.546Z" }, + { url = "https://files.pythonhosted.org/packages/40/49/0f8c498a28c0efa5f5c95a9e374c83ec1385ca41d0e85e7cf40e5d519a21/ml_dtypes-0.5.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:531eff30e4d368cb6255bc2328d070e35836aa4f282a0fb5f3a0cd7260257298", size = 5366453, upload-time = "2025-11-17T22:32:07.115Z" }, + { url = "https://files.pythonhosted.org/packages/8c/27/12607423d0a9c6bbbcc780ad19f1f6baa2b68b18ce4bddcdc122c4c68dc9/ml_dtypes-0.5.4-cp313-cp313t-win_amd64.whl", hash = "sha256:cb73dccfc991691c444acc8c0012bee8f2470da826a92e3a20bb333b1a7894e6", size = 225612, upload-time = "2025-11-17T22:32:08.615Z" }, + { url = "https://files.pythonhosted.org/packages/e5/80/5a5929e92c72936d5b19872c5fb8fc09327c1da67b3b68c6a13139e77e20/ml_dtypes-0.5.4-cp313-cp313t-win_arm64.whl", hash = "sha256:3bbbe120b915090d9dd1375e4684dd17a20a2491ef25d640a908281da85e73f1", size = 164145, upload-time = "2025-11-17T22:32:09.782Z" }, + { url = "https://files.pythonhosted.org/packages/72/4e/1339dc6e2557a344f5ba5590872e80346f76f6cb2ac3dd16e4666e88818c/ml_dtypes-0.5.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:2b857d3af6ac0d39db1de7c706e69c7f9791627209c3d6dedbfca8c7e5faec22", size = 673781, upload-time = "2025-11-17T22:32:11.364Z" }, + { url = "https://files.pythonhosted.org/packages/04/f9/067b84365c7e83bda15bba2b06c6ca250ce27b20630b1128c435fb7a09aa/ml_dtypes-0.5.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:805cef3a38f4eafae3a5bf9ebdcdb741d0bcfd9e1bd90eb54abd24f928cd2465", size = 5036145, upload-time = "2025-11-17T22:32:12.783Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/82c7dcf38070b46172a517e2334e665c5bf374a262f99a283ea454bece7c/ml_dtypes-0.5.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14a4fd3228af936461db66faccef6e4f41c1d82fcc30e9f8d58a08916b1d811f", size = 5010230, upload-time = "2025-11-17T22:32:14.38Z" }, + { url = "https://files.pythonhosted.org/packages/e9/93/2bfed22d2498c468f6bcd0d9f56b033eaa19f33320389314c19ef6766413/ml_dtypes-0.5.4-cp314-cp314-win_amd64.whl", hash = "sha256:8c6a2dcebd6f3903e05d51960a8058d6e131fe69f952a5397e5dbabc841b6d56", size = 221032, upload-time = "2025-11-17T22:32:15.763Z" }, + { url = "https://files.pythonhosted.org/packages/76/a3/9c912fe6ea747bb10fe2f8f54d027eb265db05dfb0c6335e3e063e74e6e8/ml_dtypes-0.5.4-cp314-cp314-win_arm64.whl", hash = "sha256:5a0f68ca8fd8d16583dfa7793973feb86f2fbb56ce3966daf9c9f748f52a2049", size = 163353, upload-time = "2025-11-17T22:32:16.932Z" }, + { url = "https://files.pythonhosted.org/packages/cd/02/48aa7d84cc30ab4ee37624a2fd98c56c02326785750cd212bc0826c2f15b/ml_dtypes-0.5.4-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:bfc534409c5d4b0bf945af29e5d0ab075eae9eecbb549ff8a29280db822f34f9", size = 702085, upload-time = "2025-11-17T22:32:18.175Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e7/85cb99fe80a7a5513253ec7faa88a65306be071163485e9a626fce1b6e84/ml_dtypes-0.5.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2314892cdc3fcf05e373d76d72aaa15fda9fb98625effa73c1d646f331fcecb7", size = 5355358, upload-time = "2025-11-17T22:32:19.7Z" }, + { url = "https://files.pythonhosted.org/packages/79/2b/a826ba18d2179a56e144aef69e57fb2ab7c464ef0b2111940ee8a3a223a2/ml_dtypes-0.5.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d2ffd05a2575b1519dc928c0b93c06339eb67173ff53acb00724502cda231cf", size = 5366332, upload-time = "2025-11-17T22:32:21.193Z" }, + { url = "https://files.pythonhosted.org/packages/84/44/f4d18446eacb20ea11e82f133ea8f86e2bf2891785b67d9da8d0ab0ef525/ml_dtypes-0.5.4-cp314-cp314t-win_amd64.whl", hash = "sha256:4381fe2f2452a2d7589689693d3162e876b3ddb0a832cde7a414f8e1adf7eab1", size = 236612, upload-time = "2025-11-17T22:32:22.579Z" }, + { url = "https://files.pythonhosted.org/packages/ad/3f/3d42e9a78fe5edf792a83c074b13b9b770092a4fbf3462872f4303135f09/ml_dtypes-0.5.4-cp314-cp314t-win_arm64.whl", hash = "sha256:11942cbf2cf92157db91e5022633c0d9474d4dfd813a909383bd23ce828a4b7d", size = 168825, upload-time = "2025-11-17T22:32:23.766Z" }, +] + +[[package]] +name = "multidict" +version = "6.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/80/1e/5492c365f222f907de1039b91f922b93fa4f764c713ee858d235495d8f50/multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", size = 101834, upload-time = "2025-10-06T14:52:30.657Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/9e/9f61ac18d9c8b475889f32ccfa91c9f59363480613fc807b6e3023d6f60b/multidict-6.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184", size = 76877, upload-time = "2025-10-06T14:49:20.884Z" }, + { url = "https://files.pythonhosted.org/packages/38/6f/614f09a04e6184f8824268fce4bc925e9849edfa654ddd59f0b64508c595/multidict-6.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45", size = 45467, upload-time = "2025-10-06T14:49:22.054Z" }, + { url = "https://files.pythonhosted.org/packages/b3/93/c4f67a436dd026f2e780c433277fff72be79152894d9fc36f44569cab1a6/multidict-6.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa", size = 43834, upload-time = "2025-10-06T14:49:23.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f5/013798161ca665e4a422afbc5e2d9e4070142a9ff8905e482139cd09e4d0/multidict-6.7.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7", size = 250545, upload-time = "2025-10-06T14:49:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/71/2f/91dbac13e0ba94669ea5119ba267c9a832f0cb65419aca75549fcf09a3dc/multidict-6.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e", size = 258305, upload-time = "2025-10-06T14:49:26.778Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b0/754038b26f6e04488b48ac621f779c341338d78503fb45403755af2df477/multidict-6.7.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546", size = 242363, upload-time = "2025-10-06T14:49:28.562Z" }, + { url = "https://files.pythonhosted.org/packages/87/15/9da40b9336a7c9fa606c4cf2ed80a649dffeb42b905d4f63a1d7eb17d746/multidict-6.7.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4", size = 268375, upload-time = "2025-10-06T14:49:29.96Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/c53fcade0cc94dfaad583105fd92b3a783af2091eddcb41a6d5a52474000/multidict-6.7.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1", size = 269346, upload-time = "2025-10-06T14:49:31.404Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e2/9baffdae21a76f77ef8447f1a05a96ec4bc0a24dae08767abc0a2fe680b8/multidict-6.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d", size = 256107, upload-time = "2025-10-06T14:49:32.974Z" }, + { url = "https://files.pythonhosted.org/packages/3c/06/3f06f611087dc60d65ef775f1fb5aca7c6d61c6db4990e7cda0cef9b1651/multidict-6.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304", size = 253592, upload-time = "2025-10-06T14:49:34.52Z" }, + { url = "https://files.pythonhosted.org/packages/20/24/54e804ec7945b6023b340c412ce9c3f81e91b3bf5fa5ce65558740141bee/multidict-6.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12", size = 251024, upload-time = "2025-10-06T14:49:35.956Z" }, + { url = "https://files.pythonhosted.org/packages/14/48/011cba467ea0b17ceb938315d219391d3e421dfd35928e5dbdc3f4ae76ef/multidict-6.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62", size = 251484, upload-time = "2025-10-06T14:49:37.631Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2f/919258b43bb35b99fa127435cfb2d91798eb3a943396631ef43e3720dcf4/multidict-6.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0", size = 263579, upload-time = "2025-10-06T14:49:39.502Z" }, + { url = "https://files.pythonhosted.org/packages/31/22/a0e884d86b5242b5a74cf08e876bdf299e413016b66e55511f7a804a366e/multidict-6.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a", size = 259654, upload-time = "2025-10-06T14:49:41.32Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e5/17e10e1b5c5f5a40f2fcbb45953c9b215f8a4098003915e46a93f5fcaa8f/multidict-6.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8", size = 251511, upload-time = "2025-10-06T14:49:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9a/201bb1e17e7af53139597069c375e7b0dcbd47594604f65c2d5359508566/multidict-6.7.0-cp312-cp312-win32.whl", hash = "sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4", size = 41895, upload-time = "2025-10-06T14:49:48.718Z" }, + { url = "https://files.pythonhosted.org/packages/46/e2/348cd32faad84eaf1d20cce80e2bb0ef8d312c55bca1f7fa9865e7770aaf/multidict-6.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b", size = 46073, upload-time = "2025-10-06T14:49:50.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ec/aad2613c1910dce907480e0c3aa306905830f25df2e54ccc9dea450cb5aa/multidict-6.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec", size = 43226, upload-time = "2025-10-06T14:49:52.304Z" }, + { url = "https://files.pythonhosted.org/packages/d2/86/33272a544eeb36d66e4d9a920602d1a2f57d4ebea4ef3cdfe5a912574c95/multidict-6.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6", size = 76135, upload-time = "2025-10-06T14:49:54.26Z" }, + { url = "https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159", size = 45117, upload-time = "2025-10-06T14:49:55.82Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d8/6c3442322e41fb1dd4de8bd67bfd11cd72352ac131f6368315617de752f1/multidict-6.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca", size = 43472, upload-time = "2025-10-06T14:49:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/75/3f/e2639e80325af0b6c6febdf8e57cc07043ff15f57fa1ef808f4ccb5ac4cd/multidict-6.7.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cd240939f71c64bd658f186330603aac1a9a81bf6273f523fca63673cb7378a8", size = 249342, upload-time = "2025-10-06T14:49:58.368Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cc/84e0585f805cbeaa9cbdaa95f9a3d6aed745b9d25700623ac89a6ecff400/multidict-6.7.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60a4d75718a5efa473ebd5ab685786ba0c67b8381f781d1be14da49f1a2dc60", size = 257082, upload-time = "2025-10-06T14:49:59.89Z" }, + { url = "https://files.pythonhosted.org/packages/b0/9c/ac851c107c92289acbbf5cfb485694084690c1b17e555f44952c26ddc5bd/multidict-6.7.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:53a42d364f323275126aff81fb67c5ca1b7a04fda0546245730a55c8c5f24bc4", size = 240704, upload-time = "2025-10-06T14:50:01.485Z" }, + { url = "https://files.pythonhosted.org/packages/50/cc/5f93e99427248c09da95b62d64b25748a5f5c98c7c2ab09825a1d6af0e15/multidict-6.7.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3b29b980d0ddbecb736735ee5bef69bb2ddca56eff603c86f3f29a1128299b4f", size = 266355, upload-time = "2025-10-06T14:50:02.955Z" }, + { url = "https://files.pythonhosted.org/packages/ec/0c/2ec1d883ceb79c6f7f6d7ad90c919c898f5d1c6ea96d322751420211e072/multidict-6.7.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f8a93b1c0ed2d04b97a5e9336fd2d33371b9a6e29ab7dd6503d63407c20ffbaf", size = 267259, upload-time = "2025-10-06T14:50:04.446Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32", size = 254903, upload-time = "2025-10-06T14:50:05.98Z" }, + { url = "https://files.pythonhosted.org/packages/06/c9/11ea263ad0df7dfabcad404feb3c0dd40b131bc7f232d5537f2fb1356951/multidict-6.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7516c579652f6a6be0e266aec0acd0db80829ca305c3d771ed898538804c2036", size = 252365, upload-time = "2025-10-06T14:50:07.511Z" }, + { url = "https://files.pythonhosted.org/packages/41/88/d714b86ee2c17d6e09850c70c9d310abac3d808ab49dfa16b43aba9d53fd/multidict-6.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:040f393368e63fb0f3330e70c26bfd336656bed925e5cbe17c9da839a6ab13ec", size = 250062, upload-time = "2025-10-06T14:50:09.074Z" }, + { url = "https://files.pythonhosted.org/packages/15/fe/ad407bb9e818c2b31383f6131ca19ea7e35ce93cf1310fce69f12e89de75/multidict-6.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b3bc26a951007b1057a1c543af845f1c7e3e71cc240ed1ace7bf4484aa99196e", size = 249683, upload-time = "2025-10-06T14:50:10.714Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a4/a89abdb0229e533fb925e7c6e5c40201c2873efebc9abaf14046a4536ee6/multidict-6.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7b022717c748dd1992a83e219587aabe45980d88969f01b316e78683e6285f64", size = 261254, upload-time = "2025-10-06T14:50:12.28Z" }, + { url = "https://files.pythonhosted.org/packages/8d/aa/0e2b27bd88b40a4fb8dc53dd74eecac70edaa4c1dd0707eb2164da3675b3/multidict-6.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:9600082733859f00d79dee64effc7aef1beb26adb297416a4ad2116fd61374bd", size = 257967, upload-time = "2025-10-06T14:50:14.16Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8e/0c67b7120d5d5f6d874ed85a085f9dc770a7f9d8813e80f44a9fec820bb7/multidict-6.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:94218fcec4d72bc61df51c198d098ce2b378e0ccbac41ddbed5ef44092913288", size = 250085, upload-time = "2025-10-06T14:50:15.639Z" }, + { url = "https://files.pythonhosted.org/packages/ba/55/b73e1d624ea4b8fd4dd07a3bb70f6e4c7c6c5d9d640a41c6ffe5cdbd2a55/multidict-6.7.0-cp313-cp313-win32.whl", hash = "sha256:a37bd74c3fa9d00be2d7b8eca074dc56bd8077ddd2917a839bd989612671ed17", size = 41713, upload-time = "2025-10-06T14:50:17.066Z" }, + { url = "https://files.pythonhosted.org/packages/32/31/75c59e7d3b4205075b4c183fa4ca398a2daf2303ddf616b04ae6ef55cffe/multidict-6.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:30d193c6cc6d559db42b6bcec8a5d395d34d60c9877a0b71ecd7c204fcf15390", size = 45915, upload-time = "2025-10-06T14:50:18.264Z" }, + { url = "https://files.pythonhosted.org/packages/31/2a/8987831e811f1184c22bc2e45844934385363ee61c0a2dcfa8f71b87e608/multidict-6.7.0-cp313-cp313-win_arm64.whl", hash = "sha256:ea3334cabe4d41b7ccd01e4d349828678794edbc2d3ae97fc162a3312095092e", size = 43077, upload-time = "2025-10-06T14:50:19.853Z" }, + { url = "https://files.pythonhosted.org/packages/e8/68/7b3a5170a382a340147337b300b9eb25a9ddb573bcdfff19c0fa3f31ffba/multidict-6.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:ad9ce259f50abd98a1ca0aa6e490b58c316a0fce0617f609723e40804add2c00", size = 83114, upload-time = "2025-10-06T14:50:21.223Z" }, + { url = "https://files.pythonhosted.org/packages/55/5c/3fa2d07c84df4e302060f555bbf539310980362236ad49f50eeb0a1c1eb9/multidict-6.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07f5594ac6d084cbb5de2df218d78baf55ef150b91f0ff8a21cc7a2e3a5a58eb", size = 48442, upload-time = "2025-10-06T14:50:22.871Z" }, + { url = "https://files.pythonhosted.org/packages/fc/56/67212d33239797f9bd91962bb899d72bb0f4c35a8652dcdb8ed049bef878/multidict-6.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0591b48acf279821a579282444814a2d8d0af624ae0bc600aa4d1b920b6e924b", size = 46885, upload-time = "2025-10-06T14:50:24.258Z" }, + { url = "https://files.pythonhosted.org/packages/46/d1/908f896224290350721597a61a69cd19b89ad8ee0ae1f38b3f5cd12ea2ac/multidict-6.7.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:749a72584761531d2b9467cfbdfd29487ee21124c304c4b6cb760d8777b27f9c", size = 242588, upload-time = "2025-10-06T14:50:25.716Z" }, + { url = "https://files.pythonhosted.org/packages/ab/67/8604288bbd68680eee0ab568fdcb56171d8b23a01bcd5cb0c8fedf6e5d99/multidict-6.7.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b4c3d199f953acd5b446bf7c0de1fe25d94e09e79086f8dc2f48a11a129cdf1", size = 249966, upload-time = "2025-10-06T14:50:28.192Z" }, + { url = "https://files.pythonhosted.org/packages/20/33/9228d76339f1ba51e3efef7da3ebd91964d3006217aae13211653193c3ff/multidict-6.7.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9fb0211dfc3b51efea2f349ec92c114d7754dd62c01f81c3e32b765b70c45c9b", size = 228618, upload-time = "2025-10-06T14:50:29.82Z" }, + { url = "https://files.pythonhosted.org/packages/f8/2d/25d9b566d10cab1c42b3b9e5b11ef79c9111eaf4463b8c257a3bd89e0ead/multidict-6.7.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a027ec240fe73a8d6281872690b988eed307cd7d91b23998ff35ff577ca688b5", size = 257539, upload-time = "2025-10-06T14:50:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b1/8d1a965e6637fc33de3c0d8f414485c2b7e4af00f42cab3d84e7b955c222/multidict-6.7.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1d964afecdf3a8288789df2f5751dc0a8261138c3768d9af117ed384e538fad", size = 256345, upload-time = "2025-10-06T14:50:33.26Z" }, + { url = "https://files.pythonhosted.org/packages/ba/0c/06b5a8adbdeedada6f4fb8d8f193d44a347223b11939b42953eeb6530b6b/multidict-6.7.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:caf53b15b1b7df9fbd0709aa01409000a2b4dd03a5f6f5cc548183c7c8f8b63c", size = 247934, upload-time = "2025-10-06T14:50:34.808Z" }, + { url = "https://files.pythonhosted.org/packages/8f/31/b2491b5fe167ca044c6eb4b8f2c9f3b8a00b24c432c365358eadac5d7625/multidict-6.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:654030da3197d927f05a536a66186070e98765aa5142794c9904555d3a9d8fb5", size = 245243, upload-time = "2025-10-06T14:50:36.436Z" }, + { url = "https://files.pythonhosted.org/packages/61/1a/982913957cb90406c8c94f53001abd9eafc271cb3e70ff6371590bec478e/multidict-6.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:2090d3718829d1e484706a2f525e50c892237b2bf9b17a79b059cb98cddc2f10", size = 235878, upload-time = "2025-10-06T14:50:37.953Z" }, + { url = "https://files.pythonhosted.org/packages/be/c0/21435d804c1a1cf7a2608593f4d19bca5bcbd7a81a70b253fdd1c12af9c0/multidict-6.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d2cfeec3f6f45651b3d408c4acec0ebf3daa9bc8a112a084206f5db5d05b754", size = 243452, upload-time = "2025-10-06T14:50:39.574Z" }, + { url = "https://files.pythonhosted.org/packages/54/0a/4349d540d4a883863191be6eb9a928846d4ec0ea007d3dcd36323bb058ac/multidict-6.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:4ef089f985b8c194d341eb2c24ae6e7408c9a0e2e5658699c92f497437d88c3c", size = 252312, upload-time = "2025-10-06T14:50:41.612Z" }, + { url = "https://files.pythonhosted.org/packages/26/64/d5416038dbda1488daf16b676e4dbfd9674dde10a0cc8f4fc2b502d8125d/multidict-6.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e93a0617cd16998784bf4414c7e40f17a35d2350e5c6f0bd900d3a8e02bd3762", size = 246935, upload-time = "2025-10-06T14:50:43.972Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8c/8290c50d14e49f35e0bd4abc25e1bc7711149ca9588ab7d04f886cdf03d9/multidict-6.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f0feece2ef8ebc42ed9e2e8c78fc4aa3cf455733b507c09ef7406364c94376c6", size = 243385, upload-time = "2025-10-06T14:50:45.648Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a0/f83ae75e42d694b3fbad3e047670e511c138be747bc713cf1b10d5096416/multidict-6.7.0-cp313-cp313t-win32.whl", hash = "sha256:19a1d55338ec1be74ef62440ca9e04a2f001a04d0cc49a4983dc320ff0f3212d", size = 47777, upload-time = "2025-10-06T14:50:47.154Z" }, + { url = "https://files.pythonhosted.org/packages/dc/80/9b174a92814a3830b7357307a792300f42c9e94664b01dee8e457551fa66/multidict-6.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3da4fb467498df97e986af166b12d01f05d2e04f978a9c1c680ea1988e0bc4b6", size = 53104, upload-time = "2025-10-06T14:50:48.851Z" }, + { url = "https://files.pythonhosted.org/packages/cc/28/04baeaf0428d95bb7a7bea0e691ba2f31394338ba424fb0679a9ed0f4c09/multidict-6.7.0-cp313-cp313t-win_arm64.whl", hash = "sha256:b4121773c49a0776461f4a904cdf6264c88e42218aaa8407e803ca8025872792", size = 45503, upload-time = "2025-10-06T14:50:50.16Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b1/3da6934455dd4b261d4c72f897e3a5728eba81db59959f3a639245891baa/multidict-6.7.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842", size = 75128, upload-time = "2025-10-06T14:50:51.92Z" }, + { url = "https://files.pythonhosted.org/packages/14/2c/f069cab5b51d175a1a2cb4ccdf7a2c2dabd58aa5bd933fa036a8d15e2404/multidict-6.7.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b", size = 44410, upload-time = "2025-10-06T14:50:53.275Z" }, + { url = "https://files.pythonhosted.org/packages/42/e2/64bb41266427af6642b6b128e8774ed84c11b80a90702c13ac0a86bb10cc/multidict-6.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38", size = 43205, upload-time = "2025-10-06T14:50:54.911Z" }, + { url = "https://files.pythonhosted.org/packages/02/68/6b086fef8a3f1a8541b9236c594f0c9245617c29841f2e0395d979485cde/multidict-6.7.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128", size = 245084, upload-time = "2025-10-06T14:50:56.369Z" }, + { url = "https://files.pythonhosted.org/packages/15/ee/f524093232007cd7a75c1d132df70f235cfd590a7c9eaccd7ff422ef4ae8/multidict-6.7.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34", size = 252667, upload-time = "2025-10-06T14:50:57.991Z" }, + { url = "https://files.pythonhosted.org/packages/02/a5/eeb3f43ab45878f1895118c3ef157a480db58ede3f248e29b5354139c2c9/multidict-6.7.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99", size = 233590, upload-time = "2025-10-06T14:50:59.589Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/76d02f8270b97269d7e3dbd45644b1785bda457b474315f8cf999525a193/multidict-6.7.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202", size = 264112, upload-time = "2025-10-06T14:51:01.183Z" }, + { url = "https://files.pythonhosted.org/packages/76/0b/c28a70ecb58963847c2a8efe334904cd254812b10e535aefb3bcce513918/multidict-6.7.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1", size = 261194, upload-time = "2025-10-06T14:51:02.794Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/2ab26e4209773223159b83aa32721b4021ffb08102f8ac7d689c943fded1/multidict-6.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3", size = 248510, upload-time = "2025-10-06T14:51:04.724Z" }, + { url = "https://files.pythonhosted.org/packages/93/cd/06c1fa8282af1d1c46fd55c10a7930af652afdce43999501d4d68664170c/multidict-6.7.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d", size = 248395, upload-time = "2025-10-06T14:51:06.306Z" }, + { url = "https://files.pythonhosted.org/packages/99/ac/82cb419dd6b04ccf9e7e61befc00c77614fc8134362488b553402ecd55ce/multidict-6.7.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6", size = 239520, upload-time = "2025-10-06T14:51:08.091Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f3/a0f9bf09493421bd8716a362e0cd1d244f5a6550f5beffdd6b47e885b331/multidict-6.7.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7", size = 245479, upload-time = "2025-10-06T14:51:10.365Z" }, + { url = "https://files.pythonhosted.org/packages/8d/01/476d38fc73a212843f43c852b0eee266b6971f0e28329c2184a8df90c376/multidict-6.7.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb", size = 258903, upload-time = "2025-10-06T14:51:12.466Z" }, + { url = "https://files.pythonhosted.org/packages/49/6d/23faeb0868adba613b817d0e69c5f15531b24d462af8012c4f6de4fa8dc3/multidict-6.7.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f", size = 252333, upload-time = "2025-10-06T14:51:14.48Z" }, + { url = "https://files.pythonhosted.org/packages/1e/cc/48d02ac22b30fa247f7dad82866e4b1015431092f4ba6ebc7e77596e0b18/multidict-6.7.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f", size = 243411, upload-time = "2025-10-06T14:51:16.072Z" }, + { url = "https://files.pythonhosted.org/packages/4a/03/29a8bf5a18abf1fe34535c88adbdfa88c9fb869b5a3b120692c64abe8284/multidict-6.7.0-cp314-cp314-win32.whl", hash = "sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885", size = 40940, upload-time = "2025-10-06T14:51:17.544Z" }, + { url = "https://files.pythonhosted.org/packages/82/16/7ed27b680791b939de138f906d5cf2b4657b0d45ca6f5dd6236fdddafb1a/multidict-6.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c", size = 45087, upload-time = "2025-10-06T14:51:18.875Z" }, + { url = "https://files.pythonhosted.org/packages/cd/3c/e3e62eb35a1950292fe39315d3c89941e30a9d07d5d2df42965ab041da43/multidict-6.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000", size = 42368, upload-time = "2025-10-06T14:51:20.225Z" }, + { url = "https://files.pythonhosted.org/packages/8b/40/cd499bd0dbc5f1136726db3153042a735fffd0d77268e2ee20d5f33c010f/multidict-6.7.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63", size = 82326, upload-time = "2025-10-06T14:51:21.588Z" }, + { url = "https://files.pythonhosted.org/packages/13/8a/18e031eca251c8df76daf0288e6790561806e439f5ce99a170b4af30676b/multidict-6.7.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718", size = 48065, upload-time = "2025-10-06T14:51:22.93Z" }, + { url = "https://files.pythonhosted.org/packages/40/71/5e6701277470a87d234e433fb0a3a7deaf3bcd92566e421e7ae9776319de/multidict-6.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2", size = 46475, upload-time = "2025-10-06T14:51:24.352Z" }, + { url = "https://files.pythonhosted.org/packages/fe/6a/bab00cbab6d9cfb57afe1663318f72ec28289ea03fd4e8236bb78429893a/multidict-6.7.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e", size = 239324, upload-time = "2025-10-06T14:51:25.822Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5f/8de95f629fc22a7769ade8b41028e3e5a822c1f8904f618d175945a81ad3/multidict-6.7.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064", size = 246877, upload-time = "2025-10-06T14:51:27.604Z" }, + { url = "https://files.pythonhosted.org/packages/23/b4/38881a960458f25b89e9f4a4fdcb02ac101cfa710190db6e5528841e67de/multidict-6.7.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e", size = 225824, upload-time = "2025-10-06T14:51:29.664Z" }, + { url = "https://files.pythonhosted.org/packages/1e/39/6566210c83f8a261575f18e7144736059f0c460b362e96e9cf797a24b8e7/multidict-6.7.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd", size = 253558, upload-time = "2025-10-06T14:51:31.684Z" }, + { url = "https://files.pythonhosted.org/packages/00/a3/67f18315100f64c269f46e6c0319fa87ba68f0f64f2b8e7fd7c72b913a0b/multidict-6.7.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a", size = 252339, upload-time = "2025-10-06T14:51:33.699Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2a/1cb77266afee2458d82f50da41beba02159b1d6b1f7973afc9a1cad1499b/multidict-6.7.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96", size = 244895, upload-time = "2025-10-06T14:51:36.189Z" }, + { url = "https://files.pythonhosted.org/packages/dd/72/09fa7dd487f119b2eb9524946ddd36e2067c08510576d43ff68469563b3b/multidict-6.7.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e", size = 241862, upload-time = "2025-10-06T14:51:41.291Z" }, + { url = "https://files.pythonhosted.org/packages/65/92/bc1f8bd0853d8669300f732c801974dfc3702c3eeadae2f60cef54dc69d7/multidict-6.7.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599", size = 232376, upload-time = "2025-10-06T14:51:43.55Z" }, + { url = "https://files.pythonhosted.org/packages/09/86/ac39399e5cb9d0c2ac8ef6e10a768e4d3bc933ac808d49c41f9dc23337eb/multidict-6.7.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394", size = 240272, upload-time = "2025-10-06T14:51:45.265Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b6/fed5ac6b8563ec72df6cb1ea8dac6d17f0a4a1f65045f66b6d3bf1497c02/multidict-6.7.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38", size = 248774, upload-time = "2025-10-06T14:51:46.836Z" }, + { url = "https://files.pythonhosted.org/packages/6b/8d/b954d8c0dc132b68f760aefd45870978deec6818897389dace00fcde32ff/multidict-6.7.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9", size = 242731, upload-time = "2025-10-06T14:51:48.541Z" }, + { url = "https://files.pythonhosted.org/packages/16/9d/a2dac7009125d3540c2f54e194829ea18ac53716c61b655d8ed300120b0f/multidict-6.7.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0", size = 240193, upload-time = "2025-10-06T14:51:50.355Z" }, + { url = "https://files.pythonhosted.org/packages/39/ca/c05f144128ea232ae2178b008d5011d4e2cea86e4ee8c85c2631b1b94802/multidict-6.7.0-cp314-cp314t-win32.whl", hash = "sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13", size = 48023, upload-time = "2025-10-06T14:51:51.883Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8f/0a60e501584145588be1af5cc829265701ba3c35a64aec8e07cbb71d39bb/multidict-6.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd", size = 53507, upload-time = "2025-10-06T14:51:53.672Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ae/3148b988a9c6239903e786eac19c889fab607c31d6efa7fb2147e5680f23/multidict-6.7.0-cp314-cp314t-win_arm64.whl", hash = "sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827", size = 44804, upload-time = "2025-10-06T14:51:55.415Z" }, + { url = "https://files.pythonhosted.org/packages/b7/da/7d22601b625e241d4f23ef1ebff8acfc60da633c9e7e7922e24d10f592b3/multidict-6.7.0-py3-none-any.whl", hash = "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3", size = 12317, upload-time = "2025-10-06T14:52:29.272Z" }, +] + +[[package]] +name = "multiprocess" +version = "0.70.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/fd/2ae3826f5be24c6ed87266bc4e59c46ea5b059a103f3d7e7eb76a52aeecb/multiprocess-0.70.18.tar.gz", hash = "sha256:f9597128e6b3e67b23956da07cf3d2e5cba79e2f4e0fba8d7903636663ec6d0d", size = 1798503, upload-time = "2025-04-17T03:11:27.742Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/d8/0cba6cf51a1a31f20471fbc823a716170c73012ddc4fb85d706630ed6e8f/multiprocess-0.70.18-py310-none-any.whl", hash = "sha256:60c194974c31784019c1f459d984e8f33ee48f10fcf42c309ba97b30d9bd53ea", size = 134948, upload-time = "2025-04-17T03:11:20.223Z" }, + { url = "https://files.pythonhosted.org/packages/4b/88/9039f2fed1012ef584751d4ceff9ab4a51e5ae264898f0b7cbf44340a859/multiprocess-0.70.18-py311-none-any.whl", hash = "sha256:5aa6eef98e691281b3ad923be2832bf1c55dd2c859acd73e5ec53a66aae06a1d", size = 144462, upload-time = "2025-04-17T03:11:21.657Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b6/5f922792be93b82ec6b5f270bbb1ef031fd0622847070bbcf9da816502cc/multiprocess-0.70.18-py312-none-any.whl", hash = "sha256:9b78f8e5024b573730bfb654783a13800c2c0f2dfc0c25e70b40d184d64adaa2", size = 150287, upload-time = "2025-04-17T03:11:22.69Z" }, + { url = "https://files.pythonhosted.org/packages/ee/25/7d7e78e750bc1aecfaf0efbf826c69a791d2eeaf29cf20cba93ff4cced78/multiprocess-0.70.18-py313-none-any.whl", hash = "sha256:871743755f43ef57d7910a38433cfe41319e72be1bbd90b79c7a5ac523eb9334", size = 151917, upload-time = "2025-04-17T03:11:24.044Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c3/ca84c19bd14cdfc21c388fdcebf08b86a7a470ebc9f5c3c084fc2dbc50f7/multiprocess-0.70.18-py38-none-any.whl", hash = "sha256:dbf705e52a154fe5e90fb17b38f02556169557c2dd8bb084f2e06c2784d8279b", size = 132636, upload-time = "2025-04-17T03:11:24.936Z" }, + { url = "https://files.pythonhosted.org/packages/6c/28/dd72947e59a6a8c856448a5e74da6201cb5502ddff644fbc790e4bd40b9a/multiprocess-0.70.18-py39-none-any.whl", hash = "sha256:e78ca805a72b1b810c690b6b4cc32579eba34f403094bbbae962b7b5bf9dfcb8", size = 133478, upload-time = "2025-04-17T03:11:26.253Z" }, +] + +[[package]] +name = "namex" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/c0/ee95b28f029c73f8d49d8f52edaed02a1d4a9acb8b69355737fdb1faa191/namex-0.1.0.tar.gz", hash = "sha256:117f03ccd302cc48e3f5c58a296838f6b89c83455ab8683a1e85f2a430aa4306", size = 6649, upload-time = "2025-05-26T23:17:38.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/bc/465daf1de06409cdd4532082806770ee0d8d7df434da79c76564d0f69741/namex-0.1.0-py3-none-any.whl", hash = "sha256:e2012a474502f1e2251267062aae3114611f07df4224b6e06334c57b0f2ce87c", size = 5905, upload-time = "2025-05-26T23:17:37.695Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/91/1c1d5a4b9a9ebba2b4e32b8c852c2975c872aec1fe42ab5e516b2cecd193/nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9", size = 62554, upload-time = "2025-12-23T07:45:46.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440", size = 25465, upload-time = "2025-12-23T07:45:44.51Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + +[[package]] +name = "numcodecs" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/fc/bb532969eb8236984ba65e4f0079a7da885b8ac0ce1f0835decbb3938a62/numcodecs-0.15.1.tar.gz", hash = "sha256:eeed77e4d6636641a2cc605fbc6078c7a8f2cc40f3dfa2b3f61e52e6091b04ff", size = 6267275, upload-time = "2025-02-10T10:23:33.254Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/7e/f12fc32d3beedc6a8f1ec69ea0ba72e93cb99c0350feed2cff5d04679bc3/numcodecs-0.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b0a9d9cd29a0088220682dda4a9898321f7813ff7802be2bbb545f6e3d2f10ff", size = 1691889, upload-time = "2025-02-10T10:23:12.934Z" }, + { url = "https://files.pythonhosted.org/packages/81/38/88e40d40288b73c3b3a390ed5614a34b0661d00255bdd4cfb91c32101364/numcodecs-0.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a34f0fe5e5f3b837bbedbeb98794a6d4a12eeeef8d4697b523905837900b5e1c", size = 1189149, upload-time = "2025-02-10T10:23:15.803Z" }, + { url = "https://files.pythonhosted.org/packages/28/7d/7527d9180bc76011d6163c848c9cf02cd28a623c2c66cf543e1e86de7c5e/numcodecs-0.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a09e22140f2c691f7df26303ff8fa2dadcf26d7d0828398c0bc09b69e5efa3", size = 8879163, upload-time = "2025-02-10T10:23:18.582Z" }, + { url = "https://files.pythonhosted.org/packages/ab/bc/b6c3cde91c754860a3467a8c058dcf0b1a5ca14d82b1c5397c700cf8b1eb/numcodecs-0.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:daed6066ffcf40082da847d318b5ab6123d69ceb433ba603cb87c323a541a8bc", size = 836785, upload-time = "2025-02-10T10:23:22.314Z" }, + { url = "https://files.pythonhosted.org/packages/78/57/acbc54b3419e5be65015e47177c76c0a73e037fd3ae2cde5808169194d4d/numcodecs-0.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e3d82b70500cf61e8d115faa0d0a76be6ecdc24a16477ee3279d711699ad85f3", size = 1688220, upload-time = "2025-02-10T10:23:23.79Z" }, + { url = "https://files.pythonhosted.org/packages/b6/56/9863fa6dc679f40a31bea5e9713ee5507a31dcd3ee82ea4b1a9268ce52e8/numcodecs-0.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1d471a1829ce52d3f365053a2bd1379e32e369517557c4027ddf5ac0d99c591e", size = 1180294, upload-time = "2025-02-10T10:23:25.533Z" }, + { url = "https://files.pythonhosted.org/packages/fa/91/d96999b41e3146b6c0ce6bddc5ad85803cb4d743c95394562c2a4bb8cded/numcodecs-0.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1dfdea4a67108205edfce99c1cb6cd621343bc7abb7e16a041c966776920e7de", size = 8834323, upload-time = "2025-02-10T10:23:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/c3/32/233e5ede6568bdb044e6f99aaa9fa39827ff3109c6487fc137315f733586/numcodecs-0.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:a4f7bdb26f1b34423cb56d48e75821223be38040907c9b5954eeb7463e7eb03c", size = 831955, upload-time = "2025-02-10T10:23:30.601Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/7a/6a3d14e205d292b738db449d0de649b373a59edb0d0b4493821d0a3e8718/numpy-2.4.0.tar.gz", hash = "sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934", size = 20685720, upload-time = "2025-12-20T16:18:19.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/ff/f6400ffec95de41c74b8e73df32e3fff1830633193a7b1e409be7fb1bb8c/numpy-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037", size = 16653117, upload-time = "2025-12-20T16:16:06.709Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/6c23e97450035072e8d830a3c411bf1abd1f42c611ff9d29e3d8f55c6252/numpy-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83", size = 12369711, upload-time = "2025-12-20T16:16:08.758Z" }, + { url = "https://files.pythonhosted.org/packages/bc/af/acbef97b630ab1bb45e6a7d01d1452e4251aa88ce680ac36e56c272120ec/numpy-2.4.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344", size = 5198355, upload-time = "2025-12-20T16:16:10.902Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c8/4e0d436b66b826f2e53330adaa6311f5cac9871a5b5c31ad773b27f25a74/numpy-2.4.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6", size = 6545298, upload-time = "2025-12-20T16:16:12.607Z" }, + { url = "https://files.pythonhosted.org/packages/ef/27/e1f5d144ab54eac34875e79037011d511ac57b21b220063310cb96c80fbc/numpy-2.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb", size = 14398387, upload-time = "2025-12-20T16:16:14.257Z" }, + { url = "https://files.pythonhosted.org/packages/67/64/4cb909dd5ab09a9a5d086eff9586e69e827b88a5585517386879474f4cf7/numpy-2.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63", size = 16363091, upload-time = "2025-12-20T16:16:17.32Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9c/8efe24577523ec6809261859737cf117b0eb6fdb655abdfdc81b2e468ce4/numpy-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95", size = 16176394, upload-time = "2025-12-20T16:16:19.524Z" }, + { url = "https://files.pythonhosted.org/packages/61/f0/1687441ece7b47a62e45a1f82015352c240765c707928edd8aef875d5951/numpy-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6", size = 18287378, upload-time = "2025-12-20T16:16:22.866Z" }, + { url = "https://files.pythonhosted.org/packages/d3/6f/f868765d44e6fc466467ed810ba9d8d6db1add7d4a748abfa2a4c99a3194/numpy-2.4.0-cp312-cp312-win32.whl", hash = "sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c", size = 5955432, upload-time = "2025-12-20T16:16:25.06Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b5/94c1e79fcbab38d1ca15e13777477b2914dd2d559b410f96949d6637b085/numpy-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98", size = 12306201, upload-time = "2025-12-20T16:16:26.979Z" }, + { url = "https://files.pythonhosted.org/packages/70/09/c39dadf0b13bb0768cd29d6a3aaff1fb7c6905ac40e9aaeca26b1c086e06/numpy-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667", size = 10308234, upload-time = "2025-12-20T16:16:29.417Z" }, + { url = "https://files.pythonhosted.org/packages/a7/0d/853fd96372eda07c824d24adf02e8bc92bb3731b43a9b2a39161c3667cc4/numpy-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea", size = 16649088, upload-time = "2025-12-20T16:16:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/e3/37/cc636f1f2a9f585434e20a3e6e63422f70bfe4f7f6698e941db52ea1ac9a/numpy-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d", size = 12364065, upload-time = "2025-12-20T16:16:33.491Z" }, + { url = "https://files.pythonhosted.org/packages/ed/69/0b78f37ca3690969beee54103ce5f6021709134e8020767e93ba691a72f1/numpy-2.4.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee", size = 5192640, upload-time = "2025-12-20T16:16:35.636Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2a/08569f8252abf590294dbb09a430543ec8f8cc710383abfb3e75cc73aeda/numpy-2.4.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e", size = 6541556, upload-time = "2025-12-20T16:16:37.276Z" }, + { url = "https://files.pythonhosted.org/packages/93/e9/a949885a4e177493d61519377952186b6cbfdf1d6002764c664ba28349b5/numpy-2.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2", size = 14396562, upload-time = "2025-12-20T16:16:38.953Z" }, + { url = "https://files.pythonhosted.org/packages/99/98/9d4ad53b0e9ef901c2ef1d550d2136f5ac42d3fd2988390a6def32e23e48/numpy-2.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a", size = 16351719, upload-time = "2025-12-20T16:16:41.503Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/5f3711a38341d6e8dd619f6353251a0cdd07f3d6d101a8fd46f4ef87f895/numpy-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681", size = 16176053, upload-time = "2025-12-20T16:16:44.552Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5b/2a3753dc43916501b4183532e7ace862e13211042bceafa253afb5c71272/numpy-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475", size = 18277859, upload-time = "2025-12-20T16:16:47.174Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c5/a18bcdd07a941db3076ef489d036ab16d2bfc2eae0cf27e5a26e29189434/numpy-2.4.0-cp313-cp313-win32.whl", hash = "sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344", size = 5953849, upload-time = "2025-12-20T16:16:49.554Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f1/719010ff8061da6e8a26e1980cf090412d4f5f8060b31f0c45d77dd67a01/numpy-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d", size = 12302840, upload-time = "2025-12-20T16:16:51.227Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5a/b3d259083ed8b4d335270c76966cb6cf14a5d1b69e1a608994ac57a659e6/numpy-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d", size = 10308509, upload-time = "2025-12-20T16:16:53.313Z" }, + { url = "https://files.pythonhosted.org/packages/31/01/95edcffd1bb6c0633df4e808130545c4f07383ab629ac7e316fb44fff677/numpy-2.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6", size = 12491815, upload-time = "2025-12-20T16:16:55.496Z" }, + { url = "https://files.pythonhosted.org/packages/59/ea/5644b8baa92cc1c7163b4b4458c8679852733fa74ca49c942cfa82ded4e0/numpy-2.4.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5", size = 5320321, upload-time = "2025-12-20T16:16:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/26/4e/e10938106d70bc21319bd6a86ae726da37edc802ce35a3a71ecdf1fdfe7f/numpy-2.4.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3", size = 6641635, upload-time = "2025-12-20T16:16:59.379Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8d/a8828e3eaf5c0b4ab116924df82f24ce3416fa38d0674d8f708ddc6c8aac/numpy-2.4.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d", size = 14456053, upload-time = "2025-12-20T16:17:01.768Z" }, + { url = "https://files.pythonhosted.org/packages/68/a1/17d97609d87d4520aa5ae2dcfb32305654550ac6a35effb946d303e594ce/numpy-2.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3", size = 16401702, upload-time = "2025-12-20T16:17:04.235Z" }, + { url = "https://files.pythonhosted.org/packages/18/32/0f13c1b2d22bea1118356b8b963195446f3af124ed7a5adfa8fdecb1b6ca/numpy-2.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa", size = 16242493, upload-time = "2025-12-20T16:17:06.856Z" }, + { url = "https://files.pythonhosted.org/packages/ae/23/48f21e3d309fbc137c068a1475358cbd3a901b3987dcfc97a029ab3068e2/numpy-2.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c", size = 18324222, upload-time = "2025-12-20T16:17:09.392Z" }, + { url = "https://files.pythonhosted.org/packages/ac/52/41f3d71296a3dcaa4f456aaa3c6fc8e745b43d0552b6bde56571bb4b4a0f/numpy-2.4.0-cp313-cp313t-win32.whl", hash = "sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93", size = 6076216, upload-time = "2025-12-20T16:17:11.437Z" }, + { url = "https://files.pythonhosted.org/packages/35/ff/46fbfe60ab0710d2a2b16995f708750307d30eccbb4c38371ea9e986866e/numpy-2.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4", size = 12444263, upload-time = "2025-12-20T16:17:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/a3/e3/9189ab319c01d2ed556c932ccf55064c5d75bb5850d1df7a482ce0badead/numpy-2.4.0-cp313-cp313t-win_arm64.whl", hash = "sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c", size = 10378265, upload-time = "2025-12-20T16:17:15.211Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ed/52eac27de39d5e5a6c9aadabe672bc06f55e24a3d9010cd1183948055d76/numpy-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c95eb6db2884917d86cde0b4d4cf31adf485c8ec36bf8696dd66fa70de96f36b", size = 16647476, upload-time = "2025-12-20T16:17:17.671Z" }, + { url = "https://files.pythonhosted.org/packages/77/c0/990ce1b7fcd4e09aeaa574e2a0a839589e4b08b2ca68070f1acb1fea6736/numpy-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:65167da969cd1ec3a1df31cb221ca3a19a8aaa25370ecb17d428415e93c1935e", size = 12374563, upload-time = "2025-12-20T16:17:20.216Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/8c5e389c6ae8f5fd2277a988600d79e9625db3fff011a2d87ac80b881a4c/numpy-2.4.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:3de19cfecd1465d0dcf8a5b5ea8b3155b42ed0b639dba4b71e323d74f2a3be5e", size = 5203107, upload-time = "2025-12-20T16:17:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/e6/94/ca5b3bd6a8a70a5eec9a0b8dd7f980c1eff4b8a54970a9a7fef248ef564f/numpy-2.4.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:6c05483c3136ac4c91b4e81903cb53a8707d316f488124d0398499a4f8e8ef51", size = 6538067, upload-time = "2025-12-20T16:17:24.001Z" }, + { url = "https://files.pythonhosted.org/packages/79/43/993eb7bb5be6761dde2b3a3a594d689cec83398e3f58f4758010f3b85727/numpy-2.4.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36667db4d6c1cea79c8930ab72fadfb4060feb4bfe724141cd4bd064d2e5f8ce", size = 14411926, upload-time = "2025-12-20T16:17:25.822Z" }, + { url = "https://files.pythonhosted.org/packages/03/75/d4c43b61de473912496317a854dac54f1efec3eeb158438da6884b70bb90/numpy-2.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9a818668b674047fd88c4cddada7ab8f1c298812783e8328e956b78dc4807f9f", size = 16354295, upload-time = "2025-12-20T16:17:28.308Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0a/b54615b47ee8736a6461a4bb6749128dd3435c5a759d5663f11f0e9af4ac/numpy-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1ee32359fb7543b7b7bd0b2f46294db27e29e7bbdf70541e81b190836cd83ded", size = 16190242, upload-time = "2025-12-20T16:17:30.993Z" }, + { url = "https://files.pythonhosted.org/packages/98/ce/ea207769aacad6246525ec6c6bbd66a2bf56c72443dc10e2f90feed29290/numpy-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e493962256a38f58283de033d8af176c5c91c084ea30f15834f7545451c42059", size = 18280875, upload-time = "2025-12-20T16:17:33.327Z" }, + { url = "https://files.pythonhosted.org/packages/17/ef/ec409437aa962ea372ed601c519a2b141701683ff028f894b7466f0ab42b/numpy-2.4.0-cp314-cp314-win32.whl", hash = "sha256:6bbaebf0d11567fa8926215ae731e1d58e6ec28a8a25235b8a47405d301332db", size = 6002530, upload-time = "2025-12-20T16:17:35.729Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4a/5cb94c787a3ed1ac65e1271b968686521169a7b3ec0b6544bb3ca32960b0/numpy-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:3d857f55e7fdf7c38ab96c4558c95b97d1c685be6b05c249f5fdafcbd6f9899e", size = 12435890, upload-time = "2025-12-20T16:17:37.599Z" }, + { url = "https://files.pythonhosted.org/packages/48/a0/04b89db963af9de1104975e2544f30de89adbf75b9e75f7dd2599be12c79/numpy-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:bb50ce5fb202a26fd5404620e7ef820ad1ab3558b444cb0b55beb7ef66cd2d63", size = 10591892, upload-time = "2025-12-20T16:17:39.649Z" }, + { url = "https://files.pythonhosted.org/packages/53/e5/d74b5ccf6712c06c7a545025a6a71bfa03bdc7e0568b405b0d655232fd92/numpy-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:355354388cba60f2132df297e2d53053d4063f79077b67b481d21276d61fc4df", size = 12494312, upload-time = "2025-12-20T16:17:41.714Z" }, + { url = "https://files.pythonhosted.org/packages/c2/08/3ca9cc2ddf54dfee7ae9a6479c071092a228c68aef08252aa08dac2af002/numpy-2.4.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:1d8f9fde5f6dc1b6fc34df8162f3b3079365468703fee7f31d4e0cc8c63baed9", size = 5322862, upload-time = "2025-12-20T16:17:44.145Z" }, + { url = "https://files.pythonhosted.org/packages/87/74/0bb63a68394c0c1e52670cfff2e309afa41edbe11b3327d9af29e4383f34/numpy-2.4.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:e0434aa22c821f44eeb4c650b81c7fbdd8c0122c6c4b5a576a76d5a35625ecd9", size = 6644986, upload-time = "2025-12-20T16:17:46.203Z" }, + { url = "https://files.pythonhosted.org/packages/06/8f/9264d9bdbcf8236af2823623fe2f3981d740fc3461e2787e231d97c38c28/numpy-2.4.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40483b2f2d3ba7aad426443767ff5632ec3156ef09742b96913787d13c336471", size = 14457958, upload-time = "2025-12-20T16:17:48.017Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d9/f9a69ae564bbc7236a35aa883319364ef5fd41f72aa320cc1cbe66148fe2/numpy-2.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6a7664ddd9746e20b7325351fe1a8408d0a2bf9c63b5e898290ddc8f09544", size = 16398394, upload-time = "2025-12-20T16:17:50.409Z" }, + { url = "https://files.pythonhosted.org/packages/34/c7/39241501408dde7f885d241a98caba5421061a2c6d2b2197ac5e3aa842d8/numpy-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ecb0019d44f4cdb50b676c5d0cb4b1eae8e15d1ed3d3e6639f986fc92b2ec52c", size = 16241044, upload-time = "2025-12-20T16:17:52.661Z" }, + { url = "https://files.pythonhosted.org/packages/7c/95/cae7effd90e065a95e59fe710eeee05d7328ed169776dfdd9f789e032125/numpy-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d0ffd9e2e4441c96a9c91ec1783285d80bf835b677853fc2770a89d50c1e48ac", size = 18321772, upload-time = "2025-12-20T16:17:54.947Z" }, + { url = "https://files.pythonhosted.org/packages/96/df/3c6c279accd2bfb968a76298e5b276310bd55d243df4fa8ac5816d79347d/numpy-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:77f0d13fa87036d7553bf81f0e1fe3ce68d14c9976c9851744e4d3e91127e95f", size = 6148320, upload-time = "2025-12-20T16:17:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/92/8d/f23033cce252e7a75cae853d17f582e86534c46404dea1c8ee094a9d6d84/numpy-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b1f5b45829ac1848893f0ddf5cb326110604d6df96cdc255b0bf9edd154104d4", size = 12623460, upload-time = "2025-12-20T16:17:58.963Z" }, + { url = "https://files.pythonhosted.org/packages/a4/4f/1f8475907d1a7c4ef9020edf7f39ea2422ec896849245f00688e4b268a71/numpy-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:23a3e9d1a6f360267e8fbb38ba5db355a6a7e9be71d7fce7ab3125e88bb646c8", size = 10661799, upload-time = "2025-12-20T16:18:01.078Z" }, +] + +[[package]] +name = "opt-einsum" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/b9/2ac072041e899a52f20cf9510850ff58295003aa75525e58343591b0cbfb/opt_einsum-3.4.0.tar.gz", hash = "sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac", size = 63004, upload-time = "2024-09-26T14:33:24.483Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl", hash = "sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd", size = 71932, upload-time = "2024-09-26T14:33:23.039Z" }, +] + +[[package]] +name = "optree" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/8e/09d899ad531d50b79aa24e7558f604980fe4048350172e643bb1b9983aec/optree-0.18.0.tar.gz", hash = "sha256:3804fb6ddc923855db2dc4805b4524c66e00f1ef30b166be4aadd52822b13e06", size = 165178, upload-time = "2025-11-14T08:58:31.234Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/9d/e32dba0876d6514b40cd30e57938e3605b7e07d827ac617f072ff64d9cff/optree-0.18.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f02faeda66d531dc5f5356589afcf2a6bc41c8d00bc903efab60f9a2182b140d", size = 369756, upload-time = "2025-11-14T08:56:58.793Z" }, + { url = "https://files.pythonhosted.org/packages/d5/60/e643c3ab2cea904d24e56ab0060c905443ceac716e542392ad8db87f09ef/optree-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e28024e6e343353285cf99ae9c74210f0e89e47b2f0f3af7c72c4a9e89dc3ebc", size = 342794, upload-time = "2025-11-14T08:56:59.819Z" }, + { url = "https://files.pythonhosted.org/packages/79/af/c002cc41f6eba05fddcd6435e7c4ccc037a39a345de824d1a515386b52ee/optree-0.18.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:057b983a9526645133553184bed7090bb07855df986abd9e99c456922045c6bc", size = 364436, upload-time = "2025-11-14T08:57:01.17Z" }, + { url = "https://files.pythonhosted.org/packages/c8/32/2049f9597ae75a6a1b9c872ffcc31d96ebebf62ff1b20160eb972aea5456/optree-0.18.0-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:8a2003fab79694e04b5f260628511e441c248b46a9fc46138e2424038ac04ada", size = 425359, upload-time = "2025-11-14T08:57:02.509Z" }, + { url = "https://files.pythonhosted.org/packages/d0/14/523cfb3a139df0d2a064b38497c7ee6e49edac6e07c777d2069cffd8545c/optree-0.18.0-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:02d9999840fabef85a6b22e757f336d5591f712f99c710d8b232d52e53115314", size = 421373, upload-time = "2025-11-14T08:57:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/65/48/febb5976fa4f37a805809757b050d95effb25a17d3fec439349d18f5d451/optree-0.18.0-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:79bbe14d6cad81f5840958589daa1b836864ada40031712a446dce8129917efd", size = 420798, upload-time = "2025-11-14T08:57:05.02Z" }, + { url = "https://files.pythonhosted.org/packages/02/9c/c38b861e504829e0dcbed2e2b5bc865a98fb7c655e2ddd2bf8e1fd6ae712/optree-0.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a74c45f04def041504bd21682eaf7f359f1a50dc7cf42b548b6f19aab50596bd", size = 408195, upload-time = "2025-11-14T08:57:05.983Z" }, + { url = "https://files.pythonhosted.org/packages/2e/71/ff4b053ad1242f3d0b8792caa786c1c0138c1fb3d0c0a3720ccc21725739/optree-0.18.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:d2844478690b5892159df0b2500e9d146dc8d3aa5b44e4564d05787b7330eca3", size = 364997, upload-time = "2025-11-14T08:57:07.306Z" }, + { url = "https://files.pythonhosted.org/packages/5f/09/a71dbc096e8195d0e0fe990b394884d061938e0b918b61d16d48d817c0d5/optree-0.18.0-cp312-cp312-win32.whl", hash = "sha256:cfa2e16993ba47e671a4e7ee1ad805f67b8d6744eb30a9d27ea0b07b3b7a22ed", size = 286802, upload-time = "2025-11-14T08:57:08.674Z" }, + { url = "https://files.pythonhosted.org/packages/5d/95/a487d5c93dcb50d768c4cd7d17476b4ce4360c5943bb7251d1e26d38e5cf/optree-0.18.0-cp312-cp312-win_amd64.whl", hash = "sha256:89e81afb11792d13d3777b503c6f21ec17b1a3b7de69cde1ae2c5471bcdcd4a0", size = 312381, upload-time = "2025-11-14T08:57:09.98Z" }, + { url = "https://files.pythonhosted.org/packages/91/ba/0559af098b33103bc65ba9d0c38454e21c142279b913c0b87a89c59c520d/optree-0.18.0-cp312-cp312-win_arm64.whl", hash = "sha256:4eb146711d4cd0876bf93e0118d3e74050b6f633d756c269ce7cda907281b499", size = 315747, upload-time = "2025-11-14T08:57:11.033Z" }, + { url = "https://files.pythonhosted.org/packages/74/60/57874760770dba39e799c88505898b7441786cea24d78bfe0a171e893212/optree-0.18.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:8d88c00c70b5914904feaf8f505f3512c2f3f4493dbbd93951fcdddc85dcfe8c", size = 876547, upload-time = "2025-11-14T08:57:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/c8/bb/413263435c557193c436d977689d1c560a08e362f5bca29e3d62b093412a/optree-0.18.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:c8841d44f3648b0662e99fc39ef8c248726ddfb4d1bfce4bdba982e51bb7e3f8", size = 876759, upload-time = "2025-11-14T08:57:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/00/6a/c0f03b83fe888af829591561af398bb7bbe1ea770c7e7475b4d464b4dd7c/optree-0.18.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:385bd727cc7bd3c01bd6204028ac2adce8a8f622c296053d9df434aa0e30b01f", size = 340330, upload-time = "2025-11-14T08:57:14.749Z" }, + { url = "https://files.pythonhosted.org/packages/10/e1/ea857ed58f36c7d2071aef8f67ca0c911e45ded8cb482636185e842550ae/optree-0.18.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:6fc9f8acde3bb561b2034e96079507fbe6d4624058fe204161eb8ef29f961296", size = 346098, upload-time = "2025-11-14T08:57:15.862Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7c/9ed10c406028c6b215cd26be4a7afd711a323fd98f531432c1d2921f188b/optree-0.18.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:71ca2fcad8972ba56d6cfffbcd962f45f5d4bc04182f23d66154b38c2eb37de3", size = 372349, upload-time = "2025-11-14T08:57:16.935Z" }, + { url = "https://files.pythonhosted.org/packages/09/67/51acf67b1b9850e990a1a9b3fa0afcb5bbe9d645b0b6b8be5b3f2dca8f04/optree-0.18.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fa8e3878a1857761d64f08a23b32140d29754a53f85f7c87186ced2b5b1b49cb", size = 346522, upload-time = "2025-11-14T08:57:17.953Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/ae957579e22d53d4d24de6bad0a3b3811612fd70a8ecd0c85c81253f22e3/optree-0.18.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27611c6c122745a003b5be7aedba49ef86e9fef46d743c234596de0bde6dc679", size = 368715, upload-time = "2025-11-14T08:57:19.392Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6d/9a3399af22aea044a58e1734257b575b9b17eb67c2c6fcbbb194268e6946/optree-0.18.0-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:cbb083a15ea968ad99e7da17d24632348d69e26534e83c69941f3020ed7536eb", size = 430189, upload-time = "2025-11-14T08:57:20.552Z" }, + { url = "https://files.pythonhosted.org/packages/94/07/9c63a8cad90993848ac6cae5162e2e40f62e9a0738cb522972662ef3c7ab/optree-0.18.0-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0d25941de1acba176305dbdeb931dea6143b30d64ebdc5bfea2bfc12ef9e2b0a", size = 424979, upload-time = "2025-11-14T08:57:21.96Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/0ab26372377ba1a422a6f38d8237bb2d061dcd23be85bc3ed77404f7b05c/optree-0.18.0-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1db0a6497203a13063a8f044ae751dd5d8253cb815359270c38de0e4c9f8bed5", size = 423201, upload-time = "2025-11-14T08:57:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/19/68/0a761a4f1b2e56ffbf3f223e967074c1331404f6dfb2b2cda6ecf62f4653/optree-0.18.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:328857d7a35129904b21164f6b0c2ff1d728ad1f5838589c5f437a16c94213c8", size = 414079, upload-time = "2025-11-14T08:57:24.205Z" }, + { url = "https://files.pythonhosted.org/packages/5d/80/29a767bff7413aa593075477a9d17a05d5098bfc0878c087e6b76a3b15df/optree-0.18.0-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:9d4b9d8c7e9335120ecf222d817699d17de743ad118080fb40467c367f009143", size = 368196, upload-time = "2025-11-14T08:57:25.328Z" }, + { url = "https://files.pythonhosted.org/packages/16/b6/7dfeb866a56f478103faaede5488e55f03916fa707de716ead34dd6f2c3f/optree-0.18.0-cp313-cp313-win32.whl", hash = "sha256:8b9ad4a01a1346b11acc574b7f932dea1a7c7ab31d93546a7540a1f02b3e724a", size = 287207, upload-time = "2025-11-14T08:57:26.461Z" }, + { url = "https://files.pythonhosted.org/packages/7f/92/6e803aa6bf441fae18874f1953e656e179d402b7cbc00c33ae68f0b632db/optree-0.18.0-cp313-cp313-win_amd64.whl", hash = "sha256:5b75e32c191e4b8cf42a8aa854ed264df82936136c0bcad77be44605da41cdfc", size = 314929, upload-time = "2025-11-14T08:57:27.762Z" }, + { url = "https://files.pythonhosted.org/packages/bd/85/e59302d4286552d2694b118e6f5a886490cfd939751c2011b2d3638b2d02/optree-0.18.0-cp313-cp313-win_arm64.whl", hash = "sha256:8a4ca121b6fc6b04300fa225fe6c31897e424db0d92691875af326f8c4e1cead", size = 317459, upload-time = "2025-11-14T08:57:28.826Z" }, + { url = "https://files.pythonhosted.org/packages/44/c9/2009e027f500fb38920d349523dd06b5714687905be24fe06bab90082706/optree-0.18.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:27b1d0cadcf4627c98abbbdce912dbc2243f5687f3c7df39963b793c89321c65", size = 415598, upload-time = "2025-11-14T08:57:29.936Z" }, + { url = "https://files.pythonhosted.org/packages/e2/d1/de1d6d8654d4765a439f27a155d098092ec8670039e2e0ec8383383a2fe7/optree-0.18.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b8adc912ecb6e4fd9df227ded66efaa6702f46a98e1403554be3c9c51d0ca920", size = 387016, upload-time = "2025-11-14T08:57:31.071Z" }, + { url = "https://files.pythonhosted.org/packages/ec/30/6ce07f763b6c0d967a2d683a486eb4450ec053aeae9731133dba600232b2/optree-0.18.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5bc1221068a58175e0ad62afc199893f77c653206673a5552992a604c66fb77e", size = 386289, upload-time = "2025-11-14T08:57:32.146Z" }, + { url = "https://files.pythonhosted.org/packages/76/26/14ed2ff6a69490754446910280a8d0195c489e9fe610d37046b254971627/optree-0.18.0-cp313-cp313t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a479fa25b6e2430e530d00f0c27a55e15ecb9de8ad2d0aec3d40b680e2d6df64", size = 442286, upload-time = "2025-11-14T08:57:33.285Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c7/50bd556ffc76a1cdac1b7460428dee62f8359b60ed07c9846eab0acb5696/optree-0.18.0-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:446c46c53cb8f13abcc0d7dd1989d59bb059953c122fe9901ef53de7fb38b33e", size = 438254, upload-time = "2025-11-14T08:57:34.358Z" }, + { url = "https://files.pythonhosted.org/packages/47/0e/bb9edf64e79f275e5f59fc3dcc49841147cff81598e99e56413523050506/optree-0.18.0-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:81e755124b77e766166c9d05206b90c68f234f425ad2e3c8a6c96f0db548c67b", size = 437817, upload-time = "2025-11-14T08:57:35.382Z" }, + { url = "https://files.pythonhosted.org/packages/be/c4/808b606f840cb53fca2a94cbe82ff26fe23965484dfc4fbb49b6232f990b/optree-0.18.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ae6945f68771b1389ee46a1778e779f4ad76bca9306f3e39eb397f9a0dd2753", size = 426692, upload-time = "2025-11-14T08:57:36.652Z" }, + { url = "https://files.pythonhosted.org/packages/1e/b7/4156ec100d5539400e85ec213e86e154c396efa6135be277de74e19748e2/optree-0.18.0-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:571b732229d7b2e7a2215f57586f8ec0140e07c0faea916e456cbbfa819e56cb", size = 387482, upload-time = "2025-11-14T08:57:37.806Z" }, + { url = "https://files.pythonhosted.org/packages/a0/3b/76a1b45688be72e37965aa467296ebbc743786492287d45907e045933625/optree-0.18.0-cp313-cp313t-win32.whl", hash = "sha256:3014537ff7e4e091ee46e57976f7d95c52f66a0e3eb5ebcbe0de0d924504b58e", size = 318347, upload-time = "2025-11-14T08:57:39.153Z" }, + { url = "https://files.pythonhosted.org/packages/b7/21/87a30a42f1c14365099dc2d656c73bef90a2becbaa1249eca09bf4d9277b/optree-0.18.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a63df296fec376c5cd08298a85109db4a130f4cc8df15916fc92d44ef6068937", size = 351794, upload-time = "2025-11-14T08:57:40.247Z" }, + { url = "https://files.pythonhosted.org/packages/bc/34/37f409de017aa06ee98a01ddb8b93960bd29459f01f090cc461a250977d2/optree-0.18.0-cp313-cp313t-win_arm64.whl", hash = "sha256:9460cba62e941626beb75c99a803373b38a52136d5f1932fcdfdcede1df6f2ef", size = 351225, upload-time = "2025-11-14T08:57:41.582Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f0/dabcb70f2065f782e4c2fac18bde75267d24aa5813b58e7ae9e045ecf9f0/optree-0.18.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:5b126c34b459ef4f10f3a4d7d222416d9102b3c5a76b39f346c611792f144821", size = 876006, upload-time = "2025-11-14T08:57:42.676Z" }, + { url = "https://files.pythonhosted.org/packages/3c/da/6d524879da8892ea8a2562278d0aca06827e7c053015806c5853bb9c3bd8/optree-0.18.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:895f23a4cd8aee2c2464efdad2d9bde28a2aaabee634c96423a933f40e74a67e", size = 876251, upload-time = "2025-11-14T08:57:44.173Z" }, + { url = "https://files.pythonhosted.org/packages/54/f8/588807ec9c21bfec2fcf6b3e4f93abac62cad9bc0b8c0e248f1c30d9c160/optree-0.18.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:db00c604c1ae452f6092293bf230984d4f6cbb3ad905a9991e8cf680fd7d1523", size = 339800, upload-time = "2025-11-14T08:57:45.301Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b9/a4214afaa44ff7d8b2c02ed058b318fcfd73af06daeac45d4845ef26d1b6/optree-0.18.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:7172b16e87c87160475275e4bfaa6e4067ccde184d2cca65ba25a402a8ed7758", size = 345613, upload-time = "2025-11-14T08:57:46.362Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cd/31ca853e5f1e9002789de46e5263a3f23d9f9cb9fa490c8bf97fb02076c1/optree-0.18.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5e669f98b9af9f66144c7ae09912d0367ac3182abe016f67cdd15cb45e13c923", size = 371117, upload-time = "2025-11-14T08:57:47.468Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/45193039b4432f4142eb978c847cd64533c4db7dc5dcdeb406ceac396961/optree-0.18.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0959bac58631e64e2ac6349cc284b37872c24f353b3d73b4682202a431f07d76", size = 346091, upload-time = "2025-11-14T08:57:48.604Z" }, + { url = "https://files.pythonhosted.org/packages/dc/33/8c6efe13c5cccb464bba868203649888dc875d2010c8a1acec0e9af88e37/optree-0.18.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cde70c97e4cc4e997e8fda2266e40a9bff7679c72ab4af6e15e81748a12882cc", size = 370191, upload-time = "2025-11-14T08:57:49.73Z" }, + { url = "https://files.pythonhosted.org/packages/f0/5e/0fffd06757494e88b3e5699f6df2da301dd9bf19a4f31c197c585dc5001e/optree-0.18.0-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:9104fc8915890e7292e5833fc677e4749607c67aa3cf8884677267078201c2f3", size = 430059, upload-time = "2025-11-14T08:57:50.837Z" }, + { url = "https://files.pythonhosted.org/packages/bf/17/92d0dade6ff46aebad86ae23ac801251e7de18526eee216986de684c3375/optree-0.18.0-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1f674e34202383f8b42fa9335f13bedfb6b6f019c66e1f41034929e4be203423", size = 426169, upload-time = "2025-11-14T08:57:52.211Z" }, + { url = "https://files.pythonhosted.org/packages/e5/36/eedcfcd421801578119ff5fb6731cd50c65f57a729f6f76f8fe6f37d9939/optree-0.18.0-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b75e083137f361377ff8d70df885ab3a1cf8980e4019e3f311237579adadb64", size = 426153, upload-time = "2025-11-14T08:57:53.591Z" }, + { url = "https://files.pythonhosted.org/packages/63/a6/0bf029f0bdd05f49548644267fc69574a7ca18735010a86d736e7a1ed03c/optree-0.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1f20e8754abe312a701ee00d071ddd8502e9d97ca38fbc56204d14a9ffcb41c", size = 413576, upload-time = "2025-11-14T08:57:54.714Z" }, + { url = "https://files.pythonhosted.org/packages/5e/de/71c51bdf6053e6d7cbdf176eb30d7b5c5ad6180eb6e822d13b36b1edecff/optree-0.18.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:289b184cc41dfc400a30db6207ec997884d14540aae2cba10cb88dc7ebaae2a1", size = 369173, upload-time = "2025-11-14T08:57:56.169Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b0/ea9d562ca87f25bb90944eb411d1ac29ec6c7e38cebf2024e8124fd0e31d/optree-0.18.0-cp314-cp314-win32.whl", hash = "sha256:f5197f864630162f008f5dfad3fceef32553c0fa7639eee1b8e280d924ed678e", size = 292058, upload-time = "2025-11-14T08:57:57.184Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0c/87c9ced927a4cda6b99959cc9341e0a1acb4cd6eb49d2ccd7ac57039c63e/optree-0.18.0-cp314-cp314-win_amd64.whl", hash = "sha256:2b5cfb5fc643f16d3a7d957807e55a937dce07566c49ccc4aa71b01064c56758", size = 322019, upload-time = "2025-11-14T08:57:58.203Z" }, + { url = "https://files.pythonhosted.org/packages/39/a8/481afd23d2e66fddc5891b1540778ebedae90e770fe44c68c9f3dbd9e321/optree-0.18.0-cp314-cp314-win_arm64.whl", hash = "sha256:89d5156f8a0a3792701e1c31473eb307f0b45696f48dc51d721f1bfe0c3a950f", size = 324966, upload-time = "2025-11-14T08:57:59.413Z" }, + { url = "https://files.pythonhosted.org/packages/e5/76/7ba344abd30ce4e3c29d50936a2f28341a772bcebec2948be9915f2a3ece/optree-0.18.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:20536964ba2458f166c1e8ab25951e3fc0a5056b651bd08f16be99bb3ffed54a", size = 415280, upload-time = "2025-11-14T08:58:00.806Z" }, + { url = "https://files.pythonhosted.org/packages/89/27/90de0dcbfdaf82ce616eaa2193a540ec7b4dd1587a5ff0c6a7485c846dd6/optree-0.18.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:07c5f64783ad0f0f80e61c25f276ce79b47deda83ed7956a4a9af6385fe8f60d", size = 387087, upload-time = "2025-11-14T08:58:02.501Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ff/91b9898b08b6f3187a4c99836648893f68d62f61a304b6f6ec61d3e27a77/optree-0.18.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:30a2636279bdc805c8e154a0f346bcf704626b831ff44724d305fb72c90b7389", size = 386244, upload-time = "2025-11-14T08:58:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b2/d20c302926c6c18c379801a6532c0722f7f1a305b7d5712e437708ebdb42/optree-0.18.0-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:80d971060c888c3989132b7e75dfb50848636d41bc931af1b93fe2019fba469c", size = 442297, upload-time = "2025-11-14T08:58:04.887Z" }, + { url = "https://files.pythonhosted.org/packages/90/7d/015c58cf2b0aa0049ac33e1aa76b1fd4563551aeb9f83b10c2217668c355/optree-0.18.0-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d569730b2647c51a5ee68d67198aa9a78c7a55563d57b8cc1ca8d8c8377e7621", size = 438180, upload-time = "2025-11-14T08:58:06.252Z" }, + { url = "https://files.pythonhosted.org/packages/38/83/1eea2619385bd3ecfda76bb563f4127dc8b4197dcb614eb3f9032c82c2a7/optree-0.18.0-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c017539e1196ea08f20aea3a4c473f758149b851678edd3d15773b4326decf83", size = 437838, upload-time = "2025-11-14T08:58:07.359Z" }, + { url = "https://files.pythonhosted.org/packages/e6/99/c1b84be2143df01819818e8c5db0c284ce995a51134030352ade6d9d1d75/optree-0.18.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e2cd9ac7fecfd5f6f56ce69f4f805553c226a2744810175959eb408101513c", size = 426705, upload-time = "2025-11-14T08:58:08.426Z" }, + { url = "https://files.pythonhosted.org/packages/70/8a/e1da179a5ebfdb9e279ae655ec38f19e8893a36193203fd6022a31d573b4/optree-0.18.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:a5c213a291c798139ed9ff80aec4bfcd2ac8f001bc015a9cdeb78457e9687dd3", size = 387489, upload-time = "2025-11-14T08:58:09.459Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f8/b1367b93290b9e1b99a5ad1bbedaf76da62cf81578f452a91bfef5cfd1bb/optree-0.18.0-cp314-cp314t-win32.whl", hash = "sha256:e4a468ae1541614b5aa7b4f00254bce005ab7572fbb1fc764af4ee17d90fde7b", size = 327239, upload-time = "2025-11-14T08:58:10.52Z" }, + { url = "https://files.pythonhosted.org/packages/35/84/295aa33e8530c72b45592714a5b07b23e178d2df44baa964c8a91226eac4/optree-0.18.0-cp314-cp314t-win_amd64.whl", hash = "sha256:94983b3aa31ee401d2ac77ba570a3157d83f9508cfbb006095a48770e0a1c5ca", size = 366546, upload-time = "2025-11-14T08:58:11.575Z" }, + { url = "https://files.pythonhosted.org/packages/db/67/65af89c4a64b13df70dcf9f09fc42623f490e5b4f4854577679e781c5c32/optree-0.18.0-cp314-cp314t-win_arm64.whl", hash = "sha256:b4da3223c5b4cf694822752d0fbb6bf34c3f41648af1bd1b443cc3d68cc55106", size = 358524, upload-time = "2025-11-14T08:58:12.967Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "12.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/02/d52c733a2452ef1ffcc123b68e6606d07276b0e358db70eabad7e40042b7/pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9", size = 46977283, upload-time = "2026-01-02T09:13:29.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/31/dc53fe21a2f2996e1b7d92bf671cdb157079385183ef7c1ae08b485db510/pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b", size = 5262642, upload-time = "2026-01-02T09:11:10.138Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c1/10e45ac9cc79419cedf5121b42dcca5a50ad2b601fa080f58c22fb27626e/pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551", size = 4657464, upload-time = "2026-01-02T09:11:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/ad/26/7b82c0ab7ef40ebede7a97c72d473bda5950f609f8e0c77b04af574a0ddb/pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208", size = 6234878, upload-time = "2026-01-02T09:11:14.096Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/27abc9792615b5e886ca9411ba6637b675f1b77af3104710ac7353fe5605/pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5", size = 8044868, upload-time = "2026-01-02T09:11:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ea/f200a4c36d836100e7bc738fc48cd963d3ba6372ebc8298a889e0cfc3359/pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661", size = 6349468, upload-time = "2026-01-02T09:11:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/11/8f/48d0b77ab2200374c66d344459b8958c86693be99526450e7aee714e03e4/pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17", size = 7041518, upload-time = "2026-01-02T09:11:19.389Z" }, + { url = "https://files.pythonhosted.org/packages/1d/23/c281182eb986b5d31f0a76d2a2c8cd41722d6fb8ed07521e802f9bba52de/pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670", size = 6462829, upload-time = "2026-01-02T09:11:21.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ef/7018273e0faac099d7b00982abdcc39142ae6f3bd9ceb06de09779c4a9d6/pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616", size = 7166756, upload-time = "2026-01-02T09:11:23.559Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c8/993d4b7ab2e341fe02ceef9576afcf5830cdec640be2ac5bee1820d693d4/pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7", size = 6328770, upload-time = "2026-01-02T09:11:25.661Z" }, + { url = "https://files.pythonhosted.org/packages/a7/87/90b358775a3f02765d87655237229ba64a997b87efa8ccaca7dd3e36e7a7/pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d", size = 7033406, upload-time = "2026-01-02T09:11:27.474Z" }, + { url = "https://files.pythonhosted.org/packages/5d/cf/881b457eccacac9e5b2ddd97d5071fb6d668307c57cbf4e3b5278e06e536/pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c", size = 2452612, upload-time = "2026-01-02T09:11:29.309Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c7/2530a4aa28248623e9d7f27316b42e27c32ec410f695929696f2e0e4a778/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1", size = 4062543, upload-time = "2026-01-02T09:11:31.566Z" }, + { url = "https://files.pythonhosted.org/packages/8f/1f/40b8eae823dc1519b87d53c30ed9ef085506b05281d313031755c1705f73/pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179", size = 4138373, upload-time = "2026-01-02T09:11:33.367Z" }, + { url = "https://files.pythonhosted.org/packages/d4/77/6fa60634cf06e52139fd0e89e5bbf055e8166c691c42fb162818b7fda31d/pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0", size = 3601241, upload-time = "2026-01-02T09:11:35.011Z" }, + { url = "https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587", size = 5262410, upload-time = "2026-01-02T09:11:36.682Z" }, + { url = "https://files.pythonhosted.org/packages/1c/34/583420a1b55e715937a85bd48c5c0991598247a1fd2eb5423188e765ea02/pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac", size = 4657312, upload-time = "2026-01-02T09:11:38.535Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/f5a0896839762885b3376ff04878f86ab2b097c2f9a9cdccf4eda8ba8dc0/pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b", size = 6232605, upload-time = "2026-01-02T09:11:40.602Z" }, + { url = "https://files.pythonhosted.org/packages/98/aa/938a09d127ac1e70e6ed467bd03834350b33ef646b31edb7452d5de43792/pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea", size = 8041617, upload-time = "2026-01-02T09:11:42.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/e8/538b24cb426ac0186e03f80f78bc8dc7246c667f58b540bdd57c71c9f79d/pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c", size = 6346509, upload-time = "2026-01-02T09:11:44.955Z" }, + { url = "https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc", size = 7038117, upload-time = "2026-01-02T09:11:46.736Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a2/d40308cf86eada842ca1f3ffa45d0ca0df7e4ab33c83f81e73f5eaed136d/pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644", size = 6460151, upload-time = "2026-01-02T09:11:48.625Z" }, + { url = "https://files.pythonhosted.org/packages/f1/88/f5b058ad6453a085c5266660a1417bdad590199da1b32fb4efcff9d33b05/pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c", size = 7164534, upload-time = "2026-01-02T09:11:50.445Z" }, + { url = "https://files.pythonhosted.org/packages/19/ce/c17334caea1db789163b5d855a5735e47995b0b5dc8745e9a3605d5f24c0/pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171", size = 6332551, upload-time = "2026-01-02T09:11:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/e5/07/74a9d941fa45c90a0d9465098fe1ec85de3e2afbdc15cc4766622d516056/pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a", size = 7040087, upload-time = "2026-01-02T09:11:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/88/09/c99950c075a0e9053d8e880595926302575bc742b1b47fe1bbcc8d388d50/pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45", size = 2452470, upload-time = "2026-01-02T09:11:56.522Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ba/970b7d85ba01f348dee4d65412476321d40ee04dcb51cd3735b9dc94eb58/pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d", size = 5264816, upload-time = "2026-01-02T09:11:58.227Z" }, + { url = "https://files.pythonhosted.org/packages/10/60/650f2fb55fdba7a510d836202aa52f0baac633e50ab1cf18415d332188fb/pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0", size = 4660472, upload-time = "2026-01-02T09:12:00.798Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/5273a99478956a099d533c4f46cbaa19fd69d606624f4334b85e50987a08/pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554", size = 6268974, upload-time = "2026-01-02T09:12:02.572Z" }, + { url = "https://files.pythonhosted.org/packages/b4/26/0bf714bc2e73d5267887d47931d53c4ceeceea6978148ed2ab2a4e6463c4/pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e", size = 8073070, upload-time = "2026-01-02T09:12:04.75Z" }, + { url = "https://files.pythonhosted.org/packages/43/cf/1ea826200de111a9d65724c54f927f3111dc5ae297f294b370a670c17786/pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82", size = 6380176, upload-time = "2026-01-02T09:12:06.626Z" }, + { url = "https://files.pythonhosted.org/packages/03/e0/7938dd2b2013373fd85d96e0f38d62b7a5a262af21ac274250c7ca7847c9/pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4", size = 7067061, upload-time = "2026-01-02T09:12:08.624Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/a2aa97d37272a929a98437a8c0ac37b3cf012f4f8721e1bd5154699b2518/pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0", size = 6491824, upload-time = "2026-01-02T09:12:10.488Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/80e46611b288d51b115826f136fb3465653c28f491068a72d3da49b54cd4/pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b", size = 7190911, upload-time = "2026-01-02T09:12:12.772Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/eacc62356b4cf81abe99ff9dbc7402750044aed02cfd6a503f7c6fc11f3e/pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65", size = 6336445, upload-time = "2026-01-02T09:12:14.775Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/57d81d0b74d218706dafccb87a87ea44262c43eef98eb3b164fd000e0491/pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0", size = 7045354, upload-time = "2026-01-02T09:12:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/ac/82/8b9b97bba2e3576a340f93b044a3a3a09841170ab4c1eb0d5c93469fd32f/pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8", size = 2454547, upload-time = "2026-01-02T09:12:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/bdf971d8bbcf80a348cc3bacfcb239f5882100fe80534b0ce67a784181d8/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91", size = 4062533, upload-time = "2026-01-02T09:12:20.791Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/5eb37a681c68d605eb7034c004875c81f86ec9ef51f5be4a63eadd58859a/pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796", size = 4138546, upload-time = "2026-01-02T09:12:23.664Z" }, + { url = "https://files.pythonhosted.org/packages/11/6d/19a95acb2edbace40dcd582d077b991646b7083c41b98da4ed7555b59733/pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd", size = 3601163, upload-time = "2026-01-02T09:12:26.338Z" }, + { url = "https://files.pythonhosted.org/packages/fc/36/2b8138e51cb42e4cc39c3297713455548be855a50558c3ac2beebdc251dd/pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13", size = 5266086, upload-time = "2026-01-02T09:12:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/53/4b/649056e4d22e1caa90816bf99cef0884aed607ed38075bd75f091a607a38/pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e", size = 4657344, upload-time = "2026-01-02T09:12:31.117Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6b/c5742cea0f1ade0cd61485dc3d81f05261fc2276f537fbdc00802de56779/pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643", size = 6232114, upload-time = "2026-01-02T09:12:32.936Z" }, + { url = "https://files.pythonhosted.org/packages/bf/8f/9f521268ce22d63991601aafd3d48d5ff7280a246a1ef62d626d67b44064/pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5", size = 8042708, upload-time = "2026-01-02T09:12:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/1a/eb/257f38542893f021502a1bbe0c2e883c90b5cff26cc33b1584a841a06d30/pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de", size = 6347762, upload-time = "2026-01-02T09:12:36.748Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5a/8ba375025701c09b309e8d5163c5a4ce0102fa86bbf8800eb0d7ac87bc51/pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9", size = 7039265, upload-time = "2026-01-02T09:12:39.082Z" }, + { url = "https://files.pythonhosted.org/packages/cf/dc/cf5e4cdb3db533f539e88a7bbf9f190c64ab8a08a9bc7a4ccf55067872e4/pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a", size = 6462341, upload-time = "2026-01-02T09:12:40.946Z" }, + { url = "https://files.pythonhosted.org/packages/d0/47/0291a25ac9550677e22eda48510cfc4fa4b2ef0396448b7fbdc0a6946309/pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a", size = 7165395, upload-time = "2026-01-02T09:12:42.706Z" }, + { url = "https://files.pythonhosted.org/packages/4f/4c/e005a59393ec4d9416be06e6b45820403bb946a778e39ecec62f5b2b991e/pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030", size = 6431413, upload-time = "2026-01-02T09:12:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/f23697f587ac5f9095d67e31b81c95c0249cd461a9798a061ed6709b09b5/pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94", size = 7176779, upload-time = "2026-01-02T09:12:46.727Z" }, + { url = "https://files.pythonhosted.org/packages/b3/36/6a51abf8599232f3e9afbd16d52829376a68909fe14efe29084445db4b73/pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4", size = 2543105, upload-time = "2026-01-02T09:12:49.243Z" }, + { url = "https://files.pythonhosted.org/packages/82/54/2e1dd20c8749ff225080d6ba465a0cab4387f5db0d1c5fb1439e2d99923f/pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2", size = 5268571, upload-time = "2026-01-02T09:12:51.11Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/571163a5ef86ec0cf30d265ac2a70ae6fc9e28413d1dc94fa37fae6bda89/pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61", size = 4660426, upload-time = "2026-01-02T09:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e1/53ee5163f794aef1bf84243f755ee6897a92c708505350dd1923f4afec48/pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51", size = 6269908, upload-time = "2026-01-02T09:12:54.884Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/b4b4106ff0ee1afa1dc599fde6ab230417f800279745124f6c50bcffed8e/pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc", size = 8074733, upload-time = "2026-01-02T09:12:56.802Z" }, + { url = "https://files.pythonhosted.org/packages/19/9f/80b411cbac4a732439e629a26ad3ef11907a8c7fc5377b7602f04f6fe4e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14", size = 6381431, upload-time = "2026-01-02T09:12:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/d65c45db463b66ecb6abc17c6ba6917a911202a07662247e1355ce1789e7/pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8", size = 7068529, upload-time = "2026-01-02T09:13:00.885Z" }, + { url = "https://files.pythonhosted.org/packages/50/96/dfd4cd726b4a45ae6e3c669fc9e49deb2241312605d33aba50499e9d9bd1/pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924", size = 6492981, upload-time = "2026-01-02T09:13:03.314Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/b5dc52cf713ae46033359c5ca920444f18a6359ce1020dd3e9c553ea5bc6/pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef", size = 7191878, upload-time = "2026-01-02T09:13:05.276Z" }, + { url = "https://files.pythonhosted.org/packages/53/26/c4188248bd5edaf543864fe4834aebe9c9cb4968b6f573ce014cc42d0720/pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988", size = 6438703, upload-time = "2026-01-02T09:13:07.491Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0e/69ed296de8ea05cb03ee139cee600f424ca166e632567b2d66727f08c7ed/pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6", size = 7182927, upload-time = "2026-01-02T09:13:09.841Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/68334c015eed9b5cff77814258717dec591ded209ab5b6fb70e2ae873d1d/pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831", size = 2545104, upload-time = "2026-01-02T09:13:12.068Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/23/53/3edb5d68ecf6b38fcbcc1ad28391117d2a322d9a1a3eff04bfdb184d8c3b/prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", size = 80481, upload-time = "2025-09-18T20:47:25.043Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/db/14bafcb4af2139e046d03fd00dea7873e48eafe18b7d2797e73d6681f210/prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99", size = 61145, upload-time = "2025-09-18T20:47:23.875Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "propcache" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, + { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, + { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, + { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload-time = "2025-10-08T19:47:07.648Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload-time = "2025-10-08T19:47:08.851Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload-time = "2025-10-08T19:47:09.982Z" }, + { url = "https://files.pythonhosted.org/packages/2d/48/c5ac64dee5262044348d1d78a5f85dd1a57464a60d30daee946699963eb3/propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe", size = 208182, upload-time = "2025-10-08T19:47:11.319Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0c/cd762dd011a9287389a6a3eb43aa30207bde253610cca06824aeabfe9653/propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af", size = 211215, upload-time = "2025-10-08T19:47:13.146Z" }, + { url = "https://files.pythonhosted.org/packages/30/3e/49861e90233ba36890ae0ca4c660e95df565b2cd15d4a68556ab5865974e/propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c", size = 218112, upload-time = "2025-10-08T19:47:14.913Z" }, + { url = "https://files.pythonhosted.org/packages/f1/8b/544bc867e24e1bd48f3118cecd3b05c694e160a168478fa28770f22fd094/propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f", size = 204442, upload-time = "2025-10-08T19:47:16.277Z" }, + { url = "https://files.pythonhosted.org/packages/50/a6/4282772fd016a76d3e5c0df58380a5ea64900afd836cec2c2f662d1b9bb3/propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1", size = 199398, upload-time = "2025-10-08T19:47:17.962Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ec/d8a7cd406ee1ddb705db2139f8a10a8a427100347bd698e7014351c7af09/propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24", size = 196920, upload-time = "2025-10-08T19:47:19.355Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6c/f38ab64af3764f431e359f8baf9e0a21013e24329e8b85d2da32e8ed07ca/propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa", size = 203748, upload-time = "2025-10-08T19:47:21.338Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e3/fa846bd70f6534d647886621388f0a265254d30e3ce47e5c8e6e27dbf153/propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61", size = 205877, upload-time = "2025-10-08T19:47:23.059Z" }, + { url = "https://files.pythonhosted.org/packages/e2/39/8163fc6f3133fea7b5f2827e8eba2029a0277ab2c5beee6c1db7b10fc23d/propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66", size = 199437, upload-time = "2025-10-08T19:47:24.445Z" }, + { url = "https://files.pythonhosted.org/packages/93/89/caa9089970ca49c7c01662bd0eeedfe85494e863e8043565aeb6472ce8fe/propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81", size = 37586, upload-time = "2025-10-08T19:47:25.736Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ab/f76ec3c3627c883215b5c8080debb4394ef5a7a29be811f786415fc1e6fd/propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e", size = 40790, upload-time = "2025-10-08T19:47:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/59/1b/e71ae98235f8e2ba5004d8cb19765a74877abf189bc53fc0c80d799e56c3/propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1", size = 37158, upload-time = "2025-10-08T19:47:27.961Z" }, + { url = "https://files.pythonhosted.org/packages/83/ce/a31bbdfc24ee0dcbba458c8175ed26089cf109a55bbe7b7640ed2470cfe9/propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b", size = 81451, upload-time = "2025-10-08T19:47:29.445Z" }, + { url = "https://files.pythonhosted.org/packages/25/9c/442a45a470a68456e710d96cacd3573ef26a1d0a60067e6a7d5e655621ed/propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566", size = 46374, upload-time = "2025-10-08T19:47:30.579Z" }, + { url = "https://files.pythonhosted.org/packages/f4/bf/b1d5e21dbc3b2e889ea4327044fb16312a736d97640fb8b6aa3f9c7b3b65/propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835", size = 48396, upload-time = "2025-10-08T19:47:31.79Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/5b4c54a103d480e978d3c8a76073502b18db0c4bc17ab91b3cb5092ad949/propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e", size = 275950, upload-time = "2025-10-08T19:47:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c1/86f846827fb969c4b78b0af79bba1d1ea2156492e1b83dea8b8a6ae27395/propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859", size = 273856, upload-time = "2025-10-08T19:47:34.906Z" }, + { url = "https://files.pythonhosted.org/packages/36/1d/fc272a63c8d3bbad6878c336c7a7dea15e8f2d23a544bda43205dfa83ada/propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b", size = 280420, upload-time = "2025-10-08T19:47:36.338Z" }, + { url = "https://files.pythonhosted.org/packages/07/0c/01f2219d39f7e53d52e5173bcb09c976609ba30209912a0680adfb8c593a/propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0", size = 263254, upload-time = "2025-10-08T19:47:37.692Z" }, + { url = "https://files.pythonhosted.org/packages/2d/18/cd28081658ce597898f0c4d174d4d0f3c5b6d4dc27ffafeef835c95eb359/propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af", size = 261205, upload-time = "2025-10-08T19:47:39.659Z" }, + { url = "https://files.pythonhosted.org/packages/7a/71/1f9e22eb8b8316701c2a19fa1f388c8a3185082607da8e406a803c9b954e/propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393", size = 247873, upload-time = "2025-10-08T19:47:41.084Z" }, + { url = "https://files.pythonhosted.org/packages/4a/65/3d4b61f36af2b4eddba9def857959f1016a51066b4f1ce348e0cf7881f58/propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874", size = 262739, upload-time = "2025-10-08T19:47:42.51Z" }, + { url = "https://files.pythonhosted.org/packages/2a/42/26746ab087faa77c1c68079b228810436ccd9a5ce9ac85e2b7307195fd06/propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7", size = 263514, upload-time = "2025-10-08T19:47:43.927Z" }, + { url = "https://files.pythonhosted.org/packages/94/13/630690fe201f5502d2403dd3cfd451ed8858fe3c738ee88d095ad2ff407b/propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1", size = 257781, upload-time = "2025-10-08T19:47:45.448Z" }, + { url = "https://files.pythonhosted.org/packages/92/f7/1d4ec5841505f423469efbfc381d64b7b467438cd5a4bbcbb063f3b73d27/propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717", size = 41396, upload-time = "2025-10-08T19:47:47.202Z" }, + { url = "https://files.pythonhosted.org/packages/48/f0/615c30622316496d2cbbc29f5985f7777d3ada70f23370608c1d3e081c1f/propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37", size = 44897, upload-time = "2025-10-08T19:47:48.336Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ca/6002e46eccbe0e33dcd4069ef32f7f1c9e243736e07adca37ae8c4830ec3/propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a", size = 39789, upload-time = "2025-10-08T19:47:49.876Z" }, + { url = "https://files.pythonhosted.org/packages/8e/5c/bca52d654a896f831b8256683457ceddd490ec18d9ec50e97dfd8fc726a8/propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12", size = 78152, upload-time = "2025-10-08T19:47:51.051Z" }, + { url = "https://files.pythonhosted.org/packages/65/9b/03b04e7d82a5f54fb16113d839f5ea1ede58a61e90edf515f6577c66fa8f/propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c", size = 44869, upload-time = "2025-10-08T19:47:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fa/89a8ef0468d5833a23fff277b143d0573897cf75bd56670a6d28126c7d68/propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded", size = 46596, upload-time = "2025-10-08T19:47:54.073Z" }, + { url = "https://files.pythonhosted.org/packages/86/bd/47816020d337f4a746edc42fe8d53669965138f39ee117414c7d7a340cfe/propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641", size = 206981, upload-time = "2025-10-08T19:47:55.715Z" }, + { url = "https://files.pythonhosted.org/packages/df/f6/c5fa1357cc9748510ee55f37173eb31bfde6d94e98ccd9e6f033f2fc06e1/propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4", size = 211490, upload-time = "2025-10-08T19:47:57.499Z" }, + { url = "https://files.pythonhosted.org/packages/80/1e/e5889652a7c4a3846683401a48f0f2e5083ce0ec1a8a5221d8058fbd1adf/propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44", size = 215371, upload-time = "2025-10-08T19:47:59.317Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f2/889ad4b2408f72fe1a4f6a19491177b30ea7bf1a0fd5f17050ca08cfc882/propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d", size = 201424, upload-time = "2025-10-08T19:48:00.67Z" }, + { url = "https://files.pythonhosted.org/packages/27/73/033d63069b57b0812c8bd19f311faebeceb6ba31b8f32b73432d12a0b826/propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b", size = 197566, upload-time = "2025-10-08T19:48:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/dc/89/ce24f3dc182630b4e07aa6d15f0ff4b14ed4b9955fae95a0b54c58d66c05/propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e", size = 193130, upload-time = "2025-10-08T19:48:04.499Z" }, + { url = "https://files.pythonhosted.org/packages/a9/24/ef0d5fd1a811fb5c609278d0209c9f10c35f20581fcc16f818da959fc5b4/propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f", size = 202625, upload-time = "2025-10-08T19:48:06.213Z" }, + { url = "https://files.pythonhosted.org/packages/f5/02/98ec20ff5546f68d673df2f7a69e8c0d076b5abd05ca882dc7ee3a83653d/propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49", size = 204209, upload-time = "2025-10-08T19:48:08.432Z" }, + { url = "https://files.pythonhosted.org/packages/a0/87/492694f76759b15f0467a2a93ab68d32859672b646aa8a04ce4864e7932d/propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144", size = 197797, upload-time = "2025-10-08T19:48:09.968Z" }, + { url = "https://files.pythonhosted.org/packages/ee/36/66367de3575db1d2d3f3d177432bd14ee577a39d3f5d1b3d5df8afe3b6e2/propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f", size = 38140, upload-time = "2025-10-08T19:48:11.232Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2a/a758b47de253636e1b8aef181c0b4f4f204bf0dd964914fb2af90a95b49b/propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153", size = 41257, upload-time = "2025-10-08T19:48:12.707Z" }, + { url = "https://files.pythonhosted.org/packages/34/5e/63bd5896c3fec12edcbd6f12508d4890d23c265df28c74b175e1ef9f4f3b/propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992", size = 38097, upload-time = "2025-10-08T19:48:13.923Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/9ff785d787ccf9bbb3f3106f79884a130951436f58392000231b4c737c80/propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f", size = 81455, upload-time = "2025-10-08T19:48:15.16Z" }, + { url = "https://files.pythonhosted.org/packages/90/85/2431c10c8e7ddb1445c1f7c4b54d886e8ad20e3c6307e7218f05922cad67/propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393", size = 46372, upload-time = "2025-10-08T19:48:16.424Z" }, + { url = "https://files.pythonhosted.org/packages/01/20/b0972d902472da9bcb683fa595099911f4d2e86e5683bcc45de60dd05dc3/propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0", size = 48411, upload-time = "2025-10-08T19:48:17.577Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e3/7dc89f4f21e8f99bad3d5ddb3a3389afcf9da4ac69e3deb2dcdc96e74169/propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a", size = 275712, upload-time = "2025-10-08T19:48:18.901Z" }, + { url = "https://files.pythonhosted.org/packages/20/67/89800c8352489b21a8047c773067644e3897f02ecbbd610f4d46b7f08612/propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be", size = 273557, upload-time = "2025-10-08T19:48:20.762Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a1/b52b055c766a54ce6d9c16d9aca0cad8059acd9637cdf8aa0222f4a026ef/propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc", size = 280015, upload-time = "2025-10-08T19:48:22.592Z" }, + { url = "https://files.pythonhosted.org/packages/48/c8/33cee30bd890672c63743049f3c9e4be087e6780906bfc3ec58528be59c1/propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a", size = 262880, upload-time = "2025-10-08T19:48:23.947Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/8f08a143b204b418285c88b83d00edbd61afbc2c6415ffafc8905da7038b/propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89", size = 260938, upload-time = "2025-10-08T19:48:25.656Z" }, + { url = "https://files.pythonhosted.org/packages/cf/12/96e4664c82ca2f31e1c8dff86afb867348979eb78d3cb8546a680287a1e9/propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726", size = 247641, upload-time = "2025-10-08T19:48:27.207Z" }, + { url = "https://files.pythonhosted.org/packages/18/ed/e7a9cfca28133386ba52278136d42209d3125db08d0a6395f0cba0c0285c/propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367", size = 262510, upload-time = "2025-10-08T19:48:28.65Z" }, + { url = "https://files.pythonhosted.org/packages/f5/76/16d8bf65e8845dd62b4e2b57444ab81f07f40caa5652b8969b87ddcf2ef6/propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36", size = 263161, upload-time = "2025-10-08T19:48:30.133Z" }, + { url = "https://files.pythonhosted.org/packages/e7/70/c99e9edb5d91d5ad8a49fa3c1e8285ba64f1476782fed10ab251ff413ba1/propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455", size = 257393, upload-time = "2025-10-08T19:48:31.567Z" }, + { url = "https://files.pythonhosted.org/packages/08/02/87b25304249a35c0915d236575bc3574a323f60b47939a2262b77632a3ee/propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85", size = 42546, upload-time = "2025-10-08T19:48:32.872Z" }, + { url = "https://files.pythonhosted.org/packages/cb/ef/3c6ecf8b317aa982f309835e8f96987466123c6e596646d4e6a1dfcd080f/propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1", size = 46259, upload-time = "2025-10-08T19:48:34.226Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2d/346e946d4951f37eca1e4f55be0f0174c52cd70720f84029b02f296f4a38/propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9", size = 40428, upload-time = "2025-10-08T19:48:35.441Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, +] + +[[package]] +name = "protobuf" +version = "6.33.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/44/e49ecff446afeec9d1a66d6bbf9adc21e3c7cea7803a920ca3773379d4f6/protobuf-6.33.2.tar.gz", hash = "sha256:56dc370c91fbb8ac85bc13582c9e373569668a290aa2e66a590c2a0d35ddb9e4", size = 444296, upload-time = "2025-12-06T00:17:53.311Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/91/1e3a34881a88697a7354ffd177e8746e97a722e5e8db101544b47e84afb1/protobuf-6.33.2-cp310-abi3-win32.whl", hash = "sha256:87eb388bd2d0f78febd8f4c8779c79247b26a5befad525008e49a6955787ff3d", size = 425603, upload-time = "2025-12-06T00:17:41.114Z" }, + { url = "https://files.pythonhosted.org/packages/64/20/4d50191997e917ae13ad0a235c8b42d8c1ab9c3e6fd455ca16d416944355/protobuf-6.33.2-cp310-abi3-win_amd64.whl", hash = "sha256:fc2a0e8b05b180e5fc0dd1559fe8ebdae21a27e81ac77728fb6c42b12c7419b4", size = 436930, upload-time = "2025-12-06T00:17:43.278Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ca/7e485da88ba45c920fb3f50ae78de29ab925d9e54ef0de678306abfbb497/protobuf-6.33.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9b19771ca75935b3a4422957bc518b0cecb978b31d1dd12037b088f6bcc0e43", size = 427621, upload-time = "2025-12-06T00:17:44.445Z" }, + { url = "https://files.pythonhosted.org/packages/7d/4f/f743761e41d3b2b2566748eb76bbff2b43e14d5fcab694f494a16458b05f/protobuf-6.33.2-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5d3b5625192214066d99b2b605f5783483575656784de223f00a8d00754fc0e", size = 324460, upload-time = "2025-12-06T00:17:45.678Z" }, + { url = "https://files.pythonhosted.org/packages/b1/fa/26468d00a92824020f6f2090d827078c09c9c587e34cbfd2d0c7911221f8/protobuf-6.33.2-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8cd7640aee0b7828b6d03ae518b5b4806fdfc1afe8de82f79c3454f8aef29872", size = 339168, upload-time = "2025-12-06T00:17:46.813Z" }, + { url = "https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f", size = 323270, upload-time = "2025-12-06T00:17:48.253Z" }, + { url = "https://files.pythonhosted.org/packages/0e/15/4f02896cc3df04fc465010a4c6a0cd89810f54617a32a70ef531ed75d61c/protobuf-6.33.2-py3-none-any.whl", hash = "sha256:7636aad9bb01768870266de5dc009de2d1b936771b38a793f73cbbf279c91c5c", size = 170501, upload-time = "2025-12-06T00:17:52.211Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/cb/09e5184fb5fc0358d110fc3ca7f6b1d033800734d34cac10f4136cfac10e/psutil-7.2.1.tar.gz", hash = "sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3", size = 490253, upload-time = "2025-12-29T08:26:00.169Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/8e/f0c242053a368c2aa89584ecd1b054a18683f13d6e5a318fc9ec36582c94/psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d", size = 129624, upload-time = "2025-12-29T08:26:04.255Z" }, + { url = "https://files.pythonhosted.org/packages/26/97/a58a4968f8990617decee234258a2b4fc7cd9e35668387646c1963e69f26/psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49", size = 130132, upload-time = "2025-12-29T08:26:06.228Z" }, + { url = "https://files.pythonhosted.org/packages/db/6d/ed44901e830739af5f72a85fa7ec5ff1edea7f81bfbf4875e409007149bd/psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc", size = 180612, upload-time = "2025-12-29T08:26:08.276Z" }, + { url = "https://files.pythonhosted.org/packages/c7/65/b628f8459bca4efbfae50d4bf3feaab803de9a160b9d5f3bd9295a33f0c2/psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf", size = 183201, upload-time = "2025-12-29T08:26:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/fb/23/851cadc9764edcc18f0effe7d0bf69f727d4cf2442deb4a9f78d4e4f30f2/psutil-7.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f", size = 139081, upload-time = "2025-12-29T08:26:12.483Z" }, + { url = "https://files.pythonhosted.org/packages/59/82/d63e8494ec5758029f31c6cb06d7d161175d8281e91d011a4a441c8a43b5/psutil-7.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672", size = 134767, upload-time = "2025-12-29T08:26:14.528Z" }, + { url = "https://files.pythonhosted.org/packages/05/c2/5fb764bd61e40e1fe756a44bd4c21827228394c17414ade348e28f83cd79/psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679", size = 129716, upload-time = "2025-12-29T08:26:16.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d2/935039c20e06f615d9ca6ca0ab756cf8408a19d298ffaa08666bc18dc805/psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f", size = 130133, upload-time = "2025-12-29T08:26:18.009Z" }, + { url = "https://files.pythonhosted.org/packages/77/69/19f1eb0e01d24c2b3eacbc2f78d3b5add8a89bf0bb69465bc8d563cc33de/psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129", size = 181518, upload-time = "2025-12-29T08:26:20.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6d/7e18b1b4fa13ad370787626c95887b027656ad4829c156bb6569d02f3262/psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a", size = 184348, upload-time = "2025-12-29T08:26:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/60/1672114392dd879586d60dd97896325df47d9a130ac7401318005aab28ec/psutil-7.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79", size = 140400, upload-time = "2025-12-29T08:26:23.993Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7b/d0e9d4513c46e46897b46bcfc410d51fc65735837ea57a25170f298326e6/psutil-7.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266", size = 135430, upload-time = "2025-12-29T08:26:25.999Z" }, + { url = "https://files.pythonhosted.org/packages/c5/cf/5180eb8c8bdf6a503c6919f1da28328bd1e6b3b1b5b9d5b01ae64f019616/psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42", size = 128137, upload-time = "2025-12-29T08:26:27.759Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2c/78e4a789306a92ade5000da4f5de3255202c534acdadc3aac7b5458fadef/psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1", size = 128947, upload-time = "2025-12-29T08:26:29.548Z" }, + { url = "https://files.pythonhosted.org/packages/29/f8/40e01c350ad9a2b3cb4e6adbcc8a83b17ee50dd5792102b6142385937db5/psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8", size = 154694, upload-time = "2025-12-29T08:26:32.147Z" }, + { url = "https://files.pythonhosted.org/packages/06/e4/b751cdf839c011a9714a783f120e6a86b7494eb70044d7d81a25a5cd295f/psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6", size = 156136, upload-time = "2025-12-29T08:26:34.079Z" }, + { url = "https://files.pythonhosted.org/packages/44/ad/bbf6595a8134ee1e94a4487af3f132cef7fce43aef4a93b49912a48c3af7/psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8", size = 148108, upload-time = "2025-12-29T08:26:36.225Z" }, + { url = "https://files.pythonhosted.org/packages/1c/15/dd6fd869753ce82ff64dcbc18356093471a5a5adf4f77ed1f805d473d859/psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67", size = 147402, upload-time = "2025-12-29T08:26:39.21Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/d9317542e3f2b180c4306e3f45d3c922d7e86d8ce39f941bb9e2e9d8599e/psutil-7.2.1-cp37-abi3-win_amd64.whl", hash = "sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17", size = 136938, upload-time = "2025-12-29T08:26:41.036Z" }, + { url = "https://files.pythonhosted.org/packages/3e/73/2ce007f4198c80fcf2cb24c169884f833fe93fbc03d55d302627b094ee91/psutil-7.2.1-cp37-abi3-win_arm64.whl", hash = "sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442", size = 133836, upload-time = "2025-12-29T08:26:43.086Z" }, +] + +[[package]] +name = "psygnal" +version = "0.15.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/79/20c3e23e75272e9ddf018097cf872ab088bccba978888472656629efa4a3/psygnal-0.15.1.tar.gz", hash = "sha256:f64f62dee2306fc1c22050a59b6c6cdad126e04b0cf50e393ff858a1da719096", size = 123147, upload-time = "2026-01-04T16:38:41.959Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/65/b7bbca96bc477aa9ac2264e5907b2f4ccfcd1319f776dd1f35eec06cc2f4/psygnal-0.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d56f0f35eaf4a21f660de76885222faf9e8c7112454528d3394d464f3d4d1a3", size = 598340, upload-time = "2026-01-04T16:38:19.752Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/56577465a1b42a5e6780bb5fab53fb68f8bfd72f0131ed397576529af724/psygnal-0.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0febcf757a1323d9b8bd75735ee3569213d8110012a7bf0f478e85c5ab459fc6", size = 575311, upload-time = "2026-01-04T16:38:21.137Z" }, + { url = "https://files.pythonhosted.org/packages/79/81/f642ac08104049383076f83480ed412c9626e068769a1c34873c595bec0e/psygnal-0.15.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b5e4837dfbfa4974dabe0795e32be9aadcd87603adf734738ce1114f72238a05", size = 889770, upload-time = "2026-01-04T16:38:22.629Z" }, + { url = "https://files.pythonhosted.org/packages/de/43/e571fa40b72780abed080ef829e5ad98017b6fe48d28c15a2404e006b676/psygnal-0.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:07b4c4e03bbf4e8cad7e25f4fbc1ba9575fb9c3d14991bc7edfeb8b09c8d6d54", size = 881105, upload-time = "2026-01-04T16:38:23.896Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/ef3ab825eb08eaecbbceeeb56383694fe64ce399dbfd1d0767bb85688785/psygnal-0.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:4f0ce91b9c18e92281bf2c3fc4bb4e808d90f0b023d0a37b302d354188520338", size = 418969, upload-time = "2026-01-04T16:38:25.731Z" }, + { url = "https://files.pythonhosted.org/packages/46/21/5a142165d27063abf5921807d3c3d973f5d44ab414a13b210839a43ead4d/psygnal-0.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2087aadc9404f007f79c2899e329932869e362c50de58b90631c5f49b4768cc5", size = 596768, upload-time = "2026-01-04T16:38:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/e1/25/c1712931d61c118691e73daf29ef708c679ea9ba187c797dd5deee360411/psygnal-0.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f3bf68ca42569dfdce20c6cf915d34b78b9e3ddddacb9f78728224fda6946b4", size = 574808, upload-time = "2026-01-04T16:38:28.779Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4f/3593e5adb88a188c798604aed95fbc1479f30230e7f51e8f2c770e6a3832/psygnal-0.15.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e9fca977f5335deea39aed22e31d9795983e4f243e59a7d3c4105793adb7693d", size = 885616, upload-time = "2026-01-04T16:38:30.081Z" }, + { url = "https://files.pythonhosted.org/packages/58/4c/14779ed4c3a1d71fa1a9a87ecfb184ad3335dd64681067f77c1c47b14ae9/psygnal-0.15.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c85b7d05b92ccbec47c75ab8a5545eda462e81a492c82424aba5ab81a3ad89d", size = 876516, upload-time = "2026-01-04T16:38:31.422Z" }, + { url = "https://files.pythonhosted.org/packages/3e/bc/4f771e3cdcde4db4023dbf36d6f0aab44e02b9de719353c22954b655e2ff/psygnal-0.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:ac0e693b29e0a429e97315a52313321855bef6140e9975b7ae78b4d93c8fbb42", size = 419172, upload-time = "2026-01-04T16:38:32.82Z" }, + { url = "https://files.pythonhosted.org/packages/f4/2e/975bd61727578d88df62797f78390965ca7905780cf01eb59cb095a13638/psygnal-0.15.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:803fc33c4280c822c6f4b22e6c3ea7c4483e190f3cc69e69350098b3799476f3", size = 595706, upload-time = "2026-01-04T16:38:34.139Z" }, + { url = "https://files.pythonhosted.org/packages/b8/55/e487f1d91497eb75e86c3fdfef69a21b1cab24d023383dd7648b08797d6a/psygnal-0.15.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4f53b4b83355b0a785b745987fd04e59bbf169a9028ed81a68ca7e05fb76d458", size = 575133, upload-time = "2026-01-04T16:38:35.448Z" }, + { url = "https://files.pythonhosted.org/packages/bf/2f/f286355accd0e68d3eef52e63c8b9ab6ba33ec3107177719a036b3319657/psygnal-0.15.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bcbca12190f5aa65c1f8fb04a81fa6f4463c5f5dde25cd74c3a56ceff6f37b02", size = 889565, upload-time = "2026-01-04T16:38:37.003Z" }, + { url = "https://files.pythonhosted.org/packages/fc/dc/40c6026c88d7f9220ecc913afe0501045a512c9b82f9b7e036bb089dc287/psygnal-0.15.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1ac399566852fe4354ce26a1acbe12319232e8c2b615fe5ad1e114c547095cf6", size = 880863, upload-time = "2026-01-04T16:38:38.381Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/b4f45ec3057c473b5622fc002b3a636a698c34d3a0917a064ff5247f1984/psygnal-0.15.1-cp314-cp314-win_amd64.whl", hash = "sha256:d3a03055f331ce91d44581c71edb79938ccc133a94af2ce7ad3a18fa57ac7be5", size = 423654, upload-time = "2026-01-04T16:38:39.7Z" }, + { url = "https://files.pythonhosted.org/packages/46/49/7742544684bee728ec123515d2694cee859aa2a705951a461230b00f18cc/psygnal-0.15.1-py3-none-any.whl", hash = "sha256:4221140e633e45b076953c64bcb9b41a744833527f9a037c1ca98bc270798cbf", size = 90638, upload-time = "2026-01-04T16:38:40.841Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pyarrow" +version = "22.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151, upload-time = "2025-10-24T12:30:00.762Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578, upload-time = "2025-10-24T10:05:21.583Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906, upload-time = "2025-10-24T10:05:29.485Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677, upload-time = "2025-10-24T10:05:38.274Z" }, + { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315, upload-time = "2025-10-24T10:05:47.314Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906, upload-time = "2025-10-24T10:05:58.254Z" }, + { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783, upload-time = "2025-10-24T10:06:08.08Z" }, + { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883, upload-time = "2025-10-24T10:06:14.204Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629, upload-time = "2025-10-24T10:06:20.274Z" }, + { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783, upload-time = "2025-10-24T10:06:27.301Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999, upload-time = "2025-10-24T10:06:35.387Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", size = 47724601, upload-time = "2025-10-24T10:06:43.551Z" }, + { url = "https://files.pythonhosted.org/packages/69/4d/76e567a4fc2e190ee6072967cb4672b7d9249ac59ae65af2d7e3047afa3b/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", size = 48001050, upload-time = "2025-10-24T10:06:52.284Z" }, + { url = "https://files.pythonhosted.org/packages/01/5e/5653f0535d2a1aef8223cee9d92944cb6bccfee5cf1cd3f462d7cb022790/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", size = 50307877, upload-time = "2025-10-24T10:07:02.405Z" }, + { url = "https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", size = 27977099, upload-time = "2025-10-24T10:08:07.259Z" }, + { url = "https://files.pythonhosted.org/packages/90/81/db56870c997805bf2b0f6eeeb2d68458bf4654652dccdcf1bf7a42d80903/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", size = 34336685, upload-time = "2025-10-24T10:07:11.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/98/0727947f199aba8a120f47dfc229eeb05df15bcd7a6f1b669e9f882afc58/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", size = 36032158, upload-time = "2025-10-24T10:07:18.626Z" }, + { url = "https://files.pythonhosted.org/packages/96/b4/9babdef9c01720a0785945c7cf550e4acd0ebcd7bdd2e6f0aa7981fa85e2/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", size = 44892060, upload-time = "2025-10-24T10:07:26.002Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ca/2f8804edd6279f78a37062d813de3f16f29183874447ef6d1aadbb4efa0f/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", size = 47504395, upload-time = "2025-10-24T10:07:34.09Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f0/77aa5198fd3943682b2e4faaf179a674f0edea0d55d326d83cb2277d9363/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", size = 48066216, upload-time = "2025-10-24T10:07:43.528Z" }, + { url = "https://files.pythonhosted.org/packages/79/87/a1937b6e78b2aff18b706d738c9e46ade5bfcf11b294e39c87706a0089ac/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", size = 50288552, upload-time = "2025-10-24T10:07:53.519Z" }, + { url = "https://files.pythonhosted.org/packages/60/ae/b5a5811e11f25788ccfdaa8f26b6791c9807119dffcf80514505527c384c/pyarrow-22.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", size = 28262504, upload-time = "2025-10-24T10:08:00.932Z" }, + { url = "https://files.pythonhosted.org/packages/bd/b0/0fa4d28a8edb42b0a7144edd20befd04173ac79819547216f8a9f36f9e50/pyarrow-22.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", size = 34224062, upload-time = "2025-10-24T10:08:14.101Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a8/7a719076b3c1be0acef56a07220c586f25cd24de0e3f3102b438d18ae5df/pyarrow-22.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", size = 35990057, upload-time = "2025-10-24T10:08:21.842Z" }, + { url = "https://files.pythonhosted.org/packages/89/3c/359ed54c93b47fb6fe30ed16cdf50e3f0e8b9ccfb11b86218c3619ae50a8/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", size = 45068002, upload-time = "2025-10-24T10:08:29.034Z" }, + { url = "https://files.pythonhosted.org/packages/55/fc/4945896cc8638536ee787a3bd6ce7cec8ec9acf452d78ec39ab328efa0a1/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", size = 47737765, upload-time = "2025-10-24T10:08:38.559Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5e/7cb7edeb2abfaa1f79b5d5eb89432356155c8426f75d3753cbcb9592c0fd/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", size = 48048139, upload-time = "2025-10-24T10:08:46.784Z" }, + { url = "https://files.pythonhosted.org/packages/88/c6/546baa7c48185f5e9d6e59277c4b19f30f48c94d9dd938c2a80d4d6b067c/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", size = 50314244, upload-time = "2025-10-24T10:08:55.771Z" }, + { url = "https://files.pythonhosted.org/packages/3c/79/755ff2d145aafec8d347bf18f95e4e81c00127f06d080135dfc86aea417c/pyarrow-22.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", size = 28757501, upload-time = "2025-10-24T10:09:59.891Z" }, + { url = "https://files.pythonhosted.org/packages/0e/d2/237d75ac28ced3147912954e3c1a174df43a95f4f88e467809118a8165e0/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", size = 34355506, upload-time = "2025-10-24T10:09:02.953Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/733dfffe6d3069740f98e57ff81007809067d68626c5faef293434d11bd6/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", size = 36047312, upload-time = "2025-10-24T10:09:10.334Z" }, + { url = "https://files.pythonhosted.org/packages/7c/2b/29d6e3782dc1f299727462c1543af357a0f2c1d3c160ce199950d9ca51eb/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", size = 45081609, upload-time = "2025-10-24T10:09:18.61Z" }, + { url = "https://files.pythonhosted.org/packages/8d/42/aa9355ecc05997915af1b7b947a7f66c02dcaa927f3203b87871c114ba10/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", size = 47703663, upload-time = "2025-10-24T10:09:27.369Z" }, + { url = "https://files.pythonhosted.org/packages/ee/62/45abedde480168e83a1de005b7b7043fd553321c1e8c5a9a114425f64842/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", size = 48066543, upload-time = "2025-10-24T10:09:34.908Z" }, + { url = "https://files.pythonhosted.org/packages/84/e9/7878940a5b072e4f3bf998770acafeae13b267f9893af5f6d4ab3904b67e/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", size = 50288838, upload-time = "2025-10-24T10:09:44.394Z" }, + { url = "https://files.pythonhosted.org/packages/7b/03/f335d6c52b4a4761bcc83499789a1e2e16d9d201a58c327a9b5cc9a41bd9/pyarrow-22.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", size = 29185594, upload-time = "2025-10-24T10:09:53.111Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/33/c1/1d9de9aeaa1b89b0186e5fe23294ff6517fce1bc69149185577cd31016b2/pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c", size = 1550512, upload-time = "2025-12-23T03:14:04.391Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/40/2614036cdd416452f5bf98ec037f38a1afb17f327cb8e6b652d4729e0af8/pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82", size = 121793, upload-time = "2025-12-23T03:14:02.103Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-json-logger" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/bf/eca6a3d43db1dae7070f70e160ab20b807627ba953663ba07928cdd3dc58/python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f", size = 17683, upload-time = "2025-10-06T04:15:18.984Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/e5/fecf13f06e5e5f67e8837d777d1bc43fac0ed2b77a676804df5c34744727/python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2", size = 15548, upload-time = "2025-10-06T04:15:17.553Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywinpty" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/bb/a7cc2967c5c4eceb6cc49cfe39447d4bfc56e6c865e7c2249b6eb978935f/pywinpty-3.0.2.tar.gz", hash = "sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004", size = 30669, upload-time = "2025-10-03T21:16:29.205Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/4e/1098484e042c9485f56f16eb2b69b43b874bd526044ee401512234cf9e04/pywinpty-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:99fdd9b455f0ad6419aba6731a7a0d2f88ced83c3c94a80ff9533d95fa8d8a9e", size = 2050391, upload-time = "2025-10-03T21:19:01.642Z" }, + { url = "https://files.pythonhosted.org/packages/fc/19/b757fe28008236a4a713e813283721b8a40aa60cd7d3f83549f2e25a3155/pywinpty-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51", size = 2050057, upload-time = "2025-10-03T21:19:26.732Z" }, + { url = "https://files.pythonhosted.org/packages/cb/44/cbae12ecf6f4fa4129c36871fd09c6bef4f98d5f625ecefb5e2449765508/pywinpty-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b", size = 2049874, upload-time = "2025-10-03T21:18:53.923Z" }, + { url = "https://files.pythonhosted.org/packages/ca/15/f12c6055e2d7a617d4d5820e8ac4ceaff849da4cb124640ef5116a230771/pywinpty-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a", size = 2050386, upload-time = "2025-10-03T21:18:50.477Z" }, + { url = "https://files.pythonhosted.org/packages/de/24/c6907c5bb06043df98ad6a0a0ff5db2e0affcecbc3b15c42404393a3f72a/pywinpty-3.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767", size = 2049834, upload-time = "2025-10-03T21:19:25.688Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload-time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload-time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload-time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload-time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload-time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload-time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload-time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload-time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload-time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload-time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload-time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload-time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload-time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload-time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload-time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload-time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload-time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload-time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload-time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload-time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload-time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload-time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload-time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload-time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload-time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload-time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload-time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload-time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload-time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload-time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload-time = "2025-09-08T23:09:01.418Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rfc3987-syntax" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/06/37c1a5557acf449e8e406a830a05bf885ac47d33270aec454ef78675008d/rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d", size = 14239, upload-time = "2025-07-18T01:05:05.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f", size = 8046, upload-time = "2025-07-18T01:05:03.843Z" }, +] + +[[package]] +name = "rich" +version = "14.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/e7/98a2f4ac921d82f33e03f3835f5bf3a4a40aa1bfdc57975e74a97b2b4bdd/rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", size = 375086, upload-time = "2025-11-30T20:22:17.93Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a1/bca7fd3d452b272e13335db8d6b0b3ecde0f90ad6f16f3328c6fb150c889/rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", size = 359053, upload-time = "2025-11-30T20:22:19.297Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/ae157e83a6357eceff62ba7e52113e3ec4834a84cfe07fa4b0757a7d105f/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", size = 390763, upload-time = "2025-11-30T20:22:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/36/eb2eb8515e2ad24c0bd43c3ee9cd74c33f7ca6430755ccdb240fd3144c44/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", size = 408951, upload-time = "2025-11-30T20:22:23.408Z" }, + { url = "https://files.pythonhosted.org/packages/d6/65/ad8dc1784a331fabbd740ef6f71ce2198c7ed0890dab595adb9ea2d775a1/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", size = 514622, upload-time = "2025-11-30T20:22:25.16Z" }, + { url = "https://files.pythonhosted.org/packages/63/8e/0cfa7ae158e15e143fe03993b5bcd743a59f541f5952e1546b1ac1b5fd45/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", size = 414492, upload-time = "2025-11-30T20:22:26.505Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/6f8f29f3f995c7ffdde46a626ddccd7c63aefc0efae881dc13b6e5d5bb16/rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", size = 394080, upload-time = "2025-11-30T20:22:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d5/a266341051a7a3ca2f4b750a3aa4abc986378431fc2da508c5034d081b70/rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", size = 408680, upload-time = "2025-11-30T20:22:29.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/3b/71b725851df9ab7a7a4e33cf36d241933da66040d195a84781f49c50490c/rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", size = 423589, upload-time = "2025-11-30T20:22:31.469Z" }, + { url = "https://files.pythonhosted.org/packages/00/2b/e59e58c544dc9bd8bd8384ecdb8ea91f6727f0e37a7131baeff8d6f51661/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", size = 573289, upload-time = "2025-11-30T20:22:32.997Z" }, + { url = "https://files.pythonhosted.org/packages/da/3e/a18e6f5b460893172a7d6a680e86d3b6bc87a54c1f0b03446a3c8c7b588f/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", size = 599737, upload-time = "2025-11-30T20:22:34.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e2/714694e4b87b85a18e2c243614974413c60aa107fd815b8cbc42b873d1d7/rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", size = 563120, upload-time = "2025-11-30T20:22:35.903Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/d5d5e3bcedb0a77f4f613706b750e50a5a3ba1c15ccd3665ecc636c968fd/rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", size = 223782, upload-time = "2025-11-30T20:22:37.271Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/f786af9957306fdc38a74cef405b7b93180f481fb48453a114bb6465744a/rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", size = 240463, upload-time = "2025-11-30T20:22:39.021Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/b91dc748126c1559042cfe41990deb92c4ee3e2b415f6b5234969ffaf0cc/rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", size = 230868, upload-time = "2025-11-30T20:22:40.493Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, + { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" }, + { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" }, + { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" }, + { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" }, + { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" }, + { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" }, + { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" }, + { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" }, + { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" }, + { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" }, + { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" }, + { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" }, + { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" }, + { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" }, + { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" }, + { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" }, + { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" }, + { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883, upload-time = "2025-10-28T17:38:54.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/41/5bf55c3f386b1643812f3a5674edf74b26184378ef0f3e7c7a09a7e2ca7f/scipy-1.16.3-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6", size = 36659043, upload-time = "2025-10-28T17:32:40.285Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0f/65582071948cfc45d43e9870bf7ca5f0e0684e165d7c9ef4e50d783073eb/scipy-1.16.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07", size = 28898986, upload-time = "2025-10-28T17:32:45.325Z" }, + { url = "https://files.pythonhosted.org/packages/96/5e/36bf3f0ac298187d1ceadde9051177d6a4fe4d507e8f59067dc9dd39e650/scipy-1.16.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9", size = 20889814, upload-time = "2025-10-28T17:32:49.277Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/178d9d0c35394d5d5211bbff7ac4f2986c5488b59506fef9e1de13ea28d3/scipy-1.16.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686", size = 23565795, upload-time = "2025-10-28T17:32:53.337Z" }, + { url = "https://files.pythonhosted.org/packages/fa/46/d1146ff536d034d02f83c8afc3c4bab2eddb634624d6529a8512f3afc9da/scipy-1.16.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203", size = 33349476, upload-time = "2025-10-28T17:32:58.353Z" }, + { url = "https://files.pythonhosted.org/packages/79/2e/415119c9ab3e62249e18c2b082c07aff907a273741b3f8160414b0e9193c/scipy-1.16.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1", size = 35676692, upload-time = "2025-10-28T17:33:03.88Z" }, + { url = "https://files.pythonhosted.org/packages/27/82/df26e44da78bf8d2aeaf7566082260cfa15955a5a6e96e6a29935b64132f/scipy-1.16.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe", size = 36019345, upload-time = "2025-10-28T17:33:09.773Z" }, + { url = "https://files.pythonhosted.org/packages/82/31/006cbb4b648ba379a95c87262c2855cd0d09453e500937f78b30f02fa1cd/scipy-1.16.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70", size = 38678975, upload-time = "2025-10-28T17:33:15.809Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7f/acbd28c97e990b421af7d6d6cd416358c9c293fc958b8529e0bd5d2a2a19/scipy-1.16.3-cp312-cp312-win_amd64.whl", hash = "sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc", size = 38555926, upload-time = "2025-10-28T17:33:21.388Z" }, + { url = "https://files.pythonhosted.org/packages/ce/69/c5c7807fd007dad4f48e0a5f2153038dc96e8725d3345b9ee31b2b7bed46/scipy-1.16.3-cp312-cp312-win_arm64.whl", hash = "sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2", size = 25463014, upload-time = "2025-10-28T17:33:25.975Z" }, + { url = "https://files.pythonhosted.org/packages/72/f1/57e8327ab1508272029e27eeef34f2302ffc156b69e7e233e906c2a5c379/scipy-1.16.3-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c", size = 36617856, upload-time = "2025-10-28T17:33:31.375Z" }, + { url = "https://files.pythonhosted.org/packages/44/13/7e63cfba8a7452eb756306aa2fd9b37a29a323b672b964b4fdeded9a3f21/scipy-1.16.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d", size = 28874306, upload-time = "2025-10-28T17:33:36.516Z" }, + { url = "https://files.pythonhosted.org/packages/15/65/3a9400efd0228a176e6ec3454b1fa998fbbb5a8defa1672c3f65706987db/scipy-1.16.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9", size = 20865371, upload-time = "2025-10-28T17:33:42.094Z" }, + { url = "https://files.pythonhosted.org/packages/33/d7/eda09adf009a9fb81827194d4dd02d2e4bc752cef16737cc4ef065234031/scipy-1.16.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4", size = 23524877, upload-time = "2025-10-28T17:33:48.483Z" }, + { url = "https://files.pythonhosted.org/packages/7d/6b/3f911e1ebc364cb81320223a3422aab7d26c9c7973109a9cd0f27c64c6c0/scipy-1.16.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959", size = 33342103, upload-time = "2025-10-28T17:33:56.495Z" }, + { url = "https://files.pythonhosted.org/packages/21/f6/4bfb5695d8941e5c570a04d9fcd0d36bce7511b7d78e6e75c8f9791f82d0/scipy-1.16.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88", size = 35697297, upload-time = "2025-10-28T17:34:04.722Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6496dadbc80d8d896ff72511ecfe2316b50313bfc3ebf07a3f580f08bd8c/scipy-1.16.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234", size = 36021756, upload-time = "2025-10-28T17:34:13.482Z" }, + { url = "https://files.pythonhosted.org/packages/fe/bd/a8c7799e0136b987bda3e1b23d155bcb31aec68a4a472554df5f0937eef7/scipy-1.16.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d", size = 38696566, upload-time = "2025-10-28T17:34:22.384Z" }, + { url = "https://files.pythonhosted.org/packages/cd/01/1204382461fcbfeb05b6161b594f4007e78b6eba9b375382f79153172b4d/scipy-1.16.3-cp313-cp313-win_amd64.whl", hash = "sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304", size = 38529877, upload-time = "2025-10-28T17:35:51.076Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/9d9fbcaa1260a94f4bb5b64ba9213ceb5d03cd88841fe9fd1ffd47a45b73/scipy-1.16.3-cp313-cp313-win_arm64.whl", hash = "sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2", size = 25455366, upload-time = "2025-10-28T17:35:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a3/9ec205bd49f42d45d77f1730dbad9ccf146244c1647605cf834b3a8c4f36/scipy-1.16.3-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b", size = 37027931, upload-time = "2025-10-28T17:34:31.451Z" }, + { url = "https://files.pythonhosted.org/packages/25/06/ca9fd1f3a4589cbd825b1447e5db3a8ebb969c1eaf22c8579bd286f51b6d/scipy-1.16.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079", size = 29400081, upload-time = "2025-10-28T17:34:39.087Z" }, + { url = "https://files.pythonhosted.org/packages/6a/56/933e68210d92657d93fb0e381683bc0e53a965048d7358ff5fbf9e6a1b17/scipy-1.16.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a", size = 21391244, upload-time = "2025-10-28T17:34:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/a8/7e/779845db03dc1418e215726329674b40576879b91814568757ff0014ad65/scipy-1.16.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119", size = 23929753, upload-time = "2025-10-28T17:34:51.793Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4b/f756cf8161d5365dcdef9e5f460ab226c068211030a175d2fc7f3f41ca64/scipy-1.16.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c", size = 33496912, upload-time = "2025-10-28T17:34:59.8Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/222b1e49a58668f23839ca1542a6322bb095ab8d6590d4f71723869a6c2c/scipy-1.16.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e", size = 35802371, upload-time = "2025-10-28T17:35:08.173Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8d/5964ef68bb31829bde27611f8c9deeac13764589fe74a75390242b64ca44/scipy-1.16.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135", size = 36190477, upload-time = "2025-10-28T17:35:16.7Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f2/b31d75cb9b5fa4dd39a0a931ee9b33e7f6f36f23be5ef560bf72e0f92f32/scipy-1.16.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6", size = 38796678, upload-time = "2025-10-28T17:35:26.354Z" }, + { url = "https://files.pythonhosted.org/packages/b4/1e/b3723d8ff64ab548c38d87055483714fefe6ee20e0189b62352b5e015bb1/scipy-1.16.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc", size = 38640178, upload-time = "2025-10-28T17:35:35.304Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f3/d854ff38789aca9b0cc23008d607ced9de4f7ab14fa1ca4329f86b3758ca/scipy-1.16.3-cp313-cp313t-win_arm64.whl", hash = "sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a", size = 25803246, upload-time = "2025-10-28T17:35:42.155Z" }, + { url = "https://files.pythonhosted.org/packages/99/f6/99b10fd70f2d864c1e29a28bbcaa0c6340f9d8518396542d9ea3b4aaae15/scipy-1.16.3-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6", size = 36606469, upload-time = "2025-10-28T17:36:08.741Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/043b54f2319f48ea940dd025779fa28ee360e6b95acb7cd188fad4391c6b/scipy-1.16.3-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657", size = 28872043, upload-time = "2025-10-28T17:36:16.599Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e1/24b7e50cc1c4ee6ffbcb1f27fe9f4c8b40e7911675f6d2d20955f41c6348/scipy-1.16.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26", size = 20862952, upload-time = "2025-10-28T17:36:22.966Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3a/3e8c01a4d742b730df368e063787c6808597ccb38636ed821d10b39ca51b/scipy-1.16.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc", size = 23508512, upload-time = "2025-10-28T17:36:29.731Z" }, + { url = "https://files.pythonhosted.org/packages/1f/60/c45a12b98ad591536bfe5330cb3cfe1850d7570259303563b1721564d458/scipy-1.16.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22", size = 33413639, upload-time = "2025-10-28T17:36:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/71/bc/35957d88645476307e4839712642896689df442f3e53b0fa016ecf8a3357/scipy-1.16.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc", size = 35704729, upload-time = "2025-10-28T17:36:46.547Z" }, + { url = "https://files.pythonhosted.org/packages/3b/15/89105e659041b1ca11c386e9995aefacd513a78493656e57789f9d9eab61/scipy-1.16.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0", size = 36086251, upload-time = "2025-10-28T17:36:55.161Z" }, + { url = "https://files.pythonhosted.org/packages/1a/87/c0ea673ac9c6cc50b3da2196d860273bc7389aa69b64efa8493bdd25b093/scipy-1.16.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800", size = 38716681, upload-time = "2025-10-28T17:37:04.1Z" }, + { url = "https://files.pythonhosted.org/packages/91/06/837893227b043fb9b0d13e4bd7586982d8136cb249ffb3492930dab905b8/scipy-1.16.3-cp314-cp314-win_amd64.whl", hash = "sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d", size = 39358423, upload-time = "2025-10-28T17:38:20.005Z" }, + { url = "https://files.pythonhosted.org/packages/95/03/28bce0355e4d34a7c034727505a02d19548549e190bedd13a721e35380b7/scipy-1.16.3-cp314-cp314-win_arm64.whl", hash = "sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f", size = 26135027, upload-time = "2025-10-28T17:38:24.966Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6f/69f1e2b682efe9de8fe9f91040f0cd32f13cfccba690512ba4c582b0bc29/scipy-1.16.3-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c", size = 37028379, upload-time = "2025-10-28T17:37:14.061Z" }, + { url = "https://files.pythonhosted.org/packages/7c/2d/e826f31624a5ebbab1cd93d30fd74349914753076ed0593e1d56a98c4fb4/scipy-1.16.3-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40", size = 29400052, upload-time = "2025-10-28T17:37:21.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/27/d24feb80155f41fd1f156bf144e7e049b4e2b9dd06261a242905e3bc7a03/scipy-1.16.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d", size = 21391183, upload-time = "2025-10-28T17:37:29.559Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d3/1b229e433074c5738a24277eca520a2319aac7465eea7310ea6ae0e98ae2/scipy-1.16.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa", size = 23930174, upload-time = "2025-10-28T17:37:36.306Z" }, + { url = "https://files.pythonhosted.org/packages/16/9d/d9e148b0ec680c0f042581a2be79a28a7ab66c0c4946697f9e7553ead337/scipy-1.16.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8", size = 33497852, upload-time = "2025-10-28T17:37:42.228Z" }, + { url = "https://files.pythonhosted.org/packages/2f/22/4e5f7561e4f98b7bea63cf3fd7934bff1e3182e9f1626b089a679914d5c8/scipy-1.16.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353", size = 35798595, upload-time = "2025-10-28T17:37:48.102Z" }, + { url = "https://files.pythonhosted.org/packages/83/42/6644d714c179429fc7196857866f219fef25238319b650bb32dde7bf7a48/scipy-1.16.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146", size = 36186269, upload-time = "2025-10-28T17:37:53.72Z" }, + { url = "https://files.pythonhosted.org/packages/ac/70/64b4d7ca92f9cf2e6fc6aaa2eecf80bb9b6b985043a9583f32f8177ea122/scipy-1.16.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d", size = 38802779, upload-time = "2025-10-28T17:37:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/61/82/8d0e39f62764cce5ffd5284131e109f07cf8955aef9ab8ed4e3aa5e30539/scipy-1.16.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7", size = 39471128, upload-time = "2025-10-28T17:38:05.259Z" }, + { url = "https://files.pythonhosted.org/packages/64/47/a494741db7280eae6dc033510c319e34d42dd41b7ac0c7ead39354d1a2b5/scipy-1.16.3-cp314-cp314t-win_arm64.whl", hash = "sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562", size = 26464127, upload-time = "2025-10-28T17:38:11.34Z" }, +] + +[[package]] +name = "send2trash" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/6e/421803dec0c0dfbf5a27e66491ebe6643a461e4f90422f00ea4c68ae24aa/send2trash-2.0.0.tar.gz", hash = "sha256:1761421da3f9930bfe51ed7c45343948573383ad4c27e3acebc91be324e7770d", size = 17206, upload-time = "2025-12-31T04:12:48.664Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5a/f2f2e5eda25579f754acd83399c522ee03d6acbe001dfe53c8a1ec928b44/send2trash-2.0.0-py3-none-any.whl", hash = "sha256:e70d5ce41dbb890882cc78bc25d137478330b39a391e756fadf82e34da4d85b8", size = 17642, upload-time = "2025-12-31T04:12:45.336Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.8.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/89/23/adf3796d740536d63a6fbda113d07e60c734b6ed5d3058d1e47fc0495e47/soupsieve-2.8.1.tar.gz", hash = "sha256:4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350", size = 117856, upload-time = "2025-12-18T13:50:34.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/f3/b67d6ea49ca9154453b6d70b34ea22f3996b9fa55da105a79d8732227adc/soupsieve-2.8.1-py3-none-any.whl", hash = "sha256:a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434", size = 36710, upload-time = "2025-12-18T13:50:33.267Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "tensorboard" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py" }, + { name = "grpcio" }, + { name = "markdown" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "protobuf" }, + { name = "setuptools" }, + { name = "tensorboard-data-server" }, + { name = "werkzeug" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/d9/a5db55f88f258ac669a92858b70a714bbbd5acd993820b41ec4a96a4d77f/tensorboard-2.20.0-py3-none-any.whl", hash = "sha256:9dc9f978cb84c0723acf9a345d96c184f0293d18f166bb8d59ee098e6cfaaba6", size = 5525680, upload-time = "2025-07-17T19:20:49.638Z" }, +] + +[[package]] +name = "tensorboard-data-server" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/13/e503968fefabd4c6b2650af21e110aa8466fe21432cd7c43a84577a89438/tensorboard_data_server-0.7.2-py3-none-any.whl", hash = "sha256:7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb", size = 2356, upload-time = "2023-10-23T21:23:32.16Z" }, + { url = "https://files.pythonhosted.org/packages/b7/85/dabeaf902892922777492e1d253bb7e1264cadce3cea932f7ff599e53fea/tensorboard_data_server-0.7.2-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:9fe5d24221b29625dbc7328b0436ca7fc1c23de4acf4d272f1180856e32f9f60", size = 4823598, upload-time = "2023-10-23T21:23:33.714Z" }, + { url = "https://files.pythonhosted.org/packages/73/c6/825dab04195756cf8ff2e12698f22513b3db2f64925bdd41671bfb33aaa5/tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530", size = 6590363, upload-time = "2023-10-23T21:23:35.583Z" }, +] + +[[package]] +name = "tensorflow" +version = "2.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "absl-py" }, + { name = "astunparse" }, + { name = "flatbuffers" }, + { name = "gast" }, + { name = "google-pasta" }, + { name = "grpcio" }, + { name = "h5py" }, + { name = "keras" }, + { name = "libclang" }, + { name = "ml-dtypes" }, + { name = "numpy" }, + { name = "opt-einsum" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "requests" }, + { name = "setuptools" }, + { name = "six" }, + { name = "tensorboard" }, + { name = "termcolor" }, + { name = "typing-extensions" }, + { name = "wrapt" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/31/47712f425c09cc8b8dba39c6c45aee939c4636a6feb8c81376a4eae653e0/tensorflow-2.20.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:52b122f0232fd7ab10f28d537ce08470d0b6dcac7fff9685432daac7f8a06c8f", size = 200540302, upload-time = "2025-08-13T16:52:22.146Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b4/f028a5de27d0fda10ba6145bc76e40c37ff6d2d1e95b601adb5ae17d635e/tensorflow-2.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bfbfb3dd0e22bffc45fe1e922390d27753e99261fab8a882e802cf98a0e078f", size = 259533109, upload-time = "2025-08-13T16:52:31.513Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d1/6aa15085d672056d5f08b5f28b1c7ce01c4e12149a23b0c98e3c79d04441/tensorflow-2.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25265b0bc527e0d54b1e9cc60c44a24f44a809fe27666b905f0466471f9c52ec", size = 620682547, upload-time = "2025-08-13T16:52:46.396Z" }, + { url = "https://files.pythonhosted.org/packages/f9/37/b97abb360b551fbf5870a0ee07e39ff9c655e6e3e2f839bc88be81361842/tensorflow-2.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:1590cbf87b6bcbd34d8e9ad70d0c696135e0aa71be31803b27358cf7ed63f8fc", size = 331887041, upload-time = "2025-08-13T16:53:05.532Z" }, + { url = "https://files.pythonhosted.org/packages/04/82/af283f402f8d1e9315644a331a5f0f326264c5d1de08262f3de5a5ade422/tensorflow-2.20.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:197f0b613b38c0da5c6a12a8295ad4a05c78b853835dae8e0f9dfae3ce9ce8a5", size = 200671458, upload-time = "2025-08-13T16:53:16.568Z" }, + { url = "https://files.pythonhosted.org/packages/ea/4c/c1aa90c5cc92e9f7f9c78421e121ef25bae7d378f8d1d4cbad46c6308836/tensorflow-2.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47c88e05a07f1ead4977b4894b3ecd4d8075c40191065afc4fd9355c9db3d926", size = 259663776, upload-time = "2025-08-13T16:53:24.507Z" }, + { url = "https://files.pythonhosted.org/packages/43/fb/8be8547c128613d82a2b006004026d86ed0bd672e913029a98153af4ffab/tensorflow-2.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa3729b0126f75a99882b89fb7d536515721eda8014a63e259e780ba0a37372", size = 620815537, upload-time = "2025-08-13T16:53:42.577Z" }, + { url = "https://files.pythonhosted.org/packages/9b/9e/02e201033f8d6bd5f79240b7262337de44c51a6cfd85c23a86c103c7684d/tensorflow-2.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:c25edad45e8cb9e76366f7a8c835279f9169028d610f3b52ce92d332a1b05438", size = 332012220, upload-time = "2025-08-13T16:53:57.303Z" }, +] + +[[package]] +name = "termcolor" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/79/cf31d7a93a8fdc6aa0fbb665be84426a8c5a557d9240b6239e9e11e35fc5/termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5", size = 14434, upload-time = "2025-12-29T12:55:21.882Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/d1/8bb87d21e9aeb323cc03034f5eaf2c8f69841e40e4853c2627edf8111ed3/termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5", size = 7734, upload-time = "2025-12-29T12:55:20.718Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + +[[package]] +name = "tifffile" +version = "2025.12.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/a6/85e8ecfd7cb4167f8bd17136b2d42cba296fbc08a247bba70d5747e2046a/tifffile-2025.12.20.tar.gz", hash = "sha256:cb8a4fee327d15b3e3eeac80bbdd8a53b323c80473330bcfb99418ee4c1c827f", size = 373364, upload-time = "2025-12-21T06:23:54.241Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/fe/e59859aa1134fac065d36864752daf13215c98b379cb5d93f954dc0ec830/tifffile-2025.12.20-py3-none-any.whl", hash = "sha256:bc0345a20675149353cfcb3f1c48d0a3654231ee26bd46beebaab4d2168feeb6", size = 232031, upload-time = "2025-12-21T06:23:53.003Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/1d/0a336abf618272d53f62ebe274f712e213f5a03c0b2339575430b8362ef2/tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7", size = 513632, upload-time = "2025-12-15T19:21:03.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/a9/e94a9d5224107d7ce3cc1fab8d5dc97f5ea351ccc6322ee4fb661da94e35/tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9", size = 443909, upload-time = "2025-12-15T19:20:48.382Z" }, + { url = "https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843", size = 442163, upload-time = "2025-12-15T19:20:49.791Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b5/206f82d51e1bfa940ba366a8d2f83904b15942c45a78dd978b599870ab44/tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17", size = 445746, upload-time = "2025-12-15T19:20:51.491Z" }, + { url = "https://files.pythonhosted.org/packages/8e/9d/1a3338e0bd30ada6ad4356c13a0a6c35fbc859063fa7eddb309183364ac1/tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335", size = 445083, upload-time = "2025-12-15T19:20:52.778Z" }, + { url = "https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f", size = 445315, upload-time = "2025-12-15T19:20:53.996Z" }, + { url = "https://files.pythonhosted.org/packages/27/07/2273972f69ca63dbc139694a3fc4684edec3ea3f9efabf77ed32483b875c/tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84", size = 446003, upload-time = "2025-12-15T19:20:56.101Z" }, + { url = "https://files.pythonhosted.org/packages/d1/83/41c52e47502bf7260044413b6770d1a48dda2f0246f95ee1384a3cd9c44a/tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f", size = 445412, upload-time = "2025-12-15T19:20:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/10/c7/bc96917f06cbee182d44735d4ecde9c432e25b84f4c2086143013e7b9e52/tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8", size = 445392, upload-time = "2025-12-15T19:20:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1a/d7592328d037d36f2d2462f4bc1fbb383eec9278bc786c1b111cbbd44cfa/tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1", size = 446481, upload-time = "2025-12-15T19:21:00.008Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6d/c69be695a0a64fd37a97db12355a035a6d90f79067a3cf936ec2b1dc38cd/tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc", size = 446886, upload-time = "2025-12-15T19:21:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/8dc3fd90902f70084bd2cd059d576ddb4f8bb44c2c7c0e33a11422acb17e/tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1", size = 445910, upload-time = "2025-12-15T19:21:02.571Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typer-slim" +version = "0.21.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/d4/064570dec6358aa9049d4708e4a10407d74c99258f8b2136bb8702303f1a/typer_slim-0.21.1.tar.gz", hash = "sha256:73495dd08c2d0940d611c5a8c04e91c2a0a98600cbd4ee19192255a233b6dbfd", size = 110478, upload-time = "2026-01-06T11:21:11.176Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/0a/4aca634faf693e33004796b6cee0ae2e1dba375a800c16ab8d3eff4bb800/typer_slim-0.21.1-py3-none-any.whl", hash = "sha256:6e6c31047f171ac93cc5a973c9e617dbc5ab2bddc4d0a3135dc161b4e2020e0d", size = 47444, upload-time = "2026-01-06T11:21:12.441Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] + +[[package]] +name = "vizarr" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anywidget" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/12/ba/c923eb68884bb1f24098b8527dc3be41a857c92ce2e42c4077a8b746ad77/vizarr-0.1.1.tar.gz", hash = "sha256:aa5812be5fa8b5f0b07ea9a1ecd5f2faca979c87537a9fe717e3cf6d061a2f43", size = 2591, upload-time = "2025-03-04T14:31:50.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/99/bfc2f044d5a5692e79b5b791b4f7df759badde472438959035233861b2c3/vizarr-0.1.1-py2.py3-none-any.whl", hash = "sha256:b1e5f6a7e0e7c14b2574b2f5c989132062c5bc5eedef276c2721850912496d16", size = 3314, upload-time = "2025-03-04T14:26:03.14Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/3602e8ac0ff2f7ffe1d78777f766a062ac7727373ac819791c853bc5a8b4/vizarr-0.1.1-py3-none-any.whl", hash = "sha256:a3d2ed7d681eeb93575c535359bef96e74a29d00b59ae2aba89d3960d955203d", size = 3325, upload-time = "2025-03-04T14:26:04.486Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, +] + +[[package]] +name = "webcolors" +version = "25.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/7a/eb316761ec35664ea5174709a68bbd3389de60d4a1ebab8808bfc264ed67/webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf", size = 53491, upload-time = "2025-10-31T07:51:03.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/cc/e097523dd85c9cf5d354f78310927f1656c422bd7b2613b2db3e3f9a0f2c/webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d", size = 14905, upload-time = "2025-10-31T07:51:01.778Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/41/aa4bf9664e4cda14c3b39865b12251e8e7d239f4cd0e3cc1b6c2ccde25c1/websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98", size = 70576, upload-time = "2025-10-07T21:16:36.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/ea/b0f8eeb287f8df9066e56e831c7824ac6bab645dd6c7a8f4b2d767944f9b/werkzeug-3.1.4.tar.gz", hash = "sha256:cd3cd98b1b92dc3b7b3995038826c68097dcb16f9baa63abe35f20eafeb9fe5e", size = 864687, upload-time = "2025-11-29T02:15:22.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/f9/9e082990c2585c744734f85bec79b5dae5df9c974ffee58fe421652c8e91/werkzeug-3.1.4-py3-none-any.whl", hash = "sha256:2ad50fb9ed09cc3af22c54698351027ace879a0b60a3b5edf5730b2f7d876905", size = 224960, upload-time = "2025-11-29T02:15:21.13Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/f4/c67440c7fb409a71b7404b7aefcd7569a9c0d6bd071299bf4198ae7a5d95/widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9", size = 1097402, upload-time = "2025-11-01T21:15:55.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/0e/fa3b193432cfc60c93b42f3be03365f5f909d2b3ea410295cf36df739e31/widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366", size = 2196503, upload-time = "2025-11-01T21:15:53.565Z" }, +] + +[[package]] +name = "wrapt" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/49/2a/6de8a50cb435b7f42c46126cf1a54b2aab81784e74c8595c8e025e8f36d3/wrapt-2.0.1.tar.gz", hash = "sha256:9c9c635e78497cacb81e84f8b11b23e0aacac7a136e73b8e5b2109a1d9fc468f", size = 82040, upload-time = "2025-11-07T00:45:33.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/73/8cb252858dc8254baa0ce58ce382858e3a1cf616acebc497cb13374c95c6/wrapt-2.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1fdbb34da15450f2b1d735a0e969c24bdb8d8924892380126e2a293d9902078c", size = 78129, upload-time = "2025-11-07T00:43:48.852Z" }, + { url = "https://files.pythonhosted.org/packages/19/42/44a0db2108526ee6e17a5ab72478061158f34b08b793df251d9fbb9a7eb4/wrapt-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3d32794fe940b7000f0519904e247f902f0149edbe6316c710a8562fb6738841", size = 61205, upload-time = "2025-11-07T00:43:50.402Z" }, + { url = "https://files.pythonhosted.org/packages/4d/8a/5b4b1e44b791c22046e90d9b175f9a7581a8cc7a0debbb930f81e6ae8e25/wrapt-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:386fb54d9cd903ee0012c09291336469eb7b244f7183d40dc3e86a16a4bace62", size = 61692, upload-time = "2025-11-07T00:43:51.678Z" }, + { url = "https://files.pythonhosted.org/packages/11/53/3e794346c39f462bcf1f58ac0487ff9bdad02f9b6d5ee2dc84c72e0243b2/wrapt-2.0.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7b219cb2182f230676308cdcacd428fa837987b89e4b7c5c9025088b8a6c9faf", size = 121492, upload-time = "2025-11-07T00:43:55.017Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7e/10b7b0e8841e684c8ca76b462a9091c45d62e8f2de9c4b1390b690eadf16/wrapt-2.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:641e94e789b5f6b4822bb8d8ebbdfc10f4e4eae7756d648b717d980f657a9eb9", size = 123064, upload-time = "2025-11-07T00:43:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/0e/d1/3c1e4321fc2f5ee7fd866b2d822aa89b84495f28676fd976c47327c5b6aa/wrapt-2.0.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe21b118b9f58859b5ebaa4b130dee18669df4bd111daad082b7beb8799ad16b", size = 117403, upload-time = "2025-11-07T00:43:53.258Z" }, + { url = "https://files.pythonhosted.org/packages/a4/b0/d2f0a413cf201c8c2466de08414a15420a25aa83f53e647b7255cc2fab5d/wrapt-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:17fb85fa4abc26a5184d93b3efd2dcc14deb4b09edcdb3535a536ad34f0b4dba", size = 121500, upload-time = "2025-11-07T00:43:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/bd/45/bddb11d28ca39970a41ed48a26d210505120f925918592283369219f83cc/wrapt-2.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:b89ef9223d665ab255ae42cc282d27d69704d94be0deffc8b9d919179a609684", size = 116299, upload-time = "2025-11-07T00:43:58.877Z" }, + { url = "https://files.pythonhosted.org/packages/81/af/34ba6dd570ef7a534e7eec0c25e2615c355602c52aba59413411c025a0cb/wrapt-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a453257f19c31b31ba593c30d997d6e5be39e3b5ad9148c2af5a7314061c63eb", size = 120622, upload-time = "2025-11-07T00:43:59.962Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3e/693a13b4146646fb03254636f8bafd20c621955d27d65b15de07ab886187/wrapt-2.0.1-cp312-cp312-win32.whl", hash = "sha256:3e271346f01e9c8b1130a6a3b0e11908049fe5be2d365a5f402778049147e7e9", size = 58246, upload-time = "2025-11-07T00:44:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/a7/36/715ec5076f925a6be95f37917b66ebbeaa1372d1862c2ccd7a751574b068/wrapt-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:2da620b31a90cdefa9cd0c2b661882329e2e19d1d7b9b920189956b76c564d75", size = 60492, upload-time = "2025-11-07T00:44:01.027Z" }, + { url = "https://files.pythonhosted.org/packages/ef/3e/62451cd7d80f65cc125f2b426b25fbb6c514bf6f7011a0c3904fc8c8df90/wrapt-2.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:aea9c7224c302bc8bfc892b908537f56c430802560e827b75ecbde81b604598b", size = 58987, upload-time = "2025-11-07T00:44:02.095Z" }, + { url = "https://files.pythonhosted.org/packages/ad/fe/41af4c46b5e498c90fc87981ab2972fbd9f0bccda597adb99d3d3441b94b/wrapt-2.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:47b0f8bafe90f7736151f61482c583c86b0693d80f075a58701dd1549b0010a9", size = 78132, upload-time = "2025-11-07T00:44:04.628Z" }, + { url = "https://files.pythonhosted.org/packages/1c/92/d68895a984a5ebbbfb175512b0c0aad872354a4a2484fbd5552e9f275316/wrapt-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cbeb0971e13b4bd81d34169ed57a6dda017328d1a22b62fda45e1d21dd06148f", size = 61211, upload-time = "2025-11-07T00:44:05.626Z" }, + { url = "https://files.pythonhosted.org/packages/e8/26/ba83dc5ae7cf5aa2b02364a3d9cf74374b86169906a1f3ade9a2d03cf21c/wrapt-2.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb7cffe572ad0a141a7886a1d2efa5bef0bf7fe021deeea76b3ab334d2c38218", size = 61689, upload-time = "2025-11-07T00:44:06.719Z" }, + { url = "https://files.pythonhosted.org/packages/cf/67/d7a7c276d874e5d26738c22444d466a3a64ed541f6ef35f740dbd865bab4/wrapt-2.0.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c8d60527d1ecfc131426b10d93ab5d53e08a09c5fa0175f6b21b3252080c70a9", size = 121502, upload-time = "2025-11-07T00:44:09.557Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6b/806dbf6dd9579556aab22fc92908a876636e250f063f71548a8660382184/wrapt-2.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c654eafb01afac55246053d67a4b9a984a3567c3808bb7df2f8de1c1caba2e1c", size = 123110, upload-time = "2025-11-07T00:44:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/e5/08/cdbb965fbe4c02c5233d185d070cabed2ecc1f1e47662854f95d77613f57/wrapt-2.0.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:98d873ed6c8b4ee2418f7afce666751854d6d03e3c0ec2a399bb039cd2ae89db", size = 117434, upload-time = "2025-11-07T00:44:08.138Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d1/6aae2ce39db4cb5216302fa2e9577ad74424dfbe315bd6669725569e048c/wrapt-2.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9e850f5b7fc67af856ff054c71690d54fa940c3ef74209ad9f935b4f66a0233", size = 121533, upload-time = "2025-11-07T00:44:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/565abf57559fbe0a9155c29879ff43ce8bd28d2ca61033a3a3dd67b70794/wrapt-2.0.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e505629359cb5f751e16e30cf3f91a1d3ddb4552480c205947da415d597f7ac2", size = 116324, upload-time = "2025-11-07T00:44:13.28Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e0/53ff5e76587822ee33e560ad55876d858e384158272cd9947abdd4ad42ca/wrapt-2.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2879af909312d0baf35f08edeea918ee3af7ab57c37fe47cb6a373c9f2749c7b", size = 120627, upload-time = "2025-11-07T00:44:14.431Z" }, + { url = "https://files.pythonhosted.org/packages/7c/7b/38df30fd629fbd7612c407643c63e80e1c60bcc982e30ceeae163a9800e7/wrapt-2.0.1-cp313-cp313-win32.whl", hash = "sha256:d67956c676be5a24102c7407a71f4126d30de2a569a1c7871c9f3cabc94225d7", size = 58252, upload-time = "2025-11-07T00:44:17.814Z" }, + { url = "https://files.pythonhosted.org/packages/85/64/d3954e836ea67c4d3ad5285e5c8fd9d362fd0a189a2db622df457b0f4f6a/wrapt-2.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:9ca66b38dd642bf90c59b6738af8070747b610115a39af2498535f62b5cdc1c3", size = 60500, upload-time = "2025-11-07T00:44:15.561Z" }, + { url = "https://files.pythonhosted.org/packages/89/4e/3c8b99ac93527cfab7f116089db120fef16aac96e5f6cdb724ddf286086d/wrapt-2.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:5a4939eae35db6b6cec8e7aa0e833dcca0acad8231672c26c2a9ab7a0f8ac9c8", size = 58993, upload-time = "2025-11-07T00:44:16.65Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f4/eff2b7d711cae20d220780b9300faa05558660afb93f2ff5db61fe725b9a/wrapt-2.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a52f93d95c8d38fed0669da2ebdb0b0376e895d84596a976c15a9eb45e3eccb3", size = 82028, upload-time = "2025-11-07T00:44:18.944Z" }, + { url = "https://files.pythonhosted.org/packages/0c/67/cb945563f66fd0f61a999339460d950f4735c69f18f0a87ca586319b1778/wrapt-2.0.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4e54bbf554ee29fcceee24fa41c4d091398b911da6e7f5d7bffda963c9aed2e1", size = 62949, upload-time = "2025-11-07T00:44:20.074Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ca/f63e177f0bbe1e5cf5e8d9b74a286537cd709724384ff20860f8f6065904/wrapt-2.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:908f8c6c71557f4deaa280f55d0728c3bca0960e8c3dd5ceeeafb3c19942719d", size = 63681, upload-time = "2025-11-07T00:44:21.345Z" }, + { url = "https://files.pythonhosted.org/packages/39/a1/1b88fcd21fd835dca48b556daef750952e917a2794fa20c025489e2e1f0f/wrapt-2.0.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e2f84e9af2060e3904a32cea9bb6db23ce3f91cfd90c6b426757cf7cc01c45c7", size = 152696, upload-time = "2025-11-07T00:44:24.318Z" }, + { url = "https://files.pythonhosted.org/packages/62/1c/d9185500c1960d9f5f77b9c0b890b7fc62282b53af7ad1b6bd779157f714/wrapt-2.0.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3612dc06b436968dfb9142c62e5dfa9eb5924f91120b3c8ff501ad878f90eb3", size = 158859, upload-time = "2025-11-07T00:44:25.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/60/5d796ed0f481ec003220c7878a1d6894652efe089853a208ea0838c13086/wrapt-2.0.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6d2d947d266d99a1477cd005b23cbd09465276e302515e122df56bb9511aca1b", size = 146068, upload-time = "2025-11-07T00:44:22.81Z" }, + { url = "https://files.pythonhosted.org/packages/04/f8/75282dd72f102ddbfba137e1e15ecba47b40acff32c08ae97edbf53f469e/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:7d539241e87b650cbc4c3ac9f32c8d1ac8a54e510f6dca3f6ab60dcfd48c9b10", size = 155724, upload-time = "2025-11-07T00:44:26.634Z" }, + { url = "https://files.pythonhosted.org/packages/5a/27/fe39c51d1b344caebb4a6a9372157bdb8d25b194b3561b52c8ffc40ac7d1/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:4811e15d88ee62dbf5c77f2c3ff3932b1e3ac92323ba3912f51fc4016ce81ecf", size = 144413, upload-time = "2025-11-07T00:44:27.939Z" }, + { url = "https://files.pythonhosted.org/packages/83/2b/9f6b643fe39d4505c7bf926d7c2595b7cb4b607c8c6b500e56c6b36ac238/wrapt-2.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c1c91405fcf1d501fa5d55df21e58ea49e6b879ae829f1039faaf7e5e509b41e", size = 150325, upload-time = "2025-11-07T00:44:29.29Z" }, + { url = "https://files.pythonhosted.org/packages/bb/b6/20ffcf2558596a7f58a2e69c89597128781f0b88e124bf5a4cadc05b8139/wrapt-2.0.1-cp313-cp313t-win32.whl", hash = "sha256:e76e3f91f864e89db8b8d2a8311d57df93f01ad6bb1e9b9976d1f2e83e18315c", size = 59943, upload-time = "2025-11-07T00:44:33.211Z" }, + { url = "https://files.pythonhosted.org/packages/87/6a/0e56111cbb3320151eed5d3821ee1373be13e05b376ea0870711f18810c3/wrapt-2.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:83ce30937f0ba0d28818807b303a412440c4b63e39d3d8fc036a94764b728c92", size = 63240, upload-time = "2025-11-07T00:44:30.935Z" }, + { url = "https://files.pythonhosted.org/packages/1d/54/5ab4c53ea1f7f7e5c3e7c1095db92932cc32fd62359d285486d00c2884c3/wrapt-2.0.1-cp313-cp313t-win_arm64.whl", hash = "sha256:4b55cacc57e1dc2d0991dbe74c6419ffd415fb66474a02335cb10efd1aa3f84f", size = 60416, upload-time = "2025-11-07T00:44:32.002Z" }, + { url = "https://files.pythonhosted.org/packages/73/81/d08d83c102709258e7730d3cd25befd114c60e43ef3891d7e6877971c514/wrapt-2.0.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:5e53b428f65ece6d9dad23cb87e64506392b720a0b45076c05354d27a13351a1", size = 78290, upload-time = "2025-11-07T00:44:34.691Z" }, + { url = "https://files.pythonhosted.org/packages/f6/14/393afba2abb65677f313aa680ff0981e829626fed39b6a7e3ec807487790/wrapt-2.0.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ad3ee9d0f254851c71780966eb417ef8e72117155cff04821ab9b60549694a55", size = 61255, upload-time = "2025-11-07T00:44:35.762Z" }, + { url = "https://files.pythonhosted.org/packages/c4/10/a4a1f2fba205a9462e36e708ba37e5ac95f4987a0f1f8fd23f0bf1fc3b0f/wrapt-2.0.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d7b822c61ed04ee6ad64bc90d13368ad6eb094db54883b5dde2182f67a7f22c0", size = 61797, upload-time = "2025-11-07T00:44:37.22Z" }, + { url = "https://files.pythonhosted.org/packages/12/db/99ba5c37cf1c4fad35349174f1e38bd8d992340afc1ff27f526729b98986/wrapt-2.0.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7164a55f5e83a9a0b031d3ffab4d4e36bbec42e7025db560f225489fa929e509", size = 120470, upload-time = "2025-11-07T00:44:39.425Z" }, + { url = "https://files.pythonhosted.org/packages/30/3f/a1c8d2411eb826d695fc3395a431757331582907a0ec59afce8fe8712473/wrapt-2.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e60690ba71a57424c8d9ff28f8d006b7ad7772c22a4af432188572cd7fa004a1", size = 122851, upload-time = "2025-11-07T00:44:40.582Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8d/72c74a63f201768d6a04a8845c7976f86be6f5ff4d74996c272cefc8dafc/wrapt-2.0.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3cd1a4bd9a7a619922a8557e1318232e7269b5fb69d4ba97b04d20450a6bf970", size = 117433, upload-time = "2025-11-07T00:44:38.313Z" }, + { url = "https://files.pythonhosted.org/packages/c7/5a/df37cf4042cb13b08256f8e27023e2f9b3d471d553376616591bb99bcb31/wrapt-2.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b4c2e3d777e38e913b8ce3a6257af72fb608f86a1df471cb1d4339755d0a807c", size = 121280, upload-time = "2025-11-07T00:44:41.69Z" }, + { url = "https://files.pythonhosted.org/packages/54/34/40d6bc89349f9931e1186ceb3e5fbd61d307fef814f09fbbac98ada6a0c8/wrapt-2.0.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3d366aa598d69416b5afedf1faa539fac40c1d80a42f6b236c88c73a3c8f2d41", size = 116343, upload-time = "2025-11-07T00:44:43.013Z" }, + { url = "https://files.pythonhosted.org/packages/70/66/81c3461adece09d20781dee17c2366fdf0cb8754738b521d221ca056d596/wrapt-2.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c235095d6d090aa903f1db61f892fffb779c1eaeb2a50e566b52001f7a0f66ed", size = 119650, upload-time = "2025-11-07T00:44:44.523Z" }, + { url = "https://files.pythonhosted.org/packages/46/3a/d0146db8be8761a9e388cc9cc1c312b36d583950ec91696f19bbbb44af5a/wrapt-2.0.1-cp314-cp314-win32.whl", hash = "sha256:bfb5539005259f8127ea9c885bdc231978c06b7a980e63a8a61c8c4c979719d0", size = 58701, upload-time = "2025-11-07T00:44:48.277Z" }, + { url = "https://files.pythonhosted.org/packages/1a/38/5359da9af7d64554be63e9046164bd4d8ff289a2dd365677d25ba3342c08/wrapt-2.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:4ae879acc449caa9ed43fc36ba08392b9412ee67941748d31d94e3cedb36628c", size = 60947, upload-time = "2025-11-07T00:44:46.086Z" }, + { url = "https://files.pythonhosted.org/packages/aa/3f/96db0619276a833842bf36343685fa04f987dd6e3037f314531a1e00492b/wrapt-2.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:8639b843c9efd84675f1e100ed9e99538ebea7297b62c4b45a7042edb84db03e", size = 59359, upload-time = "2025-11-07T00:44:47.164Z" }, + { url = "https://files.pythonhosted.org/packages/71/49/5f5d1e867bf2064bf3933bc6cf36ade23505f3902390e175e392173d36a2/wrapt-2.0.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:9219a1d946a9b32bb23ccae66bdb61e35c62773ce7ca6509ceea70f344656b7b", size = 82031, upload-time = "2025-11-07T00:44:49.4Z" }, + { url = "https://files.pythonhosted.org/packages/2b/89/0009a218d88db66ceb83921e5685e820e2c61b59bbbb1324ba65342668bc/wrapt-2.0.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fa4184e74197af3adad3c889a1af95b53bb0466bced92ea99a0c014e48323eec", size = 62952, upload-time = "2025-11-07T00:44:50.74Z" }, + { url = "https://files.pythonhosted.org/packages/ae/18/9b968e920dd05d6e44bcc918a046d02afea0fb31b2f1c80ee4020f377cbe/wrapt-2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c5ef2f2b8a53b7caee2f797ef166a390fef73979b15778a4a153e4b5fedce8fa", size = 63688, upload-time = "2025-11-07T00:44:52.248Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7d/78bdcb75826725885d9ea26c49a03071b10c4c92da93edda612910f150e4/wrapt-2.0.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e042d653a4745be832d5aa190ff80ee4f02c34b21f4b785745eceacd0907b815", size = 152706, upload-time = "2025-11-07T00:44:54.613Z" }, + { url = "https://files.pythonhosted.org/packages/dd/77/cac1d46f47d32084a703df0d2d29d47e7eb2a7d19fa5cbca0e529ef57659/wrapt-2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2afa23318136709c4b23d87d543b425c399887b4057936cd20386d5b1422b6fa", size = 158866, upload-time = "2025-11-07T00:44:55.79Z" }, + { url = "https://files.pythonhosted.org/packages/8a/11/b521406daa2421508903bf8d5e8b929216ec2af04839db31c0a2c525eee0/wrapt-2.0.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6c72328f668cf4c503ffcf9434c2b71fdd624345ced7941bc6693e61bbe36bef", size = 146148, upload-time = "2025-11-07T00:44:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c0/340b272bed297baa7c9ce0c98ef7017d9c035a17a6a71dce3184b8382da2/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3793ac154afb0e5b45d1233cb94d354ef7a983708cc3bb12563853b1d8d53747", size = 155737, upload-time = "2025-11-07T00:44:56.971Z" }, + { url = "https://files.pythonhosted.org/packages/f3/93/bfcb1fb2bdf186e9c2883a4d1ab45ab099c79cbf8f4e70ea453811fa3ea7/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fec0d993ecba3991645b4857837277469c8cc4c554a7e24d064d1ca291cfb81f", size = 144451, upload-time = "2025-11-07T00:44:58.515Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6b/dca504fb18d971139d232652656180e3bd57120e1193d9a5899c3c0b7cdd/wrapt-2.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:949520bccc1fa227274da7d03bf238be15389cd94e32e4297b92337df9b7a349", size = 150353, upload-time = "2025-11-07T00:44:59.753Z" }, + { url = "https://files.pythonhosted.org/packages/1d/f6/a1de4bd3653afdf91d250ca5c721ee51195df2b61a4603d4b373aa804d1d/wrapt-2.0.1-cp314-cp314t-win32.whl", hash = "sha256:be9e84e91d6497ba62594158d3d31ec0486c60055c49179edc51ee43d095f79c", size = 60609, upload-time = "2025-11-07T00:45:03.315Z" }, + { url = "https://files.pythonhosted.org/packages/01/3a/07cd60a9d26fe73efead61c7830af975dfdba8537632d410462672e4432b/wrapt-2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:61c4956171c7434634401db448371277d07032a81cc21c599c22953374781395", size = 64038, upload-time = "2025-11-07T00:45:00.948Z" }, + { url = "https://files.pythonhosted.org/packages/41/99/8a06b8e17dddbf321325ae4eb12465804120f699cd1b8a355718300c62da/wrapt-2.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:35cdbd478607036fee40273be8ed54a451f5f23121bd9d4be515158f9498f7ad", size = 60634, upload-time = "2025-11-07T00:45:02.087Z" }, + { url = "https://files.pythonhosted.org/packages/15/d1/b51471c11592ff9c012bd3e2f7334a6ff2f42a7aed2caffcf0bdddc9cb89/wrapt-2.0.1-py3-none-any.whl", hash = "sha256:4d2ce1bf1a48c5277d7969259232b57645aae5686dba1eaeade39442277afbca", size = 44046, upload-time = "2025-11-07T00:45:32.116Z" }, +] + +[[package]] +name = "xxhash" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/84/30869e01909fb37a6cc7e18688ee8bf1e42d57e7e0777636bd47524c43c7/xxhash-3.6.0.tar.gz", hash = "sha256:f0162a78b13a0d7617b2845b90c763339d1f1d82bb04a4b07f4ab535cc5e05d6", size = 85160, upload-time = "2025-10-02T14:37:08.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/07/d9412f3d7d462347e4511181dea65e47e0d0e16e26fbee2ea86a2aefb657/xxhash-3.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:01362c4331775398e7bb34e3ab403bc9ee9f7c497bc7dee6272114055277dd3c", size = 32744, upload-time = "2025-10-02T14:34:34.622Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/0429ee11d035fc33abe32dca1b2b69e8c18d236547b9a9b72c1929189b9a/xxhash-3.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7b2df81a23f8cb99656378e72501b2cb41b1827c0f5a86f87d6b06b69f9f204", size = 30816, upload-time = "2025-10-02T14:34:36.043Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f2/57eb99aa0f7d98624c0932c5b9a170e1806406cdbcdb510546634a1359e0/xxhash-3.6.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:dc94790144e66b14f67b10ac8ed75b39ca47536bf8800eb7c24b50271ea0c490", size = 194035, upload-time = "2025-10-02T14:34:37.354Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ed/6224ba353690d73af7a3f1c7cdb1fc1b002e38f783cb991ae338e1eb3d79/xxhash-3.6.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93f107c673bccf0d592cdba077dedaf52fe7f42dcd7676eba1f6d6f0c3efffd2", size = 212914, upload-time = "2025-10-02T14:34:38.6Z" }, + { url = "https://files.pythonhosted.org/packages/38/86/fb6b6130d8dd6b8942cc17ab4d90e223653a89aa32ad2776f8af7064ed13/xxhash-3.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aa5ee3444c25b69813663c9f8067dcfaa2e126dc55e8dddf40f4d1c25d7effa", size = 212163, upload-time = "2025-10-02T14:34:39.872Z" }, + { url = "https://files.pythonhosted.org/packages/ee/dc/e84875682b0593e884ad73b2d40767b5790d417bde603cceb6878901d647/xxhash-3.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7f99123f0e1194fa59cc69ad46dbae2e07becec5df50a0509a808f90a0f03f0", size = 445411, upload-time = "2025-10-02T14:34:41.569Z" }, + { url = "https://files.pythonhosted.org/packages/11/4f/426f91b96701ec2f37bb2b8cec664eff4f658a11f3fa9d94f0a887ea6d2b/xxhash-3.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:49e03e6fe2cac4a1bc64952dd250cf0dbc5ef4ebb7b8d96bce82e2de163c82a2", size = 193883, upload-time = "2025-10-02T14:34:43.249Z" }, + { url = "https://files.pythonhosted.org/packages/53/5a/ddbb83eee8e28b778eacfc5a85c969673e4023cdeedcfcef61f36731610b/xxhash-3.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bd17fede52a17a4f9a7bc4472a5867cb0b160deeb431795c0e4abe158bc784e9", size = 210392, upload-time = "2025-10-02T14:34:45.042Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c2/ff69efd07c8c074ccdf0a4f36fcdd3d27363665bcdf4ba399abebe643465/xxhash-3.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6fb5f5476bef678f69db04f2bd1efbed3030d2aba305b0fc1773645f187d6a4e", size = 197898, upload-time = "2025-10-02T14:34:46.302Z" }, + { url = "https://files.pythonhosted.org/packages/58/ca/faa05ac19b3b622c7c9317ac3e23954187516298a091eb02c976d0d3dd45/xxhash-3.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:843b52f6d88071f87eba1631b684fcb4b2068cd2180a0224122fe4ef011a9374", size = 210655, upload-time = "2025-10-02T14:34:47.571Z" }, + { url = "https://files.pythonhosted.org/packages/d4/7a/06aa7482345480cc0cb597f5c875b11a82c3953f534394f620b0be2f700c/xxhash-3.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7d14a6cfaf03b1b6f5f9790f76880601ccc7896aff7ab9cd8978a939c1eb7e0d", size = 414001, upload-time = "2025-10-02T14:34:49.273Z" }, + { url = "https://files.pythonhosted.org/packages/23/07/63ffb386cd47029aa2916b3d2f454e6cc5b9f5c5ada3790377d5430084e7/xxhash-3.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:418daf3db71e1413cfe211c2f9a528456936645c17f46b5204705581a45390ae", size = 191431, upload-time = "2025-10-02T14:34:50.798Z" }, + { url = "https://files.pythonhosted.org/packages/0f/93/14fde614cadb4ddf5e7cebf8918b7e8fac5ae7861c1875964f17e678205c/xxhash-3.6.0-cp312-cp312-win32.whl", hash = "sha256:50fc255f39428a27299c20e280d6193d8b63b8ef8028995323bf834a026b4fbb", size = 30617, upload-time = "2025-10-02T14:34:51.954Z" }, + { url = "https://files.pythonhosted.org/packages/13/5d/0d125536cbe7565a83d06e43783389ecae0c0f2ed037b48ede185de477c0/xxhash-3.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0f2ab8c715630565ab8991b536ecded9416d615538be8ecddce43ccf26cbc7c", size = 31534, upload-time = "2025-10-02T14:34:53.276Z" }, + { url = "https://files.pythonhosted.org/packages/54/85/6ec269b0952ec7e36ba019125982cf11d91256a778c7c3f98a4c5043d283/xxhash-3.6.0-cp312-cp312-win_arm64.whl", hash = "sha256:eae5c13f3bc455a3bbb68bdc513912dc7356de7e2280363ea235f71f54064829", size = 27876, upload-time = "2025-10-02T14:34:54.371Z" }, + { url = "https://files.pythonhosted.org/packages/33/76/35d05267ac82f53ae9b0e554da7c5e281ee61f3cad44c743f0fcd354f211/xxhash-3.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:599e64ba7f67472481ceb6ee80fa3bd828fd61ba59fb11475572cc5ee52b89ec", size = 32738, upload-time = "2025-10-02T14:34:55.839Z" }, + { url = "https://files.pythonhosted.org/packages/31/a8/3fbce1cd96534a95e35d5120637bf29b0d7f5d8fa2f6374e31b4156dd419/xxhash-3.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7d8b8aaa30fca4f16f0c84a5c8d7ddee0e25250ec2796c973775373257dde8f1", size = 30821, upload-time = "2025-10-02T14:34:57.219Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ea/d387530ca7ecfa183cb358027f1833297c6ac6098223fd14f9782cd0015c/xxhash-3.6.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d597acf8506d6e7101a4a44a5e428977a51c0fadbbfd3c39650cca9253f6e5a6", size = 194127, upload-time = "2025-10-02T14:34:59.21Z" }, + { url = "https://files.pythonhosted.org/packages/ba/0c/71435dcb99874b09a43b8d7c54071e600a7481e42b3e3ce1eb5226a5711a/xxhash-3.6.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:858dc935963a33bc33490128edc1c12b0c14d9c7ebaa4e387a7869ecc4f3e263", size = 212975, upload-time = "2025-10-02T14:35:00.816Z" }, + { url = "https://files.pythonhosted.org/packages/84/7a/c2b3d071e4bb4a90b7057228a99b10d51744878f4a8a6dd643c8bd897620/xxhash-3.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba284920194615cb8edf73bf52236ce2e1664ccd4a38fdb543506413529cc546", size = 212241, upload-time = "2025-10-02T14:35:02.207Z" }, + { url = "https://files.pythonhosted.org/packages/81/5f/640b6eac0128e215f177df99eadcd0f1b7c42c274ab6a394a05059694c5a/xxhash-3.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4b54219177f6c6674d5378bd862c6aedf64725f70dd29c472eaae154df1a2e89", size = 445471, upload-time = "2025-10-02T14:35:03.61Z" }, + { url = "https://files.pythonhosted.org/packages/5e/1e/3c3d3ef071b051cc3abbe3721ffb8365033a172613c04af2da89d5548a87/xxhash-3.6.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42c36dd7dbad2f5238950c377fcbf6811b1cdb1c444fab447960030cea60504d", size = 193936, upload-time = "2025-10-02T14:35:05.013Z" }, + { url = "https://files.pythonhosted.org/packages/2c/bd/4a5f68381939219abfe1c22a9e3a5854a4f6f6f3c4983a87d255f21f2e5d/xxhash-3.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f22927652cba98c44639ffdc7aaf35828dccf679b10b31c4ad72a5b530a18eb7", size = 210440, upload-time = "2025-10-02T14:35:06.239Z" }, + { url = "https://files.pythonhosted.org/packages/eb/37/b80fe3d5cfb9faff01a02121a0f4d565eb7237e9e5fc66e73017e74dcd36/xxhash-3.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b45fad44d9c5c119e9c6fbf2e1c656a46dc68e280275007bbfd3d572b21426db", size = 197990, upload-time = "2025-10-02T14:35:07.735Z" }, + { url = "https://files.pythonhosted.org/packages/d7/fd/2c0a00c97b9e18f72e1f240ad4e8f8a90fd9d408289ba9c7c495ed7dc05c/xxhash-3.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:6f2580ffab1a8b68ef2b901cde7e55fa8da5e4be0977c68f78fc80f3c143de42", size = 210689, upload-time = "2025-10-02T14:35:09.438Z" }, + { url = "https://files.pythonhosted.org/packages/93/86/5dd8076a926b9a95db3206aba20d89a7fc14dd5aac16e5c4de4b56033140/xxhash-3.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:40c391dd3cd041ebc3ffe6f2c862f402e306eb571422e0aa918d8070ba31da11", size = 414068, upload-time = "2025-10-02T14:35:11.162Z" }, + { url = "https://files.pythonhosted.org/packages/af/3c/0bb129170ee8f3650f08e993baee550a09593462a5cddd8e44d0011102b1/xxhash-3.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f205badabde7aafd1a31e8ca2a3e5a763107a71c397c4481d6a804eb5063d8bd", size = 191495, upload-time = "2025-10-02T14:35:12.971Z" }, + { url = "https://files.pythonhosted.org/packages/e9/3a/6797e0114c21d1725e2577508e24006fd7ff1d8c0c502d3b52e45c1771d8/xxhash-3.6.0-cp313-cp313-win32.whl", hash = "sha256:2577b276e060b73b73a53042ea5bd5203d3e6347ce0d09f98500f418a9fcf799", size = 30620, upload-time = "2025-10-02T14:35:14.129Z" }, + { url = "https://files.pythonhosted.org/packages/86/15/9bc32671e9a38b413a76d24722a2bf8784a132c043063a8f5152d390b0f9/xxhash-3.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:757320d45d2fbcce8f30c42a6b2f47862967aea7bf458b9625b4bbe7ee390392", size = 31542, upload-time = "2025-10-02T14:35:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/39/c5/cc01e4f6188656e56112d6a8e0dfe298a16934b8c47a247236549a3f7695/xxhash-3.6.0-cp313-cp313-win_arm64.whl", hash = "sha256:457b8f85dec5825eed7b69c11ae86834a018b8e3df5e77783c999663da2f96d6", size = 27880, upload-time = "2025-10-02T14:35:16.315Z" }, + { url = "https://files.pythonhosted.org/packages/f3/30/25e5321c8732759e930c555176d37e24ab84365482d257c3b16362235212/xxhash-3.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a42e633d75cdad6d625434e3468126c73f13f7584545a9cf34e883aa1710e702", size = 32956, upload-time = "2025-10-02T14:35:17.413Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3c/0573299560d7d9f8ab1838f1efc021a280b5ae5ae2e849034ef3dee18810/xxhash-3.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:568a6d743219e717b07b4e03b0a828ce593833e498c3b64752e0f5df6bfe84db", size = 31072, upload-time = "2025-10-02T14:35:18.844Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1c/52d83a06e417cd9d4137722693424885cc9878249beb3a7c829e74bf7ce9/xxhash-3.6.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bec91b562d8012dae276af8025a55811b875baace6af510412a5e58e3121bc54", size = 196409, upload-time = "2025-10-02T14:35:20.31Z" }, + { url = "https://files.pythonhosted.org/packages/e3/8e/c6d158d12a79bbd0b878f8355432075fc82759e356ab5a111463422a239b/xxhash-3.6.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78e7f2f4c521c30ad5e786fdd6bae89d47a32672a80195467b5de0480aa97b1f", size = 215736, upload-time = "2025-10-02T14:35:21.616Z" }, + { url = "https://files.pythonhosted.org/packages/bc/68/c4c80614716345d55071a396cf03d06e34b5f4917a467faf43083c995155/xxhash-3.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3ed0df1b11a79856df5ffcab572cbd6b9627034c1c748c5566fa79df9048a7c5", size = 214833, upload-time = "2025-10-02T14:35:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e9/ae27c8ffec8b953efa84c7c4a6c6802c263d587b9fc0d6e7cea64e08c3af/xxhash-3.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0e4edbfc7d420925b0dd5e792478ed393d6e75ff8fc219a6546fb446b6a417b1", size = 448348, upload-time = "2025-10-02T14:35:25.111Z" }, + { url = "https://files.pythonhosted.org/packages/d7/6b/33e21afb1b5b3f46b74b6bd1913639066af218d704cc0941404ca717fc57/xxhash-3.6.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fba27a198363a7ef87f8c0f6b171ec36b674fe9053742c58dd7e3201c1ab30ee", size = 196070, upload-time = "2025-10-02T14:35:26.586Z" }, + { url = "https://files.pythonhosted.org/packages/96/b6/fcabd337bc5fa624e7203aa0fa7d0c49eed22f72e93229431752bddc83d9/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:794fe9145fe60191c6532fa95063765529770edcdd67b3d537793e8004cabbfd", size = 212907, upload-time = "2025-10-02T14:35:28.087Z" }, + { url = "https://files.pythonhosted.org/packages/4b/d3/9ee6160e644d660fcf176c5825e61411c7f62648728f69c79ba237250143/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6105ef7e62b5ac73a837778efc331a591d8442f8ef5c7e102376506cb4ae2729", size = 200839, upload-time = "2025-10-02T14:35:29.857Z" }, + { url = "https://files.pythonhosted.org/packages/0d/98/e8de5baa5109394baf5118f5e72ab21a86387c4f89b0e77ef3e2f6b0327b/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f01375c0e55395b814a679b3eea205db7919ac2af213f4a6682e01220e5fe292", size = 213304, upload-time = "2025-10-02T14:35:31.222Z" }, + { url = "https://files.pythonhosted.org/packages/7b/1d/71056535dec5c3177eeb53e38e3d367dd1d16e024e63b1cee208d572a033/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:d706dca2d24d834a4661619dcacf51a75c16d65985718d6a7d73c1eeeb903ddf", size = 416930, upload-time = "2025-10-02T14:35:32.517Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/5cbde9de2cd967c322e651c65c543700b19e7ae3e0aae8ece3469bf9683d/xxhash-3.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f059d9faeacd49c0215d66f4056e1326c80503f51a1532ca336a385edadd033", size = 193787, upload-time = "2025-10-02T14:35:33.827Z" }, + { url = "https://files.pythonhosted.org/packages/19/fa/0172e350361d61febcea941b0cc541d6e6c8d65d153e85f850a7b256ff8a/xxhash-3.6.0-cp313-cp313t-win32.whl", hash = "sha256:1244460adc3a9be84731d72b8e80625788e5815b68da3da8b83f78115a40a7ec", size = 30916, upload-time = "2025-10-02T14:35:35.107Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e6/e8cf858a2b19d6d45820f072eff1bea413910592ff17157cabc5f1227a16/xxhash-3.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:b1e420ef35c503869c4064f4a2f2b08ad6431ab7b229a05cce39d74268bca6b8", size = 31799, upload-time = "2025-10-02T14:35:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/56/15/064b197e855bfb7b343210e82490ae672f8bc7cdf3ddb02e92f64304ee8a/xxhash-3.6.0-cp313-cp313t-win_arm64.whl", hash = "sha256:ec44b73a4220623235f67a996c862049f375df3b1052d9899f40a6382c32d746", size = 28044, upload-time = "2025-10-02T14:35:37.195Z" }, + { url = "https://files.pythonhosted.org/packages/7e/5e/0138bc4484ea9b897864d59fce9be9086030825bc778b76cb5a33a906d37/xxhash-3.6.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:a40a3d35b204b7cc7643cbcf8c9976d818cb47befcfac8bbefec8038ac363f3e", size = 32754, upload-time = "2025-10-02T14:35:38.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/d7/5dac2eb2ec75fd771957a13e5dda560efb2176d5203f39502a5fc571f899/xxhash-3.6.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a54844be970d3fc22630b32d515e79a90d0a3ddb2644d8d7402e3c4c8da61405", size = 30846, upload-time = "2025-10-02T14:35:39.6Z" }, + { url = "https://files.pythonhosted.org/packages/fe/71/8bc5be2bb00deb5682e92e8da955ebe5fa982da13a69da5a40a4c8db12fb/xxhash-3.6.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:016e9190af8f0a4e3741343777710e3d5717427f175adfdc3e72508f59e2a7f3", size = 194343, upload-time = "2025-10-02T14:35:40.69Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/52badfb2aecec2c377ddf1ae75f55db3ba2d321c5e164f14461c90837ef3/xxhash-3.6.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f6f72232f849eb9d0141e2ebe2677ece15adfd0fa599bc058aad83c714bb2c6", size = 213074, upload-time = "2025-10-02T14:35:42.29Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/ae46b4e9b92e537fa30d03dbc19cdae57ed407e9c26d163895e968e3de85/xxhash-3.6.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:63275a8aba7865e44b1813d2177e0f5ea7eadad3dd063a21f7cf9afdc7054063", size = 212388, upload-time = "2025-10-02T14:35:43.929Z" }, + { url = "https://files.pythonhosted.org/packages/f5/80/49f88d3afc724b4ac7fbd664c8452d6db51b49915be48c6982659e0e7942/xxhash-3.6.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cd01fa2aa00d8b017c97eb46b9a794fbdca53fc14f845f5a328c71254b0abb7", size = 445614, upload-time = "2025-10-02T14:35:45.216Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ba/603ce3961e339413543d8cd44f21f2c80e2a7c5cfe692a7b1f2cccf58f3c/xxhash-3.6.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0226aa89035b62b6a86d3c68df4d7c1f47a342b8683da2b60cedcddb46c4d95b", size = 194024, upload-time = "2025-10-02T14:35:46.959Z" }, + { url = "https://files.pythonhosted.org/packages/78/d1/8e225ff7113bf81545cfdcd79eef124a7b7064a0bba53605ff39590b95c2/xxhash-3.6.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c6e193e9f56e4ca4923c61238cdaced324f0feac782544eb4c6d55ad5cc99ddd", size = 210541, upload-time = "2025-10-02T14:35:48.301Z" }, + { url = "https://files.pythonhosted.org/packages/6f/58/0f89d149f0bad89def1a8dd38feb50ccdeb643d9797ec84707091d4cb494/xxhash-3.6.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:9176dcaddf4ca963d4deb93866d739a343c01c969231dbe21680e13a5d1a5bf0", size = 198305, upload-time = "2025-10-02T14:35:49.584Z" }, + { url = "https://files.pythonhosted.org/packages/11/38/5eab81580703c4df93feb5f32ff8fa7fe1e2c51c1f183ee4e48d4bb9d3d7/xxhash-3.6.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c1ce4009c97a752e682b897aa99aef84191077a9433eb237774689f14f8ec152", size = 210848, upload-time = "2025-10-02T14:35:50.877Z" }, + { url = "https://files.pythonhosted.org/packages/5e/6b/953dc4b05c3ce678abca756416e4c130d2382f877a9c30a20d08ee6a77c0/xxhash-3.6.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:8cb2f4f679b01513b7adbb9b1b2f0f9cdc31b70007eaf9d59d0878809f385b11", size = 414142, upload-time = "2025-10-02T14:35:52.15Z" }, + { url = "https://files.pythonhosted.org/packages/08/a9/238ec0d4e81a10eb5026d4a6972677cbc898ba6c8b9dbaec12ae001b1b35/xxhash-3.6.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:653a91d7c2ab54a92c19ccf43508b6a555440b9be1bc8be553376778be7f20b5", size = 191547, upload-time = "2025-10-02T14:35:53.547Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ee/3cf8589e06c2164ac77c3bf0aa127012801128f1feebf2a079272da5737c/xxhash-3.6.0-cp314-cp314-win32.whl", hash = "sha256:a756fe893389483ee8c394d06b5ab765d96e68fbbfe6fde7aa17e11f5720559f", size = 31214, upload-time = "2025-10-02T14:35:54.746Z" }, + { url = "https://files.pythonhosted.org/packages/02/5d/a19552fbc6ad4cb54ff953c3908bbc095f4a921bc569433d791f755186f1/xxhash-3.6.0-cp314-cp314-win_amd64.whl", hash = "sha256:39be8e4e142550ef69629c9cd71b88c90e9a5db703fecbcf265546d9536ca4ad", size = 32290, upload-time = "2025-10-02T14:35:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/b1/11/dafa0643bc30442c887b55baf8e73353a344ee89c1901b5a5c54a6c17d39/xxhash-3.6.0-cp314-cp314-win_arm64.whl", hash = "sha256:25915e6000338999236f1eb68a02a32c3275ac338628a7eaa5a269c401995679", size = 28795, upload-time = "2025-10-02T14:35:57.162Z" }, + { url = "https://files.pythonhosted.org/packages/2c/db/0e99732ed7f64182aef4a6fb145e1a295558deec2a746265dcdec12d191e/xxhash-3.6.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c5294f596a9017ca5a3e3f8884c00b91ab2ad2933cf288f4923c3fd4346cf3d4", size = 32955, upload-time = "2025-10-02T14:35:58.267Z" }, + { url = "https://files.pythonhosted.org/packages/55/f4/2a7c3c68e564a099becfa44bb3d398810cc0ff6749b0d3cb8ccb93f23c14/xxhash-3.6.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1cf9dcc4ab9cff01dfbba78544297a3a01dafd60f3bde4e2bfd016cf7e4ddc67", size = 31072, upload-time = "2025-10-02T14:35:59.382Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d9/72a29cddc7250e8a5819dad5d466facb5dc4c802ce120645630149127e73/xxhash-3.6.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:01262da8798422d0685f7cef03b2bd3f4f46511b02830861df548d7def4402ad", size = 196579, upload-time = "2025-10-02T14:36:00.838Z" }, + { url = "https://files.pythonhosted.org/packages/63/93/b21590e1e381040e2ca305a884d89e1c345b347404f7780f07f2cdd47ef4/xxhash-3.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51a73fb7cb3a3ead9f7a8b583ffd9b8038e277cdb8cb87cf890e88b3456afa0b", size = 215854, upload-time = "2025-10-02T14:36:02.207Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b8/edab8a7d4fa14e924b29be877d54155dcbd8b80be85ea00d2be3413a9ed4/xxhash-3.6.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b9c6df83594f7df8f7f708ce5ebeacfc69f72c9fbaaababf6cf4758eaada0c9b", size = 214965, upload-time = "2025-10-02T14:36:03.507Z" }, + { url = "https://files.pythonhosted.org/packages/27/67/dfa980ac7f0d509d54ea0d5a486d2bb4b80c3f1bb22b66e6a05d3efaf6c0/xxhash-3.6.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:627f0af069b0ea56f312fd5189001c24578868643203bca1abbc2c52d3a6f3ca", size = 448484, upload-time = "2025-10-02T14:36:04.828Z" }, + { url = "https://files.pythonhosted.org/packages/8c/63/8ffc2cc97e811c0ca5d00ab36604b3ea6f4254f20b7bc658ca825ce6c954/xxhash-3.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aa912c62f842dfd013c5f21a642c9c10cd9f4c4e943e0af83618b4a404d9091a", size = 196162, upload-time = "2025-10-02T14:36:06.182Z" }, + { url = "https://files.pythonhosted.org/packages/4b/77/07f0e7a3edd11a6097e990f6e5b815b6592459cb16dae990d967693e6ea9/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b465afd7909db30168ab62afe40b2fcf79eedc0b89a6c0ab3123515dc0df8b99", size = 213007, upload-time = "2025-10-02T14:36:07.733Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d8/bc5fa0d152837117eb0bef6f83f956c509332ce133c91c63ce07ee7c4873/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a881851cf38b0a70e7c4d3ce81fc7afd86fbc2a024f4cfb2a97cf49ce04b75d3", size = 200956, upload-time = "2025-10-02T14:36:09.106Z" }, + { url = "https://files.pythonhosted.org/packages/26/a5/d749334130de9411783873e9b98ecc46688dad5db64ca6e04b02acc8b473/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9b3222c686a919a0f3253cfc12bb118b8b103506612253b5baeaac10d8027cf6", size = 213401, upload-time = "2025-10-02T14:36:10.585Z" }, + { url = "https://files.pythonhosted.org/packages/89/72/abed959c956a4bfc72b58c0384bb7940663c678127538634d896b1195c10/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:c5aa639bc113e9286137cec8fadc20e9cd732b2cc385c0b7fa673b84fc1f2a93", size = 417083, upload-time = "2025-10-02T14:36:12.276Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b3/62fd2b586283b7d7d665fb98e266decadf31f058f1cf6c478741f68af0cb/xxhash-3.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5c1343d49ac102799905e115aee590183c3921d475356cb24b4de29a4bc56518", size = 193913, upload-time = "2025-10-02T14:36:14.025Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9a/c19c42c5b3f5a4aad748a6d5b4f23df3bed7ee5445accc65a0fb3ff03953/xxhash-3.6.0-cp314-cp314t-win32.whl", hash = "sha256:5851f033c3030dd95c086b4a36a2683c2ff4a799b23af60977188b057e467119", size = 31586, upload-time = "2025-10-02T14:36:15.603Z" }, + { url = "https://files.pythonhosted.org/packages/03/d6/4cc450345be9924fd5dc8c590ceda1db5b43a0a889587b0ae81a95511360/xxhash-3.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0444e7967dac37569052d2409b00a8860c2135cff05502df4da80267d384849f", size = 32526, upload-time = "2025-10-02T14:36:16.708Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/7243eb3f9eaabd1a88a5a5acadf06df2d83b100c62684b7425c6a11bcaa8/xxhash-3.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:bb79b1e63f6fd84ec778a4b1916dfe0a7c3fdb986c06addd5db3a0d413819d95", size = 28898, upload-time = "2025-10-02T14:36:17.843Z" }, +] + +[[package]] +name = "yarl" +version = "1.22.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/75/ff/46736024fee3429b80a165a732e38e5d5a238721e634ab41b040d49f8738/yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", size = 142000, upload-time = "2025-10-06T14:09:44.631Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/b312ed670df903145598914770eb12de1bac44599549b3360acc96878df8/yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", size = 94338, upload-time = "2025-10-06T14:09:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f5/0601483296f09c3c65e303d60c070a5c19fcdbc72daa061e96170785bc7d/yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", size = 94909, upload-time = "2025-10-06T14:09:48.648Z" }, + { url = "https://files.pythonhosted.org/packages/60/41/9a1fe0b73dbcefce72e46cf149b0e0a67612d60bfc90fb59c2b2efdfbd86/yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", size = 372940, upload-time = "2025-10-06T14:09:50.089Z" }, + { url = "https://files.pythonhosted.org/packages/17/7a/795cb6dfee561961c30b800f0ed616b923a2ec6258b5def2a00bf8231334/yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", size = 345825, upload-time = "2025-10-06T14:09:52.142Z" }, + { url = "https://files.pythonhosted.org/packages/d7/93/a58f4d596d2be2ae7bab1a5846c4d270b894958845753b2c606d666744d3/yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", size = 386705, upload-time = "2025-10-06T14:09:54.128Z" }, + { url = "https://files.pythonhosted.org/packages/61/92/682279d0e099d0e14d7fd2e176bd04f48de1484f56546a3e1313cd6c8e7c/yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", size = 396518, upload-time = "2025-10-06T14:09:55.762Z" }, + { url = "https://files.pythonhosted.org/packages/db/0f/0d52c98b8a885aeda831224b78f3be7ec2e1aa4a62091f9f9188c3c65b56/yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", size = 377267, upload-time = "2025-10-06T14:09:57.958Z" }, + { url = "https://files.pythonhosted.org/packages/22/42/d2685e35908cbeaa6532c1fc73e89e7f2efb5d8a7df3959ea8e37177c5a3/yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", size = 365797, upload-time = "2025-10-06T14:09:59.527Z" }, + { url = "https://files.pythonhosted.org/packages/a2/83/cf8c7bcc6355631762f7d8bdab920ad09b82efa6b722999dfb05afa6cfac/yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", size = 365535, upload-time = "2025-10-06T14:10:01.139Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/5302ff9b28f0c59cac913b91fe3f16c59a033887e57ce9ca5d41a3a94737/yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", size = 382324, upload-time = "2025-10-06T14:10:02.756Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cd/4617eb60f032f19ae3a688dc990d8f0d89ee0ea378b61cac81ede3e52fae/yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", size = 383803, upload-time = "2025-10-06T14:10:04.552Z" }, + { url = "https://files.pythonhosted.org/packages/59/65/afc6e62bb506a319ea67b694551dab4a7e6fb7bf604e9bd9f3e11d575fec/yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", size = 374220, upload-time = "2025-10-06T14:10:06.489Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3d/68bf18d50dc674b942daec86a9ba922d3113d8399b0e52b9897530442da2/yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", size = 81589, upload-time = "2025-10-06T14:10:09.254Z" }, + { url = "https://files.pythonhosted.org/packages/c8/9a/6ad1a9b37c2f72874f93e691b2e7ecb6137fb2b899983125db4204e47575/yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", size = 87213, upload-time = "2025-10-06T14:10:11.369Z" }, + { url = "https://files.pythonhosted.org/packages/44/c5/c21b562d1680a77634d748e30c653c3ca918beb35555cff24986fff54598/yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", size = 81330, upload-time = "2025-10-06T14:10:13.112Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f3/d67de7260456ee105dc1d162d43a019ecad6b91e2f51809d6cddaa56690e/yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", size = 139980, upload-time = "2025-10-06T14:10:14.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", size = 93424, upload-time = "2025-10-06T14:10:16.115Z" }, + { url = "https://files.pythonhosted.org/packages/18/91/3274b215fd8442a03975ce6bee5fe6aa57a8326b29b9d3d56234a1dca244/yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", size = 93821, upload-time = "2025-10-06T14:10:17.993Z" }, + { url = "https://files.pythonhosted.org/packages/61/3a/caf4e25036db0f2da4ca22a353dfeb3c9d3c95d2761ebe9b14df8fc16eb0/yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601", size = 373243, upload-time = "2025-10-06T14:10:19.44Z" }, + { url = "https://files.pythonhosted.org/packages/6e/9e/51a77ac7516e8e7803b06e01f74e78649c24ee1021eca3d6a739cb6ea49c/yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a", size = 342361, upload-time = "2025-10-06T14:10:21.124Z" }, + { url = "https://files.pythonhosted.org/packages/d4/f8/33b92454789dde8407f156c00303e9a891f1f51a0330b0fad7c909f87692/yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df", size = 387036, upload-time = "2025-10-06T14:10:22.902Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9a/c5db84ea024f76838220280f732970aa4ee154015d7f5c1bfb60a267af6f/yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2", size = 397671, upload-time = "2025-10-06T14:10:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/11/c9/cd8538dc2e7727095e0c1d867bad1e40c98f37763e6d995c1939f5fdc7b1/yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b", size = 377059, upload-time = "2025-10-06T14:10:26.406Z" }, + { url = "https://files.pythonhosted.org/packages/a1/b9/ab437b261702ced75122ed78a876a6dec0a1b0f5e17a4ac7a9a2482d8abe/yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273", size = 365356, upload-time = "2025-10-06T14:10:28.461Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9d/8e1ae6d1d008a9567877b08f0ce4077a29974c04c062dabdb923ed98e6fe/yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a", size = 361331, upload-time = "2025-10-06T14:10:30.541Z" }, + { url = "https://files.pythonhosted.org/packages/ca/5a/09b7be3905962f145b73beb468cdd53db8aa171cf18c80400a54c5b82846/yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d", size = 382590, upload-time = "2025-10-06T14:10:33.352Z" }, + { url = "https://files.pythonhosted.org/packages/aa/7f/59ec509abf90eda5048b0bc3e2d7b5099dffdb3e6b127019895ab9d5ef44/yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02", size = 385316, upload-time = "2025-10-06T14:10:35.034Z" }, + { url = "https://files.pythonhosted.org/packages/e5/84/891158426bc8036bfdfd862fabd0e0fa25df4176ec793e447f4b85cf1be4/yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67", size = 374431, upload-time = "2025-10-06T14:10:37.76Z" }, + { url = "https://files.pythonhosted.org/packages/bb/49/03da1580665baa8bef5e8ed34c6df2c2aca0a2f28bf397ed238cc1bbc6f2/yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95", size = 81555, upload-time = "2025-10-06T14:10:39.649Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ee/450914ae11b419eadd067c6183ae08381cfdfcb9798b90b2b713bbebddda/yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d", size = 86965, upload-time = "2025-10-06T14:10:41.313Z" }, + { url = "https://files.pythonhosted.org/packages/98/4d/264a01eae03b6cf629ad69bae94e3b0e5344741e929073678e84bf7a3e3b/yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b", size = 81205, upload-time = "2025-10-06T14:10:43.167Z" }, + { url = "https://files.pythonhosted.org/packages/88/fc/6908f062a2f77b5f9f6d69cecb1747260831ff206adcbc5b510aff88df91/yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10", size = 146209, upload-time = "2025-10-06T14:10:44.643Z" }, + { url = "https://files.pythonhosted.org/packages/65/47/76594ae8eab26210b4867be6f49129861ad33da1f1ebdf7051e98492bf62/yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3", size = 95966, upload-time = "2025-10-06T14:10:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ce/05e9828a49271ba6b5b038b15b3934e996980dd78abdfeb52a04cfb9467e/yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9", size = 97312, upload-time = "2025-10-06T14:10:48.007Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c5/7dffad5e4f2265b29c9d7ec869c369e4223166e4f9206fc2243ee9eea727/yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f", size = 361967, upload-time = "2025-10-06T14:10:49.997Z" }, + { url = "https://files.pythonhosted.org/packages/50/b2/375b933c93a54bff7fc041e1a6ad2c0f6f733ffb0c6e642ce56ee3b39970/yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0", size = 323949, upload-time = "2025-10-06T14:10:52.004Z" }, + { url = "https://files.pythonhosted.org/packages/66/50/bfc2a29a1d78644c5a7220ce2f304f38248dc94124a326794e677634b6cf/yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e", size = 361818, upload-time = "2025-10-06T14:10:54.078Z" }, + { url = "https://files.pythonhosted.org/packages/46/96/f3941a46af7d5d0f0498f86d71275696800ddcdd20426298e572b19b91ff/yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708", size = 372626, upload-time = "2025-10-06T14:10:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/c1/42/8b27c83bb875cd89448e42cd627e0fb971fa1675c9ec546393d18826cb50/yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f", size = 341129, upload-time = "2025-10-06T14:10:57.985Z" }, + { url = "https://files.pythonhosted.org/packages/49/36/99ca3122201b382a3cf7cc937b95235b0ac944f7e9f2d5331d50821ed352/yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d", size = 346776, upload-time = "2025-10-06T14:10:59.633Z" }, + { url = "https://files.pythonhosted.org/packages/85/b4/47328bf996acd01a4c16ef9dcd2f59c969f495073616586f78cd5f2efb99/yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8", size = 334879, upload-time = "2025-10-06T14:11:01.454Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ad/b77d7b3f14a4283bffb8e92c6026496f6de49751c2f97d4352242bba3990/yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5", size = 350996, upload-time = "2025-10-06T14:11:03.452Z" }, + { url = "https://files.pythonhosted.org/packages/81/c8/06e1d69295792ba54d556f06686cbd6a7ce39c22307100e3fb4a2c0b0a1d/yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f", size = 356047, upload-time = "2025-10-06T14:11:05.115Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b8/4c0e9e9f597074b208d18cef227d83aac36184bfbc6eab204ea55783dbc5/yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62", size = 342947, upload-time = "2025-10-06T14:11:08.137Z" }, + { url = "https://files.pythonhosted.org/packages/e0/e5/11f140a58bf4c6ad7aca69a892bff0ee638c31bea4206748fc0df4ebcb3a/yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03", size = 86943, upload-time = "2025-10-06T14:11:10.284Z" }, + { url = "https://files.pythonhosted.org/packages/31/74/8b74bae38ed7fe6793d0c15a0c8207bbb819cf287788459e5ed230996cdd/yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249", size = 93715, upload-time = "2025-10-06T14:11:11.739Z" }, + { url = "https://files.pythonhosted.org/packages/69/66/991858aa4b5892d57aef7ee1ba6b4d01ec3b7eb3060795d34090a3ca3278/yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b", size = 83857, upload-time = "2025-10-06T14:11:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/e20ef504049f1a1c54a814b4b9bed96d1ac0e0610c3b4da178f87209db05/yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4", size = 140520, upload-time = "2025-10-06T14:11:15.465Z" }, + { url = "https://files.pythonhosted.org/packages/e4/04/3532d990fdbab02e5ede063676b5c4260e7f3abea2151099c2aa745acc4c/yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683", size = 93504, upload-time = "2025-10-06T14:11:17.106Z" }, + { url = "https://files.pythonhosted.org/packages/11/63/ff458113c5c2dac9a9719ac68ee7c947cb621432bcf28c9972b1c0e83938/yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b", size = 94282, upload-time = "2025-10-06T14:11:19.064Z" }, + { url = "https://files.pythonhosted.org/packages/a7/bc/315a56aca762d44a6aaaf7ad253f04d996cb6b27bad34410f82d76ea8038/yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e", size = 372080, upload-time = "2025-10-06T14:11:20.996Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3f/08e9b826ec2e099ea6e7c69a61272f4f6da62cb5b1b63590bb80ca2e4a40/yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590", size = 338696, upload-time = "2025-10-06T14:11:22.847Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9f/90360108e3b32bd76789088e99538febfea24a102380ae73827f62073543/yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2", size = 387121, upload-time = "2025-10-06T14:11:24.889Z" }, + { url = "https://files.pythonhosted.org/packages/98/92/ab8d4657bd5b46a38094cfaea498f18bb70ce6b63508fd7e909bd1f93066/yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da", size = 394080, upload-time = "2025-10-06T14:11:27.307Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e7/d8c5a7752fef68205296201f8ec2bf718f5c805a7a7e9880576c67600658/yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784", size = 372661, upload-time = "2025-10-06T14:11:29.387Z" }, + { url = "https://files.pythonhosted.org/packages/b6/2e/f4d26183c8db0bb82d491b072f3127fb8c381a6206a3a56332714b79b751/yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b", size = 364645, upload-time = "2025-10-06T14:11:31.423Z" }, + { url = "https://files.pythonhosted.org/packages/80/7c/428e5812e6b87cd00ee8e898328a62c95825bf37c7fa87f0b6bb2ad31304/yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694", size = 355361, upload-time = "2025-10-06T14:11:33.055Z" }, + { url = "https://files.pythonhosted.org/packages/ec/2a/249405fd26776f8b13c067378ef4d7dd49c9098d1b6457cdd152a99e96a9/yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d", size = 381451, upload-time = "2025-10-06T14:11:35.136Z" }, + { url = "https://files.pythonhosted.org/packages/67/a8/fb6b1adbe98cf1e2dd9fad71003d3a63a1bc22459c6e15f5714eb9323b93/yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd", size = 383814, upload-time = "2025-10-06T14:11:37.094Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f9/3aa2c0e480fb73e872ae2814c43bc1e734740bb0d54e8cb2a95925f98131/yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da", size = 370799, upload-time = "2025-10-06T14:11:38.83Z" }, + { url = "https://files.pythonhosted.org/packages/50/3c/af9dba3b8b5eeb302f36f16f92791f3ea62e3f47763406abf6d5a4a3333b/yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2", size = 82990, upload-time = "2025-10-06T14:11:40.624Z" }, + { url = "https://files.pythonhosted.org/packages/ac/30/ac3a0c5bdc1d6efd1b41fa24d4897a4329b3b1e98de9449679dd327af4f0/yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79", size = 88292, upload-time = "2025-10-06T14:11:42.578Z" }, + { url = "https://files.pythonhosted.org/packages/df/0a/227ab4ff5b998a1b7410abc7b46c9b7a26b0ca9e86c34ba4b8d8bc7c63d5/yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33", size = 82888, upload-time = "2025-10-06T14:11:44.863Z" }, + { url = "https://files.pythonhosted.org/packages/06/5e/a15eb13db90abd87dfbefb9760c0f3f257ac42a5cac7e75dbc23bed97a9f/yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1", size = 146223, upload-time = "2025-10-06T14:11:46.796Z" }, + { url = "https://files.pythonhosted.org/packages/18/82/9665c61910d4d84f41a5bf6837597c89e665fa88aa4941080704645932a9/yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca", size = 95981, upload-time = "2025-10-06T14:11:48.845Z" }, + { url = "https://files.pythonhosted.org/packages/5d/9a/2f65743589809af4d0a6d3aa749343c4b5f4c380cc24a8e94a3c6625a808/yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53", size = 97303, upload-time = "2025-10-06T14:11:50.897Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ab/5b13d3e157505c43c3b43b5a776cbf7b24a02bc4cccc40314771197e3508/yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c", size = 361820, upload-time = "2025-10-06T14:11:52.549Z" }, + { url = "https://files.pythonhosted.org/packages/fb/76/242a5ef4677615cf95330cfc1b4610e78184400699bdda0acb897ef5e49a/yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf", size = 323203, upload-time = "2025-10-06T14:11:54.225Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/475509110d3f0153b43d06164cf4195c64d16999e0c7e2d8a099adcd6907/yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face", size = 363173, upload-time = "2025-10-06T14:11:56.069Z" }, + { url = "https://files.pythonhosted.org/packages/c9/66/59db471aecfbd559a1fd48aedd954435558cd98c7d0da8b03cc6c140a32c/yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b", size = 373562, upload-time = "2025-10-06T14:11:58.783Z" }, + { url = "https://files.pythonhosted.org/packages/03/1f/c5d94abc91557384719da10ff166b916107c1b45e4d0423a88457071dd88/yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486", size = 339828, upload-time = "2025-10-06T14:12:00.686Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/aa6a143d3afba17b6465733681c70cf175af89f76ec8d9286e08437a7454/yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138", size = 347551, upload-time = "2025-10-06T14:12:02.628Z" }, + { url = "https://files.pythonhosted.org/packages/43/3c/45a2b6d80195959239a7b2a8810506d4eea5487dce61c2a3393e7fc3c52e/yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a", size = 334512, upload-time = "2025-10-06T14:12:04.871Z" }, + { url = "https://files.pythonhosted.org/packages/86/a0/c2ab48d74599c7c84cb104ebd799c5813de252bea0f360ffc29d270c2caa/yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529", size = 352400, upload-time = "2025-10-06T14:12:06.624Z" }, + { url = "https://files.pythonhosted.org/packages/32/75/f8919b2eafc929567d3d8411f72bdb1a2109c01caaab4ebfa5f8ffadc15b/yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093", size = 357140, upload-time = "2025-10-06T14:12:08.362Z" }, + { url = "https://files.pythonhosted.org/packages/cf/72/6a85bba382f22cf78add705d8c3731748397d986e197e53ecc7835e76de7/yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c", size = 341473, upload-time = "2025-10-06T14:12:10.994Z" }, + { url = "https://files.pythonhosted.org/packages/35/18/55e6011f7c044dc80b98893060773cefcfdbf60dfefb8cb2f58b9bacbd83/yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e", size = 89056, upload-time = "2025-10-06T14:12:13.317Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/0f0dccb6e59a9e7f122c5afd43568b1d31b8ab7dda5f1b01fb5c7025c9a9/yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27", size = 96292, upload-time = "2025-10-06T14:12:15.398Z" }, + { url = "https://files.pythonhosted.org/packages/48/b7/503c98092fb3b344a179579f55814b613c1fbb1c23b3ec14a7b008a66a6e/yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1", size = 85171, upload-time = "2025-10-06T14:12:16.935Z" }, + { url = "https://files.pythonhosted.org/packages/73/ae/b48f95715333080afb75a4504487cbe142cae1268afc482d06692d605ae6/yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", size = 46814, upload-time = "2025-10-06T14:12:53.872Z" }, +] + +[[package]] +name = "zarr" +version = "2.18.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asciitree" }, + { name = "fasteners", marker = "sys_platform != 'emscripten'" }, + { name = "numcodecs" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/1d/01cf9e3ab2d85190278efc3fca9f68563de35ae30ee59e7640e3af98abe3/zarr-2.18.7.tar.gz", hash = "sha256:b2b8f66f14dac4af66b180d2338819981b981f70e196c9a66e6bfaa9e59572f5", size = 3604558, upload-time = "2025-04-09T07:59:28.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/d8/9ffd8c237b3559945bb52103cf0eed64ea098f7b7f573f8d2962ef27b4b2/zarr-2.18.7-py3-none-any.whl", hash = "sha256:ac3dc4033e9ae4e9d7b5e27c97ea3eaf1003cc0a07f010bd83d5134bf8c4b223", size = 211273, upload-time = "2025-04-09T07:59:27.039Z" }, +]