diff --git a/404.html b/404.html index 4be22fc..85601c2 100644 --- a/404.html +++ b/404.html @@ -5,7 +5,7 @@ Page Not Found | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Page Not Found

We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/about/architect/index.html b/about/architect/index.html index 100071f..a3ddf71 100644 --- a/about/architect/index.html +++ b/about/architect/index.html @@ -5,7 +5,7 @@ Description and architecture | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Description and architecture

Codex is building a durable data storage engine that is fully decentralised, providing corruption and censorship resistance to web3 applications. It innately protects network participants by giving hosts plausible deniability over the data they store, and clients provable durability guarantees—up to 99.99%—while remaining storage and bandwidth efficient.

These four key features combine to differentiate Codex from existing projects in the decentralised storage niche:

  • Erasure coding: Provides efficient data redundancy, which increases data durability guarantees.

  • ZK-based proof-of-retrievability: For lightweight data durability assurances.

  • Lazy repair mechanism: For efficient data reconstruction and loss prevention.

  • Incentivization: To encourage rational behaviour, widespread network participation, and the efficient provision of finite network resources.


Incentivized decentralisation

Incentivization mechanisms are one of the key pieces missing from traditional file-sharing networks. Codex believes that a robust marketplace-based incentive structure will ensure wide participation across the node types detailed below.

The development of an adequate incentive structure is driven by the following goals:

  • Supply and demand to encourage optimum network resource usage.

  • Increase participation by enabling nodes to utilise their competitive advantages to maximise profits.

  • Prevent spam and discourage malicious participation.

Although still to be finalised, the Codex incentive structure will involve a marketplace of participants who want to store data, and those provisioning storage posting collateral, with the latter bidding on open storage contracts. This structure aims to ensure that participants' incentives align, resulting in Codex functioning as intended.


Network architecture

Codex is composed of multiple node types, each taking a different role in the network's operation. Similarly, the hardware demands for each node type vary, enabling those operating resource-restricted devices to participate.

Storage nodes

As Codex's long-term reliable storage providers, storage nodes stake collateral based on the collateral posted on the request side of contracts, and the number of slots that a contract has. This is tied to the durability demanded by the user. Failure to provide periodic proof of data possession results in slashing penalties.

Aggregator Node

A method for off-loading erasure coding, proof generation and proof aggregation by a client node with low-resources, currently a WIP and will be part of subsequent Codex release Q2/Q4 next year.

Client nodes

Client nodes make requests for other nodes to store, find, and retrieve data. Most of the Codex network will be Client nodes, and these participants can double as caching nodes to offset the cost of the network resources they consume.

When a node commits to a storage contract and a user uploads data, the network will proactively verify that the storage node is online and that the data is retrievable. Storage nodes are then randomly queried to broadcast proofs of data possession over an interval corresponding to the contract duration and 9's of retrievability guarantee the protocol provides.

If the storage node sends invalid proofs or fails to provide them in time, the network evicts the storage node from the slot, and the slot will become available for the first node that generates a valid proof for that slot.

When the contract is reposted, some of the faulty node's collateral pays for the new storage node's bandwidth fees. Erasure coding complements the repair scheme by allowing the reconstruction of the missing chunks from data in other slots within the same storage contract hosted by faultless storage nodes.


architect


Read the Codex whitepaper

- + \ No newline at end of file diff --git a/about/faq/index.html b/about/faq/index.html index 1d54c40..4322110 100644 --- a/about/faq/index.html +++ b/about/faq/index.html @@ -5,7 +5,7 @@ Frequently asked questions | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Frequently asked questions

Codex is a state-of-the-art, decentralized storage protocol that provides a solution for highly durable data storage with high decentralization, aiming to resist censorship and prevent single points of failure inherent in centralized systems.
Unlike centralized systems, Codex is designed to offer data durability, resiliency to cloud failures, and censorship resistance, making it vital for use cases like preserving factual history records.
While no system can promise absolute data loss protection, Codex's architecture, economic incentives, and encoding algorithms aim to provide high data durability with the novel implementation of techniques such as Erasure Coding and Lazy Repair.
Data Durability means how likely it is that data will stay safe over time. For instance, a storage system with durability of eleven nines (99.999999999%) means there's a very tiny chance (0.0000000001%) of losing data. In simple terms, you might lose only one file out of a million over ten million years. Data Durability is crucial because losing even a little data can be a big problem. Codex uses techniques like erasure coding to keep data safe. This method splits data and stores it in different places. So, if a piece is lost or damaged, the other pieces can be used to recreate the original data. This keeps users' data secure and intact.
Erasure Coding is a way to protect data by breaking it into parts, adding extra data for safety, and then spreading these parts across various locations or systems. On Codex, this involves splitting data into pieces, known as "shards," along with extra "parity shards" for backup. These parity shards are created using mathematical formulas based on the original data, helping to rebuild the data if some shards go missing or get damaged. This method lets Codex offer consistent and reliable data storage, meaning that as long as a certain number of shards (N out of M) are safe, the entire original data can be perfectly restored, ensuring a high level of data safety.
Lazy Repair is a method in distributed storage systems for managing data issues. In Codex, if a piece of data (a shard) is lost or damaged, the system doesn't fix it right away. It waits until there's enough damage to make repair worthwhile. This is efficient because it saves resources by not addressing small problems that don't harm the overall data. The system only repairs when the number of good shards drops too low, balancing resource use with keeping data safe and available.
Yes, Codex is expected to serve as the storage pillar of Logos, the protocol protecting Logos organizational data, aligning with the broader Logos initiative.
Codex distinguishes itself from other storage solutions in the market through several key features: having an Advanced Marketplace and Data Distribution, and using SNARKS for Data Loss Detection.
Codex features an advanced marketplace that promotes high levels of decentralization and efficient data distribution. This structure prevents the concentration of data in a few large nodes, enhancing the efficiency of data repair and retrieval. In contrast, other protocols design their systems to create "supernodes".
Codex incorporates succinct non-interactive arguments of knowledge (SNARKS) for efficient and reliable data loss detection. Storage Providers (SPs) respond to challenges by sending proofs to Proof Aggregators, who verify and post these proofs to the blockchain. If an SP fails to prove possession of data or sends invalid proof, their collateral is slashed, providing an economic incentive to ensure data durability.
Yes, Codex is discussing with various blockchain projects to preserve their full chain state and history in a way that resists censorship and does not require full history to be stored locally by every node.
Codex is currently undergoing extensive internal testing. The upcoming public testnet is planned for Q1 2024.
Codex can handle various types of data but is particularly suited for mission-critical history and state information for Web3 applications that need to remain unaltered, and accessible.
No, the design allows for storing vast amounts of data without requiring every node to store the full history.
Codex consists of a p2p network of Storage Nodes, Aggregator Nodes, Caching Nodes, and Client Nodes.
Storage nodes provide long-term reliable storage. For a storage node to operate it needs to stake a collateral proportional to the amount of data it's willing to store. Once the collateral has been staked and the node begins to store data, it needs to periodically provide proof of data possession. If a node fails to provide proof in time, it is penalized with a portion of its stake; if the node fails to provide proof several times in a row, it loses the entirety of the stake.
Aggregator nodes are in charge of collecting, validating, and submitting proofs to an adjudicator contract which rewards and penalizes storage and other validator nodes. A validator node also needs to stake collateral to be able to participate in the validation process. Note that we don't use the term "adjudicator contract" in the literal sense of an Ethereum contract. We use it to indicate anything that executes on a consensus engine.
Bandwidth incentives allow anyone to operate as a caching node, profiting only from caching and serving popular content. We expect this to have the emergent property of an organic CDN, where nodes with spare bandwidth but limited or unreliable storage can collectively scale the network depending on current demands. Any node can become a caching node for any period, even ephemeral nodes.
Client Nodes engage with other nodes to store, find, and retrieve data from the network. We expect regular nodes to be the most common type of node in the Codex Network. These will consume services offered by other nodes in exchange for payments. A regular node can also be a caching node by storing previously consumed data that other nodes can retrieve from it. This allows nodes to offset some of the cost of participating in the network and it's expected to allow the majority of nodes to participate on an almost free basis after an initial entree fee. Unlike the other types of nodes, we expect the regular nodes to have intermittent up-time as they are running on personal computers and mobile devices.
Not yet. Stay tuned for more updates from the Codex project for when you can utilize your application on top of the Codex network.
No Codex token has been issued yet. Please be wary of impersonators claiming the issuance of Codex tokens or any form of Codex airdrop.
The Codex token is a utility token, serving as collateral for Storage Providers and a means of compensation in the storage contracts.
Yes. The testnet phase is set for Q1 2024, stay tuned.
Not yet. However, you will be able to participate in the testnet phase of Q1 2024. Stay tuned.
- + \ No newline at end of file diff --git a/about/index.html b/about/index.html index 890bf9d..e598e33 100644 --- a/about/index.html +++ b/about/index.html @@ -5,7 +5,7 @@ About Codex | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

About Codex

Codex is a decentralised data storage platform that provides exceptionally strong censorship resistance and durability guarantees. It serves as the storage layer of the Logos tech stack. Alongside the trustless agreement layer, Nomos, and the communications layer, Waku, it is one of the Logos Collective's foundational projects.


Motive

The remote storage landscape is dominated by an increasingly small number of internet powerhouses—Google, Microsoft, Amazon, etc. While these services score highly in terms of user experience and convenience, centralised cloud data storage suffers from the following drawbacks:

  • Censorship

  • Lack of data ownership

  • Breaches and outages

  • High cost

Centralised cloud storage providers have an established history of censoring data and, as de facto owners of said data, have the power to do so according to their own standards. Furthermore, centralised platforms have fallen victim to major data breaches and service outages on numerous occasions.

Such incidents have created a gap in the market for a decentralised, censorship-resistant alternative. Existing peer-to-peer storage and file-sharing networks address some of these issues—such as robustness in the face of network disruptions, and desirable resistance to censorship. Yet without adequate incentives and strong data durability guarantees, they make for unsuitable foundations upon which to build truly unstoppable applications.

Existing decentralised storage solutions purport to improve upon early P2P file-sharing platforms like eDonkey and Gnutella. However, the market still lacks a decentralised storage solution that is efficient in terms of storage and bandwidth usage, while offering performance and durability guarantees comparable to incumbents.


Decentralising data storage

Codex began in 2021 to address a need for a durable, decentralised storage layer for the web3 tech stack.

The name "Codex" refers to an ancient form of book—an allusion to the data storage engine's extremely robust—99.99%—durability guarantees.

Codex was announced as a core Logos Collective protocol in June 2023.

- + \ No newline at end of file diff --git a/about/roadmap/index.html b/about/roadmap/index.html index 526f307..23a3c58 100644 --- a/about/roadmap/index.html +++ b/about/roadmap/index.html @@ -5,7 +5,7 @@ Development roadmap | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Development roadmap

Releases

Codex is currently in its first proof of concept iteration, codenamed Dagger. Before Katana (its forthcoming testnet release, expected before the end of 2023) we aim to deliver two additional PoC clients, Scimitar and Longsword.

  • Dagger: Codex's first PoC and current version.

  • Scimitar: The PoC-2 client will implement fast erasure coding, the marketplace, and partial durability guarantees—expected end of Q3 2023.

  • Katana: Codex v1 will offer SNARK-based remote auditing


Milestones

The Codex team's subgroups are working on the major milestones detailed below to deliver Codex with the qualities described:

  • Testing:

    • Develop and maintain testnet and devnet
  • Client:

    • Release Scimitar
    • Develop initial data repair and ZK proving scheme
    • Release Longsword
    • Deploy Codex v1.0
  • Marketplace:

    • Develop the marketplace for integration in PoC-2.
    • Develop the marketplace bandwidth incentivization structure.
  • Research:

    • Write the initial ZK proving scheme
    • Conduct Data Availability Sampling research with the Ethereum Foundation

Roadmap rationale

We believe the above roadmap to be the most logical approach to building a data storage engine with stronger durability guarantees and resistance to censorship than currently offered by Codex's centralised or decentralised counterparts.

First, we must establish a mechanism through which users can initiate a contract with a storage provider to host their data. Then, we can add erasure coding, required for efficient redundancy and auditing. Next, the system will need a mechanism to prove the hosts still have data available. Finally, repairs must be incentivized. Naturally, each layer of sophistication requires testing for economic and technical feasibility.

Contribute to Codex

- + \ No newline at end of file diff --git a/about/team/index.html b/about/team/index.html index dbe6e6d..6bb314b 100644 --- a/about/team/index.html +++ b/about/team/index.html @@ -5,7 +5,7 @@ Core contributors | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
Skip to main content

Core contributors

Codex is developed by highly experienced protocol and software developers, distributed systems experts, and ZK-cryptography researchers with backgrounds in academia, mainstream tech, and web3.

The contributors working on Codex are split into the subgroups below:

  • Codex general

  • Codex marketplace

  • Codex client

  • Codex research

Codex is looking for more contributors to help build the network. Check out the open positions linked below. As an open-source public goods project Codex also welcomes community contributions. Please check out our Github repo here.

Work with us

- + \ No newline at end of file diff --git a/assets/js/common.e4040aab.js b/assets/js/common.ad6bcce3.js similarity index 99% rename from assets/js/common.e4040aab.js rename to assets/js/common.ad6bcce3.js index fd4cada..3b16a89 100644 --- a/assets/js/common.e4040aab.js +++ b/assets/js/common.ad6bcce3.js @@ -1,4 +1,4 @@ -/*! For license information please see common.e4040aab.js.LICENSE.txt */ +/*! For license information please see common.ad6bcce3.js.LICENSE.txt */ (self.webpackChunkcodex_docusaurus_template=self.webpackChunkcodex_docusaurus_template||[]).push([[592],{82688:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r extends ICstVisitor {\n ").concat((0,s.default)(n,(function(e){return function(e){var t=d(e.name);return"".concat(e.name,"(children: ").concat(t,", param?: IN): OUT;")}(e)})).join("\n "),"\n}")))),c.join("\n\n")+"\n"}},62222:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildModel=void 0;var s=r(93062),o=a(r(35161)),l=a(r(85564)),c=a(r(52628)),u=a(r(59704)),h=a(r(7739)),d=a(r(28583));t.buildModel=function(e){var t=new p,r=(0,c.default)(e);return(0,o.default)(r,(function(e){return t.visitRule(e)}))};var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.visitRule=function(e){var t=this.visitEach(e.definition),r=(0,h.default)(t,(function(e){return e.propertyName})),n=(0,o.default)(r,(function(e,t){var r=!(0,u.default)(e,(function(e){return!e.canBeNull})),n=e[0].type;return e.length>1&&(n=(0,o.default)(e,(function(e){return e.type}))),{name:t,type:n,optional:r}}));return{name:e.name,properties:n}},t.prototype.visitAlternative=function(e){return this.visitEachAndOverrideWith(e.definition,{canBeNull:!0})},t.prototype.visitOption=function(e){return this.visitEachAndOverrideWith(e.definition,{canBeNull:!0})},t.prototype.visitRepetition=function(e){return this.visitEachAndOverrideWith(e.definition,{canBeNull:!0})},t.prototype.visitRepetitionMandatory=function(e){return this.visitEach(e.definition)},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){return this.visitEach(e.definition).concat({propertyName:e.separator.name,canBeNull:!0,type:f(e.separator)})},t.prototype.visitRepetitionWithSeparator=function(e){return this.visitEachAndOverrideWith(e.definition,{canBeNull:!0}).concat({propertyName:e.separator.name,canBeNull:!0,type:f(e.separator)})},t.prototype.visitAlternation=function(e){return this.visitEachAndOverrideWith(e.definition,{canBeNull:!0})},t.prototype.visitTerminal=function(e){return[{propertyName:e.label||e.terminalType.name,canBeNull:!1,type:f(e)}]},t.prototype.visitNonTerminal=function(e){return[{propertyName:e.label||e.nonTerminalName,canBeNull:!1,type:f(e)}]},t.prototype.visitEachAndOverrideWith=function(e,t){return(0,o.default)(this.visitEach(e),(function(e){return(0,d.default)({},e,t)}))},t.prototype.visitEach=function(e){var t=this;return(0,l.default)((0,o.default)(e,(function(e){return t.visit(e)})))},t}(s.GAstVisitor);function f(e){return e instanceof s.NonTerminal?{kind:"rule",name:e.referencedRule.name}:{kind:"token"}}},93062:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSequenceProd=t.isBranchingProd=t.isOptionalProd=t.getProductionDslName=t.GAstVisitor=t.serializeProduction=t.serializeGrammar=t.Alternative=t.Alternation=t.RepetitionWithSeparator=t.RepetitionMandatoryWithSeparator=t.RepetitionMandatory=t.Repetition=t.Option=t.NonTerminal=t.Terminal=t.Rule=void 0;var n=r(94490);Object.defineProperty(t,"Rule",{enumerable:!0,get:function(){return n.Rule}}),Object.defineProperty(t,"Terminal",{enumerable:!0,get:function(){return n.Terminal}}),Object.defineProperty(t,"NonTerminal",{enumerable:!0,get:function(){return n.NonTerminal}}),Object.defineProperty(t,"Option",{enumerable:!0,get:function(){return n.Option}}),Object.defineProperty(t,"Repetition",{enumerable:!0,get:function(){return n.Repetition}}),Object.defineProperty(t,"RepetitionMandatory",{enumerable:!0,get:function(){return n.RepetitionMandatory}}),Object.defineProperty(t,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return n.RepetitionMandatoryWithSeparator}}),Object.defineProperty(t,"RepetitionWithSeparator",{enumerable:!0,get:function(){return n.RepetitionWithSeparator}}),Object.defineProperty(t,"Alternation",{enumerable:!0,get:function(){return n.Alternation}}),Object.defineProperty(t,"Alternative",{enumerable:!0,get:function(){return n.Alternative}}),Object.defineProperty(t,"serializeGrammar",{enumerable:!0,get:function(){return n.serializeGrammar}}),Object.defineProperty(t,"serializeProduction",{enumerable:!0,get:function(){return n.serializeProduction}});var i=r(62156);Object.defineProperty(t,"GAstVisitor",{enumerable:!0,get:function(){return i.GAstVisitor}});var a=r(53559);Object.defineProperty(t,"getProductionDslName",{enumerable:!0,get:function(){return a.getProductionDslName}}),Object.defineProperty(t,"isOptionalProd",{enumerable:!0,get:function(){return a.isOptionalProd}}),Object.defineProperty(t,"isBranchingProd",{enumerable:!0,get:function(){return a.isBranchingProd}}),Object.defineProperty(t,"isSequenceProd",{enumerable:!0,get:function(){return a.isSequenceProd}})},53559:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getProductionDslName=t.isBranchingProd=t.isOptionalProd=t.isSequenceProd=void 0;var i=n(r(59704)),a=n(r(711)),s=n(r(64721)),o=r(94490);t.isSequenceProd=function(e){return e instanceof o.Alternative||e instanceof o.Option||e instanceof o.Repetition||e instanceof o.RepetitionMandatory||e instanceof o.RepetitionMandatoryWithSeparator||e instanceof o.RepetitionWithSeparator||e instanceof o.Terminal||e instanceof o.Rule},t.isOptionalProd=function e(t,r){return void 0===r&&(r=[]),!!(t instanceof o.Option||t instanceof o.Repetition||t instanceof o.RepetitionWithSeparator)||(t instanceof o.Alternation?(0,i.default)(t.definition,(function(t){return e(t,r)})):!(t instanceof o.NonTerminal&&(0,s.default)(r,t))&&(t instanceof o.AbstractProduction&&(t instanceof o.NonTerminal&&r.push(t),(0,a.default)(t.definition,(function(t){return e(t,r)})))))},t.isBranchingProd=function(e){return e instanceof o.Alternation},t.getProductionDslName=function(e){if(e instanceof o.NonTerminal)return"SUBRULE";if(e instanceof o.Option)return"OPTION";if(e instanceof o.Alternation)return"OR";if(e instanceof o.RepetitionMandatory)return"AT_LEAST_ONE";if(e instanceof o.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(e instanceof o.RepetitionWithSeparator)return"MANY_SEP";if(e instanceof o.Repetition)return"MANY";if(e instanceof o.Terminal)return"CONSUME";throw Error("non exhaustive match")}},94490:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.serializeProduction=t.serializeGrammar=t.Terminal=t.Alternation=t.RepetitionWithSeparator=t.Repetition=t.RepetitionMandatoryWithSeparator=t.RepetitionMandatory=t.Option=t.Alternative=t.Rule=t.NonTerminal=t.AbstractProduction=void 0;var s=a(r(35161)),o=a(r(84486)),l=a(r(47037)),c=a(r(96347)),u=a(r(35937)),h=a(r(28583));function d(e){return t=e,(0,l.default)(t.LABEL)&&""!==t.LABEL?e.LABEL:e.name;var t}var p=function(){function e(e){this._definition=e}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),e.prototype.accept=function(e){e.visit(this),(0,o.default)(this.definition,(function(t){t.accept(e)}))},e}();t.AbstractProduction=p;var f=function(e){function t(t){var r=e.call(this,[])||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),Object.defineProperty(t.prototype,"definition",{get:function(){return void 0!==this.referencedRule?this.referencedRule.definition:[]},set:function(e){},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this)},t}(p);t.NonTerminal=f;var m=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.orgText="",(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.Rule=m;var g=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.ignoreAmbiguities=!1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.Alternative=g;var v=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.Option=v;var A=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.RepetitionMandatory=A;var y=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.RepetitionMandatoryWithSeparator=y;var x=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.Repetition=x;var b=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),t}(p);t.RepetitionWithSeparator=b;var w=function(e){function t(t){var r=e.call(this,t.definition)||this;return r.idx=1,r.ignoreAmbiguities=!1,r.hasPredicates=!1,(0,h.default)(r,(0,u.default)(t,(function(e){return void 0!==e}))),r}return i(t,e),Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t}(p);t.Alternation=w;var _=function(){function e(e){this.idx=1,(0,h.default)(this,(0,u.default)(e,(function(e){return void 0!==e})))}return e.prototype.accept=function(e){e.visit(this)},e}();function E(e){function t(e){return(0,s.default)(e,E)}if(e instanceof f){var r={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return(0,l.default)(e.label)&&(r.label=e.label),r}if(e instanceof g)return{type:"Alternative",definition:t(e.definition)};if(e instanceof v)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof A)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof y)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:E(new _({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof b)return{type:"RepetitionWithSeparator",idx:e.idx,separator:E(new _({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof x)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof w)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof _){var n={type:"Terminal",name:e.terminalType.name,label:d(e.terminalType),idx:e.idx};(0,l.default)(e.label)&&(n.terminalLabel=e.label);var i=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(n.pattern=(0,c.default)(i)?i.source:i),n}if(e instanceof m)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}t.Terminal=_,t.serializeGrammar=function(e){return(0,s.default)(e,E)},t.serializeProduction=E},62156:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GAstVisitor=void 0;var n=r(94490),i=function(){function e(){}return e.prototype.visit=function(e){var t=e;switch(t.constructor){case n.NonTerminal:return this.visitNonTerminal(t);case n.Alternative:return this.visitAlternative(t);case n.Option:return this.visitOption(t);case n.RepetitionMandatory:return this.visitRepetitionMandatory(t);case n.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case n.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case n.Repetition:return this.visitRepetition(t);case n.Alternation:return this.visitAlternation(t);case n.Terminal:return this.visitTerminal(t);case n.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},e.prototype.visitNonTerminal=function(e){},e.prototype.visitAlternative=function(e){},e.prototype.visitOption=function(e){},e.prototype.visitRepetition=function(e){},e.prototype.visitRepetitionMandatory=function(e){},e.prototype.visitRepetitionMandatoryWithSeparator=function(e){},e.prototype.visitRepetitionWithSeparator=function(e){},e.prototype.visitAlternation=function(e){},e.prototype.visitTerminal=function(e){},e.prototype.visitRule=function(e){},e}();t.GAstVisitor=i},68877:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toFastProperties=t.timer=t.PRINT_ERROR=t.PRINT_WARNING=void 0;var n=r(73017);Object.defineProperty(t,"PRINT_WARNING",{enumerable:!0,get:function(){return n.PRINT_WARNING}}),Object.defineProperty(t,"PRINT_ERROR",{enumerable:!0,get:function(){return n.PRINT_ERROR}});var i=r(99870);Object.defineProperty(t,"timer",{enumerable:!0,get:function(){return i.timer}});var a=r(55591);Object.defineProperty(t,"toFastProperties",{enumerable:!0,get:function(){return a.toFastProperties}})},73017:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PRINT_WARNING=t.PRINT_ERROR=void 0,t.PRINT_ERROR=function(e){console&&console.error&&console.error("Error: ".concat(e))},t.PRINT_WARNING=function(e){console&&console.warn&&console.warn("Warning: ".concat(e))}},99870:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timer=void 0,t.timer=function(e){var t=(new Date).getTime(),r=e();return{time:(new Date).getTime()-t,value:r}}},55591:(e,t)=>{"use strict";function r(e){function t(){}t.prototype=e;var r=new t;function n(){return typeof r.bar}return n(),n(),e}Object.defineProperty(t,"__esModule",{value:!0}),t.toFastProperties=void 0,t.toFastProperties=r},23558:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeepRatio=void 0;const n=r(70655),i=n.__importDefault(r(86010)),a=n.__importDefault(r(67294)),s=n.__importDefault(r(58147));t.KeepRatio=e=>{let{children:t,width:r,height:n,fullHeight:o=!1,fullWidth:l=!0,rootProps:c,contentProps:u,containerWidth:h,containerHeight:d,keep:p=!0}=e;const f=!o&&l,m=!f,g=100*(m?n/r:r/n);return a.default.createElement("div",{...c??{},className:(0,i.default)(s.default.root,f&&s.default.fullWidth,m&&s.default.fullHeight,p&&s.default.keep,null==c?void 0:c.className)},a.default.createElement("div",{...u??{},className:(0,i.default)(s.default.content,null==u?void 0:u.className)},t),p&&a.default.createElement("svg",{style:{pointerEvents:"none",height:m?"100%":d?`calc(${n} / ${r} * ${h})`:"auto",width:f?"100%":d?`calc(${r} / ${n} * ${d})`:"auto"},viewBox:`0 0 ${f?g:100} ${m?g:100}`}))}},26534:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(23558),t)},22226:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AccordionItem=void 0;const n=r(70655),i=n.__importDefault(r(86010)),a=n.__importStar(r(67294));r(11403);const s=r(31665),o=r(6980),l=n.__importDefault(r(73955));t.AccordionItem=e=>{let{open:t,onToggle:r,title:n,className:c,children:u,...h}=e;const d=(0,l.default)("accordion-item-"),[p,f]=(0,a.useState)(t??!1);void 0!==t&&t!==p&&f(t);return a.default.createElement("div",{className:(0,i.default)(c,"mdx-accordion-item",p&&"mdx-accordion-item--open"),...h},a.default.createElement("input",{type:"checkbox",id:d,checked:p}),a.default.createElement("div",{role:"button",className:"mdx-accordion-item__header",onClick:()=>{void 0!==t?r&&r(!p):f((e=>!e))}},a.default.createElement(s.Typography,{className:"mdx-accordion-item__title",variant:"h5",component:"label",htmlFor:d},n),a.default.createElement("div",{className:"mdx-accordion-item__icon"},p?a.default.createElement(o.IconRemove,null):a.default.createElement(o.IconAdd,null))),a.default.createElement("div",{className:"mdx-accordion-item__content-wrapper"},a.default.createElement("div",{className:"mdx-accordion-item__content"},u)))}},66169:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(22226),t)},3309:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppCard=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(25812)),s=n.__importDefault(r(86010)),o=n.__importDefault(r(67294));r(93255);t.AppCard=e=>{let{logoSrc:t,logoSrcDark:r,name:n,description:l,link:c,linkLabel:u,...h}=e;return o.default.createElement("div",{...h,className:(0,s.default)(h.className,"mdx-app-card")},(t||r)&&o.default.createElement(a.default,{sources:{dark:r??t??"",light:t??r??""},alt:"string"==typeof n?n:"",className:"mdx-app-card__logo"}),o.default.createElement(i.Typography,{component:"span",variant:"h5",className:"mdx-app-card__name"},n),o.default.createElement(i.Typography,{variant:"subtitle1",className:"mdx-app-card__description"},l),c&&o.default.createElement("a",{href:c,target:"_blank",className:"mdx-app-card__link"},o.default.createElement(i.Button,{size:"large",variant:"outlined"},o.default.createElement(i.Typography,{variant:"label1",component:"span"},u??o.default.createElement(o.default.Fragment,null,"Visit ",n)),o.default.createElement("span",null,o.default.createElement(i.PickIcon,{color:"primary"})))))}},84614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(3309),t)},12077:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AssetCard=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(86010)),s=n.__importDefault(r(67294)),o=r(6980),l=r(26534);r(77877);t.AssetCard=e=>{let{title:t,previewSrc:r,downloadable:n,forceDownload:c=!1,...u}=e;const h=n&&n.length>0;return s.default.createElement("div",{...u,className:(0,a.default)(u.className,"mdx-asset-card",h&&"mdx-asset-card--downloadable")},s.default.createElement("div",{className:"mdx-asset-card__inner"},t&&s.default.createElement(i.Typography,{component:"div",variant:"subtitle2",className:"mdx-asset-card__title"},t),s.default.createElement(l.KeepRatio,{width:16,height:9,fullWidth:!0,rootProps:{className:"mdx-asset-card__image"}},s.default.createElement("img",{src:r,alt:"string"==typeof t&&t||"asset image"}))),h&&s.default.createElement("div",{className:"mdx-asset-card__downloadables"},n.map(((e,r)=>s.default.createElement("a",{href:e.src,target:"_blank",download:!0,onClick:r=>((e,r)=>{if(!c)return;e.preventDefault();const{src:n,filename:i}=r,a=document.createElement("a");a.download=i||"string"==typeof t&&t||"",fetch(n).then((e=>e.blob())).then((e=>{const t=window.URL.createObjectURL(e);a.href=t,window.document.body.appendChild(a),a.click(),window.document.body.removeChild(a)})).catch((e=>{console.error("failed to download asset:"+e),a.href=n,a.target="_blank",window.document.body.appendChild(a),a.click(),window.document.body.removeChild(a)}))})(r,e)},s.default.createElement(i.Button,{key:r,variant:"outlined",size:"small",icon:s.default.createElement(o.IconDownload,null)},e.title))))))}},64314:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(12077),t)},93152:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Box=void 0;const n=r(70655),i=n.__importDefault(r(86010)),a=n.__importDefault(r(67294)),s=r(9259);function o(e,t,r,n){const i="string"==typeof t||"number"==typeof t?{xs:t}:t,a=[],s=e=>"number"==typeof e&&n?`${e}${n}`:`${e}`;return["xs","sm","md","lg","xl"].forEach(((t,n)=>{const o=i[t];if(o)a.push([`${e}-${t}`,s(o)]);else{var l;const i=null==(l=a[n-1])?void 0:l[1];a.push([`${e}-${t}`,i||s(r)])}})),Object.fromEntries(a)}r(56216);t.Box=e=>{let{top:t=0,bottom:r=0,className:n,style:l={},children:c,...u}=e;return a.default.createElement("div",{className:(0,i.default)(n,"mdx-box"),style:(0,s.makeStyle)({...l},{...o("mdx-box-top",t,0,"px"),...o("mdx-box-bottom",r,0,"px")}),...u},c)}},32765:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(93152),t)},40299:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallToActionButton=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(88746)),s=n.__importDefault(r(86010)),o=n.__importDefault(r(67294));r(51928);t.CallToActionButton=e=>{let{className:t,variant:r="filled",size:n="large",children:l,...c}=e;return o.default.createElement(a.default,{className:(0,s.default)("mdx-cta-button",t),...c},o.default.createElement(i.Typography,{component:"span",variant:"large"===n?"label1":"label2"},o.default.createElement(i.Button,{size:n,variant:r},l)))}},54442:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(40299),t)},40824:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallToActionSection=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(86010)),s=n.__importDefault(r(67294)),o=r(65701);r(8981);const l=r(6980);t.CallToActionSection=e=>{let{label:t,href:r,title:n,columns:c=1,description:u,list:h=[],target:d,border:p=!0,align:f="unset",className:m,children:g,variant:v="outlined",ctaPosition:A="bottom",...y}=e;const x=!!u,b=h.length>0,w=!!r,_=!n||x||w||b?n&&!u&&!b&&w?"title-button":n&&u&&2===c?"full-width":n&&u&&h.length>0?"list":"simple":"title-only",E=r&&"top"===A&&s.default.createElement(o.CallToActionButton,{target:d,href:r,className:"mdx-cta-section__link",variant:v},t);return s.default.createElement("div",{className:(0,a.default)(m,"mdx-cta-section",`mdx-cta-section--${_}`,!p&&"mdx-cta-section--no-border"),...y},s.default.createElement("div",{className:(0,a.default)("mdx-cta-section__container","unset"!==f&&`mdx-cta-section--align-${f}`)},s.default.createElement("div",{className:"mdx-cta-section__header"},s.default.createElement(i.Typography,{component:"h2",className:(0,a.default)("mdx-cta-section__title")},n),s.default.createElement("div",{className:"mdx-cta-section__header__desktop-button"},E)),u&&s.default.createElement(i.Typography,{component:"h3",className:"mdx-cta-section__description"},u),s.default.createElement("div",{className:"mdx-cta-section__header__mobile-button"},E),r&&"bottom"===A&&s.default.createElement(o.CallToActionButton,{target:d,href:r,className:"mdx-cta-section__link",variant:v},t)),h.length>0&&s.default.createElement("div",{className:(0,a.default)("mdx-cta-section__list",!p&&"mdx-cta-section--no-border")},h.map(((e,t)=>{const r=s.default.createElement("div",{className:"mdx-cta-section__list-item",key:t},s.default.createElement("a",{className:"mdx-cta-section__list-item-link",href:null==e?void 0:e.href,target:e.target},s.default.createElement(i.Typography,{component:"div",variant:"body2",className:"mdx-cta-section__item-title"},e.title,s.default.createElement(l.IconExternalLink,{size:"m"}))),s.default.createElement(i.Typography,{variant:"h4",component:"p",className:"mdx-cta-section__item-description"},e.description));return e.href?s.default.createElement("a",{href:e.href,target:"_blank"},r):r}))))}},78256:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(40824),t)},63906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DocMetadata=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(88746)),s=n.__importDefault(r(86010)),o=n.__importDefault(r(67294)),l=r(38840);r(46774);const c=r(98906);t.DocMetadata=e=>{let{className:t,children:r,...n}=e;const{date:u,authors:h}=(0,c.useDocMetadata)(),{content:{authorPage:d}={}}=(0,l.useDocThemeOptions)();return o.default.createElement("div",{className:(0,s.default)(t,"mdx-doc-metadata"),...n},u&&o.default.createElement(i.Typography,{variant:"body2"},u),h&&h.length>0&&o.default.createElement(o.default.Fragment,null,o.default.createElement(i.Typography,{variant:"body2"},"by"," ",h.map(((e,t)=>o.default.createElement(o.default.Fragment,{key:e.key},d?o.default.createElement(a.default,{to:`author/${e.key}`},e.name):e.name,t{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(63906),t)},98906:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocMetadata=void 0;const n=r(70655),i=r(18279),a=r(38840),s=n.__importDefault(r(99486));t.useDocMetadata=()=>{const e=(0,a.useDocThemeOptions)(),{content:{authors:t=[]}={}}=e,{frontMatter:r={}}=(0,i.useDoc)(),{author:n=[],date:o}=r,l=(Array.isArray(n)?n:[n]).map((e=>t.find((t=>e===t.key)))).filter((e=>!!e));return{date:o?(0,s.default)(new Date(o),"MMM d yyyy"):"",authors:l}}},59669:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventAbout=void 0;const n=r(70655).__importDefault(r(67294));r(6420);const i=r(31665);t.EventAbout=e=>{let{children:t}=e;return n.default.createElement("div",{className:"mdx-event-about__container"},n.default.createElement(i.Typography,{variant:"h2",component:"p",className:"mdx-event-about__title"},"About"),n.default.createElement(i.Typography,{variant:"body1"},t))}},92302:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(59669),t)},12610:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventBanner=void 0;const n=r(70655),i=n.__importDefault(r(25812)),a=n.__importDefault(r(67294));r(34822);t.EventBanner=e=>{let{src:t}=e;return a.default.createElement(i.default,{sources:{dark:t,light:t},alt:"event thumbnail",className:"mdx-event-banner__thumbnail"})}},70136:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(12610),t)},69587:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventCTA=void 0;const n=r(70655),i=n.__importDefault(r(67294));r(52399);const a=r(31665),s=n.__importDefault(r(88746)),o=r(6980);t.EventCTA=e=>{let{title:t,label:r,link:n,linkProps:l}=e;return i.default.createElement("div",{className:"mdx-event-cta__container"},t&&i.default.createElement(a.Typography,{variant:"h2",component:"h2",className:"mdx-event-cta__title"},t),i.default.createElement(s.default,{to:n,...l},i.default.createElement(a.Button,{className:"mdx-event-cta__button"},i.default.createElement(a.Typography,{variant:"body1"},r),i.default.createElement(o.IconExternalLink,null))))}},26498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(69587),t)},7742:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventCard=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(25812)),s=n.__importDefault(r(86010)),o=n.__importDefault(r(67294));r(95497);t.EventCard=e=>{let{thumbnail:t,title:r,date:n,location:l,target:c="_self",...u}=e;return o.default.createElement("a",{target:c,...u,className:(0,s.default)(u.className,"mdx-event-card")},o.default.createElement(a.default,{sources:{dark:t,light:t},alt:r??"event thumbnail",className:"mdx-event-card__thumbnail"}),o.default.createElement(i.Typography,{component:"h5",variant:"subtitle1",className:"mdx-event-card__title"},r),o.default.createElement("div",{className:"mdx-event-card__row"},o.default.createElement("div",{className:"mdx-event-card__info"},o.default.createElement(i.Typography,{className:"mdx-event-card__label",variant:"body3"},"Date"),o.default.createElement(i.Typography,{variant:"body3"},n)),o.default.createElement("div",{className:"mdx-event-card__info"},o.default.createElement(i.Typography,{className:"mdx-event-card__label",variant:"body3"},"Location"),o.default.createElement(i.Typography,{variant:"body3"},l))))}},85535:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(7742),t)},2310:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventCardList=t.EventStatus=void 0;const n=r(70655).__importStar(r(67294));r(90980);const i=r(31665),a=r(65701),s=r(31665);var o;!function(e){e.UPCOMING="Upcoming",e.PAST="Past"}(o=t.EventStatus||(t.EventStatus={}));t.EventCardList=e=>{let{upcoming:t,past:r,...l}=e;const[c,u]=(0,n.useState)(o.UPCOMING),h=c===o.UPCOMING?t:r,[d,p]=(0,n.useState)((null==h?void 0:h.length)>8),[f,m]=(0,n.useState)(8);return n.default.createElement("div",{className:"mdx-event-card-list__container",...l},n.default.createElement(s.Tabs,{activeTab:c,onChange:e=>{u(e),m(8),p((null==h?void 0:h.length)>8)},className:"mdx-event-card-list__tabs"},n.default.createElement(s.TabItem,{key:"upcoming",name:"Upcoming"},"Upcoming"),n.default.createElement(s.TabItem,{key:"past",name:"Past"},"Past")),n.default.createElement("div",null,n.default.createElement(a.Box,{top:{xs:80,sm:96},bottom:80},n.default.createElement(a.Grid,{xs:{cols:1,gap:"80px 16px"},md:{cols:4}},h.slice(0,f).map(((e,t)=>n.default.createElement(a.Grid.Item,{xs:1,key:t},n.default.createElement(a.EventCard,{...e})))),0===h.length?n.default.createElement(i.Typography,null,"No events found."):null)),d&&n.default.createElement(i.Button,{className:"mdx-event-card-list__button",onClick:()=>{m((e=>e+8)),f+6>=(null==h?void 0:h.length)&&p(!1)},size:"large"},"See more")))}},42174:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(2310),t)},30862:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventHeader=void 0;const n=r(70655).__importDefault(r(67294));r(44429);const i=r(31665);t.EventHeader=e=>{let{title:t,description:r}=e;return n.default.createElement("div",{className:"mdx-event-header__container"},n.default.createElement(i.Typography,{variant:"h1",component:"h1",className:"mdx-event-header__label"},t),n.default.createElement(i.Typography,{variant:"subtitle1",className:"mdx-event-header__content"},r))}},45320:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(30862),t)},74350:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventInfo=void 0;const n=r(70655).__importDefault(r(67294));r(94318);const i=r(31665);t.EventInfo=e=>{let{label:t,content:r}=e;return n.default.createElement("div",{className:"mdx-event-info__container"},n.default.createElement(i.Typography,{variant:"body2",className:"mdx-event-info__label"},t),n.default.createElement(i.Typography,{variant:"body1",className:"mdx-event-info__content"},r))}},94030:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(74350),t)},46450:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventProfile=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(25812)),s=n.__importDefault(r(67294));r(6465);const o=r(6980);t.EventProfile=e=>{let{image:t,name:r,role:n,email:l,linkedin:c,...u}=e;return s.default.createElement("div",{...u,className:"mdx-event-profile"},s.default.createElement(a.default,{sources:{dark:t,light:t},alt:t??"event profile",className:"mdx-event-profile__image"}),s.default.createElement("div",{className:"mdx-event-profile__info"},s.default.createElement(i.Typography,{component:"p",variant:"subtitle1",className:"mdx-event-profile__title"},r),s.default.createElement(i.Typography,{variant:"body2",className:"mdx-event-profile__role"},n),s.default.createElement("div",{className:"mdx-event-profile__social"},l&&s.default.createElement("a",{href:`mailto:${l}`,target:"_blank",rel:"noopener noreferrer"},s.default.createElement(o.IconEmail,null)),c&&s.default.createElement("a",{href:c,target:"_blank",rel:"noopener noreferrer"},s.default.createElement(o.IconLinkedin,null)))))}},7472:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(46450),t)},49310:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventProfileList=void 0;const n=r(70655).__importDefault(r(67294));r(54627);const i=r(31665),a=r(65701);t.EventProfileList=e=>{let{title:t,description:r,data:s}=e;return n.default.createElement("div",{className:"mdx-event-profile-list__container"},t&&n.default.createElement(i.Typography,{variant:"h2",component:"h2",className:"mdx-event-profile-list__title"},t),r&&n.default.createElement(i.Typography,{variant:"subtitle1"},r),n.default.createElement(a.Box,{top:40},n.default.createElement(a.Grid,{xs:{cols:1,gap:"16px"},md:{cols:3}},s.map(((e,t)=>n.default.createElement(a.Grid.Item,{xs:1,key:t},n.default.createElement(a.EventProfile,{...e})))))))}},24812:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(49310),t)},58135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExternalResourceCard=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(25812)),s=n.__importDefault(r(86010)),o=n.__importDefault(r(67294)),l=r(6980);r(84238);const c=r(26534);t.ExternalResourceCard=e=>{let{title:t,logoSrc:r,logoSrcDark:n,description:u,previewSrc:h,previewSrcDark:d,...p}=e;const f=!(!h&&!d);return o.default.createElement("a",{target:"_blank",...p,className:(0,s.default)(p.className,"mdx-erc",f&&"mdx-erc--with-preview")},f&&o.default.createElement(c.KeepRatio,{width:16,height:9,fullWidth:!0},o.default.createElement(a.default,{sources:{dark:d??h??"",light:h??d??""},alt:"string"==typeof t&&t||"preview image",className:"mdx-erc__preview-image"})),o.default.createElement("div",{className:"mdx-erc__inner"},(r||n)&&o.default.createElement(a.default,{sources:{dark:n??r??"",light:r??n??""},alt:"string"==typeof t&&t||"logo",className:"mdx-erc__logo"}),o.default.createElement(i.Typography,{variant:"body1",component:"div",className:"mdx-erc__title"},t),u&&o.default.createElement(i.Typography,{variant:"label2",component:"div",className:"mdx-erc__description"},u)),o.default.createElement("div",{className:"mdx-erc__icon"},o.default.createElement(l.IconExternalLink,{className:"mdx-erc__external-link"})))}},24084:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(58135),t)},24646:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FeatureList=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(86010)),s=n.__importDefault(r(67294));r(69774);t.FeatureList=e=>{let{title:t="Features",alignment:r="bottom",features:n=[],className:o,ctaPosition:l="bottom",indexStyle:c="circle",borderStyle:u="solid",children:h,...d}=e;return s.default.createElement("div",{className:(0,a.default)(o,"mdx-feature-list",`mdx-feature-list--${r}-aligned`,`mdx-feature-list--cta-${l}`,"none"===u&&"mdx-feature-list--border-none"),...d},s.default.createElement("div",{className:"mdx-feature-list__header"},s.default.createElement(i.Typography,{variant:"h2",component:"h2",className:"mdx-feature-list__title"},t),h&&"top"===l&&s.default.createElement("div",{className:"mdx-feature-list__extra"},h)),s.default.createElement("div",{className:"mdx-feature-list__list"},n.map(((e,t)=>s.default.createElement("div",{key:t,className:(0,a.default)("mdx-feature-list__feature","none"===u&&"mdx-feature-list--border-none")},s.default.createElement("div",{className:"mdx-feature-list__feature-inner"},"circle"===c?s.default.createElement(i.Typography,{variant:"subtitle1",component:"div",className:(0,a.default)("mdx-feature-list__feature-index--circle")},t+1):s.default.createElement(i.Typography,{variant:"subtitle1",component:"div",className:(0,a.default)("mdx-feature-list__feature-index--number")},"[",function(e,t){for(e=e.toString();e.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(24646),t)},51499:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GithubChallenges=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(67294)),s=r(696),o=r(79527),l=e=>{let{message:t}=e;return a.default.createElement(a.default.Fragment,null,a.default.createElement(i.Typography,{variant:"h1",className:"mdx-ghc__header"},"Open challenges"),!!t&&a.default.createElement(i.Typography,{variant:"body1"},t))};t.GithubChallenges=e=>{let{challengesData:t,useDummyData:r,subheaderText:n,filterByName:c,...u}=e,h=r?[s.dummyGithubIssue]:(e=>{let t=[];return Object.keys(e).forEach((r=>{if(!isNaN(Number(r))){const n=Object.values(e[r])[0];Array.isArray(n)&&(t=t.concat(n))}})),t})(t);if(!h||(d=h,!Array.isArray(d)||!d.length))return a.default.createElement(l,{message:"No challenges to show"});var d;if(c)try{var p;const e=new RegExp(c,"i");h=null==(p=h)?void 0:p.filter((t=>e.test(t.title)))}catch(f){console.error("Invalid regex pattern:",f)}return a.default.createElement("div",{...u},a.default.createElement(l,null),!!n&&a.default.createElement(i.Typography,{variant:"body1",className:"mdx-ghc-subheader-text",component:"div"},n),h.map((e=>a.default.createElement(o.SingleGithubChallenge,{key:e.id,issue:e}))))}},79527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SingleGithubChallenge=void 0;const n=r(70655),i=r(31665),a=n.__importDefault(r(67294)),s=r(6980);r(58918);const o=n.__importDefault(r(88746));function l(e,t){void 0===t&&(t=24);const r=new URL(e),n=new URLSearchParams(r.search);return n.set("s",t.toString()),r.search=Array.from(n.entries()).map((e=>{let[t,r]=e;return`${t}=${r}`})).join("&"),r.toString()}t.SingleGithubChallenge=e=>{let{issue:t}=e;const r=(e=>{const t=new Map;return t.set(e.user.login,{name:e.user.login,avatarUrl:e.user.avatarUrl}),e.assignees.forEach((e=>{t.set(e.login,{name:e.login,avatarUrl:e.avatarUrl})})),e.comments.forEach((e=>{t.set(e.author.login,{name:e.author.login,avatarUrl:e.author.avatarUrl})})),Array.from(t.values())})(t),n=(e=>{const t=e.projects.map((e=>e.name));return 0===t.length?"":Array.from(new Set(t)).join(", ")})(t),c=""!==n,u=!!t.milestone,h=[];return c&&h.push(a.default.createElement(a.default.Fragment,null,a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__label"},n.includes(", ")?"Projects":"Project"),a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__project-name"},n))),u&&h.push(a.default.createElement(a.default.Fragment,null,a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__label"},"Milestone"),a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__milestone-text"},t.milestone))),a.default.createElement("div",{className:"mdx-ghc__container"},a.default.createElement(o.default,{href:t.url,className:"mdx-ghc__issue-title-link"},a.default.createElement(i.Typography,{variant:"h5",className:"mdx-ghc__issue-title"},t.title)),a.default.createElement("div",{className:"mdx-ghc__challenge-labels"},t.labels.map(((e,t)=>a.default.createElement(i.Typography,{variant:"body3",key:t,className:"mdx-ghc__challenge-label"},e)))),a.default.createElement("div",{className:"mdx-ghc__issue-content-grid"},a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__label"},"Participants"),a.default.createElement("div",{className:"mdx-ghc__participant-photo-container"},a.default.createElement(i.Typography,{variant:"body3",className:"mdx-ghc__comment-count",component:"div"},r.length),r.map(((e,t)=>a.default.createElement("img",{key:t,className:"mdx-ghc__participant-photo",src:l(e.avatarUrl),alt:e.name})))),h.map(((e,t)=>a.default.createElement(a.default.Fragment,{key:t},e)))),a.default.createElement(o.default,{href:t.url,className:"mdx-ghc__view-on-github-link"},a.default.createElement(i.Button,{className:"mdx-ghc__view-on-github-button",icon:a.default.createElement(s.IconExternalLink,null)},"View on GitHub")))}},696:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dummyGithubIssue=void 0,t.dummyGithubIssue={id:"12345",title:"Bug in pagination",body:"When navigating to the second page, the first item repeats.",url:"https://github.com/user/repo/issues/12345",user:{login:"user123",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"},labels:["bug","frontend"],commentCount:3,comments:[{id:"c1",author:{login:"alice123",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"},body:"I have also noticed this issue. Working on a fix now.",createdAt:"2021-01-01T12:00:00Z"},{id:"c2",author:{login:"bob456",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"},body:"Any updates on this?",createdAt:"2021-01-02T15:30:00Z"},{id:"c3",author:{login:"jaquim",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"},body:"I like turtles.",createdAt:"2021-01-03T09:45:00Z"}],assignees:[{login:"alice123",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"},{login:"bob456",avatarUrl:"https://avatars.githubusercontent.com/u/8811422?v=4"}],milestone:"v1.0.0",created_at:"2020-12-31T11:00:00Z",updated_at:"2021-01-04T13:00:00Z",projects:[{name:"Awesome Project"}]}},47513:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});r(70655).__exportStar(r(51499),t)},7859:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Grid=void 0;const n=r(70655),i=r(31665),a=r(70917),s=n.__importDefault(r(77366)),o=n.__importDefault(r(86010)),l=n.__importStar(r(67294)),c=r(59567),u=r(3796),h=r(18031);t.Grid=e=>{let{actions:t,leftLabel:r="",rightLabel:n="",spacingButtons:i=!1,children:a,...s}=e;const c=(0,l.useRef)(null);return l.default.createElement(d,{...s,className:(0,o.default)(s.className,"mdx-grid")},l.default.createElement("div",{className:"mdx-grid__actions"},t,l.default.createElement(u.ScrollButtons,{containerRef:c,className:"mdx-grid__scroll",leftLabel:r,rightLabel:n,spacing:i?"spaced":"grouped"})),l.default.createElement("div",{ref:c,className:(0,o.default)("mdx-grid__content","hidden-scrollbar")},a))},t.Grid.Item=h.GridItem;const d=s.default.div` width: 100%; @@ -70,4 +70,4 @@ ${a} { ${e} } - `}}}t.LsdUtils=a,t.lsdUtils=new a},9259:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeStyle=void 0;t.makeStyle=function(e,t){return void 0===t&&(t={}),{...e,...Object.entries(t).reduce(((e,t)=>{let[r,n]=t;return{...e,[`--${r}`]:n}}),{})}}},24052:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.calcHeroInfoMb=t.isMobile=t.generateTextShadow=t.isTouchDevice=t.calcScrollThreshold=t.mapFloat=t.random=void 0;t.random=(e,t)=>Math.random()*(t-e)+e;t.mapFloat=(e,t,r,n,i)=>(e-t)*(i-n)/(r-t)+n;t.calcScrollThreshold=()=>.4*window.innerHeight;t.isTouchDevice=()=>"undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints&&navigator.msMaxTouchPoints>0);t.generateTextShadow=e=>{let t="";for(let r=0;r"undefined"!=typeof window&&window.innerWidth<997;t.calcHeroInfoMb=e=>(0,t.mapFloat)(scrollY,0,(0,t.calcScrollThreshold)(),0,100)},3538:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useNewsletterApi=void 0;const n=r(67294);t.useNewsletterApi=()=>{const[e,t]=(0,n.useState)(!1),[r,i]=(0,n.useState)({error:!1,message:""});return{busy:e,error:r.error,message:r.message,subscribe:async(e,r,n)=>{t(!0);try{const t=await fetch("https://odoo.logos.co/website_mass_mailing/subscribe2",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",method:"call",params:{name:n,value:r,list_id:e,subscription_type:"email"}})}),a=await t.json();i({error:!1,message:a.result.message})}catch(a){i({error:!0,message:"Something went wrong!"})}t(!1)}}}},40213:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useScrollY=void 0;const n=r(21457),i=r(67294);t.useScrollY=()=>{const[e,t]=(0,i.useState)(0);return(0,n.useWindowEventListener)("scroll",(()=>{t(window.scrollY)})),e}},77872:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(16550),i=r(67294);const a=()=>{const e=(0,n.TH)();return(0,i.useEffect)((()=>{const t=document.createElement("script");return t.innerHTML=`(function(f, a, t, h, o, m){\n\ta[h]=a[h]||function(){\n\t\t(a[h].q=a[h].q||[]).push(arguments)\n\t};\n\to=f.createElement('script'),\n\tm=f.getElementsByTagName('script')[0];\n\to.async=1; o.src=t; o.id='fathom-script';\n\tm.parentNode.insertBefore(o,m)\n})(document, window, '//fathom.bi.status.im/tracker.js', 'fathom');\nfathom('set', 'siteId', '${(e=>{switch(e.replace(/\/$/,"")){case"/secure-ethereum-scalability":return"MMVYR";case"/secure-cloudless-storage":return"UPXGR";case"/secure-video-storage":return"CHVAV";case"/persistent-file-sharing":return"NBVHN";case"/reliable-data-backup":return"JCUAD";case"/decentralised-content-distribution":return"RLBTD";case"/secure-cloudless-storage":return"PIGBE";case"/censorship-resistant-streaming":return"EXYRI";case"/secure-custodianless-data":return"YQKOR";case"/decentralised-database":return"YSSAK";case"/secure-data-collaboration":return"YXVJE";case"/data-durability-engine":return"SXWAH";case"/durability-focused-storage":return"HKOPS";case"/efficient-decentralised-storage":return"RVMAH";case"/future-of-dsns":return"JRBPJ";case"/decentralised-storage-marketplace":return"HJLUS";case"/cryptographic-data-security":return"KIGPW";case"/join-codex-community":return"AMQOU";default:return""}})(e.pathname)}');\nfathom('trackPageview');\n\nfunction getQueryParam(param) {\n let params = new URLSearchParams(window.location.search);\n return params.get(param);\n}\n\nlet utmSource = getQueryParam('utm_source');\n\nlet currentUrl = window.location.href;\n\nif (currentUrl.endsWith('/')) {\n currentUrl = currentUrl.slice(0, -1);\n}\n\nconst virtualPath = \`\${currentUrl}_form_submission_\${utmSource}\` \n\nconst form = document.querySelector('.mdx-input-cta-section__form');\n\nif (utmSource) {\n // Log UTM source and current URL\n console.log(\`utm - \${utmSource}\`);\n console.log(\`current url - \${currentUrl}\`);\n\n // Needs a paid plan\n // fathom.trackEvent(\`form submission - \${utmSource}\`);\n \n // listen for form submission\n if (form) {\n form.addEventListener('submit', function(e) {\n e.preventDefault();\n\n console.log('form submitted');\n console.log(\`virtualPath - \${virtualPath}\`);\n\n // Log form submission\n fathom.trackPageview({\n url: virtualPath,\n });\n });\n }\n}\n`,document.body.appendChild(t),()=>{document.body.removeChild(t)}}),[]),i.createElement(i.Fragment,null)}},67124:(e,t,r)=>{"use strict";var n=r(65701);r.o(n,"AccordionItem")&&r.d(t,{AccordionItem:function(){return n.AccordionItem}}),r.o(n,"Box")&&r.d(t,{Box:function(){return n.Box}}),r.o(n,"CallToActionSection")&&r.d(t,{CallToActionSection:function(){return n.CallToActionSection}}),r.o(n,"Grid")&&r.d(t,{Grid:function(){return n.Grid}}),r.o(n,"Hero")&&r.d(t,{Hero:function(){return n.Hero}}),r.o(n,"HeroAction")&&r.d(t,{HeroAction:function(){return n.HeroAction}}),r.o(n,"HeroActions")&&r.d(t,{HeroActions:function(){return n.HeroActions}}),r.o(n,"HeroAsset")&&r.d(t,{HeroAsset:function(){return n.HeroAsset}}),r.o(n,"HeroDescription")&&r.d(t,{HeroDescription:function(){return n.HeroDescription}}),r.o(n,"HeroInfo")&&r.d(t,{HeroInfo:function(){return n.HeroInfo}}),r.o(n,"HeroTitle")&&r.d(t,{HeroTitle:function(){return n.HeroTitle}}),r.o(n,"InputCTASection")&&r.d(t,{InputCTASection:function(){return n.InputCTASection}}),r.o(n,"JobsPerDepartment")&&r.d(t,{JobsPerDepartment:function(){return n.JobsPerDepartment}}),r.o(n,"NumbersView")&&r.d(t,{NumbersView:function(){return n.NumbersView}}),r.o(n,"ProfileCard")&&r.d(t,{ProfileCard:function(){return n.ProfileCard}}),r.o(n,"Roadmap")&&r.d(t,{Roadmap:function(){return n.Roadmap}}),r.o(n,"SectionHeader")&&r.d(t,{SectionHeader:function(){return n.SectionHeader}}),r.o(n,"ShowcaseCard")&&r.d(t,{ShowcaseCard:function(){return n.ShowcaseCard}}),r.o(n,"SocialCard")&&r.d(t,{SocialCard:function(){return n.SocialCard}}),r.o(n,"TableView")&&r.d(t,{TableView:function(){return n.TableView}})},77366:(e,t,r)=>{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;tv});var i=r(67294),a=r(45042),s=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,o=(0,a.Z)((function(e){return s.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=r(80123),c=r(70444),u=r(48137),h=r(27278),d=o,p=function(e){return"theme"!==e},f=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?d:p},m=function(e,t,r){var n;if(t){var i=t.shouldForwardProp;n=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},g=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.hC)(t,r,n),(0,h.L)((function(){return(0,c.My)(t,r,n)})),null},v=function e(t,r){var a,s,o=t.__emotion_real===t,h=o&&t.__emotion_base||t;void 0!==r&&(a=r.label,s=r.target);var d=m(t,r,o),p=d||f(h),v=!p("as");return function(){var A=arguments,y=o&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&y.push("label:"+a+";"),null==A[0]||void 0===A[0].raw)y.push.apply(y,A);else{0,y.push(A[0][0]);for(var x=A.length,b=1;b{"use strict";r.d(t,{Zo:()=>u,kt:()=>p});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=c(r),p=i,f=d["".concat(l,".").concat(p)]||d[p]||h[p]||a;return r?n.createElement(f,s(s({ref:t},u),{},{components:r})):n.createElement(f,s({ref:t},u))}));function p(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,s=new Array(a);s[0]=d;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:i,s[1]=o;for(var c=2;c{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;tmh,AdaptiveEvents:()=>gh,ArcballControls:()=>vs,Backdrop:()=>cu,BakeShadows:()=>ch,Billboard:()=>yi,Bounds:()=>jc,Box:()=>bc,CameraShake:()=>Yc,Center:()=>Vc,Circle:()=>wc,Clone:()=>ns,Cloud:()=>wu,ComputedAttribute:()=>$a,Cone:()=>_c,ContactShadows:()=>au,CubeCamera:()=>ss,CubicBezierLine:()=>Mi,CurveModifier:()=>oc,CycleRaycast:()=>A,Cylinder:()=>Ec,Detailed:()=>oh,DeviceOrientationControls:()=>ls,Dodecahedron:()=>Dc,Edges:()=>Va,Effects:()=>Da,Environment:()=>$c,EnvironmentCube:()=>ru,EnvironmentMap:()=>eu,EnvironmentPortal:()=>tu,Extrude:()=>Uc,FirstPersonControls:()=>Ss,Float:()=>qc,FlyControls:()=>us,GizmoHelper:()=>Us,GizmoViewcube:()=>Ks,GizmoViewport:()=>$s,GradientTexture:()=>Ua,Html:()=>v,Icosahedron:()=>Fc,Image:()=>za,Instance:()=>Zu,Instances:()=>$u,IsObject:()=>ka,Lathe:()=>Nc,Lightformer:()=>mu,Line:()=>_i,Loader:()=>E,MapControls:()=>ds,Merged:()=>eh,MeshDistortMaterial:()=>cc,MeshReflectorMaterial:()=>mc,MeshWobbleMaterial:()=>hc,Octahedron:()=>Lc,OrbitControls:()=>ps,OrthographicCamera:()=>is,PerspectiveCamera:()=>as,Plane:()=>Mc,Point:()=>Uu,PointMaterial:()=>vc,PointMaterialImpl:()=>gc,PointerLockControls:()=>_s,Points:()=>ku,PointsBuffer:()=>Nu,Polyhedron:()=>Pc,PositionalAudio:()=>Ti,Preload:()=>lh,PresentationControls:()=>pi,QuadraticBezierLine:()=>Si,Reflector:()=>hu,Ring:()=>Rc,RoundedBox:()=>Oc,Sampler:()=>Za,ScreenQuad:()=>zc,Scroll:()=>P,ScrollControls:()=>I,Segment:()=>sh,Segments:()=>ih,Select:()=>vi,Shadow:()=>uu,Sky:()=>Au,Sphere:()=>Sc,SpotLight:()=>fu,Stage:()=>ou,Stars:()=>bu,Stats:()=>go,Tetrahedron:()=>Bc,Text:()=>Ia,Torus:()=>Cc,TorusKnot:()=>Ic,TrackballControls:()=>ms,Trail:()=>Ka,TransformControls:()=>bs,Tube:()=>Tc,calcPosFromAngles:()=>vu,isWebGL2Available:()=>La,meshBounds:()=>fh,shaderMaterial:()=>Na,softShadows:()=>yc,useAnimations:()=>nc,useAspect:()=>yo,useBVH:()=>tc,useBounds:()=>Wc,useBoxProjectedEnv:()=>ac,useCamera:()=>Ms,useContextBridge:()=>rc,useCubeTexture:()=>eo,useCursor:()=>y,useDepthBuffer:()=>Ao,useDetectGPU:()=>Ro,useFBO:()=>vo,useFBX:()=>ro,useGLTF:()=>lo,useGizmoContext:()=>Cs,useHelper:()=>Po,useIntersect:()=>ic,useKTX2:()=>ho,useMatcapTexture:()=>_u,useNormalTexture:()=>Eu,useProgress:()=>w,useScroll:()=>C,useSelect:()=>Ai,useTexture:()=>Oa,useTrail:()=>qa});var i=r(67294),a=r(73935),s=r(99477),o=r(64232);const l=new s.Vector3,c=new s.Vector3,u=new s.Vector3;function h(e,t,r){const n=l.setFromMatrixPosition(e.matrixWorld);n.project(t);const i=r.width/2,a=r.height/2;return[n.x*i+i,-n.y*a+a]}const d=e=>Math.abs(e)<1e-10?0:e;function p(e,t,r=""){let n="matrix3d(";for(let i=0;16!==i;i++)n+=d(t[i]*e.elements[i])+(15!==i?",":")");return r+n}const f=(m=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>p(e,m));var m;const g=(e,t)=>p(e,(e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1])(t),"translate(-50%,-50%)"),v=i.forwardRef((({children:e,eps:t=.001,style:r,className:p,prepend:m,center:v,fullscreen:A,portal:y,distanceFactor:x,sprite:b=!1,transform:w=!1,occlude:_,onOcclude:E,zIndexRange:S=[16777271,0],calculatePosition:M=h,as:T="div",wrapperClass:C,pointerEvents:I="auto",...B},R)=>{var P;const F=(0,o.useThree)((({gl:e})=>e)),L=(0,o.useThree)((({camera:e})=>e)),D=(0,o.useThree)((({scene:e})=>e)),U=(0,o.useThree)((({size:e})=>e)),N=(0,o.useThree)((({raycaster:e})=>e)),[k]=i.useState((()=>document.createElement(T))),O=i.useRef(null),G=i.useRef(0),z=i.useRef([0,0]),V=i.useRef(null),H=i.useRef(null),Q=null!==(P=null==y?void 0:y.current)&&void 0!==P?P:F.domElement.parentNode;i.useEffect((()=>{if(O.current){if(D.updateMatrixWorld(),w)k.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const e=M(O.current,L,U);k.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return Q&&(m?Q.prepend(k):Q.appendChild(k)),()=>{Q&&Q.removeChild(k),a.unmountComponentAtNode(k)}}}),[Q,w]),i.useLayoutEffect((()=>{C&&(k.className=C)}),[C]);const j=i.useMemo((()=>w?{position:"absolute",top:0,left:0,width:U.width,height:U.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:v?"translate3d(-50%,-50%,0)":"none",...A&&{top:-U.height/2,left:-U.width/2,width:U.width,height:U.height},...r}),[r,v,A,U,w]),W=i.useMemo((()=>({position:"absolute",pointerEvents:I})),[I]);i.useLayoutEffect((()=>{w?a.render(i.createElement("div",{ref:V,style:j},i.createElement("div",{ref:H,style:W},i.createElement("div",{ref:R,className:p,style:r,children:e}))),k):a.render(i.createElement("div",{ref:R,style:j,className:p,children:e}),k)}));const X=i.useRef(!0);return(0,o.useFrame)((()=>{if(O.current){L.updateMatrixWorld(),O.current.updateWorldMatrix(!0,!1);const e=w?z.current:M(O.current,L,U);if(w||Math.abs(G.current-L.zoom)>t||Math.abs(z.current[0]-e[0])>t||Math.abs(z.current[1]-e[1])>t){const t=function(e,t){const r=l.setFromMatrixPosition(e.matrixWorld),n=c.setFromMatrixPosition(t.matrixWorld),i=r.sub(n),a=t.getWorldDirection(u);return i.angleTo(a)>Math.PI/2}(O.current,L);let r=!1;"boolean"==typeof _?!0===_&&(r=[D]):Array.isArray(_)&&(r=_.map((e=>e.current)));const n=X.current;if(r){const e=function(e,t,r,n){const i=l.setFromMatrixPosition(e.matrixWorld),a=i.clone();a.project(t),r.setFromCamera(a,t);const s=r.intersectObjects(n,!0);if(s.length){const e=s[0].distance;return i.distanceTo(r.ray.origin)e.raycaster)),c=(0,o.useThree)((e=>e.get)),u=(0,o.useThree)((e=>e.gl));return i.useEffect((()=>{var i;let o,h=[];const d=l.filter,p=null!==(i=null==t?void 0:t.current)&&void 0!==i?i:u.domElement.parentNode,f=()=>p&&e&&e(h,Math.round(s.current)%h.length);l.filter=(e,t)=>{let r=[...e];r.length===h.length&&h.every((e=>r.map((e=>e.object.uuid)).includes(e.object.uuid)))||(s.current=0,h=r,f()),d&&(r=d(r,t));for(let n=0;n{var t,r;s.current=e(s.current),null==(t=c().events.handlers)||t.onPointerCancel(void 0),null==(r=c().events.handlers)||r.onPointerMove(o),f()},g=e=>{(e.keyCode||e.which===a)&&(r&&e.preventDefault(),h.length>1&&m((e=>e+1)))},v=e=>{r&&e.preventDefault();let t=0;e||(e=window.event),e.wheelDelta?t=e.wheelDelta/120:e.detail&&(t=-e.detail/3),h.length>1&&m((e=>Math.abs(e-t)))},A=e=>o=e;return document.addEventListener("pointermove",A,{passive:!0}),n&&document.addEventListener("wheel",v),void 0!==a&&document.addEventListener("keydown",g),()=>{l.filter=d,void 0!==a&&document.removeEventListener("keydown",g),n&&document.removeEventListener("wheel",v),document.removeEventListener("pointermove",A)}}),[u,c,l,r,n,a]),null}function y(e,t="pointer",r="auto"){i.useEffect((()=>{if(e)return document.body.style.cursor=t,()=>{document.body.style.cursor=r}}),[e])}var x=r(14671);let b=0;const w=(0,x.Z)((e=>(s.DefaultLoadingManager.onStart=(t,r,n)=>{e({active:!0,item:t,loaded:r,total:n,progress:(r-b)/(n-b)*100})},s.DefaultLoadingManager.onLoad=()=>{e({active:!1})},s.DefaultLoadingManager.onError=t=>e((e=>({errors:[...e.errors,t]}))),s.DefaultLoadingManager.onProgress=(t,r,n)=>{r===n&&(b=n),e({active:!0,item:t,loaded:r,total:n,progress:(r-b)/(n-b)*100||100})},{errors:[],active:!1,progress:0,item:"",loaded:0,total:0}))),_=e=>`Loading ${e.toFixed(2)}%`;function E({containerStyles:e,innerStyles:t,barStyles:r,dataStyles:n,dataInterpolation:a=_,initialState:s=(e=>e)}){const{active:o,progress:l}=w(),c=i.useRef(0),u=i.useRef(0),h=i.useRef(null),[d,p]=i.useState(s(o));i.useEffect((()=>{let e;return o!==d&&(e=setTimeout((()=>p(o)),300)),()=>clearTimeout(e)}),[d,o]);const f=i.useCallback((()=>{h.current&&(c.current+=(l-c.current)/2,(c.current>.95*l||100===l)&&(c.current=l),h.current.innerText=a(c.current),c.current(f(),()=>cancelAnimationFrame(u.current))),[f]),d?i.createElement("div",{style:{...S.container,opacity:o?1:0,...e}},i.createElement("div",null,i.createElement("div",{style:{...S.inner,...t}},i.createElement("div",{style:{...S.bar,transform:`scaleX(${l/100})`,...r}}),i.createElement("span",{ref:h,style:{...S.data,...n}})))):null}const S={container:{position:"absolute",top:0,left:0,width:"100%",height:"100%",background:"#171717",display:"flex",alignItems:"center",justifyContent:"center",transition:"opacity 300ms ease",zIndex:1e3},inner:{width:100,height:3,background:"#272727",textAlign:"center"},bar:{height:3,width:"100%",background:"white",transition:"transform 200ms",transformOrigin:"left center"},data:{display:"inline-block",position:"relative",fontVariantNumeric:"tabular-nums",marginTop:"0.8em",color:"#f0f0f0",fontSize:"0.6em",fontFamily:'-apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", "Helvetica Neue", Helvetica, Arial, Roboto, Ubuntu, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',whiteSpace:"nowrap"}};const M=function(e){return function(t){e.forEach((function(e){"function"==typeof e?e(t):null!=e&&(e.current=t)}))}},T=i.createContext(null);function C(){return i.useContext(T)}function I({eps:e=1e-5,enabled:t=!0,infinite:r,horizontal:n,pages:a=1,distance:l=1,damping:c=4,style:u={},children:h}){const{gl:d,size:p,invalidate:f,events:m,raycaster:g}=(0,o.useThree)(),[v]=i.useState((()=>document.createElement("div"))),[A]=i.useState((()=>document.createElement("div"))),[y]=i.useState((()=>document.createElement("div"))),x=d.domElement.parentNode,b=i.useRef(0),w=i.useMemo((()=>{const t={el:v,eps:e,fill:A,fixed:y,horizontal:n,damping:c,offset:0,delta:0,scroll:b,pages:a,range(e,t,r=0){const n=e-r,i=n+t+2*r;return this.offseti?1:(this.offset-n)/(i-n)},curve(e,t,r=0){return Math.sin(this.range(e,t,r)*Math.PI)},visible(e,t,r=0){const n=e-r,i=n+t+2*r;return this.offset>=n&&this.offset<=i}};return t}),[e,c,n,a]);i.useEffect((()=>{v.style.position="absolute",v.style.width="100%",v.style.height="100%",v.style[n?"overflowX":"overflowY"]="auto",v.style[n?"overflowY":"overflowX"]="hidden",v.style.top="0px",v.style.left="0px";for(const r in u)v.style[r]=u[r];y.style.position="sticky",y.style.top="0px",y.style.left="0px",y.style.width="100%",y.style.height="100%",y.style.overflow="hidden",v.appendChild(y),A.style.height=n?"100%":a*l*100+"%",A.style.width=n?a*l*100+"%":"100%",A.style.pointerEvents="none",v.appendChild(A),x.appendChild(v),v[n?"scrollLeft":"scrollTop"]=1;const e=m.connected||d.domElement;requestAnimationFrame((()=>null==m.connect?void 0:m.connect(v)));const t=g.computeOffsets;return g.computeOffsets=({clientX:e,clientY:t})=>({offsetX:e-x.offsetLeft,offsetY:t-x.offsetTop}),()=>{x.removeChild(v),g.computeOffsets=t,null==m.connect||m.connect(e)}}),[a,l,n,v,A,y,x]),i.useEffect((()=>{const e=p[n?"width":"height"],i=v[n?"scrollWidth":"scrollHeight"],a=i-e;let s=0,o=!0,l=!0;const c=()=>{if(t&&!l&&(f(),s=v[n?"scrollLeft":"scrollTop"],b.current=s/a,r)){if(!o)if(s>=a){const e=1-w.offset;v[n?"scrollLeft":"scrollTop"]=1,b.current=w.offset=-e,o=!0}else if(s<=0){const e=1+w.offset;v[n?"scrollLeft":"scrollTop"]=i,b.current=w.offset=e,o=!0}o&&setTimeout((()=>o=!1),40)}};v.addEventListener("scroll",c,{passive:!0}),requestAnimationFrame((()=>l=!1));const u=e=>v.scrollLeft+=e.deltaY/2;return n&&v.addEventListener("wheel",u,{passive:!0}),()=>{v.removeEventListener("scroll",c),n&&v.removeEventListener("wheel",u)}}),[v,p,r,w,f,n,t]);let _=0;return(0,o.useFrame)(((t,r)=>{w.offset=s.MathUtils.damp(_=w.offset,b.current,c,r),w.delta=s.MathUtils.damp(w.delta,Math.abs(_-w.offset),c,r),w.delta>e&&f()})),i.createElement(T.Provider,{value:w},h)}const B=i.forwardRef((({children:e},t)=>{const r=i.useRef(null),n=C(),{width:a,height:s}=(0,o.useThree)((e=>e.viewport));return(0,o.useFrame)((()=>{r.current.position.x=n.horizontal?-a*(n.pages-1)*n.offset:0,r.current.position.y=n.horizontal?0:s*(n.pages-1)*n.offset})),i.createElement("group",{ref:M([t,r])},e)})),R=i.forwardRef((({children:e,style:t,...r},s)=>{const l=C(),c=i.useRef(null),{width:u,height:h}=(0,o.useThree)((e=>e.size)),d=i.useContext(o.context);return(0,o.useFrame)((()=>{l.delta>l.eps&&(c.current.style.transform=`translate3d(${l.horizontal?-u*(l.pages-1)*l.offset:0}px,${l.horizontal?0:h*(l.pages-1)*-l.offset}px,0)`)})),a.render(i.createElement("div",n({ref:M([s,c]),style:{...t,position:"absolute",top:0,left:0,willChange:"transform"}},r),i.createElement(T.Provider,{value:l},i.createElement(o.context.Provider,{value:d},e))),l.fixed),null})),P=i.forwardRef((({html:e,...t},r)=>{const a=e?R:B;return i.createElement(a,n({ref:r},t))}));var F=q(),L=e=>j(e,F),D=q();L.write=e=>j(e,D);var U=q();L.onStart=e=>j(e,U);var N=q();L.onFrame=e=>j(e,N);var k=q();L.onFinish=e=>j(e,k);var O=[];L.setTimeout=(e,t)=>{let r=L.now()+t,n=()=>{let e=O.findIndex((e=>e.cancel==n));~e&&O.splice(e,1),H-=~e?1:0},i={time:r,handler:e,cancel:n};return O.splice(G(r),0,i),H+=1,W(),i};var G=e=>~(~O.findIndex((t=>t.time>e))||~O.length);L.cancel=e=>{U.delete(e),N.delete(e),k.delete(e),F.delete(e),D.delete(e)},L.sync=e=>{Q=!0,L.batchedUpdates(e),Q=!1},L.throttle=e=>{let t;function r(){try{e(...t)}finally{t=null}}function n(...e){t=e,L.onStart(r)}return n.handler=e,n.cancel=()=>{U.delete(r),t=null},n};var z=typeof window<"u"?window.requestAnimationFrame:()=>{};L.use=e=>z=e,L.now=typeof performance<"u"?()=>performance.now():Date.now,L.batchedUpdates=e=>e(),L.catch=console.error,L.frameLoop="always",L.advance=()=>{"demand"!==L.frameLoop?console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand"):Y()};var V=-1,H=0,Q=!1;function j(e,t){Q?(t.delete(e),e(0)):(t.add(e),W())}function W(){V<0&&(V=0,"demand"!==L.frameLoop&&z(X))}function X(){~V&&(z(X),L.batchedUpdates(Y))}function Y(){let e=V;V=L.now();let t=G(V);t&&(K(O.splice(0,t),(e=>e.handler())),H-=t),H?(U.flush(),F.flush(e?Math.min(64,V-e):16.667),N.flush(),D.flush(),k.flush()):V=-1}function q(){let e=new Set,t=e;return{add(r){H+=t!=e||e.has(r)?0:1,e.add(r)},delete:r=>(H-=t==e&&e.has(r)?1:0,e.delete(r)),flush(r){t.size&&(e=new Set,H-=t.size,K(t,(t=>t(r)&&e.add(t))),H+=e.size,t=e)}}}function K(e,t){e.forEach((e=>{try{t(e)}catch(Jr){L.catch(Jr)}}))}var J=Object.defineProperty,Z={};function $(){}((e,t)=>{for(var r in t)J(e,r,{get:t[r],enumerable:!0})})(Z,{assign:()=>pe,colors:()=>ue,createStringInterpolator:()=>se,skipAnimation:()=>he,to:()=>oe,willAdvance:()=>de});var ee={arr:Array.isArray,obj:e=>!!e&&"Object"===e.constructor.name,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,und:e=>void 0===e};function te(e,t){if(ee.arr(e)){if(!ee.arr(t)||e.length!==t.length)return!1;for(let r=0;re.forEach(t);function ne(e,t,r){if(ee.arr(e))for(let n=0;nee.und(e)?[]:ee.arr(e)?e:[e];function ae(e,t){if(e.size){let r=Array.from(e);e.clear(),re(r,t)}}var se,oe,le=(e,...t)=>ae(e,(e=>e(...t))),ce=()=>typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),ue=null,he=!1,de=$,pe=e=>{e.to&&(oe=e.to),e.now&&(L.now=e.now),void 0!==e.colors&&(ue=e.colors),null!=e.skipAnimation&&(he=e.skipAnimation),e.createStringInterpolator&&(se=e.createStringInterpolator),e.requestAnimationFrame&&L.use(e.requestAnimationFrame),e.batchedUpdates&&(L.batchedUpdates=e.batchedUpdates),e.willAdvance&&(de=e.willAdvance),e.frameLoop&&(L.frameLoop=e.frameLoop)},fe=new Set,me=[],ge=[],ve=0,Ae={get idle(){return!fe.size&&!me.length},start(e){ve>e.priority?(fe.add(e),L.onStart(ye)):(xe(e),L(we))},advance:we,sort(e){if(ve)L.onFrame((()=>Ae.sort(e)));else{let t=me.indexOf(e);~t&&(me.splice(t,1),be(e))}},clear(){me=[],fe.clear()}};function ye(){fe.forEach(xe),fe.clear(),L(we)}function xe(e){me.includes(e)||be(e)}function be(e){me.splice(function(e,t){let r=e.findIndex(t);return r<0?e.length:r}(me,(t=>t.priority>e.priority)),0,e)}function we(e){let t=ge;for(let r=0;r0}var _e="[-+]?\\d*\\.?\\d+",Ee=_e+"%";function Se(...e){return"\\(\\s*("+e.join(")\\s*,\\s*(")+")\\s*\\)"}var Me=new RegExp("rgb"+Se(_e,_e,_e)),Te=new RegExp("rgba"+Se(_e,_e,_e,_e)),Ce=new RegExp("hsl"+Se(_e,Ee,Ee)),Ie=new RegExp("hsla"+Se(_e,Ee,Ee,_e)),Be=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,Re=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,Pe=/^#([0-9a-fA-F]{6})$/,Fe=/^#([0-9a-fA-F]{8})$/;function Le(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function De(e,t,r){let n=r<.5?r*(1+t):r+t-r*t,i=2*r-n,a=Le(i,n,e+1/3),s=Le(i,n,e),o=Le(i,n,e-1/3);return Math.round(255*a)<<24|Math.round(255*s)<<16|Math.round(255*o)<<8}function Ue(e){let t=parseInt(e,10);return t<0?0:t>255?255:t}function Ne(e){return(parseFloat(e)%360+360)%360/360}function ke(e){let t=parseFloat(e);return t<0?0:t>1?255:Math.round(255*t)}function Oe(e){let t=parseFloat(e);return t<0?0:t>100?1:t/100}function Ge(e){let t=function(e){let t;return"number"==typeof e?e>>>0===e&&e>=0&&e<=4294967295?e:null:(t=Pe.exec(e))?parseInt(t[1]+"ff",16)>>>0:ue&&void 0!==ue[e]?ue[e]:(t=Me.exec(e))?(Ue(t[1])<<24|Ue(t[2])<<16|Ue(t[3])<<8|255)>>>0:(t=Te.exec(e))?(Ue(t[1])<<24|Ue(t[2])<<16|Ue(t[3])<<8|ke(t[4]))>>>0:(t=Be.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+"ff",16)>>>0:(t=Fe.exec(e))?parseInt(t[1],16)>>>0:(t=Re.exec(e))?parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3]+t[4]+t[4],16)>>>0:(t=Ce.exec(e))?(255|De(Ne(t[1]),Oe(t[2]),Oe(t[3])))>>>0:(t=Ie.exec(e))?(De(Ne(t[1]),Oe(t[2]),Oe(t[3]))|ke(t[4]))>>>0:null}(e);return null===t?e:(t=t||0,`rgba(${(4278190080&t)>>>24}, ${(16711680&t)>>>16}, ${(65280&t)>>>8}, ${(255&t)/255})`)}var ze=(e,t,r)=>{if(ee.fun(e))return e;if(ee.arr(e))return ze({range:e,output:t,extrapolate:r});if(ee.str(e.output[0]))return se(e);let n=e,i=n.output,a=n.range||[0,1],s=n.extrapolateLeft||n.extrapolate||"extend",o=n.extrapolateRight||n.extrapolate||"extend",l=n.easing||(e=>e);return e=>{let t=function(e,t){for(var r=1;r=e);++r);return r-1}(e,a);return function(e,t,r,n,i,a,s,o,l){let c=l?l(e):e;if(cr){if("identity"===o)return c;"clamp"===o&&(c=r)}return n===i?n:t===r?e<=t?n:i:(t===-1/0?c=-c:r===1/0?c-=t:c=(c-t)/(r-t),c=a(c),n===-1/0?c=-c:i===1/0?c+=n:c=c*(i-n)+n,c)}(e,a[t],a[t+1],i[t],i[t+1],l,s,o,n.map)}};var Ve=1.70158,He=1.525*Ve,Qe=Ve+1,je=2*Math.PI/3,We=2*Math.PI/4.5,Xe=e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,Ye={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,easeInCubic:e=>e*e*e,easeOutCubic:e=>1-Math.pow(1-e,3),easeInOutCubic:e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,easeInQuart:e=>e*e*e*e,easeOutQuart:e=>1-Math.pow(1-e,4),easeInOutQuart:e=>e<.5?8*e*e*e*e:1-Math.pow(-2*e+2,4)/2,easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>1-Math.pow(1-e,5),easeInOutQuint:e=>e<.5?16*e*e*e*e*e:1-Math.pow(-2*e+2,5)/2,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInExpo:e=>0===e?0:Math.pow(2,10*e-10),easeOutExpo:e=>1===e?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>0===e?0:1===e?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-Math.pow(e,2)),easeOutCirc:e=>Math.sqrt(1-Math.pow(e-1,2)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-Math.pow(2*e,2)))/2:(Math.sqrt(1-Math.pow(-2*e+2,2))+1)/2,easeInBack:e=>Qe*e*e*e-Ve*e*e,easeOutBack:e=>1+Qe*Math.pow(e-1,3)+Ve*Math.pow(e-1,2),easeInOutBack:e=>e<.5?Math.pow(2*e,2)*(2*(He+1)*e-He)/2:(Math.pow(2*e-2,2)*((He+1)*(2*e-2)+He)+2)/2,easeInElastic:e=>0===e?0:1===e?1:-Math.pow(2,10*e-10)*Math.sin((10*e-10.75)*je),easeOutElastic:e=>0===e?0:1===e?1:Math.pow(2,-10*e)*Math.sin((10*e-.75)*je)+1,easeInOutElastic:e=>0===e?0:1===e?1:e<.5?-Math.pow(2,20*e-10)*Math.sin((20*e-11.125)*We)/2:Math.pow(2,-20*e+10)*Math.sin((20*e-11.125)*We)/2+1,easeInBounce:e=>1-Xe(1-e),easeOutBounce:Xe,easeInOutBounce:e=>e<.5?(1-Xe(1-2*e))/2:(1+Xe(2*e-1))/2,steps:(e,t="end")=>r=>{let n=(r="end"===t?Math.min(r,.999):Math.max(r,.001))*e;return((e,t,r)=>Math.min(Math.max(r,e),t))(0,1,("end"===t?Math.floor(n):Math.ceil(n))/e)}},qe=Symbol.for("FluidValue.get"),Ke=Symbol.for("FluidValue.observers"),Je=e=>!(!e||!e[qe]),Ze=e=>e&&e[qe]?e[qe]():e,$e=e=>e[Ke]||null;function et(e,t){let r=e[Ke];r&&r.forEach((e=>{!function(e,t){e.eventObserved?e.eventObserved(t):e(t)}(e,t)}))}var tt=class{[qe];[Ke];constructor(e){if(!e&&!(e=this.get))throw Error("Unknown getter");rt(this,e)}},rt=(e,t)=>st(e,qe,t);function nt(e,t){if(e[qe]){let r=e[Ke];r||st(e,Ke,r=new Set),r.has(t)||(r.add(t),e.observerAdded&&e.observerAdded(r.size,t))}return t}function it(e,t){let r=e[Ke];if(r&&r.has(t)){let n=r.size-1;n?r.delete(t):e[Ke]=null,e.observerRemoved&&e.observerRemoved(n,t)}}var at,st=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0}),ot=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,lt=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,ct=new RegExp(`(${ot.source})(%|[a-z]+)`,"i"),ut=/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,ht=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/,dt=e=>{let[t,r]=pt(e);if(!t||ce())return e;let n=window.getComputedStyle(document.documentElement).getPropertyValue(t);if(n)return n.trim();if(r&&r.startsWith("--")){return window.getComputedStyle(document.documentElement).getPropertyValue(r)||e}return r&&ht.test(r)?dt(r):r||e},pt=e=>{let t=ht.exec(e);if(!t)return[,];let[,r,n]=t;return[r,n]},ft=(e,t,r,n,i)=>`rgba(${Math.round(t)}, ${Math.round(r)}, ${Math.round(n)}, ${i})`,mt=e=>{at||(at=ue?new RegExp(`(${Object.keys(ue).join("|")})(?!\\w)`,"g"):/^\b$/);let t=e.output.map((e=>Ze(e).replace(ht,dt).replace(lt,Ge).replace(at,Ge))),r=t.map((e=>e.match(ot).map(Number))),n=r[0].map(((e,t)=>r.map((e=>{if(!(t in e))throw Error('The arity of each "output" value must be equal');return e[t]})))).map((t=>ze({...e,output:t})));return e=>{let r=!ct.test(t[0])&&t.find((e=>ct.test(e)))?.replace(ot,""),i=0;return t[0].replace(ot,(()=>`${n[i++](e)}${r||""}`)).replace(ut,ft)}},gt="react-spring: ",vt=e=>{let t=e,r=!1;if("function"!=typeof t)throw new TypeError(`${gt}once requires a function parameter`);return(...e)=>{r||(t(...e),r=!0)}},At=vt(console.warn);var yt=vt(console.warn);function xt(e){return ee.str(e)&&("#"==e[0]||/\d/.test(e)||!ce()&&ht.test(e)||e in(ue||{}))}new WeakMap;new Set,new WeakMap,new WeakMap,new WeakMap;var bt=ce()?i.useEffect:i.useLayoutEffect;function wt(){let e=(0,i.useState)()[1],t=(()=>{let e=(0,i.useRef)(!1);return bt((()=>(e.current=!0,()=>{e.current=!1})),[]),e})();return()=>{t.current&&e(Math.random())}}var _t=e=>(0,i.useEffect)(e,Et),Et=[];function St(e){let t=(0,i.useRef)();return(0,i.useEffect)((()=>{t.current=e})),t.current}var Mt=Symbol.for("Animated:node"),Tt=e=>e&&e[Mt],Ct=(e,t)=>((e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,configurable:!0}))(e,Mt,t),It=e=>e&&e[Mt]&&e[Mt].getPayload(),Bt=class{payload;constructor(){Ct(this,this)}getPayload(){return this.payload||[]}},Rt=class extends Bt{constructor(e){super(),this._value=e,ee.num(this._value)&&(this.lastPosition=this._value)}done=!0;elapsedTime;lastPosition;lastVelocity;v0;durationProgress=0;static create(e){return new Rt(e)}getPayload(){return[this]}getValue(){return this._value}setValue(e,t){return ee.num(e)&&(this.lastPosition=e,t&&(e=Math.round(e/t)*t,this.done&&(this.lastPosition=e))),this._value!==e&&(this._value=e,!0)}reset(){let{done:e}=this;this.done=!1,ee.num(this._value)&&(this.elapsedTime=0,this.durationProgress=0,this.lastPosition=this._value,e&&(this.lastVelocity=null),this.v0=null)}},Pt=class extends Rt{_string=null;_toString;constructor(e){super(0),this._toString=ze({output:[e,e]})}static create(e){return new Pt(e)}getValue(){return this._string??(this._string=this._toString(this._value))}setValue(e){if(ee.str(e)){if(e==this._string)return!1;this._string=e,this._value=1}else{if(!super.setValue(e))return!1;this._string=null}return!0}reset(e){e&&(this._toString=ze({output:[this.getValue(),e]})),this._value=0,super.reset()}},Ft={dependencies:null},Lt=class extends Bt{constructor(e){super(),this.source=e,this.setValue(e)}getValue(e){let t={};return ne(this.source,((r,n)=>{(e=>!!e&&e[Mt]===e)(r)?t[n]=r.getValue(e):Je(r)?t[n]=Ze(r):e||(t[n]=r)})),t}setValue(e){this.source=e,this.payload=this._makePayload(e)}reset(){this.payload&&re(this.payload,(e=>e.reset()))}_makePayload(e){if(e){let t=new Set;return ne(e,this._addToPayload,t),Array.from(t)}}_addToPayload(e){Ft.dependencies&&Je(e)&&Ft.dependencies.add(e);let t=It(e);t&&re(t,(e=>this.add(e)))}},Dt=class extends Lt{constructor(e){super(e)}static create(e){return new Dt(e)}getValue(){return this.source.map((e=>e.getValue()))}setValue(e){let t=this.getPayload();return e.length==t.length?t.map(((t,r)=>t.setValue(e[r]))).some(Boolean):(super.setValue(e.map(Ut)),!0)}};function Ut(e){return(xt(e)?Pt:Rt).create(e)}function Nt(e){let t=Tt(e);return t?t.constructor:ee.arr(e)?Dt:xt(e)?Pt:Rt}var kt=(e,t)=>{let r=!ee.fun(e)||e.prototype&&e.prototype.isReactComponent;return(0,i.forwardRef)(((n,a)=>{let s=(0,i.useRef)(null),o=r&&(0,i.useCallback)((e=>{s.current=function(e,t){return e&&(ee.fun(e)?e(t):e.current=t),t}(a,e)}),[a]),[l,c]=function(e,t){let r=new Set;return Ft.dependencies=r,e.style&&(e={...e,style:t.createAnimatedStyle(e.style)}),e=new Lt(e),Ft.dependencies=null,[e,r]}(n,t),u=wt(),h=()=>{let e=s.current;r&&!e||!1===(!!e&&t.applyAnimatedValues(e,l.getValue(!0)))&&u()},d=new Ot(h,c),p=(0,i.useRef)();bt((()=>(p.current=d,re(c,(e=>nt(e,d))),()=>{p.current&&(re(p.current.deps,(e=>it(e,p.current))),L.cancel(p.current.update))}))),(0,i.useEffect)(h,[]),_t((()=>()=>{let e=p.current;re(e.deps,(t=>it(t,e)))}));let f=t.getComponentProps(l.getValue());return i.createElement(e,{...f,ref:o})}))},Ot=class{constructor(e,t){this.update=e,this.deps=t}eventObserved(e){"change"==e.type&&L.write(this.update)}};var Gt=Symbol.for("AnimatedComponent"),zt=e=>ee.str(e)?e:e&&ee.str(e.displayName)?e.displayName:ee.fun(e)&&e.name||null;function Vt(e,...t){return ee.fun(e)?e(...t):e}var Ht=(e,t)=>!0===e||!!(t&&e&&(ee.fun(e)?e(t):ie(e).includes(t))),Qt=(e,t)=>ee.obj(e)?t&&e[t]:e,jt=(e,t)=>!0===e.default?e[t]:e.default?e.default[t]:void 0,Wt=e=>e,Xt=(e,t=Wt)=>{let r=Yt;e.default&&!0!==e.default&&(e=e.default,r=Object.keys(e));let n={};for(let i of r){let r=t(e[i],i);ee.und(r)||(n[i]=r)}return n},Yt=["config","onProps","onStart","onChange","onPause","onResume","onRest"],qt={config:1,from:1,to:1,ref:1,loop:1,reset:1,pause:1,cancel:1,reverse:1,immediate:1,default:1,delay:1,onProps:1,onStart:1,onChange:1,onPause:1,onResume:1,onRest:1,onResolve:1,items:1,trail:1,sort:1,expires:1,initial:1,enter:1,update:1,leave:1,children:1,onDestroyed:1,keys:1,callId:1,parentId:1};function Kt(e){let t=function(e){let t={},r=0;if(ne(e,((e,n)=>{qt[n]||(t[n]=e,r++)})),r)return t}(e);if(t){let r={to:t};return ne(e,((e,n)=>n in t||(r[n]=e))),r}return{...e}}function Jt(e){return e=Ze(e),ee.arr(e)?e.map(Jt):xt(e)?Z.createStringInterpolator({range:[0,1],output:[e,e]})(1):e}function Zt(e){for(let t in e)return!0;return!1}function $t(e){return ee.fun(e)||ee.arr(e)&&ee.obj(e[0])}function er(e,t){e.ref?.delete(e),t?.delete(e)}function tr(e,t){t&&e.ref!==t&&(e.ref?.delete(e),t.add(e),e.ref=t)}var rr={tension:170,friction:26,mass:1,damping:1,easing:Ye.linear,clamp:!1};function nr(e,t){if(ee.und(t.decay)){let r=!ee.und(t.tension)||!ee.und(t.friction);(r||!ee.und(t.frequency)||!ee.und(t.damping)||!ee.und(t.mass))&&(e.duration=void 0,e.decay=void 0),r&&(e.frequency=void 0)}else e.duration=void 0}var ir=[];function ar(e,{key:t,props:r,defaultProps:n,state:i,actions:a}){return new Promise(((s,o)=>{let l,c,u=Ht(r.cancel??n?.cancel,t);if(u)p();else{ee.und(r.pause)||(i.paused=Ht(r.pause,t));let e=n?.pause;!0!==e&&(e=i.paused||Ht(e,t)),l=Vt(r.delay||0,t),e?(i.resumeQueue.add(d),a.pause()):(a.resume(),d())}function h(){i.resumeQueue.add(d),i.timeouts.delete(c),c.cancel(),l=c.time-L.now()}function d(){l>0&&!Z.skipAnimation?(i.delayed=!0,c=L.setTimeout(p,l),i.pauseQueue.add(h),i.timeouts.add(c)):p()}function p(){i.delayed&&(i.delayed=!1),i.pauseQueue.delete(h),i.timeouts.delete(c),e<=(i.cancelId||0)&&(u=!0);try{a.start({...r,callId:e,cancel:u},s)}catch(j){o(j)}}}))}var sr=(e,t)=>1==t.length?t[0]:t.some((e=>e.cancelled))?cr(e.get()):t.every((e=>e.noop))?or(e.get()):lr(e.get(),t.every((e=>e.finished))),or=e=>({value:e,noop:!0,finished:!0,cancelled:!1}),lr=(e,t,r=!1)=>({value:e,finished:t,cancelled:r}),cr=e=>({value:e,cancelled:!0,finished:!1});function ur(e,t,r,n){let{callId:i,parentId:a,onRest:s}=t,{asyncTo:o,promise:l}=r;return a||e!==o||t.reset?r.promise=(async()=>{r.asyncId=i,r.asyncTo=e;let c,u,h,d=Xt(t,((e,t)=>"onRest"===t?void 0:e)),p=new Promise(((e,t)=>(c=e,u=t))),f=e=>{let t=i<=(r.cancelId||0)&&cr(n)||i!==r.asyncId&&lr(n,!1);if(t)throw e.result=t,u(e),e},m=(e,t)=>{let a=new dr,s=new pr;return(async()=>{if(Z.skipAnimation)throw hr(r),s.result=lr(n,!1),u(s),s;f(a);let o=ee.obj(e)?{...e}:{...t,to:e};o.parentId=i,ne(d,((e,t)=>{ee.und(o[t])&&(o[t]=e)}));let l=await n.start(o);return f(a),r.paused&&await new Promise((e=>{r.resumeQueue.add(e)})),l})()};if(Z.skipAnimation)return hr(r),lr(n,!1);try{let t;t=ee.arr(e)?(async e=>{for(let t of e)await m(t)})(e):Promise.resolve(e(m,n.stop.bind(n))),await Promise.all([t.then(c),p]),h=lr(n.get(),!0,!1)}catch(V){if(V instanceof dr)h=V.result;else{if(!(V instanceof pr))throw V;h=V.result}}finally{i==r.asyncId&&(r.asyncId=a,r.asyncTo=a?o:void 0,r.promise=a?l:void 0)}return ee.fun(s)&&L.batchedUpdates((()=>{s(h,n,n.item)})),h})():l}function hr(e,t){ae(e.timeouts,(e=>e.cancel())),e.pauseQueue.clear(),e.resumeQueue.clear(),e.asyncId=e.asyncTo=e.promise=void 0,t&&(e.cancelId=t)}var dr=class extends Error{result;constructor(){super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.")}},pr=class extends Error{result;constructor(){super("SkipAnimationSignal")}},fr=e=>e instanceof gr,mr=1,gr=class extends tt{id=mr++;_priority=0;get priority(){return this._priority}set priority(e){this._priority!=e&&(this._priority=e,this._onPriorityChange(e))}get(){let e=Tt(this);return e&&e.getValue()}to(...e){return Z.to(this,e)}interpolate(...e){return At(`${gt}The "interpolate" function is deprecated in v9 (use "to" instead)`),Z.to(this,e)}toJSON(){return this.get()}observerAdded(e){1==e&&this._attach()}observerRemoved(e){0==e&&this._detach()}_attach(){}_detach(){}_onChange(e,t=!1){et(this,{type:"change",parent:this,value:e,idle:t})}_onPriorityChange(e){this.idle||Ae.sort(this),et(this,{type:"priority",parent:this,priority:e})}},vr=Symbol.for("SpringPhase"),Ar=e=>(1&e[vr])>0,yr=e=>(2&e[vr])>0,xr=e=>(4&e[vr])>0,br=(e,t)=>t?e[vr]|=3:e[vr]&=-3,wr=(e,t)=>t?e[vr]|=4:e[vr]&=-5,_r=class extends gr{key;animation=new class{changed=!1;values=ir;toValues=null;fromValues=ir;to;from;config=new class{tension;friction;frequency;damping;mass;velocity=0;restVelocity;precision;progress;duration;easing;clamp;bounce;decay;round;constructor(){Object.assign(this,rr)}};immediate=!1};queue;defaultProps={};_state={paused:!1,delayed:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_pendingCalls=new Set;_lastCallId=0;_lastToId=0;_memoizedDuration=0;constructor(e,t){if(super(),!ee.und(e)||!ee.und(t)){let r=ee.obj(e)?{...e}:{...t,from:e};ee.und(r.default)&&(r.default=!0),this.start(r)}}get idle(){return!(yr(this)||this._state.asyncTo)||xr(this)}get goal(){return Ze(this.animation.to)}get velocity(){let e=Tt(this);return e instanceof Rt?e.lastVelocity||0:e.getPayload().map((e=>e.lastVelocity||0))}get hasAnimated(){return Ar(this)}get isAnimating(){return yr(this)}get isPaused(){return xr(this)}get isDelayed(){return this._state.delayed}advance(e){let t=!0,r=!1,n=this.animation,{toValues:i}=n,{config:a}=n,s=It(n.to);!s&&Je(n.to)&&(i=ie(Ze(n.to))),n.values.forEach(((o,l)=>{if(o.done)return;let c=o.constructor==Pt?1:s?s[l].lastPosition:i[l],u=n.immediate,h=c;if(!u){if(h=o.lastPosition,a.tension<=0)return void(o.done=!0);let t,r=o.elapsedTime+=e,i=n.fromValues[l],s=null!=o.v0?o.v0:o.v0=ee.arr(a.velocity)?a.velocity[l]:a.velocity,d=a.precision||(i==c?.005:Math.min(1,.001*Math.abs(c-i)));if(ee.und(a.duration))if(a.decay){let e=!0===a.decay?.998:a.decay,n=Math.exp(-(1-e)*r);h=i+s/(1-e)*(1-n),u=Math.abs(o.lastPosition-h)<=d,t=s*n}else{t=null==o.lastVelocity?s:o.lastVelocity;let r,n=a.restVelocity||d/10,l=a.clamp?0:a.bounce,p=!ee.und(l),f=i==c?o.v0>0:in,r||(u=Math.abs(c-h)<=d,!u));++e){p&&(m=h==c||h>c==f,m&&(t=-t*l,h=c)),t+=(1e-6*-a.tension*(h-c)+.001*-a.friction*t)/a.mass*g,h+=t*g}}else{let n=1;a.duration>0&&(this._memoizedDuration!==a.duration&&(this._memoizedDuration=a.duration,o.durationProgress>0&&(o.elapsedTime=a.duration*o.durationProgress,r=o.elapsedTime+=e)),n=(a.progress||0)+r/this._memoizedDuration,n=n>1?1:n<0?0:n,o.durationProgress=n),h=i+a.easing(n)*(c-i),t=(h-o.lastPosition)/e,u=1==n}o.lastVelocity=t,Number.isNaN(h)&&(console.warn("Got NaN while animating:",this),u=!0)}s&&!s[l].done&&(u=!1),u?o.done=!0:t=!1,o.setValue(h,a.round)&&(r=!0)}));let o=Tt(this),l=o.getValue();if(t){let e=Ze(n.to);l===e&&!r||a.decay?r&&a.decay&&this._onChange(l):(o.setValue(e),this._onChange(e)),this._stop()}else r&&this._onChange(l)}set(e){return L.batchedUpdates((()=>{this._stop(),this._focus(e),this._set(e)})),this}pause(){this._update({pause:!0})}resume(){this._update({pause:!1})}finish(){if(yr(this)){let{to:e,config:t}=this.animation;L.batchedUpdates((()=>{this._onStart(),t.decay||this._set(e,!1),this._stop()}))}return this}update(e){return(this.queue||(this.queue=[])).push(e),this}start(e,t){let r;return ee.und(e)?(r=this.queue||[],this.queue=[]):r=[ee.obj(e)?e:{...t,to:e}],Promise.all(r.map((e=>this._update(e)))).then((e=>sr(this,e)))}stop(e){let{to:t}=this.animation;return this._focus(this.get()),hr(this._state,e&&this._lastCallId),L.batchedUpdates((()=>this._stop(t,e))),this}reset(){this._update({reset:!0})}eventObserved(e){"change"==e.type?this._start():"priority"==e.type&&(this.priority=e.priority+1)}_prepareNode(e){let t=this.key||"",{to:r,from:n}=e;r=ee.obj(r)?r[t]:r,(null==r||$t(r))&&(r=void 0),n=ee.obj(n)?n[t]:n,null==n&&(n=void 0);let i={to:r,from:n};return Ar(this)||(e.reverse&&([r,n]=[n,r]),n=Ze(n),ee.und(n)?Tt(this)||this._set(r):this._set(n)),i}_update({...e},t){let{key:r,defaultProps:n}=this;e.default&&Object.assign(n,Xt(e,((e,t)=>/^on/.test(t)?Qt(e,r):e))),Br(this,e,"onProps"),Rr(this,"onProps",e,this);let i=this._prepareNode(e);if(Object.isFrozen(this))throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?");let a=this._state;return ar(++this._lastCallId,{key:r,props:e,defaultProps:n,state:a,actions:{pause:()=>{xr(this)||(wr(this,!0),le(a.pauseQueue),Rr(this,"onPause",lr(this,Er(this,this.animation.to)),this))},resume:()=>{xr(this)&&(wr(this,!1),yr(this)&&this._resume(),le(a.resumeQueue),Rr(this,"onResume",lr(this,Er(this,this.animation.to)),this))},start:this._merge.bind(this,i)}}).then((r=>{if(e.loop&&r.finished&&(!t||!r.noop)){let t=Sr(e);if(t)return this._update(t,!0)}return r}))}_merge(e,t,r){if(t.cancel)return this.stop(!0),r(cr(this));let n=!ee.und(e.to),i=!ee.und(e.from);if(n||i){if(!(t.callId>this._lastToId))return r(cr(this));this._lastToId=t.callId}let{key:a,defaultProps:s,animation:o}=this,{to:l,from:c}=o,{to:u=l,from:h=c}=e;i&&!n&&(!t.default||ee.und(u))&&(u=h),t.reverse&&([u,h]=[h,u]);let d=!te(h,c);d&&(o.from=h),h=Ze(h);let p=!te(u,l);p&&this._focus(u);let f=$t(t.to),{config:m}=o,{decay:g,velocity:v}=m;(n||i)&&(m.velocity=0),t.config&&!f&&function(e,t,r){r&&(nr(r={...r},t),t={...r,...t}),nr(e,t),Object.assign(e,t);for(let s in rr)null==e[s]&&(e[s]=rr[s]);let{frequency:n,damping:i}=e,{mass:a}=e;ee.und(n)||(n<.01&&(n=.01),i<0&&(i=0),e.tension=Math.pow(2*Math.PI/n,2)*a,e.friction=4*Math.PI*i*a/n)}(m,Vt(t.config,a),t.config!==s.config?Vt(s.config,a):void 0);let A=Tt(this);if(!A||ee.und(u))return r(lr(this,!0));let y=ee.und(t.reset)?i&&!t.default:!ee.und(h)&&Ht(t.reset,a),x=y?h:this.get(),b=Jt(u),w=ee.num(b)||ee.arr(b)||xt(b),_=!f&&(!w||Ht(s.immediate||t.immediate,a));if(p){let e=Nt(u);if(e!==A.constructor){if(!_)throw Error(`Cannot animate between ${A.constructor.name} and ${e.name}, as the "to" prop suggests`);A=this._set(b)}}let E=A.constructor,S=Je(u),M=!1;if(!S){let e=y||!Ar(this)&&d;(p||e)&&(M=te(Jt(x),b),S=!M),(!te(o.immediate,_)&&!_||!te(m.decay,g)||!te(m.velocity,v))&&(S=!0)}if(M&&yr(this)&&(o.changed&&!y?S=!0:S||this._stop(l)),!f&&((S||Je(l))&&(o.values=A.getPayload(),o.toValues=Je(u)?null:E==Pt?[1]:ie(b)),o.immediate!=_&&(o.immediate=_,!_&&!y&&this._set(l)),S)){let{onRest:e}=o;re(Ir,(e=>Br(this,t,e)));let n=lr(this,Er(this,l));le(this._pendingCalls,n),this._pendingCalls.add(r),o.changed&&L.batchedUpdates((()=>{o.changed=!y,e?.(n,this),y?Vt(s.onRest,n):o.onStart?.(n,this)}))}y&&this._set(x),f?r(ur(t.to,t,this._state,this)):S?this._start():yr(this)&&!p?this._pendingCalls.add(r):r(or(x))}_focus(e){let t=this.animation;e!==t.to&&($e(this)&&this._detach(),t.to=e,$e(this)&&this._attach())}_attach(){let e=0,{to:t}=this.animation;Je(t)&&(nt(t,this),fr(t)&&(e=t.priority+1)),this.priority=e}_detach(){let{to:e}=this.animation;Je(e)&&it(e,this)}_set(e,t=!0){let r=Ze(e);if(!ee.und(r)){let e=Tt(this);if(!e||!te(r,e.getValue())){let n=Nt(r);e&&e.constructor==n?e.setValue(r):Ct(this,n.create(r)),e&&L.batchedUpdates((()=>{this._onChange(r,t)}))}}return Tt(this)}_onStart(){let e=this.animation;e.changed||(e.changed=!0,Rr(this,"onStart",lr(this,Er(this,e.to)),this))}_onChange(e,t){t||(this._onStart(),Vt(this.animation.onChange,e,this)),Vt(this.defaultProps.onChange,e,this),super._onChange(e,t)}_start(){let e=this.animation;Tt(this).reset(Ze(e.to)),e.immediate||(e.fromValues=e.values.map((e=>e.lastPosition))),yr(this)||(br(this,!0),xr(this)||this._resume())}_resume(){Z.skipAnimation?this.finish():Ae.start(this)}_stop(e,t){if(yr(this)){br(this,!1);let r=this.animation;re(r.values,(e=>{e.done=!0})),r.toValues&&(r.onChange=r.onPause=r.onResume=void 0),et(this,{type:"idle",parent:this});let n=t?cr(this.get()):lr(this.get(),Er(this,e??r.to));le(this._pendingCalls,n),r.changed&&(r.changed=!1,Rr(this,"onRest",n,this))}}};function Er(e,t){let r=Jt(t);return te(Jt(e.get()),r)}function Sr(e,t=e.loop,r=e.to){let n=Vt(t);if(n){let i=!0!==n&&Kt(n),a=(i||e).reverse,s=!i||i.reset;return Mr({...e,loop:t,default:!1,pause:void 0,to:!a||$t(r)?r:void 0,from:s?e.from:void 0,reset:s,...i})}}function Mr(e){let{to:t,from:r}=e=Kt(e),n=new Set;return ee.obj(t)&&Cr(t,n),ee.obj(r)&&Cr(r,n),e.keys=n.size?Array.from(n):null,e}function Tr(e){let t=Mr(e);return ee.und(t.default)&&(t.default=Xt(t)),t}function Cr(e,t){ne(e,((e,r)=>null!=e&&t.add(r)))}var Ir=["onStart","onRest","onChange","onPause","onResume"];function Br(e,t,r){e.animation[r]=t[r]!==jt(t,r)?Qt(t[r],e.key):void 0}function Rr(e,t,...r){e.animation[t]?.(...r),e.defaultProps[t]?.(...r)}var Pr=["onStart","onChange","onRest"],Fr=1,Lr=class{id=Fr++;springs={};queue=[];ref;_flush;_initialProps;_lastAsyncId=0;_active=new Set;_changed=new Set;_started=!1;_item;_state={paused:!1,pauseQueue:new Set,resumeQueue:new Set,timeouts:new Set};_events={onStart:new Map,onChange:new Map,onRest:new Map};constructor(e,t){this._onFrame=this._onFrame.bind(this),t&&(this._flush=t),e&&this.start({default:!0,...e})}get idle(){return!this._state.asyncTo&&Object.values(this.springs).every((e=>e.idle&&!e.isDelayed&&!e.isPaused))}get item(){return this._item}set item(e){this._item=e}get(){let e={};return this.each(((t,r)=>e[r]=t.get())),e}set(e){for(let t in e){let r=e[t];ee.und(r)||this.springs[t].set(r)}}update(e){return e&&this.queue.push(Mr(e)),this}start(e){let{queue:t}=this;return e?t=ie(e).map(Mr):this.queue=[],this._flush?this._flush(this,t):(zr(this,t),Dr(this,t))}stop(e,t){if(e!==!!e&&(t=e),t){let r=this.springs;re(ie(t),(t=>r[t].stop(!!e)))}else hr(this._state,this._lastAsyncId),this.each((t=>t.stop(!!e)));return this}pause(e){if(ee.und(e))this.start({pause:!0});else{let t=this.springs;re(ie(e),(e=>t[e].pause()))}return this}resume(e){if(ee.und(e))this.start({pause:!1});else{let t=this.springs;re(ie(e),(e=>t[e].resume()))}return this}each(e){ne(this.springs,e)}_onFrame(){let{onStart:e,onChange:t,onRest:r}=this._events,n=this._active.size>0,i=this._changed.size>0;(n&&!this._started||i&&!this._started)&&(this._started=!0,ae(e,(([e,t])=>{t.value=this.get(),e(t,this,this._item)})));let a=!n&&this._started,s=i||a&&r.size?this.get():null;i&&t.size&&ae(t,(([e,t])=>{t.value=s,e(t,this,this._item)})),a&&(this._started=!1,ae(r,(([e,t])=>{t.value=s,e(t,this,this._item)})))}eventObserved(e){if("change"==e.type)this._changed.add(e.parent),e.idle||this._active.add(e.parent);else{if("idle"!=e.type)return;this._active.delete(e.parent)}L.onFrame(this._onFrame)}};function Dr(e,t){return Promise.all(t.map((t=>Ur(e,t)))).then((t=>sr(e,t)))}async function Ur(e,t,r){let{keys:n,to:i,from:a,loop:s,onRest:o,onResolve:l}=t,c=ee.obj(t.default)&&t.default;s&&(t.loop=!1),!1===i&&(t.to=null),!1===a&&(t.from=null);let u=ee.arr(i)||ee.fun(i)?i:void 0;u?(t.to=void 0,t.onRest=void 0,c&&(c.onRest=void 0)):re(Pr,(r=>{let n=t[r];if(ee.fun(n)){let i=e._events[r];t[r]=({finished:e,cancelled:t})=>{let r=i.get(n);r?(e||(r.finished=!1),t&&(r.cancelled=!0)):i.set(n,{value:null,finished:e||!1,cancelled:t||!1})},c&&(c[r]=t[r])}}));let h=e._state;t.pause===!h.paused?(h.paused=t.pause,le(t.pause?h.pauseQueue:h.resumeQueue)):h.paused&&(t.pause=!0);let d=(n||Object.keys(e.springs)).map((r=>e.springs[r].start(t))),p=!0===t.cancel||!0===jt(t,"cancel");(u||p&&h.asyncId)&&d.push(ar(++e._lastAsyncId,{props:t,state:h,actions:{pause:$,resume:$,start(t,r){p?(hr(h,e._lastAsyncId),r(cr(e))):(t.onRest=o,r(ur(u,t,h,e)))}}})),h.paused&&await new Promise((e=>{h.resumeQueue.add(e)}));let f=sr(e,await Promise.all(d));if(s&&f.finished&&(!r||!f.noop)){let r=Sr(t,s,i);if(r)return zr(e,[r]),Ur(e,r,!0)}return l&&L.batchedUpdates((()=>l(f,e,e.item))),f}function Nr(e,t){let r={...e.springs};return t&&re(ie(t),(e=>{ee.und(e.keys)&&(e=Mr(e)),ee.obj(e.to)||(e={...e,to:void 0}),Gr(r,e,(e=>Or(e)))})),kr(e,r),r}function kr(e,t){ne(t,((t,r)=>{e.springs[r]||(e.springs[r]=t,nt(t,e))}))}function Or(e,t){let r=new _r;return r.key=e,t&&nt(r,t),r}function Gr(e,t,r){t.keys&&re(t.keys,(n=>{(e[n]||(e[n]=r(n)))._prepareNode(t)}))}function zr(e,t){re(t,(t=>{Gr(e.springs,t,(t=>Or(t,e)))}))}var Vr=({children:e,...t})=>{let r=(0,i.useContext)(Hr),n=t.pause||!!r.pause,a=t.immediate||!!r.immediate;t=function(e,t){let[r]=(0,i.useState)((()=>({inputs:t,result:e()}))),n=(0,i.useRef)(),a=n.current,s=a;return s?t&&s.inputs&&function(e,t){if(e.length!==t.length)return!1;for(let r=0;r{n.current=s,a==r&&(r.inputs=r.result=void 0)}),[s]),s.result}((()=>({pause:n,immediate:a})),[n,a]);let{Provider:s}=Hr;return i.createElement(s,{value:t},e)},Hr=function(e,t){return Object.assign(e,i.createContext(t)),e.Provider._context=e,e.Consumer._context=e,e}(Vr,{});Vr.Provider=Hr.Provider,Vr.Consumer=Hr.Consumer;var Qr=()=>{let e=[],t=function(t){yt(`${gt}Directly calling start instead of using the api object is deprecated in v9 (use ".start" instead), this will be removed in later 0.X.0 versions`);let n=[];return re(e,((e,i)=>{if(ee.und(t))n.push(e.start());else{let a=r(t,e,i);a&&n.push(e.start(a))}})),n};t.current=e,t.add=function(t){e.includes(t)||e.push(t)},t.delete=function(t){let r=e.indexOf(t);~r&&e.splice(r,1)},t.pause=function(){return re(e,(e=>e.pause(...arguments))),this},t.resume=function(){return re(e,(e=>e.resume(...arguments))),this},t.set=function(t){re(e,((e,r)=>{let n=ee.fun(t)?t(r,e):t;n&&e.set(n)}))},t.start=function(t){let r=[];return re(e,((e,n)=>{if(ee.und(t))r.push(e.start());else{let i=this._getProps(t,e,n);i&&r.push(e.start(i))}})),r},t.stop=function(){return re(e,(e=>e.stop(...arguments))),this},t.update=function(t){return re(e,((e,r)=>e.update(this._getProps(t,e,r)))),this};let r=function(e,t,r){return ee.fun(e)?e(r,t):e};return t._getProps=r,t};function jr(e,t,r){let n=ee.fun(t)&&t;n&&!r&&(r=[]);let a=(0,i.useMemo)((()=>n||3==arguments.length?Qr():void 0),[]),s=(0,i.useRef)(0),o=wt(),l=(0,i.useMemo)((()=>({ctrls:[],queue:[],flush(e,t){let r=Nr(e,t);return s.current>0&&!l.queue.length&&!Object.keys(r).some((t=>!e.springs[t]))?Dr(e,t):new Promise((n=>{kr(e,r),l.queue.push((()=>{n(Dr(e,t))})),o()}))}})),[]),c=(0,i.useRef)([...l.ctrls]),u=[],h=St(e)||0;function d(e,r){for(let i=e;i{re(c.current.slice(e,h),(e=>{er(e,a),e.stop(!0)})),c.current.length=e,d(h,e)}),[e]),(0,i.useMemo)((()=>{d(0,Math.min(h,e))}),r);let p=c.current.map(((e,t)=>Nr(e,u[t]))),f=(0,i.useContext)(Vr),m=St(f),g=f!==m&&Zt(f);bt((()=>{s.current++,l.ctrls=c.current;let{queue:e}=l;e.length&&(l.queue=[],re(e,(e=>e()))),re(c.current,((e,t)=>{a?.add(e),g&&e.start({default:f});let r=u[t];r&&(tr(e,r.ref),e.ref?e.queue.push(r):e.start(r))}))})),_t((()=>()=>{re(l.ctrls,(e=>e.stop(!0)))}));let v=p.map((e=>({...e})));return a?[v,a]:v}function Wr(e,t){let r=ee.fun(e),[[n],i]=jr(1,r?e:[e],r?t||[]:t);return r||2==arguments.length?[n,i]:n}var Xr=class extends gr{constructor(e,t){super(),this.source=e,this.calc=ze(...t);let r=this._get(),n=Nt(r);Ct(this,n.create(r))}key;idle=!0;calc;_active=new Set;advance(e){let t=this._get();te(t,this.get())||(Tt(this).setValue(t),this._onChange(t,this.idle)),!this.idle&&qr(this._active)&&Kr(this)}_get(){let e=ee.arr(this.source)?this.source.map(Ze):ie(Ze(this.source));return this.calc(...e)}_start(){this.idle&&!qr(this._active)&&(this.idle=!1,re(It(this),(e=>{e.done=!1})),Z.skipAnimation?(L.batchedUpdates((()=>this.advance())),Kr(this)):Ae.start(this))}_attach(){let e=1;re(ie(this.source),(t=>{Je(t)&&nt(t,this),fr(t)&&(t.idle||this._active.add(t),e=Math.max(e,t.priority+1))})),this.priority=e,this._start()}_detach(){re(ie(this.source),(e=>{Je(e)&&it(e,this)})),this._active.clear(),Kr(this)}eventObserved(e){"change"==e.type?e.idle?this.advance():(this._active.add(e.parent),this._start()):"idle"==e.type?this._active.delete(e.parent):"priority"==e.type&&(this.priority=ie(this.source).reduce(((e,t)=>Math.max(e,(fr(t)?t.priority:0)+1)),0))}};function Yr(e){return!1!==e.idle}function qr(e){return!e.size||Array.from(e).every(Yr)}function Kr(e){e.idle||(e.idle=!0,re(It(e),(e=>{e.done=!0})),et(e,{type:"idle",parent:e}))}Z.assign({createStringInterpolator:mt,to:(e,t)=>new Xr(e,t)});Ae.advance;var Jr=["primitive"].concat(Object.keys(s).filter((e=>/^[A-Z]/.test(e))).map((e=>e[0].toLowerCase()+e.slice(1))));Z.assign({createStringInterpolator:mt,colors:{transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},frameLoop:"demand"}),(0,o.addEffect)((()=>{L.advance()}));var Zr=((e,{applyAnimatedValues:t=(()=>!1),createAnimatedStyle:r=(e=>new Lt(e)),getComponentProps:n=(e=>e)}={})=>{let i={applyAnimatedValues:t,createAnimatedStyle:r,getComponentProps:n},a=e=>{let t=zt(e)||"Anonymous";return(e=ee.str(e)?a[e]||(a[e]=kt(e,i)):e[Gt]||(e[Gt]=kt(e,i))).displayName=`Animated(${t})`,e};return ne(e,((t,r)=>{ee.arr(e)&&(r=zt(t)),a[r]=a(t)})),{animated:a}})(Jr,{applyAnimatedValues:o.applyProps}),$r=Zr.animated;const en={toVector:(e,t)=>(void 0===e&&(e=t),Array.isArray(e)?e:[e,e]),add:(e,t)=>[e[0]+t[0],e[1]+t[1]],sub:(e,t)=>[e[0]-t[0],e[1]-t[1]],addTo(e,t){e[0]+=t[0],e[1]+=t[1]},subTo(e,t){e[0]-=t[0],e[1]-=t[1]}};function tn(e,t,r){return 0===t||Math.abs(t)===1/0?Math.pow(e,5*r):e*t*r/(t+r*e)}function rn(e,t,r,n=.15){return 0===n?function(e,t,r){return Math.max(t,Math.min(e,r))}(e,t,r):er?+tn(e-r,r-t,n)+r:e}function nn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function an(e,t,r){return(t=nn(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function sn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function on(e){for(var t=1;t{var r,n;return t.target===e.currentTarget||(null===(r=e.currentTarget)||void 0===r||null===(n=r.contains)||void 0===n?void 0:n.call(r,t.target))}))}(e).map((e=>e.identifier))}function yn(e,t){const[r,n]=Array.from(e.touches).filter((e=>t.includes(e.identifier)));return vn(r,n)}function xn(e){const t=gn(e);return fn(e)?t.identifier:t.pointerId}function bn(e){const t=gn(e);return[t.clientX,t.clientY]}function wn(e){let{deltaX:t,deltaY:r,deltaMode:n}=e;return 1===n?(t*=40,r*=40):2===n&&(t*=800,r*=800),[t,r]}function _n(e,...t){return"function"==typeof e?e(...t):e}function En(){}function Sn(...e){return 0===e.length?En:1===e.length?e[0]:function(){let t;for(const r of e)t=r.apply(this,arguments)||t;return t}}function Mn(e,t){return Object.assign({},t,e||{})}class Tn{constructor(e,t,r){this.ctrl=e,this.args=t,this.key=r,this.state||(this.state={},this.computeValues([0,0]),this.computeInitial(),this.init&&this.init(),this.reset())}get state(){return this.ctrl.state[this.key]}set state(e){this.ctrl.state[this.key]=e}get shared(){return this.ctrl.state.shared}get eventStore(){return this.ctrl.gestureEventStores[this.key]}get timeoutStore(){return this.ctrl.gestureTimeoutStores[this.key]}get config(){return this.ctrl.config[this.key]}get sharedConfig(){return this.ctrl.config.shared}get handler(){return this.ctrl.handlers[this.key]}reset(){const{state:e,shared:t,ingKey:r,args:n}=this;t[r]=e._active=e.active=e._blocked=e._force=!1,e._step=[!1,!1],e.intentional=!1,e._movement=[0,0],e._distance=[0,0],e._direction=[0,0],e._delta=[0,0],e._bounds=[[-1/0,1/0],[-1/0,1/0]],e.args=n,e.axis=void 0,e.memo=void 0,e.elapsedTime=e.timeDelta=0,e.direction=[0,0],e.distance=[0,0],e.overflow=[0,0],e._movementBound=[!1,!1],e.velocity=[0,0],e.movement=[0,0],e.delta=[0,0],e.timeStamp=0}start(e){const t=this.state,r=this.config;t._active||(this.reset(),this.computeInitial(),t._active=!0,t.target=e.target,t.currentTarget=e.currentTarget,t.lastOffset=r.from?_n(r.from,t):t.offset,t.offset=t.lastOffset,t.startTime=t.timeStamp=e.timeStamp)}computeValues(e){const t=this.state;t._values=e,t.values=this.config.transform(e)}computeInitial(){const e=this.state;e._initial=e._values,e.initial=e.values}compute(e){const{state:t,config:r,shared:n}=this;t.args=this.args;let i=0;if(e&&(t.event=e,r.preventDefault&&e.cancelable&&t.event.preventDefault(),t.type=e.type,n.touches=this.ctrl.pointerIds.size||this.ctrl.touchIds.size,n.locked=!!document.pointerLockElement,Object.assign(n,function(e){const t={};if("buttons"in e&&(t.buttons=e.buttons),"shiftKey"in e){const{shiftKey:r,altKey:n,metaKey:i,ctrlKey:a}=e;Object.assign(t,{shiftKey:r,altKey:n,metaKey:i,ctrlKey:a})}return t}(e)),n.down=n.pressed=n.buttons%2==1||n.touches>0,i=e.timeStamp-t.timeStamp,t.timeStamp=e.timeStamp,t.elapsedTime=t.timeStamp-t.startTime),t._active){const e=t._delta.map(Math.abs);en.addTo(t._distance,e)}this.axisIntent&&this.axisIntent(e);const[a,s]=t._movement,[o,l]=r.threshold,{_step:c,values:u}=t;if(r.hasCustomTransform?(!1===c[0]&&(c[0]=Math.abs(a)>=o&&u[0]),!1===c[1]&&(c[1]=Math.abs(s)>=l&&u[1])):(!1===c[0]&&(c[0]=Math.abs(a)>=o&&Math.sign(a)*o),!1===c[1]&&(c[1]=Math.abs(s)>=l&&Math.sign(s)*l)),t.intentional=!1!==c[0]||!1!==c[1],!t.intentional)return;const h=[0,0];if(r.hasCustomTransform){const[e,t]=u;h[0]=!1!==c[0]?e-c[0]:0,h[1]=!1!==c[1]?t-c[1]:0}else h[0]=!1!==c[0]?a-c[0]:0,h[1]=!1!==c[1]?s-c[1]:0;this.restrictToAxis&&!t._blocked&&this.restrictToAxis(h);const d=t.offset,p=t._active&&!t._blocked||t.active;p&&(t.first=t._active&&!t.active,t.last=!t._active&&t.active,t.active=n[this.ingKey]=t._active,e&&(t.first&&("bounds"in r&&(t._bounds=_n(r.bounds,t)),this.setup&&this.setup()),t.movement=h,this.computeOffset()));const[f,m]=t.offset,[[g,v],[A,y]]=t._bounds;t.overflow=[fv?1:0,my?1:0],t._movementBound[0]=!!t.overflow[0]&&(!1===t._movementBound[0]?t._movement[0]:t._movementBound[0]),t._movementBound[1]=!!t.overflow[1]&&(!1===t._movementBound[1]?t._movement[1]:t._movementBound[1]);const x=t._active&&r.rubberband||[0,0];if(t.offset=function(e,[t,r],[n,i]){const[[a,s],[o,l]]=e;return[rn(t,a,s,n),rn(r,o,l,i)]}(t._bounds,t.offset,x),t.delta=en.sub(t.offset,d),this.computeMovement(),p&&(!t.last||i>32)){t.delta=en.sub(t.offset,d);const e=t.delta.map(Math.abs);en.addTo(t.distance,e),t.direction=t.delta.map(Math.sign),t._direction=t._delta.map(Math.sign),!t.first&&i>0&&(t.velocity=[e[0]/i,e[1]/i],t.timeDelta=i)}}emit(){const e=this.state,t=this.shared,r=this.config;if(e._active||this.clean(),(e._blocked||!e.intentional)&&!e._force&&!r.triggerAllEvents)return;const n=this.handler(on(on(on({},t),e),{},{[this.aliasKey]:e.values}));void 0!==n&&(e.memo=n)}clean(){this.eventStore.clean(),this.timeoutStore.clean()}}class Cn extends Tn{constructor(...e){super(...e),an(this,"aliasKey","xy")}reset(){super.reset(),this.state.axis=void 0}init(){this.state.offset=[0,0],this.state.lastOffset=[0,0]}computeOffset(){this.state.offset=en.add(this.state.lastOffset,this.state.movement)}computeMovement(){this.state.movement=en.sub(this.state.offset,this.state.lastOffset)}axisIntent(e){const t=this.state,r=this.config;if(!t.axis&&e){const n="object"==typeof r.axisThreshold?r.axisThreshold[mn(e)]:r.axisThreshold;t.axis=function([e,t],r){const n=Math.abs(e),i=Math.abs(t);return n>i&&n>r?"x":i>n&&i>r?"y":void 0}(t._movement,n)}t._blocked=(r.lockDirection||!!r.axis)&&!t.axis||!!r.axis&&r.axis!==t.axis}restrictToAxis(e){if(this.config.axis||this.config.lockDirection)switch(this.state.axis){case"x":e[1]=0;break;case"y":e[0]=0}}}const In=e=>e,Bn={enabled:(e=!0)=>e,eventOptions:(e,t,r)=>on(on({},r.shared.eventOptions),e),preventDefault:(e=!1)=>e,triggerAllEvents:(e=!1)=>e,rubberband(e=0){switch(e){case!0:return[.15,.15];case!1:return[0,0];default:return en.toVector(e)}},from:e=>"function"==typeof e?e:null!=e?en.toVector(e):void 0,transform(e,t,r){const n=e||r.shared.transform;return this.hasCustomTransform=!!n,n||In},threshold:e=>en.toVector(e,0)};const Rn=on(on({},Bn),{},{axis(e,t,{axis:r}){if(this.lockDirection="lock"===r,!this.lockDirection)return r},axisThreshold:(e=0)=>e,bounds(e={}){if("function"==typeof e)return t=>Rn.bounds(e(t));if("current"in e)return()=>e.current;if("function"==typeof HTMLElement&&e instanceof HTMLElement)return e;const{left:t=-1/0,right:r=1/0,top:n=-1/0,bottom:i=1/0}=e;return[[t,r],[n,i]]}}),Pn={ArrowRight:(e,t=1)=>[e*t,0],ArrowLeft:(e,t=1)=>[-1*e*t,0],ArrowUp:(e,t=1)=>[0,-1*e*t],ArrowDown:(e,t=1)=>[0,e*t]};const Fn="undefined"!=typeof window&&window.document&&window.document.createElement;function Ln(){return Fn&&"ontouchstart"in window||Fn&&window.navigator.maxTouchPoints>1}const Dn={isBrowser:Fn,gesture:function(){try{return"constructor"in GestureEvent}catch(Ha){return!1}}(),touch:Ln(),touchscreen:Ln(),pointer:Fn&&"onpointerdown"in window,pointerLock:Fn&&"exitPointerLock"in window.document},Un={mouse:0,touch:0,pen:8},Nn=on(on({},Rn),{},{device(e,t,{pointer:{touch:r=!1,lock:n=!1,mouse:i=!1}={}}){return this.pointerLock=n&&Dn.pointerLock,Dn.touch&&r?"touch":this.pointerLock?"mouse":Dn.pointer&&!i?"pointer":Dn.touch?"touch":"mouse"},preventScrollAxis(e,t,{preventScroll:r}){if(this.preventScrollDelay="number"==typeof r?r:r||void 0===r&&e?250:void 0,Dn.touchscreen&&!1!==r)return e||(void 0!==r?"y":void 0)},pointerCapture(e,t,{pointer:{capture:r=!0,buttons:n=1,keys:i=!0}={}}){return this.pointerButtons=n,this.keys=i,!this.pointerLock&&"pointer"===this.device&&r},threshold(e,t,{filterTaps:r=!1,tapsThreshold:n=3,axis:i}){const a=en.toVector(e,r?n:i?1:0);return this.filterTaps=r,this.tapsThreshold=n,a},swipe({velocity:e=.5,distance:t=50,duration:r=250}={}){return{velocity:this.transform(en.toVector(e)),distance:this.transform(en.toVector(t)),duration:r}},delay(e=0){switch(e){case!0:return 180;case!1:return 0;default:return e}},axisThreshold:e=>e?on(on({},Un),e):Un,keyboardDisplacement:(e=10)=>e});function kn(e){const[t,r]=e.overflow,[n,i]=e._delta,[a,s]=e._direction;(t<0&&n>0&&a<0||t>0&&n<0&&a>0)&&(e._movement[0]=e._movementBound[0]),(r<0&&i>0&&s<0||r>0&&i<0&&s>0)&&(e._movement[1]=e._movementBound[1])}const On=on(on({},Bn),{},{device(e,t,{shared:r,pointer:{touch:n=!1}={}}){if(r.target&&!Dn.touch&&Dn.gesture)return"gesture";if(Dn.touch&&n)return"touch";if(Dn.touchscreen){if(Dn.pointer)return"pointer";if(Dn.touch)return"touch"}},bounds(e,t,{scaleBounds:r={},angleBounds:n={}}){const i=e=>{const t=Mn(_n(r,e),{min:-1/0,max:1/0});return[t.min,t.max]},a=e=>{const t=Mn(_n(n,e),{min:-1/0,max:1/0});return[t.min,t.max]};return"function"!=typeof r&&"function"!=typeof n?[i(),a()]:e=>[i(e),a(e)]},threshold(e,t,r){this.lockDirection="lock"===r.axis;return en.toVector(e,this.lockDirection?[.1,3]:0)},modifierKey:e=>void 0===e?"ctrlKey":e,pinchOnWheel:(e=!0)=>e});const Gn=on(on({},Rn),{},{mouseOnly:(e=!0)=>e});const zn=Rn;const Vn=Rn;const Hn=on(on({},Rn),{},{mouseOnly:(e=!0)=>e}),Qn=new Map,jn=new Map;function Wn(e){Qn.set(e.key,e.engine),jn.set(e.key,e.resolver)}const Xn={key:"drag",engine:class extends Cn{constructor(...e){super(...e),an(this,"ingKey","dragging")}reset(){super.reset();const e=this.state;e._pointerId=void 0,e._pointerActive=!1,e._keyboardActive=!1,e._preventScroll=!1,e._delayed=!1,e.swipe=[0,0],e.tap=!1,e.canceled=!1,e.cancel=this.cancel.bind(this)}setup(){const e=this.state;if(e._bounds instanceof HTMLElement){const t=e._bounds.getBoundingClientRect(),r=e.currentTarget.getBoundingClientRect(),n={left:t.left-r.left+e.offset[0],right:t.right-r.right+e.offset[0],top:t.top-r.top+e.offset[1],bottom:t.bottom-r.bottom+e.offset[1]};e._bounds=Rn.bounds(n)}}cancel(){const e=this.state;e.canceled||(e.canceled=!0,e._active=!1,setTimeout((()=>{this.compute(),this.emit()}),0))}setActive(){this.state._active=this.state._pointerActive||this.state._keyboardActive}clean(){this.pointerClean(),this.state._pointerActive=!1,this.state._keyboardActive=!1,super.clean()}pointerDown(e){const t=this.config,r=this.state;if(null!=e.buttons&&(Array.isArray(t.pointerButtons)?!t.pointerButtons.includes(e.buttons):-1!==t.pointerButtons&&t.pointerButtons!==e.buttons))return;const n=this.ctrl.setEventIds(e);t.pointerCapture&&e.target.setPointerCapture(e.pointerId),n&&n.size>1&&r._pointerActive||(this.start(e),this.setupPointer(e),r._pointerId=xn(e),r._pointerActive=!0,this.computeValues(bn(e)),this.computeInitial(),t.preventScrollAxis&&"mouse"!==mn(e)?(r._active=!1,this.setupScrollPrevention(e)):t.delay>0?(this.setupDelayTrigger(e),t.triggerAllEvents&&(this.compute(e),this.emit())):this.startPointerDrag(e))}startPointerDrag(e){const t=this.state;t._active=!0,t._preventScroll=!0,t._delayed=!1,this.compute(e),this.emit()}pointerMove(e){const t=this.state,r=this.config;if(!t._pointerActive)return;const n=xn(e);if(void 0!==t._pointerId&&n!==t._pointerId)return;const i=bn(e);return document.pointerLockElement===e.target?t._delta=[e.movementX,e.movementY]:(t._delta=en.sub(i,t._values),this.computeValues(i)),en.addTo(t._movement,t._delta),this.compute(e),t._delayed&&t.intentional?(this.timeoutStore.remove("dragDelay"),t.active=!1,void this.startPointerDrag(e)):r.preventScrollAxis&&!t._preventScroll?t.axis?t.axis===r.preventScrollAxis||"xy"===r.preventScrollAxis?(t._active=!1,void this.clean()):(this.timeoutStore.remove("startPointerDrag"),void this.startPointerDrag(e)):void 0:void this.emit()}pointerUp(e){this.ctrl.setEventIds(e);try{this.config.pointerCapture&&e.target.hasPointerCapture(e.pointerId)&&e.target.releasePointerCapture(e.pointerId)}catch(s){0}const t=this.state,r=this.config;if(!t._active||!t._pointerActive)return;const n=xn(e);if(void 0!==t._pointerId&&n!==t._pointerId)return;this.state._pointerActive=!1,this.setActive(),this.compute(e);const[i,a]=t._distance;if(t.tap=i<=r.tapsThreshold&&a<=r.tapsThreshold,t.tap&&r.filterTaps)t._force=!0;else{const[e,n]=t._delta,[i,a]=t._movement,[s,o]=r.swipe.velocity,[l,c]=r.swipe.distance,u=r.swipe.duration;if(t.elapsedTimes&&Math.abs(i)>l&&(t.swipe[0]=Math.sign(e)),u>o&&Math.abs(a)>c&&(t.swipe[1]=Math.sign(n))}}this.emit()}pointerClick(e){!this.state.tap&&e.detail>0&&(e.preventDefault(),e.stopPropagation())}setupPointer(e){const t=this.config,r=t.device;t.pointerLock&&e.currentTarget.requestPointerLock(),t.pointerCapture||(this.eventStore.add(this.sharedConfig.window,r,"change",this.pointerMove.bind(this)),this.eventStore.add(this.sharedConfig.window,r,"end",this.pointerUp.bind(this)),this.eventStore.add(this.sharedConfig.window,r,"cancel",this.pointerUp.bind(this)))}pointerClean(){this.config.pointerLock&&document.pointerLockElement===this.state.currentTarget&&document.exitPointerLock()}preventScroll(e){this.state._preventScroll&&e.cancelable&&e.preventDefault()}setupScrollPrevention(e){this.state._preventScroll=!1,function(e){"persist"in e&&"function"==typeof e.persist&&e.persist()}(e);const t=this.eventStore.add(this.sharedConfig.window,"touch","change",this.preventScroll.bind(this),{passive:!1});this.eventStore.add(this.sharedConfig.window,"touch","end",t),this.eventStore.add(this.sharedConfig.window,"touch","cancel",t),this.timeoutStore.add("startPointerDrag",this.startPointerDrag.bind(this),this.config.preventScrollDelay,e)}setupDelayTrigger(e){this.state._delayed=!0,this.timeoutStore.add("dragDelay",(()=>{this.state._step=[0,0],this.startPointerDrag(e)}),this.config.delay)}keyDown(e){const t=Pn[e.key];if(t){const r=this.state,n=e.shiftKey?10:e.altKey?.1:1;this.start(e),r._delta=t(this.config.keyboardDisplacement,n),r._keyboardActive=!0,en.addTo(r._movement,r._delta),this.compute(e),this.emit()}}keyUp(e){e.key in Pn&&(this.state._keyboardActive=!1,this.setActive(),this.compute(e),this.emit())}bind(e){const t=this.config.device;e(t,"start",this.pointerDown.bind(this)),this.config.pointerCapture&&(e(t,"change",this.pointerMove.bind(this)),e(t,"end",this.pointerUp.bind(this)),e(t,"cancel",this.pointerUp.bind(this)),e("lostPointerCapture","",this.pointerUp.bind(this))),this.config.keys&&(e("key","down",this.keyDown.bind(this)),e("key","up",this.keyUp.bind(this))),this.config.filterTaps&&e("click","",this.pointerClick.bind(this),{capture:!0,passive:!1})}},resolver:Nn},Yn={key:"hover",engine:class extends Cn{constructor(...e){super(...e),an(this,"ingKey","hovering")}enter(e){this.config.mouseOnly&&"mouse"!==e.pointerType||(this.start(e),this.computeValues(bn(e)),this.compute(e),this.emit())}leave(e){if(this.config.mouseOnly&&"mouse"!==e.pointerType)return;const t=this.state;if(!t._active)return;t._active=!1;const r=bn(e);t._movement=t._delta=en.sub(r,t._values),this.computeValues(r),this.compute(e),t.delta=t.movement,this.emit()}bind(e){e("pointer","enter",this.enter.bind(this)),e("pointer","leave",this.leave.bind(this))}},resolver:Hn},qn={key:"move",engine:class extends Cn{constructor(...e){super(...e),an(this,"ingKey","moving")}move(e){this.config.mouseOnly&&"mouse"!==e.pointerType||(this.state._active?this.moveChange(e):this.moveStart(e),this.timeoutStore.add("moveEnd",this.moveEnd.bind(this)))}moveStart(e){this.start(e),this.computeValues(bn(e)),this.compute(e),this.computeInitial(),this.emit()}moveChange(e){if(!this.state._active)return;const t=bn(e),r=this.state;r._delta=en.sub(t,r._values),en.addTo(r._movement,r._delta),this.computeValues(t),this.compute(e),this.emit()}moveEnd(e){this.state._active&&(this.state._active=!1,this.compute(e),this.emit())}bind(e){e("pointer","change",this.move.bind(this)),e("pointer","leave",this.moveEnd.bind(this))}},resolver:Gn},Kn={key:"pinch",engine:class extends Tn{constructor(...e){super(...e),an(this,"ingKey","pinching"),an(this,"aliasKey","da")}init(){this.state.offset=[1,0],this.state.lastOffset=[1,0],this.state._pointerEvents=new Map}reset(){super.reset();const e=this.state;e._touchIds=[],e.canceled=!1,e.cancel=this.cancel.bind(this),e.turns=0}computeOffset(){const{type:e,movement:t,lastOffset:r}=this.state;this.state.offset="wheel"===e?en.add(t,r):[(1+t[0])*r[0],t[1]+r[1]]}computeMovement(){const{offset:e,lastOffset:t}=this.state;this.state.movement=[e[0]/t[0],e[1]-t[1]]}axisIntent(){const e=this.state,[t,r]=e._movement;if(!e.axis){const n=30*Math.abs(t)-Math.abs(r);n<0?e.axis="angle":n>0&&(e.axis="scale")}}restrictToAxis(e){this.config.lockDirection&&("scale"===this.state.axis?e[1]=0:"angle"===this.state.axis&&(e[0]=0))}cancel(){const e=this.state;e.canceled||setTimeout((()=>{e.canceled=!0,e._active=!1,this.compute(),this.emit()}),0)}touchStart(e){this.ctrl.setEventIds(e);const t=this.state,r=this.ctrl.touchIds;if(t._active&&t._touchIds.every((e=>r.has(e))))return;if(r.size<2)return;this.start(e),t._touchIds=Array.from(r).slice(0,2);const n=yn(e,t._touchIds);n&&this.pinchStart(e,n)}pointerStart(e){if(null!=e.buttons&&e.buttons%2!=1)return;this.ctrl.setEventIds(e),e.target.setPointerCapture(e.pointerId);const t=this.state,r=t._pointerEvents,n=this.ctrl.pointerIds;if(t._active&&Array.from(r.keys()).every((e=>n.has(e))))return;if(r.size<2&&r.set(e.pointerId,e),t._pointerEvents.size<2)return;this.start(e);const i=vn(...Array.from(r.values()));i&&this.pinchStart(e,i)}pinchStart(e,t){this.state.origin=t.origin,this.computeValues([t.distance,t.angle]),this.computeInitial(),this.compute(e),this.emit()}touchMove(e){if(!this.state._active)return;const t=yn(e,this.state._touchIds);t&&this.pinchMove(e,t)}pointerMove(e){const t=this.state._pointerEvents;if(t.has(e.pointerId)&&t.set(e.pointerId,e),!this.state._active)return;const r=vn(...Array.from(t.values()));r&&this.pinchMove(e,r)}pinchMove(e,t){const r=this.state,n=r._values[1],i=t.angle-n;let a=0;Math.abs(i)>270&&(a+=Math.sign(i)),this.computeValues([t.distance,t.angle-360*a]),r.origin=t.origin,r.turns=a,r._movement=[r._values[0]/r._initial[0]-1,r._values[1]-r._initial[1]],this.compute(e),this.emit()}touchEnd(e){this.ctrl.setEventIds(e),this.state._active&&this.state._touchIds.some((e=>!this.ctrl.touchIds.has(e)))&&(this.state._active=!1,this.compute(e),this.emit())}pointerEnd(e){const t=this.state;this.ctrl.setEventIds(e);try{e.target.releasePointerCapture(e.pointerId)}catch(r){}t._pointerEvents.has(e.pointerId)&&t._pointerEvents.delete(e.pointerId),t._active&&t._pointerEvents.size<2&&(t._active=!1,this.compute(e),this.emit())}gestureStart(e){e.cancelable&&e.preventDefault();const t=this.state;t._active||(this.start(e),this.computeValues([e.scale,e.rotation]),t.origin=[e.clientX,e.clientY],this.compute(e),this.emit())}gestureMove(e){if(e.cancelable&&e.preventDefault(),!this.state._active)return;const t=this.state;this.computeValues([e.scale,e.rotation]),t.origin=[e.clientX,e.clientY];const r=t._movement;t._movement=[e.scale-1,e.rotation],t._delta=en.sub(t._movement,r),this.compute(e),this.emit()}gestureEnd(e){this.state._active&&(this.state._active=!1,this.compute(e),this.emit())}wheel(e){const t=this.config.modifierKey;t&&!e[t]||(this.state._active?this.wheelChange(e):this.wheelStart(e),this.timeoutStore.add("wheelEnd",this.wheelEnd.bind(this)))}wheelStart(e){this.start(e),this.wheelChange(e)}wheelChange(e){"uv"in e||e.cancelable&&e.preventDefault();const t=this.state;t._delta=[-wn(e)[1]/100*t.offset[0],0],en.addTo(t._movement,t._delta),kn(t),this.state.origin=[e.clientX,e.clientY],this.compute(e),this.emit()}wheelEnd(){this.state._active&&(this.state._active=!1,this.compute(),this.emit())}bind(e){const t=this.config.device;t&&(e(t,"start",this[t+"Start"].bind(this)),e(t,"change",this[t+"Move"].bind(this)),e(t,"end",this[t+"End"].bind(this)),e(t,"cancel",this[t+"End"].bind(this)),e("lostPointerCapture","",this[t+"End"].bind(this))),this.config.pinchOnWheel&&e("wheel","",this.wheel.bind(this),{passive:!1})}},resolver:On},Jn={key:"scroll",engine:class extends Cn{constructor(...e){super(...e),an(this,"ingKey","scrolling")}scroll(e){this.state._active||this.start(e),this.scrollChange(e),this.timeoutStore.add("scrollEnd",this.scrollEnd.bind(this))}scrollChange(e){e.cancelable&&e.preventDefault();const t=this.state,r=function(e){var t,r;const{scrollX:n,scrollY:i,scrollLeft:a,scrollTop:s}=e.currentTarget;return[null!==(t=null!=n?n:a)&&void 0!==t?t:0,null!==(r=null!=i?i:s)&&void 0!==r?r:0]}(e);t._delta=en.sub(r,t._values),en.addTo(t._movement,t._delta),this.computeValues(r),this.compute(e),this.emit()}scrollEnd(){this.state._active&&(this.state._active=!1,this.compute(),this.emit())}bind(e){e("scroll","",this.scroll.bind(this))}},resolver:zn},Zn={key:"wheel",engine:class extends Cn{constructor(...e){super(...e),an(this,"ingKey","wheeling")}wheel(e){this.state._active||this.start(e),this.wheelChange(e),this.timeoutStore.add("wheelEnd",this.wheelEnd.bind(this))}wheelChange(e){const t=this.state;t._delta=wn(e),en.addTo(t._movement,t._delta),kn(t),this.compute(e),this.emit()}wheelEnd(){this.state._active&&(this.state._active=!1,this.compute(),this.emit())}bind(e){e("wheel","",this.wheel.bind(this))}},resolver:Vn};function $n(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}const ei={target(e){if(e)return()=>"current"in e?e.current:e},enabled:(e=!0)=>e,window:(e=(Dn.isBrowser?window:void 0))=>e,eventOptions:({passive:e=!0,capture:t=!1}={})=>({passive:e,capture:t}),transform:e=>e},ti=["target","eventOptions","window","enabled","transform"];function ri(e={},t){const r={};for(const[n,i]of Object.entries(t))switch(typeof i){case"function":r[n]=i.call(r,e[n],n,e);break;case"object":r[n]=ri(e[n],i);break;case"boolean":i&&(r[n]=e[n])}return r}class ni{constructor(e,t){an(this,"_listeners",new Set),this._ctrl=e,this._gestureKey=t}add(e,t,r,n,i){const a=this._listeners,s=function(e,t=""){const r=ln[e];return e+(r&&r[t]||t)}(t,r),o=on(on({},this._gestureKey?this._ctrl.config[this._gestureKey].eventOptions:{}),i);e.addEventListener(s,n,o);const l=()=>{e.removeEventListener(s,n,o),a.delete(l)};return a.add(l),l}clean(){this._listeners.forEach((e=>e())),this._listeners.clear()}}class ii{constructor(){an(this,"_timeouts",new Map)}add(e,t,r=140,...n){this.remove(e),this._timeouts.set(e,window.setTimeout(t,r,...n))}remove(e){const t=this._timeouts.get(e);t&&window.clearTimeout(t)}clean(){this._timeouts.forEach((e=>{window.clearTimeout(e)})),this._timeouts.clear()}}class ai{constructor(e){an(this,"gestures",new Set),an(this,"_targetEventStore",new ni(this)),an(this,"gestureEventStores",{}),an(this,"gestureTimeoutStores",{}),an(this,"handlers",{}),an(this,"config",{}),an(this,"pointerIds",new Set),an(this,"touchIds",new Set),an(this,"state",{shared:{shiftKey:!1,metaKey:!1,ctrlKey:!1,altKey:!1}}),function(e,t){t.drag&&si(e,"drag");t.wheel&&si(e,"wheel");t.scroll&&si(e,"scroll");t.move&&si(e,"move");t.pinch&&si(e,"pinch");t.hover&&si(e,"hover")}(this,e)}setEventIds(e){return fn(e)?(this.touchIds=new Set(An(e)),this.touchIds):"pointerId"in e?("pointerup"===e.type||"pointercancel"===e.type?this.pointerIds.delete(e.pointerId):"pointerdown"===e.type&&this.pointerIds.add(e.pointerId),this.pointerIds):void 0}applyHandlers(e,t){this.handlers=e,this.nativeHandlers=t}applyConfig(e,t){this.config=function(e,t,r={}){const n=e,{target:i,eventOptions:a,window:s,enabled:o,transform:l}=n,c=$n(n,ti);if(r.shared=ri({target:i,eventOptions:a,window:s,enabled:o,transform:l},ei),t){const e=jn.get(t);r[t]=ri(on({shared:r.shared},c),e)}else for(const u in c){const e=jn.get(u);e&&(r[u]=ri(on({shared:r.shared},c[u]),e))}return r}(e,t,this.config)}clean(){this._targetEventStore.clean();for(const e of this.gestures)this.gestureEventStores[e].clean(),this.gestureTimeoutStores[e].clean()}effect(){return this.config.shared.target&&this.bind(),()=>this._targetEventStore.clean()}bind(...e){const t=this.config.shared,r={};let n;if(!t.target||(n=t.target(),n)){if(t.enabled){for(const t of this.gestures){const i=this.config[t],a=oi(r,i.eventOptions,!!n);if(i.enabled){new(Qn.get(t))(this,e,t).bind(a)}}const i=oi(r,t.eventOptions,!!n);for(const t in this.nativeHandlers)i(t,"",(r=>this.nativeHandlers[t](on(on({},this.state.shared),{},{event:r,args:e}))),void 0,!0)}for(const e in r)r[e]=Sn(...r[e]);if(!n)return r;for(const e in r){const{device:t,capture:i,passive:a}=pn(e);this._targetEventStore.add(n,t,"",r[e],{capture:i,passive:a})}}}}function si(e,t){e.gestures.add(t),e.gestureEventStores[t]=new ni(e,t),e.gestureTimeoutStores[t]=new ii}const oi=(e,t,r)=>(n,i,a,s={},o=!1)=>{var l,c;const u=null!==(l=s.capture)&&void 0!==l?l:t.capture,h=null!==(c=s.passive)&&void 0!==c?c:t.passive;let d=o?n:hn(n,i,u);r&&h&&(d+="Passive"),e[d]=e[d]||[],e[d].push(a)},li=/^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;function ci(e,t,r,n,i,a){if(!e.has(r))return;if(!Qn.has(n))return void 0;const s=r+"Start",o=r+"End";i[n]=e=>{let n;return e.first&&s in t&&t[s](e),r in t&&(n=t[r](e)),e.last&&o in t&&t[o](e),n},a[n]=a[n]||{}}function ui(e,t){const[r,n,i]=function(e){const t={},r={},n=new Set;for(let i in e)li.test(i)?(n.add(RegExp.lastMatch),r[i]=e[i]):t[i]=e[i];return[r,t,n]}(e),a={};return ci(i,r,"onDrag","drag",a,t),ci(i,r,"onWheel","wheel",a,t),ci(i,r,"onScroll","scroll",a,t),ci(i,r,"onPinch","pinch",a,t),ci(i,r,"onMove","move",a,t),ci(i,r,"onHover","hover",a,t),{handlers:a,config:t,nativeHandlers:n}}function hi(e,t={},r,n){const a=i.useMemo((()=>new ai(e)),[]);if(a.applyHandlers(e,n),a.applyConfig(t,r),i.useEffect(a.effect.bind(a)),i.useEffect((()=>a.clean.bind(a)),[]),void 0===t.target)return a.bind.bind(a)}function di(e,t){const r=([Xn,Kn,Jn,Zn,qn,Yn].forEach(Wn),function(e,t){const{handlers:r,nativeHandlers:n,config:i}=ui(e,t||{});return hi(r,i,void 0,n)});return r(e,t||{})}function pi({snap:e,global:t,cursor:r=!0,children:a,speed:l=1,rotation:c=[0,0,0],zoom:u=1,polar:h=[0,Math.PI/2],azimuth:d=[-1/0,1/0],config:p={mass:1,tension:170,friction:26}}){const{size:f,gl:m}=(0,o.useThree)(),g=i.useMemo((()=>[c[0]+h[0],c[0]+h[1]]),[c[0],h[0],h[1]]),v=i.useMemo((()=>[c[1]+d[0],c[1]+d[1]]),[c[1],d[0],d[1]]),A=i.useMemo((()=>[s.MathUtils.clamp(c[0],...g),s.MathUtils.clamp(c[1],...v),c[2]]),[c[0],c[1],c[2],g,v]),[y,x]=Wr((()=>({scale:1,rotation:A,config:p})));i.useEffect((()=>{x.start({scale:1,rotation:A,config:p})}),[A]),i.useEffect((()=>{t&&r&&(m.domElement.style.cursor="grab")}),[t,r,m.domElement]);const b=di({onHover:({last:e})=>{r&&!t&&(m.domElement.style.cursor=e?"auto":"grab")},onDrag:({down:t,delta:[n,i],memo:[a,o]=y.rotation.animation.to||A})=>{r&&(m.domElement.style.cursor=t?"grabbing":"grab"),n=s.MathUtils.clamp(o+n/f.width*Math.PI*l,...v),i=s.MathUtils.clamp(a+i/f.height*Math.PI*l,...g);const c=e&&!t&&"boolean"!=typeof e?e:p;return x.start({scale:t&&i>g[1]/2?u:1,rotation:e&&!t?A:[i,n,0],config:e=>"scale"===e?{...c,friction:3*c.friction}:c}),[i,n]}},{target:t?m.domElement:void 0});return i.createElement($r.group,n({},null==b?void 0:b(),y),a)}var fi=r(31480),mi=r(60374);const gi=i.createContext([]);function vi({box:e,multiple:t,children:r,onChange:a,border:l="1px solid #55aaff",backgroundColor:c="rgba(75, 160, 255, 0.1)",filter:u=(e=>e),...h}){const{camera:d,raycaster:p,gl:f,controls:m,size:g,get:v}=(0,o.useThree)(),[A,y]=i.useState(!1),[x,b]=i.useReducer(((e,{object:t,shift:r})=>void 0===t?[]:Array.isArray(t)?t:r?e.includes(t)?e.filter((e=>e!==t)):[t,...e]:e[0]===t?[]:[t]),[]);i.useEffect((()=>{null==a||a(x)}),[x]);const w=i.useCallback((e=>{e.stopPropagation(),b({object:u([e.object])[0],shift:t&&e.shiftKey})}),[]),_=i.useCallback((e=>!A&&b({})),[A]),E=i.useRef(null);return i.useEffect((()=>{if(!e||!t)return;const r=new fi.M(d,E.current),n=document.createElement("div");n.style.pointerEvents="none",n.style.border=l,n.style.backgroundColor=c,n.style.position="fixed";const i=new s.Vector2,a=new s.Vector2,o=new s.Vector2,h=p.enabled,A=null==m?void 0:m.enabled;let y=!1;function x(e,t){var r;const{offsetX:n,offsetY:i}=null!==(r=null==p.computeOffsets?void 0:p.computeOffsets(e,v()))&&void 0!==r?r:e,{width:a,height:s}=g;t.set(n/a*2-1,-i/s*2+1)}function w(e){e.shiftKey&&(!function(e){var t;m&&(m.enabled=!1),p.enabled=!1,y=!0,null==(t=f.domElement.parentElement)||t.appendChild(n),n.style.left=`${e.clientX}px`,n.style.top=`${e.clientY}px`,n.style.width="0px",n.style.height="0px",i.x=e.clientX,i.y=e.clientY}(e),x(e,r.startPoint))}let _=[];function S(e){if(y){!function(e){o.x=Math.max(i.x,e.clientX),o.y=Math.max(i.y,e.clientY),a.x=Math.min(i.x,e.clientX),a.y=Math.min(i.y,e.clientY),n.style.left=`${a.x}px`,n.style.top=`${a.y}px`,n.style.width=o.x-a.x+"px",n.style.height=o.y-a.y+"px"}(e),x(e,r.endPoint);const t=r.select().sort((e=>e.uuid)).filter((e=>e.isMesh));(0,mi.Z)(t,_)||(_=t,b({object:u(t)}))}}function M(e){var t;y&&y&&(m&&(m.enabled=A),p.enabled=h,y=!1,null==(t=n.parentElement)||t.removeChild(n))}return document.addEventListener("pointerdown",w,{passive:!0}),document.addEventListener("pointermove",S,{passive:!0,capture:!0}),document.addEventListener("pointerup",M,{passive:!0}),()=>{document.removeEventListener("pointerdown",w),document.removeEventListener("pointermove",S),document.removeEventListener("pointerup",M)}}),[g,p,d,m,f]),i.createElement("group",n({ref:E,onClick:w,onPointerOver:()=>y(!0),onPointerOut:()=>y(!1),onPointerMissed:_},h),i.createElement(gi.Provider,{value:x},r))}function Ai(){return i.useContext(gi)}const yi=i.forwardRef((function({follow:e=!0,lockX:t=!1,lockY:r=!1,lockZ:a=!1,...s},l){const c=i.useRef();return(0,o.useFrame)((({camera:n})=>{if(!e||!c.current)return;const i=c.current.rotation.clone();c.current.quaternion.copy(n.quaternion),t&&(c.current.rotation.x=i.x),r&&(c.current.rotation.y=i.y),a&&(c.current.rotation.z=i.z)})),i.createElement("group",n({ref:M([c,l])},s))}));var xi=r(43075),bi=r(10977),wi=r(51815);const _i=i.forwardRef((function({points:e,color:t="black",vertexColors:r,lineWidth:a,dashed:o,...l},c){const[u]=i.useState((()=>new xi.w)),[h]=i.useState((()=>new bi.Y)),[d]=i.useState((()=>new s.Vector2(512,512))),p=i.useMemo((()=>{const t=new wi.L,n=e.map((e=>e instanceof s.Vector3?e.toArray():e));if(t.setPositions(n.flat()),r){const e=r.map((e=>e instanceof s.Color?e.toArray():e));t.setColors(e.flat())}return t}),[e,r]);return i.useLayoutEffect((()=>{u.computeLineDistances()}),[e,u]),i.useLayoutEffect((()=>{o?h.defines.USE_DASH="":delete h.defines.USE_DASH,h.needsUpdate=!0}),[o,h]),i.useEffect((()=>()=>p.dispose()),[p]),i.createElement("primitive",n({object:u,ref:c},l),i.createElement("primitive",{object:p,attach:"geometry"}),i.createElement("primitive",n({object:h,attach:"material",color:t,vertexColors:Boolean(r),resolution:d,linewidth:a,dashed:o},l)))})),Ei=new s.Vector3,Si=i.forwardRef((function({start:e=[0,0,0],end:t=[0,0,0],mid:r,segments:a=20,...o},l){const c=i.useRef(null),[u]=i.useState((()=>new s.QuadraticBezierCurve3(void 0,void 0,void 0))),h=i.useCallback(((e,t,r,n=20)=>(e instanceof s.Vector3?u.v0.copy(e):u.v0.set(...e),t instanceof s.Vector3?u.v2.copy(t):u.v2.set(...t),r instanceof s.Vector3?u.v1.copy(r):u.v1.copy(u.v0.clone().add(u.v2.clone().sub(u.v0)).add(Ei.set(0,u.v0.y-u.v2.y,0))),u.getPoints(n))),[]);i.useLayoutEffect((()=>{c.current.setPoints=(e,t,r)=>{const n=h(e,t,r);c.current.geometry&&c.current.geometry.setPositions(n.map((e=>e.toArray())).flat())}}),[]);const d=i.useMemo((()=>h(e,t,r,a)),[e,t,r,a]);return i.createElement(_i,n({ref:M([c,l]),points:d},o))})),Mi=i.forwardRef((function({start:e,end:t,midA:r,midB:a,segments:o=20,...l},c){const u=i.useMemo((()=>{const n=e instanceof s.Vector3?e:new s.Vector3(...e),i=t instanceof s.Vector3?t:new s.Vector3(...t),l=r instanceof s.Vector3?r:new s.Vector3(...r),c=a instanceof s.Vector3?a:new s.Vector3(...a);return new s.CubicBezierCurve3(n,l,c,i).getPoints(o)}),[e,t,r,a,o]);return i.createElement(_i,n({ref:c,points:u},l))})),Ti=i.forwardRef((({url:e,distance:t=1,loop:r=!0,autoplay:a,...l},c)=>{const u=i.useRef(),h=(0,o.useThree)((({camera:e})=>e)),[d]=i.useState((()=>new s.AudioListener)),p=(0,o.useLoader)(s.AudioLoader,e);return i.useEffect((()=>{const e=u.current;e&&(e.setBuffer(p),e.setRefDistance(t),e.setLoop(r),a&&!e.isPlaying&&e.play())}),[p,h,t,r]),i.useEffect((()=>{const e=u.current;return h.add(d),()=>{h.remove(d),e&&(e.isPlaying&&e.stop(),e.source&&e.source._connected&&e.disconnect())}}),[]),i.createElement("positionalAudio",n({ref:M([u,c]),args:[d]},l))}));function Ci(){var e,t=0,r=[],n=0,i=0;var a=d((function(e){i||o(1,e)})),s=d((function(e){i||o(-1,e)}));function o(r,n){i++;var a=0;try{n===m&&p();var s=r>0&&h(n);s?s.call(n,d((function(e){a++,o(1,e)})),d((function(e){a++,o(-1,e)}))):(t=r,e=n,l())}catch(Ha){t||a||o(-1,Ha)}}function l(){n||(setTimeout(c,0),n=1)}function c(){var e=r;n=0,r=[],e.forEach(u)}function u(e){e()}function h(e){var t=e&&(f(e)||"object"==typeof e)&&e.then;return f(t)&&t}function d(e){var t=0;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];t++||e.apply(this,r)}}function p(){throw new TypeError("Chaining cycle detected")}var f=function(e){return"function"==typeof e},m={then:function(n,i){var a=Ci();return r.push((function(){var r=t>0?n:i;if(f(r))try{var s=r(e);s===a&&p();var o=h(s);o?o.call(s,a.resolve,a.reject):a.resolve(s)}catch(l){a.reject(l)}else a[t>0?"resolve":"reject"](e)})),t&&l(),a},resolve:a,reject:s};return m}function Ii(){var e,t,r=new Promise((function(r,n){e=r,t=n}));return{then:r.then.bind(r),resolve:e,reject:t}}Ci.all=Ii.all=function(e){var t=0,r=[],n=Bi();return 0===e.length?n.resolve([]):e.forEach((function(i,a){var s=Bi();s.resolve(i),s.then((function(i){t++,r[a]=i,t===e.length&&n.resolve(r)}),n.reject)})),n};var Bi="function"==typeof Promise?Ii:Ci;function Ri(){var e=Object.create(null);function t(n,i){var a=n.id,s=n.name,o=n.dependencies;void 0===o&&(o=[]);var l=n.init;void 0===l&&(l=function(){});var c=n.getTransferables;if(void 0===c&&(c=null),!e[a])try{o=o.map((function(r){return r&&r.isWorkerModule&&(t(r,(function(e){if(e instanceof Error)throw e})),r=e[r.id].value),r})),l=r("<"+s+">.init",l),c&&(c=r("<"+s+">.getTransferables",c));var u=null;"function"==typeof l?u=l.apply(void 0,o):console.error("worker module init function failed to rehydrate"),e[a]={id:a,value:u,getTransferables:c},i(u)}catch(h){h&&h.noLog||console.error(h),i(h)}}function r(e,t){var r=void 0;self.troikaDefine=function(e){return r=e};var n=URL.createObjectURL(new Blob(["/** "+e.replace(/\*/g,"")+" **/\n\ntroikaDefine(\n"+t+"\n)"],{type:"application/javascript"}));try{importScripts(n)}catch(i){console.error(i)}return URL.revokeObjectURL(n),delete self.troikaDefine,r}self.addEventListener("message",(function(r){var n=r.data,i=n.messageId,a=n.action,s=n.data;try{"registerModule"===a&&t(s,(function(e){e instanceof Error?postMessage({messageId:i,success:!1,error:e.message}):postMessage({messageId:i,success:!0,result:{isCallable:"function"==typeof e}})})),"callModule"===a&&function(t,r){var n,i=t.id,a=t.args;e[i]&&"function"==typeof e[i].value||r(new Error("Worker module "+i+": not found or its 'init' did not return a function"));try{var s=(n=e[i]).value.apply(n,a);s&&"function"==typeof s.then?s.then(o,(function(e){return r(e instanceof Error?e:new Error(""+e))})):o(s)}catch(l){r(l)}function o(t){try{var n=e[i].getTransferables&&e[i].getTransferables(t);n&&Array.isArray(n)&&n.length||(n=void 0),r(t,n)}catch(l){console.error(l),r(l)}}}(s,(function(e,t){e instanceof Error?postMessage({messageId:i,success:!1,error:e.message}):postMessage({messageId:i,success:!0,result:e},t||void 0)}))}catch(o){postMessage({messageId:i,success:!1,error:o.stack})}}))}var Pi=function(){var e=!1;if("undefined"!=typeof window&&void 0!==window.document)try{new Worker(URL.createObjectURL(new Blob([""],{type:"application/javascript"}))).terminate(),e=!0}catch(t){console.log("Troika createWorkerModule: web workers not allowed; falling back to main thread execution. Cause: ["+t.message+"]")}return Pi=function(){return e},e},Fi=0,Li=0,Di=!1,Ui=Object.create(null),Ni=Object.create(null),ki=Object.create(null);function Oi(e){if(!(e&&"function"==typeof e.init||Di))throw new Error("requires `options.init` function");var t=e.dependencies,r=e.init,n=e.getTransferables,i=e.workerId;if(!Pi())return function(e){var t=function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return t._getInitResult().then((function(t){if("function"==typeof t)return t.apply(void 0,e);throw new Error("Worker module function was called but `init` did not return a callable function")}))};return t._getInitResult=function(){var r=e.dependencies,n=e.init;r=Array.isArray(r)?r.map((function(e){return e&&e._getInitResult?e._getInitResult():e})):[];var i=Bi.all(r).then((function(e){return n.apply(null,e)}));return t._getInitResult=function(){return i},i},t}(e);null==i&&(i="#default");var a="workerModule"+ ++Fi,s=e.name||a,o=null;function l(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(!o){o=zi(i,"registerModule",l.workerModuleData);var r=function(){o=null,Ni[i].delete(r)};(Ni[i]||(Ni[i]=new Set)).add(r)}return o.then((function(t){if(t.isCallable)return zi(i,"callModule",{id:a,args:e});throw new Error("Worker module function was called but `init` did not return a callable function")}))}return t=t&&t.map((function(e){return"function"!=typeof e||e.workerModuleData||(Di=!0,e=Oi({workerId:i,name:"<"+s+"> function dependency: "+e.name,init:"function(){return (\n"+Gi(e)+"\n)}"}),Di=!1),e&&e.workerModuleData&&(e=e.workerModuleData),e})),l.workerModuleData={isWorkerModule:!0,id:a,name:s,dependencies:t,init:Gi(r),getTransferables:n&&Gi(n)},l}function Gi(e){var t=e.toString();return!/^function/.test(t)&&/^\w+\s*\(/.test(t)&&(t="function "+t),t}function zi(e,t,r){var n=Bi(),i=++Li;return ki[i]=function(e){e.success?n.resolve(e.result):n.reject(new Error("Error in worker "+t+" call: "+e.error))},function(e){var t=Ui[e];if(!t){var r=Gi(Ri);(t=Ui[e]=new Worker(URL.createObjectURL(new Blob(["/** Worker Module Bootstrap: "+e.replace(/\*/g,"")+" **/\n\n;("+r+")()"],{type:"application/javascript"})))).onmessage=function(e){var t=e.data,r=t.messageId,n=ki[r];if(!n)throw new Error("WorkerModule response with empty or unknown messageId");delete ki[r],n(t)}}return t}(e).postMessage({messageId:i,action:t,data:r}),n}var Vi=Oi({name:"Thenable",dependencies:[Bi],init:function(e){return e}});function Hi(){var e=function(e){function t(e,t,r,n,i,a,s,o){var l=1-s;o.x=l*l*e+2*l*s*r+s*s*i,o.y=l*l*t+2*l*s*n+s*s*a}function r(e,t,r,n,i,a,s,o,l,c){var u=1-l;c.x=u*u*u*e+3*u*u*l*r+3*u*l*l*i+l*l*l*s,c.y=u*u*u*t+3*u*u*l*n+3*u*l*l*a+l*l*l*o}function n(e,t){for(var r,n,i,a,s,o=/([MLQCZ])([^MLQCZ]*)/g;r=o.exec(e);){var l=r[2].replace(/^\s*|\s*$/g,"").split(/[,\s]+/).map((function(e){return parseFloat(e)}));switch(r[1]){case"M":a=n=l[0],s=i=l[1];break;case"L":l[0]===a&&l[1]===s||t("L",a,s,a=l[0],s=l[1]);break;case"Q":t("Q",a,s,a=l[2],s=l[3],l[0],l[1]);break;case"C":t("C",a,s,a=l[4],s=l[5],l[0],l[1],l[2],l[3]);break;case"Z":a===n&&s===i||t("L",a,s,n,i)}}}function i(e,i,a){void 0===a&&(a=16);var s={x:0,y:0};n(e,(function(e,n,o,l,c,u,h,d,p){switch(e){case"L":i(n,o,l,c);break;case"Q":for(var f=n,m=o,g=1;g0;)n[i]=arguments[i+2];var a=o[t]||(o[t]=r.getUniformLocation(c,t));r["uniform"+e].apply(r,[a].concat(n))},setAttribute:function(e,t,n,a,o){var l=s[e];l||(l=s[e]={buf:r.createBuffer(),loc:r.getAttribLocation(c,e),data:null}),r.bindBuffer(r.ARRAY_BUFFER,l.buf),r.vertexAttribPointer(l.loc,t,r.FLOAT,!1,0,0),r.enableVertexAttribArray(l.loc),i?r.vertexAttribDivisor(l.loc,a):d("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(l.loc,a),o!==l.data&&(r.bufferData(r.ARRAY_BUFFER,o,n),l.data=o)}})}}}l[e].transaction(a)}function m(e,t){u++;try{r.activeTexture(r.TEXTURE0+u);var n=c[e];n||(n=c[e]=r.createTexture(),r.bindTexture(r.TEXTURE_2D,n),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.NEAREST)),r.bindTexture(r.TEXTURE_2D,n),t(n,u)}finally{u--}}function g(e,t,n){var i=r.createFramebuffer();h.push(i),r.bindFramebuffer(r.FRAMEBUFFER,i),r.activeTexture(r.TEXTURE0+t),r.bindTexture(r.TEXTURE_2D,e),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0);try{n(i)}finally{r.deleteFramebuffer(i),r.bindFramebuffer(r.FRAMEBUFFER,h[--h.length-1]||null)}}function v(){a={},l={},c={},u=-1,h.length=0}r.canvas.addEventListener("webglcontextlost",(function(e){v(),e.preventDefault()}),!1),s.set(r,n={gl:r,isWebGL2:i,getExtension:d,withProgram:f,withTexture:m,withTextureFramebuffer:g,handleContextLoss:v})}t(n)}function c(e,t,r,n,i,s,o,c){void 0===o&&(o=15),void 0===c&&(c=null),l(e,(function(e){var l=e.gl,u=e.withProgram;(0,e.withTexture)("copy",(function(e,h){l.texImage2D(l.TEXTURE_2D,0,l.RGBA,i,s,0,l.RGBA,l.UNSIGNED_BYTE,t),u("copy",a,"precision highp float;uniform sampler2D tex;varying vec2 vUV;void main(){gl_FragColor=texture2D(tex,vUV);}",(function(e){var t=e.setUniform;(0,e.setAttribute)("aUV",2,l.STATIC_DRAW,0,new Float32Array([0,0,2,0,0,2])),t("1i","image",h),l.bindFramebuffer(l.FRAMEBUFFER,c||null),l.disable(l.BLEND),l.colorMask(8&o,4&o,2&o,1&o),l.viewport(r,n,i,s),l.scissor(r,n,i,s),l.drawArrays(l.TRIANGLES,0,3)}))}))}))}var u=Object.freeze({__proto__:null,withWebGLContext:l,renderImageData:c,resizeWebGLCanvasWithoutClearing:function(e,t,r){var n=e.width,i=e.height;l(e,(function(a){var s=a.gl,o=new Uint8Array(n*i*4);s.readPixels(0,0,n,i,s.RGBA,s.UNSIGNED_BYTE,o),e.width=t,e.height=r,c(s,o,0,0,n,i)}))}});function h(e,t,r,n,a,s){void 0===s&&(s=1);var o=new Uint8Array(e*t),l=n[2]-n[0],c=n[3]-n[1],u=[];i(r,(function(e,t,r,n){u.push({x1:e,y1:t,x2:r,y2:n,minX:Math.min(e,r),minY:Math.min(t,n),maxX:Math.max(e,r),maxY:Math.max(t,n)})})),u.sort((function(e,t){return e.maxX-t.maxX}));for(var h=0;ha.minX&&t-na.minY){var s=f(e,t,a.x1,a.y1,a.x2,a.y2);st!=i.y2>t&&e<(i.x2-i.x1)*(t-i.y1)/(i.y2-i.y1)+i.x1&&(r+=i.y1p.y!=seg.w>p.y)&&(p.x<(seg.z-seg.x)*(p.y-seg.y)/(seg.w-seg.y)+seg.x);bool crossingUp=crossing&&vLineSegment.y"),c=l[0],u=l[1];c=String.fromCodePoint(n+=parseInt(c,36)),u=String.fromCodePoint(n+=parseInt(u,36)),i.set(c,u),t&&a.set(u,c)}})),{map:i,reverseMap:a}}function v(){if(!h){var e=g(f,!0),t=e.map,r=e.reverseMap;h=t,d=r,p=g(m,!1).map}}function A(e){return v(),h.get(e)||null}function y(e){return v(),d.get(e)||null}function x(e){return v(),p.get(e)||null}var b=r.L,w=r.R,_=r.EN,E=r.ES,S=r.ET,M=r.AN,T=r.CS,C=r.B,I=r.S,B=r.ON,R=r.BN,P=r.NSM,F=r.AL,L=r.LRO,D=r.RLO,U=r.LRE,N=r.RLE,k=r.PDF,O=r.LRI,G=r.RLI,z=r.FSI,V=r.PDI;var H;function Q(e){return function(){if(!H){var e=g("14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1",!0),t=e.map;e.reverseMap.forEach((function(e,r){t.set(r,e)})),H=t}}(),H.get(e)||null}function j(e,t,r,n){var i=e.length;r=Math.max(0,null==r?0:+r),n=Math.min(i-1,null==n?i-1:+n);var a=[];return t.paragraphs.forEach((function(i){var s=Math.max(r,i.start),o=Math.min(n,i.end);if(s=s&&u(e[h])&l;h--)c[h]=i.level;for(var d=i.level,p=1/0,f=0;fd&&(d=m),m=p;g--)for(var v=0;v=g){for(var A=v;v+1=g;)v++;v>A&&a.push([A+r,v+r])}}})),a}function W(e,t,r,n){for(var i=j(e,t,r,n),a=[],s=0;s0)Y--;else if(K>0){for(q=0;!W[W.length-1]._isolate;)W.pop();var re=W[W.length-1]._isolInitIndex;null!=re&&(p.set(re,J),p.set(J,re)),W.pop(),K--}X=W[W.length-1],d[J]=X._level,X._override&&h(J,X._override)}else Z&k?(0===Y&&(q>0?q--:!X._isolate&&W.length>1&&(W.pop(),X=W[W.length-1])),d[J]=X._level):Z&C&&(d[J]=m.level);else d[J]=X._level,X._override&&Z!==R&&h(J,X._override)}for(var ne=[],ie=null,ae=m.start;ae<=m.end;ae++){var se=r[ae];if(!(se&o)){var oe=d[ae],le=se&i,ce=se===V;ie&&oe===ie._level?(ie._end=ae,ie._endsWithIsolInit=le):ne.push(ie={_start:ae,_end:ae,_level:oe,_startsWithPDI:ce,_endsWithIsolInit:le})}}for(var ue=[],he=0;he=0;we--)if(!(r[we]&o)){be=d[we];break}var _e=ge[ge.length-1],Ee=d[_e],Se=m.level;if(!(r[_e]&i))for(var Me=_e+1;Me<=m.end;Me++)if(!(r[Me]&o)){Se=d[Me];break}ue.push({_seqIndices:ge,_sosType:Math.max(be,xe)%2?w:b,_eosType:Math.max(Se,Ee)%2?w:b})}}for(var Te=0;Te=0;De--)if(!(r[Ie[De]]&o)){Le=r[Ie[De]];break}h(Fe,Le&(i|V)?B:Le)}}if(c.get(_))for(var Ue=0;Ue=-1;ke--){var Oe=-1===ke?Be:r[Ie[ke]];if(Oe&a){Oe===F&&h(Ne,M);break}}}if(c.get(F))for(var Ge=0;Ge=0&&(Qe=r[Ie[We]])&o;We--);for(var Xe=Ve+1;Xe=0&&r[Ie[Ke]]&(S|o);Ke--)h(Ie[Ke],_);for(var Je=Ye+1;Je=0&&r[Ie[et]]&o;et--)h(Ie[et],B);for(var tt=Ze+1;tt=0;pt--){var ft=ct[pt].char;if(ft===dt||ft===y(x(ht))||A(x(ft))===ht){lt.push([ct[pt].seqIndex,ut]),ct.length=pt;break}}}lt.sort((function(e,t){return e[0]-t[0]}));for(var mt=0;mt=0;Et--){var St=Ie[Et];if(r[St]&ot){var Mt=r[St]&st?w:b;xt=Mt!==Ht(St)?Mt:Ht(St);break}}}if(xt){if(r[Ie[vt]]=r[Ie[At]]=xt,xt!==Ht(Ie[vt]))for(var Tt=vt+1;Tt=0;Ft--){if(!(r[Ie[Ft]]&o)){Pt=r[Ie[Ft]]&st?w:b;break}Bt=Ft}for(var Lt=Re,Dt=It+1;Dt=0&&u(e[Gt])&l;Gt--)d[Gt]=m.level}}return{levels:d,paragraphs:f};function zt(t,n){for(var a=t;a/gm,(function(e,t){let r=s.ShaderChunk[t];return r?Wi(r):e}))}const Xi=[];for(let vh=0;vh<256;vh++)Xi[vh]=(vh<16?"0":"")+vh.toString(16);const Yi=Object.assign||function(){let e=arguments[0];for(let t=1,r=arguments.length;t/gm,"\n//!BEGIN_POST_CHUNK $1\n$&\n//!END_POST_CHUNK\n")));if(d){let r=d({vertexShader:e,fragmentShader:t});e=r.vertexShader,t=r.fragmentShader}if(h){let e=[];t=t.replace(/^\/\/!BEGIN_POST_CHUNK[^]+?^\/\/!END_POST_CHUNK/gm,(t=>(e.push(t),""))),u=`${h}\n${e.join("\n")}\n${u}`}if(p){const e=`\nuniform float ${p};\n`;i=e+i,l=e+l}o&&(i=`${i}\nvoid troikaVertexTransform${n}(inout vec3 position, inout vec3 normal, inout vec2 uv) {\n ${o}\n}\n`,a=`\ntroika_position_${n} = vec3(position);\ntroika_normal_${n} = vec3(normal);\ntroika_uv_${n} = vec2(uv);\ntroikaVertexTransform${n}(troika_position_${n}, troika_normal_${n}, troika_uv_${n});\n${a}\n`,e=(e=`vec3 troika_position_${n};\nvec3 troika_normal_${n};\nvec2 troika_uv_${n};\n${e}\n`).replace(/\b(position|normal|uv)\b/g,((e,t,r,i)=>/\battribute\s+vec[23]\s+$/.test(i.substr(0,r))?t:`troika_${t}_${n}`)));return e=ea(e,n,i,a,s),t=ea(t,n,l,c,u),{vertexShader:e,fragmentShader:t}}(n,t,r);s=Ji[a]=e}n.vertexShader=s.vertexShader,n.fragmentShader=s.fragmentShader,Yi(n.uniforms,this.uniforms),t.timeUniform&&(n.uniforms[t.timeUniform]={get value(){return Date.now()-qi}}),this[i]&&this[i](n)},o=function(){return l(t.chained?e:e.clone())},l=function(n){const i=Object.create(n,c);return Object.defineProperty(i,"baseMaterial",{value:e}),Object.defineProperty(i,"id",{value:Zi++}),i.uuid=function(){const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,r=4294967295*Math.random()|0,n=4294967295*Math.random()|0;return(Xi[255&e]+Xi[e>>8&255]+Xi[e>>16&255]+Xi[e>>24&255]+"-"+Xi[255&t]+Xi[t>>8&255]+"-"+Xi[t>>16&15|64]+Xi[t>>24&255]+"-"+Xi[63&r|128]+Xi[r>>8&255]+"-"+Xi[r>>16&255]+Xi[r>>24&255]+Xi[255&n]+Xi[n>>8&255]+Xi[n>>16&255]+Xi[n>>24&255]).toUpperCase()}(),i.uniforms=Yi({},n.uniforms,t.uniforms),i.defines=Yi({},n.defines,t.defines),i.defines[`TROIKA_DERIVED_MATERIAL_${r}`]="",i.extensions=Yi({},n.extensions,t.extensions),i._listeners=void 0,i},c={constructor:{value:o},isDerivedMaterial:{value:!0},customProgramCacheKey:{writable:!0,configurable:!0,value:function(){return e.customProgramCacheKey()+"|"+r}},onBeforeCompile:{get:()=>a,set(e){this[i]=e}},copy:{writable:!0,configurable:!0,value:function(t){return e.copy.call(this,t),e.isShaderMaterial||e.isDerivedMaterial||(Yi(this.extensions,t.extensions),Yi(this.defines,t.defines),Yi(this.uniforms,s.UniformsUtils.clone(t.uniforms))),this}},clone:{writable:!0,configurable:!0,value:function(){const t=new e.constructor;return l(t).copy(this)}},getDepthMaterial:{writable:!0,configurable:!0,value:function(){let r=this._depthMaterial;return r||(r=this._depthMaterial=$i(e.isDerivedMaterial?e.getDepthMaterial():new s.MeshDepthMaterial({depthPacking:s.RGBADepthPacking}),t),r.defines.IS_DEPTH_MATERIAL="",r.uniforms=this.uniforms),r}},getDistanceMaterial:{writable:!0,configurable:!0,value:function(){let r=this._distanceMaterial;return r||(r=this._distanceMaterial=$i(e.isDerivedMaterial?e.getDistanceMaterial():new s.MeshDistanceMaterial,t),r.defines.IS_DISTANCE_MATERIAL="",r.uniforms=this.uniforms),r}},dispose:{writable:!0,configurable:!0,value(){const{_depthMaterial:t,_distanceMaterial:r}=this;t&&t.dispose(),r&&r.dispose(),e.dispose.call(this)}}};return n[r]=o,new o}function ea(e,t,r,n,i){return(n||i||r)&&(e=e.replace(ji,`\n${r}\nvoid troikaOrigMain${t}() {`),e+=`\nvoid main() {\n ${n}\n troikaOrigMain${t}();\n ${i}\n}`),e}function ta(e,t){return"uniforms"===e?void 0:"function"==typeof t?t.toString():t}let ra=0;const na=new Map;s.DoubleSide;const ia=()=>(self.performance||Date).now(),aa=Hi();let sa;const oa=function(){const e=[];let t=0;function r(){const n=ia();for(;e.length&&ia()-n<5;)e.shift()();t=e.length?setTimeout(r,0):0}return(...n)=>{const i=Bi();return e.push((()=>{const e=ia();try{aa.webgl.generateIntoCanvas(...n),i.resolve({timing:ia()-e})}catch(t){i.reject(t)}})),t||(t=setTimeout(r,0)),i}}(),la=function(){const e={};let t=0;return function(r,n,i,a,s,o,l,c,u,h){const d="TroikaTextSDFGenerator_JS_"+t++%4;let p=e[d];return p||(p=e[d]={workerModule:Oi({name:d,workerId:d,dependencies:[Hi,ia],init(e,t){const r=e().javascript.generate;return function(...e){const n=t();return{textureData:r(...e),timing:t()-n}}},getTransferables:e=>[e.textureData.buffer]}),requests:0,idleTimer:null}),p.requests++,clearTimeout(p.idleTimer),p.workerModule(r,n,i,a,s,o).then((({textureData:e,timing:t})=>{const i=ia(),a=new Uint8Array(4*e.length);for(let r=0;r{!function(e){Ni[e]&&Ni[e].forEach((function(e){e()})),Ui[e]&&(Ui[e].terminate(),delete Ui[e])}(d)}),2e3)),{timing:t}}))}}();const ca=aa.webglUtils.resizeWebGLCanvasWithoutClearing;const ua=Oi({name:"Typr Font Parser",dependencies:[function(){return"undefined"==typeof window&&(self.window=self),function(e){var t={parse:function(e){var r=t._bin,n=new Uint8Array(e);if("ttcf"==r.readASCII(n,0,4)){var i=4;r.readUshort(n,i),i+=2,r.readUshort(n,i),i+=2;var a=r.readUint(n,i);i+=4;for(var s=[],o=0;o>>r&1)&&t++;return t},t._lctf.readClassDef=function(e,r){var n=t._bin,i=[],a=n.readUshort(e,r);if(r+=2,1==a){var s=n.readUshort(e,r);r+=2;var o=n.readUshort(e,r);r+=2;for(var l=0;l0&&(a.featureParams=i+s);var o=n.readUshort(e,r);r+=2,a.tab=[];for(var l=0;l255?-1:t.CFF.glyphByUnicode(e,t.CFF.tableSE[r])},t.CFF.readEncoding=function(e,r,n){t._bin;var i=[".notdef"],a=e[r];if(r++,0!=a)throw"error: unknown encoding format: "+a;var s=e[r];r++;for(var o=0;o>4,m=15&p;if(15!=f&&d.push(f),15!=m&&d.push(m),15==m)break}for(var g="",v=[0,1,2,3,4,5,6,7,8,9,".","e","e-","reserved","-","endOfNumber"],A=0;A=s.xMax||s.yMin>=s.yMax)return null;if(s.noc>0){s.endPts=[];for(var o=0;o=1&&o.fmt<=2){c=a.readUshort(e,n),n+=2;var h=a.readUshort(e,n);n+=2,u=t._lctf.numOfOnes(c);var d=t._lctf.numOfOnes(h);if(1==o.fmt){o.pairsets=[];var p=a.readUshort(e,n);n+=2;for(var f=0;f=1&&o.fmt<=2){if(1==o.fmt)o.delta=a.readShort(e,n),n+=2;else if(2==o.fmt){var c=a.readUshort(e,n);n+=2,o.newg=a.readUshorts(e,n,c),n+=2*o.newg.length}}else if(4==r){o.vals=[],c=a.readUshort(e,n),n+=2;for(var u=0;u>>8;if(0!=(h&=15))throw"unknown kern table format: "+h;r=t.kern.readFormat0(e,r,l)}return l},t.kern.parseV1=function(e,r,n,i){var a=t._bin;a.readFixed(e,r),r+=4;var s=a.readUint(e,r);r+=4;for(var o={glyph1:[],rval:[]},l=0;l>>8;if(0!=(u&=15))throw"unknown kern table format: "+u;r=t.kern.readFormat0(e,r,o)}return o},t.kern.readFormat0=function(e,r,n){var i=t._bin,a=-1,s=i.readUshort(e,r);r+=2,i.readUshort(e,r),r+=2,i.readUshort(e,r),r+=2,i.readUshort(e,r),r+=2;for(var o=0;o=i.map.length?0:i.map[t];if(4==i.format){for(var a=-1,s=0;st?0:65535&(0!=i.idRangeOffset[a]?i.glyphIdArray[t-i.startCount[a]+(i.idRangeOffset[a]>>1)-(i.idRangeOffset.length-a)]:t+i.idDelta[a])}if(12==i.format){if(t>i.groups[i.groups.length-1][1])return 0;for(s=0;s-1?t.U._simpleGlyph(i,n):t.U._compoGlyph(i,r,n))},t.U._simpleGlyph=function(e,r){for(var n=0;na)){for(var p=!0,f=0,m=0;ma)){for(p=!0,m=0;m>1,s.length=0,l=!0;else if("o3"==S||"o23"==S)s.length%2!=0&&!l&&(c=s.shift()+i.nominalWidthX),o+=s.length>>1,s.length=0,l=!0;else if("o4"==S)s.length>1&&!l&&(c=s.shift()+i.nominalWidthX,l=!0),u&&t.U.P.closePath(a),p+=s.pop(),t.U.P.moveTo(a,d,p),u=!0;else if("o5"==S)for(;s.length>0;)d+=s.shift(),p+=s.shift(),t.U.P.lineTo(a,d,p);else if("o6"==S||"o7"==S)for(var M=s.length,T="o6"==S,C=0;CMath.abs(b-p)?d=x+s.shift():p=b+s.shift(),t.U.P.curveTo(a,f,m,g,v,w,_),t.U.P.curveTo(a,A,y,x,b,d,p));else if("o14"==S){if(s.length>0&&!l&&(c=s.shift()+n.nominalWidthX,l=!0),4==s.length){var R=s.shift(),P=s.shift(),F=s.shift(),L=s.shift(),D=t.CFF.glyphBySE(n,F),U=t.CFF.glyphBySE(n,L);t.U._drawCFF(n.CharStrings[D],r,n,i,a),r.x=R,r.y=P,t.U._drawCFF(n.CharStrings[U],r,n,i,a)}u&&(t.U.P.closePath(a),u=!1)}else if("o19"==S||"o20"==S)s.length%2!=0&&!l&&(c=s.shift()+i.nominalWidthX),o+=s.length>>1,s.length=0,l=!0,h+=o+7>>3;else if("o21"==S)s.length>2&&!l&&(c=s.shift()+i.nominalWidthX,l=!0),p+=s.pop(),d+=s.pop(),u&&t.U.P.closePath(a),t.U.P.moveTo(a,d,p),u=!0;else if("o22"==S)s.length>1&&!l&&(c=s.shift()+i.nominalWidthX,l=!0),d+=s.pop(),u&&t.U.P.closePath(a),t.U.P.moveTo(a,d,p),u=!0;else if("o25"==S){for(;s.length>6;)d+=s.shift(),p+=s.shift(),t.U.P.lineTo(a,d,p);f=d+s.shift(),m=p+s.shift(),g=f+s.shift(),v=m+s.shift(),d=g+s.shift(),p=v+s.shift(),t.U.P.curveTo(a,f,m,g,v,d,p)}else if("o26"==S)for(s.length%2&&(d+=s.shift());s.length>0;)f=d,m=p+s.shift(),d=g=f+s.shift(),p=(v=m+s.shift())+s.shift(),t.U.P.curveTo(a,f,m,g,v,d,p);else if("o27"==S)for(s.length%2&&(p+=s.shift());s.length>0;)m=p,g=(f=d+s.shift())+s.shift(),v=m+s.shift(),d=g+s.shift(),p=v,t.U.P.curveTo(a,f,m,g,v,d,p);else if("o10"==S||"o29"==S){var N="o10"==S?i:n;if(0==s.length)console.debug("error: empty stack");else{var k=s.pop(),O=N.Subrs[k+N.Bias];r.x=d,r.y=p,r.nStems=o,r.haveWidth=l,r.width=c,r.open=u,t.U._drawCFF(O,r,n,i,a),d=r.x,p=r.y,o=r.nStems,l=r.haveWidth,c=r.width,u=r.open}}else if("o30"==S||"o31"==S){var G=s.length,z=(B=0,"o31"==S);for(B+=G-(M=-3&G);B>>1|(21845&p)<<1;f=(61680&(f=(52428&f)>>>2|(13107&f)<<2))>>>4|(3855&f)<<4,d[p]=((65280&f)>>>8|(255&f)<<8)>>>1}var m=function(e,t,n){for(var i=e.length,a=0,s=new r(t);a>>c]=u}else for(o=new r(i),a=0;a>>15-e[a]);return o},g=new t(288);for(p=0;p<144;++p)g[p]=8;for(p=144;p<256;++p)g[p]=9;for(p=256;p<280;++p)g[p]=7;for(p=280;p<288;++p)g[p]=8;var v=new t(32);for(p=0;p<32;++p)v[p]=5;var A=m(g,9,1),y=m(v,5,1),x=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},b=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},w=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},_=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(e,t,r){var n=new Error(t||_[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,E),!r)throw n;return n},S=function(e,o,l){var u=e.length;if(!u||l&&!l.l&&u<5)return o||new t(0);var d=!o||l,p=!l||l.i;l||(l={}),o||(o=new t(3*u));var f,g=function(e){var r=o.length;if(e>r){var n=new t(Math.max(2*r,e));n.set(o),o=n}},v=l.f||0,_=l.p||0,S=l.b||0,M=l.l,T=l.d,C=l.m,I=l.n,B=8*u;do{if(!M){l.f=v=b(e,_,1);var R=b(e,_+1,3);if(_+=3,!R){var P=e[(H=((f=_)/8|0)+(7&f&&1)+4)-4]|e[H-3]<<8,F=H+P;if(F>u){p&&E(0);break}d&&g(S+P),o.set(e.subarray(H,F),S),l.b=S+=P,l.p=_=8*F;continue}if(1==R)M=A,T=y,C=9,I=5;else if(2==R){var L=b(e,_,31)+257,D=b(e,_+10,15)+4,U=L+b(e,_+5,31)+1;_+=14;for(var N=new t(U),k=new t(19),O=0;O>>4)<16)N[O++]=H;else{var j=0,W=0;for(16==H?(W=3+b(e,_,3),_+=2,j=N[O-1]):17==H?(W=3+b(e,_,7),_+=3):18==H&&(W=11+b(e,_,127),_+=7);W--;)N[O++]=j}}var X=N.subarray(0,L),Y=N.subarray(L);C=x(X),I=x(Y),M=m(X,C,1),T=m(Y,I,1)}else E(1);if(_>B){p&&E(0);break}}d&&g(S+131072);for(var q=(1<>>4;if((_+=15&j)>B){p&&E(0);break}if(j||E(2),Z<256)o[S++]=Z;else{if(256==Z){J=_,M=null;break}var $=Z-254;if(Z>264){var ee=i[O=Z-257];$=b(e,_,(1<>>4;if(te||E(3),_+=15&te,Y=h[re],re>3&&(ee=a[re],Y+=w(e,_)&(1<B){p&&E(0);break}d&&g(S+131072);for(var ne=S+$;Se.length)&&(a=e.length);var s=new(e instanceof r?r:e instanceof n?n:t)(a-i);return s.set(e.subarray(i,a)),s}(o,0,S)},M=new t(0),T="undefined"!=typeof TextDecoder&&new TextDecoder;try{T.decode(M,{stream:!0})}catch(e){}return e.convert_streams=function(e){var t=new DataView(e),r=0;function n(){var e=t.getUint16(r);return r+=2,e}function i(){var e=t.getUint32(r);return r+=4,e}function a(e){v.setUint16(A,e),A+=2}function s(e){v.setUint32(A,e),A+=4}for(var o={signature:i(),flavor:i(),length:i(),numTables:n(),reserved:n(),totalSfntSize:i(),majorVersion:n(),minorVersion:n(),metaOffset:i(),metaLength:i(),metaOrigLength:i(),privOffset:i(),privLength:i()},l=0;Math.pow(2,l)<=o.numTables;)l++;l--;for(var c=16*Math.pow(2,l),u=16*o.numTables-c,h=12,d=[],p=0;p{let[a,s]=n.split("+");a=parseInt(a,36),s=s?parseInt(s,36):0,i.set(r+=a,e[t]);for(let o=s;o--;)i.set(++r,e[t])}))}}return i.get(e)||32}const s=[null,"isol","init","fina","medi"];function o(e){const t=new Uint8Array(e.length);let r=32,n=1,i=-1;for(let s=0;s65535&&s++)}return t}function l(t){const n=Object.create(null),i={unitsPerEm:t.head.unitsPerEm,ascender:t.hhea.ascender,descender:t.hhea.descender,forEachGlyph(a,l,c,u){let h=0;const d=1/i.unitsPerEm*l,p=function(t,r){const n=[];for(let a=0;a65535&&a++,n.push(e.U.codeToGlyph(t,i))}const i=t.GSUB;if(i){const{lookupList:t,featureList:a}=i;let l;const c=/^(rlig|liga|mset|isol|init|fina|medi|half|pres|blws)$/,u=[];a.forEach((i=>{if(c.test(i.tag))for(let a=0;a{if(-1!==i){let a=n[i];if(!a){const{cmds:s,crds:o}=e.U.glyphToPath(t,i);let l,c,u,h,d="",p=0;for(let e=0,t=s.length;e1?",":"")+o[p++]}if(o.length){l=c=1/0,u=h=-1/0;for(let e=0,t=o.length;eu&&(u=t),r>h&&(h=r)}}else l=u=c=h=0;a=n[i]={index:i,advanceWidth:t.hmtx.aWidth[i],xMin:l,yMin:c,xMax:u,yMax:h,path:d,pathCommandCount:s.length}}-1!==m&&(h+=e.U.getPairAdjustment(t,m,i)*d),u.call(null,a,h,f),a.advanceWidth&&(h+=a.advanceWidth*d),c&&(h+=c*l),m=i}f+=a.codePointAt(f)>65535?2:1})),h}};return i}return function(r){const n=new Uint8Array(r,0,4),i=e._bin.readASCII(n,0,4);if("wOFF"===i)r=t(r);else if("wOF2"===i)throw new Error("woff2 fonts not supported");return l(e.parse(r)[0])}}],init:(e,t,r)=>r(e(),t())}),ha={defaultFontURL:"https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxM.woff",sdfGlyphSize:64,sdfMargin:1/16,sdfExponent:9,textureWidth:2048},da=new s.Color;let pa=!1;function fa(){return(self.performance||Date).now()}const ma=Object.create(null);function ga(e,t){pa=!0,e=Aa({},e);const r=fa();if(e.font=function(e){ya||(ya="undefined"==typeof document?{}:document.createElement("a"));return ya.href=e,ya.href}(e.font||ha.defaultFontURL),e.text=""+e.text,e.sdfGlyphSize=e.sdfGlyphSize||ha.sdfGlyphSize,null!=e.colorRanges){let t={};for(let r in e.colorRanges)if(e.colorRanges.hasOwnProperty(r)){let n=e.colorRanges[r];"number"!=typeof n&&(n=da.set(n).getHex()),t[r]=n}e.colorRanges=t}Object.freeze(e);const{textureWidth:n,sdfExponent:i}=ha,{sdfGlyphSize:a}=e,o=n/a*4;let l=ma[a];if(!l){const e=document.createElement("canvas");e.width=n,e.height=256*a/o,l=ma[a]={glyphCount:0,sdfGlyphSize:a,sdfCanvas:e,sdfTexture:new s.Texture(e,void 0,void 0,void 0,s.LinearFilter,s.LinearFilter),contextLost:!1,glyphsByFont:new Map},l.sdfTexture.generateMipmaps=!1,function(e){const t=e.sdfCanvas;t.addEventListener("webglcontextlost",(t=>{console.log("Context Lost",t),t.preventDefault(),e.contextLost=!0})),t.addEventListener("webglcontextrestored",(t=>{console.log("Context Restored",t),e.contextLost=!1;const r=[];e.glyphsByFont.forEach((t=>{t.forEach((t=>{r.push(va(t,e,!0))}))})),Bi.all(r).then((()=>{xa(e),e.sdfTexture.needsUpdate=!0}))}))}(l)}const{sdfTexture:c,sdfCanvas:u}=l;let h=l.glyphsByFont.get(e.font);h||l.glyphsByFont.set(e.font,h=new Map),wa(e).then((s=>{const{glyphIds:d,glyphPositions:p,fontSize:f,unitsPerEm:m,timings:g}=s,v=[],A=new Float32Array(4*d.length),y=f/m;let x=0,b=0;const w=fa();d.forEach(((e,t)=>{let r=h.get(e);if(!r){const{path:t,pathBounds:n}=s.glyphData[e],i=Math.max(n[2]-n[0],n[3]-n[1])/a*(ha.sdfMargin*a+.5),o=l.glyphCount++,c=[n[0]-i,n[1]-i,n[2]+i,n[3]+i];h.set(e,r={path:t,atlasIndex:o,sdfViewBox:c}),v.push(r)}const{sdfViewBox:n}=r,i=p[b++],o=p[b++];A[x++]=i+n[0]*y,A[x++]=o+n[1]*y,A[x++]=i+n[2]*y,A[x++]=o+n[3]*y,d[t]=r.atlasIndex})),g.quads=(g.quads||0)+(fa()-w);const _=fa();g.sdf={};const E=u.height,S=Math.ceil(l.glyphCount/o),M=Math.pow(2,Math.ceil(Math.log2(S*a)));M>E&&(console.info(`Increasing SDF texture size ${E}->${M}`),ca(u,n,M),c.dispose()),Bi.all(v.map((t=>va(t,l,e.gpuAccelerateSDF).then((({timing:e})=>{g.sdf[t.atlasIndex]=e}))))).then((()=>{v.length&&!l.contextLost&&(xa(l),c.needsUpdate=!0),g.sdfTotal=fa()-_,g.total=fa()-r,t(Object.freeze({parameters:e,sdfTexture:c,sdfGlyphSize:a,sdfExponent:i,glyphBounds:A,glyphAtlasIndices:d,glyphColors:s.glyphColors,caretPositions:s.caretPositions,caretHeight:s.caretHeight,chunkedBounds:s.chunkedBounds,ascender:s.ascender,descender:s.descender,lineHeight:s.lineHeight,topBaseline:s.topBaseline,blockBounds:s.blockBounds,visibleBounds:s.visibleBounds,timings:s.timings,get totalBounds(){return console.log("totalBounds deprecated, use blockBounds instead"),s.blockBounds},get totalBlockSize(){console.log("totalBlockSize deprecated, use blockBounds instead");const[e,t,r,n]=s.blockBounds;return[r-e,n-t]}}))}))})),Bi.all([]).then((()=>{var e;l.contextLost||(e=u)._warm||(aa.webgl.isSupported(e),e._warm=!0)}))}function va({path:e,atlasIndex:t,sdfViewBox:r},{sdfGlyphSize:n,sdfCanvas:i,contextLost:a},s){if(a)return Promise.resolve({timing:-1});const{textureWidth:o,sdfExponent:l}=ha,c=Math.max(r[2]-r[0],r[3]-r[1]),u=Math.floor(t/4);return function(e,t,r,n,i,a,s,o,l,c,u=!0){return u?oa(e,t,r,n,i,a,s,o,l,c).then(null,(u=>(sa||(console.warn("WebGL SDF generation failed, falling back to JS",u),sa=!0),la(e,t,r,n,i,a,s,o,l,c)))):la(e,t,r,n,i,a,s,o,l,c)}(n,n,e,r,c,l,i,u%(o/n)*n,Math.floor(u/(o/n))*n,t%4,s)}function Aa(e,t){for(let r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}let ya;function xa(e){if("function"!=typeof createImageBitmap){console.info("Safari<15: applying SDF canvas workaround");const{sdfCanvas:t,sdfTexture:r}=e,{width:n,height:i}=t,a=e.sdfCanvas.getContext("webgl");let s=r.image.data;s&&s.length===n*i*4||(s=new Uint8Array(n*i*4),r.image={width:n,height:i,data:s},r.flipY=!1,r.isDataTexture=!0),a.readPixels(0,0,n,i,a.RGBA,a.UNSIGNED_BYTE,s)}}const ba=Oi({name:"Typesetter",dependencies:[ha,ua,function(e,t,r){const{defaultFontURL:n}=r,i=Object.create(null),a=1/0,s=/[\u00AD\u034F\u061C\u115F-\u1160\u17B4-\u17B5\u180B-\u180E\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFE00-\uFE0F\uFEFF\uFFA0\uFFF0-\uFFF8]/,o=/[\s\-\u007C\u00AD\u2010\u2012-\u2014\u2027\u2056\u2E17\u2E40]/;function l(t,r){t||(t=n);let a=i[t];a?a.pending?a.pending.push(r):r(a):(i[t]={pending:[r]},function(t,r){!function i(){const a=e=>{console.error(`Failure loading font ${t}${t===n?"":"; trying fallback"}`,e),t!==n&&(t=n,i())};try{const n=new XMLHttpRequest;n.open("get",t,!0),n.responseType="arraybuffer",n.onload=function(){if(n.status>=400)a(new Error(n.statusText));else if(n.status>0)try{const t=e(n.response);r(t)}catch(Ha){a(Ha)}},n.onerror=a,n.send()}catch(s){a(s)}}()}(t,(e=>{let r=i[t].pending;i[t]=e,r.forEach((t=>t(e)))})))}function c({text:e="",font:r=n,sdfGlyphSize:i=64,fontSize:c=1,letterSpacing:f=0,lineHeight:m="normal",maxWidth:g=a,direction:v,textAlign:A="left",textIndent:y=0,whiteSpace:x="normal",overflowWrap:b="normal",anchorX:w=0,anchorY:_=0,includeCaretPositions:E=!1,chunkedBoundsSize:S=8192,colorRanges:M=null},T,C=!1){const I=d(),B={fontLoad:0,typesetting:0};e.indexOf("\r")>-1&&(console.info("Typesetter: got text with \\r chars; normalizing to \\n"),e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n")),c=+c,f=+f,g=+g,m=m||"normal",y=+y,l(r,(r=>{const n=isFinite(g);let i=null,l=null,R=null,P=null,F=null,L=null,D=null,U=0,N=0,k="nowrap"!==x;const{ascender:O,descender:G,unitsPerEm:z}=r;B.fontLoad=d()-I;const V=d(),H=c/z;"normal"===m&&(m=(O-G)/z);const Q=((m*=c)-(O-G)*H)/2,j=-(O*H+Q),W=Math.min(m,(O-G)*H),X=(O+G)/2*H-W/2;let Y=y,q=new p;const K=[q];r.forEachGlyph(e,c,f,((t,r,i)=>{const a=e.charAt(i),l=t.advanceWidth*H,u=q.count;let h;if("isEmpty"in t||(t.isWhitespace=!!a&&/\s/.test(a),t.canBreakAfter=!!a&&o.test(a),t.isEmpty=t.xMin===t.xMax||t.yMin===t.yMax||s.test(a)),t.isWhitespace||t.isEmpty||N++,k&&n&&!t.isWhitespace&&r+l+Y>g&&u){if(q.glyphAt(u-1).glyphObj.canBreakAfter)h=new p,Y=-r;else for(let e=u;e--;){if(0===e&&"break-word"===b){h=new p,Y=-r;break}if(q.glyphAt(e).glyphObj.canBreakAfter){h=q.splitAt(e+1);const t=h.glyphAt(0).x;Y-=t;for(let e=h.count;e--;)h.glyphAt(e).x-=t;break}}h&&(q.isSoftWrapped=!0,q=h,K.push(q),U=g)}let d=q.glyphAt(q.count);d.glyphObj=t,d.x=r+Y,d.width=l,d.charIndex=i,"\n"===a&&(q=new p,K.push(q),Y=-(r+l+f*c)+y)})),K.forEach((e=>{for(let t=e.count;t--;){let{glyphObj:r,x:n,width:i}=e.glyphAt(t);if(!r.isWhitespace)return e.width=n+i,void(e.width>U&&(U=e.width))}}));let J=0,Z=0;if(w&&("number"==typeof w?J=-w:"string"==typeof w&&(J=-U*("left"===w?0:"center"===w?.5:"right"===w?1:u(w)))),_)if("number"==typeof _)Z=-_;else if("string"==typeof _){let e=K.length*m;Z="top"===_?0:"top-baseline"===_?-j:"middle"===_?e/2:"bottom"===_?e:"bottom-baseline"===_?e-Q+G*H:u(_)*e}if(!C){const n=t.getEmbeddingLevels(e,v);i=new Uint16Array(N),l=new Float32Array(2*N),R={},L=[a,a,-1/0,-1/0],D=[];let s=j;E&&(F=new Float32Array(3*e.length)),M&&(P=new Uint8Array(3*N));let o,c,u=0,d=-1,p=-1;if(K.forEach(((f,g)=>{let{count:v,width:y}=f;if(v>0){let m=0;for(let e=v;e--&&f.glyphAt(e).glyphObj.isWhitespace;)m++;let g=0,x=0;if("center"===A)g=(U-y)/2;else if("right"===A)g=U-y;else if("justify"===A&&f.isSoftWrapped){let e=0;for(let t=v-m;t--;)f.glyphAt(t).glyphObj.isWhitespace&&e++;x=(U-y)/e}if(x||g){let e=0;for(let t=0;t=t){let t=e,a=e;for(;ar)break;aw=e;for(let A=0;A1&&h(F,d,n),d=e}if(M){const{charIndex:e}=m;for(;e>p;)p++,M.hasOwnProperty(p)&&(c=M[p])}if(!w.isWhitespace&&!w.isEmpty){const e=u++;R[g]||(R[g]={path:w.path,pathBounds:[w.xMin,w.yMin,w.xMax,w.yMax]});const t=m.x+J,r=s+Z;l[2*e]=t,l[2*e+1]=r;const n=t+w.xMin*H,h=r+w.yMin*H,d=t+w.xMax*H,p=r+w.yMax*H;nL[2]&&(L[2]=d),p>L[3]&&(L[3]=p),e%S==0&&(o={start:e,end:e,rect:[a,a,-1/0,-1/0]},D.push(o)),o.end++;const f=o.rect;if(nf[2]&&(f[2]=d),p>f[3]&&(f[3]=p),i[e]=g,M){const t=3*e;P[t]=c>>16&255,P[t+1]=c>>8&255,P[t+2]=255&c}}}}s-=m})),F){const t=e.length-d;t>1&&h(F,d,t)}}B.typesetting=d()-V,T({glyphIds:i,glyphPositions:l,glyphData:R,caretPositions:F,caretHeight:W,glyphColors:P,chunkedBounds:D,fontSize:c,unitsPerEm:z,ascender:O*H,descender:G*H,lineHeight:m,topBaseline:j,blockBounds:[J,Z-K.length*m,J+U,Z],visibleBounds:L,timings:B})}))}function u(e){let t=e.match(/^([\d.]+)%$/),r=t?parseFloat(t[1]):NaN;return isNaN(r)?0:r/100}function h(e,t,r){const n=e[3*t],i=e[3*t+1],a=e[3*t+2],s=(i-n)/r;for(let o=0;o(Object.defineProperty(e,t,{get(){return this.data[this.index*f.length+r]},set(e){this.data[this.index*f.length+r]=e}}),e)),{data:null,index:0}),{typeset:c,measure:function(e,t){c(e,(e=>{const[r,n,i,a]=e.blockBounds;t({width:i-r,height:a-n})}),{metricsOnly:!0})},loadFont:l}},Qi],init(e,t,r,n){const{defaultFontURL:i}=e;return r(t,n(),{defaultFontURL:i})}}),wa=Oi({name:"Typesetter",dependencies:[ba,Vi],init:(e,t)=>function(r){const n=new t;return e.typeset(r,n.resolve),n},getTransferables(e){const t=[e.glyphPositions.buffer,e.glyphIds.buffer];return e.caretPositions&&t.push(e.caretPositions.buffer),e.glyphColors&&t.push(e.glyphColors.buffer),t}});const _a=(()=>{const e={};const t="aTroikaGlyphIndex";class r extends s.InstancedBufferGeometry{constructor(){super(),this.detail=1,this.curveRadius=0,this.groups=[{start:0,count:1/0,materialIndex:0},{start:0,count:1/0,materialIndex:1}],this.boundingSphere=new s.Sphere,this.boundingBox=new s.Box3}computeBoundingSphere(){}computeBoundingBox(){}setSide(e){const t=this.getIndex().count;this.setDrawRange(e===s.BackSide?t/2:0,e===s.DoubleSide?t:t/2)}set detail(t){if(t!==this._detail){this._detail=t,("number"!=typeof t||t<1)&&(t=1);let r=function(t){let r=e[t];if(!r){const n=new s.PlaneBufferGeometry(1,1,t,t),i=n.clone(),a=n.attributes,o=i.attributes,l=new s.BufferGeometry,c=a.uv.count;for(let e=0;e{l.setAttribute(e,new s.Float32BufferAttribute([...a[e].array,...o[e].array],a[e].itemSize))})),l.setIndex([...n.index.array,...i.index.array.map((e=>e+c))]),l.translate(.5,.5,0),r=e[t]=l}return r}(t);["position","normal","uv"].forEach((e=>{this.attributes[e]=r.attributes[e].clone()})),this.setIndex(r.getIndex().clone())}}get detail(){return this._detail}set curveRadius(e){e!==this._curveRadius&&(this._curveRadius=e,this._updateBounds())}get curveRadius(){return this._curveRadius}updateGlyphs(e,r,a,s,o){n(this,"aTroikaGlyphBounds",e,4),n(this,t,r,1),n(this,"aTroikaGlyphColor",o,3),this._blockBounds=a,this._chunkedBounds=s,i(this,r.length),this._updateBounds()}_updateBounds(){const e=this._blockBounds;if(e){const{curveRadius:t,boundingBox:r}=this;if(t){const{PI:n,floor:i,min:a,max:s,sin:o,cos:l}=Math,c=n/2,u=2*n,h=Math.abs(t),d=e[0]/h,p=e[2]/h,f=i((d+c)/u)!==i((p+c)/u)?-h:a(o(d)*h,o(p)*h),m=i((d-c)/u)!==i((p-c)/u)?h:s(o(d)*h,o(p)*h),g=i((d+n)/u)!==i((p+n)/u)?2*h:s(h-l(d)*h,h-l(p)*h);r.min.set(f,e[1],t<0?-g:0),r.max.set(m,e[3],t<0?0:g)}else r.min.set(e[0],e[1],0),r.max.set(e[2],e[3],0);r.getBoundingSphere(this.boundingSphere)}}applyClipRect(e){let r=this.getAttribute(t).count,n=this._chunkedBounds;if(n)for(let t=n.length;t--;){r=n[t].end;let i=n[t].rect;if(i[1]e.y&&i[0]e.x)break}i(this,r)}}function n(e,t,r,n){const i=e.getAttribute(t);r?i&&i.array.length===r.length?(i.array.set(r),i.needsUpdate=!0):(e.setAttribute(t,new s.InstancedBufferAttribute(r,n)),delete e._maxInstanceCount,e.dispose()):i&&e.deleteAttribute(t)}function i(e,t){e[e.hasOwnProperty("instanceCount")?"instanceCount":"maxInstancedCount"]=t}return r.prototype.setAttribute||(r.prototype.setAttribute=function(e,t){return this.attributes[e]=t,this}),r})();const Ea=(()=>{const e=new s.MeshBasicMaterial({color:16777215,side:s.DoubleSide,transparent:!0}),t=8421504,r=new s.Matrix4,n=new s.Vector3,i=new s.Vector3,a=[],o=new s.Vector3,l="+x+y";function c(e){return Array.isArray(e)?e[0]:e}let u=()=>{const t=new s.Mesh(new s.PlaneBufferGeometry(1,1),e);return u=()=>t,t},h=()=>{const t=new s.Mesh(new s.PlaneBufferGeometry(1,1,32,1),e);return h=()=>t,t};const d={type:"syncstart"},p={type:"synccomplete"},f=["font","fontSize","letterSpacing","lineHeight","maxWidth","overflowWrap","text","direction","textAlign","textIndent","whiteSpace","anchorX","anchorY","colorRanges","sdfGlyphSize"],m=f.concat("material","color","depthOffset","clipRect","curveRadius","orientation","glyphGeometryDetail");class g extends s.Mesh{constructor(){super(new _a,null),this.text="",this.anchorX=0,this.anchorY=0,this.curveRadius=0,this.direction="auto",this.font=null,this.fontSize=.1,this.letterSpacing=0,this.lineHeight="normal",this.maxWidth=1/0,this.overflowWrap="normal",this.textAlign="left",this.textIndent=0,this.whiteSpace="normal",this.material=null,this.color=null,this.colorRanges=null,this.outlineWidth=0,this.outlineColor=0,this.outlineOpacity=1,this.outlineBlur=0,this.outlineOffsetX=0,this.outlineOffsetY=0,this.strokeWidth=0,this.strokeColor=t,this.strokeOpacity=1,this.fillOpacity=1,this.depthOffset=0,this.clipRect=null,this.orientation=l,this.glyphGeometryDetail=1,this.sdfGlyphSize=null,this.gpuAccelerateSDF=!0,this.debugSDF=!1}sync(e){this._needsSync&&(this._needsSync=!1,this._isSyncing?(this._queuedSyncs||(this._queuedSyncs=[])).push(e):(this._isSyncing=!0,this.dispatchEvent(d),ga({text:this.text,font:this.font,fontSize:this.fontSize||.1,letterSpacing:this.letterSpacing||0,lineHeight:this.lineHeight||"normal",maxWidth:this.maxWidth,direction:this.direction||"auto",textAlign:this.textAlign,textIndent:this.textIndent,whiteSpace:this.whiteSpace,overflowWrap:this.overflowWrap,anchorX:this.anchorX,anchorY:this.anchorY,colorRanges:this.colorRanges,includeCaretPositions:!0,sdfGlyphSize:this.sdfGlyphSize,gpuAccelerateSDF:this.gpuAccelerateSDF},(t=>{this._isSyncing=!1,this._textRenderInfo=t,this.geometry.updateGlyphs(t.glyphBounds,t.glyphAtlasIndices,t.blockBounds,t.chunkedBounds,t.glyphColors);const r=this._queuedSyncs;r&&(this._queuedSyncs=null,this._needsSync=!0,this.sync((()=>{r.forEach((e=>e&&e()))}))),this.dispatchEvent(p),e&&e()}))))}onBeforeRender(e,t,r,n,i,a){this.sync(),i.isTroikaTextMaterial&&this._prepareForRender(i),i._hadOwnSide=i.hasOwnProperty("side"),this.geometry.setSide(i._actualSide=i.side),i.side=s.FrontSide}onAfterRender(e,t,r,n,i,a){i._hadOwnSide?i.side=i._actualSide:delete i.side}dispose(){this.geometry.dispose()}get textRenderInfo(){return this._textRenderInfo||null}get material(){let t=this._derivedMaterial;const r=this._baseMaterial||this._defaultMaterial||(this._defaultMaterial=e.clone());if(t&&t.baseMaterial===r||(t=this._derivedMaterial=function(e){const t=$i(e,{chained:!0,extensions:{derivatives:!0},uniforms:{uTroikaSDFTexture:{value:null},uTroikaSDFTextureSize:{value:new s.Vector2},uTroikaSDFGlyphSize:{value:0},uTroikaSDFExponent:{value:0},uTroikaTotalBounds:{value:new s.Vector4(0,0,0,0)},uTroikaClipRect:{value:new s.Vector4(0,0,0,0)},uTroikaDistanceOffset:{value:0},uTroikaOutlineOpacity:{value:0},uTroikaFillOpacity:{value:1},uTroikaPositionOffset:{value:new s.Vector2},uTroikaCurveRadius:{value:0},uTroikaBlurRadius:{value:0},uTroikaStrokeWidth:{value:0},uTroikaStrokeColor:{value:new s.Color},uTroikaStrokeOpacity:{value:1},uTroikaOrient:{value:new s.Matrix3},uTroikaUseGlyphColors:{value:!0},uTroikaSDFDebug:{value:!1}},vertexDefs:"\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform vec4 uTroikaTotalBounds;\nuniform vec4 uTroikaClipRect;\nuniform mat3 uTroikaOrient;\nuniform bool uTroikaUseGlyphColors;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaBlurRadius;\nuniform vec2 uTroikaPositionOffset;\nuniform float uTroikaCurveRadius;\nattribute vec4 aTroikaGlyphBounds;\nattribute float aTroikaGlyphIndex;\nattribute vec3 aTroikaGlyphColor;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec3 vTroikaGlyphColor;\nvarying vec2 vTroikaGlyphDimensions;\n",vertexTransform:"\nvec4 bounds = aTroikaGlyphBounds;\nbounds.xz += uTroikaPositionOffset.x;\nbounds.yw -= uTroikaPositionOffset.y;\n\nvec4 outlineBounds = vec4(\n bounds.xy - uTroikaDistanceOffset - uTroikaBlurRadius,\n bounds.zw + uTroikaDistanceOffset + uTroikaBlurRadius\n);\nvec4 clippedBounds = vec4(\n clamp(outlineBounds.xy, uTroikaClipRect.xy, uTroikaClipRect.zw),\n clamp(outlineBounds.zw, uTroikaClipRect.xy, uTroikaClipRect.zw)\n);\n\nvec2 clippedXY = (mix(clippedBounds.xy, clippedBounds.zw, position.xy) - bounds.xy) / (bounds.zw - bounds.xy);\n\nposition.xy = mix(bounds.xy, bounds.zw, clippedXY);\n\nuv = (position.xy - uTroikaTotalBounds.xy) / (uTroikaTotalBounds.zw - uTroikaTotalBounds.xy);\n\nfloat rad = uTroikaCurveRadius;\nif (rad != 0.0) {\n float angle = position.x / rad;\n position.xz = vec2(sin(angle) * rad, rad - cos(angle) * rad);\n normal.xz = vec2(sin(angle), cos(angle));\n}\n \nposition = uTroikaOrient * position;\nnormal = uTroikaOrient * normal;\n\nvTroikaGlyphUV = clippedXY.xy;\nvTroikaGlyphDimensions = vec2(bounds[2] - bounds[0], bounds[3] - bounds[1]);\n\n\nfloat txCols = uTroikaSDFTextureSize.x / uTroikaSDFGlyphSize;\nvec2 txUvPerSquare = uTroikaSDFGlyphSize / uTroikaSDFTextureSize;\nvec2 txStartUV = txUvPerSquare * vec2(\n mod(floor(aTroikaGlyphIndex / 4.0), txCols),\n floor(floor(aTroikaGlyphIndex / 4.0) / txCols)\n);\nvTroikaTextureUVBounds = vec4(txStartUV, vec2(txStartUV) + txUvPerSquare);\nvTroikaTextureChannel = mod(aTroikaGlyphIndex, 4.0);\n",fragmentDefs:"\nuniform sampler2D uTroikaSDFTexture;\nuniform vec2 uTroikaSDFTextureSize;\nuniform float uTroikaSDFGlyphSize;\nuniform float uTroikaSDFExponent;\nuniform float uTroikaDistanceOffset;\nuniform float uTroikaFillOpacity;\nuniform float uTroikaOutlineOpacity;\nuniform float uTroikaBlurRadius;\nuniform vec3 uTroikaStrokeColor;\nuniform float uTroikaStrokeWidth;\nuniform float uTroikaStrokeOpacity;\nuniform bool uTroikaSDFDebug;\nvarying vec2 vTroikaGlyphUV;\nvarying vec4 vTroikaTextureUVBounds;\nvarying float vTroikaTextureChannel;\nvarying vec2 vTroikaGlyphDimensions;\n\nfloat troikaSdfValueToSignedDistance(float alpha) {\n // Inverse of exponential encoding in webgl-sdf-generator\n \n float maxDimension = max(vTroikaGlyphDimensions.x, vTroikaGlyphDimensions.y);\n float absDist = (1.0 - pow(2.0 * (alpha > 0.5 ? 1.0 - alpha : alpha), 1.0 / uTroikaSDFExponent)) * maxDimension;\n float signedDist = absDist * (alpha > 0.5 ? -1.0 : 1.0);\n return signedDist;\n}\n\nfloat troikaGlyphUvToSdfValue(vec2 glyphUV) {\n vec2 textureUV = mix(vTroikaTextureUVBounds.xy, vTroikaTextureUVBounds.zw, glyphUV);\n vec4 rgba = texture2D(uTroikaSDFTexture, textureUV);\n float ch = floor(vTroikaTextureChannel + 0.5); //NOTE: can't use round() in WebGL1\n return ch == 0.0 ? rgba.r : ch == 1.0 ? rgba.g : ch == 2.0 ? rgba.b : rgba.a;\n}\n\nfloat troikaGlyphUvToDistance(vec2 uv) {\n return troikaSdfValueToSignedDistance(troikaGlyphUvToSdfValue(uv));\n}\n\nfloat troikaGetAADist() {\n \n #if defined(GL_OES_standard_derivatives) || __VERSION__ >= 300\n return length(fwidth(vTroikaGlyphUV * vTroikaGlyphDimensions)) * 0.5;\n #else\n return vTroikaGlyphDimensions.x / 64.0;\n #endif\n}\n\nfloat troikaGetFragDistValue() {\n vec2 clampedGlyphUV = clamp(vTroikaGlyphUV, 0.5 / uTroikaSDFGlyphSize, 1.0 - 0.5 / uTroikaSDFGlyphSize);\n float distance = troikaGlyphUvToDistance(clampedGlyphUV);\n \n // Extrapolate distance when outside bounds:\n distance += clampedGlyphUV == vTroikaGlyphUV ? 0.0 : \n length((vTroikaGlyphUV - clampedGlyphUV) * vTroikaGlyphDimensions);\n\n \n\n return distance;\n}\n\nfloat troikaGetEdgeAlpha(float distance, float distanceOffset, float aaDist) {\n #if defined(IS_DEPTH_MATERIAL) || defined(IS_DISTANCE_MATERIAL)\n float alpha = step(-distanceOffset, -distance);\n #else\n\n float alpha = smoothstep(\n distanceOffset + aaDist,\n distanceOffset - aaDist,\n distance\n );\n #endif\n\n return alpha;\n}\n",fragmentColorTransform:"\nfloat aaDist = troikaGetAADist();\nfloat fragDistance = troikaGetFragDistValue();\nfloat edgeAlpha = uTroikaSDFDebug ?\n troikaGlyphUvToSdfValue(vTroikaGlyphUV) :\n troikaGetEdgeAlpha(fragDistance, uTroikaDistanceOffset, max(aaDist, uTroikaBlurRadius));\n\n#if !defined(IS_DEPTH_MATERIAL) && !defined(IS_DISTANCE_MATERIAL)\nvec4 fillRGBA = gl_FragColor;\nfillRGBA.a *= uTroikaFillOpacity;\nvec4 strokeRGBA = uTroikaStrokeWidth == 0.0 ? fillRGBA : vec4(uTroikaStrokeColor, uTroikaStrokeOpacity);\nif (fillRGBA.a == 0.0) fillRGBA.rgb = strokeRGBA.rgb;\ngl_FragColor = mix(fillRGBA, strokeRGBA, smoothstep(\n -uTroikaStrokeWidth - aaDist,\n -uTroikaStrokeWidth + aaDist,\n fragDistance\n));\ngl_FragColor.a *= edgeAlpha;\n#endif\n\nif (edgeAlpha == 0.0) {\n discard;\n}\n",customRewriter({vertexShader:e,fragmentShader:t}){let r=/\buniform\s+vec3\s+diffuse\b/;return r.test(t)&&(t=t.replace(r,"varying vec3 vTroikaGlyphColor").replace(/\bdiffuse\b/g,"vTroikaGlyphColor"),r.test(e)||(e=e.replace(ji,"uniform vec3 diffuse;\n$&\nvTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;\n"))),{vertexShader:e,fragmentShader:t}}});return t.transparent=!0,Object.defineProperties(t,{isTroikaTextMaterial:{value:!0},shadowSide:{get(){return this.side},set(){}}}),t}(r),r.addEventListener("dispose",(function e(){r.removeEventListener("dispose",e),t.dispose()}))),this.outlineWidth||this.outlineBlur||this.outlineOffsetX||this.outlineOffsetY){let e=t._outlineMtl;return e||(e=t._outlineMtl=Object.create(t,{id:{value:t.id+.1}}),e.isTextOutlineMaterial=!0,e.depthWrite=!1,e.map=null,t.addEventListener("dispose",(function r(){t.removeEventListener("dispose",r),e.dispose()}))),[e,t]}return t}set material(e){e&&e.isTroikaTextMaterial?(this._derivedMaterial=e,this._baseMaterial=e.baseMaterial):this._baseMaterial=e}get glyphGeometryDetail(){return this.geometry.detail}set glyphGeometryDetail(e){this.geometry.detail=e}get curveRadius(){return this.geometry.curveRadius}set curveRadius(e){this.geometry.curveRadius=e}get customDepthMaterial(){return c(this.material).getDepthMaterial()}get customDistanceMaterial(){return c(this.material).getDistanceMaterial()}_prepareForRender(e){const a=e.isTextOutlineMaterial,c=e.uniforms,u=this.textRenderInfo;if(u){const{sdfTexture:e,blockBounds:r}=u;c.uTroikaSDFTexture.value=e,c.uTroikaSDFTextureSize.value.set(e.image.width,e.image.height),c.uTroikaSDFGlyphSize.value=u.sdfGlyphSize,c.uTroikaSDFExponent.value=u.sdfExponent,c.uTroikaTotalBounds.value.fromArray(r),c.uTroikaUseGlyphColors.value=!a&&!!u.glyphColors;let n,i,s,o=0,l=0,h=0,d=0,p=0;if(a){let{outlineWidth:e,outlineOffsetX:t,outlineOffsetY:r,outlineBlur:i,outlineOpacity:a}=this;o=this._parsePercent(e)||0,l=Math.max(0,this._parsePercent(i)||0),n=a,d=this._parsePercent(t)||0,p=this._parsePercent(r)||0}else h=Math.max(0,this._parsePercent(this.strokeWidth)||0),h&&(s=this.strokeColor,c.uTroikaStrokeColor.value.set(null==s?t:s),i=this.strokeOpacity,null==i&&(i=1)),n=this.fillOpacity;c.uTroikaDistanceOffset.value=o,c.uTroikaPositionOffset.value.set(d,p),c.uTroikaBlurRadius.value=l,c.uTroikaStrokeWidth.value=h,c.uTroikaStrokeOpacity.value=i,c.uTroikaFillOpacity.value=null==n?1:n,c.uTroikaCurveRadius.value=this.curveRadius||0;let f=this.clipRect;if(f&&Array.isArray(f)&&4===f.length)c.uTroikaClipRect.value.fromArray(f);else{const e=100*(this.fontSize||.1);c.uTroikaClipRect.value.set(r[0]-e,r[1]-e,r[2]+e,r[3]+e)}this.geometry.applyClipRect(c.uTroikaClipRect.value)}c.uTroikaSDFDebug.value=!!this.debugSDF,e.polygonOffset=!!this.depthOffset,e.polygonOffsetFactor=e.polygonOffsetUnits=this.depthOffset||0;const h=a?this.outlineColor||0:this.color;if(null==h)delete e.color;else{const t=e.hasOwnProperty("color")?e.color:e.color=new s.Color;h===t._input&&"object"!=typeof h||t.set(t._input=h)}let d=this.orientation||l;if(d!==e._orientation){let t=c.uTroikaOrient.value;d=d.replace(/[^-+xyz]/g,"");let a=d!==l&&d.match(/^([-+])([xyz])([-+])([xyz])$/);if(a){let[,e,s,l,c]=a;n.set(0,0,0)[s]="-"===e?1:-1,i.set(0,0,0)[c]="-"===l?-1:1,r.lookAt(o,n.cross(i),i),t.setFromMatrix4(r)}else t.identity();e._orientation=d}}_parsePercent(e){if("string"==typeof e){let t=e.match(/^(-?[\d.]+)%$/),r=t?parseFloat(t[1]):NaN;e=(isNaN(r)?0:r/100)*this.fontSize}return e}localPositionToTextCoords(e,t=new s.Vector2){t.copy(e);const r=this.curveRadius;return r&&(t.x=Math.atan2(e.x,Math.abs(r)-Math.abs(e.z))*Math.abs(r)),t}worldPositionToTextCoords(e,t=new s.Vector2){return n.copy(e),this.localPositionToTextCoords(this.worldToLocal(n),t)}raycast(e,t){const{textRenderInfo:r,curveRadius:n}=this;if(r){const i=r.blockBounds,s=n?h():u(),o=s.geometry,{position:l,uv:c}=o.attributes;for(let e=0;e{this[t]=e[t]})),this}clone(){return(new this.constructor).copy(this)}}f.forEach((e=>{const t="_private_"+e;Object.defineProperty(g.prototype,e,{get(){return this[t]},set(e){e!==this[t]&&(this[t]=e,this._needsSync=!0)}})}));let v=!1;return Object.defineProperty(g.prototype,"anchor",{get(){return this._deprecated_anchor},set(e){this._deprecated_anchor=e,v||(console.warn("TextMesh: `anchor` has been deprecated; use `anchorX` and `anchorY` instead."),v=!0),Array.isArray(e)?(this.anchorX=100*(+e[0]||0)+"%",this.anchorY=100*(+e[1]||0)+"%"):this.anchorX=this.anchorY=0}}),g})();new WeakMap;new WeakMap;function Sa(e,t,r=((e,t)=>e===t)){if(e===t)return!0;if(!e||!t)return!1;const n=e.length;if(t.length!==n)return!1;for(let i=0;ii.response=e)).then((()=>{n.lifespan&&n.lifespan>0&&setTimeout((()=>{const e=Ma.indexOf(i);-1!==e&&Ma.splice(e,1)}),n.lifespan)})).catch((e=>i.error=e))};if(Ma.push(i),!r)throw i.promise}const Ca=(e,t,r)=>Ta(e,t,!1,r),Ia=i.forwardRef((({anchorX:e="center",anchorY:t="middle",font:r,children:a,characters:s,onSync:l,...c},u)=>{const h=(0,o.useThree)((({invalidate:e})=>e)),[d]=i.useState((()=>new Ea)),[p,f]=i.useMemo((()=>{const e=[];let t="";return i.Children.forEach(a,(r=>{"string"==typeof r||"number"==typeof r?t+=r:e.push(r)})),[e,t]}),[a]);return Ca((()=>new Promise((e=>function({font:e,characters:t,sdfGlyphSize:r},n){ga({font:e,sdfGlyphSize:r,text:Array.isArray(t)?t.join("\n"):""+t},n)}({font:r,characters:s},e)))),["troika-text",r,s]),i.useLayoutEffect((()=>{d.sync((()=>{h(),l&&l(d)}))})),i.useEffect((()=>()=>d.dispose()),[d]),i.createElement("primitive",n({object:d,ref:u,font:r,text:f,anchorX:e,anchorY:t},c),p)}));var Ba=r(8064),Ra=r(48197),Pa=r(6073),Fa=r(60809);(0,o.extend)({EffectComposer:Ba.x,RenderPass:Ra.C,ShaderPass:Pa.T});const La=()=>{try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(Ha){return!1}},Da=i.forwardRef((({children:e,multisamping:t=8,renderIndex:r=1,disableGamma:a=!1,disableRenderPass:l=!1,...c},u)=>{const h=i.useRef(),d=(0,o.useThree)((({scene:e})=>e)),p=(0,o.useThree)((({camera:e})=>e)),f=(0,o.useThree)((({gl:e})=>e)),m=(0,o.useThree)((({size:e})=>e)),[g]=i.useState((()=>{if(La()&&t>0){const e=new s.WebGLRenderTarget(m.width,m.height,{format:s.RGBAFormat,encoding:s.sRGBEncoding});return e.samples=8,e}}));return i.useEffect((()=>{var e,t;null==(e=h.current)||e.setSize(m.width,m.height),null==(t=h.current)||t.setPixelRatio(f.getPixelRatio())}),[f,m]),(0,o.useFrame)((()=>{var e;return null==(e=h.current)?void 0:e.render()}),r),i.createElement("effectComposer",n({ref:M([u,h]),args:[f,g]},c),!l&&i.createElement("renderPass",{attachArray:"passes",args:[d,p]}),!a&&i.createElement("shaderPass",{attachArray:"passes",args:[Fa.Y]}),e)}));function Ua({stops:e,colors:t,size:r=1024,...a}){const l=(0,o.useThree)((e=>e.gl)),c=i.useMemo((()=>{const n=document.createElement("canvas"),i=n.getContext("2d");n.width=16,n.height=r;const a=i.createLinearGradient(0,0,0,r);let o=e.length;for(;o--;)a.addColorStop(e[o],t[o]);i.fillStyle=a,i.fillRect(0,0,16,r);const l=new s.Texture(n);return l.needsUpdate=!0,l}),[e]);return i.useEffect((()=>()=>{c.dispose()}),[c]),i.createElement("primitive",n({object:c,attach:"map",encoding:l.outputEncoding},a))}function Na(e,t,r,n){return class extends s.ShaderMaterial{constructor(){const i=Object.entries(e);super({uniforms:i.reduce(((e,[t,r])=>({...e,...s.UniformsUtils.clone({[t]:{value:r}})})),{}),vertexShader:t,fragmentShader:r}),i.forEach((([e])=>Object.defineProperty(this,e,{get:()=>this.uniforms[e].value,set:t=>this.uniforms[e].value=t}))),n&&n(this)}}}const ka=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function Oa(e){const t=(0,o.useThree)((e=>e.gl)),r=(0,o.useLoader)(s.TextureLoader,ka(e)?Object.values(e):e);if((0,i.useEffect)((()=>{(Array.isArray(r)?r:[r]).forEach(t.initTexture)}),[t,r]),ka(e)){const t=Object.keys(e),n={};return t.forEach((e=>Object.assign(n,{[e]:r[t.indexOf(e)]}))),n}return r}Oa.preload=e=>o.useLoader.preload(s.TextureLoader,e),Oa.clear=e=>o.useLoader.clear(s.TextureLoader,e);const Ga=Na({color:new s.Color("white"),scale:[1,1],imageBounds:[1,1],map:null,zoom:1,grayscale:0},"\n varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n }\n","\n // mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44\n varying vec2 vUv;\n uniform vec2 scale;\n uniform vec2 imageBounds;\n uniform vec3 color;\n uniform sampler2D map;\n uniform float zoom;\n uniform float grayscale;\n const vec3 luma = vec3(.299, 0.587, 0.114);\n vec4 toGrayscale(vec4 color, float intensity) {\n return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);\n }\n vec2 aspect(vec2 size) {\n return size / min(size.x, size.y);\n }\n void main() {\n vec2 s = aspect(scale);\n vec2 i = aspect(imageBounds);\n float rs = s.x / s.y;\n float ri = i.x / i.y;\n vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);\n vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;\n vec2 uv = vUv * s / new + offset;\n vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);\n gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, 1.0), grayscale);\n \n #include \n #include \n }\n"),za=i.forwardRef((({children:e,color:t,segments:r=1,scale:a=1,zoom:s=1,grayscale:l=0,url:c,toneMapped:u,...h},d)=>{(0,o.extend)({ImageMaterial:Ga});const p=Oa(c),f=Array.isArray(a)?[a[0],a[1]]:[a,a],m=[p.image.width,p.image.height];return i.createElement("mesh",n({ref:d,scale:a},h),i.createElement("planeGeometry",{args:[1,1,r,r]}),i.createElement("imageMaterial",{color:t,map:p,zoom:s,grayscale:l,scale:f,imageBounds:m,toneMapped:u}),e)}));function Va({userData:e,children:t,geometry:r,threshold:a=15,color:o="black",...l}){const c=i.useRef(null);return i.useLayoutEffect((()=>{const e=c.current.parent;if(e){const t=r||e.geometry;t===c.current.userData.currentGeom&&a===c.current.userData.currentThreshold||(c.current.userData.currentGeom=t,c.current.userData.currentThreshold=a,c.current.geometry=new s.EdgesGeometry(t,a))}})),i.createElement("lineSegments",n({ref:c,raycast:()=>null},l),t||i.createElement("lineBasicMaterial",{color:o}))}function Ha(e,t){const r=new s.Matrix4,n=new s.Ray,i=new s.Sphere,a=new s.Vector3,o=this.geometry;if(i.copy(o.boundingSphere),i.applyMatrix4(this.matrixWorld),!1===e.ray.intersectSphere(i,a))return;r.copy(this.matrixWorld).invert(),n.copy(e.ray).applyMatrix4(r);const l=new s.Vector3,c=new s.Vector3,u=new s.Vector3,h=this instanceof s.LineSegments?2:1,d=o.index,p=o.attributes;if(null!==d){const r=d.array,i=p.position.array,s=p.width.array;for(let o=0,d=r.length-1;og)continue;a.applyMatrix4(this.matrixWorld);const v=e.ray.origin.distanceTo(a);ve.far||(t.push({distance:v,point:u.clone().applyMatrix4(this.matrixWorld),index:o,face:null,faceIndex:null,object:this}),o=d)}}}function Qa(e,t,r,n,i){let a;if(e=e.subarray||e.slice?e:e.buffer,r=r.subarray||r.slice?r:r.buffer,e=t?e.subarray?e.subarray(t,i&&t+i):e.slice(t,i&&t+i):e,r.set)r.set(e,n);else for(a=0;a0&&(r=this.copyV3(n),this.next.push(r[0],r[1],r[2]),this.next.push(r[0],r[1],r[2]))}r=this.compareV3(e-1,0)?this.copyV3(1):this.copyV3(e-1),this.next.push(r[0],r[1],r[2]),this.next.push(r[0],r[1],r[2]),this._attributes&&this._attributes.position.count===this.positions.length?(this._attributes.position.copyArray(new Float32Array(this.positions)),this._attributes.position.needsUpdate=!0,this._attributes.previous.copyArray(new Float32Array(this.previous)),this._attributes.previous.needsUpdate=!0,this._attributes.next.copyArray(new Float32Array(this.next)),this._attributes.next.needsUpdate=!0,this._attributes.side.copyArray(new Float32Array(this.side)),this._attributes.side.needsUpdate=!0,this._attributes.width.copyArray(new Float32Array(this.width)),this._attributes.width.needsUpdate=!0,this._attributes.uv.copyArray(new Float32Array(this.uvs)),this._attributes.uv.needsUpdate=!0,this._attributes.index.copyArray(new Uint16Array(this.indices_array)),this._attributes.index.needsUpdate=!0):this._attributes={position:new s.BufferAttribute(new Float32Array(this.positions),3),previous:new s.BufferAttribute(new Float32Array(this.previous),3),next:new s.BufferAttribute(new Float32Array(this.next),3),side:new s.BufferAttribute(new Float32Array(this.side),1),width:new s.BufferAttribute(new Float32Array(this.width),1),uv:new s.BufferAttribute(new Float32Array(this.uvs),2),index:new s.BufferAttribute(new Uint16Array(this.indices_array),1),counters:new s.BufferAttribute(new Float32Array(this.counters),1)},this.setAttribute("position",this._attributes.position),this.setAttribute("previous",this._attributes.previous),this.setAttribute("next",this._attributes.next),this.setAttribute("side",this._attributes.side),this.setAttribute("width",this._attributes.width),this.setAttribute("uv",this._attributes.uv),this.setAttribute("counters",this._attributes.counters),this.setIndex(this._attributes.index),this.computeBoundingSphere(),this.computeBoundingBox()}advance({x:e,y:t,z:r}){const n=this._attributes.position.array,i=this._attributes.previous.array,a=this._attributes.next.array,s=n.length;Qa(n,0,i,0,s),Qa(n,6,n,0,s-6),n[s-6]=e,n[s-5]=t,n[s-4]=r,n[s-3]=e,n[s-2]=t,n[s-1]=r,Qa(n,6,a,0,s-6),a[s-6]=e,a[s-5]=t,a[s-4]=r,a[s-3]=e,a[s-2]=t,a[s-1]=r,this._attributes.position.needsUpdate=!0,this._attributes.previous.needsUpdate=!0,this._attributes.next.needsUpdate=!0}}s.ShaderChunk.meshline_vert=["","#include ","",s.ShaderChunk.logdepthbuf_pars_vertex,s.ShaderChunk.fog_pars_vertex,"","attribute vec3 previous;","attribute vec3 next;","attribute float side;","attribute float width;","attribute float counters;","","uniform vec2 resolution;","uniform float lineWidth;","uniform vec3 color;","uniform float opacity;","uniform float sizeAttenuation;","","varying vec2 vUV;","varying vec4 vColor;","varying float vCounters;","","vec2 fix( vec4 i, float aspect ) {",""," vec2 res = i.xy / i.w;"," res.x *= aspect;","\t vCounters = counters;"," return res;","","}","","void main() {",""," float aspect = resolution.x / resolution.y;",""," vColor = vec4( color, opacity );"," vUV = uv;",""," mat4 m = projectionMatrix * modelViewMatrix;"," vec4 finalPosition = m * vec4( position, 1.0 );"," vec4 prevPos = m * vec4( previous, 1.0 );"," vec4 nextPos = m * vec4( next, 1.0 );",""," vec2 currentP = fix( finalPosition, aspect );"," vec2 prevP = fix( prevPos, aspect );"," vec2 nextP = fix( nextPos, aspect );",""," float w = lineWidth * width;",""," vec2 dir;"," if( nextP == currentP ) dir = normalize( currentP - prevP );"," else if( prevP == currentP ) dir = normalize( nextP - currentP );"," else {"," vec2 dir1 = normalize( currentP - prevP );"," vec2 dir2 = normalize( nextP - currentP );"," dir = normalize( dir1 + dir2 );",""," vec2 perp = vec2( -dir1.y, dir1.x );"," vec2 miter = vec2( -dir.y, dir.x );"," //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );",""," }",""," //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;"," vec4 normal = vec4( -dir.y, dir.x, 0., 1. );"," normal.xy *= .5 * w;"," normal *= projectionMatrix;"," if( sizeAttenuation == 0. ) {"," normal.xy *= finalPosition.w;"," normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;"," }",""," finalPosition.xy += normal.xy * side;",""," gl_Position = finalPosition;","",s.ShaderChunk.logdepthbuf_vertex,s.ShaderChunk.fog_vertex&&" vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",s.ShaderChunk.fog_vertex,"}"].join("\n"),s.ShaderChunk.meshline_frag=["",s.ShaderChunk.fog_pars_fragment,s.ShaderChunk.logdepthbuf_pars_fragment,"","uniform sampler2D map;","uniform sampler2D alphaMap;","uniform float useMap;","uniform float useAlphaMap;","uniform float useDash;","uniform float dashArray;","uniform float dashOffset;","uniform float dashRatio;","uniform float visibility;","uniform float alphaTest;","uniform vec2 repeat;","","varying vec2 vUV;","varying vec4 vColor;","varying float vCounters;","","void main() {","",s.ShaderChunk.logdepthbuf_fragment,""," vec4 c = vColor;"," if( useMap == 1. ) c *= texture2D( map, vUV * repeat );"," if( useAlphaMap == 1. ) c.a *= texture2D( alphaMap, vUV * repeat ).a;"," if( c.a < alphaTest ) discard;"," if( useDash == 1. ){"," c.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));"," }"," gl_FragColor = c;"," gl_FragColor.a *= step(vCounters, visibility);","",s.ShaderChunk.fog_fragment,"}"].join("\n");class Wa extends s.ShaderMaterial{constructor(e){super({uniforms:Object.assign({},s.UniformsLib.fog,{lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},color:{value:new s.Color(16777215)},opacity:{value:1},resolution:{value:new s.Vector2(1,1)},sizeAttenuation:{value:1},dashArray:{value:0},dashOffset:{value:0},dashRatio:{value:.5},useDash:{value:0},visibility:{value:1},alphaTest:{value:0},repeat:{value:new s.Vector2(1,1)}}),vertexShader:s.ShaderChunk.meshline_vert,fragmentShader:s.ShaderChunk.meshline_frag}),this.type="MeshLineMaterial",Object.defineProperties(this,{lineWidth:{enumerable:!0,get(){return this.uniforms.lineWidth.value},set(e){this.uniforms.lineWidth.value=e}},map:{enumerable:!0,get(){return this.uniforms.map.value},set(e){this.uniforms.map.value=e}},useMap:{enumerable:!0,get(){return this.uniforms.useMap.value},set(e){this.uniforms.useMap.value=e}},alphaMap:{enumerable:!0,get(){return this.uniforms.alphaMap.value},set(e){this.uniforms.alphaMap.value=e}},useAlphaMap:{enumerable:!0,get(){return this.uniforms.useAlphaMap.value},set(e){this.uniforms.useAlphaMap.value=e}},color:{enumerable:!0,get(){return this.uniforms.color.value},set(e){this.uniforms.color.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}},sizeAttenuation:{enumerable:!0,get(){return this.uniforms.sizeAttenuation.value},set(e){this.uniforms.sizeAttenuation.value=e}},dashArray:{enumerable:!0,get(){return this.uniforms.dashArray.value},set(e){this.uniforms.dashArray.value=e,this.useDash=0!==e?1:0}},dashOffset:{enumerable:!0,get(){return this.uniforms.dashOffset.value},set(e){this.uniforms.dashOffset.value=e}},dashRatio:{enumerable:!0,get(){return this.uniforms.dashRatio.value},set(e){this.uniforms.dashRatio.value=e}},useDash:{enumerable:!0,get(){return this.uniforms.useDash.value},set(e){this.uniforms.useDash.value=e}},visibility:{enumerable:!0,get(){return this.uniforms.visibility.value},set(e){this.uniforms.visibility.value=e}},alphaTest:{enumerable:!0,get(){return this.uniforms.alphaTest.value},set(e){this.uniforms.alphaTest.value=e}},repeat:{enumerable:!0,get(){return this.uniforms.repeat.value},set(e){this.uniforms.repeat.value.copy(e)}}}),this.setValues(e)}copy(e){return super.copy(e),this.lineWidth=e.lineWidth,this.map=e.map,this.useMap=e.useMap,this.alphaMap=e.alphaMap,this.useAlphaMap=e.useAlphaMap,this.color.copy(e.color),this.opacity=e.opacity,this.resolution.copy(e.resolution),this.sizeAttenuation=e.sizeAttenuation,this.dashArray.copy(e.dashArray),this.dashOffset.copy(e.dashOffset),this.dashRatio.copy(e.dashRatio),this.useDash=e.useDash,this.visibility=e.visibility,this.alphaTest=e.alphaTest,this.repeat.copy(e.repeat),this}}const Xa={width:.2,length:1,decay:1,local:!1,stride:0,interval:1},Ya=(e,t=1)=>(e.set(e.subarray(t)),e.fill(-1/0,-t),e);function qa(e,t){const{length:r,local:n,decay:a,interval:l,stride:c}={...Xa,...t},u=i.useRef(),[h]=i.useState((()=>new s.Vector3));i.useLayoutEffect((()=>{e&&(u.current=Float32Array.from({length:10*r*3},((t,r)=>e.position.getComponent(r%3))))}),[r,e]);const d=i.useRef(new s.Vector3),p=i.useRef(0);return(0,o.useFrame)((()=>{if(e&&u.current){if(0===p.current){let t;n?t=e.position:(e.getWorldPosition(h),t=h);const r=1*a;for(let e=0;e{const{children:r}=e,{width:n,length:a,decay:l,local:c,stride:u,interval:h}={...Xa,...e},{color:d="hotpink",attenuation:p,target:f}=e,m=(0,o.useThree)((e=>e.size)),g=i.useRef(null),[v,A]=i.useState(null),y=qa(v,{length:a,decay:l,local:c,stride:u,interval:h});i.useEffect((()=>{const e=(null==f?void 0:f.current)||g.current.children.find((e=>e instanceof s.Object3D));e&&A(e)}),[y,f]);const x=i.useMemo((()=>new ja),[]),b=i.useMemo((()=>{var e;const t=new Wa({lineWidth:.1*n,color:d,sizeAttenuation:1,resolution:new s.Vector2(m.width,m.height)});let i;if(r)if(Array.isArray(r))i=r.find((e=>{const t=e;return"string"==typeof t.type&&"meshLineMaterial"===t.type}));else{const e=r;"string"==typeof e.type&&"meshLineMaterial"===e.type&&(i=e)}return"object"==typeof(null==(e=i)?void 0:e.props)&&t.setValues(i.props),t}),[n,d,m,r]);return i.useEffect((()=>{b.uniforms.resolution.value.set(m.width,m.height)}),[m]),(0,o.useFrame)((()=>{y.current&&x.setPoints(y.current,p)})),i.createElement("group",null,i.createElement("mesh",{ref:t,geometry:x,material:b}),i.createElement("group",{ref:g},r))}));var Ja=r(96272);const Za=({children:e,weight:t,transform:r,instances:a,mesh:o,...l})=>{const c=i.useRef(null),u=i.useRef(null),h=i.useRef(null);return i.useEffect((()=>{var e,t;u.current=null!==(e=null==a?void 0:a.current)&&void 0!==e?e:c.current.children.find((e=>e.hasOwnProperty("instanceMatrix"))),h.current=null!==(t=null==o?void 0:o.current)&&void 0!==t?t:c.current.children.find((e=>"Mesh"===e.type))}),[e,null==o?void 0:o.current,null==a?void 0:a.current]),i.useEffect((()=>{if(void 0===h.current)return;if(void 0===u.current)return;const e=new Ja.a(h.current);t&&e.setWeightAttribute(t),e.build();const n=new s.Vector3,i=new s.Vector3,a=new s.Color,o=new s.Object3D;h.current.updateMatrixWorld(!0);for(let t=0;t{const[a]=i.useState((()=>new s.BufferAttribute(new Float32Array(0),1))),o=i.useRef(null);return i.useLayoutEffect((()=>{if(o.current){var t;const r=null!==(t=o.current.parent)&&void 0!==t?t:o.current.__r3f.parent,n=e(r);o.current.copy(n)}}),[e]),i.createElement("primitive",n({ref:o,object:a,attachObject:["attributes",t]},r))};var es=r(25030),ts=r.n(es);function rs(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData"],deep:r,inject:n,castShadow:a,receiveShadow:s}){let o=ts()(e,t);return r&&(o.geometry&&"materialsOnly"!==r&&(o.geometry=o.geometry.clone()),o.material&&"geometriesOnly"!==r&&(o.material=o.material.clone())),n&&(o="function"==typeof n?{...o,children:n(e)}:i.isValidElement(n)?{...o,children:n}:{...o,...n}),"Mesh"===e.type&&(a&&(o.castShadow=!0),s&&(o.receiveShadow=!0)),o}const ns=i.forwardRef((({object:e,children:t,deep:r,castShadow:a,receiveShadow:s,inject:o,keys:l,...c},u)=>{const h={keys:l,deep:r,inject:o,castShadow:a,receiveShadow:s};if(Array.isArray(e))return i.createElement("group",n({},c,{ref:u}),e.map((e=>i.createElement(ns,n({key:e.uuid,object:e},h)))),t);const{children:d,...p}=rs(e,h),f=e.type[0].toLowerCase()+e.type.slice(1);return i.createElement(f,n({},p,c,{ref:u}),(null==e?void 0:e.children).map((e=>{let t={},r=e.type[0].toLowerCase()+e.type.slice(1);return"group"===r||"object3D"===r?(r=ns,t={object:e,...h}):t=rs(e,h),i.createElement(r,n({key:e.uuid},t))})),t,d)})),is=i.forwardRef((({makeDefault:e,...t},r)=>{const a=(0,o.useThree)((({set:e})=>e)),s=(0,o.useThree)((({camera:e})=>e)),l=(0,o.useThree)((({size:e})=>e)),c=i.useRef();return i.useLayoutEffect((()=>{c.current&&!t.manual&&c.current.updateProjectionMatrix()}),[l,t]),i.useLayoutEffect((()=>{if(e&&c.current){const e=s;return a((()=>({camera:c.current}))),()=>a((()=>({camera:e})))}}),[s,c,e,a]),i.createElement("orthographicCamera",n({left:l.width/-2,right:l.width/2,top:l.height/2,bottom:l.height/-2,ref:M([c,r])},t))})),as=i.forwardRef((({makeDefault:e,...t},r)=>{const a=(0,o.useThree)((({set:e})=>e)),s=(0,o.useThree)((({camera:e})=>e)),l=(0,o.useThree)((({size:e})=>e)),c=i.useRef();return i.useLayoutEffect((()=>{const{current:e}=c;e&&!t.manual&&(e.aspect=l.width/l.height,e.updateProjectionMatrix())}),[l,t]),i.useLayoutEffect((()=>{if(e&&c.current){const e=s;return a((()=>({camera:c.current}))),()=>a((()=>({camera:e})))}}),[s,c,e,a]),i.createElement("perspectiveCamera",n({ref:M([c,r])},t))}));function ss({children:e,fog:t,frames:r=1/0,resolution:n=256,near:a=1,far:l=1e3,...c}){const u=i.useRef(),[h,d]=i.useState(),p=(0,o.useThree)((({scene:e})=>e)),f=(0,o.useThree)((({gl:e})=>e)),m=i.useMemo((()=>{const e=new s.WebGLCubeRenderTarget(n);return e.texture.type=s.HalfFloatType,e}),[n]);let g=0;return(0,o.useFrame)((()=>{if(h&&u.current&&(r===1/0||ge.visible=!1));const e=p.fog;p.fog=t||e,h.update(f,p),p.fog=e,u.current.traverse((e=>e.visible=!0)),g++}})),i.createElement("group",c,i.createElement("cubeCamera",{ref:d,args:[a,l,m]}),i.createElement("group",{ref:u},e(m.texture)))}var os=r(41743);const ls=i.forwardRef(((e,t)=>{const{camera:r,onChange:a,...s}=e,l=(0,o.useThree)((e=>e.camera)),c=(0,o.useThree)((e=>e.invalidate)),u=r||l,[h]=i.useState((()=>new os.W(u)));return i.useEffect((()=>{const e=e=>{c(),a&&a(e)};return null==h||null==h.addEventListener||h.addEventListener("change",e),()=>null==h||null==h.removeEventListener?void 0:h.removeEventListener("change",e)}),[a,h,c]),(0,o.useFrame)((()=>null==h?void 0:h.update())),i.useEffect((()=>{const e=h;return null==e||e.connect(),()=>null==e?void 0:e.dispose()}),[h]),h?i.createElement("primitive",n({ref:t,dispose:void 0,object:h},s)):null}));var cs=r(32044);const us=i.forwardRef(((e,t)=>{const{onChange:r,...a}=e,s=(0,o.useThree)((({invalidate:e})=>e)),l=(0,o.useThree)((({camera:e})=>e)),c=(0,o.useThree)((({gl:e})=>e)),[u]=i.useState((()=>new cs.m(l,c.domElement)));return i.useEffect((()=>{const e=e=>{s(),r&&r(e)};return null==u||null==u.addEventListener||u.addEventListener("change",e),()=>null==u||null==u.removeEventListener?void 0:u.removeEventListener("change",e)}),[r,u,s]),(0,o.useFrame)(((e,t)=>null==u?void 0:u.update(t))),u?i.createElement("primitive",n({ref:t,dispose:void 0,object:u},a)):null}));var hs=r(22227);const ds=i.forwardRef(((e={enableDamping:!0},t)=>{const{camera:r,onChange:a,onStart:s,onEnd:l,...c}=e,u=(0,o.useThree)((({invalidate:e})=>e)),h=(0,o.useThree)((({camera:e})=>e)),d=(0,o.useThree)((({gl:e})=>e.domElement)),p=r||h,f=i.useMemo((()=>new hs.o(p)),[p]);return i.useEffect((()=>{f.connect(d);const e=e=>{u(),a&&a(e)};return f.addEventListener("change",e),s&&f.addEventListener("start",s),l&&f.addEventListener("end",l),()=>{f.dispose(),f.removeEventListener("change",e),s&&f.removeEventListener("start",s),l&&f.removeEventListener("end",l)}}),[a,s,l,f,u,d]),(0,o.useFrame)((()=>f.update())),i.createElement("primitive",n({ref:t,dispose:void 0,object:f,enableDamping:!0},c))})),ps=i.forwardRef((({makeDefault:e,camera:t,regress:r,domElement:a,enableDamping:s=!0,onChange:l,onStart:c,onEnd:u,...h},d)=>{const p=(0,o.useThree)((e=>e.invalidate)),f=(0,o.useThree)((e=>e.camera)),m=(0,o.useThree)((e=>e.gl)),g=(0,o.useThree)((e=>e.events)),v=(0,o.useThree)((e=>e.set)),A=(0,o.useThree)((e=>e.get)),y=(0,o.useThree)((e=>e.performance)),x=t||f,b=a||g.connected||m.domElement,w=i.useMemo((()=>new hs.z(x)),[x]);return(0,o.useFrame)((()=>{w.enabled&&w.update()})),i.useEffect((()=>(w.connect(b),()=>{w.dispose()})),[b,r,w,p]),i.useEffect((()=>{const e=e=>{p(),r&&y.regress(),l&&l(e)};return w.addEventListener("change",e),c&&w.addEventListener("start",c),u&&w.addEventListener("end",u),()=>{c&&w.removeEventListener("start",c),u&&w.removeEventListener("end",u),w.removeEventListener("change",e)}}),[l,c,u]),i.useEffect((()=>{if(e){const e=A().controls;return v({controls:w}),()=>v({controls:e})}}),[e,w]),i.createElement("primitive",n({ref:d,object:w,enableDamping:s},h))}));var fs=r(7703);const ms=i.forwardRef((({makeDefault:e,camera:t,domElement:r,regress:a,onChange:s,onStart:l,onEnd:c,...u},h)=>{const{invalidate:d,camera:p,gl:f,events:m,set:g,get:v,performance:A,viewport:y}=(0,o.useThree)(),x=t||p,b=r||m.connected||f.domElement,w=i.useMemo((()=>new fs.$(x)),[x]);return(0,o.useFrame)((()=>{w.enabled&&w.update()})),i.useEffect((()=>(w.connect(b),()=>{w.dispose()})),[b,a,w,d]),i.useEffect((()=>{const e=e=>{d(),a&&A.regress(),s&&s(e)};return w.addEventListener("change",e),l&&w.addEventListener("start",l),c&&w.addEventListener("end",c),()=>{l&&w.removeEventListener("start",l),c&&w.removeEventListener("end",c),w.removeEventListener("change",e)}}),[s,l,c]),i.useEffect((()=>{w.handleResize()}),[y]),i.useEffect((()=>{if(e){const e=v().controls;return g({controls:w}),()=>g({controls:e})}}),[e,w]),i.createElement("primitive",n({ref:h,object:w},u))}));var gs=r(1687);const vs=(0,i.forwardRef)((({camera:e,makeDefault:t,regress:r,domElement:a,onChange:s,onStart:l,onEnd:c,...u},h)=>{const d=(0,o.useThree)((e=>e.invalidate)),p=(0,o.useThree)((e=>e.camera)),f=(0,o.useThree)((e=>e.gl)),m=(0,o.useThree)((e=>e.events)),g=(0,o.useThree)((e=>e.set)),v=(0,o.useThree)((e=>e.get)),A=(0,o.useThree)((e=>e.performance)),y=e||p,x=a||m.connected||f.domElement,b=(0,i.useMemo)((()=>new gs.A(y)),[y]);return(0,o.useFrame)((()=>{b.enabled&&b.update()})),(0,i.useEffect)((()=>(b.connect(x),()=>{b.dispose()})),[x,r,b,d]),(0,i.useEffect)((()=>{const e=e=>{d(),r&&A.regress(),s&&s(e)};return b.addEventListener("change",e),l&&b.addEventListener("start",l),c&&b.addEventListener("end",c),()=>{b.removeEventListener("change",e),l&&b.removeEventListener("start",l),c&&b.removeEventListener("end",c)}}),[s,l,c]),(0,i.useEffect)((()=>{if(t){const e=v().controls;return g({controls:b}),()=>g({controls:e})}}),[t,b]),i.createElement("primitive",n({ref:h,object:b},u))}));var As=r(76427),ys=r.n(As),xs=r(35041);const bs=i.forwardRef((({children:e,domElement:t,onChange:r,onMouseDown:a,onMouseUp:l,onObjectChange:c,object:u,...h},d)=>{const p=["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"],{camera:f,...m}=h,g=ts()(m,p),v=ys()(m,p),A=(0,o.useThree)((e=>e.controls)),y=(0,o.useThree)((e=>e.gl)),x=(0,o.useThree)((e=>e.events)),b=(0,o.useThree)((e=>e.camera)),w=(0,o.useThree)((e=>e.invalidate)),_=f||b,E=t||x.connected||y.domElement,S=i.useMemo((()=>new xs.Ys(_,E)),[_,E]),M=i.useRef();return i.useLayoutEffect((()=>(u?S.attach(u instanceof s.Object3D?u:u.current):M.current instanceof s.Object3D&&S.attach(M.current),()=>{S.detach()})),[u,e,S]),i.useEffect((()=>{if(A){const e=e=>A.enabled=!e.value;return S.addEventListener("dragging-changed",e),()=>S.removeEventListener("dragging-changed",e)}}),[S,A]),i.useEffect((()=>{const e=e=>{w(),r&&r(e)};return null==S||null==S.addEventListener||S.addEventListener("change",e),a&&(null==S||null==S.addEventListener||S.addEventListener("mouseDown",a)),l&&(null==S||null==S.addEventListener||S.addEventListener("mouseUp",l)),c&&(null==S||null==S.addEventListener||S.addEventListener("objectChange",c)),()=>{null==S||null==S.removeEventListener||S.removeEventListener("change",e),a&&(null==S||null==S.removeEventListener||S.removeEventListener("mouseDown",a)),l&&(null==S||null==S.removeEventListener||S.removeEventListener("mouseUp",l)),c&&(null==S||null==S.removeEventListener||S.removeEventListener("objectChange",c))}}),[r,a,l,c,S,w]),S?i.createElement(i.Fragment,null,i.createElement("primitive",n({ref:d,dispose:void 0,object:S},g)),i.createElement("group",n({ref:M},v),e)):null}));var ws=r(2679);const _s=i.forwardRef((({domElement:e,selector:t,onChange:r,onLock:a,onUnlock:s,enabled:l=!0,...c},u)=>{const{camera:h,...d}=c,p=(0,o.useThree)((({gl:e})=>e)),f=(0,o.useThree)((e=>e.camera)),m=(0,o.useThree)((e=>e.invalidate)),g=(0,o.useThree)((e=>e.raycaster)),v=(0,o.useThree)((e=>e.events)),A=h||f,y=e||v.connected||p.domElement,[x]=i.useState((()=>new ws.q(A)));return i.useEffect((()=>{if(l){x.connect(y);const e=g.computeOffsets;return g.computeOffsets=e=>({offsetX:e.target.width/2,offsetY:e.target.height/2}),()=>{x.disconnect(),g.computeOffsets=e}}}),[l,x]),i.useEffect((()=>{const e=e=>{m(),r&&r(e)};x.addEventListener("change",e),a&&x.addEventListener("lock",a),s&&x.addEventListener("unlock",s);const n=()=>x.lock(),i=t?Array.from(document.querySelectorAll(t)):[document];return i.forEach((e=>e&&e.addEventListener("click",n))),()=>{x.removeEventListener("change",e),a&&x.addEventListener("lock",a),s&&x.addEventListener("unlock",s),i.forEach((e=>e?e.removeEventListener("click",n):void 0))}}),[r,a,s,t]),i.createElement("primitive",n({ref:u,object:x},d))}));var Es=r(55259);const Ss=i.forwardRef(((e,t)=>{const r=(0,o.useThree)((e=>e.camera)),a=(0,o.useThree)((e=>e.gl)),[s]=i.useState((()=>new Es.o(r,a.domElement)));return(0,o.useFrame)(((e,t)=>{s.update(t)})),s?i.createElement("primitive",n({ref:t,object:s},e)):null}));function Ms(e,t){const r=(0,o.useThree)((e=>e.mouse)),[n]=i.useState((()=>{const n=new s.Raycaster;return t&&(0,o.applyProps)(n,t,{}),function(t,i){n.setFromCamera(r,e instanceof s.Camera?e:e.current);const a=this.constructor.prototype.raycast.bind(this);a&&a(n,i)}}));return n}const Ts=i.createContext({}),Cs=()=>i.useContext(Ts),Is=2*Math.PI,Bs=new s.Object3D,Rs=new s.Matrix4,[Ps,Fs]=[new s.Quaternion,new s.Quaternion],Ls=new s.Vector3,Ds=new s.Vector3,Us=({alignment:e="bottom-right",margin:t=[80,80],renderPriority:r=0,autoClear:n=!0,onUpdate:a,onTarget:l,children:c})=>{const u=(0,o.useThree)((({size:e})=>e)),h=(0,o.useThree)((({camera:e})=>e)),d=(0,o.useThree)((({controls:e})=>e)),p=(0,o.useThree)((({gl:e})=>e)),f=(0,o.useThree)((({scene:e})=>e)),m=(0,o.useThree)((({invalidate:e})=>e)),g=i.useRef(),v=i.useRef(),A=i.useRef(null),[y]=i.useState((()=>new s.Scene)),x=i.useRef(!1),b=i.useRef(0),w=i.useRef(new s.Vector3(0,0,0)),_=i.useCallback((e=>{x.current=!0,(d||l)&&(w.current=(null==d?void 0:d.target)||(null==l?void 0:l())),b.current=h.position.distanceTo(Ls),Ps.copy(h.quaternion),Ds.copy(e).multiplyScalar(b.current).add(Ls),Bs.lookAt(Ds),Fs.copy(Bs.quaternion),m()}),[d,h,l,m]);i.useEffect((()=>(f.background&&(g.current=f.background,f.background=null,y.background=g.current),()=>{g.current&&(f.background=g.current)})),[]),(0,o.useFrame)(((e,t)=>{if(A.current&&v.current){var r;if(x.current)if(Ps.angleTo(Fs)<.01)x.current=!1;else{const e=t*Is;Ps.rotateTowards(Fs,e),h.position.set(0,0,1).applyQuaternion(Ps).multiplyScalar(b.current).add(w.current),h.up.set(0,1,0).applyQuaternion(Ps).normalize(),h.quaternion.copy(Ps),a?a():d&&d.update(),m()}Rs.copy(h.matrix).invert(),null==(r=v.current)||r.quaternion.setFromRotationMatrix(Rs),n&&(p.autoClear=!1),p.clearDepth(),p.render(y,A.current)}}),r);const E=Ms(A),S=i.useMemo((()=>({tweenCamera:_,raycast:E})),[_]),[M,T]=t,C=e.endsWith("-left")?-u.width/2+M:u.width/2-M,I=e.startsWith("top-")?u.height/2-T:-u.height/2+T;return(0,o.createPortal)(i.createElement(Ts.Provider,{value:S},i.createElement(is,{ref:A,position:[0,0,200]}),i.createElement("group",{ref:v,position:[C,I,0]},c)),y)},Ns="#f0f0f0",ks="#999",Os="black",Gs="black",zs=["Right","Left","Top","Bottom","Front","Back"],Vs=e=>new s.Vector3(...e).multiplyScalar(.38),Hs=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(Vs),Qs=[.25,.25,.25],js=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(Vs),Ws=js.map((e=>e.toArray().map((e=>0==e?.5:.25)))),Xs=({hover:e,index:t,font:r="20px Inter var, Arial, sans-serif",faces:n=zs,color:a=Ns,hoverColor:l=ks,textColor:c=Os,strokeColor:u=Gs,opacity:h=1})=>{const d=(0,o.useThree)((e=>e.gl)),p=i.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const i=e.getContext("2d");return i.fillStyle=a,i.fillRect(0,0,e.width,e.height),i.strokeStyle=u,i.strokeRect(0,0,e.width,e.height),i.font=r,i.textAlign="center",i.fillStyle=c,i.fillText(n[t].toUpperCase(),64,76),new s.CanvasTexture(e)}),[t,n,r,a,c,u]);return i.createElement("meshLambertMaterial",{map:p,"map-anisotropy":d.capabilities.getMaxAnisotropy()||1,attachArray:"material",color:e?l:"white",transparent:!0,opacity:h})},Ys=e=>{const{tweenCamera:t,raycast:r}=Cs(),[a,s]=i.useState(null);return i.createElement("mesh",{raycast:r,onPointerOut:e=>{e.stopPropagation(),s(null)},onPointerMove:e=>{e.stopPropagation(),s(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,r)=>i.createElement(Xs,n({key:r,index:r,hover:a===r},e)))),i.createElement("boxGeometry",null))},qs=({onClick:e,dimensions:t,position:r,hoverColor:n=ks})=>{const{tweenCamera:a,raycast:s}=Cs(),[o,l]=i.useState(!1);return i.createElement("mesh",{scale:1.01,position:r,raycast:s,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),a(r)})},i.createElement("meshBasicMaterial",{color:o?n:"white",transparent:!0,opacity:.6,visible:o}),i.createElement("boxGeometry",{args:t}))},Ks=e=>i.createElement("group",{scale:[60,60,60]},i.createElement(Ys,e),js.map(((t,r)=>i.createElement(qs,n({key:r,position:t,dimensions:Ws[r]},e)))),Hs.map(((t,r)=>i.createElement(qs,n({key:r,position:t,dimensions:Qs},e)))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}));function Js({scale:e=[.8,.05,.05],color:t,rotation:r}){return i.createElement("group",{rotation:r},i.createElement("mesh",{position:[.4,0,0]},i.createElement("boxGeometry",{args:e}),i.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function Zs({onClick:e,font:t,disabled:r,arcStyle:a,label:l,labelColor:c,axisHeadScale:u=1,...h}){const d=(0,o.useThree)((e=>e.gl)),p=i.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const r=e.getContext("2d");return r.beginPath(),r.arc(32,32,16,0,2*Math.PI),r.closePath(),r.fillStyle=a,r.fill(),l&&(r.font=t,r.textAlign="center",r.fillStyle=c,r.fillText(l,32,41)),new s.CanvasTexture(e)}),[a,l,c,t]),[f,m]=i.useState(!1),g=(l?1:.75)*(f?1.2:1)*u;return i.createElement("sprite",n({scale:g,onPointerOver:r?void 0:e=>{e.stopPropagation(),m(!0)},onPointerOut:r?void 0:e||(e=>{e.stopPropagation(),m(!1)})},h),i.createElement("spriteMaterial",{map:p,"map-anisotropy":d.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}const $s=({hideNegativeAxes:e,hideAxisHeads:t,disabled:r,font:a="18px Inter var, Arial, sans-serif",axisColors:s=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:o=1,axisScale:l,labels:c=["X","Y","Z"],labelColor:u="#000",onClick:h,...d})=>{const[p,f,m]=s,{tweenCamera:g,raycast:v}=Cs(),A={font:a,disabled:r,labelColor:u,raycast:v,onClick:h,axisHeadScale:o,onPointerDown:r?void 0:e=>{g(e.object.position),e.stopPropagation()}};return i.createElement("group",n({scale:40},d),i.createElement(Js,{color:p,rotation:[0,0,0],scale:l}),i.createElement(Js,{color:f,rotation:[0,0,Math.PI/2],scale:l}),i.createElement(Js,{color:m,rotation:[0,-Math.PI/2,0],scale:l}),!t&&i.createElement(i.Fragment,null,i.createElement(Zs,n({arcStyle:p,position:[1,0,0],label:c[0]},A)),i.createElement(Zs,n({arcStyle:f,position:[0,1,0],label:c[1]},A)),i.createElement(Zs,n({arcStyle:m,position:[0,0,1],label:c[2]},A)),!e&&i.createElement(i.Fragment,null,i.createElement(Zs,n({arcStyle:p,position:[-1,0,0]},A)),i.createElement(Zs,n({arcStyle:f,position:[0,-1,0]},A)),i.createElement(Zs,n({arcStyle:m,position:[0,0,-1]},A)))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}))};function eo(e,{path:t}){const[r]=(0,o.useLoader)(s.CubeTextureLoader,[e],(e=>e.setPath(t)));return r}eo.preload=(e,{path:t})=>o.useLoader.preload(s.CubeTextureLoader,[e],(e=>e.setPath(t)));var to=r(43953);function ro(e){return(0,o.useLoader)(to.y,e)}ro.preload=e=>o.useLoader.preload(to.y,e),ro.clear=e=>o.useLoader.clear(to.y,e);var no=r(44976),io=r(46295),ao=r(17607);let so=null;function oo(e,t,r){return n=>{r&&r(n),e&&(so||(so=new no._),so.setDecoderPath("string"==typeof e?e:"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),n.setDRACOLoader(so)),t&&n.setMeshoptDecoder("function"==typeof io.z?(0,io.z)():io.z)}}function lo(e,t=!0,r=!0,n){return(0,o.useLoader)(ao.E,e,oo(t,r,n))}lo.preload=(e,t=!0,r=!0,n)=>o.useLoader.preload(ao.E,e,oo(t,r,n)),lo.clear=e=>o.useLoader.clear(ao.E,e);var co=r(28934);const uo="https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master";function ho(e,t=`${uo}/basis/`){const r=(0,o.useThree)((e=>e.gl)),n=(0,o.useLoader)(co.a,ka(e)?Object.values(e):e,(e=>{e.detectSupport(r),e.setTranscoderPath(t)}));if((0,i.useEffect)((()=>{(Array.isArray(n)?n:[n]).forEach(r.initTexture)}),[r,n]),ka(e)){const t=Object.keys(e),r={};return t.forEach((e=>Object.assign(r,{[e]:n[t.indexOf(e)]}))),r}return n}ho.preload=(e,t=`${uo}/basis/`)=>o.useLoader.preload(co.a,e,(e=>{e.setTranscoderPath(t)})),ho.clear=e=>o.useLoader.clear(co.a,e);var po=r(73466),fo=r.n(po);function mo(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function go({showPanel:e=0,className:t,parent:r}){const n=function(e,t=[],r){const[n,a]=i.useState();return i.useLayoutEffect((()=>{const t=e();return a(t),mo(r,t),()=>mo(r,null)}),t),n}((()=>new(fo())),[]);return i.useEffect((()=>{if(n){const i=r&&r.current||document.body;n.showPanel(e),null==i||i.appendChild(n.dom),t&&n.dom.classList.add(...t.split(" ").filter((e=>e)));const a=(0,o.addEffect)((()=>n.begin())),s=(0,o.addAfterEffect)((()=>n.end()));return()=>{null==i||i.removeChild(n.dom),a(),s()}}}),[r,n,t,e]),null}function vo(e,t,r){const{gl:n,size:a}=(0,o.useThree)(),l=i.useMemo((()=>n.getPixelRatio()),[n]),c="number"==typeof e?e:a.width*l,u="number"==typeof t?t:a.height*l,h=("number"==typeof e?r:e)||{},{samples:d,...p}=h,f=i.useMemo((()=>{let e;return e=new s.WebGLRenderTarget(c,u,{minFilter:s.LinearFilter,magFilter:s.LinearFilter,encoding:n.outputEncoding,type:s.HalfFloatType,...p}),e.samples=d,e}),[]);return i.useLayoutEffect((()=>{f.setSize(c,u),d&&(f.samples=d)}),[d,f,c,u]),i.useEffect((()=>()=>f.dispose()),[]),f}function Ao({size:e=256,frames:t=1/0}={}){const r=(0,o.useThree)((e=>e.viewport.dpr)),{width:n,height:a}=(0,o.useThree)((e=>e.size)),l=e||n*r,c=e||a*r,u=i.useMemo((()=>{const e=new s.DepthTexture(l,c);return e.format=s.DepthFormat,e.type=s.UnsignedShortType,{depthTexture:e}}),[l,c]);let h=0;const d=vo(l,c,u);return(0,o.useFrame)((e=>{(t===1/0||he.viewport)),i=t*(n.aspect>e/t?n.width/e:n.height/t);return[e*(n.aspect>e/t?n.width/e:n.height/t)*r,i*r,1]}function xo(e,t,r,n){return new(r||(r=Promise))((function(i,a){function s(e){try{l(n.next(e))}catch(e){a(e)}}function o(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((n=n.apply(e,t||[])).next())}))}const bo=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"];function wo(e){return e.toLowerCase().replace(/^angle ?\((.+)\)*$/,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"").replace(/(?:vulkan|opengl) \d+\.\d+(?:\.\d+)?(?: \((.*)\))?/,"$1")}const _o="undefined"==typeof window,Eo=(()=>{if(_o)return;const{userAgent:e,platform:t,maxTouchPoints:r}=window.navigator,n=/(iphone|ipod|ipad)/i.test(e),i="iPad"===t||"MacIntel"===t&&r>0&&!window.MSStream;return{isIpad:i,isMobile:/android/i.test(e)||n||i,isSafari12:/Version\/12.+Safari/.test(e)}})();const So=[],Mo=[];function To(e,t){if(e===t)return 0;const r=e;e.length>t.length&&(e=t,t=r);let n=e.length,i=t.length;for(;n>0&&e.charCodeAt(~-n)===t.charCodeAt(~-i);)n--,i--;let a,s=0;for(;sc?l>c?c+1:l:l>o?o+1:l;return c}function Co(e){return null!=e}class Io extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype)}}const Bo=({mobileTiers:e=[0,15,30,60],desktopTiers:t=[0,15,30,60],override:r={},glContext:n,failIfMajorPerformanceCaveat:i=!1,benchmarksURL:a="https://unpkg.com/detect-gpu@4.0.50/dist/benchmarks"}={})=>xo(void 0,void 0,void 0,(function*(){const s={};if(_o)return{tier:0,type:"SSR"};const{isIpad:o=!!(null==Eo?void 0:Eo.isIpad),isMobile:l=!!(null==Eo?void 0:Eo.isMobile),screenSize:c=window.screen,loadBenchmarks:u=(e=>xo(void 0,void 0,void 0,(function*(){const t=yield fetch(`${a}/${e}`).then((e=>e.json()));if(parseInt(t.shift().split(".")[0],10)<4)throw new Io("Detect GPU benchmark data is out of date. Please update to version 4x");return t})))}=r;let{renderer:h}=r;const d=(e,t,r,n,i)=>({device:i,fps:n,gpu:r,isMobile:l,tier:e,type:t});let p,f="";if(h)h=wo(h),p=[h];else{const e=n||function(e,t=!1){const r={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:t,powerPreference:"high-performance",stencil:!1};e&&delete r.powerPreference;const n=window.document.createElement("canvas"),i=n.getContext("webgl",r)||n.getContext("experimental-webgl",r);return null!=i?i:void 0}(null==Eo?void 0:Eo.isSafari12,i);if(!e)return d(0,"WEBGL_UNSUPPORTED");const t=e.getExtension("WEBGL_debug_renderer_info");if(t&&(h=e.getParameter(t.UNMASKED_RENDERER_WEBGL)),!h)return d(1,"FALLBACK");f=h,h=wo(h),p=function(e,t,r){return"apple gpu"===t?function(e,t,r){if(!r)return[t];const n=function(e){const t=e.createShader(35633),r=e.createShader(35632),n=e.createProgram();if(!(r&&t&&n))return;e.shaderSource(t,"\n precision highp float;\n attribute vec3 aPosition;\n varying float vvv;\n void main() {\n vvv = 0.31622776601683794;\n gl_Position = vec4(aPosition, 1.0);\n }\n "),e.shaderSource(r,"\n precision highp float;\n varying float vvv;\n void main() {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n gl_FragColor = enc;\n }\n "),e.compileShader(t),e.compileShader(r),e.attachShader(n,t),e.attachShader(n,r),e.linkProgram(n),e.detachShader(n,t),e.detachShader(n,r),e.deleteShader(t),e.deleteShader(r),e.useProgram(n);const i=e.createBuffer();e.bindBuffer(34962,i),e.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);const a=e.getAttribLocation(n,"aPosition");e.vertexAttribPointer(a,3,5126,!1,0,0),e.enableVertexAttribArray(a),e.clearColor(1,1,1,1),e.clear(16384),e.viewport(0,0,1,1),e.drawArrays(4,0,3);const s=new Uint8Array(4);return e.readPixels(0,0,1,1,6408,5121,s),e.deleteProgram(n),e.deleteBuffer(i),s.join("")}(e),i="801621810",a="8016218135",s="80162181161",o=(null==Eo?void 0:Eo.isIpad)?[["a7",s,12],["a8",a,15],["a8x",a,15],["a9",a,15],["a9x",a,15],["a10",a,15],["a10x",a,15],["a12",i,15],["a12x",i,15],["a12z",i,15],["a14",i,15],["m1",i,15]]:[["a7",s,12],["a8",a,12],["a9",a,15],["a10",a,15],["a11",i,15],["a12",i,15],["a13",i,15],["a14",i,15]];let l;return"80162181255"===n?l=o.filter((([,,e])=>e>=14)):(l=o.filter((([,e])=>e===n)),l.length||(l=o)),l.map((([e])=>`apple ${e} gpu`))}(e,t,r):[t]}(e,h,l)}const m=(yield Promise.all(p.map((function(e){var t;return xo(this,void 0,void 0,(function*(){const r=(e=>{const t=l?["adreno","apple","mali-t","mali","nvidia","powervr"]:["intel","apple","amd","radeon","nvidia","geforce"];for(const r of t)if(e.includes(r))return r})(e);if(!r)return;const n=`${l?"m":"d"}-${r}${o?"-ipad":""}.json`,i=s[n]=null!==(t=s[n])&&void 0!==t?t:u(n);let a;try{a=yield i}catch(r){if(r instanceof Io)throw r;return}const h=function(e){var t;const r=(e=e.replace(/\([^)]+\)/,"")).match(/\d+/)||e.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!==(t=null==r?void 0:r.join("").replace(/\W|amd/g,""))&&void 0!==t?t:""}(e);let d=a.filter((([,e])=>e===h));d.length||(d=a.filter((([t])=>t.includes(e))));const p=d.length;if(0===p)return;let f,[m,,,g]=p>1?d.map((t=>[t,To(e,t[0])])).sort((([,e],[,t])=>e-t))[0][0]:d[0],v=Number.MAX_VALUE;const{devicePixelRatio:A}=window,y=c.width*A*c.height*A;for(const e of g){const[t,r]=e,n=t*r,i=Math.abs(y-n);ie===r?t-n:e-r));if(!m.length){const e=bo.find((e=>h.includes(e)));return e?d(0,"BLOCKLISTED",e):d(1,"FALLBACK",`${h} (${f})`)}const[,g,v,A]=m[0];if(-1===g)return d(0,"BLOCKLISTED",v,g,A);const y=l?e:t;let x=0;for(let e=0;e=y[e]&&(x=e);return d(x,"BENCHMARK",v,g,A)})),Ro=e=>Ca((()=>Bo(e)),["useDetectGPU"]);function Po(e,t,...r){const n=i.useRef(),a=(0,o.useThree)((e=>e.scene));return i.useEffect((()=>(e&&t&&null!=e&&e.current&&(n.current=new t(e.current,...r),n.current&&a.add(n.current)),!e&&n.current&&a.remove(n.current),()=>{n.current&&a.remove(n.current)})),[a,t,e,r]),(0,o.useFrame)((()=>{var e;null!=(e=n.current)&&e.update&&n.current.update()})),n}const Fo=new s.Vector3,Lo=new s.Vector3,Do=new s.Vector3,Uo=new s.Vector2,No=new s.Vector2,ko=new s.Vector2,Oo=new s.Vector3;function Go(e,t,r,n,i,a,o){Fo.fromBufferAttribute(t,n),Lo.fromBufferAttribute(t,i),Do.fromBufferAttribute(t,a);const l=function(e,t,r,n,i,a){let o;return o=a===s.BackSide?e.intersectTriangle(n,r,t,!0,i):e.intersectTriangle(t,r,n,a!==s.DoubleSide,i),null===o?null:{distance:e.origin.distanceTo(i),point:i.clone()}}(e,Fo,Lo,Do,Oo,o);if(l){r&&(Uo.fromBufferAttribute(r,n),No.fromBufferAttribute(r,i),ko.fromBufferAttribute(r,a),l.uv=s.Triangle.getUV(Oo,Fo,Lo,Do,Uo,No,ko,new s.Vector2));const e={a:n,b:i,c:a,normal:new s.Vector3,materialIndex:0};s.Triangle.getNormal(Fo,Lo,Do,e.normal),l.face=e,l.faceIndex=n}return l}function zo(e,t,r,n,i){const a=3*n,s=e.index.getX(a),o=e.index.getX(a+1),l=e.index.getX(a+2),c=Go(r,e.attributes.position,e.attributes.uv,s,o,l,t);return c?(c.faceIndex=n,i&&i.push(c),c):null}function Vo(e,t,r){return null===e?null:(e.point.applyMatrix4(t.matrixWorld),e.distance=e.point.distanceTo(r.ray.origin),e.object=t,e.distancer.far?null:e)}const Ho=1.25,Qo=65535,jo=Math.pow(2,-24);class Wo{constructor(){}}function Xo(e,t,r){return r.min.x=t[e],r.min.y=t[e+1],r.min.z=t[e+2],r.max.x=t[e+3],r.max.y=t[e+4],r.max.z=t[e+5],r}function Yo(e){let t=-1,r=-1/0;for(let n=0;n<3;n++){const i=e[n+3]-e[n];i>r&&(r=i,t=n)}return t}function qo(e,t){t.set(e)}function Ko(e,t,r){let n,i;for(let a=0;a<3;a++){const s=a+3;n=e[a],i=t[a],r[a]=ni?n:i}}function Jo(e,t,r){for(let n=0;n<3;n++){const i=t[e+2*n],a=t[e+2*n+1],s=i-a,o=i+a;sr[n+3]&&(r[n+3]=o)}}function Zo(e){const t=e[3]-e[0],r=e[4]-e[1],n=e[5]-e[2];return 2*(t*r+r*n+n*t)}function $o(e,t,r,n,i=null){let a=1/0,s=1/0,o=1/0,l=-1/0,c=-1/0,u=-1/0,h=1/0,d=1/0,p=1/0,f=-1/0,m=-1/0,g=-1/0;const v=null!==i;for(let A=6*t,y=6*(t+r);Al&&(l=i),v&&tf&&(f=t);const y=e[A+2],x=e[A+3],b=y-x,w=y+x;bc&&(c=w),v&&ym&&(m=y);const _=e[A+4],E=e[A+5],S=_-E,M=_+E;Su&&(u=M),v&&_g&&(g=_)}n[0]=a,n[1]=s,n[2]=o,n[3]=l,n[4]=c,n[5]=u,v&&(i[0]=h,i[1]=d,i[2]=p,i[3]=f,i[4]=m,i[5]=g)}const el=32,tl=(e,t)=>e.candidate-t.candidate,rl=new Array(el).fill().map((()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0}))),nl=new Float32Array(6);function il(e,t){function r(e){p&&p(e/f)}function n(t,i,s,p=null,f=0){if(!m&&f>=c&&(m=!0,u&&(console.warn(`MeshBVH: Max depth of ${c} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),s<=h||f>=c)return r(i+s),t.offset=i,t.count=s,t;const g=function(e,t,r,n,i,a){let s=-1,o=0;if(0===a)s=Yo(t),-1!==s&&(o=(t[s]+t[s+3])/2);else if(1===a)s=Yo(e),-1!==s&&(o=function(e,t,r,n){let i=0;for(let a=t,s=t+r;a=a.candidate?Jo(i,r,a.rightCacheBounds):(Jo(i,r,a.leftCacheBounds),a.count++)}}for(let r=0;r=el&&(t=31);const a=rl[t];a.count++,Jo(i,r,a.bounds)}const t=rl[31];qo(t.bounds,t.rightCacheBounds);for(let e=30;e>=0;e--){const t=rl[e],r=rl[e+1];Ko(t.bounds,r.rightCacheBounds,t.rightCacheBounds)}let d=0;for(let r=0;r<31;r++){const t=rl[r],n=t.count,c=t.bounds,u=rl[r+1].rightCacheBounds;0!==n&&(0===d?qo(c,nl):Ko(c,nl,nl)),d+=n;let h=0,p=0;0!==d&&(h=Zo(nl)/a);const f=i-d;0!==f&&(p=Zo(u)/a);const m=1+Ho*(h*d+p*f);m=o;)s--;if(!(a65535?new Uint32Array(new n(4*r)):new Uint16Array(new n(2*r)),e.setIndex(new s.BufferAttribute(i,1));for(let e=0;em&&(m=l),c>m&&(m=c);const g=(m-h)/2,v=2*n;a[i+v+0]=h+g,a[i+v+1]=g+(Math.abs(h)+g)*jo,ht[n+3]&&(t[n+3]=m)}}return a}(e,i),l=e.index.array,c=t.maxDepth,u=t.verbose,h=t.maxLeafTris,d=t.strategy,p=t.onProgress,f=e.index.count/3;let m=!1;const g=[],v=function(e){if(!e.groups||!e.groups.length)return[{offset:0,count:e.index.count/3}];const t=[],r=new Set;for(const i of e.groups)r.add(i.start),r.add(i.start+i.count);const n=Array.from(r.values()).sort(((e,t)=>e-t));for(let i=0;io&&(o=t);const r=e[u+2];rl&&(l=r);const n=e[u+4];nc&&(c=n)}n[0]=i,n[1]=a,n[2]=s,n[3]=o,n[4]=l,n[5]=c}(o,e.offset,e.count,a),n(t,e.offset,e.count,a),g.push(t)}else for(let s of v){const e=new Wo;e.boundingData=new Float32Array(6),$o(o,s.offset,s.count,e.boundingData,a),n(e,s.offset,s.count,a),g.push(e)}return g}class al{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let r=1/0,n=-1/0;for(let i=0,a=e.length;in?a:n}this.min=r,this.max=n}setFromPoints(e,t){let r=1/0,n=-1/0;for(let i=0,a=t.length;in?s:n}this.min=r,this.max=n}isSeparated(e){return this.min>e.max||e.min>this.max}}al.prototype.setFromBox=function(){const e=new s.Vector3;return function(t,r){const n=r.min,i=r.max;let a=1/0,s=-1/0;for(let o=0;o<=1;o++)for(let r=0;r<=1;r++)for(let l=0;l<=1;l++){e.x=n.x*o+i.x*(1-o),e.y=n.y*r+i.y*(1-r),e.z=n.z*l+i.z*(1-l);const c=t.dot(e);a=Math.min(c,a),s=Math.max(c,s)}this.min=a,this.max=s}}();!function(){const e=new al}();const sl=function(){const e=new s.Vector3,t=new s.Vector3,r=new s.Vector3;return function(n,i,a){const s=n.start,o=e,l=i.start,c=t;r.subVectors(s,l),e.subVectors(n.end,n.start),t.subVectors(i.end,i.start);const u=r.dot(c),h=c.dot(o),d=c.dot(c),p=r.dot(o),f=o.dot(o)*d-h*h;let m,g;m=0!==f?(u*h-p*d)/f:0,g=(u+m*h)/d,a.x=m,a.y=g}}(),ol=function(){const e=new s.Vector2,t=new s.Vector3,r=new s.Vector3;return function(n,i,a,s){sl(n,i,e);let o=e.x,l=e.y;if(o>=0&&o<=1&&l>=0&&l<=1)return n.at(o,a),void i.at(l,s);if(o>=0&&o<=1)return l<0?i.at(0,s):i.at(1,s),void n.closestPointToPoint(s,!0,a);if(l>=0&&l<=1)return o<0?n.at(0,a):n.at(1,a),void i.closestPointToPoint(a,!0,s);{let e,c;e=o<0?n.start:n.end,c=l<0?i.start:i.end;const u=t,h=r;return n.closestPointToPoint(c,!0,t),i.closestPointToPoint(e,!0,r),u.distanceToSquared(c)<=h.distanceToSquared(e)?(a.copy(u),void s.copy(c)):(a.copy(e),void s.copy(h))}}}(),ll=function(){const e=new s.Vector3,t=new s.Vector3,r=new s.Plane,n=new s.Line3;return function(i,a){const{radius:s,center:o}=i,{a:l,b:c,c:u}=a;n.start=l,n.end=c;if(n.closestPointToPoint(o,!0,e).distanceTo(o)<=s)return!0;n.start=l,n.end=u;if(n.closestPointToPoint(o,!0,e).distanceTo(o)<=s)return!0;n.start=c,n.end=u;if(n.closestPointToPoint(o,!0,e).distanceTo(o)<=s)return!0;const h=a.getPlane(r);if(Math.abs(h.distanceToPoint(o))<=s){const e=h.projectPoint(o,t);if(a.containsPoint(e))return!0}return!1}}();function cl(e){return Math.abs(e)<1e-15}class ul extends s.Triangle{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map((()=>new s.Vector3)),this.satBounds=new Array(4).fill().map((()=>new al)),this.points=[this.a,this.b,this.c],this.sphere=new s.Sphere,this.plane=new s.Plane,this.needsUpdate=!0}intersectsSphere(e){return ll(e,this)}update(){const e=this.a,t=this.b,r=this.c,n=this.points,i=this.satAxes,a=this.satBounds,s=i[0],o=a[0];this.getNormal(s),o.setFromPoints(s,n);const l=i[1],c=a[1];l.subVectors(e,t),c.setFromPoints(l,n);const u=i[2],h=a[2];u.subVectors(t,r),h.setFromPoints(u,n);const d=i[3],p=a[3];d.subVectors(r,e),p.setFromPoints(d,n),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(s,e),this.needsUpdate=!1}}ul.prototype.closestPointToSegment=function(){const e=new s.Vector3,t=new s.Vector3,r=new s.Line3;return function(n,i=null,a=null){const{start:s,end:o}=n,l=this.points;let c,u=1/0;for(let h=0;h<3;h++){const s=(h+1)%3;r.start.copy(l[h]),r.end.copy(l[s]),ol(r,n,e,t),c=e.distanceToSquared(t),c1-1e-10){const e=this.satBounds,o=this.satAxes;r[0]=s.a,r[1]=s.b,r[2]=s.c;for(let t=0;t<4;t++){const i=e[t],a=o[t];if(n.setFromPoints(a,r),i.isSeparated(n))return!1}const l=s.satBounds,c=s.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let r=0;r<4;r++){const e=l[r],i=c[r];if(n.setFromPoints(i,t),e.isSeparated(n))return!1}for(let s=0;s<4;s++){const e=o[s];for(let s=0;s<4;s++){const o=c[s];if(a.crossVectors(e,o),n.setFromPoints(a,t),i.setFromPoints(a,r),n.isSeparated(i))return!1}}return p&&(f||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}{const e=this.points;let t=!1,r=0;for(let s=0;s<3;s++){const n=e[s],i=e[(s+1)%3];u.start.copy(n),u.end.copy(i),u.delta(o);const a=t?h.start:h.end,l=cl(g.distanceToPoint(n));if(cl(g.normal.dot(o))&&l){h.copy(u),r=2;break}if((g.intersectLine(u,a)||l)&&!cl(a.distanceTo(i))){if(r++,t)break;t=!0}}if(1===r&&s.containsPoint(h.end))return p&&(p.start.copy(h.end),p.end.copy(h.end)),!0;if(2!==r)return!1;const n=s.points;let i=!1,a=0;for(let s=0;s<3;s++){const e=n[s],t=n[(s+1)%3];u.start.copy(e),u.end.copy(t),u.delta(l);const r=i?d.start:d.end,o=cl(m.distanceToPoint(e));if(cl(m.normal.dot(l))&&o){d.copy(u),a=2;break}if((m.intersectLine(u,r)||o)&&!cl(r.distanceTo(t))){if(a++,i)break;i=!0}}if(1===a&&this.containsPoint(d.end))return p&&(p.start.copy(d.end),p.end.copy(d.end)),!0;if(2!==a)return!1;if(h.delta(o),d.delta(l),o.dot(l)<0){let e=d.start;d.start=d.end,d.end=e}const f=h.start.dot(o),v=h.end.dot(o),A=d.start.dot(o),y=d.end.dot(o),x=v0?p.start.copy(h.start):p.start.copy(d.start),c.subVectors(h.end,d.end),c.dot(o)<0?p.end.copy(h.end):p.end.copy(d.end)),!0)}}}(),ul.prototype.distanceToPoint=function(){const e=new s.Vector3;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}(),ul.prototype.distanceToTriangle=function(){const e=new s.Vector3,t=new s.Vector3,r=["a","b","c"],n=new s.Line3,i=new s.Line3;return function(a,s=null,o=null){const l=s||o?n:null;if(this.intersectsTriangle(a,l))return(s||o)&&(s&&l.getCenter(s),o&&l.getCenter(o)),0;let c=1/0;for(let t=0;t<3;t++){let n;const i=r[t],l=a[i];this.closestPointToPoint(l,e),n=l.distanceToSquared(e),nnew s.Vector3)),this.satAxes=new Array(3).fill().map((()=>new s.Vector3)),this.satBounds=new Array(3).fill().map((()=>new al)),this.alignedSatBounds=new Array(3).fill().map((()=>new al)),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),r&&this.matrix.copy(r)}set(e,t,r){this.min.copy(e),this.max.copy(t),this.matrix.copy(r),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}function dl(e,t,r,n){const i=e.a,a=e.b,s=e.c;let o=t,l=t+1,c=t+2;r&&(o=r.getX(t),l=r.getX(t+1),c=r.getX(t+2)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c)}function pl(e,t,r,n,i,a,s){const o=r.index,l=r.attributes.position;for(let c=e,u=t+e;cnew s.Line3)),r=new Array(12).fill().map((()=>new s.Line3)),n=new s.Vector3,i=new s.Vector3;return function(a,s=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(o||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),o&&o.copy(n),l&&l.copy(i)),0;const c=s*s,u=a.min,h=a.max,d=this.points;let p=1/0;for(let e=0;e<8;e++){const t=d[e];i.copy(t).clamp(u,h);const r=t.distanceToSquared(i);if(r=0;let c,u;l?(c=Al(e),u=yl(e,o)):(c=yl(e,o),u=Al(e));const h=Tl(c,a,n,bl)?El(c,t,r,n):null;if(h){const e=h.point[s];if(l?e<=a[u+i]:e>=a[u+i+3])return h}const d=Tl(u,a,n,bl)?El(u,t,r,n):null;return h&&d?h.distance<=d.distance?h:d:h||d||null}}const Sl=function(){let e,t;const r=[],n=new fl((()=>new s.Box3));return function(...a){e=n.getPrimitive(),t=n.getPrimitive(),r.push(e,t);const s=i(...a);n.releasePrimitive(e),n.releasePrimitive(t),r.pop(),r.pop();const o=r.length;return o>0&&(t=r[o-1],e=r[o-2]),s};function i(r,n,a,s,o=null,l=0,c=0){function u(e){let t=2*e,r=Rl,n=Pl;for(;!ml(t,r);)t=2*(e=Al(e));return gl(e,n)}function h(e){let t=2*e,r=Rl,n=Pl;for(;!ml(t,r);)t=2*(e=yl(e,n));return gl(e,n)+vl(t,r)}let d=2*r,p=Bl,f=Rl,m=Pl;if(ml(d,f)){const t=gl(r,m),n=vl(d,f);return Xo(r,p,e),s(t,n,!1,c,l+r,e)}{const d=Al(r),g=yl(r,m);let v,A,y,x,b=d,w=g;if(o&&(y=e,x=t,Xo(b,p,y),Xo(w,p,x),v=o(y),A=o(x),Ai.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(c),e.b.applyMatrix4(c),e.c.applyMatrix4(c),e.needsUpdate=!0;for(let r=3*v,n=3*(A+v);rnew ul));class Yl{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Yl.serialize(arguments[0],{cloneBuffers:void 0===arguments[2]||arguments[2]});t={cloneBuffers:!0,...t};const r=e.geometry,n=e._roots,i=r.getIndex();let a;return a=t.cloneBuffers?{roots:n.map((e=>e.slice())),index:i.array.slice()}:{roots:n,index:i.array},a}static deserialize(e,t,r={}){if("boolean"==typeof r)return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Yl.deserialize(arguments[0],arguments[1],{setIndex:void 0===arguments[2]||arguments[2]});r={setIndex:!0,...r};const{index:n,roots:i}=e,a=new Yl(t,{...r,[Dl]:!0});if(a._roots=i,r.setIndex){const r=t.getIndex();if(null===r){const r=new s.BufferAttribute(e.index,1,!1);t.setIndex(r)}else r.array!==n&&(r.array.set(n),r.needsUpdate=!0)}return a}constructor(e,t={}){if(!e.isBufferGeometry)throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.");if((t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[Dl]:!1},t)).useSharedArrayBuffer&&"undefined"==typeof SharedArrayBuffer)throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[Dl]||(this._roots=function(e,t){const r=il(e,t);let n,i,a;const s=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let u=0;uMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[r+6]=o/4,o=c(o,a),i[r+7]=s,o}}}(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new s.Box3))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=this.geometry,r=t.index.array,n=t.attributes.position;let i,a,s,o,l=0;const c=this._roots;for(let h=0,d=c.length;hh&&(h=a),sd&&(d=s),op&&(p=o)}return(o[t+0]!==i||o[t+1]!==l||o[t+2]!==u||o[t+3]!==h||o[t+4]!==d||o[t+5]!==p)&&(o[t+0]=i,o[t+1]=l,o[t+2]=u,o[t+3]=h,o[t+4]=d,o[t+5]=p,!0)}{const r=t+8,n=a[t+6],s=r+i,c=n+i;let h=l,d=!1,p=!1;e?h||(d=e.has(s),p=e.has(c),h=!d&&!p):(d=!0,p=!0);const f=h||p;let m=!1;(h||d)&&(m=u(r,i,h));let g=!1;f&&(g=u(n,i,h));const v=m||g;if(v)for(let e=0;e<3;e++){const i=r+e,a=n+e,s=o[i],l=o[i+3],c=o[a],u=o[a+3];o[t+e]=su?l:u}return v}}}traverse(e,t=0){const r=this._roots[t],n=new Uint32Array(r),i=new Uint16Array(r);!function t(a,s=0){const o=2*a,l=i[o+15]===Qo;if(l){const t=n[a+6],c=i[o+14];e(s,l,new Float32Array(r,4*a,6),t,c)}else{const i=a+8,o=n[a+6],c=n[a+7];e(s,l,new Float32Array(r,4*a,6),c)||(t(i,s+1),t(o,s+1))}}(0)}raycast(e,t=s.FrontSide){const r=this._roots,n=this.geometry,i=[],a=t.isMaterial,o=Array.isArray(t),l=n.groups,c=a?t.side:t;for(let s=0,u=r.length;s{const a=3*r;return e(t,a,a+1,a+2,n,i)}}e={boundsTraverseOrder:r,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}const i=Xl.getPrimitive();let{boundsTraverseOrder:a,intersectsBounds:s,intersectsRange:o,intersectsTriangle:l}=e;if(o&&l){const e=o;o=(t,r,a,s,o)=>!!e(t,r,a,s,o)||pl(t,r,n,l,a,s,i)}else o||(o=l?(e,t,r,a)=>pl(e,t,n,l,r,a,i):(e,t,r)=>r);let c=!1,u=0;for(const h of this._roots){if(Fl(h),c=Sl(0,n,s,o,a,u),Ll(),c)break;u+=h.byteLength}return Xl.releasePrimitive(i),c}bvhcast(e,t,r){let{intersectsRanges:n,intersectsTriangles:i}=r;const a=this.geometry.index,s=this.geometry.attributes.position,o=e.geometry.index,l=e.geometry.attributes.position;kl.copy(t).invert();const c=Xl.getPrimitive(),u=Xl.getPrimitive();if(i){function d(e,r,n,h,d,p,f,m){for(let g=n,v=n+h;gNl.intersectsBox(e),intersectsRange:(t,r,i,a,s,o)=>(Ul.copy(o),Ul.applyMatrix4(kl),e.shapecast({intersectsBounds:e=>Ul.intersectsBox(e),intersectsRange:(e,i,o,l,c)=>n(t,r,e,i,a,s,l,c)}))});return Xl.releasePrimitive(c),Xl.releasePrimitive(u),h}intersectsBox(e,t){return Ol.set(e.min,e.max,t),Ol.needsUpdate=!0,this.shapecast({intersectsBounds:e=>Ol.intersectsBox(e),intersectsTriangle:e=>Ol.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,r={},n={},i=0,a=1/0){e.boundingBox||e.computeBoundingBox(),Ol.set(e.boundingBox.min,e.boundingBox.max,t),Ol.needsUpdate=!0;const s=this.geometry,o=s.attributes.position,l=s.index,c=e.attributes.position,u=e.index,h=Xl.getPrimitive(),d=Xl.getPrimitive();let p=Vl,f=Hl,m=null,g=null;n&&(m=Ql,g=jl);let v=1/0,A=null,y=null;return kl.copy(t).invert(),Gl.matrix.copy(kl),this.shapecast({boundsTraverseOrder:e=>Ol.distanceToBox(e),intersectsBounds:(e,t,r)=>r{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:e=>Gl.distanceToBox(e),intersectsBounds:(e,t,r)=>r{for(let s=3*e,x=3*(e+a);s(zl.copy(e).clamp(t.min,t.max),zl.distanceToSquared(e)),intersectsBounds:(e,t,r)=>r{t.closestPointToPoint(e,zl);const n=e.distanceToSquared(zl);return n{Xo(0,new Float32Array(t),Wl),e.union(Wl)})),e}}const ql=new s.Ray,Kl=new s.Matrix4,Jl=s.Mesh.prototype.raycast;function Zl(e,t){if(this.geometry.boundsTree){if(void 0===this.material)return;Kl.copy(this.matrixWorld).invert(),ql.copy(e.ray).applyMatrix4(Kl);const r=this.geometry.boundsTree;if(!0===e.firstHitOnly){const n=Vo(r.raycastFirst(ql,this.material),this,e);n&&t.push(n)}else{const n=r.raycast(ql,this.material);for(let r=0,i=n.length;r{if(e.current){e.current.raycast=Zl;const r=e.current.geometry;return r.computeBoundsTree=$l,r.disposeBoundsTree=ec,r.computeBoundsTree(t),()=>{r.boundsTree&&r.disposeBoundsTree()}}}),[e,t])}function rc(...e){const t=i.useRef([]);return t.current=e.map((e=>i.useContext(e))),i.useMemo((()=>({children:r})=>e.reduceRight(((e,r,n)=>i.createElement(r.Provider,{value:t.current[n],children:e})),r)),[])}function nc(e,t){const r=i.useRef(),[n]=i.useState((()=>t?t instanceof s.Object3D?{current:t}:t:r)),[a]=i.useState((()=>new s.AnimationMixer(void 0))),l=i.useRef({}),[c]=i.useState((()=>{const t={};return e.forEach((e=>Object.defineProperty(t,e.name,{enumerable:!0,get(){if(n.current)return l.current[e.name]||(l.current[e.name]=a.clipAction(e,n.current))}}))),{ref:n,clips:e,actions:t,names:e.map((e=>e.name)),mixer:a}}));return(0,o.useFrame)(((e,t)=>a.update(t))),i.useEffect((()=>{const e=n.current;return()=>{l.current={},Object.values(c.actions).forEach((t=>{e&&a.uncacheAction(t,e)}))}}),[e]),c}function ic(e){const t=i.useRef(null),r=i.useRef(!1),n=i.useRef(!1);return i.useEffect((()=>{const i=t.current;if(i){const t=(0,o.addEffect)((()=>(r.current=!1,!0))),a=i.onBeforeRender;i.onBeforeRender=()=>r.current=!0;const s=(0,o.addAfterEffect)((()=>(r.current!==n.current&&e(n.current=r.current),!0)));return()=>{i.onBeforeRender=a,t(),s()}}}),[]),t}function ac(e=new s.Vector3,t=new s.Vector3){const[r]=i.useState((()=>({position:new s.Vector3,size:new s.Vector3})));(0,o.applyProps)(r,{position:e,size:t});const n=i.useRef(null),a=i.useMemo((()=>({ref:n,onBeforeCompile:e=>function(e,t,r){e.defines.BOX_PROJECTED_ENV_MAP=!0,e.uniforms.envMapPosition={value:t},e.uniforms.envMapSize={value:r},e.vertexShader=`\n varying vec3 vWorldPosition;\n ${e.vertexShader.replace("#include ","\n#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n #ifdef BOX_PROJECTED_ENV_MAP\n vWorldPosition = worldPosition.xyz;\n #endif\n#endif\n")}`,e.fragmentShader=`\n \n#ifdef BOX_PROJECTED_ENV_MAP\n uniform vec3 envMapSize;\n uniform vec3 envMapPosition;\n varying vec3 vWorldPosition;\n \n vec3 parallaxCorrectNormal( vec3 v, vec3 cubeSize, vec3 cubePos ) {\n vec3 nDir = normalize( v );\n vec3 rbmax = ( .5 * cubeSize + cubePos - vWorldPosition ) / nDir;\n vec3 rbmin = ( -.5 * cubeSize + cubePos - vWorldPosition ) / nDir;\n vec3 rbminmax;\n rbminmax.x = ( nDir.x > 0. ) ? rbmax.x : rbmin.x;\n rbminmax.y = ( nDir.y > 0. ) ? rbmax.y : rbmin.y;\n rbminmax.z = ( nDir.z > 0. ) ? rbmax.z : rbmin.z;\n float correction = min( min( rbminmax.x, rbminmax.y ), rbminmax.z );\n vec3 boxIntersection = vWorldPosition + nDir * correction; \n return boxIntersection - cubePos;\n }\n#endif\n\n ${e.fragmentShader.replace("#include ",s.ShaderChunk.envmap_physical_pars_fragment).replace("vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );","vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n \n#ifdef BOX_PROJECTED_ENV_MAP\n worldNormal = parallaxCorrectNormal( worldNormal, envMapSize, envMapPosition );\n#endif\n\n ").replace("reflectVec = inverseTransformDirection( reflectVec, viewMatrix );","reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n#ifdef BOX_PROJECTED_ENV_MAP\n reflectVec = parallaxCorrectNormal( reflectVec, envMapSize, envMapPosition );\n#endif\n\n ")}`}(e,r.position,r.size),customProgramCacheKey:()=>JSON.stringify(r.position.toArray())+JSON.stringify(r.size.toArray())})),[...r.position.toArray(),...r.size.toArray()]);return i.useLayoutEffect((()=>{n.current.needsUpdate=!0}),[r]),a}var sc=r(53615);const oc=i.forwardRef((({children:e,curve:t},r)=>{const[n]=i.useState((()=>new s.Scene)),[a,l]=i.useState(),c=i.useRef();return i.useEffect((()=>{c.current=new sc.Zw(n.children[0]),l(c.current.object3D)}),[e]),i.useEffect((()=>{var e;t&&(null==(e=c.current)||e.updateCurve(0,t))}),[t]),i.useImperativeHandle(r,(()=>({moveAlongCurve:e=>{var t;null==(t=c.current)||t.moveAlongCurve(e)}}))),i.createElement(i.Fragment,null,(0,o.createPortal)(e,n),a&&i.createElement("primitive",{object:a}))}));class lc extends s.MeshPhysicalMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._distort={value:.4},this._radius={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.radius=this._radius,e.uniforms.distort=this._distort,e.vertexShader=`\n uniform float time;\n uniform float radius;\n uniform float distort;\n #define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include ","\n float updateTime = time / 50.0;\n float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));\n vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));\n ")}get time(){return this._time.value}set time(e){this._time.value=e}get distort(){return this._distort.value}set distort(e){this._distort.value=e}get radius(){return this._radius.value}set radius(e){this._radius.value=e}}const cc=i.forwardRef((({speed:e=1,...t},r)=>{const[a]=i.useState((()=>new lc));return(0,o.useFrame)((t=>a&&(a.time=t.clock.getElapsedTime()*e))),i.createElement("primitive",n({dispose:void 0,object:a,ref:r,attach:"material"},t))}));class uc extends s.MeshStandardMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._factor={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.factor=this._factor,e.vertexShader=`\n uniform float time;\n uniform float factor;\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include ","float theta = sin( time + position.y ) / 2.0 * factor;\n float c = cos( theta );\n float s = sin( theta );\n mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );\n vec3 transformed = vec3( position ) * m;\n vNormal = vNormal * m;")}get time(){return this._time.value}set time(e){this._time.value=e}get factor(){return this._factor.value}set factor(e){this._factor.value=e}}const hc=i.forwardRef((({speed:e=1,...t},r)=>{const[a]=i.useState((()=>new uc));return(0,o.useFrame)((t=>a&&(a.time=t.clock.getElapsedTime()*e))),i.createElement("primitive",n({dispose:void 0,object:a,ref:r,attach:"material"},t))}));class dc extends s.ShaderMaterial{constructor(e=new s.Vector2){super({uniforms:{inputBuffer:new s.Uniform(null),depthBuffer:new s.Uniform(null),resolution:new s.Uniform(new s.Vector2),texelSize:new s.Uniform(new s.Vector2),halfTexelSize:new s.Uniform(new s.Vector2),kernel:new s.Uniform(0),scale:new s.Uniform(1),cameraNear:new s.Uniform(0),cameraFar:new s.Uniform(1),minDepthThreshold:new s.Uniform(0),maxDepthThreshold:new s.Uniform(1),depthScale:new s.Uniform(0),depthToBlurRatioBias:new s.Uniform(.25)},fragmentShader:"#include \n #include \n uniform sampler2D inputBuffer;\n uniform sampler2D depthBuffer;\n uniform float cameraNear;\n uniform float cameraFar;\n uniform float minDepthThreshold;\n uniform float maxDepthThreshold;\n uniform float depthScale;\n uniform float depthToBlurRatioBias;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n float depthFactor = 0.0;\n \n #ifdef USE_DEPTH\n vec4 depth = texture2D(depthBuffer, vUv);\n depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n depthFactor *= depthScale;\n depthFactor = max(0.0, min(1.0, depthFactor + 0.25));\n #endif\n \n vec4 sum = texture2D(inputBuffer, mix(vUv0, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv1, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv2, vUv, depthFactor));\n sum += texture2D(inputBuffer, mix(vUv3, vUv, depthFactor));\n gl_FragColor = sum * 0.25 ;\n\n #include \n #include \n #include \n }",vertexShader:"uniform vec2 texelSize;\n uniform vec2 halfTexelSize;\n uniform float kernel;\n uniform float scale;\n varying vec2 vUv;\n varying vec2 vUv0;\n varying vec2 vUv1;\n varying vec2 vUv2;\n varying vec2 vUv3;\n\n void main() {\n vec2 uv = position.xy * 0.5 + 0.5;\n vUv = uv;\n\n vec2 dUv = (texelSize * vec2(kernel) + halfTexelSize) * scale;\n vUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\n vUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\n vUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\n vUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\n\n gl_Position = vec4(position.xy, 1.0, 1.0);\n }",blending:s.NoBlending,depthWrite:!1,depthTest:!1}),this.toneMapped=!1,this.setTexelSize(e.x,e.y),this.kernel=new Float32Array([0,1,2,2,3])}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t),this.uniforms.halfTexelSize.value.set(e,t).multiplyScalar(.5)}setResolution(e){this.uniforms.resolution.value.copy(e)}}class pc{constructor({gl:e,resolution:t,width:r=500,height:n=500,minDepthThreshold:i=0,maxDepthThreshold:a=1,depthScale:o=0,depthToBlurRatioBias:l=.25}){this.renderToScreen=!1,this.renderTargetA=new s.WebGLRenderTarget(t,t,{minFilter:s.LinearFilter,magFilter:s.LinearFilter,stencilBuffer:!1,depthBuffer:!1,encoding:e.outputEncoding}),this.renderTargetB=this.renderTargetA.clone(),this.convolutionMaterial=new dc,this.convolutionMaterial.setTexelSize(1/r,1/n),this.convolutionMaterial.setResolution(new s.Vector2(r,n)),this.scene=new s.Scene,this.camera=new s.Camera,this.convolutionMaterial.uniforms.minDepthThreshold.value=i,this.convolutionMaterial.uniforms.maxDepthThreshold.value=a,this.convolutionMaterial.uniforms.depthScale.value=o,this.convolutionMaterial.uniforms.depthToBlurRatioBias.value=l,this.convolutionMaterial.defines.USE_DEPTH=o>0;const c=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),u=new Float32Array([0,0,2,0,0,2]),h=new s.BufferGeometry;h.setAttribute("position",new s.BufferAttribute(c,3)),h.setAttribute("uv",new s.BufferAttribute(u,2)),this.screen=new s.Mesh(h,this.convolutionMaterial),this.screen.frustumCulled=!1,this.scene.add(this.screen)}render(e,t,r){const n=this.scene,i=this.camera,a=this.renderTargetA,s=this.renderTargetB;let o=this.convolutionMaterial,l=o.uniforms;l.depthBuffer.value=t.depthTexture;const c=o.kernel;let u,h,d,p=t;for(h=0,d=c.length-1;h","#include \n my_vUv = textureMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );"),e.fragmentShader=`\n uniform sampler2D tDiffuse;\n uniform sampler2D tDiffuseBlur;\n uniform sampler2D tDepth;\n uniform sampler2D distortionMap;\n uniform float distortion;\n uniform float cameraNear;\n\t\t\t uniform float cameraFar;\n uniform bool hasBlur;\n uniform float mixBlur;\n uniform float mirror;\n uniform float mixStrength;\n uniform float minDepthThreshold;\n uniform float maxDepthThreshold;\n uniform float mixContrast;\n uniform float depthScale;\n uniform float depthToBlurRatioBias;\n varying vec4 my_vUv; \n ${e.fragmentShader}`,e.fragmentShader=e.fragmentShader.replace("#include ","#include \n \n float distortionFactor = 0.0;\n #ifdef USE_DISTORTION\n distortionFactor = texture2D(distortionMap, vUv).r * distortion;\n #endif\n\n vec4 new_vUv = my_vUv;\n new_vUv.x += distortionFactor;\n new_vUv.y += distortionFactor;\n\n vec4 base = texture2DProj(tDiffuse, new_vUv);\n vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);\n \n vec4 merge = base;\n \n #ifdef USE_NORMALMAP\n vec2 normal_uv = vec2(0.0);\n vec4 normalColor = texture2D(normalMap, vUv * normalScale);\n vec3 my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );\n vec3 coord = new_vUv.xyz / new_vUv.w;\n normal_uv = coord.xy + coord.z * my_normal.xz * 0.05;\n vec4 base_normal = texture2D(tDiffuse, normal_uv);\n vec4 blur_normal = texture2D(tDiffuseBlur, normal_uv);\n merge = base_normal;\n blur = blur_normal;\n #endif\n\n float depthFactor = 0.0001;\n float blurFactor = 0.0;\n\n #ifdef USE_DEPTH\n vec4 depth = texture2DProj(tDepth, new_vUv);\n depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));\n depthFactor *= depthScale;\n depthFactor = max(0.0001, min(1.0, depthFactor));\n\n #ifdef USE_BLUR\n blur = blur * min(1.0, depthFactor + depthToBlurRatioBias);\n merge = merge * min(1.0, depthFactor + 0.5);\n #else\n merge = merge * depthFactor;\n #endif\n \n #endif\n\n float reflectorRoughnessFactor = roughness;\n #ifdef USE_ROUGHNESSMAP\n vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );\n reflectorRoughnessFactor *= reflectorTexelRoughness.g;\n #endif\n \n #ifdef USE_BLUR\n blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);\n merge = mix(merge, blur, blurFactor);\n #endif\n\n vec4 newMerge = vec4(0.0, 0.0, 0.0, 1.0);\n newMerge.r = (merge.r - 0.5) * mixContrast + 0.5;\n newMerge.g = (merge.g - 0.5) * mixContrast + 0.5;\n newMerge.b = (merge.b - 0.5) * mixContrast + 0.5;\n\n diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + newMerge.rgb * mixStrength);\n ")}get tDiffuse(){return this._tDiffuse.value}set tDiffuse(e){this._tDiffuse.value=e}get tDepth(){return this._tDepth.value}set tDepth(e){this._tDepth.value=e}get distortionMap(){return this._distortionMap.value}set distortionMap(e){this._distortionMap.value=e}get tDiffuseBlur(){return this._tDiffuseBlur.value}set tDiffuseBlur(e){this._tDiffuseBlur.value=e}get textureMatrix(){return this._textureMatrix.value}set textureMatrix(e){this._textureMatrix.value=e}get hasBlur(){return this._hasBlur.value}set hasBlur(e){this._hasBlur.value=e}get mirror(){return this._mirror.value}set mirror(e){this._mirror.value=e}get mixBlur(){return this._mixBlur.value}set mixBlur(e){this._mixBlur.value=e}get mixStrength(){return this._blurStrength.value}set mixStrength(e){this._blurStrength.value=e}get minDepthThreshold(){return this._minDepthThreshold.value}set minDepthThreshold(e){this._minDepthThreshold.value=e}get maxDepthThreshold(){return this._maxDepthThreshold.value}set maxDepthThreshold(e){this._maxDepthThreshold.value=e}get depthScale(){return this._depthScale.value}set depthScale(e){this._depthScale.value=e}get depthToBlurRatioBias(){return this._depthToBlurRatioBias.value}set depthToBlurRatioBias(e){this._depthToBlurRatioBias.value=e}get distortion(){return this._distortion.value}set distortion(e){this._distortion.value=e}get mixContrast(){return this._mixContrast.value}set mixContrast(e){this._mixContrast.value=e}}(0,o.extend)({MeshReflectorMaterialImpl:fc});const mc=i.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:r=256,blur:a=[0,0],minDepthThreshold:l=.9,maxDepthThreshold:c=1,depthScale:u=0,depthToBlurRatioBias:h=.25,mirror:d=0,distortion:p=1,mixContrast:f=1,distortionMap:m,reflectorOffset:g=0,...v},A)=>{const y=(0,o.useThree)((({gl:e})=>e)),x=(0,o.useThree)((({camera:e})=>e)),b=(0,o.useThree)((({scene:e})=>e)),w=(a=Array.isArray(a)?a:[a,a])[0]+a[1]>0,_=i.useRef(null),[E]=i.useState((()=>new s.Plane)),[S]=i.useState((()=>new s.Vector3)),[T]=i.useState((()=>new s.Vector3)),[C]=i.useState((()=>new s.Vector3)),[I]=i.useState((()=>new s.Matrix4)),[B]=i.useState((()=>new s.Vector3(0,0,-1))),[R]=i.useState((()=>new s.Vector4)),[P]=i.useState((()=>new s.Vector3)),[F]=i.useState((()=>new s.Vector3)),[L]=i.useState((()=>new s.Vector4)),[D]=i.useState((()=>new s.Matrix4)),[U]=i.useState((()=>new s.PerspectiveCamera)),N=i.useCallback((()=>{var e;const t=_.current.parent||(null==(e=_.current)?void 0:e.__r3f.parent);if(!t)return;if(T.setFromMatrixPosition(t.matrixWorld),C.setFromMatrixPosition(x.matrixWorld),I.extractRotation(t.matrixWorld),S.set(0,0,1),S.applyMatrix4(I),T.addScaledVector(S,g),P.subVectors(T,C),P.dot(S)>0)return;P.reflect(S).negate(),P.add(T),I.extractRotation(x.matrixWorld),B.set(0,0,-1),B.applyMatrix4(I),B.add(C),F.subVectors(T,B),F.reflect(S).negate(),F.add(T),U.position.copy(P),U.up.set(0,1,0),U.up.applyMatrix4(I),U.up.reflect(S),U.lookAt(F),U.far=x.far,U.updateMatrixWorld(),U.projectionMatrix.copy(x.projectionMatrix),D.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),D.multiply(U.projectionMatrix),D.multiply(U.matrixWorldInverse),D.multiply(t.matrixWorld),E.setFromNormalAndCoplanarPoint(S,T),E.applyMatrix4(U.matrixWorldInverse),R.set(E.normal.x,E.normal.y,E.normal.z,E.constant);const r=U.projectionMatrix;L.x=(Math.sign(R.x)+r.elements[8])/r.elements[0],L.y=(Math.sign(R.y)+r.elements[9])/r.elements[5],L.z=-1,L.w=(1+r.elements[10])/r.elements[14],R.multiplyScalar(2/R.dot(L)),r.elements[2]=R.x,r.elements[6]=R.y,r.elements[10]=R.z+1,r.elements[14]=R.w}),[x,g]),[k,O,G,z]=i.useMemo((()=>{const n={minFilter:s.LinearFilter,magFilter:s.LinearFilter,encoding:y.outputEncoding,type:s.HalfFloatType},i=new s.WebGLRenderTarget(r,r,n);i.depthBuffer=!0,i.depthTexture=new s.DepthTexture(r,r),i.depthTexture.format=s.DepthFormat,i.depthTexture.type=s.UnsignedShortType;const o=new s.WebGLRenderTarget(r,r,n);return[i,o,new pc({gl:y,resolution:r,width:a[0],height:a[1],minDepthThreshold:l,maxDepthThreshold:c,depthScale:u,depthToBlurRatioBias:h}),{mirror:d,textureMatrix:D,mixBlur:e,tDiffuse:i.texture,tDepth:i.depthTexture,tDiffuseBlur:o.texture,hasBlur:w,mixStrength:t,minDepthThreshold:l,maxDepthThreshold:c,depthScale:u,depthToBlurRatioBias:h,transparent:!0,distortion:p,distortionMap:m,mixContrast:f,"defines-USE_BLUR":w?"":void 0,"defines-USE_DEPTH":u>0?"":void 0,"defines-USE_DISTORTION":m?"":void 0}]}),[y,a,D,r,d,w,e,t,l,c,u,h,p,m,f]);return(0,o.useFrame)((()=>{var e;const t=_.current.parent||(null==(e=_.current)?void 0:e.__r3f.parent);if(!t)return;t.visible=!1;const r=y.xr.enabled,n=y.shadowMap.autoUpdate;N(),y.xr.enabled=!1,y.shadowMap.autoUpdate=!1,y.setRenderTarget(k),y.state.buffers.depth.setMask(!0),y.autoClear||y.clear(),y.render(b,U),w&&G.render(y,k,O),y.xr.enabled=r,y.shadowMap.autoUpdate=n,t.visible=!0,y.setRenderTarget(null)})),i.createElement("meshReflectorMaterialImpl",n({attach:"material",key:"key"+z["defines-USE_BLUR"]+z["defines-USE_DEPTH"]+z["defines-USE_DISTORTION"],ref:M([_,A])},z,v))}));class gc extends s.PointsMaterial{constructor(e){super(e),this.onBeforeCompile=e=>{e.fragmentShader=e.fragmentShader.replace("#include ","\n #include \n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r); \n float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );\n ")}}}const vc=i.forwardRef(((e,t)=>{const[r]=i.useState((()=>new gc(null)));return i.createElement("primitive",n({},e,{object:r,ref:t,attach:"material"}))}));let Ac=!1;const yc=e=>{if(!Ac){Ac=!0;let t=s.ShaderChunk.shadowmap_pars_fragment;t=t.replace("#ifdef USE_SHADOWMAP","#ifdef USE_SHADOWMAP\n"+(({frustum:e=3.75,size:t=.005,near:r=9.5,samples:n=17,rings:i=11}={})=>`#define LIGHT_WORLD_SIZE ${t}\n#define LIGHT_FRUSTUM_WIDTH ${e}\n#define LIGHT_SIZE_UV (LIGHT_WORLD_SIZE / LIGHT_FRUSTUM_WIDTH)\n#define NEAR_PLANE ${r}\n\n#define NUM_SAMPLES ${n}\n#define NUM_RINGS ${i}\n#define BLOCKER_SEARCH_NUM_SAMPLES NUM_SAMPLES\n#define PCF_NUM_SAMPLES NUM_SAMPLES\n\nvec2 poissonDisk[NUM_SAMPLES];\n\nvoid initPoissonSamples(const in vec2 randomSeed) {\n float ANGLE_STEP = PI2 * float(NUM_RINGS) / float(NUM_SAMPLES);\n float INV_NUM_SAMPLES = 1.0 / float(NUM_SAMPLES);\n float angle = rand(randomSeed) * PI2;\n float radius = INV_NUM_SAMPLES;\n float radiusStep = radius;\n for (int i = 0; i < NUM_SAMPLES; i++) {\n poissonDisk[i] = vec2(cos(angle), sin(angle)) * pow(radius, 0.75);\n radius += radiusStep;\n angle += ANGLE_STEP;\n }\n}\n\nfloat penumbraSize(const in float zReceiver, const in float zBlocker) { // Parallel plane estimation\n return (zReceiver - zBlocker) / zBlocker;\n}\n\nfloat findBlocker(sampler2D shadowMap, const in vec2 uv, const in float zReceiver) {\n float searchRadius = LIGHT_SIZE_UV * (zReceiver - NEAR_PLANE) / zReceiver;\n float blockerDepthSum = 0.0;\n int numBlockers = 0;\n for (int i = 0; i < BLOCKER_SEARCH_NUM_SAMPLES; i++) {\n float shadowMapDepth = unpackRGBAToDepth(texture2D(shadowMap, uv + poissonDisk[i] * searchRadius));\n if (shadowMapDepth < zReceiver) {\n blockerDepthSum += shadowMapDepth;\n numBlockers++;\n }\n }\n if (numBlockers == 0) return -1.0;\n return blockerDepthSum / float(numBlockers);\n}\n\nfloat PCF_Filter(sampler2D shadowMap, vec2 uv, float zReceiver, float filterRadius) {\n float sum = 0.0;\n for (int i = 0; i < PCF_NUM_SAMPLES; i++) {\n float depth = unpackRGBAToDepth(texture2D(shadowMap, uv + poissonDisk[ i ] * filterRadius));\n if (zReceiver <= depth) sum += 1.0;\n }\n for (int i = 0; i < PCF_NUM_SAMPLES; i++) {\n float depth = unpackRGBAToDepth(texture2D(shadowMap, uv + -poissonDisk[ i ].yx * filterRadius));\n if (zReceiver <= depth) sum += 1.0;\n }\n return sum / (2.0 * float(PCF_NUM_SAMPLES));\n}\n\nfloat PCSS(sampler2D shadowMap, vec4 coords) {\n vec2 uv = coords.xy;\n float zReceiver = coords.z; // Assumed to be eye-space z in this code\n initPoissonSamples(uv);\n float avgBlockerDepth = findBlocker(shadowMap, uv, zReceiver);\n if (avgBlockerDepth == -1.0) return 1.0;\n float penumbraRatio = penumbraSize(zReceiver, avgBlockerDepth);\n float filterRadius = penumbraRatio * LIGHT_SIZE_UV * NEAR_PLANE / zReceiver;\n return PCF_Filter(shadowMap, uv, zReceiver, filterRadius);\n}`)({...e})),t=t.replace("#if defined( SHADOWMAP_TYPE_PCF )","\nreturn PCSS(shadowMap, shadowCoord);\n#if defined( SHADOWMAP_TYPE_PCF )"),s.ShaderChunk.shadowmap_pars_fragment=t}};function xc(e){const t=e+"BufferGeometry";return i.forwardRef((({args:e,children:r,...a},s)=>i.createElement("mesh",n({ref:s},a),i.createElement(t,{attach:"geometry",args:e}),r)))}const bc=xc("box"),wc=xc("circle"),_c=xc("cone"),Ec=xc("cylinder"),Sc=xc("sphere"),Mc=xc("plane"),Tc=xc("tube"),Cc=xc("torus"),Ic=xc("torusKnot"),Bc=xc("tetrahedron"),Rc=xc("ring"),Pc=xc("polyhedron"),Fc=xc("icosahedron"),Lc=xc("octahedron"),Dc=xc("dodecahedron"),Uc=xc("extrude"),Nc=xc("lathe"),kc=1e-5;const Oc=i.forwardRef((function({args:[e=1,t=1,r=1]=[],radius:a=.05,steps:o=1,smoothness:l=4,children:c,...u},h){const d=i.useMemo((()=>function(e,t,r){const n=new s.Shape,i=r-kc;return n.absarc(kc,kc,kc,-Math.PI/2,-Math.PI,!0),n.absarc(kc,t-2*i,kc,Math.PI,Math.PI/2,!0),n.absarc(e-2*i,t-2*i,kc,Math.PI/2,0,!0),n.absarc(e-2*i,kc,kc,0,-Math.PI/2,!0),n}(e,t,a)),[e,t,a]),p=i.useMemo((()=>({depth:r-2*a,bevelEnabled:!0,bevelSegments:2*l,steps:o,bevelSize:a-kc,bevelThickness:a,curveSegments:l})),[r,a,l]),f=i.useRef();return i.useLayoutEffect((()=>{f.current&&f.current.center()}),[d,p]),i.createElement("mesh",n({ref:h},u),i.createElement("extrudeBufferGeometry",{attach:"geometry",ref:f,args:[d,p]}),c)}));function Gc(){const e=new s.BufferGeometry,t=new Float32Array([-1,-1,3,-1,-1,3]);return e.setAttribute("position",new s.BufferAttribute(t,2)),e}const zc=i.forwardRef((function({children:e,...t},r){const a=i.useMemo(Gc,[]);return i.createElement("mesh",n({ref:r,geometry:a,frustumCulled:!1},t),e)})),Vc=i.forwardRef((function({children:e,alignTop:t,...r},a){const o=i.useRef(null),l=i.useRef(null);return i.useLayoutEffect((()=>{o.current.position.set(0,0,0),o.current.updateWorldMatrix(!0,!0);const e=(new s.Box3).setFromObject(l.current),r=new s.Vector3,n=new s.Sphere,i=e.max.y-e.min.y;e.getCenter(r),e.getBoundingSphere(n),o.current.position.set(-r.x,-r.y+(t?i/2:0),-r.z)}),[e]),i.createElement("group",n({ref:a},r),i.createElement("group",{ref:o},i.createElement("group",{ref:l},e)))})),Hc=e=>e&&e.isOrthographicCamera,Qc=i.createContext(null);function jc({children:e,damping:t=6,fit:r,clip:n,observe:a,margin:l=1.2,eps:c=.01,onFit:u}){const h=i.useRef(null),{camera:d,invalidate:p,size:f,controls:m}=(0,o.useThree)(),g=i.useRef(u);function v(e,t){return Math.abs(e.x-t.x)({animating:!1,focus:new s.Vector3,camera:new s.Vector3,zoom:1}))),[x]=i.useState((()=>({focus:new s.Vector3,camera:new s.Vector3,zoom:1}))),[b]=i.useState((()=>new s.Box3)),w=i.useMemo((()=>{function e(){const e=b.getSize(new s.Vector3),t=b.getCenter(new s.Vector3),r=Math.max(e.x,e.y,e.z),n=Hc(d)?4*r:r/(2*Math.atan(Math.PI*d.fov/360)),i=Hc(d)?4*r:n/d.aspect,a=l*Math.max(n,i);return{box:b,size:e,center:t,distance:a}}return{getSize:e,refresh(t){if((r=t)&&r.isBox3)b.copy(t);else{const e=t||h.current;e.updateWorldMatrix(!0,!0),b.setFromObject(e)}var r;if(b.isEmpty()){const e=d.position.length()||10;b.setFromCenterAndSize(new s.Vector3,new s.Vector3(e,e,e))}if("OrthographicTrackballControls"===(null==m?void 0:m.constructor.name)){const{distance:t}=e(),r=d.position.clone().sub(m.target).normalize().multiplyScalar(t),n=m.target.clone().add(r);d.position.copy(n)}return this},clip(){const{distance:t}=e();return m&&(m.maxDistance=10*t),d.near=t/100,d.far=100*t,d.updateProjectionMatrix(),m&&m.update(),p(),this},fit(){y.camera.copy(d.position),m&&y.focus.copy(m.target);const{center:r,distance:n}=e(),i=r.clone().sub(d.position).normalize().multiplyScalar(n);if(x.camera.copy(r).sub(i),x.focus.copy(r),Hc(d)){y.zoom=d.zoom;let e=0,n=0;const i=[new s.Vector3(b.min.x,b.min.y,b.min.z),new s.Vector3(b.min.x,b.max.y,b.min.z),new s.Vector3(b.min.x,b.min.y,b.max.z),new s.Vector3(b.min.x,b.max.y,b.max.z),new s.Vector3(b.max.x,b.max.y,b.max.z),new s.Vector3(b.max.x,b.max.y,b.min.z),new s.Vector3(b.max.x,b.min.y,b.max.z),new s.Vector3(b.max.x,b.min.y,b.min.z)];r.applyMatrix4(d.matrixWorldInverse);for(const t of i)t.applyMatrix4(d.matrixWorldInverse),e=Math.max(e,Math.abs(t.y-r.y)),n=Math.max(n,Math.abs(t.x-r.x));e*=2,n*=2;const a=(d.top-d.bottom)/e,o=(d.right-d.left)/n;x.zoom=Math.min(a,o)/l,t||(d.zoom=x.zoom,d.updateProjectionMatrix())}return t?y.animating=!0:(d.position.copy(x.camera),d.lookAt(x.focus),m&&(m.target.copy(x.focus),m.update())),g.current&&g.current(this.getSize()),p(),this}}}),[b,d,m,l,t,p]);i.useLayoutEffect((()=>{if(m){const e=()=>y.animating=!1;return m.addEventListener("start",e),()=>m.removeEventListener("start",e)}}),[m]);const _=i.useRef(0);return i.useLayoutEffect((()=>{(a||0==_.current++)&&(w.refresh(),r&&w.fit(),n&&w.clip())}),[f,n,r,a]),(0,o.useFrame)(((e,r)=>{if(y.animating){if(A(y.focus,x.focus,t,r),A(y.camera,x.camera,t,r),y.zoom=s.MathUtils.damp(y.zoom,x.zoom,t,r),d.position.copy(y.camera),Hc(d)&&(d.zoom=y.zoom,d.updateProjectionMatrix()),m?(m.target.copy(y.focus),m.update()):d.lookAt(y.focus),p(),Hc(d)&&!(Math.abs(y.zoom-x.zoom){const p=(0,o.useThree)((e=>e.camera)),f=(0,o.useThree)((e=>e.controls)),m=i.useRef(e),g=i.useRef(p.rotation.clone()),[v]=i.useState((()=>new Xc.L)),[A]=i.useState((()=>new Xc.L)),[y]=i.useState((()=>new Xc.L)),x=()=>{(m.current<0||m.current>1)&&(m.current=m.current<0?0:1)};return i.useImperativeHandle(d,(()=>({getIntensity:()=>m.current,setIntensity:e=>{m.current=e,x()}})),[]),i.useEffect((()=>{const e=f||(null==h?void 0:h.current),t=()=>{g.current=p.rotation.clone()};return null==e||e.addEventListener("change",t),()=>{null==e||e.removeEventListener("change",t)}}),[h,f]),(0,o.useFrame)((({clock:e},i)=>{const o=Math.pow(m.current,2),h=n*o*v.noise(e.elapsedTime*l,1),d=a*o*A.noise(e.elapsedTime*c,1),f=s*o*y.noise(e.elapsedTime*u,1);p.rotation.set(g.current.x+d,g.current.y+h,g.current.z+f),t&&m.current>0&&(m.current-=r*i,x())})),null})),qc=i.forwardRef((({children:e,speed:t=1,rotationIntensity:r=1,floatIntensity:n=1,...a},s)=>{const l=i.useRef(null),c=i.useRef(1e4*Math.random());return(0,o.useFrame)((e=>{const i=c.current+e.clock.getElapsedTime();l.current.rotation.x=Math.cos(i/4*t)/8*r,l.current.rotation.y=Math.sin(i/4*t)/8*r,l.current.rotation.z=Math.sin(i/4*t)/20*r,l.current.position.y=Math.sin(i/4*t)/10*n})),i.createElement("group",a,i.createElement("group",{ref:M([l,s])},e))}));var Kc=r(8197);const Jc={sunset:"venice/venice_sunset_1k.hdr",dawn:"kiara/kiara_1_dawn_1k.hdr",night:"dikhololo/dikhololo_night_1k.hdr",warehouse:"empty-wharehouse/empty_warehouse_01_1k.hdr",forest:"forrest-slope/forest_slope_1k.hdr",apartment:"lebombo/lebombo_1k.hdr",studio:"studio-small-3/studio_small_03_1k.hdr",city:"potsdamer-platz/potsdamer_platz_1k.hdr",park:"rooitou/rooitou_park_1k.hdr",lobby:"st-fagans/st_fagans_interior_1k.hdr"},Zc=e=>{return(t=e).current&&t.current.isScene?e.current:e;var t};function $c(e){return e.map?i.createElement(eu,e):e.children?i.createElement(tu,e):i.createElement(ru,e)}function eu({scene:e,background:t=!1,map:r}){const n=(0,o.useThree)((e=>e.scene));return i.useLayoutEffect((()=>{if(r){const i=Zc(e||n),a=i.background,s=i.environment;return"only"!==t&&(i.environment=r),t&&(i.background=r),()=>{"only"!==t&&(i.environment=s),t&&(i.background=a)}}}),[e,r]),null}function tu({children:e,near:t=1,far:r=1e3,resolution:n=256,frames:a=1,background:l=!1,scene:c,files:u,path:h,preset:d,extensions:p}){const f=(0,o.useThree)((e=>e.gl)),m=(0,o.useThree)((e=>e.scene)),g=i.useRef(null),[v]=i.useState((()=>new s.Scene)),A=i.useMemo((()=>{const e=new s.WebGLCubeRenderTarget(n);return e.texture.type=s.HalfFloatType,e}),[n]);i.useLayoutEffect((()=>{1===a&&g.current.update(f,v);const e=Zc(c||m),t=e.background,r=e.environment;return"only"!==l&&(e.environment=A.texture),l&&(e.background=A.texture),()=>{"only"!==l&&(e.environment=r),l&&(e.background=t)}}),[e,c]);let y=1;return(0,o.useFrame)((()=>{(a===1/0||ye.scene)),u=Array.isArray(t),h=u?s.CubeTextureLoader:Kc.x,d=(0,o.useLoader)(h,u?[t]:t,(e=>{e.setPath(r),null==e.setDataType||e.setDataType(s.FloatType),l&&l(e)})),p=u?d[0]:d;return p.mapping=u?s.CubeReflectionMapping:s.EquirectangularReflectionMapping,i.useLayoutEffect((()=>{const t=Zc(a||c),r=t.background,n=t.environment;return"only"!==e&&(t.environment=p),e&&(t.background=p),()=>{"only"!==e&&(t.environment=n),e&&(t.background=r)}}),[p,e,a]),null}var nu=r(78466),iu=r(37312);const au=i.forwardRef((({scale:e,frames:t=1/0,opacity:r=1,width:a=1,height:l=1,blur:c=1,far:u=10,resolution:h=256,smooth:d=!0,color:p="#000000",...f},m)=>{const g=(0,o.useThree)((({scene:e})=>e)),v=(0,o.useThree)((({gl:e})=>e)),A=i.useRef(null);a*=Array.isArray(e)?e[0]:e||1,l*=Array.isArray(e)?e[1]:e||1;const[y,x,b,w,_,E,S]=i.useMemo((()=>{const e=new s.WebGLRenderTarget(h,h),t=new s.WebGLRenderTarget(h,h);t.texture.generateMipmaps=e.texture.generateMipmaps=!1;const r=new s.PlaneBufferGeometry(a,l).rotateX(Math.PI/2),n=new s.Mesh(r),i=new s.MeshDepthMaterial;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new s.Color(p).convertSRGBToLinear()}},e.fragmentShader=e.fragmentShader.replace("void main() {","uniform vec3 ucolor;\n void main() {\n "),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );")};const o=new s.ShaderMaterial(nu.P),c=new s.ShaderMaterial(iu.Z);return c.depthTest=o.depthTest=!1,[e,r,i,n,o,c,t]}),[h,a,l,e]),M=i.useCallback((e=>{w.visible=!0,w.material=_,_.uniforms.tDiffuse.value=y.texture,_.uniforms.h.value=1*e/256,v.setRenderTarget(S),v.render(w,A.current),w.material=E,E.uniforms.tDiffuse.value=S.texture,E.uniforms.v.value=1*e/256,v.setRenderTarget(y),v.render(w,A.current),w.visible=!1}),[]);let T=0;return(0,o.useFrame)((()=>{if(A.current&&(t===1/0||Te.camera)),g=(0,o.useThree)((e=>e.controls)),v=i.useRef(null),A=i.useRef(null),[{radius:y,width:x,height:b},w]=i.useState({radius:0,width:0,height:0});return i.useLayoutEffect((()=>{v.current.position.set(0,0,0),v.current.updateWorldMatrix(!0,!0);const e=(new s.Box3).setFromObject(A.current),t=new s.Vector3,r=new s.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),w({radius:r.radius,width:i,height:n}),v.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),i.useLayoutEffect((()=>{if(a){const e=y/(b>x?1.5:2.5);m.position.set(0,.5*y,2.5*y),m.near=.1,m.far=Math.max(5e3,4*y),m.lookAt(0,e,0);const r=g||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[g,y,b,x,a]),i.createElement("group",p,i.createElement("group",{ref:v},i.createElement("group",{ref:A},e)),d&&i.createElement(au,n({scale:2*y,far:y/2},d)),l&&i.createElement($c,{preset:l}),i.createElement("ambientLight",{intensity:c/3}),i.createElement("spotLight",{penumbra:1,position:[f.main[0]*y,f.main[1]*y,f.main[2]*y],intensity:2*c,castShadow:r,"shadow-bias":h}),i.createElement("pointLight",{position:[f.fill[0]*y,f.fill[1]*y,f.fill[2]*y],intensity:c}))}const lu=e=>0===e?0:Math.pow(2,10*e-10);function cu({children:e,floor:t=.25,segments:r=20,receiveShadow:n,...a}){const s=i.useRef(null);return i.useLayoutEffect((()=>{let e=0;const n=r/r/2,i=s.current.attributes.position;for(let a=0;a{const c=i.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const n=e.getContext("2d"),i=n.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return i.addColorStop(t,new s.Color(r).getStyle()),i.addColorStop(1,"rgba(0,0,0,0)"),n.fillStyle=i,n.fillRect(0,0,e.width,e.height),e}),[r,t]);return i.createElement("mesh",n({ref:l},o),i.createElement("planeBufferGeometry",{attach:"geometry",args:[1,1]}),i.createElement("meshBasicMaterial",{attach:"material",transparent:!0,opacity:a,fog:e},i.createElement("canvasTexture",{attach:"map",args:[c]})))}));(0,o.extend)({MeshReflectorMaterial:fc});const hu=i.forwardRef((({mixBlur:e=0,mixStrength:t=.5,resolution:r=256,blur:a=[0,0],args:l=[1,1],minDepthThreshold:c=.9,maxDepthThreshold:u=1,depthScale:h=0,depthToBlurRatioBias:d=.25,mirror:p=0,children:f,debug:m=0,distortion:g=1,mixContrast:v=1,distortionMap:A,...y},x)=>{i.useEffect((()=>{console.warn("Reflector has been deprecated and will be removed next major. Replace it with !")}),[]);const b=(0,o.useThree)((({gl:e})=>e)),w=(0,o.useThree)((({camera:e})=>e)),_=(0,o.useThree)((({scene:e})=>e)),E=(a=Array.isArray(a)?a:[a,a])[0]+a[1]>0,S=i.useRef(null),[T]=i.useState((()=>new s.Plane)),[C]=i.useState((()=>new s.Vector3)),[I]=i.useState((()=>new s.Vector3)),[B]=i.useState((()=>new s.Vector3)),[R]=i.useState((()=>new s.Matrix4)),[P]=i.useState((()=>new s.Vector3(0,0,-1))),[F]=i.useState((()=>new s.Vector4)),[L]=i.useState((()=>new s.Vector3)),[D]=i.useState((()=>new s.Vector3)),[U]=i.useState((()=>new s.Vector4)),[N]=i.useState((()=>new s.Matrix4)),[k]=i.useState((()=>new s.PerspectiveCamera)),O=i.useCallback((()=>{if(I.setFromMatrixPosition(S.current.matrixWorld),B.setFromMatrixPosition(w.matrixWorld),R.extractRotation(S.current.matrixWorld),C.set(0,0,1),C.applyMatrix4(R),L.subVectors(I,B),L.dot(C)>0)return;L.reflect(C).negate(),L.add(I),R.extractRotation(w.matrixWorld),P.set(0,0,-1),P.applyMatrix4(R),P.add(B),D.subVectors(I,P),D.reflect(C).negate(),D.add(I),k.position.copy(L),k.up.set(0,1,0),k.up.applyMatrix4(R),k.up.reflect(C),k.lookAt(D),k.far=w.far,k.updateMatrixWorld(),k.projectionMatrix.copy(w.projectionMatrix),N.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),N.multiply(k.projectionMatrix),N.multiply(k.matrixWorldInverse),N.multiply(S.current.matrixWorld),T.setFromNormalAndCoplanarPoint(C,I),T.applyMatrix4(k.matrixWorldInverse),F.set(T.normal.x,T.normal.y,T.normal.z,T.constant);const e=k.projectionMatrix;U.x=(Math.sign(F.x)+e.elements[8])/e.elements[0],U.y=(Math.sign(F.y)+e.elements[9])/e.elements[5],U.z=-1,U.w=(1+e.elements[10])/e.elements[14],F.multiplyScalar(2/F.dot(U)),e.elements[2]=F.x,e.elements[6]=F.y,e.elements[10]=F.z+1,e.elements[14]=F.w}),[]),[G,z,V,H]=i.useMemo((()=>{const n={minFilter:s.LinearFilter,magFilter:s.LinearFilter,encoding:b.outputEncoding},i=new s.WebGLRenderTarget(r,r,n);i.depthBuffer=!0,i.depthTexture=new s.DepthTexture(r,r),i.depthTexture.format=s.DepthFormat,i.depthTexture.type=s.UnsignedShortType;const o=new s.WebGLRenderTarget(r,r,n);return[i,o,new pc({gl:b,resolution:r,width:a[0],height:a[1],minDepthThreshold:c,maxDepthThreshold:u,depthScale:h,depthToBlurRatioBias:d}),{mirror:p,textureMatrix:N,mixBlur:e,tDiffuse:i.texture,tDepth:i.depthTexture,tDiffuseBlur:o.texture,hasBlur:E,mixStrength:t,minDepthThreshold:c,maxDepthThreshold:u,depthScale:h,depthToBlurRatioBias:d,transparent:!0,debug:m,distortion:g,distortionMap:A,mixContrast:v,"defines-USE_BLUR":E?"":void 0,"defines-USE_DEPTH":h>0?"":void 0,"defines-USE_DISTORTION":A?"":void 0}]}),[b,a,N,r,p,E,e,t,c,u,h,d,m,g,A,v]);return(0,o.useFrame)((()=>{if(null==S||!S.current)return;S.current.visible=!1;const e=b.xr.enabled,t=b.shadowMap.autoUpdate;O(),b.xr.enabled=!1,b.shadowMap.autoUpdate=!1,b.setRenderTarget(G),b.state.buffers.depth.setMask(!0),b.autoClear||b.clear(),b.render(_,k),E&&V.render(b,G,z),b.xr.enabled=e,b.shadowMap.autoUpdate=t,S.current.visible=!0,b.setRenderTarget(null)})),i.createElement("mesh",n({ref:M([S,x])},y),i.createElement("planeBufferGeometry",{args:l}),f?f("meshReflectorMaterial",H):i.createElement("meshReflectorMaterial",H))}));class du extends s.ShaderMaterial{constructor(){super({uniforms:{depth:{value:null},opacity:{value:1},attenuation:{value:2.5},anglePower:{value:12},spotPosition:{value:new s.Vector3(0,0,0)},lightColor:{value:new s.Color("white")},cameraNear:{value:0},cameraFar:{value:1},resolution:{value:new s.Vector2(0,0)}},transparent:!0,depthWrite:!1,vertexShader:"\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n varying float vViewZ;\n varying float vIntensity;\n uniform vec3 spotPosition;\n uniform float attenuation; \n\n void main() {\n // compute intensity\n vNormal = normalize( normalMatrix * normal );\n vec4 worldPosition\t= modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n vec4 viewPosition = viewMatrix * worldPosition;\n vViewZ = viewPosition.z;\n float intensity\t= distance(worldPosition.xyz, spotPosition) / attenuation;\n intensity\t= 1.0 - clamp(intensity, 0.0, 1.0);\n vIntensity = intensity; \n // set gl_Position\n gl_Position\t= projectionMatrix * viewPosition;\n\n }",fragmentShader:"\n #include \n\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n uniform vec3 lightColor;\n uniform vec3 spotPosition;\n uniform float attenuation;\n uniform float anglePower;\n uniform sampler2D depth;\n uniform vec2 resolution;\n uniform float cameraNear;\n uniform float cameraFar;\n varying float vViewZ;\n varying float vIntensity;\n uniform float opacity;\n\n float readDepth( sampler2D depthSampler, vec2 coord ) {\n float fragCoordZ = texture2D( depthSampler, coord ).x;\n float viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\n return viewZ;\n }\n\n void main() {\n float d = 1.0;\n bool isSoft = resolution[0] > 0.0 && resolution[1] > 0.0;\n if (isSoft) {\n vec2 sUv = gl_FragCoord.xy / resolution;\n d = readDepth(depth, sUv);\n }\n float intensity = vIntensity;\n vec3 normal\t= vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n float angleIntensity\t= pow( dot(normal, vec3(0.0, 0.0, 1.0)), anglePower );\n intensity\t*= angleIntensity;\n // fades when z is close to sampled depth, meaning the cone is intersecting existing geometry\n if (isSoft) {\n intensity\t*= smoothstep(0., 1., vViewZ - d);\n }\n gl_FragColor = vec4(lightColor, intensity * opacity);\n\n #include \n\t #include \n }"})}}const pu=new s.Vector3,fu=i.forwardRef((({opacity:e=1,radiusTop:t,radiusBottom:r,depthBuffer:a,color:l="white",distance:c=5,angle:u=.15,attenuation:h=5,anglePower:d=5,...p},f)=>{const m=i.useRef(null),g=(0,o.useThree)((e=>e.size)),v=(0,o.useThree)((e=>e.camera)),A=(0,o.useThree)((e=>e.viewport.dpr)),[y]=i.useState((()=>new du));t=void 0===t?.1:t,r=void 0===r?7*u:r,(0,o.useFrame)((()=>{y.uniforms.spotPosition.value.copy(m.current.getWorldPosition(pu)),m.current.lookAt(m.current.parent.target.getWorldPosition(pu))}));const x=i.useMemo((()=>{const e=new s.CylinderGeometry(t,r,c,128,64,!0);return e.applyMatrix4((new s.Matrix4).makeTranslation(0,-c/2,0)),e.applyMatrix4((new s.Matrix4).makeRotationX(-Math.PI/2)),e}),[u,c,t,r]);return i.createElement("spotLight",n({ref:f,angle:u,color:l,distance:c},p),i.createElement("mesh",{ref:m,geometry:x,raycast:()=>null},i.createElement("primitive",{object:y,attach:"material","uniforms-opacity-value":e,"uniforms-lightColor-value":l,"uniforms-attenuation-value":h,"uniforms-anglePower-value":d,"uniforms-depth-value":a,"uniforms-cameraNear-value":v.near,"uniforms-cameraFar-value":v.far,"uniforms-resolution-value":a?[g.width*A,g.height*A]:[0,0]})))})),mu=i.forwardRef((({args:e,map:t,toneMapped:r=!1,color:a="white",form:l="rect",intensity:c=1,scale:u=1,target:h,children:d,...p},f)=>{const m=i.useRef(null);return i.useLayoutEffect((()=>{d||p.material||((0,o.applyProps)(m.current.material,{color:a}),m.current.material.color.multiplyScalar(c))}),[a,c,d,p.material]),i.useLayoutEffect((()=>{h&&m.current.lookAt(Array.isArray(h)?new s.Vector3(...h):h)}),[h]),u=Array.isArray(u)&&2===u.length?[u[0],u[1],1]:u,i.createElement("mesh",n({ref:M([m,f]),scale:u},p),"circle"===l?i.createElement("ringGeometry",{args:[0,1,64]}):"ring"===l?i.createElement("ringGeometry",{args:[.5,1,64]}):"rect"===l?i.createElement("planeGeometry",null):i.createElement(l,{args:e}),d||(p.material?null:i.createElement("meshBasicMaterial",{toneMapped:r,map:t,side:s.DoubleSide})))}));var gu=r(48756);function vu(e,t,r=new s.Vector3){const n=Math.PI*(e-.5),i=2*Math.PI*(t-.5);return r.x=Math.cos(i),r.y=Math.sin(n),r.z=Math.sin(i),r}const Au=i.forwardRef((({inclination:e=.6,azimuth:t=.1,distance:r=1e3,mieCoefficient:a=.005,mieDirectionalG:o=.8,rayleigh:l=.5,turbidity:c=10,sunPosition:u=vu(e,t),...h},d)=>{const p=i.useMemo((()=>(new s.Vector3).setScalar(r)),[r]),[f]=i.useState((()=>new gu.q));return i.createElement("primitive",n({dispose:void 0,object:f,ref:d,"material-uniforms-mieCoefficient-value":a,"material-uniforms-mieDirectionalG-value":o,"material-uniforms-rayleigh-value":l,"material-uniforms-sunPosition-value":u,"material-uniforms-turbidity-value":c,scale:p},h))}));class yu extends s.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},fade:{value:1}},vertexShader:"\n uniform float time;\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(mvPosition.x + 2.0 * time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n }",fragmentShader:"\n uniform sampler2D pointTexture;\n uniform float fade;\n varying vec3 vColor;\n void main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include \n\t #include \n }"})}}const xu=e=>(new s.Vector3).setFromSpherical(new s.Spherical(e,Math.acos(1-2*Math.random()),2*Math.random()*Math.PI)),bu=i.forwardRef((({radius:e=100,depth:t=50,count:r=5e3,saturation:n=0,factor:a=4,fade:l=!1},c)=>{const u=i.useRef(),[h,d,p]=i.useMemo((()=>{const i=[],o=[],l=Array.from({length:r},(()=>(.5+.5*Math.random())*a)),c=new s.Color;let u=e+t;const h=t/r;for(let e=0;eu.current&&(u.current.uniforms.time.value=e.clock.getElapsedTime())));const[f]=i.useState((()=>new yu));return i.createElement("points",{ref:c},i.createElement("bufferGeometry",{attach:"geometry"},i.createElement("bufferAttribute",{attachObject:["attributes","position"],args:[h,3]}),i.createElement("bufferAttribute",{attachObject:["attributes","color"],args:[d,3]}),i.createElement("bufferAttribute",{attachObject:["attributes","size"],args:[p,1]})),i.createElement("primitive",{dispose:void 0,ref:u,object:f,attach:"material",blending:s.AdditiveBlending,"uniforms-fade-value":l,transparent:!0,vertexColors:!0}))}));function wu({opacity:e=.5,speed:t=.4,width:r=10,depth:n=1.5,segments:a=20,texture:s="https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png",color:l="#ffffff",depthTest:c=!0,...u}){const h=i.useRef(),d=Oa(s),p=i.useMemo((()=>[...new Array(a)].map(((e,n)=>({x:r/2-Math.random()*r,y:r/2-Math.random()*r,scale:.4+Math.sin((n+1)/a*Math.PI)*(10*(.2+Math.random())),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*t})))),[r,a,t]);return(0,o.useFrame)((e=>{var t;return null==(t=h.current)?void 0:t.children.forEach(((t,r)=>{t.children[0].rotation.z+=p[r].rotation,t.children[0].scale.setScalar(p[r].scale+(1+Math.sin(e.clock.getElapsedTime()/10))/2*r/10)}))})),i.createElement("group",u,i.createElement("group",{position:[0,0,a/2*n],ref:h},p.map((({x:t,y:r,scale:a,density:s},o)=>i.createElement(yi,{key:o,position:[t,r,-o*n]},i.createElement(Mc,{scale:a,rotation:[0,0,0]},i.createElement("meshStandardMaterial",{map:d,transparent:!0,opacity:a/6*s*e,depthTest:c,color:l})))))))}function _u(e=0,t=1024){const r=Ca((()=>fetch("https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json").then((e=>e.json()))),["matcapList"]),n=r[0],a=i.useMemo((()=>Object.keys(r).length),[]),s=`${i.useMemo((()=>"string"==typeof e?e:"number"==typeof e?r[e]:null),[e])||n}${function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(t)}.png`,o=`https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/${t}/${s}`;return[Oa(o),o,a]}function Eu(e=0,t={}){const{repeat:r=[1,1],anisotropy:n=1,offset:a=[0,0]}=t,o=Ca((()=>fetch("https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json").then((e=>e.json()))),["normalsList"]),l=i.useMemo((()=>Object.keys(o).length),[]),c=o[0],u=`https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb/normals/${o[e]||c}`,h=Oa(u);return i.useLayoutEffect((()=>{h&&(h.wrapS=h.wrapT=s.RepeatWrapping,h.repeat=new s.Vector2(r[0],r[1]),h.offset=new s.Vector2(a[0],a[1]),h.anisotropy=n)}),[h,n,r,a]),[h,u,l]}const Su=new s.Matrix4,Mu=new s.Matrix4,Tu=[],Cu=new s.Mesh;class Iu extends s.Group{constructor(){super(),this.color=new s.Color("white"),this.instance={current:void 0},this.instanceKey={current:void 0}}get geometry(){var e;return null==(e=this.instance.current)?void 0:e.geometry}raycast(e,t){const r=this.instance.current;if(!r)return;if(!r.geometry||!r.material)return;Cu.geometry=r.geometry;const n=r.matrixWorld;let i=r.userData.instances.indexOf(this.instanceKey);if(!(-1===i||i>r.count)){r.getMatrixAt(i,Su),Mu.multiplyMatrices(n,Su),Cu.matrixWorld=Mu,Cu.raycast(e,Tu);for(let e=0,r=Tu.length;e{const c=i.useRef(null),[u,h]=i.useState([]),[[d,p,f]]=i.useState((()=>[new Float32Array(3*r),Float32Array.from({length:3*r},(()=>1)),Float32Array.from({length:r},(()=>1))]));i.useLayoutEffect((()=>{c.current.geometry.drawRange.count=Math.min(r,void 0!==t?t:r,u.length)}),[u,t]),i.useEffect((()=>{c.current.geometry.attributes.position.needsUpdate=!0})),(0,o.useFrame)((()=>{for(c.current.updateMatrix(),c.current.updateMatrixWorld(),Fu.copy(c.current.matrixWorld).invert(),Bu=0;Bu{const e={};for(Bu=0;Bu({...e,[t]:e=>{var r,n,i;const a=null==(r=u[e.index])?void 0:r.current;return null==a||null==(n=a.__r3f)||null==(i=n.handlers)?void 0:i[t]({...e,object:a})}})),{})}),[e,u]),g=i.useMemo((()=>({subscribe:e=>(h((t=>[...t,e])),()=>h((t=>t.filter((t=>t.current!==e.current)))))})),[]);return i.createElement("points",n({matrixAutoUpdate:!1,ref:M([l,c])},m,a),i.createElement("bufferGeometry",null,i.createElement("bufferAttribute",{attachObject:["attributes","position"],count:d.length/3,array:d,itemSize:3,usage:s.DynamicDrawUsage}),i.createElement("bufferAttribute",{attachObject:["attributes","color"],count:p.length/3,array:p,itemSize:3,usage:s.DynamicDrawUsage}),i.createElement("bufferAttribute",{attachObject:["attributes","size"],count:f.length,array:f,itemSize:1,usage:s.DynamicDrawUsage})),i.createElement(Pu.Provider,{value:g},e))})),Uu=i.forwardRef((({children:e,...t},r)=>{i.useMemo((()=>(0,o.extend)({Position:Iu})),[]);const a=i.useRef(),{subscribe:s}=i.useContext(Pu);return i.useLayoutEffect((()=>s(a)),[]),i.createElement("position",n({ref:M([r,a])},t),e)})),Nu=i.forwardRef((({children:e,positions:t,colors:r,sizes:a,stride:l=3,...c},u)=>{const h=i.useRef(null);return(0,o.useFrame)((()=>{const e=h.current.geometry.attributes;e.position.needsUpdate=!0,r&&(e.color.needsUpdate=!0),a&&(e.size.needsUpdate=!0)})),i.createElement("points",n({ref:M([u,h])},c),i.createElement("bufferGeometry",null,i.createElement("bufferAttribute",{attachObject:["attributes","position"],count:t.length/l,array:t,itemSize:l,usage:s.DynamicDrawUsage}),r&&i.createElement("bufferAttribute",{attachObject:["attributes","color"],count:r.length/l,array:r,itemSize:3,usage:s.DynamicDrawUsage}),a&&i.createElement("bufferAttribute",{attachObject:["attributes","size"],count:a.length/l,array:a,itemSize:1,usage:s.DynamicDrawUsage})),e)})),ku=i.forwardRef(((e,t)=>e.positions instanceof Float32Array?i.createElement(Nu,n({},e,{ref:t})):i.createElement(Du,n({},e,{ref:t}))));var Ou=r(45697),Gu=r.n(Ou);function zu(e){return Vu(e.children,e.components)}function Vu(e,t,r){if(r=r||[],!t[0])return e(r);function n(n){return Vu(e,t.slice(1),r.concat([n]))}return"function"==typeof t[0]?t[0]({results:r,render:n}):(0,i.cloneElement)(t[0],{children:n})}let Hu,Qu;zu.propTypes={children:Gu().func.isRequired,components:Gu().arrayOf(Gu().oneOfType([Gu().element,Gu().func])).isRequired};const ju=i.createContext(null),Wu=new s.Matrix4,Xu=new s.Matrix4,Yu=new s.Matrix4;new s.Color;const qu=new s.Vector3,Ku=new s.Quaternion,Ju=new s.Vector3,Zu=i.forwardRef((({context:e,children:t,...r},a)=>{i.useMemo((()=>(0,o.extend)({Position:Iu})),[]);const s=i.useRef(),{subscribe:l,getParent:c}=i.useContext(e||ju);return i.useLayoutEffect((()=>l(s)),[]),i.createElement("position",n({instance:c(),instanceKey:s,ref:M([a,s])},r),t)})),$u=i.forwardRef((({children:e,range:t,limit:r=1e3,frames:a=1/0,...l},c)=>{const[{context:u,instance:h}]=i.useState((()=>{const e=i.createContext(null);return{context:e,instance:i.forwardRef(((t,r)=>i.createElement(Zu,n({context:e},t,{ref:r}))))}})),d=i.useRef(null),[p,f]=i.useState([]),[[m,g]]=i.useState((()=>{const e=new Float32Array(16*r);for(Hu=0;Hu1)))]}));i.useLayoutEffect((()=>{d.current.count=d.current.instanceMatrix.updateRange.count=d.current.instanceColor.updateRange.count=Math.min(r,void 0!==t?t:r,p.length)}),[p,t]),i.useEffect((()=>{d.current.instanceMatrix.needsUpdate=!0}));let v=0;(0,o.useFrame)((()=>{if(a===1/0||v({getParent:()=>d,subscribe:e=>(f((t=>[...t,e])),()=>f((t=>t.filter((t=>t.current!==e.current)))))})),[]);return i.createElement("instancedMesh",n({userData:{instances:p},matrixAutoUpdate:!1,ref:M([c,d]),args:[null,null,0],raycast:()=>null},l),i.createElement("instancedBufferAttribute",{attach:"instanceMatrix",count:m.length/16,array:m,itemSize:16,usage:s.DynamicDrawUsage}),i.createElement("instancedBufferAttribute",{attach:"instanceColor",count:g.length/3,array:g,itemSize:3,usage:s.DynamicDrawUsage}),"function"==typeof e?i.createElement(u.Provider,{value:A},e(h)):i.createElement(ju.Provider,{value:A},e))}));function eh({meshes:e,children:t,...r}){const a=Array.isArray(e);if(!a)for(const n of Object.keys(e))e[n].isMesh||delete e[n];return i.createElement(zu,{components:(a?e:Object.values(e)).map((({geometry:e,material:t})=>i.createElement($u,n({key:e.uuid,geometry:e,material:t},r))))},(r=>a?t(...r):t(Object.keys(e).filter((t=>e[t].isMesh)).reduce(((e,t,n)=>({...e,[t]:r[n]})),{}))))}var th=r(3415);const rh=i.createContext(null),nh=e=>e instanceof s.Vector3?e.toArray():e,ih=i.forwardRef(((e,t)=>{const{limit:r=1e3,lineWidth:a=1,children:l,...c}=e,[u,h]=i.useState([]),[d]=i.useState((()=>new xi.w)),[p]=i.useState((()=>new bi.Y)),[f]=i.useState((()=>new th.z)),[m]=i.useState((()=>new s.Vector2(512,512))),[g]=i.useState((()=>Array(6*r).fill(0))),[v]=i.useState((()=>Array(6*r).fill(0))),A=i.useMemo((()=>({subscribe:e=>(h((t=>[...t,e])),()=>h((t=>t.filter((t=>t.current!==e.current)))))})),[]);return(0,o.useFrame)((()=>{for(let i=0;i{const r=i.useContext(rh);if(!r)throw"Segment must used inside Segments component.";const a=i.useRef();return i.useMemo((()=>(0,o.extend)({SegmentObject:ah})),[]),i.useLayoutEffect((()=>r.subscribe(a)),[]),i.createElement("segmentObject",n({ref:M([a,t])},e))})),oh=i.forwardRef((({children:e,distances:t,...r},a)=>{const s=i.useRef(null);return i.useLayoutEffect((()=>{const{current:e}=s;e.levels.length=0,e.children.forEach(((r,n)=>e.levels.push({object:r,distance:t[n]})))})),(0,o.useFrame)((e=>{var t;return null==(t=s.current)?void 0:t.update(e.camera)})),i.createElement("lOD",n({ref:M([s,a])},r),e)}));function lh({all:e,scene:t,camera:r}){const n=(0,o.useThree)((({gl:e})=>e)),a=(0,o.useThree)((({camera:e})=>e)),l=(0,o.useThree)((({scene:e})=>e));return i.useLayoutEffect((()=>{const i=[];e&&(t||l).traverse((e=>{!1===e.visible&&(i.push(e),e.visible=!0)})),n.compile(t||l,r||a);const o=new s.WebGLCubeRenderTarget(128);new s.CubeCamera(.01,1e5,o).update(n,t||l),o.dispose(),i.forEach((e=>e.visible=!1))}),[]),null}function ch(){const e=(0,o.useThree)((e=>e.gl));return(0,i.useEffect)((()=>(e.shadowMap.autoUpdate=!1,e.shadowMap.needsUpdate=!0,()=>{e.shadowMap.autoUpdate=e.shadowMap.needsUpdate=!0})),[e.shadowMap]),null}const uh=new s.Matrix4,hh=new s.Ray,dh=new s.Sphere,ph=new s.Vector3;function fh(e,t){const r=this.geometry,n=this.material,i=this.matrixWorld;void 0!==n&&(null===r.boundingSphere&&r.computeBoundingSphere(),dh.copy(r.boundingSphere),dh.applyMatrix4(i),!1!==e.ray.intersectsSphere(dh)&&(uh.copy(i).invert(),hh.copy(e.ray).applyMatrix4(uh),null!==r.boundingBox&&null===hh.intersectBox(r.boundingBox,ph)||t.push({distance:ph.distanceTo(e.ray.origin),point:ph.clone(),object:this})))}function mh({pixelated:e}){const t=(0,o.useThree)((e=>e.gl)),r=(0,o.useThree)((e=>e.internal.active)),n=(0,o.useThree)((e=>e.performance.current)),a=(0,o.useThree)((e=>e.viewport.initialDpr)),s=(0,o.useThree)((e=>e.setDpr));return i.useEffect((()=>{const n=t.domElement;return()=>{r&&s(a),e&&n&&(n.style.imageRendering="auto")}}),[]),i.useEffect((()=>{s(n*a),e&&t.domElement&&(t.domElement.style.imageRendering=1===n?"auto":"pixelated")}),[n]),null}function gh(){const e=(0,o.useThree)((e=>e.get)),t=(0,o.useThree)((e=>e.performance.current));return i.useEffect((()=>{const t=e().raycaster.enabled;return()=>{e().raycaster.enabled=t}}),[]),i.useEffect((()=>{e().raycaster.enabled=1===t}),[t]),null}},64232:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Canvas:()=>K,ReactThreeFiber:()=>w,_roots:()=>ne,act:()=>pe,addAfterEffect:()=>V,addEffect:()=>z,addTail:()=>H,advance:()=>se,applyProps:()=>le,context:()=>D,createPortal:()=>me,dispose:()=>de,events:()=>W,extend:()=>P,invalidate:()=>ae,reconciler:()=>oe,render:()=>ce,unmountComponentAtNode:()=>he,useFrame:()=>Z,useGraph:()=>ee,useLoader:()=>re,useThree:()=>J});var n=r(99477),i=r(67294),a=r(14671),s=r(60374),o=r(76525),l=r.n(o),c=r(63840),u=r(64063),h=r.n(u);const d=[];function p(e,t,r,n=0,i=!1){for(const s of t)if(h()(r,s.args)){if(i)return;if(s.error)throw s.error;if(s.response)return s.response;throw s.promise}const a={args:r,promise:e(...r).then((e=>a.response=null==e||e)).catch((e=>a.error=null!=e?e:"unknown error")).then((()=>{n>0&&setTimeout((()=>{const e=t.indexOf(a);-1!==e&&t.splice(e,1)}),n)}))};if(t.push(a),!i)throw a.promise}function f(e,...t){if(void 0===t||0===t.length)e.splice(0,e.length);else{const r=e.find((e=>h()(t,e.args)));if(r){const t=e.indexOf(r);-1!==t&&e.splice(t,1)}}}function m(e,...t){return p(e,d,t,m.lifespan)}m.lifespan=0,m.clear=(...e)=>f(d,...e),m.preload=(e,...t)=>{p(e,d,t,m.lifespan,!0)},m.peek=(...e)=>{var t;return null==(t=d.find((t=>h()(e,t.args))))?void 0:t.response};var g=r(20296),v=r.n(g);function A(e){let{debounce:t,scroll:r,polyfill:n,offsetSize:a}=void 0===e?{debounce:0,scroll:!1,offsetSize:!1}:e;const s=n||("undefined"==typeof window?class{}:window.ResizeObserver);if(!s)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[o,l]=(0,i.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),c=(0,i.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:o}),u=t?"number"==typeof t?t:t.scroll:null,h=t?"number"==typeof t?t:t.resize:null,d=(0,i.useRef)(!1);(0,i.useEffect)((()=>(d.current=!0,()=>{d.current=!1})));const[p,f,m]=(0,i.useMemo)((()=>{const e=()=>{if(!c.current.element)return;const{left:e,top:t,width:r,height:n,bottom:i,right:s,x:o,y:u}=c.current.element.getBoundingClientRect(),h={left:e,top:t,width:r,height:n,bottom:i,right:s,x:o,y:u};c.current.element instanceof HTMLElement&&a&&(h.height=c.current.element.offsetHeight,h.width=c.current.element.offsetWidth),Object.freeze(h),d.current&&!b(c.current.lastBounds,h)&&l(c.current.lastBounds=h)};return[e,h?v()(e,h):e,u?v()(e,u):e]}),[l,a,u,h]);function g(){c.current.scrollContainers&&(c.current.scrollContainers.forEach((e=>e.removeEventListener("scroll",m,!0))),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null)}function A(){c.current.element&&(c.current.resizeObserver=new s(m),c.current.resizeObserver.observe(c.current.element),r&&c.current.scrollContainers&&c.current.scrollContainers.forEach((e=>e.addEventListener("scroll",m,{capture:!0,passive:!0}))))}var x,w,_;return x=m,w=Boolean(r),(0,i.useEffect)((()=>{if(w){const e=x;return window.addEventListener("scroll",e,{capture:!0,passive:!0}),()=>{window.removeEventListener("scroll",e,!0)}}}),[x,w]),_=f,(0,i.useEffect)((()=>{const e=_;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[_]),(0,i.useEffect)((()=>{g(),A()}),[r,m,f]),(0,i.useEffect)((()=>g),[]),[e=>{e&&e!==c.current.element&&(g(),c.current.element=e,c.current.scrollContainers=y(e),A())},o,p]}function y(e){const t=[];if(!e||e===document.body)return t;const{overflow:r,overflowX:n,overflowY:i}=window.getComputedStyle(e);return[r,n,i].some((e=>"auto"===e||"scroll"===e))&&t.push(e),[...t,...y(e.parentElement)]}const x=["x","y","top","bottom","left","right","width","height"],b=(e,t)=>x.every((r=>e[r]===t[r]));var w=Object.freeze({__proto__:null});const _={obj:e=>e===Object(e)&&!_.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,und:e=>void 0===e,arr:e=>Array.isArray(e),equ(e,t){if(typeof e!=typeof t||!!e!=!!t)return!1;if(_.str(e)||_.num(e)||_.obj(e))return e===t;if(_.arr(e)&&e==t)return!0;let r;for(r in e)if(!(r in t))return!1;for(r in t)if(e[r]!==t[r])return!1;return!_.und(r)||e===t}};function E(e){return(e.eventObject||e.object).uuid+"/"+e.index}function S(e){const t=new n.Vector3;function r(t){const{internal:r}=e.getState(),n=t.offsetX-r.initialClick[0],i=t.offsetY-r.initialClick[1];return Math.round(Math.sqrt(n*n+i*i))}function i(e){return e.filter((e=>["Move","Over","Enter","Out","Leave"].some((t=>{var r;return null==(r=e.__r3f.handlers)?void 0:r["onPointer"+t]}))))}function a(t){const{internal:r}=e.getState();Array.from(r.hovered.values()).forEach((e=>{if(!t.length||!t.find((t=>t.object===e.object&&t.index===e.index))){const n=e.eventObject.__r3f.handlers;if(r.hovered.delete(E(e)),n){const r={...e,intersections:t||[]};null==n.onPointerOut||n.onPointerOut(r),null==n.onPointerLeave||n.onPointerLeave(r)}}}))}function s(e,t){t.forEach((t=>{var r;return null==(r=t.__r3f.handlers)||null==r.onPointerMissed?void 0:r.onPointerMissed(e)}))}return{handlePointer:n=>{switch(n){case"onPointerLeave":case"onPointerCancel":return()=>a([]);case"onLostPointerCapture":return t=>{"pointerId"in t&&e.getState().internal.capturedMap.delete(t.pointerId),a([])}}return o=>{const{onPointerMissed:l,internal:c}=e.getState();!function(t){var r;const n=e.getState(),{raycaster:i,mouse:a,camera:s,size:o}=n,{offsetX:l,offsetY:c}=null!=(r=null==i.computeOffsets?void 0:i.computeOffsets(t,n))?r:t,{width:u,height:h}=o;a.set(l/u*2-1,-c/h*2+1),i.setFromCamera(a,s)}(o);const u="onPointerMove"===n,h=function(t,r){const{internal:n}=e.getState();return"pointerId"in r&&n.capturedMap.has(r.pointerId)&&t.push(...n.capturedMap.get(r.pointerId).values()),t}(function(t){const r=e.getState(),{raycaster:n,internal:i}=r;if(!n.enabled)return[];const a=new Set,s=[],o=t?t(i.interaction):i.interaction;let l=n.intersectObjects(o,!0).filter((e=>{const t=E(e);return!a.has(t)&&(a.add(t),!0)}));n.filter&&(l=n.filter(l,r));for(const e of l){let t=e.object;for(;t;){var c;(null==(c=t.__r3f)?void 0:c.handlers)&&s.push({...e,eventObject:t}),t=t.parent}}return s}(u?i:void 0),o);u&&a(h),function(n,i,s){const{raycaster:o,mouse:l,camera:c,internal:u}=e.getState();if(n.length){const e=t.set(l.x,l.y,0).unproject(c),h="click"===i.type?r(i):0,d=e=>i.target.releasePointerCapture(e),p={stopped:!1};for(const t of n){const r=e=>{var r,n;return null!=(r=null==(n=u.capturedMap.get(e))?void 0:n.has(t.eventObject))&&r},f=e=>{u.capturedMap.has(e)?u.capturedMap.get(e).set(t.eventObject,t):u.capturedMap.set(e,new Map([[t.eventObject,t]])),i.target.setPointerCapture(e)};let m={};for(let e in Object.getPrototypeOf(i)){let t=i[e];"function"!=typeof t&&(m[e]=t)}let g={...t,...m,spaceX:l.x,spaceY:l.y,intersections:n,stopped:p.stopped,delta:h,unprojectedPoint:e,ray:o.ray,camera:c,stopPropagation:()=>{const e="pointerId"in i&&u.capturedMap.get(i.pointerId);(!e||e.has(t.eventObject))&&(g.stopped=p.stopped=!0,u.hovered.size&&Array.from(u.hovered.values()).find((e=>e.eventObject===t.eventObject)))&&a([...n.slice(0,n.indexOf(t)),t])},target:{hasPointerCapture:r,setPointerCapture:f,releasePointerCapture:d},currentTarget:{hasPointerCapture:r,setPointerCapture:f,releasePointerCapture:d},sourceEvent:i,nativeEvent:i};if(s(g),!0===p.stopped)break}}}(h,o,(e=>{const t=e.eventObject,r=t.__r3f.handlers;if(r)if(u){if(r.onPointerOver||r.onPointerEnter||r.onPointerOut||r.onPointerLeave){const t=E(e),n=c.hovered.get(t);n?n.stopped&&e.stopPropagation():(c.hovered.set(t,e),null==r.onPointerOver||r.onPointerOver(e),null==r.onPointerEnter||r.onPointerEnter(e))}null==r.onPointerMove||r.onPointerMove(e)}else{const i=null==r?void 0:r[n];i&&("onClick"!==n&&"onContextMenu"!==n&&"onDoubleClick"!==n||c.initialHits.includes(t))&&(i(e),s(o,c.interaction.filter((e=>e!==t))))}})),"onPointerDown"===n&&(c.initialClick=[o.offsetX,o.offsetY],c.initialHits=h.map((e=>e.eventObject))),"onClick"!==n&&"onContextMenu"!==n&&"onDoubleClick"!==n||h.length||r(o)<=2&&(s(o,c.interaction),l&&l(o))}}}}const M=e=>e&&!!e.getState,T=(e,t)=>{var r,n;return{root:M(e)?e:null!=(r=null==(n=e.__r3f)?void 0:n.root)?r:t.__r3f.root,container:M(e)?e.getState().scene:e}},C="__default",I={},B=["children","key","ref"];let R={},P=e=>{R={...R,...e}};function F(e,t){const r=e;return(null!=t&&t.instance||!r.__r3f)&&(r.__r3f={root:null,memoizedProps:{},objects:[],...t}),e}const L=e=>e&&e.isOrthographicCamera,D=i.createContext(null);function U(e,t){const r=t.length;return t.push(e),()=>{t.splice(r,1)}}let N,k=[],O=[],G=[];const z=e=>U(e,k),V=e=>U(e,O),H=e=>U(e,G);function Q(e,t){for(N=0;N({...e,[r]:t(r)})),{}),connect:t=>{var n;const{set:i,events:a}=e.getState();null==a.disconnect||a.disconnect(),i((e=>({events:{...e.events,connected:t}}))),Object.entries(null!=(n=null==a?void 0:a.handlers)?n:[]).forEach((([e,n])=>{const[i,a]=r[e];t.addEventListener(i,n,{passive:a})}))},disconnect:()=>{const{set:t,events:n}=e.getState();var i;n.connected&&(Object.entries(null!=(i=n.handlers)?i:[]).forEach((([e,t])=>{if(n&&n.connected instanceof HTMLElement){const[i]=r[e];n.connected.removeEventListener(i,t)}})),t((e=>({events:{...e.events,connected:!1}}))))}}}const X="undefined"!=typeof window?i.useLayoutEffect:i.useEffect;function Y({set:e}){return X((()=>(e(new Promise((()=>null))),()=>e(!1))),[]),null}class q extends i.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}function K({children:e,fallback:t,tabIndex:r,resize:n,id:a,style:s,className:o,events:l,...c}){const[u,h]=A({scroll:!0,debounce:{scroll:50,resize:0},...n}),d=i.useRef(null),[p,f]=i.useState(!1),[m,g]=i.useState(!1);if(p)throw p;if(m)throw m;return X((()=>{h.width>0&&h.height>0&&ce(i.createElement(q,{set:g},i.createElement(i.Suspense,{fallback:i.createElement(Y,{set:f})},e)),d.current,{...c,size:h,events:l||W})}),[h,e]),X((()=>{const e=d.current;return()=>he(e)}),[]),i.createElement("div",{ref:u,id:a,className:o,tabIndex:r,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",...s}},i.createElement("canvas",{ref:d,style:{display:"block"}},t))}function J(e=(e=>e),t){const r=i.useContext(D);if(!r)throw"R3F hooks can only be used within the Canvas component!";return r(e,t)}function Z(e,t=0){const{subscribe:r}=i.useContext(D).getState().internal,n=i.useRef(e);return i.useLayoutEffect((()=>{n.current=e}),[e]),i.useLayoutEffect((()=>{const e=r(n,t);return()=>e()}),[t,r]),null}function $(e){const t={nodes:{},materials:{}};return e&&e.traverse((e=>{e.name&&(t.nodes[e.name]=e),e.material&&!t.materials[e.material.name]&&(t.materials[e.material.name]=e.material)})),t}function ee(e){return i.useMemo((()=>$(e)),[e])}function te(e,t){return function(r,...n){const i=new r;return e&&e(i),Promise.all(n.map((e=>new Promise(((r,n)=>i.load(e,(e=>{e.scene&&Object.assign(e,$(e.scene)),r(e)}),t,(t=>n(`Could not load ${e}: ${t.message}`))))))))}}function re(e,t,r,n){const i=Array.isArray(t)?t:[t],a=m(te(r,n),e,...i);return Array.isArray(t)?a:a[0]}q.getDerivedStateFromError=()=>({error:!0}),re.preload=function(e,t,r){const n=Array.isArray(t)?t:[t];return m.preload(te(r),e,...n)};const ne=new Map,ie=["legacy","blocking","concurrent"],{invalidate:ae,advance:se}=function(e){let t,r=!1;function n(i){if(r=!0,t=0,Q(k,i),e.forEach((e=>{const r=e.store.getState();r.internal.active&&("always"===r.frameloop||r.internal.frames>0)&&(t+=j(i,r))})),Q(O,i),t>0)return requestAnimationFrame(n);Q(G,i),r=!1}return{loop:n,invalidate:function t(i){if(!i)return e.forEach((e=>t(e.store.getState())));!i.vr&&i.internal.active&&"never"!==i.frameloop&&(i.internal.frames=Math.min(60,i.internal.frames+1),r||(r=!0,requestAnimationFrame(n)))},advance:function(t,r=!0,n){r&&Q(k,t),n?j(t,n):e.forEach((e=>j(t,e.store.getState()))),r&&Q(O,t)}}}(ne),{reconciler:oe,applyProps:le}=function(e){function t(e,t,a={},s=!1){var o,l,c;const u=null!=(o=null==e?void 0:e.__r3f)?o:{},h=u.root,d=null!=(l=null==h||null==h.getState?void 0:h.getState())?l:{},p=[],f=[],m={};let g=0;Object.entries(t).forEach((([e,t])=>{-1===B.indexOf(e)&&(m[e]=t)})),u.memoizedProps&&u.memoizedProps.args&&(m.args=u.memoizedProps.args),u.memoizedProps&&u.memoizedProps.attach&&(m.attach=u.memoizedProps.attach),e.__r3f&&(e.__r3f.memoizedProps=m);let v=Object.keys(t);for(g=0;g-1&&delete x[v[g]];const b=Object.entries(x);for(g=0;g0){if(b.forEach((([t,i])=>{if(!f.includes(t)){let a=e,s=a[t];if(t.includes("-")){const r=t.split("-");if(s=r.reduce(((e,t)=>e[t]),e),!s||!s.set){const[n,...i]=r.reverse();a=i.reverse().reduce(((e,t)=>e[t]),e),t=n}}if(i===C+"remove")if(s&&s.constructor)i=new s.constructor(m.args);else if(a.constructor){const e=new a.constructor(a.__r3f.memoizedProps.args);i=e[s],e.dispose&&e.dispose()}else i=0;if(s&&s.set&&(s.copy||s instanceof n.Layers)){if(Array.isArray(i))s.fromArray?s.fromArray(i):s.set(...i);else if(s.copy&&i&&i.constructor&&s.constructor.name===i.constructor.name)s.copy(i);else if(void 0!==i){const e=s instanceof n.Color;!e&&s.setScalar?s.setScalar(i):s instanceof n.Layers&&i instanceof n.Layers?s.mask=i.mask:s.set(i),!d.linear&&e&&s.convertSRGBToLinear()}}else a[t]=i,!d.linear&&a[t]instanceof n.Texture&&(a[t].encoding=n.sRGBEncoding);r(e)}})),s&&h&&e.raycast&&u.handlers){u.handlers=void 0;const t=d.internal.interaction.indexOf(e);t>-1&&d.internal.interaction.splice(t,1)}f.length&&(s&&h&&e.raycast&&d.internal.interaction.push(e),u.handlers=f.reduce(((e,r)=>({...e,[r]:t[r]})),{})),e.parent&&i(e)}}function r(e){var t,r;const n=null==(t=e.__r3f)||null==(r=t.root)||null==r.getState?void 0:r.getState();n&&0===n.internal.frames&&n.invalidate()}function i(e){null==e.onUpdate||e.onUpdate(e)}function a(e,{args:r=[],...i},a,s,o){let l,c=`${e[0].toUpperCase()}${e.slice(1)}`;if(!M(a)&&o){const e=t=>t.return?e(t.return):t.stateNode&&t.stateNode.containerInfo;a=e(o)}if(!a||!M(a))throw`No valid root for ${c}!`;if("primitive"===e){if(void 0===i.object)throw"Primitives without 'object' are invalid!";l=F(i.object,{root:a,instance:!0})}else{const e=R[c]||n[c];if(!e)throw`${c} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;const t=_.arr(r);l=F(t?new e(...r):new e(r),{root:a,memoizedProps:{args:t&&0===r.length?null:r}})}return c.endsWith("Geometry")?i={attach:"geometry",...i}:c.endsWith("Material")&&(i={attach:"material",...i}),t(l,i,{}),l}function s(e,t){let n=!1;t&&(t.attachArray?(_.arr(e[t.attachArray])||(e[t.attachArray]=[]),e[t.attachArray].push(t)):t.attachObject?(_.obj(e[t.attachObject[0]])||(e[t.attachObject[0]]={}),e[t.attachObject[0]][t.attachObject[1]]=t):t.attach&&!_.fun(t.attach)?e[t.attach]=t:t.isObject3D&&(e.add(t),n=!0),n||(e.__r3f.objects.push(t),t.parent=e),i(t),r(t))}function o(e,t,n){let a=!1;if(t){if(t.attachArray){const r=e[t.attachArray];_.arr(r)||(e[t.attachArray]=[]),r.splice(r.indexOf(n),0,t)}else{if(t.attachObject||t.attach&&!_.fun(t.attach))return a=!0,s(e,t);if(t.isObject3D){t.parent=e,t.dispatchEvent({type:"added"});const r=e.children.filter((e=>e!==t)),i=r.indexOf(n);e.children=[...r.slice(0,i),t,...r.slice(i)],a=!0}}a||(e.__r3f.objects.push(t),t.parent=e),i(t),r(t)}}function u(e,t,r=!1){e&&[...e].forEach((e=>h(t,e,r)))}function h(e,t,n){if(t){var i;if(e.__r3f.objects){const r=e.__r3f.objects.length;e.__r3f.objects=e.__r3f.objects.filter((e=>e!==t));e.__r3f.objects.lengthe!==t));else if(t.attachObject)delete e[t.attachObject[0]][t.attachObject[1]];else if(t.attach&&!_.fun(t.attach))e[t.attach]=null;else if(t.isObject3D){var a;e.remove(t),null!=(a=t.__r3f)&&a.root&&function(e,t){const{internal:r}=e.getState();r.interaction=r.interaction.filter((e=>e!==t)),r.initialHits=r.initialHits.filter((e=>e!==t)),r.hovered.forEach(((e,n)=>{e.eventObject!==t&&e.object!==t||r.hovered.delete(n)}))}(t.__r3f.root,t)}const o=null==(i=t.__r3f)?void 0:i.instance,l=void 0===n?null!==t.dispose&&!o:n;var s;if(!o)u(null==(s=t.__r3f)?void 0:s.objects,t,l),u(t.children,t,l);t.__r3f&&(delete t.__r3f.root,delete t.__r3f.objects,delete t.__r3f.handlers,delete t.__r3f.memoizedProps,o||delete t.__r3f),l&&t.dispose&&"Scene"!==t.type&&(0,c.unstable_runWithPriority)(c.unstable_IdlePriority,(()=>t.dispose())),r(e)}}function d(e,t,r,n){const i=e.parent;if(!i)return;const o=a(t,r,e.__r3f.root);e.children&&(e.children.forEach((e=>s(o,e))),e.children=[]),e.__r3f.objects.forEach((e=>s(o,e))),e.__r3f.objects=[],h(i,e),s(i,o),[n,n.alternate].forEach((e=>{null!==e&&(e.stateNode=o,e.ref&&("function"==typeof e.ref?e.ref(o):e.ref.current=o))}))}return{reconciler:l()({now:c.unstable_now,createInstance:a,removeChild:h,appendChild:s,appendInitialChild:s,insertBefore:o,warnsIfNotActing:!0,supportsMutation:!0,isPrimaryRenderer:!1,scheduleTimeout:_.fun(setTimeout)?setTimeout:void 0,cancelTimeout:_.fun(clearTimeout)?clearTimeout:void 0,setTimeout:_.fun(setTimeout)?setTimeout:void 0,clearTimeout:_.fun(clearTimeout)?clearTimeout:void 0,noTimeout:-1,appendChildToContainer:(e,t)=>{const{container:r,root:n}=T(e,t);r.__r3f.root=n,s(r,t)},removeChildFromContainer:(e,t)=>{const{container:r}=T(e,t);h(r,t)},insertInContainerBefore:(e,t,r)=>{const{container:n}=T(e,t);o(n,t,r)},commitUpdate(e,r,n,i,a,s){if(e.__r3f.instance&&a.object&&a.object!==e)d(e,n,a,s);else{const{args:r=[],...o}=a,{args:l=[],...c}=i;r.some(((e,t)=>_.obj(e)?Object.entries(e).some((([e,r])=>r!==l[t][e])):e!==l[t]))?d(e,n,a,s):t(e,o,c,!0)}},hideInstance(e){e.isObject3D&&(e.visible=!1,r(e))},unhideInstance(e,t){(e.isObject3D&&null==t.visible||t.visible)&&(e.visible=!0,r(e))},hideTextInstance(){throw new Error("Text is not allowed in the R3F tree.")},getPublicInstance:e=>e,getRootHostContext:e=>I,getChildHostContext:e=>I,createTextInstance(){},finalizeInitialChildren:e=>!!e.__r3f.handlers,commitMount(e){e.raycast&&e.__r3f.handlers&&e.__r3f.root.getState().internal.interaction.push(e)},prepareUpdate:()=>I,shouldDeprioritizeSubtree:()=>!1,prepareForCommit:()=>null,preparePortalMount(...e){},resetAfterCommit(){},shouldSetTextContent:()=>!1,clearContainer:()=>!1}),applyProps:t}}();function ce(e,t,{gl:r,size:o,mode:l=ie[1],events:c,onCreated:u,...h}={}){var d,p,f,m,g;o||(o={width:null!=(p=null==(f=t.parentElement)?void 0:f.clientWidth)?p:0,height:null!=(m=null==(g=t.parentElement)?void 0:g.clientHeight)?m:0});let v=ne.get(t),A=null==v?void 0:v.fiber,y=null==v?void 0:v.store,x=null==(d=y)?void 0:d.getState();if(A&&x){const e=x.internal.lastProps;void 0===h.dpr||_.equ(e.dpr,h.dpr)||x.setDpr(h.dpr),void 0===o||_.equ(e.size,o)||x.setSize(o.width,o.height);h.linear!==e.linear&&(he(t),A=void 0)}if(!A){const e=((e,t)=>{return(r=e)&&r.render?e:new n.WebGLRenderer({powerPreference:"high-performance",canvas:t,antialias:!0,alpha:!0,...e});var r})(r,t);h.vr&&(e.xr.enabled=!0,e.setAnimationLoop((e=>se(e,!0)))),y=((e,t,r,i)=>{const{gl:o,size:l,shadows:c=!1,linear:u=!1,flat:h=!1,vr:d=!1,orthographic:p=!1,frameloop:f="always",dpr:m=1,performance:g,clock:v=new n.Clock,raycaster:A,camera:y,onPointerMissed:x}=i;c&&(o.shadowMap.enabled=!0,"object"==typeof c?Object.assign(o.shadowMap,c):o.shadowMap.type=n.PCFSoftShadowMap),u||(h||(o.toneMapping=n.ACESFilmicToneMapping),o.outputEncoding=n.sRGBEncoding),"never"===f&&(v.stop(),v.elapsedTime=0);const b=(0,a.Z)(((a,s)=>{const l=new n.Raycaster,{params:c,...b}=A||{};e(l,{enabled:!0,...b,params:{...l.params,...c}},{});const w=y instanceof n.Camera,_=w?y:p?new n.OrthographicCamera(0,0,0,0,.1,1e3):new n.PerspectiveCamera(75,0,.1,1e3);function E(e){return Array.isArray(e)?Math.min(Math.max(e[0],window.devicePixelRatio),e[1]):e}w||(_.position.z=5,y&&e(_,y,{}),_.lookAt(0,0,0));const S=E(m),M=new n.Vector3,T=new n.Vector3;function C(e=s().camera,t=T,r=s().size){const{width:n,height:i}=r,a=n/i,o=e.getWorldPosition(M).distanceTo(t);if(L(e))return{width:n/e.zoom,height:i/e.zoom,factor:1,distance:o,aspect:a};{const t=e.fov*Math.PI/180,r=2*Math.tan(t/2)*o,s=r*(n/i);return{width:s,height:r,factor:n/s,distance:o,aspect:a}}}let I;const B=e=>a((t=>({performance:{...t.performance,current:e}})));return{gl:o,set:a,get:s,invalidate:()=>t(s()),advance:(e,t)=>r(e,t,s()),linear:u,flat:h,scene:F(new n.Scene),camera:_,raycaster:l,clock:v,mouse:new n.Vector2,vr:d,frameloop:f,onPointerMissed:x,performance:{current:1,min:.5,max:1,debounce:200,...g,regress:()=>{const e=s();I&&clearTimeout(I),e.performance.current!==e.performance.min&&B(e.performance.min),I=setTimeout((()=>B(s().performance.max)),e.performance.debounce)}},size:{width:0,height:0},viewport:{initialDpr:S,dpr:S,width:0,height:0,aspect:0,distance:0,factor:0,getCurrentViewport:C},setSize:(e,t)=>{const r={width:e,height:t};a((e=>({size:r,viewport:{...e.viewport,...C(_,T,r)}})))},setDpr:e=>a((t=>({viewport:{...t.viewport,dpr:E(e)}}))),events:{connected:!1},internal:{active:!1,priority:0,frames:0,lastProps:i,interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,subscribe:(e,t=0)=>(a((({internal:r})=>({internal:{...r,priority:r.priority+(t?1:0),subscribers:[...r.subscribers,{ref:e,priority:t}].sort(((e,t)=>e.priority-t.priority))}}))),()=>{a((({internal:r})=>({internal:{...r,priority:r.priority-(t?1:0),subscribers:r.subscribers.filter((t=>t.ref!==e))}})))})}}}));b.subscribe((()=>{const{camera:e,size:t,viewport:r,internal:i}=b.getState();i.lastProps.camera instanceof n.Camera||(L(e)?(e.left=t.width/-2,e.right=t.width/2,e.top=t.height/2,e.bottom=t.height/-2):e.aspect=t.width/t.height,e.updateProjectionMatrix(),e.updateMatrixWorld()),o.setPixelRatio(r.dpr),o.setSize(t.width,t.height)}),(e=>[e.viewport.dpr,e.size]),s.Z);const w=b.getState();return l&&w.setSize(l.width,l.height),b.subscribe((e=>t(e))),b})(le,ae,se,{gl:e,size:o,...h});const i=y.getState();i.get,A=oe.createContainer(y,ie.indexOf(l),!1,null),ne.set(t,{fiber:A,store:y}),c&&i.set({events:c(y)})}if(y&&A)return oe.updateContainer(i.createElement(ue,{store:y,element:e,onCreated:u,target:t}),A,null,(()=>{})),y;throw"Error creating root!"}function ue({store:e,element:t,onCreated:r,target:n}){return i.useEffect((()=>{const t=e.getState();t.set((e=>({internal:{...e.internal,active:!0}}))),null==t.events.connect||t.events.connect(n),r&&r(t)}),[]),i.createElement(D.Provider,{value:e},t)}function he(e,t){const r=ne.get(e),n=null==r?void 0:r.fiber;if(n){const i=null==r?void 0:r.store.getState();i&&(i.internal.active=!1),oe.updateContainer(null,n,null,(()=>{i&&setTimeout((()=>{var r,n,a;null==i.events.disconnect||i.events.disconnect(),null==(r=i.gl)||null==(n=r.renderLists)||null==n.dispose||n.dispose(),null==(a=i.gl)||null==a.forceContextLoss||a.forceContextLoss(),de(i),ne.delete(e),t&&t(e)}),500)}))}}function de(e){e.dispose&&"Scene"!==e.type&&e.dispose();for(const n in e){var t,r;null==(t=(r=n).dispose)||t.call(r),delete e[n]}}const pe=oe.act,fe=_.fun(Symbol)&&Symbol.for?Symbol.for("react.portal"):60106;function me(e,t,r,n=null){return{$$typeof:fe,key:null==n?null:""+n,children:e,containerInfo:F(t),implementation:r}}oe.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:"17.0.2"})},40417:(e,t,r)=>{"use strict";t._b=t.H7=t.LK=t.Kv=t.Mf=t.SE=t.N$=t.oI=t.$9=t.pT=t.fK=t.ej=t.hI=t.Wx=t.Sj=t.r3=t.ue=t.ZW=t.z5=t.Oq=t.P7=t.bS=t.N7=t.Hs=t.dV=t.oC=t.vA=t.ol=t.l$=t.sd=t.dK=t.V3=t.Bw=t.hW=t._o=t.b4=t.nu=t.wd=t.q4=void 0;var n=r(97657);Object.defineProperty(t,"q4",{enumerable:!0,get:function(){return n.VERSION}});var i=r(81183);Object.defineProperty(t,"wd",{enumerable:!0,get:function(){return i.CstParser}}),Object.defineProperty(t,"nu",{enumerable:!0,get:function(){return i.EmbeddedActionsParser}}),Object.defineProperty(t,"b4",{enumerable:!0,get:function(){return i.ParserDefinitionErrorType}}),Object.defineProperty(t,"_o",{enumerable:!0,get:function(){return i.EMPTY_ALT}});var a=r(88200);Object.defineProperty(t,"hW",{enumerable:!0,get:function(){return a.Lexer}}),Object.defineProperty(t,"Bw",{enumerable:!0,get:function(){return a.LexerDefinitionErrorType}});var s=r(58980);Object.defineProperty(t,"V3",{enumerable:!0,get:function(){return s.createToken}}),Object.defineProperty(t,"dK",{enumerable:!0,get:function(){return s.createTokenInstance}}),Object.defineProperty(t,"sd",{enumerable:!0,get:function(){return s.EOF}}),Object.defineProperty(t,"l$",{enumerable:!0,get:function(){return s.tokenLabel}}),Object.defineProperty(t,"ol",{enumerable:!0,get:function(){return s.tokenMatcher}}),Object.defineProperty(t,"vA",{enumerable:!0,get:function(){return s.tokenName}});var o=r(63670);Object.defineProperty(t,"oC",{enumerable:!0,get:function(){return o.getLookaheadPaths}});var l=r(3449);Object.defineProperty(t,"dV",{enumerable:!0,get:function(){return l.LLkLookaheadStrategy}});var c=r(27621);Object.defineProperty(t,"Hs",{enumerable:!0,get:function(){return c.defaultParserErrorProvider}});var u=r(34400);Object.defineProperty(t,"N7",{enumerable:!0,get:function(){return u.EarlyExitException}}),Object.defineProperty(t,"bS",{enumerable:!0,get:function(){return u.isRecognitionException}}),Object.defineProperty(t,"P7",{enumerable:!0,get:function(){return u.MismatchedTokenException}}),Object.defineProperty(t,"Oq",{enumerable:!0,get:function(){return u.NotAllInputParsedException}}),Object.defineProperty(t,"z5",{enumerable:!0,get:function(){return u.NoViableAltException}});var h=r(58232);Object.defineProperty(t,"ZW",{enumerable:!0,get:function(){return h.defaultLexerErrorProvider}});var d=r(93062);Object.defineProperty(t,"ue",{enumerable:!0,get:function(){return d.Alternation}}),Object.defineProperty(t,"r3",{enumerable:!0,get:function(){return d.Alternative}}),Object.defineProperty(t,"Sj",{enumerable:!0,get:function(){return d.NonTerminal}}),Object.defineProperty(t,"Wx",{enumerable:!0,get:function(){return d.Option}}),Object.defineProperty(t,"hI",{enumerable:!0,get:function(){return d.Repetition}}),Object.defineProperty(t,"ej",{enumerable:!0,get:function(){return d.RepetitionMandatory}}),Object.defineProperty(t,"fK",{enumerable:!0,get:function(){return d.RepetitionMandatoryWithSeparator}}),Object.defineProperty(t,"pT",{enumerable:!0,get:function(){return d.RepetitionWithSeparator}}),Object.defineProperty(t,"$9",{enumerable:!0,get:function(){return d.Rule}}),Object.defineProperty(t,"oI",{enumerable:!0,get:function(){return d.Terminal}});var p=r(93062);Object.defineProperty(t,"N$",{enumerable:!0,get:function(){return p.serializeGrammar}}),Object.defineProperty(t,"SE",{enumerable:!0,get:function(){return p.serializeProduction}}),Object.defineProperty(t,"Mf",{enumerable:!0,get:function(){return p.GAstVisitor}});var f=r(82688);Object.defineProperty(t,"Kv",{enumerable:!0,get:function(){return f.generateCstDts}}),t.LK=function(){console.warn("The clearCache function was 'soft' removed from the Chevrotain API.\n\t It performs no action other than printing this message.\n\t Please avoid using it as it will be completely removed in the future")};var m=r(77141);Object.defineProperty(t,"H7",{enumerable:!0,get:function(){return m.createSyntaxDiagramsCode}});var g=function(){throw new Error("The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\t\nSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0")};t._b=g},77141:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createSyntaxDiagramsCode=void 0;var n=r(97657);t.createSyntaxDiagramsCode=function(e,t){var r=void 0===t?{}:t,i=r.resourceBase,a=void 0===i?"https://unpkg.com/chevrotain@".concat(n.VERSION,"/diagrams/"):i,s=r.css,o=void 0===s?"https://unpkg.com/chevrotain@".concat(n.VERSION,"/diagrams/diagrams.css"):s;return'\n\x3c!-- This is a generated file --\x3e\n\n\n\n\n'+"\n\n")+"\n + \ No newline at end of file diff --git a/community/index.html b/community/index.html index 6bd2722..34c8003 100644 --- a/community/index.html +++ b/community/index.html @@ -5,7 +5,7 @@ Join the community | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Join the community

The Codex project aims to create a decentralised durability engine that allows persisting data in p2p networks. In other words, it allows storing files and data with predictable durability guarantees for later retrieval.

WARNING: This project is under active development and is considered pre-alpha.

Welcome to the Codex Community! Whether you are interested in building with Codex, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone.

- + \ No newline at end of file diff --git a/cryptographic-data-security/index.html b/cryptographic-data-security/index.html index a20b474..51be648 100644 --- a/cryptographic-data-security/index.html +++ b/cryptographic-data-security/index.html @@ -5,7 +5,7 @@ Codex | Secure Your Data with Codex's Cryptographic Techniques | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Secure Your Data with Codex's Cryptographic Techniques

Codex leverages modern cryptographic techniques to ensure data security and privacy.

Overview

The Challenge

Ensuring data security and privacy is critical, but traditional methods often fall short.

Our Solution

Codex leverages advanced cryptographic techniques to secure your data, ensuring privacy and integrity.

How it works

Codex's cryptographic solutions ensure that your data remains secure and private, overcoming the limitations of traditional methods.

Why Choose Codex

1

Advanced cryptographic techniques

2

Enhanced data security

3

Improved privacy

Frequently Asked Questions

Codex uses advanced cryptographic techniques, such as ZK-proofs, to secure data, verify storage without revealing the data itself, and ensure privacy and integrity across the network.
Codex's cryptographic solutions provide unmatched data security, privacy, and integrity, ensuring your data remains protected against unauthorised access and tampering.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/data-durability-engine/index.html b/data-durability-engine/index.html index fff0cb7..4196574 100644 --- a/data-durability-engine/index.html +++ b/data-durability-engine/index.html @@ -5,7 +5,7 @@ Codex | Unparalleled Data Durability with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Unparalleled Data Durability with Codex

Codex offers a decentralised storage network focused on data durability and censorship resistance.

Overview

The Challenge

Ensuring data durability and resistance to censorship is critical for data integrity and accessibility.

Our Solution

Codex provides a decentralised storage network that focuses on data durability and censorship resistance, ensuring your data remains safe and accessible.

How it works

Codex's decentralised storage network uses advanced technologies to ensure data durability and resistance to censorship, protecting your data from loss and unauthorised access.

Why Choose Codex

1

Decentralised storage network

2

Enhanced data durability

3

Censorship-resistant storage

Frequently Asked Questions

Codex ensures data durability through automated repair mechanisms and ZK-based remote auditing, maintaining data integrity and availability across the decentralised network.
Codex offers a censorship-resistant storage solution that protects data from loss and unauthorised access, ensuring it remains secure and accessible over time.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/decentralised-cloud-storage/index.html b/decentralised-cloud-storage/index.html index 298f68d..40b88e0 100644 --- a/decentralised-cloud-storage/index.html +++ b/decentralised-cloud-storage/index.html @@ -5,7 +5,7 @@ Codex | The Decentralised Alternative to Cloud Storage | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

The Decentralised Alternative to Cloud Storage

Codex provides a censorship-resistant, decentralised storage solution, mitigating risks associated with centralised cloud providers.

Overview

The Challenge

The overreliance on centralised cloud storage providers in Web3 threatens censorship resistance by introducing a single point of failure susceptible to security breaches or coercion.

Our Solution

Codex provides a censorship-resistant, decentralised storage solution, mitigating risks associated with centralised cloud providers.

How it works

Codex's decentralised storage solution eliminates the vulnerabilities of centralised cloud storage, ensuring your data remains secure and resistant to censorship.

Why Choose Codex

1

Decentralised storage

2

Enhanced security

3

Censorship resistance

Frequently Asked Questions

Codex eliminates the risks of centralisation by offering a storage solution that distributes data across a decentralised network, removing single points of failure.
Codex enhances security by ensuring your data is stored across multiple nodes, reducing the risk of breaches and ensuring data persistence.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/decentralised-content-distribution/index.html b/decentralised-content-distribution/index.html index e64892b..de28673 100644 --- a/decentralised-content-distribution/index.html +++ b/decentralised-content-distribution/index.html @@ -5,7 +5,7 @@ Codex | Decentralised Content Distribution with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Decentralised Content Distribution with Codex

Codex offers a decentralised content distribution network, ensuring efficient and secure content delivery.

Overview

The Challenge

Traditional content distribution networks often face challenges with efficiency, security, and centralisation, leading to potential bottlenecks and vulnerabilities.

Our Solution

Codex provides a decentralised content distribution network, ensuring efficient and secure delivery of your content.

How it works

Codex's decentralised content distribution network ensures that your content is delivered efficiently and securely, overcoming the limitations of traditional networks.

Why Choose Codex

1

Decentralised network

2

Efficient content delivery

3

Enhanced security

Frequently Asked Questions

Codex enhances content distribution efficiency by utilising a decentralised network that optimises data delivery paths, reducing latency and increasing content availability.
Codex ensures secure content distribution by decentralising data storage and delivery, reducing the risk of centralised attacks and data tampering.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/decentralised-database/index.html b/decentralised-database/index.html index 35314a6..a06b047 100644 --- a/decentralised-database/index.html +++ b/decentralised-database/index.html @@ -5,7 +5,7 @@ Codex | Decentralise Your Database with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Decentralise Your Database with Codex

Codex offers a secure and decentralised way to maintain your database.

Overview

The Challenge

Traditional databases often face challenges with centralisation, security, and efficiency, leading to potential vulnerabilities and inefficiencies.

Our Solution

Codex provides a decentralised way to store your database, ensuring secure, efficient, and reliable data management.

How it works

Codex's decentralised database solution ensures that your data is managed securely and efficiently, overcoming the limitations of traditional databases.

Why Choose Codex

1

Decentralised database

2

Enhanced security

3

Improved efficiency

Frequently Asked Questions

Codex improves database security by decentralising data storage, reducing the risk of breaches, and ensuring data integrity through advanced cryptographic techniques.
Codex offers secure, efficient, and scalable database management, overcoming the limitations of traditional centralised databases.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/decentralised-storage-marketplace/index.html b/decentralised-storage-marketplace/index.html index 1aff8f1..c0f81f3 100644 --- a/decentralised-storage-marketplace/index.html +++ b/decentralised-storage-marketplace/index.html @@ -5,7 +5,7 @@ Codex | Join the Codex Storage Marketplace | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Join the Codex Storage Marketplace

Codex offers a secure and efficient marketplace for storage providers, allowing you to rent or buy storage space.

Overview

The Challenge

Traditional storage marketplaces often face challenges with security, efficiency, and centralisation, leading to potential vulnerabilities and inefficiencies.

Our Solution

Codex provides a decentralised storage marketplace, ensuring secure and efficient transactions for renting or buying storage space.

How it works

Codex's decentralised storage marketplace ensures that transactions are secure and efficient, overcoming the limitations of traditional marketplaces.

Why Choose Codex

1

Secure marketplace

2

Efficient transactions

3

Decentralised platform

Frequently Asked Questions

Codex ensures secure transactions in its marketplace by using smart contracts and decentralised verification processes, which protect participants from fraud and ensure transparency.
Codex offers a decentralised platform for renting and buying storage space, ensuring efficient transactions and reducing the risks associated with centralised storage marketplaces.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/durability-focused-storage/index.html b/durability-focused-storage/index.html index 40b4a87..264d554 100644 --- a/durability-focused-storage/index.html +++ b/durability-focused-storage/index.html @@ -5,7 +5,7 @@ Codex | Unmatched Data Durability | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Codex: Unmatched Data Durability

Codex focuses on durability, ensuring your data will not get lost.

Overview

The Challenge

Ensuring data durability is critical to prevent data loss and maintain data integrity over time.

Our Solution

Codex offers advanced durability features, ensuring your data remains safe and intact.

How it works

Codex's advanced durability features ensure that your data remains safe and intact, overcoming the challenges of traditional storage solutions.

Why Choose Codex

1

Unmatched data durability

2

Enhanced data integrity

3

Prevent data loss

Frequently Asked Questions

Codex ensures data durability using advanced erasure coding, automated repair mechanisms, and remote auditing, which protect data against loss and corruption.
Codex provides unmatched data durability, ensuring that your data is safeguarded against loss and remains accessible even in the event of node failures.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/efficient-decentralised-storage/index.html b/efficient-decentralised-storage/index.html index f54f3c9..d218b7d 100644 --- a/efficient-decentralised-storage/index.html +++ b/efficient-decentralised-storage/index.html @@ -5,7 +5,7 @@ Codex | Efficient and Cost-Effective Storage with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Efficient and Cost-Effective Storage with Codex

Codex focuses on efficiency, providing cost-effective storage solutions.

Overview

The Challenge

Traditional storage solutions often face challenges with efficiency and cost-effectiveness, leading to potential inefficiencies and higher costs.

Our Solution

Codex provides efficient and cost-effective decentralised storage solutions, ensuring you get the best value.

How it works

Codex's efficient and cost-effective storage solutions guarantee that you get the best value, overcoming the limitations of traditional storage solutions.

Why Choose Codex

1

Cost-effective storage

2

Enhanced efficiency

3

Better value

Frequently Asked Questions

Codex improves storage efficiency by optimising data dispersal and retrieval processes, reducing redundancy, and lowering storage costs across the decentralised network.
Codex offers cost-effective storage solutions that provide high efficiency and data security, ensuring you get the best value while maintaining data integrity.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/future-of-dsns/index.html b/future-of-dsns/index.html index 9063b7a..e5f7976 100644 --- a/future-of-dsns/index.html +++ b/future-of-dsns/index.html @@ -5,7 +5,7 @@ Codex | Discover the New Type of DSN with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Discover the New Type of DSN with Codex

Codex is revolutionising decentralised storage networks, offering a new type of DSN.

Overview

The Challenge

Traditional decentralised storage networks often face challenges with scalability, efficiency, and security, leading to potential vulnerabilities.

Our Solution

Codex offers a new type of decentralised storage network, overcoming the limitations of traditional DSNs.

How it works

Codex's new type of decentralised storage network ensures that your data is managed efficiently and securely, overcoming the limitations of traditional DSNs.

Why Choose Codex

1

Revolutionary DSN

2

Enhanced scalability

3

Improved efficiency

Frequently Asked Questions

Codex revolutionises decentralised storage networks by offering a scalable, efficient, and secure platform that overcomes the limitations of traditional DSNs, such as centralisation and inefficiency.
Codex provides enhanced scalability, efficiency, and robust security, making it a pioneering solution in decentralised storage.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/index.html b/index.html index 43dc4d9..2d0c6e8 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Defend against data censorship with Codex | Codex - + @@ -17,7 +17,7 @@ ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Defend against data censorship with Codex

Codex is a durable, decentralised data storage protocol, created so the world community can preserve its most important knowledge without risk of censorship.

Codex attributes

1

Durable

Codex implements erasure coding to efficiently ensure data is always available without the storage cost of replication. Through sublinear sampling, Codex detects data corruption throughout the network, allowing for repairs to be made before loss is permanent.

2

Censorship resistant

The Codex network is designed to withstand DDoS attacks, data corruption, and even the shutdown of a significant number of nodes. Access to your data remains during these otherwise catastrophic events.

3

Decentralised

Codex implements protocol constructs that incentivize wide participation of data storage providers, both small and large, thus ensuring a robust network resistant to censorship and external attack.

4

Accessible

Participating in the Codex network is highly accessible thanks to its permissionless nature, bandwidth usage optimizations like its "lazy repair" recovery system, and lightweight ZK-based remote auditing.

Logos Collective

Codex is powering the data storage layer of the Logos technology stack. Logos is a grassroots movement, building the infrastructure for trust-minimised, corruption-resistant governing services and social institutions for peaceful people worldwide.

Learn more about our ambitious vision.

Development Roadmap

Codex is currently in its first proof-of-concept iteration and aims to release its alpha version, Katana, before the end of Q4 2023.

2021
01

Codex project begins

2021
02

Work on first Client prototype built from Bitswap, IPFS and Nitro

2021
03

Begin primitive Marketplace v1.0 interactions for pricing block exchanging

2021
04

Research begins for remote verification and erasure coding methods

2021
05

Research of Marketplace mechanics in other decentralized storage protocols

2021
06

PoR and erasure coding modeling and prototyping

2022
07

Implementation of PoR and erasure coding into Codex client

2022
08

Added first implementation of DHT and discovery v5 methods

2022
09

REST APIs added to Marketplace for Sales Availability

2022
10

Demo of first proof of concept Codex client: PoC-1 (Dagger)

2022
11

Marketplace v2.0 redesign

2022
12

Research into zkSNARK-based methods of proof aggregation to replace PoR

2022
13

Marketplace v2.0 redesign

2023
14

Demo of Codex client PoC-2 (Scimitar)

2023
15

Research into L2s, systems testing and integration of Marketplace into Client

2023
16

Demo of third proof of concept Codex client PoC-3 (Longsword): fast erasure coding, Marketplace, ZK remote auditing

2023
17

Codex MVP Version 1.0 (Katana): fast erasure coding, Marketplace, ZK remote auditing, repair

2024
18

Develop Codex L2 aggregator node architecture

2024
19

Research into payment channels and bandwidth incentives

2024
20

Implementation of incentives: payment channels, bandwidth incentives

2024
21

Enable repair using remote auditing scheme and incentive mechanisms

2025
22

Codex Version 2.0 (Wakizashi)

2025
23

Public mainnet launch

2025
24

Multi-client implementations in Rusn and Go

Team

Dmitriy

Dmitriy

Slava

Slava

Ben

Ben

Jaremy

Jaremy

Tomasz

Tomasz

Mark

Mark

Eric

Eric

Adam

Adam

Csaba

Csaba

Leo

Leo

Balazs

Balazs

Jessie

Jessie

Giuliano

Giuliano

Want to get involved with Codex? Join the Discord community.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/join-codex-community/index.html b/join-codex-community/index.html index 3f29579..dc44a26 100644 --- a/join-codex-community/index.html +++ b/join-codex-community/index.html @@ -5,7 +5,7 @@ Codex | Join the Mission-Driven Codex Community | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Join the Mission-Driven Codex Community

Codex is a well-backed project with a solid, experienced team and significant potential.

Overview

The Challenge

Revolutionising storage requires expertise, backing, and a strong mission-driven approach.

Our Solution

Codex is a mission-driven project, well-backed by experts, aiming to revolutionise decentralised storage.

How it works

Codex's mission-driven approach, backed by experts, ensures that we are on the path to revolutionising storage, providing unmatched potential.

Why Choose Codex

1

Mission-driven project

2

Backed by experts

3

Limitless potential

Frequently Asked Questions

Codex's mission is to revolutionise decentralised storage by providing a secure, durable, and censorship-resistant platform that addresses the challenges of centralisation in data storage.
Codex is a well-backed project with strong financial support and a team of experienced professionals. This backing ensures the project has the resources and expertise necessary to achieve its goals in the decentralised storage space.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/join-us/index.html b/join-us/index.html index 56d5969..86cf4a4 100644 --- a/join-us/index.html +++ b/join-us/index.html @@ -5,7 +5,7 @@ Join Us | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));} - + \ No newline at end of file diff --git a/news/index.html b/news/index.html index ed633e4..b3a93fd 100644 --- a/news/index.html +++ b/news/index.html @@ -5,7 +5,7 @@ **Codex R&D Update for Week of Jan 12, 2024** | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Codex R&D Update for Week of Jan 12, 2024

The Codex team continues to make progress with various initiatives to wrap up the demo for the Q1/Q2 public testnet release. An internal testnet has been running for the past few weeks and has been used to test the latest version of Codex and can be accessed using the Codex Testnet Starter documentation.

Ongoing and new lines of research and development will soon begin in preparation for the next version of Codex used for the mainnet release.. Here are the updates from different team members and their ongoing work.

Development

Development is currently broken into three distinct teams:

  1. Client, Testing, and Infrastructure
  2. Marketplace
  3. Research

The different teams have actively moving on various fronts. The following are their team updates to various ongoing Epics.

Client

Epic: Nim Improvements

Completed:

Ongoing:

Epic: Wiring the Proving System

Completed:

Ongoing:

Epic: Improve Client Stability

Completed:

Ongoing:

Marketplace

Epic: End-to-end Testing

Completed:

Ongoing:

  • Continue work on updating nim-ethers to support json-rpc breaking changes
  • Continue work on supporting json-rpc breaking changes and pulling out utils/json to its own lib
  • Integrate contract changes into nim-codex
  • Look into removing wait For in integration tests
  • Review and clean up nim-ethers changes
    • Try to figure out a cleaner way to handle exceptions instead of catching all CatchableErrors
  • Start tweaking the nim-json api to normalize both serialize and deserialize pragmas, with modes: OptOut, OptIn, and Strict
  • WIP on adding PATCH call for Availabilities

Research

2024 R&D Goals

  1. Proving system and aggregation improvements (folding or lookups)
  2. Aggregator/validator design
  3. DHT improvements
  4. Tokenomics and incentive design
  5. Bandwidth incentives
  6. Dynamic data (appendable data)

Completed:

  • Frobenius endomorphism & pairing implementation
  • Review the Solidity Groth16 verifier

Ongoing:

  • DAS simulator improvements to cover more diffusion models
  • Start DAS sample query mechanism design
  • Proof recursion ideation

Codex R&D Update for Week of December 11, 2023

The Codex dev team is moving forward rapidly. The organisation’s development efforts mainly focus on launching the beta testnet by the end of the year. Following are some recent research and development highlights.

Development

Development is currently broken into three distinct sub-teams:

  1. Client, Testing, and Infrastructure
  2. Marketplace
  3. Research

Below are summaries of each sub-team.

Client

For the client, the team is focused on these primary tasks: block merkelization, Poseidon2 Nim-poseidon2 implementation, and wiring the proving system.

The client is the software that runs on the user’s local machine. It has all the components to handle the endpoints integration, data, block management, erasure coding, and interactions with the marketplace.

See currently exposed endpoints for the Codex client (conform to OpenAPI specification) at: https://api.codex.storage

Active work is ongoing to integrate the above Codex client endpoints to be accessible via the Codex frontend written in React here: https://github.com/codex-storage/codex-frontend

Epic: Block Merkelization

For block merkelization, the team is focused on reducing metadata overhead. They are optimising the structure for handling and indexing block data. This effort requires changes in block Merkelization. These are the most recent efforts, which can be publicly viewed on GitHub:

Epic: nim-poseidon2

Poseidon2 is a faster version of the original Poseidon hash function used in zero-knowledge systems (zk). Nim-Poseidon2 is the Nim implementation the Codex team is developing to work efficiently and effectively with the Codex client.

Epic: Wiring the Proving System

The proving system comprises a SNARK circuit that generates the proof. A Storage Provider must also submit the marketplace contract to prove it faithfully stores the associated slot data. Additional components, such as the trusted setup ceremony, hash functions, and the multiple manifests generated for different purposes, are included in the proving system. The team is working on ensuring the proving system is built out and functions to successfully remote audit the slot data by validators. These stories represent the most recent efforts:

Testing and Infrastructure

The testing and infrastructure group is preparing to deploy tens or hundreds of nodes and efficiently monitor the activity. This is crucial for a successful launch of the testnet. The following are the epics and stories of development for this process. The main areas of concern are ensuring the testnet is set up and configured properly. It will also include ensuring the client maintains a suitable level of stability.

Epic: 2023 Testnet setup

  • Configure TCP/UDP port forwarding for Testnet deployment
  • Configure Pods placement for D/C-Tests runners and tests workload
  • Check available options to build a service to get Codex Public IP for announcement
  • Deploy Codex Bootstrap nodes for Testnet
  • Deploy Geth Bootstrap nodes for Testnet

Epic: Improve Client Stability

Marketplace

The marketplace is a smart contract deployed on a blockchain. This smart contract defines all the logic required for users to ask for storage, store collaterals, assign storage nodes to user datasets, settle payments, deal with storage failures, storage provider proof issuance, and all the contract interactions.

Epic: End-to-end Testing

Research

Current research is mostly halted due to focus on implementing past research for the imminent launch of the testnet. Ongoing efforts include:

Near-term:

  • Ongoing “Groth16 prover” research and analysis.
  • Details for the functionality of the current proof system
  • Hash and Merkle tree conventions to make them safe
  • Continuing research for Codex’s use of erasure coding

Long-term:

  • Figuring out how to aggregate proofs (proof compression) for proving system
  • Determining the correct proof system for Codex
- + \ No newline at end of file diff --git a/persistent-file-sharing/index.html b/persistent-file-sharing/index.html index 59a32fc..11093eb 100644 --- a/persistent-file-sharing/index.html +++ b/persistent-file-sharing/index.html @@ -5,7 +5,7 @@ Codex | Persistent and Durable File Sharing | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Persistent and Durable File Sharing

Codex offers cloudless file-sharing solutions, combining persistence and data durability.

Overview

The Challenge

Traditional file-sharing solutions often lack data persistence and durability, leading to potential data loss and unreliability.

Our Solution

Codex offers Cloudess file-sharing solutions, combining persistence and data durability to ensure your files are always available.

How it works

Codex's cloudless file-sharing solution ensures that your files remain accessible and durable, overcoming the limitations of traditional file-sharing methods. “Cloudless” means we do not store your data in warehouses that have a single point of failure. Instead, your data is stored across a decentralised network.

Why Choose Codex

1

Durable file sharing

2

Persistent data storage

3

Enhanced reliability

Frequently Asked Questions

Codex ensures file persistence using advanced erasure-coding and dispersal techniques that maintain data integrity and availability across multiple nodes.
Codex provides durable and reliable file-sharing solutions, ensuring your files remain accessible and protected from data loss.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/privacy-policy/index.html b/privacy-policy/index.html index b7094d5..028fc2a 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -5,7 +5,7 @@ Privacy Policy | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Privacy Policy

Last updated: 9 February 2024

This Privacy Policy is intended to inform users of our approach to privacy in respect of this website ("Website"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.

1) Who we are

For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.

2) We limit the collection and processing of personal data from your use of the Website

We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose.

In this regard, we collect and process the following personal data from your use of the Website:

  • IP address: As part of such use of the Website and from our use of Fathom Analytics, we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time.

  • Fathom Analytics: We note that we make use of Fathom Analytics, which you can read more about here: https://usefathom.com/. In short, Fathom Analytics is an alternative to Google Analytics, that doesn’t compromise visitor privacy for data. Fathom Analytics collects trends and insights, not personal details about specific website visitors. Fathom Analytics offers simple traffic insights such as top pages, top referrers, bounce rate, and average time people spend on a site.

3) Third party processing of personal data

In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply.

We would however like to draw your attention to the following:

  • Youtube: The Website may embed videos from Youtube, a service provided by Google LLC, using Youtube’s privacy-enhanced mode. When you interact with such videos, Youtube may place cookies on your personal device. The cookies do not directly identify individual users and YouTube will not store information to personalise your experience unless you are logged in to a Google account. We do not have any control over these cookies set by Youtube and it is recommended that you review YouTube’s embedding videos information page.

4) Security measures we take in respect of the Website

As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.

5) Exporting data outside the European Union and Switzerland

We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.

6) Your choices and rights

As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to:

  • Ask us to correct or update your personal data (where reasonably possible);

  • Ask us to remove your personal data from our systems;

  • Ask us for a copy of your personal data, which may also be transferred to another data controller at your request;

  • Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent;

  • Object to the processing of your personal data; and

  • File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.

On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.

8) This Privacy Policy might change

We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.

9) Contact information

To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

- + \ No newline at end of file diff --git a/reliable-data-backup/index.html b/reliable-data-backup/index.html index 8799a62..b98c1a7 100644 --- a/reliable-data-backup/index.html +++ b/reliable-data-backup/index.html @@ -5,7 +5,7 @@ Codex | Reliable Data Archiving and Backup with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Reliable Data Archiving and Backup with Codex

Codex offers durable and persistent data archiving and backup solutions, ensuring your data remains safe.

Overview

The Challenge

Data archiving and backup are critical for data preservation, but traditional solutions often lack durability and persistence, leading to potential data loss.

Our Solution

Codex provides reliable data archiving and backup solutions, ensuring your data remains durable and persistent.

How it works

Codex's innovative archiving and backup solutions ensure that your data remains safe, durable, and accessible, overcoming the limitations of traditional methods.

Why Choose Codex

1

Reliable data archiving

2

Durable backup solutions

3

Enhanced data preservation

Frequently Asked Questions

Codex uses automated repair mechanisms and remote auditing to maintain data durability, ensuring that archived and backup data remains intact and accessible over time.
Codex provides reliable and persistent backup solutions, ensuring that your data is safeguarded against loss and remains available when needed.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/search-index.json b/search-index.json index 971a888..9e0a2d7 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"Description and architecture","u":"/about/architect","b":["About Codex"]},{"i":7,"t":"Development roadmap","u":"/about/roadmap","b":["About Codex"]},{"i":14,"t":"Join the community","u":"/community","b":["Community"]},{"i":16,"t":"About Codex","u":"/about/","b":["About Codex"]},{"i":22,"t":"Frequently asked questions","u":"/about/faq","b":["About Codex"]},{"i":24,"t":"Codex R&D Update for Week of Jan 12, 2024","u":"/news","b":[]},{"i":64,"t":"Privacy Policy","u":"/privacy-policy","b":[]},{"i":84,"t":"Security","u":"/security","b":[]},{"i":86,"t":"Core contributors","u":"/about/team","b":["About Codex"]},{"i":88,"t":"Current job openings","u":"/join-us","b":[]},{"i":90,"t":"Terms of Use","u":"/terms","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,2.25,1,2.25]],["t/7",[2,2.25,3,2.25]],["t/14",[4,2.25,5,2.25]],["t/16",[6,2.071]],["t/22",[7,1.906,8,1.906,9,1.906]],["t/24",[6,0.892,10,1.183,11,1.183,12,1.183,13,1.183,14,1.183,15,1.183]],["t/64",[16,2.25,17,2.25]],["t/84",[18,2.745]],["t/86",[19,2.25,20,2.25]],["t/88",[21,1.906,22,1.906,23,1.906]],["t/90",[24,2.25,25,2.25]]],"invertedIndex":[["12",{"_index":14,"t":{"24":{"position":[[33,3]]}}}],["2024",{"_index":15,"t":{"24":{"position":[[37,4]]}}}],["architectur",{"_index":1,"t":{"1":{"position":[[16,12]]}}}],["ask",{"_index":8,"t":{"22":{"position":[[11,5]]}}}],["codex",{"_index":6,"t":{"16":{"position":[[6,5]]},"24":{"position":[[0,5]]}}}],["commun",{"_index":5,"t":{"14":{"position":[[9,9]]}}}],["contributor",{"_index":20,"t":{"86":{"position":[[5,12]]}}}],["core",{"_index":19,"t":{"86":{"position":[[0,4]]}}}],["current",{"_index":21,"t":{"88":{"position":[[0,7]]}}}],["descript",{"_index":0,"t":{"1":{"position":[[0,11]]}}}],["develop",{"_index":2,"t":{"7":{"position":[[0,11]]}}}],["frequent",{"_index":7,"t":{"22":{"position":[[0,10]]}}}],["jan",{"_index":13,"t":{"24":{"position":[[29,3]]}}}],["job",{"_index":22,"t":{"88":{"position":[[8,3]]}}}],["join",{"_index":4,"t":{"14":{"position":[[0,4]]}}}],["open",{"_index":23,"t":{"88":{"position":[[12,8]]}}}],["polici",{"_index":17,"t":{"64":{"position":[[8,6]]}}}],["privaci",{"_index":16,"t":{"64":{"position":[[0,7]]}}}],["question",{"_index":9,"t":{"22":{"position":[[17,9]]}}}],["r&d",{"_index":10,"t":{"24":{"position":[[6,3]]}}}],["roadmap",{"_index":3,"t":{"7":{"position":[[12,7]]}}}],["secur",{"_index":18,"t":{"84":{"position":[[0,8]]}}}],["term",{"_index":24,"t":{"90":{"position":[[0,5]]}}}],["updat",{"_index":11,"t":{"24":{"position":[[10,6]]}}}],["us",{"_index":25,"t":{"90":{"position":[[9,3]]}}}],["week",{"_index":12,"t":{"24":{"position":[[21,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Incentivized decentralisation","u":"/about/architect","h":"#incentivized-decentralisation","p":1},{"i":5,"t":"Network architecture","u":"/about/architect","h":"#network-architecture","p":1},{"i":8,"t":"Releases","u":"/about/roadmap","h":"#releases","p":7},{"i":10,"t":"Milestones","u":"/about/roadmap","h":"#milestones","p":7},{"i":12,"t":"Roadmap rationale","u":"/about/roadmap","h":"#roadmap-rationale","p":7},{"i":18,"t":"Motive","u":"/about/","h":"#motive","p":16},{"i":20,"t":"Decentralising data storage","u":"/about/","h":"#decentralising-data-storage","p":16},{"i":26,"t":"Development","u":"/news","h":"","p":24},{"i":28,"t":"Client","u":"/news","h":"","p":24},{"i":29,"t":"Epic: Nim Improvements","u":"/news","h":"#epic-nim-improvements","p":24},{"i":31,"t":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system","p":24},{"i":33,"t":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability","p":24},{"i":35,"t":"Marketplace","u":"/news","h":"","p":24},{"i":36,"t":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing","p":24},{"i":38,"t":"Research","u":"/news","h":"","p":24},{"i":40,"t":"Codex R&D Update for Week of December 11, 2023","u":"/news","h":"","p":24},{"i":42,"t":"Development","u":"/news","h":"","p":24},{"i":44,"t":"Client","u":"/news","h":"","p":24},{"i":46,"t":"Epic: Block Merkelization","u":"/news","h":"#epic-block-merkelization","p":24},{"i":48,"t":"Epic: nim-poseidon2","u":"/news","h":"#epic-nim-poseidon2","p":24},{"i":50,"t":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system-1","p":24},{"i":52,"t":"Testing and Infrastructure","u":"/news","h":"","p":24},{"i":54,"t":"Epic: 2023 Testnet setup","u":"/news","h":"#epic-2023-testnet-setup","p":24},{"i":56,"t":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability-1","p":24},{"i":58,"t":"Marketplace","u":"/news","h":"","p":24},{"i":60,"t":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing-1","p":24},{"i":62,"t":"Research","u":"/news","h":"","p":24},{"i":66,"t":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":64},{"i":68,"t":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":64},{"i":70,"t":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":64},{"i":72,"t":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":64},{"i":74,"t":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":64},{"i":76,"t":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":64},{"i":78,"t":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":64},{"i":80,"t":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":64},{"i":82,"t":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":64},{"i":92,"t":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":90},{"i":94,"t":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":90},{"i":96,"t":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":90},{"i":98,"t":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":90},{"i":100,"t":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":90},{"i":102,"t":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":90},{"i":104,"t":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":90},{"i":106,"t":"8) Modifications","u":"/terms","h":"#8-modifications","p":90},{"i":108,"t":"9) Governing law","u":"/terms","h":"#9-governing-law","p":90},{"i":110,"t":"10) Disputes","u":"/terms","h":"#10-disputes","p":90},{"i":112,"t":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":90}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,4.004,1,3.414]],["t/5",[2,4.004,3,4.004]],["t/8",[4,4.759]],["t/10",[5,4.759]],["t/12",[6,4.004,7,4.004]],["t/18",[8,4.759]],["t/20",[1,2.946,9,2.36,10,3.456]],["t/26",[11,4.058]],["t/28",[12,3.25]],["t/29",[13,1.515,14,2.946,15,2.611]],["t/31",[13,1.333,16,2.591,17,2.591,18,2.591]],["t/33",[12,2.076,13,1.333,15,2.296,19,2.591]],["t/35",[20,4.058]],["t/36",[13,1.333,21,3.706,22,2.296]],["t/38",[23,4.058]],["t/40",[24,2.233,25,2.233,26,2.233,27,2.233,28,2.233,29,1.904,30,1.904]],["t/42",[11,4.058]],["t/44",[12,3.25]],["t/46",[13,1.515,31,3.456,32,3.456]],["t/48",[13,1.515,14,2.946,33,3.456]],["t/50",[13,1.333,16,2.591,17,2.591,18,2.591]],["t/52",[22,3.025,34,4.004]],["t/54",[13,1.333,30,2.591,35,3.039,36,3.039]],["t/56",[12,2.076,13,1.333,15,2.296,19,2.591]],["t/58",[20,4.058]],["t/60",[13,1.333,21,3.706,22,2.296]],["t/62",[23,4.058]],["t/66",[37,4.058]],["t/68",[9,1.401,38,1.749,39,1.749,40,2.051,41,1.749,42,1.749,43,1.749,44,1.401]],["t/70",[9,1.673,41,2.088,42,2.088,45,2.088,46,1.851,47,1.851]],["t/72",[44,1.673,48,2.088,49,2.449,50,2.449,51,2.449,52,2.449]],["t/74",[9,1.525,53,1.904,54,2.233,55,2.233,56,2.233,57,2.233,58,2.233]],["t/76",[59,2.946,60,3.456,61,2.946]],["t/78",[46,2.296,47,2.296,62,2.591,63,2.591]],["t/80",[64,2.591,65,3.039,66,3.039,67,3.039]],["t/82",[68,2.946,69,3.456,70,3.456]],["t/92",[37,4.058]],["t/94",[38,3.414,71,4.004]],["t/96",[45,2.591,72,3.039,73,3.039,74,3.039]],["t/98",[48,2.591,61,2.591,75,3.039,76,3.039]],["t/100",[44,1.853,46,2.05,47,2.05,53,2.313,63,2.313]],["t/102",[39,2.946,59,2.946,77,3.456]],["t/104",[62,3.414,78,4.004]],["t/106",[64,3.414,79,4.004]],["t/108",[68,2.946,80,3.456,81,3.456]],["t/110",[82,4.004,83,4.004]],["t/112",[29,2.591,43,2.591,44,2.076,84,3.039]]],"invertedIndex":[["1",{"_index":37,"t":{"66":{"position":[[0,2]]},"92":{"position":[[0,2]]}}}],["10",{"_index":82,"t":{"110":{"position":[[0,3]]}}}],["11",{"_index":29,"t":{"40":{"position":[[38,3]]},"112":{"position":[[0,3]]}}}],["2",{"_index":38,"t":{"68":{"position":[[0,2]]},"94":{"position":[[0,2]]}}}],["2023",{"_index":30,"t":{"40":{"position":[[42,4]]},"54":{"position":[[6,4]]}}}],["3",{"_index":45,"t":{"70":{"position":[[0,2]]},"96":{"position":[[0,2]]}}}],["4",{"_index":48,"t":{"72":{"position":[[0,2]]},"98":{"position":[[0,2]]}}}],["5",{"_index":53,"t":{"74":{"position":[[0,2]]},"100":{"position":[[0,2]]}}}],["6",{"_index":59,"t":{"76":{"position":[[0,2]]},"102":{"position":[[0,2]]}}}],["7",{"_index":62,"t":{"78":{"position":[[0,2]]},"104":{"position":[[0,2]]}}}],["8",{"_index":64,"t":{"80":{"position":[[0,2]]},"106":{"position":[[0,2]]}}}],["9",{"_index":68,"t":{"82":{"position":[[0,2]]},"108":{"position":[[0,2]]}}}],["architectur",{"_index":3,"t":{"5":{"position":[[8,12]]}}}],["block",{"_index":31,"t":{"46":{"position":[[6,5]]}}}],["chang",{"_index":67,"t":{"80":{"position":[[29,6]]}}}],["choic",{"_index":60,"t":{"76":{"position":[[8,7]]}}}],["client",{"_index":12,"t":{"28":{"position":[[0,6]]},"33":{"position":[[14,6]]},"44":{"position":[[0,6]]},"56":{"position":[[14,6]]}}}],["codex",{"_index":24,"t":{"40":{"position":[[0,5]]}}}],["collect",{"_index":40,"t":{"68":{"position":[[16,10]]}}}],["contact",{"_index":69,"t":{"82":{"position":[[3,7]]}}}],["data",{"_index":9,"t":{"20":{"position":[[15,4]]},"68":{"position":[[54,4]]},"70":{"position":[[38,4]]},"74":{"position":[[13,4]]}}}],["decemb",{"_index":28,"t":{"40":{"position":[[29,8]]}}}],["decentralis",{"_index":1,"t":{"3":{"position":[[13,16]]},"20":{"position":[[0,14]]}}}],["develop",{"_index":11,"t":{"26":{"position":[[0,11]]},"42":{"position":[[0,11]]}}}],["disclaim",{"_index":71,"t":{"94":{"position":[[3,11]]}}}],["disput",{"_index":83,"t":{"110":{"position":[[4,8]]}}}],["end",{"_index":21,"t":{"36":{"position":[[6,3],[13,3]]},"60":{"position":[[6,3],[13,3]]}}}],["epic",{"_index":13,"t":{"29":{"position":[[0,5]]},"31":{"position":[[0,5]]},"33":{"position":[[0,5]]},"36":{"position":[[0,5]]},"46":{"position":[[0,5]]},"48":{"position":[[0,5]]},"50":{"position":[[0,5]]},"54":{"position":[[0,5]]},"56":{"position":[[0,5]]},"60":{"position":[[0,5]]}}}],["european",{"_index":56,"t":{"74":{"position":[[30,8]]}}}],["export",{"_index":54,"t":{"74":{"position":[[3,9]]}}}],["forward",{"_index":72,"t":{"96":{"position":[[3,7]]}}}],["govern",{"_index":80,"t":{"108":{"position":[[3,9]]}}}],["improv",{"_index":15,"t":{"29":{"position":[[10,12]]},"33":{"position":[[6,7]]},"56":{"position":[[6,7]]}}}],["incentiv",{"_index":0,"t":{"3":{"position":[[0,12]]}}}],["indemn",{"_index":78,"t":{"104":{"position":[[3,9]]}}}],["inform",{"_index":70,"t":{"82":{"position":[[11,11]]}}}],["infrastructur",{"_index":34,"t":{"52":{"position":[[12,14]]}}}],["intellectu",{"_index":75,"t":{"98":{"position":[[3,12]]}}}],["law",{"_index":81,"t":{"108":{"position":[[13,3]]}}}],["liabil",{"_index":77,"t":{"102":{"position":[[17,9]]}}}],["limit",{"_index":39,"t":{"68":{"position":[[6,5]]},"102":{"position":[[3,10]]}}}],["link",{"_index":63,"t":{"78":{"position":[[15,5]]},"100":{"position":[[23,5]]}}}],["look",{"_index":73,"t":{"96":{"position":[[11,7]]}}}],["marketplac",{"_index":20,"t":{"35":{"position":[[0,11]]},"58":{"position":[[0,11]]}}}],["measur",{"_index":50,"t":{"72":{"position":[[12,8]]}}}],["merkel",{"_index":32,"t":{"46":{"position":[[12,13]]}}}],["mileston",{"_index":5,"t":{"10":{"position":[[0,10]]}}}],["modif",{"_index":79,"t":{"106":{"position":[[3,13]]}}}],["motiv",{"_index":8,"t":{"18":{"position":[[0,6]]}}}],["network",{"_index":2,"t":{"5":{"position":[[0,7]]}}}],["nim",{"_index":14,"t":{"29":{"position":[[6,3]]},"48":{"position":[[6,3]]}}}],["outsid",{"_index":55,"t":{"74":{"position":[[18,7]]}}}],["parti",{"_index":47,"t":{"70":{"position":[[9,5]]},"78":{"position":[[9,5]]},"100":{"position":[[9,5]]}}}],["person",{"_index":42,"t":{"68":{"position":[[45,8]]},"70":{"position":[[29,8]]}}}],["polici",{"_index":66,"t":{"80":{"position":[[16,6]]}}}],["poseidon2",{"_index":33,"t":{"48":{"position":[[10,9]]}}}],["privaci",{"_index":65,"t":{"80":{"position":[[8,7]]}}}],["process",{"_index":41,"t":{"68":{"position":[[31,10]]},"70":{"position":[[15,10]]}}}],["properti",{"_index":76,"t":{"98":{"position":[[16,8]]}}}],["prove",{"_index":17,"t":{"31":{"position":[[17,7]]},"50":{"position":[[17,7]]}}}],["r&d",{"_index":25,"t":{"40":{"position":[[6,3]]}}}],["rational",{"_index":7,"t":{"12":{"position":[[8,9]]}}}],["releas",{"_index":4,"t":{"8":{"position":[[0,8]]}}}],["research",{"_index":23,"t":{"38":{"position":[[0,8]]},"62":{"position":[[0,8]]}}}],["respect",{"_index":52,"t":{"72":{"position":[[32,7]]}}}],["right",{"_index":61,"t":{"76":{"position":[[20,6]]},"98":{"position":[[25,6]]}}}],["roadmap",{"_index":6,"t":{"12":{"position":[[0,7]]}}}],["secur",{"_index":49,"t":{"72":{"position":[[3,8]]}}}],["setup",{"_index":36,"t":{"54":{"position":[[19,5]]}}}],["stabil",{"_index":19,"t":{"33":{"position":[[21,9]]},"56":{"position":[[21,9]]}}}],["statement",{"_index":74,"t":{"96":{"position":[[19,10]]}}}],["storag",{"_index":10,"t":{"20":{"position":[[20,7]]}}}],["switzerland",{"_index":58,"t":{"74":{"position":[[49,11]]}}}],["system",{"_index":18,"t":{"31":{"position":[[25,6]]},"50":{"position":[[25,6]]}}}],["take",{"_index":51,"t":{"72":{"position":[[24,4]]}}}],["term",{"_index":84,"t":{"112":{"position":[[24,5]]}}}],["test",{"_index":22,"t":{"36":{"position":[[17,7]]},"52":{"position":[[0,7]]},"60":{"position":[[17,7]]}}}],["testnet",{"_index":35,"t":{"54":{"position":[[11,7]]}}}],["third",{"_index":46,"t":{"70":{"position":[[3,5]]},"78":{"position":[[3,5]]},"100":{"position":[[3,5]]}}}],["union",{"_index":57,"t":{"74":{"position":[[39,5]]}}}],["updat",{"_index":26,"t":{"40":{"position":[[10,6]]}}}],["us",{"_index":43,"t":{"68":{"position":[[69,3]]},"112":{"position":[[33,3]]}}}],["websit",{"_index":44,"t":{"68":{"position":[[80,7]]},"72":{"position":[[47,7]]},"100":{"position":[[15,7]]},"112":{"position":[[16,7]]}}}],["week",{"_index":27,"t":{"40":{"position":[[21,4]]}}}],["wire",{"_index":16,"t":{"31":{"position":[[6,6]]},"50":{"position":[[6,6]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"Codex is building a durable data storage engine that is fully decentralised, providing corruption and censorship resistance to web3 applications. It innately protects network participants by giving hosts plausible deniability over the data they store, and clients provable durability guarantees—up to 99.99%—while remaining storage and bandwidth efficient. These four key features combine to differentiate Codex from existing projects in the decentralised storage niche: Erasure coding: Provides efficient data redundancy, which increases data durability guarantees. ZK-based proof-of-retrievability: For lightweight data durability assurances. Lazy repair mechanism: For efficient data reconstruction and loss prevention. Incentivization: To encourage rational behaviour, widespread network participation, and the efficient provision of finite network resources.","s":"Description and architecture","u":"/about/architect","h":"","p":1},{"i":4,"t":"Incentivization mechanisms are one of the key pieces missing from traditional file-sharing networks. Codex believes that a robust marketplace-based incentive structure will ensure wide participation across the node types detailed below. The development of an adequate incentive structure is driven by the following goals: Supply and demand to encourage optimum network resource usage. Increase participation by enabling nodes to utilise their competitive advantages to maximise profits. Prevent spam and discourage malicious participation. Although still to be finalised, the Codex incentive structure will involve a marketplace of participants who want to store data, and those provisioning storage posting collateral, with the latter bidding on open storage contracts. This structure aims to ensure that participants' incentives align, resulting in Codex functioning as intended.","s":"Incentivized decentralisation","u":"/about/architect","h":"#incentivized-decentralisation","p":1},{"i":6,"t":"Codex is composed of multiple node types, each taking a different role in the network's operation. Similarly, the hardware demands for each node type vary, enabling those operating resource-restricted devices to participate. Storage nodes As Codex's long-term reliable storage providers, storage nodes stake collateral based on the collateral posted on the request side of contracts, and the number of slots that a contract has. This is tied to the durability demanded by the user. Failure to provide periodic proof of data possession results in slashing penalties. Aggregator Node A method for off-loading erasure coding, proof generation and proof aggregation by a client node with low-resources, currently a WIP and will be part of subsequent Codex release Q2/Q4 next year. Client nodes Client nodes make requests for other nodes to store, find, and retrieve data. Most of the Codex network will be Client nodes, and these participants can double as caching nodes to offset the cost of the network resources they consume. When a node commits to a storage contract and a user uploads data, the network will proactively verify that the storage node is online and that the data is retrievable. Storage nodes are then randomly queried to broadcast proofs of data possession over an interval corresponding to the contract duration and 9's of retrievability guarantee the protocol provides. If the storage node sends invalid proofs or fails to provide them in time, the network evicts the storage node from the slot, and the slot will become available for the first node that generates a valid proof for that slot. When the contract is reposted, some of the faulty node's collateral pays for the new storage node's bandwidth fees. Erasure coding complements the repair scheme by allowing the reconstruction of the missing chunks from data in other slots within the same storage contract hosted by faultless storage nodes. Read the Codex whitepaper","s":"Network architecture","u":"/about/architect","h":"#network-architecture","p":1},{"i":9,"t":"Codex is currently in its first proof of concept iteration, codenamed Dagger. Before Katana (its forthcoming testnet release, expected before the end of 2023) we aim to deliver two additional PoC clients, Scimitar and Longsword. Dagger: Codex's first PoC and current version. Scimitar: The PoC-2 client will implement fast erasure coding, the marketplace, and partial durability guarantees—expected end of Q3 2023. Katana: Codex v1 will offer SNARK-based remote auditing","s":"Releases","u":"/about/roadmap","h":"#releases","p":7},{"i":11,"t":"The Codex team's subgroups are working on the major milestones detailed below to deliver Codex with the qualities described: Testing: Develop and maintain testnet and devnet Client: Release Scimitar Develop initial data repair and ZK proving scheme Release Longsword Deploy Codex v1.0 Marketplace: Develop the marketplace for integration in PoC-2. Develop the marketplace bandwidth incentivization structure. Research: Write the initial ZK proving scheme Conduct Data Availability Sampling research with the Ethereum Foundation","s":"Milestones","u":"/about/roadmap","h":"#milestones","p":7},{"i":13,"t":"We believe the above roadmap to be the most logical approach to building a data storage engine with stronger durability guarantees and resistance to censorship than currently offered by Codex's centralised or decentralised counterparts. First, we must establish a mechanism through which users can initiate a contract with a storage provider to host their data. Then, we can add erasure coding, required for efficient redundancy and auditing. Next, the system will need a mechanism to prove the hosts still have data available. Finally, repairs must be incentivized. Naturally, each layer of sophistication requires testing for economic and technical feasibility. Contribute to Codex","s":"Roadmap rationale","u":"/about/roadmap","h":"#roadmap-rationale","p":7},{"i":15,"t":"The Codex project aims to create a decentralised durability engine that allows persisting data in p2p networks. In other words, it allows storing files and data with predictable durability guarantees for later retrieval. WARNING: This project is under active development and is considered pre-alpha. Welcome to the Codex Community! Whether you are interested in building with Codex, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone. Follow us on X Join the community on Discord","s":"Join the community","u":"/community","h":"","p":14},{"i":17,"t":"Codex is a decentralised data storage platform that provides exceptionally strong censorship resistance and durability guarantees. It serves as the storage layer of the Logos tech stack. Alongside the trustless agreement layer, Nomos, and the communications layer, Waku, it is one of the Logos Collective's foundational projects.","s":"About Codex","u":"/about/","h":"","p":16},{"i":19,"t":"The remote storage landscape is dominated by an increasingly small number of internet powerhouses—Google, Microsoft, Amazon, etc. While these services score highly in terms of user experience and convenience, centralised cloud data storage suffers from the following drawbacks: Censorship Lack of data ownership Breaches and outages High cost Centralised cloud storage providers have an established history of censoring data and, as de facto owners of said data, have the power to do so according to their own standards. Furthermore, centralised platforms have fallen victim to major data breaches and service outages on numerous occasions. Such incidents have created a gap in the market for a decentralised, censorship-resistant alternative. Existing peer-to-peer storage and file-sharing networks address some of these issues—such as robustness in the face of network disruptions, and desirable resistance to censorship. Yet without adequate incentives and strong data durability guarantees, they make for unsuitable foundations upon which to build truly unstoppable applications. Existing decentralised storage solutions purport to improve upon early P2P file-sharing platforms like eDonkey and Gnutella. However, the market still lacks a decentralised storage solution that is efficient in terms of storage and bandwidth usage, while offering performance and durability guarantees comparable to incumbents.","s":"Motive","u":"/about/","h":"#motive","p":16},{"i":21,"t":"Codex began in 2021 to address a need for a durable, decentralised storage layer for the web3 tech stack. The name \"Codex\" refers to an ancient form of book—an allusion to the data storage engine's extremely robust—99.99%—durability guarantees. Codex was announced as a core Logos Collective protocol in June 2023.","s":"Decentralising data storage","u":"/about/","h":"#decentralising-data-storage","p":16},{"i":23,"t":"What is Codex? Codex is a state-of-the-art, decentralized storage protocol that provides a solution for highly durable data storage with high decentralization, aiming to resist censorship and prevent single points of failure inherent in centralized systems. How is Codex different from centralized storage solutions (eg. Google Cloud)? Unlike centralized systems, Codex is designed to offer data durability, resiliency to cloud failures, and censorship resistance, making it vital for use cases like preserving factual history records. What kind of durability does Codex promise? While no system can promise absolute data loss protection, Codex's architecture, economic incentives, and encoding algorithms aim to provide high data durability with the novel implementation of techniques such as Erasure Coding and Lazy Repair. What is Data Durability? Data Durability means how likely it is that data will stay safe over time. For instance, a storage system with durability of eleven nines (99.999999999%) means there's a very tiny chance (0.0000000001%) of losing data. In simple terms, you might lose only one file out of a million over ten million years. Data Durability is crucial because losing even a little data can be a big problem. Codex uses techniques like erasure coding to keep data safe. This method splits data and stores it in different places. So, if a piece is lost or damaged, the other pieces can be used to recreate the original data. This keeps users' data secure and intact. What is Erasure Coding and how does it relate to data storage in Codex? Erasure Coding is a way to protect data by breaking it into parts, adding extra data for safety, and then spreading these parts across various locations or systems. On Codex, this involves splitting data into pieces, known as \"shards,\" along with extra \"parity shards\" for backup. These parity shards are created using mathematical formulas based on the original data, helping to rebuild the data if some shards go missing or get damaged. This method lets Codex offer consistent and reliable data storage, meaning that as long as a certain number of shards (N out of M) are safe, the entire original data can be perfectly restored, ensuring a high level of data safety. What is Lazy Repair in the context of Codex? Lazy Repair is a method in distributed storage systems for managing data issues. In Codex, if a piece of data (a shard) is lost or damaged, the system doesn't fix it right away. It waits until there's enough damage to make repair worthwhile. This is efficient because it saves resources by not addressing small problems that don't harm the overall data. The system only repairs when the number of good shards drops too low, balancing resource use with keeping data safe and available. Is Codex part of Logos? Yes, Codex is expected to serve as the storage pillar of Logos, the protocol protecting Logos organizational data, aligning with the broader Logos initiative. How does Codex compare to other decentralized storage solutions currently out on the market? Codex distinguishes itself from other storage solutions in the market through several key features: having an Advanced Marketplace and Data Distribution, and using SNARKS for Data Loss Detection. How do the Advanced Marketplace and Data Distribution work? Codex features an advanced marketplace that promotes high levels of decentralization and efficient data distribution. This structure prevents the concentration of data in a few large nodes, enhancing the efficiency of data repair and retrieval. In contrast, other protocols design their systems to create \"supernodes\". How does Codex use SNARKS for Data Loss Detection? Codex incorporates succinct non-interactive arguments of knowledge (SNARKS) for efficient and reliable data loss detection. Storage Providers (SPs) respond to challenges by sending proofs to Proof Aggregators, who verify and post these proofs to the blockchain. If an SP fails to prove possession of data or sends invalid proof, their collateral is slashed, providing an economic incentive to ensure data durability. Can Codex be used for cold storage by blockchain networks? Yes, Codex is discussing with various blockchain projects to preserve their full chain state and history in a way that resists censorship and does not require full history to be stored locally by every node. Is Codex currently operational? Codex is currently undergoing extensive internal testing. The upcoming public testnet is planned for Q1 2024. What types of data can be stored on Codex? Codex can handle various types of data but is particularly suited for mission-critical history and state information for Web3 applications that need to remain unaltered, and accessible. Will every node be required to store full data history in Codex? No, the design allows for storing vast amounts of data without requiring every node to store the full history. What are all the different types of nodes in Codex’s network? Codex consists of a p2p network of Storage Nodes, Aggregator Nodes, Caching Nodes, and Client Nodes. What is a Storage Node? Storage nodes provide long-term reliable storage. For a storage node to operate it needs to stake a collateral proportional to the amount of data it's willing to store. Once the collateral has been staked and the node begins to store data, it needs to periodically provide proof of data possession. If a node fails to provide proof in time, it is penalized with a portion of its stake; if the node fails to provide proof several times in a row, it loses the entirety of the stake. What is an Aggregator Node? Aggregator nodes are in charge of collecting, validating, and submitting proofs to an adjudicator contract which rewards and penalizes storage and other validator nodes. A validator node also needs to stake collateral to be able to participate in the validation process. Note that we don't use the term \"adjudicator contract\" in the literal sense of an Ethereum contract. We use it to indicate anything that executes on a consensus engine. What is a Caching Node? Bandwidth incentives allow anyone to operate as a caching node, profiting only from caching and serving popular content. We expect this to have the emergent property of an organic CDN, where nodes with spare bandwidth but limited or unreliable storage can collectively scale the network depending on current demands. Any node can become a caching node for any period, even ephemeral nodes. What is a Client Node? Client Nodes engage with other nodes to store, find, and retrieve data from the network. We expect regular nodes to be the most common type of node in the Codex Network. These will consume services offered by other nodes in exchange for payments. A regular node can also be a caching node by storing previously consumed data that other nodes can retrieve from it. This allows nodes to offset some of the cost of participating in the network and it's expected to allow the majority of nodes to participate on an almost free basis after an initial entree fee. Unlike the other types of nodes, we expect the regular nodes to have intermittent up-time as they are running on personal computers and mobile devices. Can I build my application on top of Codex? Not yet. Stay tuned for more updates from the Codex project for when you can utilize your application on top of the Codex network. Does Codex have a token? No Codex token has been issued yet. Please be wary of impersonators claiming the issuance of Codex tokens or any form of Codex airdrop. What role will the Codex token have in the network? The Codex token is a utility token, serving as collateral for Storage Providers and a means of compensation in the storage contracts. Can I or would I be able to use my storage to participate in the Codex network? Yes. The testnet phase is set for Q1 2024, stay tuned. Can I use Codex right now? Not yet. However, you will be able to participate in the testnet phase of Q1 2024. Stay tuned.","s":"Frequently asked questions","u":"/about/faq","h":"","p":22},{"i":25,"t":"The Codex team continues to make progress with various initiatives to wrap up the demo for the Q1/Q2 public testnet release. An internal testnet has been running for the past few weeks and has been used to test the latest version of Codex and can be accessed using the Codex Testnet Starter documentation. Ongoing and new lines of research and development will soon begin in preparation for the next version of Codex used for the mainnet release.. Here are the updates from different team members and their ongoing work.","s":"Codex R&D Update for Week of Jan 12, 2024","u":"/news","h":"","p":24},{"i":27,"t":"Development is currently broken into three distinct teams: Client, Testing, and Infrastructure Marketplace Research The different teams have actively moving on various fronts. The following are their team updates to various ongoing Epics.","s":"Development","u":"/news","h":"","p":24},{"i":30,"t":"Completed: Filed issue for adding Atlas / non-Nimble support for packages Start working on Atlas command changes Ongoing: Create a repo as a place to start implementing some core async-threading tools for Chronos like worker pool & disk io on top of the ThreadSignalPtr primitive plans to support refc & orc","s":"Epic: Nim Improvements","u":"/news","h":"#epic-nim-improvements","p":24},{"i":32,"t":"Completed: Wrapped ark-circom in a C FFI via: nim-circom-compat and circom-compat-ffi Ongoing: Integration of codex-storage-proofs-circuits with a PR in nim-codex","s":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system","p":24},{"i":34,"t":"Completed: Updated profiler branch for debugging Ported the profiler to Chronos V4 Wrote separate test runner for two client test to try to figure out the origin of a file size bug which magically disappeared Ongoing: Finish work to take down draft flag from PR Expiry per dataset Write tests for PR Safe block deletion (with ref count) Look into the CI/docker packaging/local build tooling for Waku and Nimbus as part of build improvements PR Chronos V4 branch Pinned versions for Chronos and json-rpc","s":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability","p":24},{"i":37,"t":"Completed: Rebased multinode integration test refactor which had two failing tests due to the erasure coding changes Rebased Marketplace integration test suite Added support for Result types using formatIt for logging proxy Finished the verifier contract Deployed a dummy verifier on local networks for testing Finished updates to nim-ethers, all tests passing, including in Nim v2 Fixed an issue in the nim-ethers json-rpc update Derived Signers could not access the derived getAddress and sendTransaction when their async raises were updated with SignerError Ongoing: Continue work on updating nim-ethers to support json-rpc breaking changes Continue work on supporting json-rpc breaking changes and pulling out utils/json to its own lib Integrate contract changes into nim-codex Look into removing wait For in integration tests Review and clean up nim-ethers changes Try to figure out a cleaner way to handle exceptions instead of catching all CatchableErrors Start tweaking the nim-json api to normalize both serialize and deserialize pragmas, with modes: OptOut, OptIn, and Strict WIP on adding PATCH call for Availabilities","s":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing","p":24},{"i":39,"t":"2024 R&D Goals Proving system and aggregation improvements (folding or lookups) Aggregator/validator design DHT improvements Tokenomics and incentive design Bandwidth incentives Dynamic data (appendable data) Completed: Frobenius endomorphism & pairing implementation Review the Solidity Groth16 verifier Ongoing: DAS simulator improvements to cover more diffusion models Start DAS sample query mechanism design Proof recursion ideation","s":"Research","u":"/news","h":"","p":24},{"i":41,"t":"The Codex dev team is moving forward rapidly. The organisation’s development efforts mainly focus on launching the beta testnet by the end of the year. Following are some recent research and development highlights.","s":"Codex R&D Update for Week of December 11, 2023","u":"/news","h":"","p":24},{"i":43,"t":"Development is currently broken into three distinct sub-teams: Client, Testing, and Infrastructure Marketplace Research Below are summaries of each sub-team.","s":"Development","u":"/news","h":"","p":24},{"i":45,"t":"For the client, the team is focused on these primary tasks: block merkelization, Poseidon2 Nim-poseidon2 implementation, and wiring the proving system. The client is the software that runs on the user’s local machine. It has all the components to handle the endpoints integration, data, block management, erasure coding, and interactions with the marketplace. See currently exposed endpoints for the Codex client (conform to OpenAPI specification) at: https://api.codex.storage Active work is ongoing to integrate the above Codex client endpoints to be accessible via the Codex frontend written in React here: https://github.com/codex-storage/codex-frontend","s":"Client","u":"/news","h":"","p":24},{"i":47,"t":"For block merkelization, the team is focused on reducing metadata overhead. They are optimising the structure for handling and indexing block data. This effort requires changes in block Merkelization. These are the most recent efforts, which can be publicly viewed on GitHub: Merkelization concrete PR (merged) https://github.com/codex-storage/nim-codex/pull/566 Working on nim-datastore to support atomic updates (in review) https://github.com/codex-storage/nim-datastore/pull/58 Working on safe block deletion - using ref-counting Continuing work for #566 to integrate with Poseidon2 and the proving system","s":"Epic: Block Merkelization","u":"/news","h":"#epic-block-merkelization","p":24},{"i":49,"t":"Poseidon2 is a faster version of the original Poseidon hash function used in zero-knowledge systems (zk). Nim-Poseidon2 is the Nim implementation the Codex team is developing to work efficiently and effectively with the Codex client. Merged outstanding PRs https://github.com/codex-storage/nim-poseidon2/pull/7 https://github.com/codex-storage/nim-poseidon2/pull/8 https://github.com/codex-storage/nim-poseidon2/pull/9 Added keyed compress https://github.com/codex-storage/nim-poseidon2/pull/10 Updated Merkle root with extra bits to mitigate possible attacks https://github.com/codex-storage/nim-poseidon2/pull/11 Fixed compilation problem with Constantine and secp256k1 https://github.com/codex-storage/nim-codex/pull/625","s":"Epic: nim-poseidon2","u":"/news","h":"#epic-nim-poseidon2","p":24},{"i":51,"t":"The proving system comprises a SNARK circuit that generates the proof. A Storage Provider must also submit the marketplace contract to prove it faithfully stores the associated slot data. Additional components, such as the trusted setup ceremony, hash functions, and the multiple manifests generated for different purposes, are included in the proving system. The team is working on ensuring the proving system is built out and functions to successfully remote audit the slot data by validators. These stories represent the most recent efforts: Nim reference implementation of the proof input generation (WIP) https://github.com/codex-storage/codex-storage-proofs-circuits/tree/master/reference/nim/proof_input Ongoing implementation of Groth16 (WIP) https://github.com/codex-storage/nim-groth16","s":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system-1","p":24},{"i":53,"t":"The testing and infrastructure group is preparing to deploy tens or hundreds of nodes and efficiently monitor the activity. This is crucial for a successful launch of the testnet. The following are the epics and stories of development for this process. The main areas of concern are ensuring the testnet is set up and configured properly. It will also include ensuring the client maintains a suitable level of stability.","s":"Testing and Infrastructure","u":"/news","h":"","p":24},{"i":55,"t":"Configure TCP/UDP port forwarding for Testnet deployment Configure Pods placement for D/C-Tests runners and tests workload Check available options to build a service to get Codex Public IP for announcement Deploy Codex Bootstrap nodes for Testnet Deploy Geth Bootstrap nodes for Testnet","s":"Epic: 2023 Testnet setup","u":"/news","h":"#epic-2023-testnet-setup","p":24},{"i":57,"t":"Ongoing debugging of performance and stability issues in the testing environment Tooling developed Elastic search log retrieval https://github.com/codex-storage/logtools https://vimeo.com/884370956/e8a32a58c8?share=copy DHT fixes related to performance and stability Fix: queue messages when there is no encryption key Fix: arrive at working keys in case of simultaneous cross-connect Fix timeout and delete","s":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability-1","p":24},{"i":59,"t":"The marketplace is a smart contract deployed on a blockchain. This smart contract defines all the logic required for users to ask for storage, store collaterals, assign storage nodes to user datasets, settle payments, deal with storage failures, storage provider proof issuance, and all the contract interactions.","s":"Marketplace","u":"/news","h":"","p":24},{"i":61,"t":"Working on integration testing cleanup (WIP) https://github.com/codex-storage/nim-codex/pull/607 Debugging various issues for end-to-end testing","s":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing-1","p":24},{"i":63,"t":"Current research is mostly halted due to focus on implementing past research for the imminent launch of the testnet. Ongoing efforts include: Near-term: Ongoing “Groth16 prover” research and analysis. Details for the functionality of the current proof system Hash and Merkle tree conventions to make them safe Continuing research for Codex’s use of erasure coding Long-term: Figuring out how to aggregate proofs (proof compression) for proving system Determining the correct proof system for Codex","s":"Research","u":"/news","h":"","p":24},{"i":65,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":64},{"i":67,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":64},{"i":69,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website and from our use of Fathom Analytics, we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time. Fathom Analytics: We note that we make use of Fathom Analytics, which you can read more about here: https://usefathom.com/. In short, Fathom Analytics is an alternative to Google Analytics, that doesn’t compromise visitor privacy for data. Fathom Analytics collects trends and insights, not personal details about specific website visitors. Fathom Analytics offers simple traffic insights such as top pages, top referrers, bounce rate, and average time people spend on a site.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":64},{"i":71,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply. We would however like to draw your attention to the following: Youtube: The Website may embed videos from Youtube, a service provided by Google LLC, using Youtube’s privacy-enhanced mode. When you interact with such videos, Youtube may place cookies on your personal device. The cookies do not directly identify individual users and YouTube will not store information to personalise your experience unless you are logged in to a Google account. We do not have any control over these cookies set by Youtube and it is recommended that you review YouTube’s embedding videos information page.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":64},{"i":73,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":64},{"i":75,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":64},{"i":77,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":64},{"i":79,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":64},{"i":81,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":64},{"i":83,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":64},{"i":85,"t":"We take security seriously at Codex and across the Institute of Free Technology and its affiliates. Please report any security incidents via security@free.technology.","s":"Security","u":"/security","h":"","p":84},{"i":87,"t":"Codex is developed by highly experienced protocol and software developers, distributed systems experts, and ZK-cryptography researchers with backgrounds in academia, mainstream tech, and web3. The contributors working on Codex are split into the subgroups below: Codex general Codex marketplace Codex client Codex research Codex is looking for more contributors to help build the network. Check out the open positions linked below. As an open-source public goods project Codex also welcomes community contributions. Please check out our Github repo here. Work with us","s":"Core contributors","u":"/about/team","h":"","p":86},{"i":89,"t":"Codex Protocol Engineer (Codex Client) Remote (Worldwide)","s":"Current job openings","u":"/join-us","h":"","p":88},{"i":91,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":90},{"i":93,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":90},{"i":95,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":90},{"i":97,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":90},{"i":99,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":90},{"i":101,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":90},{"i":103,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":90},{"i":105,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":90},{"i":107,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":90},{"i":109,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":90},{"i":111,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":90},{"i":113,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":90}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,1.25,1,1.751,2,2.908,3,1.8,4,2.391,5,2.155,6,3.362,7,2.813,8,1.958,9,3.362,10,2.155,11,2.155,12,2.341,13,1.751,14,3.362,15,2.341,16,2.848,17,3.031,18,3.362,19,2.575,20,3.362,21,3.362,22,1.867,23,1.647,24,1.321,25,3.362,26,3.362,27,3.362,28,2.575,29,2,30,3.53,31,3.362,32,2.155,33,2.341,34,3.362,35,3.362,36,2.887,37,1.867,38,3.362,39,1.751,40,1.751,41,2.887,42,2.887,43,1.751,44,2.341,45,1.867,46,1.647,47,2.155,48,3.362,49,3.362,50,2.887,51,2.155,52,2.341,53,2.887,54,2.887,55,2.575,56,2.341,57,2.887,58,3.362,59,3.362,60,3.362,61,2.341,62,3.362,63,2.341]],["t/4",[0,1.442,3,0.928,4,2.06,16,2.453,17,4,23,1.639,32,2.143,42,2.872,45,1.857,52,2.329,55,2.561,56,2.329,57,2.872,61,2.329,63,2.329,64,2.143,65,2.872,66,2.561,67,3.343,68,1.741,69,2.872,70,2.143,71,2.872,72,2.06,73,4.123,74,4.123,75,2.802,76,3.343,77,2.802,78,2.329,79,2.143,80,2.329,81,1.385,82,2.561,83,3.343,84,1.546,85,2.872,86,3.343,87,2.561,88,3.343,89,2.872,90,2.872,91,3.343,92,3.343,93,3.343,94,3.343,95,2.561,96,3.343,97,3.343,98,3.343,99,3.343,100,2.329,101,3.343,102,2.872,103,3.343,104,2.561,105,2.143,106,2.329,107,3.343,108,3.343,109,2.872,110,1.639,111,1.989,112,2.872,113,1.989,114,1.857,115,2.561]],["t/6",[0,1.239,2,1.027,3,1.508,4,2.776,8,1.941,16,2.44,17,2.128,19,1.606,22,1.164,23,1.027,24,1.841,29,1.247,39,1.729,40,1.729,43,1.092,45,1.164,46,2.661,47,2.641,51,1.344,53,1.801,63,2.87,66,1.606,77,4.1,78,2.312,87,2.542,90,1.801,104,1.606,105,1.344,106,2.87,110,2.661,113,1.247,116,2.096,117,1.801,118,2.312,119,1.46,120,1.344,121,1.801,122,2.096,123,2.851,124,2.096,125,2.096,126,1.801,127,2.096,128,1.606,129,1.46,130,1.606,131,0.783,132,1.46,133,1.801,134,2.851,135,2.096,136,1.606,137,4.385,138,2.096,139,1.627,140,1.606,141,1.46,142,2.851,143,1.801,144,2.096,145,2.128,146,1.606,147,2.096,148,2.128,149,1.801,150,1.027,151,1.46,152,1.164,153,2.096,154,1.46,155,2.096,156,1.606,157,1.46,158,1.027,159,1.801,160,2.096,161,1.801,162,1.801,163,1.344,164,1.801,165,1.801,166,2.096,167,2.096,168,1.46,169,2.096,170,2.096,171,1.801,172,2.096,173,2.096,174,2.096,175,2.096,176,2.096,177,1.344,178,1.606,179,1.606,180,1.46,181,1.164,182,2.096,183,1.801,184,1.092,185,1.46,186,1.46,187,2.096,188,2.096,189,3.319,190,2.096,191,1.46,192,1.46,193,2.096,194,1.801,195,1.46,196,2.096,197,1.801,198,1.801,199,2.096,200,1.606,201,2.096]],["t/9",[0,1.406,2,1.956,24,2.09,39,2.078,40,2.078,45,2.216,46,1.956,72,1.745,111,2.374,129,2.78,150,2.606,154,2.78,185,3.703,202,3.991,203,3.991,204,3.991,205,5.317,206,4.073,207,5.317,208,3.991,209,2.078,210,2.78,211,4.073,212,4.567,213,3.428,214,3.057,215,3.057,216,5.136,217,4.567,218,3.428,219,2.78,220,3.428,221,1.956,222,3.991,223,3.991,224,3.991,225,3.991,226,3.991,227,2.374,228,3.057,229,2.78,230,3.057]],["t/11",[0,1.571,3,1.463,24,1.548,29,2.344,44,3.672,51,2.526,56,2.744,72,2.598,74,2.744,79,2.526,80,2.744,81,2.628,154,3.672,184,2.052,194,4.528,209,2.052,213,3.384,216,3.384,217,3.384,218,3.384,220,3.384,231,3.94,232,3.384,233,1.548,234,3.018,235,3.94,236,3.94,237,3.018,238,1.632,239,3.018,240,3.94,241,3.672,242,2.746,243,2.526,244,3.94,245,2.344,246,2.928,247,3.384,248,3.384,249,3.384,250,3.384,251,3.018]],["t/13",[0,1.01,1,1.989,2,1.871,3,1.623,4,2.257,5,2.448,7,2.272,8,1.582,10,2.448,11,2.448,19,3.954,30,2.272,39,1.989,40,1.989,41,3.279,43,1.989,51,2.448,52,3.595,56,2.659,70,2.448,100,2.659,110,1.871,118,2.659,129,2.659,139,1.871,150,1.871,156,2.925,184,1.989,185,2.659,227,2.272,230,2.925,238,1.582,241,2.659,242,1.989,252,2.925,253,3.279,254,3.279,255,2.925,256,3.818,257,3.279,258,3.818,259,3.279,260,2.272,261,3.818,262,3.071,263,1.766,264,2.659,265,3.279,266,3.279,267,2.925,268,3.818,269,3.279,270,2.925,271,3.818,272,2.925]],["t/15",[0,1.592,1,2.106,2,2.628,3,1.489,5,2.592,7,2.405,16,2.793,23,1.981,37,2.979,43,2.106,47,2.592,68,2.106,81,1.675,84,1.87,111,2.405,195,3.735,272,3.097,273,2.592,274,4.043,275,3.097,276,4.043,277,4.043,278,4.043,279,4.043,280,2.405,281,2.245,282,3.472,283,4.043,284,4.043,285,3.472,286,3.735,287,3.097,288,3.472,289,3.472,290,3.097,291,3.472,292,2.592,293,4.043,294,3.472,295,4.043,296,4.043,297,4.043,298,4.043,299,4.043]],["t/17",[0,1.239,2,2.297,3,1.301,4,2.58,7,2.788,8,1.941,10,3.004,11,3.004,37,2.603,43,2.441,64,3.004,251,3.59,267,4.947,286,3.264,300,4.025,301,4.686,302,4.025,303,4.025,304,3.783,305,3.59,306,4.025,307,4.686,308,4.686,309,4.025,310,4.686,311,4.025,312,4.686]],["t/19",[1,1.382,2,1.951,3,1.658,4,2.709,7,2.843,8,1.1,10,3.063,11,2.553,13,1.382,16,2.074,29,1.579,30,1.579,36,3.42,43,2.074,68,2.074,69,3.42,71,2.28,73,1.849,82,2.033,84,1.227,89,2.28,100,1.849,131,1.486,136,2.033,139,1.301,158,1.301,163,1.702,227,1.579,229,1.849,234,2.033,251,2.033,257,4.104,259,2.28,273,1.702,275,2.033,300,3.42,302,2.28,313,2.654,314,2.654,315,2.654,316,2.28,317,2.654,318,2.654,319,2.654,320,2.654,321,2.654,322,2.553,323,2.654,324,2.033,325,2.28,326,2.654,327,3.42,328,2.654,329,2.654,330,3.982,331,2.654,332,3.982,333,3.982,334,2.033,335,2.28,336,2.654,337,2.654,338,2.654,339,2.654,340,2.654,341,2.28,342,2.654,343,2.654,344,2.654,345,2.654,346,2.654,347,2.654,348,0.991,349,2.28,350,2.654,351,3.05,352,2.28,353,3.982,354,1.579,355,2.654,356,2.654,357,2.654,358,2.654,359,1.382,360,2.654,361,2.773,362,2.654,363,2.654,364,3.42,365,2.28,366,2.033,367,2.654,368,2.654,369,2.654,370,2.28,371,2.28,372,2.654]],["t/21",[0,1.696,2,2.262,3,1.282,4,2.556,7,2.746,12,3.215,43,2.404,177,2.96,212,3.965,264,3.215,267,3.536,304,2.96,305,3.536,306,3.965,354,2.746,373,4.617,374,4.617,375,4.617,376,2.564,377,4.617,378,3.215,379,4.617,380,4.617,381,4.617,382,4.617,383,4.617,384,3.965,385,3.965,386,2.564,387,4.617]],["t/23",[0,1.654,1,0.364,2,1.812,3,1.811,4,2.366,5,0.448,8,1.532,10,1.144,11,1.144,12,0.487,13,0.93,15,1.243,16,2.035,17,1.659,22,0.714,23,1.915,24,0.701,28,0.536,29,0.765,30,1.317,32,0.448,33,0.896,37,0.714,39,1.153,40,1.153,45,0.388,46,1.698,47,1.144,50,1.533,51,1.869,54,1.902,55,0.985,63,0.896,64,0.448,65,1.902,66,0.536,68,0.364,72,0.781,73,1.243,74,0.487,75,0.765,77,3.721,78,1.803,87,0.536,95,0.536,102,0.601,105,0.448,106,1.803,110,1.085,111,0.765,112,0.601,120,1.144,121,0.601,123,1.533,128,0.536,129,0.487,130,0.985,131,0.666,132,1.243,133,2.223,136,0.985,139,0.343,140,0.985,141,0.896,142,1.105,143,0.601,145,1.42,146,1.367,149,0.601,150,1.085,152,0.991,157,0.487,158,0.63,159,0.601,161,2.505,162,0.601,163,0.448,164,1.105,168,0.487,177,1.144,178,0.985,179,0.536,180,1.243,181,1.23,183,0.601,184,0.364,186,1.542,192,0.487,195,1.542,209,0.93,210,1.803,221,0.343,227,1.062,228,1.367,233,0.275,234,0.536,238,0.29,241,0.896,242,0.364,250,0.601,260,0.416,262,1.062,263,1.71,264,1.542,269,1.105,273,0.824,275,0.536,290,0.536,291,1.902,292,0.448,303,1.533,304,1.42,316,0.601,322,0.448,324,0.536,327,1.105,334,1.696,335,2.505,348,0.261,351,0.985,354,0.416,359,0.364,364,1.902,371,0.601,378,0.487,386,0.714,388,1.785,389,0.699,390,2.214,391,0.699,392,0.699,393,0.699,394,1.785,395,0.699,396,0.536,397,1.105,398,1.533,399,0.699,400,0.699,401,1.129,402,0.601,403,1.286,404,0.699,405,0.699,406,0.601,407,1.105,408,0.699,409,0.699,410,0.699,411,0.699,412,0.699,413,1.286,414,1.42,415,1.542,416,0.699,417,0.699,418,0.699,419,0.699,420,1.286,421,0.699,422,0.699,423,0.699,424,0.699,425,2.214,426,0.601,427,0.93,428,1.286,429,0.601,430,0.601,431,1.105,432,0.699,433,0.699,434,1.105,435,1.785,436,1.105,437,0.448,438,1.105,439,1.696,440,0.699,441,1.367,442,0.448,443,0.699,444,0.388,445,0.896,446,0.601,447,0.487,448,1.105,449,1.105,450,0.699,451,1.243,452,0.699,453,0.601,454,3.206,455,0.699,456,1.286,457,0.699,458,0.699,459,0.699,460,0.601,461,0.699,462,0.699,463,0.699,464,1.105,465,0.448,466,0.699,467,0.699,468,0.601,469,0.699,470,0.699,471,0.985,472,0.699,473,1.696,474,0.601,475,0.824,476,0.699,477,0.487,478,0.824,479,0.699,480,0.601,481,0.699,482,0.699,483,0.699,484,0.699,485,1.286,486,0.601,487,0.699,488,0.601,489,0.699,490,0.699,491,1.785,492,0.699,493,0.699,494,0.699,495,0.699,496,0.699,497,1.105,498,0.699,499,1.785,500,1.785,501,0.699,502,0.699,503,0.601,504,0.699,505,0.536,506,0.699,507,0.699,508,0.601,509,0.699,510,0.487,511,0.487,512,0.699,513,1.286,514,0.699,515,0.699,516,1.533,517,0.699,518,0.699,519,1.696,520,0.699,521,0.487,522,0.699,523,0.699,524,0.487,525,0.699,526,0.487,527,0.601,528,1.785,529,1.243,530,0.487,531,0.699,532,0.601,533,0.699,534,0.699,535,0.388,536,0.699,537,0.364,538,0.699,539,1.105,540,0.601,541,0.699,542,1.286,543,0.699,544,0.699,545,0.601,546,1.286,547,0.601,548,0.699,549,0.699,550,0.699,551,0.487,552,1.286,553,0.699,554,0.388,555,0.536,556,0.699,557,0.699,558,0.601,559,0.699,560,0.699,561,0.699,562,0.699,563,0.699,564,0.323,565,0.699,566,0.601,567,0.699,568,0.699,569,0.699,570,0.343,571,0.699,572,0.699,573,0.699,574,0.699,575,0.699,576,1.785,577,0.601,578,0.699,579,0.536,580,0.699,581,0.601,582,0.536,583,0.699,584,0.699,585,0.536,586,0.388,587,0.699,588,0.699,589,0.985,590,1.785,591,0.487,592,0.306,593,1.105,594,2.234,595,0.364,596,0.699,597,0.699,598,0.448,599,0.601,600,0.699,601,0.699,602,1.286,603,0.487,604,0.699]],["t/25",[0,1.695,81,1.675,120,2.592,154,3.735,156,3.097,158,1.981,191,2.816,209,3.134,219,3.735,233,1.589,238,1.675,241,2.816,246,2.245,292,2.592,294,3.472,401,1.592,451,2.816,503,3.472,524,2.816,526,2.816,537,2.106,545,3.472,585,3.097,592,1.768,605,2.793,606,2.816,607,3.472,608,4.043,609,4.043,610,3.097,611,4.043,612,4.043,613,4.043,614,3.097,615,2.345,616,4.043,617,4.043,618,3.472,619,4.043,620,2.816,621,4.043]],["t/27",[24,1.961,72,2.182,81,2.067,84,2.307,120,3.198,150,2.445,238,2.067,246,2.771,281,2.771,451,4.273,592,2.182,605,3.46,615,2.182,622,4.285,623,4.285,624,4.285,625,3.821,626,4.285,627,4.989,628,4.285]],["t/30",[68,2.301,221,2.165,233,1.737,273,2.833,385,3.795,437,2.833,447,3.078,475,2.833,510,3.078,527,3.795,589,3.384,615,1.932,629,2.454,630,5.684,631,5.397,632,4.419,633,3.959,634,4.419,635,4.353,636,4.419,637,2.629,638,3.795,639,3.795,640,4.419,641,3.384,642,3.795,643,4.419,644,4.419,645,4.419,646,4.419,647,4.419,648,4.419,649,4.419,650,4.419]],["t/32",[0,1.63,4,2.199,46,2.465,245,2.992,607,4.32,615,2.199,629,2.793,651,5.03,652,6.667,653,5.03,654,6.165,655,3.503,656,3.668,657,6.165,658,4.32,659,3.503]],["t/34",[1,2.666,24,1.482,68,1.964,119,2.627,152,2.095,214,2.889,219,2.627,233,1.482,238,2.407,247,3.239,311,3.239,366,2.889,415,2.627,427,1.964,441,2.889,592,1.649,615,1.649,629,2.095,641,2.889,642,4.991,659,4.047,660,5.119,661,5.119,662,2.889,663,3.239,664,5.119,665,3.772,666,3.239,667,3.239,668,3.239,669,2.889,670,3.772,671,3.772,672,3.772,673,3.772,674,3.239,675,3.772,676,3.772,677,3.772,678,3.772,679,3.772,680,3.239,681,2.889,682,2.889,683,3.239,684,3.239,685,2.627,686,3.772,687,3.772,688,3.772,689,3.772,690,3.239,691,3.239]],["t/37",[0,0.714,16,1.407,39,1.407,40,1.407,72,1.181,78,1.881,110,1.977,113,1.607,151,1.881,168,2.809,180,1.881,184,1.407,214,2.069,233,1.585,238,2.49,243,1.731,245,3.186,292,1.731,401,0.714,427,2.101,445,1.881,446,3.464,447,2.809,475,1.731,477,1.881,480,2.32,521,1.881,530,1.881,532,2.32,537,1.407,592,2.342,606,2.809,615,1.181,629,1.5,633,3.363,635,2.069,637,3.409,639,2.32,656,3.706,668,2.32,669,2.069,674,3.464,685,1.881,690,4.599,691,4.146,692,4.034,693,2.701,694,2.701,695,2.32,696,2.701,697,2.069,698,2.701,699,2.701,700,5.355,701,2.701,702,1.181,703,2.701,704,4.034,705,2.701,706,2.701,707,2.701,708,2.701,709,2.701,710,2.701,711,2.701,712,2.701,713,2.32,714,1.731,715,2.701,716,2.701,717,2.701,718,2.701,719,2.701,720,2.701,721,2.701,722,2.701,723,2.701,724,2.32,725,2.701,726,2.701,727,2.701,728,2.32,729,2.701,730,2.701,731,2.32,732,2.701,733,2.701]],["t/39",[3,1.509,29,2.453,46,2.021,52,2.872,73,3.785,85,3.542,145,2.644,168,2.872,171,3.542,221,2.021,242,2.148,249,3.542,263,1.907,366,4.655,398,5.22,529,2.872,591,2.872,615,1.803,629,2.29,631,3.542,635,3.159,714,2.644,734,4.124,735,4.124,736,4.124,737,4.124,738,3.542,739,4.124,740,4.124,741,4.124,742,4.124,743,4.124,744,4.124,745,4.124,746,3.159,747,5.434,748,4.124,749,3.542,750,4.124,751,4.124,752,4.124,753,4.124]],["t/41",[0,1.341,81,2.567,84,2.345,157,3.532,209,2.641,211,3.884,246,2.816,605,2.641,626,4.355,754,5.071,755,3.884,756,5.071,757,5.071,758,3.251,759,5.071,760,4.355,761,3.884,762,5.071,763,3.884,764,5.071]],["t/43",[24,2.061,72,2.293,80,3.652,81,2.172,118,3.652,150,2.569,238,2.172,246,2.912,605,3.293,622,4.503,623,4.503,624,4.503,625,4.016,765,6.323,766,4.503]],["t/45",[0,1.556,3,1.073,24,2.474,39,2.013,40,2.013,72,1.691,150,1.895,221,1.895,233,1.519,242,2.013,245,3.097,252,2.961,263,1.788,281,2.147,474,3.32,511,2.693,521,2.693,530,2.693,537,2.013,585,2.961,605,2.013,615,1.691,620,2.693,655,2.693,656,2.3,681,3.987,767,3.32,768,3.866,769,3.866,770,3.32,771,3.987,772,3.866,773,3.32,774,3.866,775,3.866,776,3.32,777,5.885,778,3.866,779,3.866,780,3.32,781,3.866,782,2.478,783,3.866,784,5.205,785,2.961,786,3.866,787,2.3,788,3.32]],["t/47",[3,1.108,74,2.78,233,2.35,242,2.078,245,2.374,262,2.374,263,1.845,401,1.055,415,2.78,530,2.78,592,1.745,605,2.078,606,2.78,633,2.78,637,2.374,656,2.374,659,2.78,681,4.884,682,3.057,683,3.428,684,3.428,714,2.558,758,3.409,763,3.057,767,3.428,770,5.136,771,3.057,787,3.163,789,3.991,790,3.991,791,3.991,792,3.991,793,3.991,794,3.991,795,3.991,796,3.428,797,3.991,798,3.428,799,3.703,800,3.991,801,3.991,802,3.991,803,3.991,804,3.991]],["t/49",[0,1.365,24,1.501,30,2.272,32,2.448,44,2.659,81,1.582,114,2.121,219,2.659,221,1.871,233,1.501,263,1.766,290,2.925,401,1.01,434,3.279,441,2.925,447,2.659,448,3.279,477,2.659,592,1.67,605,1.989,656,3.071,659,2.659,771,3.954,787,4.012,798,3.279,799,4.697,805,3.818,806,3.818,807,2.925,808,3.818,809,2.448,810,3.818,811,3.818,812,3.818,813,3.818,814,3.279,815,3.818,816,3.279,817,3.818,818,3.818,819,3.818,820,2.659,821,3.818,822,3.818,823,3.818,824,3.818,825,3.818,826,3.818]],["t/51",[3,1.376,4,2.167,8,1.49,23,1.762,46,2.778,72,1.573,75,2.139,110,1.762,114,2.752,117,3.089,120,2.305,137,4.256,148,3.634,151,3.451,186,2.505,215,2.754,221,2.428,228,2.754,229,2.505,230,2.754,233,1.413,242,3.182,263,2.621,348,1.342,376,1.997,427,1.873,551,2.505,605,1.873,615,1.573,656,2.139,658,3.089,702,1.573,746,3.795,758,2.305,763,2.754,776,3.089,787,2.948,788,3.089,799,2.505,807,2.754,827,3.596,828,3.596,829,2.754,830,3.596,831,3.596,832,3.596,833,3.596,834,2.139,835,3.596,836,3.596,837,3.089,838,3.089,839,3.596,840,3.596]],["t/53",[24,1.775,30,2.686,75,3.429,77,2.686,81,1.871,84,2.088,209,3.002,238,1.871,239,3.458,243,2.895,281,2.508,292,2.895,429,3.878,430,3.878,471,3.458,554,2.508,603,3.145,618,3.878,625,3.458,628,3.878,702,1.975,761,3.458,837,3.878,841,4.515,842,3.878,843,4.515,844,4.515,845,4.515,846,4.515,847,3.878,848,3.878,849,4.515,850,3.878,851,3.878]],["t/55",[0,1.546,1,2.404,77,3.477,184,2.404,209,3.34,238,2.421,243,4.112,322,2.96,384,3.965,526,3.215,663,3.965,667,3.965,755,3.536,848,5.02,852,4.617,853,4.617,854,4.617,855,4.617,856,4.617,857,3.215,858,4.617,859,3.965,860,5.845,861,4.617]],["t/57",[32,3.677,47,2.874,81,1.857,233,1.762,238,1.857,370,4.927,402,3.85,444,2.49,475,2.874,477,4.645,615,1.96,641,3.433,662,3.433,682,3.433,697,3.433,738,3.85,787,2.667,851,4.927,862,3.85,863,4.483,864,4.483,865,4.483,866,4.483,867,4.483,868,4.483,869,4.483,870,4.483,871,4.483,872,4.483,873,3.85,874,4.483]],["t/59",[4,2.964,8,1.941,23,2.297,46,2.297,72,2.049,77,2.788,106,3.264,110,3.165,139,2.892,140,3.59,243,3.004,254,4.025,262,2.788,511,3.264,516,4.025,579,3.59,599,4.025,680,4.025,875,5.901,876,4.025,877,4.025,878,4.686,879,4.686,880,4.686]],["t/61",[151,3.747,211,4.918,233,2.114,238,2.66,245,3.201,451,3.747,475,3.449,662,4.121,787,3.201,799,3.747,881,5.38,882,5.38]],["t/63",[0,1.055,39,2.078,40,2.078,46,3.125,79,2.558,114,2.216,130,3.057,131,1.985,145,2.558,150,2.606,158,1.956,209,2.078,221,1.956,242,2.078,246,3.542,263,2.765,401,1.055,415,2.78,427,2.078,540,3.428,606,2.78,610,3.057,615,2.325,669,3.057,695,3.428,702,1.745,746,3.057,758,2.558,760,3.428,761,3.057,807,3.057,814,3.428,816,3.428,883,3.991,884,3.991,885,3.991,886,3.991,887,3.991,888,3.991,889,3.991,890,3.991,891,3.991,892,3.428]],["t/65",[115,3.852,139,2.465,255,3.852,529,3.503,535,2.793,592,2.199,893,3.503,894,4.32,895,5.03,896,4.32,897,3.083,898,3.211,899,3.224,900,2.04,901,3.503,902,5.03,903,3.503]],["t/67",[3,1.218,304,4.241,354,2.61,376,3.478,386,3.674,554,2.437,586,2.437,829,4.796,834,2.61,897,2.029,898,2.285,904,3.056,905,3.056,906,3.768,907,3.768,908,3.768,909,4.333,910,2.813,911,3.768,912,3.768,913,3.768,914,3.768,915,3.768,916,3.768,917,3.768,918,3.768,919,3.056,920,3.768,921,3.768]],["t/69",[3,1.669,13,1.407,22,1.5,23,2.366,75,1.607,79,1.731,84,1.249,111,1.607,114,1.5,139,1.324,152,1.5,158,1.324,181,2.681,200,2.069,227,1.607,264,2.809,270,2.069,280,1.607,288,2.32,348,1.802,352,2.32,354,3.186,386,3.339,396,2.069,401,1.416,426,2.32,442,1.731,445,1.881,465,1.731,505,2.069,539,2.32,554,3.339,555,2.069,558,2.32,570,1.324,582,2.069,586,3.339,589,3.089,591,1.881,620,1.881,782,2.586,834,2.4,859,4.599,893,1.881,897,1.865,900,1.753,901,1.881,910,1.731,922,2.069,923,2.701,924,6.011,925,6.23,926,2.701,927,2.069,928,2.701,929,2.32,930,2.701,931,2.701,932,2.32,933,2.701,934,4.034,935,2.701,936,4.034,937,2.701,938,2.701,939,2.701,940,2.701,941,2.701,942,2.701,943,2.701,944,2.069]],["t/71",[3,1.317,8,1.966,22,1.877,23,1.656,33,3.305,84,1.563,113,2.011,128,2.589,139,1.656,158,1.656,215,2.589,322,2.167,325,2.903,348,1.771,386,2.636,396,3.635,401,1.255,437,2.167,465,3.042,505,2.589,511,3.305,535,2.636,554,1.877,564,2.195,570,1.656,586,3.046,603,2.354,697,2.589,714,2.167,728,2.903,893,2.354,897,2.195,898,1.76,899,2.167,900,1.452,903,2.354,904,2.354,927,2.589,945,3.635,946,3.042,947,2.167,948,3.38,949,3.38,950,6.265,951,3.38,952,4.71,953,3.38,954,4.746,955,5.484,956,3.38,957,3.38,958,3.38,959,3.38,960,3.38,961,3.38,962,3.38]],["t/73",[3,1.746,119,3.621,148,3.333,221,2.548,239,3.982,255,3.982,348,1.941,442,4.033,449,4.465,535,2.887,551,3.621,586,2.887,900,1.591,929,4.465,963,4.465,964,5.199]],["t/75",[3,1.809,8,2.121,13,1.964,15,4.341,75,2.244,82,2.889,198,3.239,262,2.244,348,1.911,378,3.565,397,3.239,401,0.997,414,2.418,437,2.418,471,2.889,551,2.627,554,2.095,586,3.619,780,3.239,782,2.418,897,2.367,919,4.341,922,2.889,946,2.418,965,3.239,966,4.397,967,3.772,968,5.119,969,5.811,970,5.119,971,3.772,972,3.239,973,3.772,974,3.239,975,3.772,976,3.239,977,3.772,978,3.772,979,3.772,980,3.772]],["t/77",[3,1.936,15,2.291,45,1.827,68,1.713,70,2.109,100,2.291,134,2.826,186,2.291,206,2.52,263,1.521,281,3.002,348,1.228,386,2.586,427,1.713,465,2.109,478,2.985,535,1.827,554,3.756,570,1.612,586,3.756,592,1.439,713,2.826,820,3.243,877,5.047,892,2.826,897,2.153,898,1.713,899,2.109,904,2.291,905,2.291,922,2.52,932,2.826,981,3.29,982,3.29,983,3.29,984,3.29,985,3.29,986,2.826,987,2.826,988,3.29,989,3.29,990,3.29,991,5.877,992,3.999,993,3.29,994,3.29,995,3.29,996,3.29,997,3.29,998,3.29,999,3.29]],["t/79",[281,2.816,564,2.345,666,4.355,897,2.345,898,2.641,900,2.047,944,3.884,945,5.125,946,4.29,1000,5.071,1001,3.532,1002,5.071,1003,5.071,1004,3.017,1005,4.355]],["t/81",[105,3.251,141,3.532,152,2.816,181,2.816,191,3.532,359,2.641,361,3.532,595,2.641,637,3.017,809,3.251,857,3.532,897,2.865,898,3.227,900,1.896,1006,3.532,1007,4.355,1008,3.532,1009,4.355]],["t/83",[280,3.257,595,2.851,614,4.193,897,2.532,898,2.851,947,3.51,1010,4.702,1011,4.702,1012,4.702,1013,4.193,1014,4.193,1015,4.702]],["t/85",[0,1.423,119,3.747,349,4.621,442,4.117,581,4.621,595,2.802,655,3.747,963,4.621,1016,4.621,1017,4.621,1018,5.38,1019,5.38,1020,5.38]],["t/87",[0,1.854,1,1.989,12,2.659,16,1.989,24,1.501,37,2.121,44,2.659,72,1.67,80,3.595,81,2.138,109,4.433,148,2.448,177,2.448,232,3.279,233,2.029,246,2.867,263,1.766,272,2.925,285,3.279,286,2.659,305,2.925,324,2.925,427,2.688,436,3.279,460,3.279,473,2.925,488,3.279,526,2.659,591,2.659,595,1.989,620,2.659,638,3.279,685,2.659,773,3.279,796,3.279,857,3.595,1001,2.659,1021,3.818,1022,3.818,1023,3.818,1024,3.818,1025,3.818,1026,3.818,1027,5.162,1028,3.818,1029,3.818]],["t/89",[0,1.762,5,3.672,24,2.251,177,3.672,229,3.99,1030,5.729]],["t/91",[114,2.321,131,2.517,200,3.201,206,3.201,401,1.914,414,2.679,529,2.911,537,2.855,564,1.933,592,1.828,702,1.828,893,2.911,894,3.59,896,3.59,900,2.234,1004,2.487,1031,4.18,1032,4.18,1033,3.201,1034,3.201,1035,4.18,1036,5.482,1037,3.59,1038,3.59]],["t/93",[131,1.685,304,4.287,354,2.686,376,3.526,386,3.526,401,1.194,829,4.862,834,2.686,900,1.382,905,3.145,906,3.878,907,3.878,908,3.878,909,4.414,910,2.895,911,3.878,912,3.878,913,3.878,914,3.878,915,3.878,916,3.878,917,3.878,918,3.878,919,3.145,920,3.878,921,3.878]],["t/95",[8,1.059,13,2.015,37,1.419,43,1.331,110,1.252,115,1.957,132,1.78,158,1.896,165,2.195,184,2.015,210,1.78,227,2.302,237,1.957,260,1.52,273,1.638,282,3.323,287,2.964,348,1.444,359,1.331,361,1.78,378,1.78,401,1.235,406,2.195,407,2.195,442,1.638,444,2.149,478,1.638,510,1.78,521,1.78,535,2.594,537,2.432,564,2.409,566,2.195,570,1.252,582,2.964,593,2.195,594,1.957,598,1.638,610,1.957,629,1.419,702,1.118,834,2.302,847,2.195,850,2.195,900,1.973,903,1.78,910,2.994,944,1.957,947,1.638,965,2.195,974,2.195,1001,1.78,1004,1.52,1034,2.964,1038,2.195,1039,3.577,1040,3.323,1041,1.957,1042,3.87,1043,4.011,1044,3.87,1045,3.323,1046,2.556,1047,2.556,1048,2.556,1049,2.556,1050,2.556,1051,2.195,1052,2.556,1053,3.323,1054,2.195,1055,2.556,1056,2.195,1057,2.195,1058,2.695,1059,2.556,1060,2.556,1061,2.195,1062,3.989,1063,2.195,1064,2.556,1065,1.957,1066,2.556,1067,2.195,1068,2.556,1069,2.195,1070,2.556,1071,2.556,1072,2.556,1073,2.556,1074,2.556,1075,2.556,1076,2.556,1077,3.87,1078,3.87,1079,2.556]],["t/97",[33,1.985,37,2.768,45,2.331,79,1.827,81,2.064,111,1.696,113,1.696,114,1.583,118,1.985,126,2.448,132,2.924,148,1.827,150,1.397,181,1.583,210,1.985,237,3.215,252,2.183,253,2.448,260,2.497,270,3.215,334,3.215,348,1.064,351,3.215,359,1.484,365,2.448,401,0.754,437,1.827,444,1.583,535,2.768,537,2.186,592,1.246,594,2.183,629,2.331,637,2.497,685,3.471,702,2.179,755,3.817,766,2.448,782,1.827,862,2.448,900,1.793,1004,1.696,1008,1.985,1017,2.448,1034,3.817,1039,2.183,1040,2.448,1041,3.215,1054,2.448,1062,3.215,1067,2.448,1069,3.606,1080,5.861,1081,2.85,1082,2.85,1083,2.85,1084,2.85,1085,2.85,1086,4.28,1087,4.198,1088,4.198,1089,2.85,1090,2.448,1091,2.85,1092,2.85,1093,2.85,1094,4.198,1095,2.85,1096,2.448,1097,2.85,1098,2.85,1099,2.85,1100,2.85,1101,2.85,1102,2.85,1103,2.85]],["t/99",[84,2.043,131,1.649,139,2.165,184,2.301,195,3.078,262,2.629,280,2.629,348,1.649,376,2.454,401,1.169,465,2.833,473,3.384,519,3.384,524,3.078,564,2.628,577,3.795,595,2.301,702,1.932,834,2.629,900,1.739,987,3.795,1006,3.078,1013,3.384,1014,3.384,1063,3.795,1086,3.795,1104,4.419,1105,5.684,1106,5.684,1107,4.419,1108,5.684,1109,4.419,1110,4.419,1111,4.419]],["t/101",[8,1.456,22,1.952,70,2.253,104,2.692,131,1.312,260,2.901,281,2.708,348,2.455,401,1.481,486,3.018,510,2.448,537,2.54,564,2.255,633,2.448,702,1.537,838,3.018,897,1.625,898,1.83,900,2.204,904,2.448,945,5.347,946,4.476,947,2.253,1001,3.397,1004,2.091,1033,2.692,1039,2.692,1041,2.692,1045,3.018,1090,3.018,1096,3.018,1112,3.514,1113,3.514,1114,4.877,1115,3.018]],["t/103",[13,2.052,64,2.526,95,3.018,110,1.931,131,1.471,145,2.526,163,2.526,280,2.344,322,2.526,348,1.968,401,1.394,431,3.384,438,3.384,439,4.038,444,2.188,445,2.744,564,1.822,570,2.584,598,2.526,731,3.384,820,2.744,842,3.384,873,3.384,900,1.941,903,2.744,910,2.526,947,2.526,966,3.384,1005,5.103,1056,3.384,1057,3.384,1058,2.744,1115,3.384,1116,3.018,1117,3.94,1118,3.94,1119,3.94,1120,3.94,1121,3.94,1122,3.94,1123,3.94,1124,3.94,1125,3.018,1126,3.94,1127,3.94,1128,3.94,1129,3.94]],["t/105",[131,1.847,192,3.447,359,2.578,401,1.614,439,3.791,444,2.749,564,2.289,570,2.425,598,3.173,702,2.67,900,2.025,1051,4.251,1065,3.791,1125,3.791,1130,4.949,1131,4.949,1132,4.949,1133,4.251,1134,4.949,1135,4.949]],["t/107",[105,3.198,131,2.29,141,3.475,152,2.771,181,2.771,191,3.475,359,2.598,361,3.475,401,1.622,637,2.968,809,3.198,857,3.475,900,2.121,1004,2.968,1006,3.475,1007,4.285,1008,3.475,1009,4.285]],["t/109",[61,3.683,131,1.974,287,4.05,359,2.754,401,1.398,900,1.618,901,3.683,1033,4.05,1058,4.427,1136,4.542,1137,4.542,1138,4.05,1139,4.542,1140,4.542,1141,5.288]],["t/111",[13,1.118,17,1.377,22,1.193,64,2.168,68,1.118,70,1.377,84,0.993,113,1.277,131,1.263,146,1.645,157,1.496,158,1.658,163,1.377,178,1.645,181,1.879,185,1.496,192,2.356,197,2.905,248,1.844,260,1.277,265,1.844,266,1.844,286,1.496,341,2.905,348,1.263,376,1.879,401,1.107,414,1.377,427,1.118,444,1.193,453,1.844,464,1.844,478,2.683,508,1.844,524,2.356,555,1.645,564,0.993,570,1.658,579,1.645,595,1.118,598,3.311,603,1.496,655,1.496,702,1.479,714,1.377,758,2.168,785,1.645,809,2.168,820,1.496,899,1.377,900,1.453,905,1.496,909,1.645,919,1.496,946,1.377,952,1.844,972,1.844,976,1.844,986,2.905,1008,2.356,1016,1.844,1037,1.844,1058,1.496,1061,1.844,1062,1.645,1065,1.645,1116,1.645,1125,1.645,1133,2.905,1136,3.595,1137,5.258,1138,1.645,1139,2.905,1140,5.731,1142,2.147,1143,2.905,1144,2.147,1145,2.147,1146,3.383,1147,2.147,1148,2.147,1149,4.748,1150,2.147,1151,3.595,1152,2.147,1153,2.147,1154,2.147,1155,2.147,1156,2.147,1157,2.147,1158,2.147,1159,2.147,1160,2.147,1161,2.147,1162,2.147,1163,2.147,1164,2.147,1165,2.147,1166,2.147,1167,2.147,1168,2.147,1169,2.147,1170,2.147,1171,2.147,1172,4.185,1173,2.147,1174,1.844,1175,2.147,1176,2.147,1177,2.147,1178,2.147,1179,2.147,1180,2.147,1181,2.147,1182,2.147,1183,2.147,1184,2.147,1185,2.147,1186,2.147,1187,2.147,1188,2.147,1189,2.147,1190,2.147,1191,2.147,1192,2.147,1193,2.147]],["t/113",[28,3.663,61,2.38,131,2.498,152,2.656,179,2.617,180,2.38,280,2.033,289,2.935,309,4.108,376,1.898,401,1.77,414,2.191,468,2.935,478,2.191,497,2.935,519,2.617,547,2.935,570,1.675,595,1.78,614,2.617,724,2.935,749,2.935,782,2.191,785,2.617,809,2.191,876,2.935,899,2.191,900,2.123,901,2.38,927,2.617,992,2.935,1006,2.38,1010,2.935,1011,2.935,1012,2.935,1013,2.617,1014,2.617,1015,2.935,1043,2.935,1053,2.935,1116,2.617,1138,2.617,1143,4.108,1151,2.935,1174,2.935,1194,3.417,1195,3.417,1196,3.417,1197,3.417,1198,3.417,1199,3.417,1200,3.417,1201,3.417,1202,3.417,1203,3.417,1204,3.417]]],"invertedIndex":[["",{"_index":631,"t":{"30":{"position":[[40,1],[230,1],[302,1]]},"39":{"position":[[243,1]]}}}],["0.0000000001",{"_index":424,"t":{"23":{"position":[[1038,15]]}}}],["10",{"_index":917,"t":{"67":{"position":[[305,2]]},"93":{"position":[[246,2]]}}}],["100",{"_index":1128,"t":{"103":{"position":[[528,3]]}}}],["14",{"_index":1031,"t":{"91":{"position":[[27,2]]}}}],["2",{"_index":220,"t":{"9":{"position":[[294,1]]},"11":{"position":[[345,2]]}}}],["2021",{"_index":374,"t":{"21":{"position":[[15,4]]}}}],["2023",{"_index":212,"t":{"9":{"position":[[153,5],[409,5]]},"21":{"position":[[309,5]]}}}],["2024",{"_index":529,"t":{"23":{"position":[[4491,5],[7824,5],[7946,5]]},"39":{"position":[[0,4]]},"65":{"position":[[38,4]]},"91":{"position":[[39,4]]}}}],["4.0",{"_index":1106,"t":{"99":{"position":[[83,3],[116,5]]}}}],["566",{"_index":804,"t":{"47":{"position":[[553,4]]}}}],["60",{"_index":1166,"t":{"111":{"position":[[1068,4]]}}}],["6300",{"_index":918,"t":{"67":{"position":[[308,4]]},"93":{"position":[[249,4]]}}}],["9",{"_index":895,"t":{"65":{"position":[[27,1]]}}}],["9'",{"_index":176,"t":{"6":{"position":[[1333,3]]}}}],["99.99%—while",{"_index":27,"t":{"2":{"position":[[301,12]]}}}],["99.999999999",{"_index":419,"t":{"23":{"position":[[989,15]]}}}],["abov",{"_index":252,"t":{"13":{"position":[[15,5]]},"45":{"position":[[518,5]]},"97":{"position":[[1073,6]]}}}],["absolut",{"_index":408,"t":{"23":{"position":[[608,8]]}}}],["academia",{"_index":1025,"t":{"87":{"position":[[156,9]]}}}],["access",{"_index":537,"t":{"23":{"position":[[4714,11]]},"25":{"position":[[250,8]]},"37":{"position":[[457,6]]},"45":{"position":[[553,10]]},"91":{"position":[[149,6],[519,6]]},"95":{"position":[[773,11],[845,6],[1007,10]]},"97":{"position":[[451,10],[1163,10]]},"101":{"position":[[563,8],[600,6]]}}}],["accord",{"_index":341,"t":{"19":{"position":[[487,9]]},"111":{"position":[[1290,10],[1937,10]]}}}],["account",{"_index":960,"t":{"71":{"position":[[752,8]]}}}],["accur",{"_index":1096,"t":{"97":{"position":[[872,9]]},"101":{"position":[[399,9]]}}}],["accuraci",{"_index":1054,"t":{"95":{"position":[[421,9]]},"97":{"position":[[941,9]]}}}],["action",{"_index":1191,"t":{"111":{"position":[[2234,6]]}}}],["activ",{"_index":281,"t":{"15":{"position":[[252,6]]},"27":{"position":[[141,8]]},"45":{"position":[[478,6]]},"53":{"position":[[114,9]]},"77":{"position":[[646,10],[687,10],[780,10]]},"79":{"position":[[209,10]]},"101":{"position":[[524,10],[717,10]]}}}],["actual",{"_index":1092,"t":{"97":{"position":[[695,6]]}}}],["ad",{"_index":447,"t":{"23":{"position":[[1636,6]]},"30":{"position":[[27,6]]},"37":{"position":[[160,5],[1093,6]]},"49":{"position":[[419,5]]}}}],["add",{"_index":261,"t":{"13":{"position":[[375,3]]}}}],["addit",{"_index":215,"t":{"9":{"position":[[181,10]]},"51":{"position":[[188,10]]},"71":{"position":[[3,8]]}}}],["address",{"_index":354,"t":{"19":{"position":[[800,7]]},"21":{"position":[[23,7]]},"23":{"position":[[2578,10]]},"67":{"position":[[227,7]]},"69":{"position":[[552,8],[661,7],[768,9],[874,7]]},"93":{"position":[[167,7]]}}}],["adequ",{"_index":82,"t":{"4":{"position":[[259,8]]},"19":{"position":[[936,8]]},"75":{"position":[[288,8]]}}}],["adjud",{"_index":552,"t":{"23":{"position":[[5684,11],[5901,12]]}}}],["administ",{"_index":1170,"t":{"111":{"position":[[1227,12]]}}}],["administr",{"_index":1185,"t":{"111":{"position":[[1891,14]]}}}],["advanc",{"_index":499,"t":{"23":{"position":[[3155,8],[3252,8],[3319,8]]}}}],["advantag",{"_index":93,"t":{"4":{"position":[[455,10]]}}}],["advic",{"_index":1073,"t":{"95":{"position":[[1586,6]]}}}],["advis",{"_index":1126,"t":{"103":{"position":[[412,7]]}}}],["affect",{"_index":992,"t":{"77":{"position":[[668,7],[741,6]]},"113":{"position":[[412,6]]}}}],["affili",{"_index":1018,"t":{"85":{"position":[[88,11]]}}}],["against",{"_index":1133,"t":{"105":{"position":[[53,7]]},"111":{"position":[[102,7],[2276,7]]}}}],["aggreg",{"_index":145,"t":{"6":{"position":[[566,10],[650,11]]},"23":{"position":[[3868,12],[5014,10],[5581,10],[5598,10]]},"39":{"position":[[34,11]]},"63":{"position":[[395,9]]},"103":{"position":[[474,9]]}}}],["aggregator/valid",{"_index":737,"t":{"39":{"position":[[80,20]]}}}],["agre",{"_index":1036,"t":{"91":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":309,"t":{"17":{"position":[[211,9]]},"113":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":111,"t":{"4":{"position":[[786,4]]},"9":{"position":[[162,3]]},"15":{"position":[[18,4]]},"23":{"position":[[160,6],[706,3]]},"69":{"position":[[3,3]]},"97":{"position":[[1205,3]]}}}],["airdrop",{"_index":600,"t":{"23":{"position":[[7512,8]]}}}],["algorithm",{"_index":411,"t":{"23":{"position":[[695,10]]}}}],["align",{"_index":112,"t":{"4":{"position":[[831,6]]},"23":{"position":[[2908,8]]}}}],["allow",{"_index":195,"t":{"6":{"position":[[1776,8]]},"15":{"position":[[72,6],[131,6]]},"23":{"position":[[4806,6],[6083,5],[6844,6],[6937,5]]},"99":{"position":[[146,6]]}}}],["allus",{"_index":380,"t":{"21":{"position":[[160,8]]}}}],["along",{"_index":455,"t":{"23":{"position":[[1805,5]]}}}],["alongsid",{"_index":307,"t":{"17":{"position":[[187,9]]}}}],["alpha",{"_index":284,"t":{"15":{"position":[[293,6]]}}}],["altern",{"_index":352,"t":{"19":{"position":[[731,12]]},"69":{"position":[[1070,11]]}}}],["although",{"_index":99,"t":{"4":{"position":[[540,8]]}}}],["alway",{"_index":979,"t":{"75":{"position":[[662,6]]}}}],["amazon",{"_index":320,"t":{"19":{"position":[[117,7]]}}}],["amend",{"_index":1102,"t":{"97":{"position":[[1347,7]]}}}],["amic",{"_index":1158,"t":{"111":{"position":[[755,8]]}}}],["amount",{"_index":539,"t":{"23":{"position":[[4830,7],[5220,6]]},"69":{"position":[[403,6]]}}}],["analysi",{"_index":888,"t":{"63":{"position":[[191,9]]}}}],["analyt",{"_index":925,"t":{"69":{"position":[[623,10],[920,10],[966,10],[1054,9],[1092,10],[1160,9],[1261,9]]}}}],["ancient",{"_index":377,"t":{"21":{"position":[[136,7]]}}}],["announc",{"_index":384,"t":{"21":{"position":[[255,9]]},"55":{"position":[[193,12]]}}}],["anoth",{"_index":989,"t":{"77":{"position":[[509,7]]}}}],["anyon",{"_index":562,"t":{"23":{"position":[[6089,6]]}}}],["anyth",{"_index":559,"t":{"23":{"position":[[5992,8]]}}}],["api",{"_index":722,"t":{"37":{"position":[[991,3]]}}}],["append",{"_index":741,"t":{"39":{"position":[[191,11]]}}}],["appli",{"_index":903,"t":{"65":{"position":[[227,7]]},"71":{"position":[[309,6]]},"95":{"position":[[656,5]]},"103":{"position":[[587,5]]}}}],["applic",{"_index":13,"t":{"2":{"position":[[132,13]]},"19":{"position":[[1070,13]]},"23":{"position":[[4666,12],[7200,11],[7319,11]]},"69":{"position":[[226,10]]},"75":{"position":[[694,10]]},"95":{"position":[[697,10],[959,10]]},"103":{"position":[[628,10]]},"111":{"position":[[2017,10]]}}}],["approach",{"_index":255,"t":{"13":{"position":[[52,8]]},"65":{"position":[[98,8]]},"73":{"position":[[13,9]]}}}],["appropri",{"_index":1060,"t":{"95":{"position":[[806,11]]}}}],["arbitr",{"_index":1140,"t":{"109":{"position":[[102,12]]},"111":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["architectur",{"_index":409,"t":{"23":{"position":[[647,13]]}}}],["area",{"_index":846,"t":{"53":{"position":[[262,5]]}}}],["argument",{"_index":512,"t":{"23":{"position":[[3715,9]]}}}],["aris",{"_index":1125,"t":{"103":{"position":[[251,7]]},"105":{"position":[[130,7]]},"111":{"position":[[690,7]]}}}],["ark",{"_index":651,"t":{"32":{"position":[[19,3]]}}}],["aros",{"_index":1189,"t":{"111":{"position":[[2110,5]]}}}],["arriv",{"_index":870,"t":{"57":{"position":[[324,6]]}}}],["art",{"_index":389,"t":{"23":{"position":[[39,4]]}}}],["ask",{"_index":877,"t":{"59":{"position":[[126,3]]},"77":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":878,"t":{"59":{"position":[[162,6]]}}}],["associ",{"_index":829,"t":{"51":{"position":[[166,10]]},"67":{"position":[[152,12],[255,11],[434,12]]},"93":{"position":[[92,12],[196,11],[385,12]]}}}],["assumpt",{"_index":1083,"t":{"97":{"position":[[118,11]]}}}],["assur",{"_index":49,"t":{"2":{"position":[[633,11]]}}}],["async",{"_index":639,"t":{"30":{"position":[[179,5]]},"37":{"position":[[518,5]]}}}],["atla",{"_index":630,"t":{"30":{"position":[[34,5],[91,5]]}}}],["atom",{"_index":802,"t":{"47":{"position":[[399,6]]}}}],["attack",{"_index":821,"t":{"49":{"position":[[552,7]]}}}],["attent",{"_index":949,"t":{"71":{"position":[[351,9]]}}}],["attorney",{"_index":1135,"t":{"105":{"position":[[113,10]]}}}],["attribut",{"_index":1105,"t":{"99":{"position":[[71,11],[299,11]]}}}],["audit",{"_index":230,"t":{"9":{"position":[[462,8]]},"13":{"position":[[433,9]]},"51":{"position":[[461,5]]}}}],["avail",{"_index":184,"t":{"6":{"position":[[1539,9]]},"11":{"position":[[468,12]]},"13":{"position":[[517,10]]},"23":{"position":[[2758,10]]},"37":{"position":[[1115,14]]},"55":{"position":[[129,9]]},"95":{"position":[[478,12],[1062,9]]},"99":{"position":[[38,9]]}}}],["averag",{"_index":941,"t":{"69":{"position":[[1353,7]]}}}],["award",{"_index":1154,"t":{"111":{"position":[[561,5]]}}}],["away",{"_index":479,"t":{"23":{"position":[[2456,5]]}}}],["baarerstrass",{"_index":916,"t":{"67":{"position":[[291,13]]},"93":{"position":[[232,13]]}}}],["background",{"_index":1024,"t":{"87":{"position":[[141,11]]}}}],["backup",{"_index":457,"t":{"23":{"position":[[1842,7]]}}}],["balanc",{"_index":490,"t":{"23":{"position":[[2708,9]]}}}],["bandwidth",{"_index":29,"t":{"2":{"position":[[336,9]]},"6":{"position":[[1712,9]]},"11":{"position":[[372,9]]},"19":{"position":[[1316,9]]},"23":{"position":[[6062,9],[6270,9]]},"39":{"position":[[157,9]]}}}],["base",{"_index":45,"t":{"2":{"position":[[570,5]]},"4":{"position":[[142,5]]},"6":{"position":[[319,5]]},"9":{"position":[[449,5]]},"23":{"position":[[1910,5]]},"77":{"position":[[707,5]]},"97":{"position":[[65,5],[590,5]]}}}],["basi",{"_index":582,"t":{"23":{"position":[[6998,5]]},"69":{"position":[[205,5]]},"95":{"position":[[44,5],[1177,5]]}}}],["be",{"_index":1173,"t":{"111":{"position":[[1364,5]]}}}],["bear",{"_index":1097,"t":{"97":{"position":[[910,4]]}}}],["becom",{"_index":183,"t":{"6":{"position":[[1532,6]]},"23":{"position":[[6392,6]]}}}],["befor",{"_index":206,"t":{"9":{"position":[[78,6],[135,6]]},"77":{"position":[[791,6]]},"91":{"position":[[316,6]]}}}],["began",{"_index":373,"t":{"21":{"position":[[6,5]]}}}],["begin",{"_index":545,"t":{"23":{"position":[[5307,6]]},"25":{"position":[[366,5]]}}}],["behaviour",{"_index":59,"t":{"2":{"position":[[762,10]]}}}],["believ",{"_index":70,"t":{"4":{"position":[[107,8]]},"13":{"position":[[3,7]]},"77":{"position":[[978,7]]},"101":{"position":[[338,8]]},"111":{"position":[[294,7]]}}}],["below",{"_index":80,"t":{"4":{"position":[[230,6]]},"11":{"position":[[72,5]]},"43":{"position":[[120,5]]},"87":{"position":[[256,6],[425,6]]}}}],["beta",{"_index":762,"t":{"41":{"position":[[115,4]]}}}],["between",{"_index":1138,"t":{"109":{"position":[[62,7]]},"111":{"position":[[1714,7]]},"113":{"position":[[54,7]]}}}],["bid",{"_index":108,"t":{"4":{"position":[[736,7]]}}}],["big",{"_index":433,"t":{"23":{"position":[[1227,3]]}}}],["bind",{"_index":1064,"t":{"95":{"position":[[1214,7]]}}}],["bit",{"_index":818,"t":{"49":{"position":[[526,4]]}}}],["block",{"_index":681,"t":{"34":{"position":[[305,5]]},"45":{"position":[[60,5],[287,5]]},"47":{"position":[[4,5],[136,5],[180,5],[497,5]]}}}],["blockchain",{"_index":516,"t":{"23":{"position":[[3921,11],[4126,10],[4185,10]]},"59":{"position":[[50,11]]}}}],["book—an",{"_index":379,"t":{"21":{"position":[[152,7]]}}}],["bootstrap",{"_index":860,"t":{"55":{"position":[[219,9],[259,9]]}}}],["both",{"_index":724,"t":{"37":{"position":[[1008,4]]},"113":{"position":[[199,4]]}}}],["bounc",{"_index":939,"t":{"69":{"position":[[1336,6]]}}}],["bound",{"_index":1037,"t":{"91":{"position":[[403,5]]},"111":{"position":[[404,5]]}}}],["branch",{"_index":661,"t":{"34":{"position":[[28,6],[455,6]]}}}],["breach",{"_index":332,"t":{"19":{"position":[[312,8],[589,8]]}}}],["break",{"_index":446,"t":{"23":{"position":[[1612,8]]},"37":{"position":[[627,8],[681,8]]}}}],["briefli",{"_index":926,"t":{"69":{"position":[[637,7]]}}}],["bring",{"_index":1188,"t":{"111":{"position":[[2061,5]]}}}],["broadcast",{"_index":172,"t":{"6":{"position":[[1237,9]]}}}],["broader",{"_index":494,"t":{"23":{"position":[[2926,7]]}}}],["broadest",{"_index":1142,"t":{"111":{"position":[[34,8]]}}}],["broken",{"_index":622,"t":{"27":{"position":[[25,6]]},"43":{"position":[[25,6]]}}}],["bug",{"_index":671,"t":{"34":{"position":[[177,3]]}}}],["build",{"_index":1,"t":{"2":{"position":[[9,8]]},"13":{"position":[[64,8]]},"15":{"position":[[362,8]]},"19":{"position":[[1046,5]]},"23":{"position":[[7191,5]]},"34":{"position":[[377,5],[422,5]]},"55":{"position":[[150,5]]},"87":{"position":[[370,5]]}}}],["built",{"_index":835,"t":{"51":{"position":[[414,5]]}}}],["buy",{"_index":1077,"t":{"95":{"position":[[1694,3],[1734,3]]}}}],["c",{"_index":653,"t":{"32":{"position":[[35,1]]}}}],["c/o",{"_index":912,"t":{"67":{"position":[[267,3]]},"93":{"position":[[208,3]]}}}],["cach",{"_index":161,"t":{"6":{"position":[[953,7]]},"23":{"position":[[5032,7],[6048,7],[6112,7],[6146,7],[6401,7],[6751,7]]}}}],["calendar",{"_index":1167,"t":{"111":{"position":[[1073,8]]}}}],["call",{"_index":733,"t":{"37":{"position":[[1106,4]]}}}],["caption",{"_index":1199,"t":{"113":{"position":[[255,8]]}}}],["carefulli",{"_index":1035,"t":{"91":{"position":[[306,9]]}}}],["case",{"_index":402,"t":{"23":{"position":[[489,5]]},"57":{"position":[[350,4]]}}}],["catch",{"_index":719,"t":{"37":{"position":[[934,8]]}}}],["catchableerror",{"_index":720,"t":{"37":{"position":[[947,15]]}}}],["cc",{"_index":1014,"t":{"83":{"position":[[144,2]]},"99":{"position":[[109,3]]},"113":{"position":[[957,2]]}}}],["cdn",{"_index":568,"t":{"23":{"position":[[6242,4]]}}}],["censor",{"_index":336,"t":{"19":{"position":[[410,9]]}}}],["censorship",{"_index":10,"t":{"2":{"position":[[102,10]]},"13":{"position":[[149,10]]},"17":{"position":[[82,10]]},"19":{"position":[[278,10],[710,10],[912,11]]},"23":{"position":[[177,10],[442,10],[4274,10]]}}}],["central",{"_index":394,"t":{"23":{"position":[[237,11],[286,11],[343,11]]}}}],["centralis",{"_index":257,"t":{"13":{"position":[[194,11]]},"19":{"position":[[209,11],[343,11],[534,11]]}}}],["ceremoni",{"_index":832,"t":{"51":{"position":[[237,9]]}}}],["certain",{"_index":465,"t":{"23":{"position":[[2101,7]]},"69":{"position":[[133,7]]},"71":{"position":[[152,7],[183,7]]},"77":{"position":[[145,7]]},"99":{"position":[[270,7]]}}}],["chain",{"_index":520,"t":{"23":{"position":[[4228,5]]}}}],["challeng",{"_index":515,"t":{"23":{"position":[[3830,10]]}}}],["chamber",{"_index":1171,"t":{"111":{"position":[[1253,9]]}}}],["chanc",{"_index":423,"t":{"23":{"position":[[1031,6]]}}}],["chang",{"_index":637,"t":{"30":{"position":[[105,7]]},"37":{"position":[[109,7],[636,7],[690,7],[759,7],[862,7]]},"47":{"position":[[169,7]]},"81":{"position":[[135,8]]},"97":{"position":[[583,6],[1329,6]]},"107":{"position":[[161,8]]}}}],["charg",{"_index":550,"t":{"23":{"position":[[5622,6]]}}}],["check",{"_index":857,"t":{"55":{"position":[[123,5]]},"81":{"position":[[96,5]]},"87":{"position":[[389,5],[523,5]]},"107":{"position":[[119,8]]}}}],["choic",{"_index":984,"t":{"77":{"position":[[153,7]]}}}],["chrono",{"_index":642,"t":{"30":{"position":[[205,7]]},"34":{"position":[[72,7],[444,7],[482,7]]}}}],["chunk",{"_index":196,"t":{"6":{"position":[[1819,6]]}}}],["ci/dock",{"_index":686,"t":{"34":{"position":[[351,9]]}}}],["circom",{"_index":652,"t":{"32":{"position":[[23,6],[50,6],[68,6]]}}}],["circuit",{"_index":658,"t":{"32":{"position":[[131,8]]},"51":{"position":[[37,7]]}}}],["circuits/tree/master/reference/nim/proof_input",{"_index":840,"t":{"51":{"position":[[664,46]]}}}],["claim",{"_index":598,"t":{"23":{"position":[[7453,8]]},"95":{"position":[[724,6]]},"103":{"position":[[503,6]]},"105":{"position":[[73,7]]},"111":{"position":[[87,5],[939,5],[2071,6],[2104,5],[2176,6]]}}}],["class",{"_index":1190,"t":{"111":{"position":[[2228,5]]}}}],["classwid",{"_index":1193,"t":{"111":{"position":[[2254,9]]}}}],["claus",{"_index":976,"t":{"75":{"position":[[459,7]]},"111":{"position":[[439,7]]}}}],["clean",{"_index":715,"t":{"37":{"position":[[842,5]]}}}],["cleaner",{"_index":716,"t":{"37":{"position":[[890,7]]}}}],["cleanup",{"_index":881,"t":{"61":{"position":[[31,7]]}}}],["client",{"_index":24,"t":{"2":{"position":[[256,7]]},"6":{"position":[[667,6],[777,6],[790,6],[902,6]]},"9":{"position":[[196,8],[296,6]]},"11":{"position":[[174,7]]},"23":{"position":[[5051,6],[6462,6],[6475,6]]},"27":{"position":[[59,7]]},"34":{"position":[[118,6]]},"43":{"position":[[63,7]]},"45":{"position":[[8,7],[156,6],[406,6],[530,6]]},"49":{"position":[[226,7]]},"53":{"position":[[373,6]]},"87":{"position":[[301,6]]},"89":{"position":[[31,7]]}}}],["cloud",{"_index":327,"t":{"19":{"position":[[221,5],[355,5]]},"23":{"position":[[328,7],[422,5]]}}}],["code",{"_index":40,"t":{"2":{"position":[[479,7]]},"6":{"position":[[615,7],[1736,6]]},"9":{"position":[[331,7]]},"13":{"position":[[387,7]]},"23":{"position":[[802,6],[1275,6],[1513,6],[1577,6]]},"37":{"position":[[102,6]]},"45":{"position":[[313,7]]},"63":{"position":[[357,6]]}}}],["codenam",{"_index":204,"t":{"9":{"position":[[60,9]]}}}],["codex",{"_index":0,"t":{"2":{"position":[[0,5],[406,5]]},"4":{"position":[[101,5],[576,5],[851,5]]},"6":{"position":[[0,5],[746,5],[880,5],[1928,5]]},"9":{"position":[[0,5],[423,5]]},"11":{"position":[[4,5],[89,5],[274,5]]},"13":{"position":[[678,5]]},"15":{"position":[[4,5],[315,5],[376,6]]},"17":{"position":[[0,5]]},"21":{"position":[[0,5],[115,7],[245,5]]},"23":{"position":[[8,6],[15,5],[265,5],[364,5],[565,5],[1240,5],[1562,6],[1737,6],[2025,5],[2277,6],[2368,6],[2772,5],[2798,5],[2961,5],[3045,5],[3301,5],[3629,5],[3671,5],[4092,5],[4152,5],[4358,5],[4387,5],[4533,6],[4540,5],[4784,6],[4964,5],[6630,5],[7222,6],[7275,5],[7345,5],[7365,5],[7388,5],[7478,5],[7506,5],[7540,5],[7577,5],[7772,5],[7852,5]]},"25":{"position":[[4,5],[233,5],[269,5],[411,5]]},"32":{"position":[[110,5],[157,5]]},"37":{"position":[[776,5]]},"41":{"position":[[4,5]]},"45":{"position":[[400,5],[524,5],[572,5]]},"49":{"position":[[150,5],[220,5]]},"55":{"position":[[173,5],[213,5]]},"63":{"position":[[492,5]]},"85":{"position":[[30,5]]},"87":{"position":[[0,5],[221,5],[263,5],[277,5],[295,5],[308,5],[323,5],[471,5]]},"89":{"position":[[0,5],[24,6]]}}}],["codex'",{"_index":129,"t":{"6":{"position":[[242,7]]},"9":{"position":[[237,7]]},"13":{"position":[[186,7]]},"23":{"position":[[639,7]]}}}],["codex/pull/566",{"_index":800,"t":{"47":{"position":[[348,14]]}}}],["codex/pull/607",{"_index":882,"t":{"61":{"position":[[82,14]]}}}],["codex/pull/625",{"_index":826,"t":{"49":{"position":[[709,14]]}}}],["codex’",{"_index":540,"t":{"23":{"position":[[4947,7]]},"63":{"position":[[334,7]]}}}],["cold",{"_index":517,"t":{"23":{"position":[[4110,4]]}}}],["collater",{"_index":106,"t":{"4":{"position":[[708,11]]},"6":{"position":[[308,10],[332,10],[1669,10]]},"23":{"position":[[4006,10],[5189,10],[5267,10],[5805,10],[7620,10]]},"59":{"position":[[149,12]]}}}],["collect",{"_index":386,"t":{"21":{"position":[[281,10]]},"23":{"position":[[5632,11],[6318,12]]},"67":{"position":[[48,10],[141,10],[244,10],[423,10]]},"69":{"position":[[20,10],[35,10],[113,7],[270,7],[471,7],[1170,8]]},"71":{"position":[[31,10],[78,7]]},"77":{"position":[[50,10],[216,7]]},"93":{"position":[[81,10],[185,10],[374,10]]}}}],["collective'",{"_index":312,"t":{"17":{"position":[[294,12]]}}}],["combin",{"_index":34,"t":{"2":{"position":[[381,7]]}}}],["come",{"_index":1000,"t":{"79":{"position":[[25,4]]}}}],["command",{"_index":636,"t":{"30":{"position":[[97,7]]}}}],["commerci",{"_index":1110,"t":{"99":{"position":[[243,10]]}}}],["commiss",{"_index":973,"t":{"75":{"position":[[358,11]]}}}],["commission",{"_index":997,"t":{"77":{"position":[[949,12]]}}}],["commit",{"_index":165,"t":{"6":{"position":[[1037,7]]},"95":{"position":[[1200,10]]}}}],["common",{"_index":577,"t":{"23":{"position":[[6603,6]]},"99":{"position":[[63,7]]}}}],["commun",{"_index":286,"t":{"15":{"position":[[321,10],[535,9]]},"17":{"position":[[243,14]]},"87":{"position":[[491,9]]},"111":{"position":[[1699,14]]}}}],["compar",{"_index":371,"t":{"19":{"position":[[1386,10]]},"23":{"position":[[2967,7]]}}}],["compat",{"_index":657,"t":{"32":{"position":[[57,6],[75,6]]}}}],["compens",{"_index":601,"t":{"23":{"position":[[7668,12]]}}}],["competit",{"_index":92,"t":{"4":{"position":[[443,11]]}}}],["compil",{"_index":823,"t":{"49":{"position":[[621,11]]}}}],["complaint",{"_index":995,"t":{"77":{"position":[[890,9]]}}}],["complement",{"_index":193,"t":{"6":{"position":[[1743,11]]}}}],["complet",{"_index":629,"t":{"30":{"position":[[0,10]]},"32":{"position":[[0,10]]},"34":{"position":[[0,10]]},"37":{"position":[[0,10]]},"39":{"position":[[209,10]]},"95":{"position":[[407,13]]},"97":{"position":[[894,8],[966,12]]}}}],["compli",{"_index":1038,"t":{"91":{"position":[[413,6]]},"95":{"position":[[940,9]]}}}],["compliant",{"_index":1059,"t":{"95":{"position":[[793,9]]}}}],["compon",{"_index":776,"t":{"45":{"position":[[233,10]]},"51":{"position":[[199,11]]}}}],["compos",{"_index":116,"t":{"6":{"position":[[9,8]]}}}],["compress",{"_index":814,"t":{"49":{"position":[[431,8]]},"63":{"position":[[419,12]]}}}],["compris",{"_index":827,"t":{"51":{"position":[[19,9]]}}}],["compromis",{"_index":933,"t":{"69":{"position":[[1116,10]]}}}],["comput",{"_index":587,"t":{"23":{"position":[[7155,9]]}}}],["concentr",{"_index":502,"t":{"23":{"position":[[3447,13]]}}}],["concept",{"_index":202,"t":{"9":{"position":[[41,7]]}}}],["concern",{"_index":847,"t":{"53":{"position":[[271,7]]},"95":{"position":[[392,10]]}}}],["concret",{"_index":797,"t":{"47":{"position":[[290,8]]}}}],["condit",{"_index":1090,"t":{"97":{"position":[[627,11]]},"101":{"position":[[92,11]]}}}],["conduct",{"_index":248,"t":{"11":{"position":[[455,7]]},"111":{"position":[[1556,9]]}}}],["confer",{"_index":1176,"t":{"111":{"position":[[1576,10]]}}}],["confidenti",{"_index":1182,"t":{"111":{"position":[[1747,13]]}}}],["configur",{"_index":848,"t":{"53":{"position":[[318,10]]},"55":{"position":[[0,9],[57,9]]}}}],["conflict",{"_index":1141,"t":{"109":{"position":[[133,8]]}}}],["conform",{"_index":780,"t":{"45":{"position":[[413,8]]},"75":{"position":[[678,10]]}}}],["connect",{"_index":873,"t":{"57":{"position":[[377,7]]},"103":{"position":[[279,9]]}}}],["consensu",{"_index":561,"t":{"23":{"position":[[6020,9]]}}}],["consent",{"_index":991,"t":{"77":{"position":[[564,7],[611,7],[721,7],[822,8]]}}}],["consequenti",{"_index":1124,"t":{"103":{"position":[[217,13]]}}}],["consid",{"_index":282,"t":{"15":{"position":[[278,10]]},"95":{"position":[[1122,10],[1273,10]]}}}],["consist",{"_index":464,"t":{"23":{"position":[[2037,10],[4970,8]]},"111":{"position":[[1641,7]]}}}],["constantin",{"_index":824,"t":{"49":{"position":[[646,11]]}}}],["constitut",{"_index":1070,"t":{"95":{"position":[[1543,10]]}}}],["constru",{"_index":1076,"t":{"95":{"position":[[1662,9]]}}}],["consult",{"_index":914,"t":{"67":{"position":[[275,10]]},"93":{"position":[[216,10]]}}}],["consum",{"_index":164,"t":{"6":{"position":[[1016,8]]},"23":{"position":[[6656,7],[6786,8]]}}}],["contact",{"_index":1011,"t":{"83":{"position":[[75,7]]},"113":{"position":[[888,7]]}}}],["contain",{"_index":1034,"t":{"91":{"position":[[221,9]]},"95":{"position":[[1287,7],[1517,9]]},"97":{"position":[[21,7],[815,9],[994,9]]}}}],["contemporan",{"_index":1196,"t":{"113":{"position":[[123,15]]}}}],["content",{"_index":564,"t":{"23":{"position":[[6174,8]]},"71":{"position":[[191,8],[249,7]]},"79":{"position":[[197,7]]},"91":{"position":[[195,7]]},"95":{"position":[[522,7],[589,7],[762,7],[986,7]]},"99":{"position":[[20,8],[194,7]]},"101":{"position":[[310,7],[377,7]]},"103":{"position":[[339,7]]},"105":{"position":[[186,7]]},"111":{"position":[[198,7]]}}}],["context",{"_index":472,"t":{"23":{"position":[[2266,7]]}}}],["continu",{"_index":606,"t":{"25":{"position":[[15,9]]},"37":{"position":[[570,8],[644,8]]},"47":{"position":[[533,10]]},"63":{"position":[[310,10]]}}}],["contract",{"_index":110,"t":{"4":{"position":[[760,10]]},"6":{"position":[[373,10],[415,8],[1058,8],[1311,8],[1621,8],[1875,8]]},"13":{"position":[[309,8]]},"23":{"position":[[5696,8],[5914,9],[5960,9],[7696,10]]},"37":{"position":[[246,8],[750,8]]},"51":{"position":[[123,8]]},"59":{"position":[[27,8],[73,8],[291,8]]},"95":{"position":[[1190,9]]},"103":{"position":[[44,9]]}}}],["contractu",{"_index":975,"t":{"75":{"position":[[447,11]]}}}],["contrast",{"_index":506,"t":{"23":{"position":[[3549,9]]}}}],["contribut",{"_index":272,"t":{"13":{"position":[[664,10]]},"15":{"position":[[383,12]]},"87":{"position":[[501,14]]}}}],["contributor",{"_index":1027,"t":{"87":{"position":[[197,12],[349,12]]}}}],["control",{"_index":904,"t":{"67":{"position":[[96,11]]},"71":{"position":[[780,7]]},"77":{"position":[[522,10]]},"101":{"position":[[443,7]]}}}],["controversi",{"_index":1144,"t":{"111":{"position":[[113,11]]}}}],["conveni",{"_index":326,"t":{"19":{"position":[[196,12]]}}}],["convent",{"_index":890,"t":{"63":{"position":[[280,11]]}}}],["cooki",{"_index":955,"t":{"71":{"position":[[558,7],[595,7],[799,7]]}}}],["copi",{"_index":987,"t":{"77":{"position":[[448,4]]},"99":{"position":[[162,5]]}}}],["core",{"_index":385,"t":{"21":{"position":[[270,4]]},"30":{"position":[[174,4]]}}}],["correct",{"_index":892,"t":{"63":{"position":[[467,7]]},"77":{"position":[[315,7]]}}}],["correspond",{"_index":174,"t":{"6":{"position":[[1290,13]]}}}],["corrupt",{"_index":9,"t":{"2":{"position":[[87,10]]}}}],["cost",{"_index":163,"t":{"6":{"position":[[981,4]]},"19":{"position":[[338,4]]},"23":{"position":[[6879,4]]},"103":{"position":[[141,4]]},"111":{"position":[[373,4]]}}}],["count",{"_index":684,"t":{"34":{"position":[[330,6]]},"47":{"position":[[524,8]]}}}],["counterpart",{"_index":258,"t":{"13":{"position":[[223,13]]}}}],["countri",{"_index":971,"t":{"75":{"position":[[248,9]]}}}],["court",{"_index":1139,"t":{"109":{"position":[[93,5]]},"111":{"position":[[530,5],[1488,6]]}}}],["cover",{"_index":749,"t":{"39":{"position":[[344,5]]},"113":{"position":[[27,5]]}}}],["creat",{"_index":273,"t":{"15":{"position":[[26,6]]},"19":{"position":[[661,7]]},"23":{"position":[[1874,7],[3599,6]]},"30":{"position":[[122,6]]},"95":{"position":[[1136,8]]}}}],["creativ",{"_index":1104,"t":{"99":{"position":[[54,8]]}}}],["critic",{"_index":534,"t":{"23":{"position":[[4618,8]]}}}],["cross",{"_index":872,"t":{"57":{"position":[[371,5]]}}}],["crucial",{"_index":430,"t":{"23":{"position":[[1176,7]]},"53":{"position":[[132,7]]}}}],["cryptographi",{"_index":1023,"t":{"87":{"position":[[111,12]]}}}],["current",{"_index":150,"t":{"6":{"position":[[699,9]]},"9":{"position":[[9,9],[259,7]]},"13":{"position":[[165,9]]},"23":{"position":[[3016,9],[4364,9],[4396,9],[6362,7]]},"27":{"position":[[15,9]]},"43":{"position":[[15,9]]},"45":{"position":[[364,9]]},"63":{"position":[[0,7],[238,7]]},"97":{"position":[[74,7]]}}}],["d/c",{"_index":855,"t":{"55":{"position":[[86,3]]}}}],["da",{"_index":747,"t":{"39":{"position":[[314,3],[378,3]]}}}],["dagger",{"_index":205,"t":{"9":{"position":[[70,7],[229,7]]}}}],["damag",{"_index":439,"t":{"23":{"position":[[1386,8],[1999,8],[2415,8],[2492,6]]},"103":{"position":[[231,7],[447,8]]},"105":{"position":[[81,7]]}}}],["data",{"_index":3,"t":{"2":{"position":[[28,4],[235,4],[506,4],[539,4],[617,4],[682,4]]},"4":{"position":[[663,5]]},"6":{"position":[[519,4],[862,5],[1086,5],[1173,4],[1257,4],[1831,4]]},"11":{"position":[[215,4],[463,4]]},"13":{"position":[[75,4],[356,5],[512,4]]},"15":{"position":[[90,4],[156,4]]},"17":{"position":[[25,4]]},"19":{"position":[[227,4],[297,4],[420,4],[457,5],[584,4],[967,4]]},"21":{"position":[[176,4]]},"23":{"position":[[119,4],[391,4],[617,4],[726,4],[834,4],[851,4],[895,4],[1064,5],[1157,4],[1213,4],[1290,4],[1320,4],[1449,5],[1473,4],[1546,4],[1604,4],[1649,4],[1768,4],[1932,5],[1961,4],[2061,4],[2169,4],[2226,4],[2352,4],[2389,4],[2632,5],[2744,4],[2902,5],[3180,4],[3220,4],[3277,4],[3400,4],[3464,4],[3519,4],[3650,4],[3774,4],[3971,4],[4071,4],[4511,4],[4574,4],[4768,4],[4841,4],[5230,4],[5323,5],[5371,4],[6541,4],[6795,4]]},"39":{"position":[[186,4],[203,5]]},"45":{"position":[[281,5]]},"47":{"position":[[142,5]]},"51":{"position":[[182,5],[476,4]]},"67":{"position":[[86,4]]},"69":{"position":[[73,4],[150,4],[302,4],[361,5],[514,4],[1147,5]]},"71":{"position":[[54,5],[106,4]]},"73":{"position":[[31,4],[165,4]]},"75":{"position":[[50,4],[134,4],[217,4],[491,4],[609,4]]},"77":{"position":[[93,4],[199,4],[347,4],[412,4],[470,5],[517,4],[597,4],[873,5],[917,4],[1005,4]]}}}],["dataset",{"_index":680,"t":{"34":{"position":[[273,7]]},"59":{"position":[[191,9]]}}}],["datastor",{"_index":801,"t":{"47":{"position":[[378,9]]}}}],["datastore/pull/58",{"_index":803,"t":{"47":{"position":[[463,17]]}}}],["date",{"_index":293,"t":{"15":{"position":[[455,4]]}}}],["day",{"_index":1168,"t":{"111":{"position":[[1082,4]]}}}],["de",{"_index":337,"t":{"19":{"position":[[433,2]]}}}],["deal",{"_index":880,"t":{"59":{"position":[[218,4]]}}}],["debug",{"_index":662,"t":{"34":{"position":[[39,9]]},"57":{"position":[[8,9]]},"61":{"position":[[97,9]]}}}],["decentr",{"_index":390,"t":{"23":{"position":[[44,13],[142,17],[2984,13],[3369,16]]}}}],["decentralis",{"_index":7,"t":{"2":{"position":[[62,14],[442,13]]},"13":{"position":[[209,13]]},"15":{"position":[[35,13]]},"17":{"position":[[11,13]]},"19":{"position":[[695,14],[1093,13],[1243,13]]},"21":{"position":[[53,13]]}}}],["decis",{"_index":1175,"t":{"111":{"position":[[1456,8]]}}}],["deem",{"_index":972,"t":{"75":{"position":[[320,6]]},"111":{"position":[[1396,6]]}}}],["defin",{"_index":876,"t":{"59":{"position":[[82,7]]},"113":{"position":[[378,7]]}}}],["degre",{"_index":1087,"t":{"97":{"position":[[505,6],[1032,6]]}}}],["delet",{"_index":682,"t":{"34":{"position":[[311,8]]},"47":{"position":[[503,8]]},"57":{"position":[[401,6]]}}}],["deliv",{"_index":213,"t":{"9":{"position":[[169,7]]},"11":{"position":[[81,7]]}}}],["demand",{"_index":87,"t":{"4":{"position":[[333,6]]},"6":{"position":[[123,7],[460,8]]},"23":{"position":[[6370,8]]}}}],["demo",{"_index":608,"t":{"25":{"position":[[82,4]]}}}],["deniabl",{"_index":21,"t":{"2":{"position":[[214,11]]}}}],["depend",{"_index":573,"t":{"23":{"position":[[6349,9]]}}}],["deploy",{"_index":243,"t":{"11":{"position":[[267,6]]},"37":{"position":[[255,8]]},"53":{"position":[[53,6]]},"55":{"position":[[46,10],[206,6],[247,6]]},"59":{"position":[[36,8]]}}}],["deriv",{"_index":704,"t":{"37":{"position":[[431,7],[468,7]]}}}],["describ",{"_index":237,"t":{"11":{"position":[[114,10]]},"95":{"position":[[1483,9]]},"97":{"position":[[1063,9],[1131,9]]}}}],["descript",{"_index":1085,"t":{"97":{"position":[[289,13]]}}}],["deseri",{"_index":726,"t":{"37":{"position":[[1027,11]]}}}],["design",{"_index":398,"t":{"23":{"position":[[373,8],[3575,6],[4799,6]]},"39":{"position":[[101,6],[150,6],[405,6]]}}}],["desir",{"_index":358,"t":{"19":{"position":[[888,9]]}}}],["detail",{"_index":79,"t":{"4":{"position":[[221,8]]},"11":{"position":[[63,8]]},"63":{"position":[[201,7]]},"69":{"position":[[1213,7]]},"97":{"position":[[313,8]]}}}],["detect",{"_index":500,"t":{"23":{"position":[[3230,10],[3660,10],[3784,10]]}}}],["determin",{"_index":891,"t":{"63":{"position":[[451,11]]}}}],["dev",{"_index":754,"t":{"41":{"position":[[10,3]]}}}],["develop",{"_index":81,"t":{"4":{"position":[[241,11]]},"11":{"position":[[134,7],[199,7],[298,7],[348,7]]},"15":{"position":[[259,11]]},"25":{"position":[[344,11]]},"27":{"position":[[0,11]]},"41":{"position":[[65,11],[191,11]]},"43":{"position":[[0,11]]},"49":{"position":[[164,10]]},"53":{"position":[[223,11]]},"57":{"position":[[89,9]]},"87":{"position":[[9,9],[63,11]]},"97":{"position":[[353,11],[649,13],[702,11]]}}}],["devic",{"_index":128,"t":{"6":{"position":[[201,7]]},"23":{"position":[[7176,8]]},"71":{"position":[[583,7]]}}}],["devnet",{"_index":240,"t":{"11":{"position":[[167,6]]}}}],["dht",{"_index":738,"t":{"39":{"position":[[108,3]]},"57":{"position":[[220,3]]}}}],["differ",{"_index":120,"t":{"6":{"position":[[56,9]]},"23":{"position":[[271,9],[1342,9],[4919,9]]},"25":{"position":[[474,9]]},"27":{"position":[[120,9]]},"51":{"position":[[304,9]]}}}],["differenti",{"_index":35,"t":{"2":{"position":[[392,13]]}}}],["diffus",{"_index":750,"t":{"39":{"position":[[355,9]]}}}],["directli",{"_index":956,"t":{"71":{"position":[[610,8]]}}}],["disappear",{"_index":673,"t":{"34":{"position":[[197,11]]}}}],["disclaim",{"_index":1042,"t":{"95":{"position":[[115,8],[639,11]]}}}],["discord",{"_index":299,"t":{"15":{"position":[[548,7]]}}}],["discourag",{"_index":97,"t":{"4":{"position":[[504,10]]}}}],["discret",{"_index":1040,"t":{"95":{"position":[[91,10],[894,10]]},"97":{"position":[[1415,11]]}}}],["discuss",{"_index":518,"t":{"23":{"position":[[4161,10]]}}}],["disk",{"_index":645,"t":{"30":{"position":[[232,4]]}}}],["disput",{"_index":1137,"t":{"109":{"position":[[53,8]]},"111":{"position":[[16,9],[338,8],[682,7],[828,8],[880,7],[922,8],[1047,7],[1118,8],[1141,7]]}}}],["disrupt",{"_index":357,"t":{"19":{"position":[[871,12]]}}}],["distinct",{"_index":624,"t":{"27":{"position":[[43,8]]},"43":{"position":[[43,8]]}}}],["distinguish",{"_index":495,"t":{"23":{"position":[[3051,13]]}}}],["distribut",{"_index":473,"t":{"23":{"position":[[2311,11],[3185,13],[3282,12],[3405,13]]},"87":{"position":[[75,11]]},"99":{"position":[[179,10]]}}}],["document",{"_index":614,"t":{"25":{"position":[[291,14]]},"83":{"position":[[117,8]]},"113":{"position":[[930,8]]}}}],["doesn't",{"_index":476,"t":{"23":{"position":[[2435,7]]}}}],["doesn’t",{"_index":932,"t":{"69":{"position":[[1108,7]]},"77":{"position":[[733,7]]}}}],["domicil",{"_index":911,"t":{"67":{"position":[[218,8]]},"93":{"position":[[158,8]]}}}],["domin",{"_index":314,"t":{"19":{"position":[[32,9]]}}}],["don't",{"_index":485,"t":{"23":{"position":[[2609,5],[5882,5]]}}}],["don’t",{"_index":923,"t":{"69":{"position":[[315,5]]}}}],["doubl",{"_index":160,"t":{"6":{"position":[[943,6]]}}}],["down",{"_index":675,"t":{"34":{"position":[[238,4]]}}}],["draft",{"_index":676,"t":{"34":{"position":[[243,5]]}}}],["draw",{"_index":948,"t":{"71":{"position":[[341,4]]}}}],["drawback",{"_index":329,"t":{"19":{"position":[[267,10]]}}}],["driven",{"_index":83,"t":{"4":{"position":[[291,6]]}}}],["drop",{"_index":489,"t":{"23":{"position":[[2693,5]]}}}],["due",{"_index":695,"t":{"37":{"position":[[83,3]]},"63":{"position":[[34,3]]}}}],["dummi",{"_index":699,"t":{"37":{"position":[[266,5]]}}}],["durabl",{"_index":2,"t":{"2":{"position":[[20,7],[273,10],[544,10],[622,10]]},"6":{"position":[[449,10]]},"9":{"position":[[368,10]]},"13":{"position":[[109,10]]},"15":{"position":[[49,10],[178,10]]},"17":{"position":[[108,10]]},"19":{"position":[[972,10],[1364,10]]},"21":{"position":[[44,8]]},"23":{"position":[[111,7],[396,11],[549,10],[731,10],[839,11],[856,10],[962,10],[1162,10],[4076,11]]}}}],["durat",{"_index":175,"t":{"6":{"position":[[1320,8]]}}}],["dynam",{"_index":740,"t":{"39":{"position":[[178,7]]}}}],["each",{"_index":118,"t":{"6":{"position":[[42,4],[135,4]]},"13":{"position":[[578,4]]},"43":{"position":[[143,4]]},"97":{"position":[[1303,4]]}}}],["earli",{"_index":367,"t":{"19":{"position":[[1149,5]]}}}],["econom",{"_index":269,"t":{"13":{"position":[[628,8]]},"23":{"position":[[661,8],[4042,8]]}}}],["edonkey",{"_index":368,"t":{"19":{"position":[[1187,7]]}}}],["effect",{"_index":809,"t":{"49":{"position":[[199,11]]},"81":{"position":[[175,9]]},"107":{"position":[[207,9]]},"111":{"position":[[359,9],[378,9]]},"113":{"position":[[681,7]]}}}],["effici",{"_index":30,"t":{"2":{"position":[[346,10],[496,9],[672,9],[815,9]]},"13":{"position":[[408,9]]},"19":{"position":[[1282,9]]},"23":{"position":[[2534,9],[3390,9],[3505,10],[3751,9]]},"49":{"position":[[183,11]]},"53":{"position":[[90,11]]}}}],["effort",{"_index":758,"t":{"41":{"position":[[77,7]]},"47":{"position":[[153,6],[227,8]]},"51":{"position":[[536,8]]},"63":{"position":[[125,7]]},"111":{"position":[[733,7],[782,7]]}}}],["eg",{"_index":395,"t":{"23":{"position":[[316,4]]}}}],["elast",{"_index":863,"t":{"57":{"position":[[99,7]]}}}],["eleven",{"_index":417,"t":{"23":{"position":[[976,6]]}}}],["emb",{"_index":951,"t":{"71":{"position":[[404,5]]}}}],["embed",{"_index":962,"t":{"71":{"position":[[870,9]]}}}],["emerg",{"_index":565,"t":{"23":{"position":[[6210,8]]}}}],["enabl",{"_index":90,"t":{"4":{"position":[[411,8]]},"6":{"position":[[156,8]]}}}],["encod",{"_index":410,"t":{"23":{"position":[[686,8]]}}}],["encourag",{"_index":57,"t":{"2":{"position":[[743,9]]},"4":{"position":[[343,9]]}}}],["encrypt",{"_index":869,"t":{"57":{"position":[[304,10]]}}}],["end",{"_index":211,"t":{"9":{"position":[[146,3],[399,3]]},"41":{"position":[[135,3]]},"61":{"position":[[126,3],[133,3]]}}}],["endomorph",{"_index":743,"t":{"39":{"position":[[230,12]]}}}],["endors",{"_index":1113,"t":{"101":{"position":[[260,8]]}}}],["endpoint",{"_index":777,"t":{"45":{"position":[[258,9],[382,9],[537,9]]}}}],["enforc",{"_index":1143,"t":{"111":{"position":[[51,11],[1472,8]]},"113":{"position":[[703,7],[798,7]]}}}],["engag",{"_index":575,"t":{"23":{"position":[[6488,6]]}}}],["engin",{"_index":5,"t":{"2":{"position":[[41,6]]},"13":{"position":[[88,6]]},"15":{"position":[[60,6]]},"23":{"position":[[6030,7]]},"89":{"position":[[15,8]]}}}],["engine'",{"_index":381,"t":{"21":{"position":[[189,8]]}}}],["english",{"_index":1184,"t":{"111":{"position":[[1804,8]]}}}],["enhanc",{"_index":505,"t":{"23":{"position":[[3491,9]]},"69":{"position":[[820,7]]},"71":{"position":[[489,8]]}}}],["enough",{"_index":482,"t":{"23":{"position":[[2485,6]]}}}],["ensur",{"_index":75,"t":{"4":{"position":[[173,6],[794,6]]},"23":{"position":[[2201,8],[4064,6]]},"51":{"position":[[383,8]]},"53":{"position":[[283,8],[360,8]]},"69":{"position":[[781,6]]},"75":{"position":[[470,6]]}}}],["enter",{"_index":1032,"t":{"91":{"position":[[100,7]]}}}],["entir",{"_index":468,"t":{"23":{"position":[[2153,6]]},"113":{"position":[[37,6]]}}}],["entireti",{"_index":549,"t":{"23":{"position":[[5547,8]]}}}],["entiti",{"_index":906,"t":{"67":{"position":[[121,6]]},"93":{"position":[[61,6]]}}}],["entre",{"_index":583,"t":{"23":{"position":[[7021,6]]}}}],["environ",{"_index":862,"t":{"57":{"position":[[69,11]]},"97":{"position":[[678,12]]}}}],["ephemer",{"_index":574,"t":{"23":{"position":[[6435,9]]}}}],["epic",{"_index":628,"t":{"27":{"position":[[232,6]]},"53":{"position":[[202,5]]}}}],["equit",{"_index":1118,"t":{"103":{"position":[[102,9]]}}}],["erasur",{"_index":39,"t":{"2":{"position":[[471,7]]},"6":{"position":[[607,7],[1728,7]]},"9":{"position":[[323,7]]},"13":{"position":[[379,7]]},"23":{"position":[[794,7],[1267,7],[1505,7],[1569,7]]},"37":{"position":[[94,7]]},"45":{"position":[[305,7]]},"63":{"position":[[349,7]]}}}],["essenc",{"_index":1107,"t":{"99":{"position":[[125,7]]}}}],["establish",{"_index":259,"t":{"13":{"position":[[252,9]]},"19":{"position":[[387,11]]}}}],["estim",{"_index":1081,"t":{"97":{"position":[[96,10]]}}}],["etc",{"_index":321,"t":{"19":{"position":[[125,4]]}}}],["ether",{"_index":700,"t":{"37":{"position":[[335,7],[408,6],[600,6],[855,6]]}}}],["ethereum",{"_index":250,"t":{"11":{"position":[[508,8]]},"23":{"position":[[5951,8]]}}}],["eur",{"_index":1127,"t":{"103":{"position":[[524,3]]}}}],["euro",{"_index":1129,"t":{"103":{"position":[[545,7]]}}}],["europ",{"_index":977,"t":{"75":{"position":[[558,7]]}}}],["european",{"_index":969,"t":{"75":{"position":[[161,8],[349,8],[626,8]]}}}],["even",{"_index":431,"t":{"23":{"position":[[1199,4],[6430,4]]},"103":{"position":[[391,4]]}}}],["event",{"_index":966,"t":{"75":{"position":[[99,5],[573,6]]},"103":{"position":[[463,6]]}}}],["everyon",{"_index":296,"t":{"15":{"position":[[501,9]]}}}],["evict",{"_index":182,"t":{"6":{"position":[[1475,6]]}}}],["except",{"_index":717,"t":{"37":{"position":[[912,10]]}}}],["exception",{"_index":301,"t":{"17":{"position":[[61,13]]}}}],["exchang",{"_index":578,"t":{"23":{"position":[[6699,8]]}}}],["execut",{"_index":560,"t":{"23":{"position":[[6006,8]]}}}],["exist",{"_index":36,"t":{"2":{"position":[[417,8]]},"19":{"position":[[744,8],[1084,8]]}}}],["expand",{"_index":289,"t":{"15":{"position":[[412,9]]},"113":{"position":[[394,7]]}}}],["expect",{"_index":210,"t":{"9":{"position":[[126,8]]},"23":{"position":[[2807,8],[6186,6],[6567,6],[6925,8],[7069,6]]},"95":{"position":[[1149,12]]},"97":{"position":[[82,13]]}}}],["expens",{"_index":1134,"t":{"105":{"position":[[93,9]]}}}],["experi",{"_index":325,"t":{"19":{"position":[[181,10]]},"71":{"position":[[704,10]]}}}],["experienc",{"_index":1021,"t":{"87":{"position":[[29,11]]}}}],["expert",{"_index":1022,"t":{"87":{"position":[[95,8]]}}}],["expiri",{"_index":678,"t":{"34":{"position":[[262,6]]}}}],["explain",{"_index":981,"t":{"77":{"position":[[3,9]]}}}],["export",{"_index":967,"t":{"75":{"position":[[113,6]]}}}],["expos",{"_index":779,"t":{"45":{"position":[[374,7]]}}}],["express",{"_index":1044,"t":{"95":{"position":[[152,7],[1374,7]]}}}],["extens",{"_index":523,"t":{"23":{"position":[[4417,9]]}}}],["extent",{"_index":947,"t":{"71":{"position":[[207,6]]},"83":{"position":[[7,6]]},"95":{"position":[[677,6]]},"101":{"position":[[7,6]]},"103":{"position":[[608,6]]}}}],["extra",{"_index":448,"t":{"23":{"position":[[1643,5],[1816,5]]},"49":{"position":[[520,5]]}}}],["extrem",{"_index":382,"t":{"21":{"position":[[198,9]]}}}],["face",{"_index":356,"t":{"19":{"position":[[855,4]]}}}],["facto",{"_index":338,"t":{"19":{"position":[[436,5]]}}}],["factual",{"_index":404,"t":{"23":{"position":[[511,7]]}}}],["fail",{"_index":180,"t":{"6":{"position":[[1432,5]]},"23":{"position":[[3942,5],[5398,5],[5487,5]]},"37":{"position":[[69,7]]},"113":{"position":[[695,4]]}}}],["failur",{"_index":140,"t":{"6":{"position":[[482,7]]},"23":{"position":[[217,7],[428,9]]},"59":{"position":[[236,9]]}}}],["faithfulli",{"_index":828,"t":{"51":{"position":[[144,10]]}}}],["fallen",{"_index":344,"t":{"19":{"position":[[561,6]]}}}],["fast",{"_index":222,"t":{"9":{"position":[[318,4]]}}}],["faster",{"_index":805,"t":{"49":{"position":[[15,6]]}}}],["fathom",{"_index":924,"t":{"69":{"position":[[616,6],[913,6],[959,6],[1047,6],[1153,6],[1254,6]]}}}],["faulti",{"_index":188,"t":{"6":{"position":[[1655,6]]}}}],["faultless",{"_index":199,"t":{"6":{"position":[[1894,9]]}}}],["fdpic",{"_index":998,"t":{"77":{"position":[[962,8]]}}}],["feasibl",{"_index":271,"t":{"13":{"position":[[651,12]]}}}],["featur",{"_index":33,"t":{"2":{"position":[[372,8]]},"23":{"position":[[3135,9],[3307,8]]},"71":{"position":[[160,8],[260,9]]},"97":{"position":[[339,9]]}}}],["februari",{"_index":896,"t":{"65":{"position":[[29,8]]},"91":{"position":[[30,8]]}}}],["feder",{"_index":996,"t":{"77":{"position":[[909,7]]}}}],["fee",{"_index":192,"t":{"6":{"position":[[1722,5]]},"23":{"position":[[7028,4]]},"105":{"position":[[124,5]]},"111":{"position":[[1837,4],[1921,4]]}}}],["few",{"_index":503,"t":{"23":{"position":[[3474,3]]},"25":{"position":[[175,3]]}}}],["ffi",{"_index":654,"t":{"32":{"position":[[37,3],[82,3]]}}}],["figur",{"_index":669,"t":{"34":{"position":[[140,6]]},"37":{"position":[[877,6]]},"63":{"position":[[375,8]]}}}],["file",{"_index":68,"t":{"4":{"position":[[78,4]]},"15":{"position":[[146,5]]},"19":{"position":[[778,4],[1159,4]]},"23":{"position":[[1111,4]]},"30":{"position":[[11,5]]},"34":{"position":[[167,4]]},"77":{"position":[[883,4]]},"111":{"position":[[1883,7]]}}}],["final",{"_index":265,"t":{"13":{"position":[[528,8]]},"111":{"position":[[1173,7]]}}}],["finalis",{"_index":101,"t":{"4":{"position":[[561,10]]}}}],["financi",{"_index":1071,"t":{"95":{"position":[[1554,10]]}}}],["find",{"_index":159,"t":{"6":{"position":[[843,5]]},"23":{"position":[[6522,5]]}}}],["finish",{"_index":674,"t":{"34":{"position":[[218,6]]},"37":{"position":[[224,8],[311,8]]}}}],["finit",{"_index":62,"t":{"2":{"position":[[838,6]]}}}],["first",{"_index":185,"t":{"6":{"position":[[1557,5]]},"9":{"position":[[26,5],[245,5]]},"13":{"position":[[237,6]]},"111":{"position":[[707,5]]}}}],["fit",{"_index":1047,"t":{"95":{"position":[[236,7]]}}}],["fix",{"_index":477,"t":{"23":{"position":[[2443,3]]},"37":{"position":[[382,5]]},"49":{"position":[[615,5]]},"57":{"position":[[224,5],[267,4],[319,4],[385,3]]}}}],["flag",{"_index":677,"t":{"34":{"position":[[249,4]]}}}],["focu",{"_index":760,"t":{"41":{"position":[[92,5]]},"63":{"position":[[41,5]]}}}],["focus",{"_index":767,"t":{"45":{"position":[[28,7]]},"47":{"position":[[37,7]]}}}],["fold",{"_index":735,"t":{"39":{"position":[[59,8]]}}}],["follow",{"_index":84,"t":{"4":{"position":[[305,9]]},"15":{"position":[[511,6]]},"19":{"position":[[257,9]]},"27":{"position":[[180,9]]},"41":{"position":[[152,9]]},"53":{"position":[[184,9]]},"69":{"position":[[495,9]]},"71":{"position":[[368,10]]},"99":{"position":[[371,9]]},"111":{"position":[[417,9]]}}}],["forc",{"_index":1174,"t":{"111":{"position":[[1373,6]]},"113":{"position":[[671,5]]}}}],["forecast",{"_index":1082,"t":{"97":{"position":[[107,10]]}}}],["form",{"_index":378,"t":{"21":{"position":[[144,4]]},"23":{"position":[[7498,4]]},"75":{"position":[[399,5],[438,5]]},"95":{"position":[[1165,7]]}}}],["format",{"_index":1109,"t":{"99":{"position":[[209,6]]}}}],["formatit",{"_index":696,"t":{"37":{"position":[[197,8]]}}}],["formula",{"_index":459,"t":{"23":{"position":[[1901,8]]}}}],["forthcom",{"_index":208,"t":{"9":{"position":[[97,11]]}}}],["forward",{"_index":755,"t":{"41":{"position":[[29,7]]},"55":{"position":[[23,10]]},"97":{"position":[[29,7],[205,7],[541,7]]}}}],["foundat",{"_index":251,"t":{"11":{"position":[[517,10]]},"17":{"position":[[307,12]]},"19":{"position":[[1020,11]]}}}],["four",{"_index":31,"t":{"2":{"position":[[363,4]]}}}],["free",{"_index":581,"t":{"23":{"position":[[6993,4]]},"85":{"position":[[64,4]]}}}],["frobeniu",{"_index":742,"t":{"39":{"position":[[220,9]]}}}],["front",{"_index":627,"t":{"27":{"position":[[168,7]]}}}],["frontend",{"_index":784,"t":{"45":{"position":[[578,8],[649,8]]}}}],["full",{"_index":519,"t":{"23":{"position":[[4223,4],[4306,4],[4763,4],[4888,4]]},"99":{"position":[[323,4]]},"113":{"position":[[666,4]]}}}],["fulli",{"_index":6,"t":{"2":{"position":[[56,5]]}}}],["function",{"_index":114,"t":{"4":{"position":[[857,11]]},"49":{"position":[[60,8]]},"51":{"position":[[252,10],[428,9]]},"63":{"position":[[217,13]]},"69":{"position":[[802,13]]},"91":{"position":[[207,13]]},"97":{"position":[[322,16]]}}}],["further",{"_index":1164,"t":{"111":{"position":[[1026,7]]}}}],["furthermor",{"_index":343,"t":{"19":{"position":[[521,12]]}}}],["futur",{"_index":1068,"t":{"95":{"position":[[1436,6]]}}}],["gap",{"_index":350,"t":{"19":{"position":[[671,3]]}}}],["gener",{"_index":148,"t":{"6":{"position":[[629,10],[1573,9]]},"51":{"position":[[50,9],[290,9],[593,10]]},"73":{"position":[[5,7]]},"87":{"position":[[269,7]]},"97":{"position":[[192,8]]}}}],["getaddress",{"_index":706,"t":{"37":{"position":[[476,10]]}}}],["geth",{"_index":861,"t":{"55":{"position":[[254,4]]}}}],["github",{"_index":796,"t":{"47":{"position":[[268,7]]},"87":{"position":[[537,6]]}}}],["give",{"_index":18,"t":{"2":{"position":[[191,6]]}}}],["gmbh",{"_index":915,"t":{"67":{"position":[[286,4]]},"93":{"position":[[227,4]]}}}],["gnutella",{"_index":369,"t":{"19":{"position":[[1199,9]]}}}],["go",{"_index":462,"t":{"23":{"position":[[1981,2]]}}}],["goal",{"_index":85,"t":{"4":{"position":[[315,6]]},"39":{"position":[[9,5]]}}}],["good",{"_index":488,"t":{"23":{"position":[[2681,4]]},"87":{"position":[[457,5]]}}}],["googl",{"_index":396,"t":{"23":{"position":[[321,6]]},"69":{"position":[[1085,6]]},"71":{"position":[[453,6],[745,6]]}}}],["govern",{"_index":1033,"t":{"91":{"position":[[137,6]]},"101":{"position":[[132,6]]},"109":{"position":[[10,7]]}}}],["groth16",{"_index":746,"t":{"39":{"position":[[288,7]]},"51":{"position":[[737,7],[788,7]]},"63":{"position":[[161,8]]}}}],["group",{"_index":841,"t":{"53":{"position":[[31,5]]}}}],["guarante",{"_index":43,"t":{"2":{"position":[[555,11]]},"6":{"position":[[1355,9]]},"13":{"position":[[120,10]]},"15":{"position":[[189,10]]},"17":{"position":[[119,11]]},"19":{"position":[[983,11],[1375,10]]},"21":{"position":[[233,11]]},"95":{"position":[[1355,10]]}}}],["guarantees—expect",{"_index":224,"t":{"9":{"position":[[379,19]]}}}],["guarantees—up",{"_index":26,"t":{"2":{"position":[[284,13]]}}}],["halt",{"_index":884,"t":{"63":{"position":[[27,6]]}}}],["handl",{"_index":530,"t":{"23":{"position":[[4550,6]]},"37":{"position":[[905,6]]},"45":{"position":[[247,6]]},"47":{"position":[[114,8]]}}}],["hardwar",{"_index":125,"t":{"6":{"position":[[114,8]]}}}],["harm",{"_index":486,"t":{"23":{"position":[[2615,4]]},"101":{"position":[[423,8]]}}}],["harmless",{"_index":1132,"t":{"105":{"position":[[35,8]]}}}],["hash",{"_index":807,"t":{"49":{"position":[[55,4]]},"51":{"position":[[247,4]]},"63":{"position":[[259,4]]}}}],["have",{"_index":498,"t":{"23":{"position":[[3145,6]]}}}],["head",{"_index":1200,"t":{"113":{"position":[[268,8]]}}}],["heard",{"_index":1152,"t":{"111":{"position":[[495,5]]}}}],["held",{"_index":1116,"t":{"103":{"position":[[15,4]]},"111":{"position":[[1519,4]]},"113":{"position":[[532,4]]}}}],["help",{"_index":460,"t":{"23":{"position":[[1938,7]]},"87":{"position":[[365,4]]}}}],["here",{"_index":620,"t":{"25":{"position":[[448,4]]},"45":{"position":[[604,5]]},"69":{"position":[[1007,5]]},"87":{"position":[[549,5]]}}}],["herein",{"_index":1062,"t":{"95":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"97":{"position":[[825,6],[1004,7]]},"111":{"position":[[1422,6]]}}}],["high",{"_index":334,"t":{"19":{"position":[[333,4]]},"23":{"position":[[137,4],[721,4],[2212,4],[3354,4]]},"97":{"position":[[500,4],[1027,4]]}}}],["highli",{"_index":324,"t":{"19":{"position":[[157,6]]},"23":{"position":[[104,6]]},"87":{"position":[[22,6]]}}}],["highlight",{"_index":764,"t":{"41":{"position":[[203,11]]}}}],["histori",{"_index":335,"t":{"19":{"position":[[399,7]]},"23":{"position":[[519,7],[4244,7],[4311,7],[4627,7],[4773,7],[4893,8]]}}}],["hold",{"_index":1131,"t":{"105":{"position":[[27,4]]}}}],["host",{"_index":19,"t":{"2":{"position":[[198,5]]},"6":{"position":[[1884,6]]},"13":{"position":[[345,4],[495,5]]}}}],["https://api.codex.storag",{"_index":783,"t":{"45":{"position":[[452,25]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":1111,"t":{"99":{"position":[[390,45]]}}}],["https://github.com/codex",{"_index":787,"t":{"45":{"position":[[610,24]]},"47":{"position":[[311,24],[426,24]]},"49":{"position":[[257,24],[311,24],[365,24],[440,24],[560,24],[672,24]]},"51":{"position":[[610,24],[751,24]]},"57":{"position":[[128,24]]},"61":{"position":[[45,24]]}}}],["https://usefathom.com",{"_index":930,"t":{"69":{"position":[[1013,23]]}}}],["https://vimeo.com/884370956/e8a32a58c8?share=copi",{"_index":866,"t":{"57":{"position":[[170,49]]}}}],["hundr",{"_index":842,"t":{"53":{"position":[[68,8]]},"103":{"position":[[537,7]]}}}],["ideat",{"_index":753,"t":{"39":{"position":[[428,8]]}}}],["identifi",{"_index":927,"t":{"69":{"position":[[691,11]]},"71":{"position":[[619,8]]},"113":{"position":[[277,11]]}}}],["ii",{"_index":1160,"t":{"111":{"position":[[965,4]]}}}],["immedi",{"_index":1009,"t":{"81":{"position":[[185,11]]},"107":{"position":[[217,11]]}}}],["immin",{"_index":885,"t":{"63":{"position":[[85,8]]}}}],["imperson",{"_index":597,"t":{"23":{"position":[[7439,13]]}}}],["implement",{"_index":221,"t":{"9":{"position":[[308,9]]},"23":{"position":[[757,14]]},"30":{"position":[[156,12]]},"39":{"position":[[253,14]]},"45":{"position":[[105,15]]},"49":{"position":[[131,14]]},"51":{"position":[[559,14],[719,14]]},"63":{"position":[[50,12]]},"73":{"position":[[67,11]]}}}],["impli",{"_index":1045,"t":{"95":{"position":[[163,8],[1385,7]]},"101":{"position":[[246,5]]}}}],["improv",{"_index":366,"t":{"19":{"position":[[1136,7]]},"34":{"position":[[428,12]]},"39":{"position":[[46,12],[112,12],[328,12]]}}}],["incent",{"_index":73,"t":{"4":{"position":[[148,9],[268,9],[582,9],[820,10]]},"19":{"position":[[945,10]]},"23":{"position":[[670,11],[4051,9],[6072,10]]},"39":{"position":[[140,9],[167,10]]}}}],["incentiv",{"_index":56,"t":{"2":{"position":[[723,16]]},"4":{"position":[[0,15]]},"11":{"position":[[382,15]]},"13":{"position":[[553,13]]}}}],["incid",{"_index":349,"t":{"19":{"position":[[646,9]]},"85":{"position":[[127,9]]}}}],["incident",{"_index":1123,"t":{"103":{"position":[[202,11]]}}}],["includ",{"_index":702,"t":{"37":{"position":[[362,9]]},"51":{"position":[[328,8]]},"53":{"position":[[352,7]]},"63":{"position":[[133,8]]},"91":{"position":[[181,9]]},"95":{"position":[[172,9]]},"97":{"position":[[243,7],[727,9],[1259,9]]},"99":{"position":[[233,9]]},"101":{"position":[[104,9]]},"105":{"position":[[103,9],[210,9]]},"111":{"position":[[74,8],[1873,9]]}}}],["incorpor",{"_index":508,"t":{"23":{"position":[[3677,12]]},"111":{"position":[[1409,12]]}}}],["increas",{"_index":42,"t":{"2":{"position":[[529,9]]},"4":{"position":[[385,8]]}}}],["increasingli",{"_index":315,"t":{"19":{"position":[[48,12]]}}}],["incumb",{"_index":372,"t":{"19":{"position":[[1400,11]]}}}],["indemnifi",{"_index":1130,"t":{"105":{"position":[[10,9]]}}}],["independ",{"_index":1002,"t":{"79":{"position":[[110,11]]}}}],["index",{"_index":793,"t":{"47":{"position":[[127,8]]}}}],["indic",{"_index":558,"t":{"23":{"position":[[5983,8]]},"69":{"position":[[433,9]]}}}],["individu",{"_index":957,"t":{"71":{"position":[[628,10]]}}}],["industri",{"_index":1084,"t":{"97":{"position":[[168,8]]}}}],["inform",{"_index":535,"t":{"23":{"position":[[4645,11]]},"65":{"position":[[78,6]]},"71":{"position":[[672,11],[887,11]]},"73":{"position":[[191,11]]},"77":{"position":[[937,11]]},"95":{"position":[[1076,13],[1245,11],[1505,11]]},"97":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":625,"t":{"27":{"position":[[80,14]]},"43":{"position":[[84,14]]},"53":{"position":[[16,14]]}}}],["infring",{"_index":1049,"t":{"95":{"position":[[278,12]]}}}],["inher",{"_index":393,"t":{"23":{"position":[[225,8]]}}}],["initi",{"_index":241,"t":{"11":{"position":[[207,7],[429,7]]},"13":{"position":[[298,8]]},"23":{"position":[[2940,11],[7013,7]]},"25":{"position":[[55,11]]}}}],["innat",{"_index":14,"t":{"2":{"position":[[149,8]]}}}],["input",{"_index":839,"t":{"51":{"position":[[587,5]]}}}],["insight",{"_index":936,"t":{"69":{"position":[[1190,9],[1293,8]]}}}],["instanc",{"_index":416,"t":{"23":{"position":[[930,9]]}}}],["instead",{"_index":718,"t":{"37":{"position":[[923,7]]}}}],["institut",{"_index":1016,"t":{"85":{"position":[[51,9]]},"111":{"position":[[1275,11]]}}}],["intact",{"_index":443,"t":{"23":{"position":[[1489,7]]}}}],["integr",{"_index":245,"t":{"11":{"position":[[326,11]]},"32":{"position":[[95,11]]},"37":{"position":[[29,11],[137,11],[740,9],[813,11]]},"45":{"position":[[268,12],[504,9]]},"47":{"position":[[561,9]]},"61":{"position":[[11,11]]}}}],["intellectu",{"_index":1050,"t":{"95":{"position":[[294,12]]}}}],["intend",{"_index":115,"t":{"4":{"position":[[872,9]]},"65":{"position":[[66,8]]},"95":{"position":[[1042,8]]}}}],["interact",{"_index":511,"t":{"23":{"position":[[3703,11]]},"45":{"position":[[325,12]]},"59":{"position":[[300,13]]},"71":{"position":[[218,8],[513,8]]}}}],["interest",{"_index":288,"t":{"15":{"position":[[348,10]]},"69":{"position":[[737,8]]}}}],["intermitt",{"_index":584,"t":{"23":{"position":[[7102,12]]}}}],["intern",{"_index":524,"t":{"23":{"position":[[4427,8]]},"25":{"position":[[128,8]]},"99":{"position":[[87,13]]},"111":{"position":[[1325,13],[1972,13]]}}}],["internet",{"_index":317,"t":{"19":{"position":[[77,8]]}}}],["interpret",{"_index":1203,"t":{"113":{"position":[[423,14]]}}}],["interv",{"_index":173,"t":{"6":{"position":[[1281,8]]}}}],["invalid",{"_index":179,"t":{"6":{"position":[[1414,7]]},"23":{"position":[[3985,7]]},"113":{"position":[[537,7]]}}}],["involv",{"_index":102,"t":{"4":{"position":[[607,7]]},"23":{"position":[[1749,8]]}}}],["io",{"_index":646,"t":{"30":{"position":[[237,2]]}}}],["ip",{"_index":859,"t":{"55":{"position":[[186,2]]},"69":{"position":[[549,2],[658,2],[765,2],[871,2]]}}}],["issu",{"_index":475,"t":{"23":{"position":[[2357,7],[7409,6]]},"30":{"position":[[17,5]]},"37":{"position":[[391,5]]},"57":{"position":[[47,6]]},"61":{"position":[[115,6]]}}}],["issuanc",{"_index":599,"t":{"23":{"position":[[7466,8]]},"59":{"position":[[269,9]]}}}],["issues—such",{"_index":355,"t":{"19":{"position":[[822,11]]}}}],["it'",{"_index":542,"t":{"23":{"position":[[5235,4],[6920,4]]}}}],["iter",{"_index":203,"t":{"9":{"position":[[49,10]]}}}],["itself",{"_index":496,"t":{"23":{"position":[[3065,6]]}}}],["join",{"_index":298,"t":{"15":{"position":[[526,4]]}}}],["json",{"_index":690,"t":{"34":{"position":[[494,4]]},"37":{"position":[[415,4],[618,4],[672,4],[986,4]]}}}],["judg",{"_index":1153,"t":{"111":{"position":[[506,6]]}}}],["june",{"_index":387,"t":{"21":{"position":[[304,4]]}}}],["juri",{"_index":1155,"t":{"111":{"position":[[615,4]]}}}],["jurisdict",{"_index":1061,"t":{"95":{"position":[[826,13]]},"111":{"position":[[650,14]]}}}],["katana",{"_index":207,"t":{"9":{"position":[[85,6],[415,7]]}}}],["keep",{"_index":435,"t":{"23":{"position":[[1285,4],[1460,5],[2736,7]]}}}],["kept",{"_index":1181,"t":{"111":{"position":[[1742,4]]}}}],["key",{"_index":32,"t":{"2":{"position":[[368,3]]},"4":{"position":[[42,3]]},"23":{"position":[[3131,3]]},"49":{"position":[[425,5]]},"57":{"position":[[315,3],[342,4]]}}}],["kind",{"_index":406,"t":{"23":{"position":[[541,4]]},"95":{"position":[[146,5]]}}}],["knowledg",{"_index":290,"t":{"15":{"position":[[427,10]]},"23":{"position":[[3728,9]]},"49":{"position":[[82,9]]}}}],["known",{"_index":453,"t":{"23":{"position":[[1786,5]]},"111":{"position":[[2160,5]]}}}],["lack",{"_index":330,"t":{"19":{"position":[[289,4],[1235,5]]}}}],["laid",{"_index":985,"t":{"77":{"position":[[240,4]]}}}],["landscap",{"_index":313,"t":{"19":{"position":[[19,9]]}}}],["languag",{"_index":1183,"t":{"111":{"position":[[1765,8]]}}}],["larg",{"_index":504,"t":{"23":{"position":[[3478,5]]}}}],["last",{"_index":894,"t":{"65":{"position":[[13,4]]},"91":{"position":[[13,4]]}}}],["later",{"_index":278,"t":{"15":{"position":[[204,5]]}}}],["latest",{"_index":612,"t":{"25":{"position":[[215,6]]}}}],["latter",{"_index":107,"t":{"4":{"position":[[729,6]]}}}],["launch",{"_index":761,"t":{"41":{"position":[[101,9]]},"53":{"position":[[157,6]]},"63":{"position":[[94,6]]}}}],["law",{"_index":1058,"t":{"95":{"position":[[708,4],[976,5]]},"103":{"position":[[639,4]]},"109":{"position":[[6,3],[145,4]]},"111":{"position":[[66,3]]}}}],["lawsuit",{"_index":1192,"t":{"111":{"position":[[2241,7]]}}}],["layer",{"_index":267,"t":{"13":{"position":[[583,5]]},"17":{"position":[[156,5],[221,6],[258,6]]},"21":{"position":[[75,5]]}}}],["lazi",{"_index":50,"t":{"2":{"position":[[645,4]]},"23":{"position":[[813,4],[2247,4],[2284,4]]}}}],["legal",{"_index":910,"t":{"67":{"position":[[212,5]]},"69":{"position":[[199,5]]},"93":{"position":[[152,5]]},"95":{"position":[[431,9],[785,7],[1565,6]]},"103":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":1012,"t":{"83":{"position":[[89,22]]},"113":{"position":[[902,22]]}}}],["legisl",{"_index":922,"t":{"69":{"position":[[245,12]]},"75":{"position":[[713,12]]},"77":{"position":[[269,12]]}}}],["legitim",{"_index":928,"t":{"69":{"position":[[726,10]]}}}],["let",{"_index":463,"t":{"23":{"position":[[2020,4]]}}}],["level",{"_index":471,"t":{"23":{"position":[[2217,5],[3359,6]]},"53":{"position":[[401,5]]},"75":{"position":[[297,5]]}}}],["liabil",{"_index":1005,"t":{"79":{"position":[[179,9]]},"103":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":1115,"t":{"101":{"position":[[498,6]]},"103":{"position":[[20,6]]}}}],["lib",{"_index":712,"t":{"37":{"position":[[736,3]]}}}],["licenc",{"_index":1108,"t":{"99":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":1013,"t":{"83":{"position":[[129,8]]},"99":{"position":[[101,7]]},"113":{"position":[[942,8]]}}}],["lightweight",{"_index":48,"t":{"2":{"position":[[605,11]]}}}],["limit",{"_index":570,"t":{"23":{"position":[[6284,7]]},"69":{"position":[[10,5]]},"71":{"position":[[19,7]]},"77":{"position":[[40,5]]},"95":{"position":[[190,10]]},"103":{"position":[[513,7],[558,10]]},"105":{"position":[[228,10]]},"111":{"position":[[570,8],[2039,12]]},"113":{"position":[[402,6]]}}}],["line",{"_index":616,"t":{"25":{"position":[[322,5]]}}}],["link",{"_index":1001,"t":{"79":{"position":[[37,5]]},"87":{"position":[[418,6]]},"95":{"position":[[613,6]]},"101":{"position":[[39,5],[182,7]]}}}],["liter",{"_index":556,"t":{"23":{"position":[[5931,7]]}}}],["litig",{"_index":1146,"t":{"111":{"position":[[277,10],[474,10]]}}}],["littl",{"_index":432,"t":{"23":{"position":[[1206,6]]}}}],["llc",{"_index":953,"t":{"71":{"position":[[460,4]]}}}],["load",{"_index":147,"t":{"6":{"position":[[599,7]]}}}],["local",{"_index":521,"t":{"23":{"position":[[4332,7]]},"37":{"position":[[284,5]]},"45":{"position":[[203,5]]},"95":{"position":[[970,5]]}}}],["locat",{"_index":452,"t":{"23":{"position":[[1712,9]]}}}],["log",{"_index":697,"t":{"37":{"position":[[210,7]]},"57":{"position":[[114,3]]},"71":{"position":[[730,6]]}}}],["logic",{"_index":254,"t":{"13":{"position":[[44,7]]},"59":{"position":[[98,5]]}}}],["logo",{"_index":304,"t":{"17":{"position":[[169,5],[288,5]]},"21":{"position":[[275,5]]},"23":{"position":[[2786,6],[2850,6],[2881,5],[2934,5]]},"67":{"position":[[135,5],[238,5],[350,8],[417,5]]},"93":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":130,"t":{"6":{"position":[[250,4]]},"23":{"position":[[2091,4],[5111,4]]},"63":{"position":[[364,4]]}}}],["longsword",{"_index":218,"t":{"9":{"position":[[218,10]]},"11":{"position":[[257,9]]}}}],["look",{"_index":685,"t":{"34":{"position":[[337,4]]},"37":{"position":[[782,4]]},"87":{"position":[[332,7]]},"97":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":736,"t":{"39":{"position":[[71,8]]}}}],["lose",{"_index":425,"t":{"23":{"position":[[1057,6],[1097,4],[1192,6],[5537,5]]}}}],["loss",{"_index":54,"t":{"2":{"position":[[706,4]]},"23":{"position":[[622,4],[3225,4],[3655,4],[3779,4]]}}}],["lost",{"_index":438,"t":{"23":{"position":[[1378,4],[2407,4]]},"103":{"position":[[127,4]]}}}],["low",{"_index":149,"t":{"6":{"position":[[684,3]]},"23":{"position":[[2703,4]]}}}],["m",{"_index":467,"t":{"23":{"position":[[2136,2]]}}}],["machin",{"_index":775,"t":{"45":{"position":[[209,8]]}}}],["made",{"_index":1063,"t":{"95":{"position":[[1057,4]]},"99":{"position":[[33,4]]}}}],["magic",{"_index":672,"t":{"34":{"position":[[187,9]]}}}],["main",{"_index":845,"t":{"53":{"position":[[257,4]]}}}],["mainli",{"_index":759,"t":{"41":{"position":[[85,6]]}}}],["mainnet",{"_index":619,"t":{"25":{"position":[[430,7]]}}}],["mainstream",{"_index":1026,"t":{"87":{"position":[[166,10]]}}}],["maintain",{"_index":239,"t":{"11":{"position":[[146,8]]},"53":{"position":[[380,9]]},"73":{"position":[[128,8]]}}}],["major",{"_index":234,"t":{"11":{"position":[[46,5]]},"19":{"position":[[578,5]]},"23":{"position":[[6947,8]]}}}],["make",{"_index":158,"t":{"6":{"position":[[803,4]]},"19":{"position":[[1000,4]]},"23":{"position":[[465,6],[2502,4]]},"25":{"position":[[28,4]]},"63":{"position":[[295,4]]},"69":{"position":[[947,4]]},"71":{"position":[[138,6]]},"95":{"position":[[367,4],[716,4]]},"111":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":98,"t":{"4":{"position":[[515,9]]}}}],["manag",{"_index":474,"t":{"23":{"position":[[2343,8]]},"45":{"position":[[293,11]]}}}],["manifest",{"_index":833,"t":{"51":{"position":[[280,9]]}}}],["manner",{"_index":1150,"t":{"111":{"position":[[388,7]]}}}],["market",{"_index":351,"t":{"19":{"position":[[682,6],[1222,6]]},"23":{"position":[[3037,7],[3108,6]]},"97":{"position":[[181,7],[620,6]]}}}],["marketplac",{"_index":72,"t":{"4":{"position":[[130,11],[617,11]]},"9":{"position":[[343,12]]},"11":{"position":[[285,12],[310,11],[360,11]]},"23":{"position":[[3164,11],[3261,11],[3328,11]]},"27":{"position":[[95,11]]},"37":{"position":[[125,11]]},"43":{"position":[[99,11]]},"45":{"position":[[347,12]]},"51":{"position":[[111,11]]},"59":{"position":[[4,11]]},"87":{"position":[[283,11]]}}}],["mathemat",{"_index":458,"t":{"23":{"position":[[1888,12]]}}}],["matter",{"_index":1069,"t":{"95":{"position":[[1475,7]]},"97":{"position":[[437,7],[1123,7]]}}}],["maximis",{"_index":94,"t":{"4":{"position":[[469,8]]}}}],["maximum",{"_index":1056,"t":{"95":{"position":[[669,7]]},"103":{"position":[[600,7]]}}}],["mean",{"_index":414,"t":{"23":{"position":[[867,5],[1005,5],[2075,7],[7659,5]]},"75":{"position":[[197,5]]},"91":{"position":[[375,5]]},"111":{"position":[[43,7]]},"113":{"position":[[760,4]]}}}],["measur",{"_index":929,"t":{"69":{"position":[[841,8]]},"73":{"position":[[101,8]]}}}],["mechan",{"_index":52,"t":{"2":{"position":[[657,10]]},"4":{"position":[[16,10]]},"13":{"position":[[264,9],[472,9]]},"39":{"position":[[395,9]]}}}],["meet",{"_index":1147,"t":{"111":{"position":[[305,5]]}}}],["member",{"_index":621,"t":{"25":{"position":[[489,7]]}}}],["merchant",{"_index":1046,"t":{"95":{"position":[[219,16]]}}}],["merg",{"_index":798,"t":{"47":{"position":[[302,8]]},"49":{"position":[[234,6]]}}}],["merkel",{"_index":770,"t":{"45":{"position":[[66,14]]},"47":{"position":[[10,14],[186,14],[276,13]]}}}],["merkl",{"_index":816,"t":{"49":{"position":[[503,6]]},"63":{"position":[[268,6]]}}}],["messag",{"_index":868,"t":{"57":{"position":[[278,8]]}}}],["metadata",{"_index":790,"t":{"47":{"position":[[57,8]]}}}],["method",{"_index":146,"t":{"6":{"position":[[584,6]]},"23":{"position":[[1306,6],[2013,6],[2301,6]]},"111":{"position":[[1602,7]]}}}],["microsoft",{"_index":319,"t":{"19":{"position":[[106,10]]}}}],["mileston",{"_index":235,"t":{"11":{"position":[[52,10]]}}}],["million",{"_index":428,"t":{"23":{"position":[[1125,7],[1142,7]]}}}],["miss",{"_index":66,"t":{"4":{"position":[[53,7]]},"6":{"position":[[1811,7]]},"23":{"position":[[1984,7]]}}}],["mission",{"_index":533,"t":{"23":{"position":[[4610,7]]}}}],["mitig",{"_index":819,"t":{"49":{"position":[[534,8]]}}}],["mobil",{"_index":588,"t":{"23":{"position":[[7169,6]]}}}],["mode",{"_index":728,"t":{"37":{"position":[[1053,6]]},"71":{"position":[[498,5]]}}}],["model",{"_index":751,"t":{"39":{"position":[[365,6]]}}}],["modifi",{"_index":1006,"t":{"81":{"position":[[7,6]]},"99":{"position":[[168,6]]},"107":{"position":[[7,6]]},"113":{"position":[[386,7]]}}}],["monitor",{"_index":843,"t":{"53":{"position":[[102,7]]}}}],["more",{"_index":591,"t":{"23":{"position":[[7253,4]]},"39":{"position":[[350,4]]},"69":{"position":[[996,4]]},"87":{"position":[[344,4]]}}}],["mostli",{"_index":883,"t":{"63":{"position":[[20,6]]}}}],["move",{"_index":626,"t":{"27":{"position":[[150,6]]},"41":{"position":[[22,6]]}}}],["multinod",{"_index":693,"t":{"37":{"position":[[19,9]]}}}],["multipl",{"_index":117,"t":{"6":{"position":[[21,8]]},"51":{"position":[[271,8]]}}}],["n",{"_index":466,"t":{"23":{"position":[[2126,2]]}}}],["name",{"_index":375,"t":{"21":{"position":[[110,4]]}}}],["natur",{"_index":266,"t":{"13":{"position":[[567,10]]},"111":{"position":[[908,6]]}}}],["near",{"_index":886,"t":{"63":{"position":[[142,4]]}}}],["need",{"_index":264,"t":{"13":{"position":[[465,4]]},"21":{"position":[[33,4]]},"23":{"position":[[4684,4],[5172,5],[5332,5],[5790,5]]},"69":{"position":[[321,4],[418,6]]}}}],["neglig",{"_index":1117,"t":{"103":{"position":[[54,11]]}}}],["network",{"_index":16,"t":{"2":{"position":[[167,7],[784,7],[845,7]]},"4":{"position":[[91,9],[361,7]]},"6":{"position":[[886,7],[993,7],[1096,7],[1467,7]]},"15":{"position":[[102,9],[403,8]]},"19":{"position":[[791,8],[863,7]]},"23":{"position":[[4137,9],[4955,8],[4988,7],[6341,7],[6555,8],[6636,8],[6908,7],[7351,8],[7564,8],[7778,8]]},"37":{"position":[[290,8]]},"87":{"position":[[380,8]]}}}],["network'",{"_index":122,"t":{"6":{"position":[[78,9]]}}}],["new",{"_index":191,"t":{"6":{"position":[[1693,3]]},"25":{"position":[[318,3]]},"81":{"position":[[148,3]]},"107":{"position":[[174,3]]}}}],["next",{"_index":156,"t":{"6":{"position":[[766,4]]},"13":{"position":[[443,5]]},"25":{"position":[[395,4]]}}}],["nich",{"_index":38,"t":{"2":{"position":[[464,6]]}}}],["nim",{"_index":656,"t":{"32":{"position":[[46,3],[153,3]]},"37":{"position":[[331,3],[375,3],[404,3],[596,3],[772,3],[851,3],[982,3]]},"45":{"position":[[91,3]]},"47":{"position":[[374,3]]},"49":{"position":[[106,3],[127,3]]},"51":{"position":[[545,3]]}}}],["nimbl",{"_index":632,"t":{"30":{"position":[[46,6]]}}}],["nimbu",{"_index":688,"t":{"34":{"position":[[404,6]]}}}],["nine",{"_index":418,"t":{"23":{"position":[[983,5]]}}}],["node",{"_index":77,"t":{"4":{"position":[[210,4],[420,5]]},"6":{"position":[[30,4],[140,4],[233,5],[296,5],[577,4],[674,4],[784,5],[797,5],[827,5],[909,6],[961,5],[1032,4],[1145,4],[1202,5],[1403,4],[1494,4],[1563,4],[1912,6]]},"23":{"position":[[3484,6],[4349,5],[4737,4],[4870,4],[4938,5],[5007,6],[5025,6],[5040,6],[5058,6],[5083,5],[5097,5],[5153,4],[5302,4],[5393,4],[5482,4],[5592,5],[5609,5],[5761,6],[5780,4],[6056,5],[6120,5],[6253,5],[6383,4],[6409,4],[6445,6],[6469,5],[6482,5],[6506,5],[6582,5],[6618,4],[6690,5],[6732,4],[6759,4],[6811,5],[6851,5],[6959,5],[7059,6],[7088,5]]},"53":{"position":[[80,5]]},"55":{"position":[[229,5],[269,5]]},"59":{"position":[[177,5]]}}}],["node'",{"_index":189,"t":{"6":{"position":[[1662,6],[1705,6]]}}}],["nomo",{"_index":310,"t":{"17":{"position":[[228,6]]}}}],["non",{"_index":510,"t":{"23":{"position":[[3699,3]]},"30":{"position":[[42,3]]},"95":{"position":[[274,3]]},"101":{"position":[[419,3]]}}}],["nonetheless",{"_index":983,"t":{"77":{"position":[[117,12]]}}}],["normal",{"_index":723,"t":{"37":{"position":[[998,9]]}}}],["note",{"_index":555,"t":{"23":{"position":[[5869,4]]},"69":{"position":[[934,4]]},"111":{"position":[[520,4]]}}}],["noth",{"_index":1075,"t":{"95":{"position":[[1628,7]]}}}],["notic",{"_index":1008,"t":{"81":{"position":[[81,7]]},"97":{"position":[[1392,6]]},"107":{"position":[[87,7]]},"111":{"position":[[870,6],[1108,6]]}}}],["novel",{"_index":412,"t":{"23":{"position":[[751,5]]}}}],["now",{"_index":604,"t":{"23":{"position":[[7864,4]]}}}],["number",{"_index":136,"t":{"6":{"position":[[392,6]]},"19":{"position":[[67,6]]},"23":{"position":[[2109,6],[2671,6]]}}}],["numer",{"_index":346,"t":{"19":{"position":[[621,8]]}}}],["object",{"_index":994,"t":{"77":{"position":[[831,6]]}}}],["oblig",{"_index":965,"t":{"75":{"position":[[7,7]]},"95":{"position":[[1222,10]]}}}],["occas",{"_index":347,"t":{"19":{"position":[[630,10]]}}}],["occur",{"_index":980,"t":{"75":{"position":[[669,5]]}}}],["offer",{"_index":227,"t":{"9":{"position":[[437,5]]},"13":{"position":[[175,7]]},"19":{"position":[[1339,8]]},"23":{"position":[[385,5],[2031,5],[6673,7]]},"69":{"position":[[1271,6]]},"95":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":908,"t":{"67":{"position":[[190,6]]},"93":{"position":[[130,6]]}}}],["offset",{"_index":162,"t":{"6":{"position":[[970,6]]},"23":{"position":[[6860,6]]}}}],["on",{"_index":64,"t":{"4":{"position":[[31,3]]},"17":{"position":[[277,3]]},"23":{"position":[[1107,3]]},"103":{"position":[[532,4]]},"111":{"position":[[1652,3],[2085,3]]}}}],["onc",{"_index":544,"t":{"23":{"position":[[5258,4]]}}}],["ongo",{"_index":615,"t":{"25":{"position":[[306,7],[507,7]]},"27":{"position":[[224,7]]},"30":{"position":[[113,8]]},"32":{"position":[[86,8]]},"34":{"position":[[209,8]]},"37":{"position":[[561,8]]},"39":{"position":[[305,8]]},"45":{"position":[[493,7]]},"51":{"position":[[711,7]]},"57":{"position":[[0,7]]},"63":{"position":[[117,7],[153,7]]}}}],["onlin",{"_index":169,"t":{"6":{"position":[[1153,6]]}}}],["open",{"_index":109,"t":{"4":{"position":[[747,4]]},"87":{"position":[[403,4],[438,4]]}}}],["openapi",{"_index":781,"t":{"45":{"position":[[425,7]]}}}],["oper",{"_index":123,"t":{"6":{"position":[[88,10],[171,9]]},"23":{"position":[[4374,12],[5161,7],[6099,7]]}}}],["optimis",{"_index":792,"t":{"47":{"position":[[85,10]]}}}],["optimum",{"_index":88,"t":{"4":{"position":[[353,7]]}}}],["optin",{"_index":730,"t":{"37":{"position":[[1068,6]]}}}],["option",{"_index":858,"t":{"55":{"position":[[139,7]]}}}],["optout",{"_index":729,"t":{"37":{"position":[[1060,7]]}}}],["oral",{"_index":1198,"t":{"113":{"position":[[216,5]]}}}],["orc",{"_index":650,"t":{"30":{"position":[[304,3]]}}}],["order",{"_index":1093,"t":{"97":{"position":[[741,5]]}}}],["organ",{"_index":567,"t":{"23":{"position":[[6234,7]]}}}],["organisation’",{"_index":757,"t":{"41":{"position":[[50,14]]}}}],["organiz",{"_index":493,"t":{"23":{"position":[[2887,14]]}}}],["origin",{"_index":441,"t":{"23":{"position":[[1440,8],[1923,8],[2160,8]]},"34":{"position":[[155,6]]},"49":{"position":[[37,8]]}}}],["otherwis",{"_index":974,"t":{"75":{"position":[[370,10]]},"95":{"position":[[549,9]]}}}],["out",{"_index":427,"t":{"23":{"position":[[1116,3],[2129,3],[3026,3]]},"34":{"position":[[147,3]]},"37":{"position":[[710,3],[884,3]]},"51":{"position":[[420,3]]},"63":{"position":[[384,3]]},"77":{"position":[[245,3]]},"87":{"position":[[395,3],[529,3]]},"111":{"position":[[896,3]]}}}],["outag",{"_index":333,"t":{"19":{"position":[[325,7],[610,7]]}}}],["outsid",{"_index":968,"t":{"75":{"position":[[149,7],[614,7]]}}}],["outstand",{"_index":810,"t":{"49":{"position":[[241,11]]}}}],["over",{"_index":22,"t":{"2":{"position":[[226,4]]},"6":{"position":[[1273,4]]},"23":{"position":[[915,4],[1133,4]]},"69":{"position":[[902,4]]},"71":{"position":[[788,4]]},"101":{"position":[[451,4]]},"111":{"position":[[272,4]]}}}],["overal",{"_index":487,"t":{"23":{"position":[[2624,7]]}}}],["overhead",{"_index":791,"t":{"47":{"position":[[66,9]]}}}],["owner",{"_index":339,"t":{"19":{"position":[[442,6]]}}}],["ownership",{"_index":331,"t":{"19":{"position":[[302,9]]}}}],["p2p",{"_index":275,"t":{"15":{"position":[[98,3]]},"19":{"position":[[1155,3]]},"23":{"position":[[4984,3]]}}}],["packag",{"_index":634,"t":{"30":{"position":[[65,8]]}}}],["packaging/loc",{"_index":687,"t":{"34":{"position":[[361,15]]}}}],["page",{"_index":893,"t":{"65":{"position":[[8,4]]},"69":{"position":[[1314,6]]},"71":{"position":[[899,5]]},"91":{"position":[[8,4]]}}}],["pair",{"_index":744,"t":{"39":{"position":[[245,7]]}}}],["pariti",{"_index":456,"t":{"23":{"position":[[1822,7],[1856,6]]}}}],["part",{"_index":152,"t":{"6":{"position":[[727,4]]},"23":{"position":[[1629,6],[1691,5],[2778,4]]},"34":{"position":[[414,4]]},"69":{"position":[[564,4]]},"81":{"position":[[29,4]]},"107":{"position":[[29,4]]},"113":{"position":[[494,4],[568,4]]}}}],["parti",{"_index":946,"t":{"71":{"position":[[66,7],[243,5]]},"75":{"position":[[264,7]]},"79":{"position":[[52,5],[80,5],[235,5]]},"101":{"position":[[56,5],[163,5],[201,5],[292,5],[358,5],[467,5],[548,5],[618,5],[742,5]]},"111":{"position":[[1726,7]]}}}],["partial",{"_index":223,"t":{"9":{"position":[[360,7]]}}}],["particip",{"_index":17,"t":{"2":{"position":[[175,12],[792,14]]},"4":{"position":[[185,13],[394,13],[525,14],[632,12],[806,13]]},"6":{"position":[[212,12],[926,12]]},"23":{"position":[[5830,11],[6887,13],[6968,11],[7753,11],[7907,11]]},"111":{"position":[[2211,11]]}}}],["particular",{"_index":1048,"t":{"95":{"position":[[250,10]]}}}],["particularli",{"_index":531,"t":{"23":{"position":[[4586,12]]}}}],["pass",{"_index":701,"t":{"37":{"position":[[353,8]]}}}],["past",{"_index":610,"t":{"25":{"position":[[170,4]]},"63":{"position":[[63,4]]},"95":{"position":[[1415,5]]}}}],["patch",{"_index":732,"t":{"37":{"position":[[1100,5]]}}}],["pay",{"_index":190,"t":{"6":{"position":[[1680,4]]}}}],["payment",{"_index":579,"t":{"23":{"position":[[6712,9]]},"59":{"position":[[208,9]]},"111":{"position":[[1813,7]]}}}],["peer",{"_index":353,"t":{"19":{"position":[[753,4],[761,4]]}}}],["penal",{"_index":546,"t":{"23":{"position":[[5436,9],[5723,9]]}}}],["penalti",{"_index":144,"t":{"6":{"position":[[555,10]]}}}],["peopl",{"_index":942,"t":{"69":{"position":[[1366,6]]}}}],["per",{"_index":679,"t":{"34":{"position":[[269,3]]}}}],["perfectli",{"_index":469,"t":{"23":{"position":[[2181,9]]}}}],["perform",{"_index":370,"t":{"19":{"position":[[1348,11]]},"57":{"position":[[21,11],[241,11]]}}}],["period",{"_index":141,"t":{"6":{"position":[[501,8]]},"23":{"position":[[5341,12],[6422,7]]},"81":{"position":[[114,12]]},"107":{"position":[[140,12]]}}}],["permit",{"_index":1057,"t":{"95":{"position":[[684,9]]},"103":{"position":[[615,9]]}}}],["persist",{"_index":274,"t":{"15":{"position":[[79,10]]}}}],["person",{"_index":586,"t":{"23":{"position":[[7146,8]]},"67":{"position":[[77,8]]},"69":{"position":[[64,8],[141,8],[293,8],[352,8],[505,8],[1204,8]]},"71":{"position":[[45,8],[97,8],[574,8]]},"73":{"position":[[156,8]]},"75":{"position":[[41,8],[125,8],[208,8],[482,8],[600,8]]},"77":{"position":[[84,8],[190,8],[338,8],[403,8],[461,8],[588,8],[864,8],[996,8]]}}}],["personalis",{"_index":958,"t":{"71":{"position":[[687,11]]}}}],["phase",{"_index":602,"t":{"23":{"position":[[7804,5],[7934,5]]}}}],["piec",{"_index":65,"t":{"4":{"position":[[46,6]]},"23":{"position":[[1369,5],[1405,6],[1778,7],[2380,5]]}}}],["pillar",{"_index":492,"t":{"23":{"position":[[2840,6]]}}}],["pin",{"_index":689,"t":{"34":{"position":[[462,6]]}}}],["place",{"_index":437,"t":{"23":{"position":[[1352,7]]},"30":{"position":[[141,5]]},"71":{"position":[[552,5]]},"75":{"position":[[142,6]]},"97":{"position":[[1095,5]]}}}],["placement",{"_index":854,"t":{"55":{"position":[[72,9]]}}}],["plan",{"_index":527,"t":{"23":{"position":[[4476,7]]},"30":{"position":[[280,5]]}}}],["platform",{"_index":300,"t":{"17":{"position":[[38,8]]},"19":{"position":[[546,9],[1172,9]]}}}],["plausibl",{"_index":20,"t":{"2":{"position":[[204,9]]}}}],["pleas",{"_index":595,"t":{"23":{"position":[[7421,6]]},"81":{"position":[[89,6]]},"83":{"position":[[68,6]]},"85":{"position":[[100,6]]},"87":{"position":[[516,6]]},"99":{"position":[[351,6]]},"111":{"position":[[513,6]]},"113":{"position":[[881,6]]}}}],["poc",{"_index":216,"t":{"9":{"position":[[192,3],[251,3],[290,3]]},"11":{"position":[[341,3]]}}}],["pod",{"_index":853,"t":{"55":{"position":[[67,4]]}}}],["point",{"_index":392,"t":{"23":{"position":[[207,6]]}}}],["polici",{"_index":898,"t":{"65":{"position":[[56,6],[220,6]]},"67":{"position":[[33,6]]},"71":{"position":[[295,8]]},"77":{"position":[[29,7]]},"79":{"position":[[130,9]]},"81":{"position":[[50,6],[160,6]]},"83":{"position":[[60,7]]},"101":{"position":[[122,9]]}}}],["pool",{"_index":644,"t":{"30":{"position":[[225,4]]}}}],["popular",{"_index":563,"t":{"23":{"position":[[6166,7]]}}}],["port",{"_index":663,"t":{"34":{"position":[[49,6]]},"55":{"position":[[18,4]]}}}],["portion",{"_index":547,"t":{"23":{"position":[[5453,7]]},"113":{"position":[[642,8]]}}}],["poseidon",{"_index":806,"t":{"49":{"position":[[46,8]]}}}],["poseidon2",{"_index":771,"t":{"45":{"position":[[81,9],[95,9]]},"47":{"position":[[576,9]]},"49":{"position":[[0,9],[110,9]]}}}],["poseidon2/pull/10",{"_index":815,"t":{"49":{"position":[[477,17]]}}}],["poseidon2/pull/11",{"_index":822,"t":{"49":{"position":[[597,17]]}}}],["poseidon2/pull/7",{"_index":811,"t":{"49":{"position":[[294,16]]}}}],["poseidon2/pull/8",{"_index":812,"t":{"49":{"position":[[348,16]]}}}],["poseidon2/pull/9",{"_index":813,"t":{"49":{"position":[[402,16]]}}}],["posit",{"_index":1028,"t":{"87":{"position":[[408,9]]}}}],["possess",{"_index":142,"t":{"6":{"position":[[524,10],[1262,10]]},"23":{"position":[[3957,10],[5376,11]]}}}],["possibl",{"_index":820,"t":{"49":{"position":[[543,8]]},"77":{"position":[[107,9],[370,10]]},"103":{"position":[[427,11]]},"111":{"position":[[1613,9]]}}}],["post",{"_index":105,"t":{"4":{"position":[[700,7]]},"6":{"position":[[343,6]]},"23":{"position":[[3896,4]]},"81":{"position":[[206,7]]},"107":{"position":[[238,7]]}}}],["potenti",{"_index":1157,"t":{"111":{"position":[[670,11]]}}}],["power",{"_index":340,"t":{"19":{"position":[[472,5]]}}}],["powerhouses—googl",{"_index":318,"t":{"19":{"position":[[86,19]]}}}],["pr",{"_index":659,"t":{"32":{"position":[[147,2]]},"34":{"position":[[259,2],[297,2],[441,2]]},"47":{"position":[[299,2]]},"49":{"position":[[253,3]]}}}],["pragma",{"_index":727,"t":{"37":{"position":[[1039,8]]}}}],["pre",{"_index":283,"t":{"15":{"position":[[289,3]]}}}],["predict",{"_index":277,"t":{"15":{"position":[[166,11]]}}}],["prefer",{"_index":1145,"t":{"111":{"position":[[253,6]]}}}],["prepar",{"_index":618,"t":{"25":{"position":[[375,11]]},"53":{"position":[[40,9]]}}}],["present",{"_index":1067,"t":{"95":{"position":[[1421,7]]},"97":{"position":[[788,10]]}}}],["preserv",{"_index":403,"t":{"23":{"position":[[500,10],[4208,8]]}}}],["prevent",{"_index":55,"t":{"2":{"position":[[711,11]]},"4":{"position":[[487,7]]},"23":{"position":[[192,7],[3434,8]]}}}],["previous",{"_index":580,"t":{"23":{"position":[[6775,10]]}}}],["primari",{"_index":768,"t":{"45":{"position":[[45,7]]}}}],["primit",{"_index":648,"t":{"30":{"position":[[270,9]]}}}],["principl",{"_index":1148,"t":{"111":{"position":[[315,9]]}}}],["prior",{"_index":1195,"t":{"113":{"position":[[113,5]]}}}],["privaci",{"_index":897,"t":{"65":{"position":[[48,7],[110,7],[212,7]]},"67":{"position":[[25,7]]},"69":{"position":[[237,7],[1135,7]]},"71":{"position":[[287,7],[481,7]]},"75":{"position":[[30,7],[705,7]]},"77":{"position":[[21,7],[261,7]]},"79":{"position":[[122,7]]},"81":{"position":[[42,7],[152,7]]},"83":{"position":[[52,7]]},"101":{"position":[[114,7]]}}}],["proactiv",{"_index":167,"t":{"6":{"position":[[1109,11]]}}}],["problem",{"_index":434,"t":{"23":{"position":[[1231,8],[2595,8]]},"49":{"position":[[633,7]]}}}],["proceed",{"_index":1179,"t":{"111":{"position":[[1676,11]]}}}],["process",{"_index":554,"t":{"23":{"position":[[5860,8]]},"53":{"position":[[244,8]]},"67":{"position":[[63,10]]},"69":{"position":[[50,10],[125,7],[281,7],[483,7],[645,7],[749,10]]},"71":{"position":[[89,7]]},"75":{"position":[[235,9]]},"77":{"position":[[65,10],[228,8],[575,7],[635,10],[676,10],[769,10],[845,10],[1019,9]]}}}],["procur",{"_index":1120,"t":{"103":{"position":[[149,11]]}}}],["profil",{"_index":660,"t":{"34":{"position":[[19,8],[60,8]]}}}],["profit",{"_index":95,"t":{"4":{"position":[[478,8]]},"23":{"position":[[6126,9]]},"103":{"position":[[132,8]]}}}],["progress",{"_index":294,"t":{"15":{"position":[[469,9]]},"25":{"position":[[33,8]]}}}],["project",{"_index":37,"t":{"2":{"position":[[426,8]]},"15":{"position":[[10,7],[235,7]]},"17":{"position":[[320,9]]},"23":{"position":[[4196,8],[7281,7]]},"87":{"position":[[463,7]]},"95":{"position":[[1462,8]]},"97":{"position":[[134,11],[281,7],[386,9]]}}}],["promis",{"_index":407,"t":{"23":{"position":[[571,8],[600,7]]},"95":{"position":[[1318,8]]}}}],["promot",{"_index":501,"t":{"23":{"position":[[3345,8]]}}}],["proof",{"_index":46,"t":{"2":{"position":[[576,5]]},"6":{"position":[[510,5],[623,5],[644,5],[1247,6],[1422,6],[1591,5]]},"9":{"position":[[32,5]]},"23":{"position":[[3852,6],[3862,5],[3907,6],[3993,6],[5362,5],[5415,5],[5504,5],[5671,6]]},"32":{"position":[[124,6]]},"39":{"position":[[412,5]]},"51":{"position":[[64,6],[581,5],[657,6]]},"59":{"position":[[263,5]]},"63":{"position":[[246,5],[405,6],[412,6],[475,5]]}}}],["properli",{"_index":849,"t":{"53":{"position":[[329,9]]}}}],["properti",{"_index":566,"t":{"23":{"position":[[6219,8]]},"95":{"position":[[307,8]]}}}],["proport",{"_index":541,"t":{"23":{"position":[[5200,12]]}}}],["protect",{"_index":15,"t":{"2":{"position":[[158,8]]},"23":{"position":[[627,11],[1596,7],[2870,10]]},"75":{"position":[[18,7],[306,10],[408,12],[517,10]]},"77":{"position":[[922,10]]}}}],["protocol",{"_index":177,"t":{"6":{"position":[[1369,8]]},"21":{"position":[[292,8]]},"23":{"position":[[66,8],[2861,8],[3565,9]]},"87":{"position":[[41,8]]},"89":{"position":[[6,8]]}}}],["provabl",{"_index":25,"t":{"2":{"position":[[264,8]]}}}],["prove",{"_index":242,"t":{"11":{"position":[[234,7],[440,7]]},"13":{"position":[[485,5]]},"23":{"position":[[3951,5]]},"39":{"position":[[15,7]]},"45":{"position":[[136,7]]},"47":{"position":[[594,7]]},"51":{"position":[[4,7],[135,5],[344,7],[396,7]]},"63":{"position":[[436,7]]}}}],["prover",{"_index":887,"t":{"63":{"position":[[170,7]]}}}],["provid",{"_index":8,"t":{"2":{"position":[[77,9],[487,8]]},"6":{"position":[[277,10],[493,7],[1378,9],[1441,7]]},"13":{"position":[[333,8]]},"17":{"position":[[52,8]]},"19":{"position":[[369,9]]},"23":{"position":[[80,8],[713,7],[3803,9],[4029,9],[5103,7],[5354,7],[5407,7],[5496,7],[7643,9]]},"51":{"position":[[81,8]]},"59":{"position":[[254,8]]},"71":{"position":[[175,7],[441,8]]},"75":{"position":[[277,7],[499,8]]},"95":{"position":[[15,8]]},"101":{"position":[[26,8]]}}}],["provis",{"_index":61,"t":{"2":{"position":[[825,9]]},"4":{"position":[[679,12]]},"109":{"position":[[150,11]]},"113":{"position":[[445,10]]}}}],["proxi",{"_index":698,"t":{"37":{"position":[[218,5]]}}}],["pst",{"_index":913,"t":{"67":{"position":[[271,3]]},"93":{"position":[[212,3]]}}}],["public",{"_index":526,"t":{"23":{"position":[[4458,6]]},"25":{"position":[[101,6]]},"55":{"position":[[179,6]]},"87":{"position":[[450,6]]}}}],["publicli",{"_index":794,"t":{"47":{"position":[[249,8]]}}}],["pull",{"_index":710,"t":{"37":{"position":[[702,7]]}}}],["purport",{"_index":365,"t":{"19":{"position":[[1125,7]]},"97":{"position":[[858,7]]}}}],["purpos",{"_index":834,"t":{"51":{"position":[[314,9]]},"67":{"position":[[8,8]]},"69":{"position":[[168,8],[443,8]]},"93":{"position":[[8,8]]},"95":{"position":[[261,8],[1090,8]]},"99":{"position":[[224,8]]}}}],["q1",{"_index":528,"t":{"23":{"position":[[4488,2],[7821,2],[7943,2]]}}}],["q1/q2",{"_index":609,"t":{"25":{"position":[[95,5]]}}}],["q2/q4",{"_index":155,"t":{"6":{"position":[[760,5]]}}}],["q3",{"_index":225,"t":{"9":{"position":[[406,2]]}}}],["qualiti",{"_index":236,"t":{"11":{"position":[[104,9]]}}}],["queri",{"_index":171,"t":{"6":{"position":[[1226,7]]},"39":{"position":[[389,5]]}}}],["question",{"_index":1010,"t":{"83":{"position":[[32,9]]},"113":{"position":[[837,9]]}}}],["queue",{"_index":867,"t":{"57":{"position":[[272,5]]}}}],["r&d",{"_index":734,"t":{"39":{"position":[[5,3]]}}}],["rais",{"_index":708,"t":{"37":{"position":[[524,6]]}}}],["randomli",{"_index":170,"t":{"6":{"position":[[1217,8]]}}}],["rapidli",{"_index":756,"t":{"41":{"position":[[37,8]]}}}],["rate",{"_index":940,"t":{"69":{"position":[[1343,5]]}}}],["ration",{"_index":58,"t":{"2":{"position":[[753,8]]}}}],["react",{"_index":786,"t":{"45":{"position":[[598,5]]}}}],["read",{"_index":200,"t":{"6":{"position":[[1919,4]]},"69":{"position":[[991,4]]},"91":{"position":[[276,4]]}}}],["reason",{"_index":986,"t":{"77":{"position":[[359,10]]},"111":{"position":[[722,10],[2149,10]]}}}],["rebas",{"_index":692,"t":{"37":{"position":[[11,7],[117,7]]}}}],["rebuild",{"_index":461,"t":{"23":{"position":[[1949,7]]}}}],["receiv",{"_index":1169,"t":{"111":{"position":[[1093,9]]}}}],["recent",{"_index":763,"t":{"41":{"position":[[171,6]]},"47":{"position":[[220,6]]},"51":{"position":[[529,6]]}}}],["recommend",{"_index":961,"t":{"71":{"position":[[832,11]]}}}],["reconstruct",{"_index":53,"t":{"2":{"position":[[687,14]]},"6":{"position":[[1789,14]]}}}],["record",{"_index":405,"t":{"23":{"position":[[527,8]]}}}],["recreat",{"_index":440,"t":{"23":{"position":[[1427,8]]}}}],["recurs",{"_index":752,"t":{"39":{"position":[[418,9]]}}}],["reduc",{"_index":789,"t":{"47":{"position":[[48,8]]}}}],["redund",{"_index":41,"t":{"2":{"position":[[511,11]]},"13":{"position":[[418,10]]}}}],["ref",{"_index":683,"t":{"34":{"position":[[326,3]]},"47":{"position":[[520,3]]}}}],["refactor",{"_index":694,"t":{"37":{"position":[[46,8]]}}}],["refc",{"_index":649,"t":{"30":{"position":[[297,4]]}}}],["refer",{"_index":376,"t":{"21":{"position":[[123,6]]},"51":{"position":[[549,9]]},"67":{"position":[[341,5],[381,11],[400,9]]},"93":{"position":[[282,5],[332,11],[351,9]]},"99":{"position":[[358,5]]},"111":{"position":[[1157,8],[1432,10]]},"113":{"position":[[352,9]]}}}],["referr",{"_index":938,"t":{"69":{"position":[[1325,10]]}}}],["regard",{"_index":901,"t":{"65":{"position":[[166,7]]},"69":{"position":[[460,7]]},"109":{"position":[[123,6]]},"113":{"position":[[73,9]]}}}],["regardless",{"_index":1186,"t":{"111":{"position":[[1999,10]]}}}],["regist",{"_index":907,"t":{"67":{"position":[[179,10]]},"93":{"position":[[119,10]]}}}],["regular",{"_index":576,"t":{"23":{"position":[[6574,7],[6724,7],[7080,7]]}}}],["regularli",{"_index":1100,"t":{"97":{"position":[[1231,10]]}}}],["regulatori",{"_index":1091,"t":{"97":{"position":[[667,10]]}}}],["relat",{"_index":444,"t":{"23":{"position":[[1536,6]]},"57":{"position":[[230,7]]},"95":{"position":[[559,8],[1446,8]]},"97":{"position":[[421,7]]},"103":{"position":[[239,7]]},"105":{"position":[[146,7]]},"111":{"position":[[141,8]]}}}],["releas",{"_index":154,"t":{"6":{"position":[[752,7]]},"9":{"position":[[117,8]]},"11":{"position":[[182,7],[249,7]]},"25":{"position":[[116,8],[438,9]]}}}],["relev",{"_index":905,"t":{"67":{"position":[[112,8]]},"77":{"position":[[252,8]]},"93":{"position":[[52,8]]},"111":{"position":[[1828,8]]}}}],["reli",{"_index":1066,"t":{"95":{"position":[[1301,6]]}}}],["reliabl",{"_index":132,"t":{"6":{"position":[[260,8]]},"23":{"position":[[2052,8],[3765,8],[5121,8]]},"95":{"position":[[450,12]]},"97":{"position":[[882,8],[951,11]]}}}],["relianc",{"_index":1099,"t":{"97":{"position":[[1107,8]]}}}],["remain",{"_index":28,"t":{"2":{"position":[[314,9]]},"23":{"position":[[4692,6]]},"113":{"position":[[632,9],[656,6]]}}}],["remedi",{"_index":1161,"t":{"111":{"position":[[974,6]]}}}],["remot",{"_index":229,"t":{"9":{"position":[[455,6]]},"19":{"position":[[4,6]]},"51":{"position":[[454,6]]},"89":{"position":[[39,6]]}}}],["remov",{"_index":713,"t":{"37":{"position":[[792,8]]},"77":{"position":[[391,6]]}}}],["repair",{"_index":51,"t":{"2":{"position":[[650,6]]},"6":{"position":[[1759,6]]},"11":{"position":[[220,6]]},"13":{"position":[[537,7]]},"23":{"position":[[818,7],[2252,6],[2289,6],[2507,6],[2654,7],[3524,6]]}}}],["replac",{"_index":1007,"t":{"81":{"position":[[17,7]]},"107":{"position":[[17,7]]}}}],["repo",{"_index":638,"t":{"30":{"position":[[131,4]]},"87":{"position":[[544,4]]}}}],["report",{"_index":1019,"t":{"85":{"position":[[107,6]]}}}],["repost",{"_index":187,"t":{"6":{"position":[[1633,9]]}}}],["repres",{"_index":838,"t":{"51":{"position":[[510,9]]},"101":{"position":[[233,9]]}}}],["represent",{"_index":1053,"t":{"95":{"position":[[376,15],[1327,15]]},"113":{"position":[[167,15]]}}}],["request",{"_index":134,"t":{"6":{"position":[[357,7],[808,8]]},"77":{"position":[[541,8]]}}}],["requir",{"_index":262,"t":{"13":{"position":[[395,8],[607,8]]},"23":{"position":[[4298,7],[4745,8],[4854,9]]},"47":{"position":[[160,8]]},"59":{"position":[[104,8]]},"75":{"position":[[531,8]]},"99":{"position":[[278,12]]}}}],["research",{"_index":246,"t":{"11":{"position":[[409,9],[490,8]]},"25":{"position":[[331,8]]},"27":{"position":[[107,8]]},"41":{"position":[[178,8]]},"43":{"position":[[111,8]]},"63":{"position":[[8,8],[68,8],[178,8],[321,8]]},"87":{"position":[[124,11],[314,8]]}}}],["resili",{"_index":399,"t":{"23":{"position":[[408,10]]}}}],["resist",{"_index":11,"t":{"2":{"position":[[113,10]]},"13":{"position":[[135,10]]},"17":{"position":[[93,10]]},"19":{"position":[[721,9],[898,10]]},"23":{"position":[[170,6],[453,11],[4266,7]]}}}],["resolut",{"_index":1159,"t":{"111":{"position":[[809,10]]}}}],["resolv",{"_index":1149,"t":{"111":{"position":[[328,9],[744,7],[1034,7],[1181,8]]}}}],["resourc",{"_index":63,"t":{"2":{"position":[[853,10]]},"4":{"position":[[369,8]]},"6":{"position":[[181,8],[688,10],[1001,9]]},"23":{"position":[[2561,9],[2718,8]]}}}],["respect",{"_index":899,"t":{"65":{"position":[[121,7]]},"71":{"position":[[276,10]]},"77":{"position":[[175,7]]},"111":{"position":[[1845,7]]},"113":{"position":[[227,7]]}}}],["respond",{"_index":514,"t":{"23":{"position":[[3819,7]]}}}],["respons",{"_index":1004,"t":{"79":{"position":[[161,14]]},"91":{"position":[[258,14]]},"95":{"position":[[924,11]]},"97":{"position":[[918,14]]},"101":{"position":[[696,11]]},"107":{"position":[[103,11]]}}}],["restor",{"_index":470,"t":{"23":{"position":[[2191,9]]}}}],["restrict",{"_index":127,"t":{"6":{"position":[[190,10]]}}}],["result",{"_index":113,"t":{"4":{"position":[[838,9]]},"6":{"position":[[535,7]]},"37":{"position":[[178,6]]},"71":{"position":[[116,6]]},"97":{"position":[[718,8]]},"111":{"position":[[797,6]]}}}],["retriev",{"_index":47,"t":{"2":{"position":[[585,15]]},"6":{"position":[[853,8],[1181,12],[1340,14]]},"15":{"position":[[210,10]]},"23":{"position":[[3535,10],[6532,8],[6821,8]]},"57":{"position":[[118,9]]}}}],["review",{"_index":714,"t":{"37":{"position":[[831,6]]},"39":{"position":[[268,6]]},"47":{"position":[[418,7]]},"71":{"position":[[853,6]]},"111":{"position":[[536,6]]}}}],["reward",{"_index":553,"t":{"23":{"position":[[5711,7]]}}}],["right",{"_index":478,"t":{"23":{"position":[[2450,5],[7858,5]]},"77":{"position":[[165,6],[295,5]]},"95":{"position":[[338,7]]},"111":{"position":[[465,5],[603,6],[2202,5]]},"113":{"position":[[789,5]]}}}],["risk",{"_index":1041,"t":{"95":{"position":[[106,5]]},"97":{"position":[[515,4],[1042,4]]},"101":{"position":[[672,4]]}}}],["roadmap",{"_index":253,"t":{"13":{"position":[[21,7]]},"97":{"position":[[272,8]]}}}],["robust",{"_index":71,"t":{"4":{"position":[[123,6]]},"19":{"position":[[837,10]]}}}],["robust—99.99%—dur",{"_index":383,"t":{"21":{"position":[[208,24]]}}}],["role",{"_index":121,"t":{"6":{"position":[[66,4]]},"23":{"position":[[7526,4]]}}}],["root",{"_index":817,"t":{"49":{"position":[[510,4]]}}}],["row",{"_index":548,"t":{"23":{"position":[[5529,4]]}}}],["rpc",{"_index":691,"t":{"34":{"position":[[499,3]]},"37":{"position":[[420,3],[623,3],[677,3]]}}}],["rule",{"_index":1172,"t":{"111":{"position":[[1316,5],[1386,5],[1963,5]]}}}],["run",{"_index":585,"t":{"23":{"position":[[7135,7]]},"25":{"position":[[154,7]]},"45":{"position":[[184,4]]}}}],["runner",{"_index":667,"t":{"34":{"position":[[103,6]]},"55":{"position":[[96,7]]}}}],["sa",{"_index":1015,"t":{"83":{"position":[[150,3]]},"113":{"position":[[963,3]]}}}],["safe",{"_index":415,"t":{"23":{"position":[[910,4],[1295,5],[2143,5],[2749,4]]},"34":{"position":[[300,4]]},"47":{"position":[[492,4]]},"63":{"position":[[305,4]]}}}],["safeti",{"_index":449,"t":{"23":{"position":[[1658,7],[2231,7]]},"73":{"position":[[141,6]]}}}],["same",{"_index":198,"t":{"6":{"position":[[1862,4]]},"75":{"position":[[512,4]]}}}],["sampl",{"_index":249,"t":{"11":{"position":[[481,8]]},"39":{"position":[[382,6]]}}}],["save",{"_index":484,"t":{"23":{"position":[[2555,5]]}}}],["scale",{"_index":572,"t":{"23":{"position":[[6331,5]]}}}],["scheme",{"_index":194,"t":{"6":{"position":[[1766,6]]},"11":{"position":[[242,6],[448,6]]}}}],["scimitar",{"_index":217,"t":{"9":{"position":[[205,8],[276,9]]},"11":{"position":[[190,8]]}}}],["score",{"_index":323,"t":{"19":{"position":[[151,5]]}}}],["search",{"_index":864,"t":{"57":{"position":[[107,6]]}}}],["secp256k1",{"_index":825,"t":{"49":{"position":[[662,9]]}}}],["section",{"_index":1201,"t":{"113":{"position":[[289,8]]}}}],["secur",{"_index":442,"t":{"23":{"position":[[1478,6]]},"69":{"position":[[832,8]]},"73":{"position":[[36,8],[92,8]]},"85":{"position":[[8,8],[118,8]]},"95":{"position":[[1764,9]]}}}],["security@free.technolog",{"_index":1020,"t":{"85":{"position":[[141,25]]}}}],["see",{"_index":778,"t":{"45":{"position":[[360,3]]}}}],["seek",{"_index":1162,"t":{"111":{"position":[[989,8]]}}}],["sell",{"_index":1078,"t":{"95":{"position":[[1701,5],[1741,4]]}}}],["send",{"_index":178,"t":{"6":{"position":[[1408,5]]},"23":{"position":[[3844,7],[3979,5]]},"111":{"position":[[852,4]]}}}],["sendtransact",{"_index":707,"t":{"37":{"position":[[491,15]]}}}],["sens",{"_index":557,"t":{"23":{"position":[[5939,5]]}}}],["separ",{"_index":666,"t":{"34":{"position":[[89,8]]},"79":{"position":[[97,8]]}}}],["serial",{"_index":725,"t":{"37":{"position":[[1013,9]]}}}],["serious",{"_index":963,"t":{"73":{"position":[[45,9]]},"85":{"position":[[17,9]]}}}],["serv",{"_index":303,"t":{"17":{"position":[[134,6]]},"23":{"position":[[2819,5],[6158,7],[7609,7]]}}}],["servic",{"_index":322,"t":{"19":{"position":[[142,8],[602,7]]},"23":{"position":[[6664,8]]},"55":{"position":[[158,7]]},"71":{"position":[[433,7]]},"103":{"position":[[176,9]]}}}],["set",{"_index":603,"t":{"23":{"position":[[7813,3]]},"53":{"position":[[307,3]]},"71":{"position":[[807,3]]},"111":{"position":[[888,7]]}}}],["settl",{"_index":879,"t":{"59":{"position":[[201,6]]}}}],["setup",{"_index":831,"t":{"51":{"position":[[231,5]]}}}],["sever",{"_index":497,"t":{"23":{"position":[[3123,7],[5510,7]]},"113":{"position":[[581,9]]}}}],["shall",{"_index":1065,"t":{"95":{"position":[[1264,5]]},"105":{"position":[[4,5]]},"111":{"position":[[841,5]]}}}],["shard",{"_index":454,"t":{"23":{"position":[[1795,9],[1830,7],[1863,6],[1974,6],[2119,6],[2397,6],[2686,6]]}}}],["share",{"_index":69,"t":{"4":{"position":[[83,7]]},"19":{"position":[[783,7],[1164,7]]}}}],["short",{"_index":931,"t":{"69":{"position":[[1040,6]]}}}],["side",{"_index":135,"t":{"6":{"position":[[365,4]]}}}],["signer",{"_index":705,"t":{"37":{"position":[[439,7]]}}}],["signererror",{"_index":709,"t":{"37":{"position":[[549,11]]}}}],["similar",{"_index":921,"t":{"67":{"position":[[373,7]]},"93":{"position":[[324,7]]}}}],["similarli",{"_index":124,"t":{"6":{"position":[[99,10]]}}}],["simpl",{"_index":426,"t":{"23":{"position":[[1073,6]]},"69":{"position":[[1278,6]]}}}],["simul",{"_index":748,"t":{"39":{"position":[[318,9]]}}}],["simultan",{"_index":871,"t":{"57":{"position":[[358,12]]}}}],["singl",{"_index":391,"t":{"23":{"position":[[200,6]]}}}],["site",{"_index":944,"t":{"69":{"position":[[1384,5]]},"79":{"position":[[86,5]]},"95":{"position":[[607,5]]}}}],["site.thes",{"_index":1055,"t":{"95":{"position":[[628,10]]}}}],["sixti",{"_index":1165,"t":{"111":{"position":[[1062,5]]}}}],["size",{"_index":670,"t":{"34":{"position":[[172,4]]}}}],["slash",{"_index":143,"t":{"6":{"position":[[546,8]]},"23":{"position":[[4020,8]]}}}],["slot",{"_index":137,"t":{"6":{"position":[[402,5],[1508,5],[1522,4],[1606,5],[1845,5]]},"51":{"position":[[177,4],[471,4]]}}}],["small",{"_index":316,"t":{"19":{"position":[[61,5]]},"23":{"position":[[2589,5]]}}}],["smart",{"_index":875,"t":{"59":{"position":[[21,5],[67,5]]}}}],["snark",{"_index":228,"t":{"9":{"position":[[443,5]]},"23":{"position":[[3209,6],[3639,6],[3738,8]]},"51":{"position":[[31,5]]}}}],["softwar",{"_index":773,"t":{"45":{"position":[[170,8]]},"87":{"position":[[54,8]]}}}],["sole",{"_index":1039,"t":{"95":{"position":[[86,4],[889,4],[917,6]]},"97":{"position":[[1410,4]]},"101":{"position":[[689,6]]}}}],["solicit",{"_index":1079,"t":{"95":{"position":[[1710,10]]}}}],["solid",{"_index":745,"t":{"39":{"position":[[279,8]]}}}],["solut",{"_index":364,"t":{"19":{"position":[[1115,9],[1265,8]]},"23":{"position":[[91,8],[306,9],[3006,9],[3091,9]]}}}],["someth",{"_index":295,"t":{"15":{"position":[[487,9]]}}}],["soon",{"_index":617,"t":{"25":{"position":[[361,4]]}}}],["sophist",{"_index":268,"t":{"13":{"position":[[592,14]]}}}],["sourc",{"_index":1029,"t":{"87":{"position":[[443,6]]}}}],["sp",{"_index":513,"t":{"23":{"position":[[3813,5],[3939,2]]}}}],["spam",{"_index":96,"t":{"4":{"position":[[495,4]]}}}],["spare",{"_index":569,"t":{"23":{"position":[[6264,5]]}}}],["special",{"_index":1122,"t":{"103":{"position":[[193,8]]}}}],["specif",{"_index":782,"t":{"45":{"position":[[433,14]]},"69":{"position":[[159,8],[1227,8]]},"75":{"position":[[429,8]]},"97":{"position":[[1290,9]]},"113":{"position":[[828,8]]}}}],["spend",{"_index":943,"t":{"69":{"position":[[1373,5]]}}}],["split",{"_index":436,"t":{"23":{"position":[[1313,6],[1758,9]]},"87":{"position":[[231,5]]}}}],["spread",{"_index":450,"t":{"23":{"position":[[1675,9]]}}}],["stabil",{"_index":851,"t":{"53":{"position":[[410,10]]},"57":{"position":[[37,9],[257,9]]}}}],["stack",{"_index":306,"t":{"17":{"position":[[180,6]]},"21":{"position":[[99,6]]}}}],["stage",{"_index":1101,"t":{"97":{"position":[[1308,6]]}}}],["stake",{"_index":133,"t":{"6":{"position":[[302,5]]},"23":{"position":[[5181,5],[5287,6],[5468,6],[5563,6],[5799,5]]}}}],["standard",{"_index":342,"t":{"19":{"position":[[510,10]]}}}],["start",{"_index":635,"t":{"30":{"position":[[74,5],[150,5]]},"37":{"position":[[963,5]]},"39":{"position":[[372,5]]}}}],["starter",{"_index":613,"t":{"25":{"position":[[283,7]]}}}],["state",{"_index":388,"t":{"23":{"position":[[26,5],[4234,5],[4639,5]]}}}],["statement",{"_index":1080,"t":{"97":{"position":[[45,10],[221,11],[251,10],[410,10],[557,10]]}}}],["statu",{"_index":1112,"t":{"101":{"position":[[217,6]]}}}],["statut",{"_index":1187,"t":{"111":{"position":[[2028,7]]}}}],["stay",{"_index":291,"t":{"15":{"position":[[441,7]]},"23":{"position":[[905,4],[7238,4],[7830,4],[7952,4]]}}}],["still",{"_index":100,"t":{"4":{"position":[[549,5]]},"13":{"position":[[501,5]]},"19":{"position":[[1229,5]]},"77":{"position":[[134,5]]}}}],["storag",{"_index":4,"t":{"2":{"position":[[33,7],[324,7],[456,7]]},"4":{"position":[[692,7],[752,7]]},"6":{"position":[[225,7],[269,7],[288,7],[1050,7],[1137,7],[1194,7],[1395,7],[1486,7],[1697,7],[1867,7],[1904,7]]},"13":{"position":[[80,7],[325,7]]},"17":{"position":[[30,7],[148,7]]},"19":{"position":[[11,7],[232,7],[361,7],[766,7],[1107,7],[1257,7],[1304,7]]},"21":{"position":[[67,7],[181,7]]},"23":{"position":[[58,7],[124,7],[298,7],[942,7],[1551,7],[2066,8],[2323,7],[2832,7],[2998,7],[3083,7],[3795,7],[4115,7],[4999,7],[5075,7],[5089,7],[5130,8],[5145,7],[5733,7],[6306,7],[7635,7],[7688,7],[7742,7]]},"32":{"position":[[116,7]]},"51":{"position":[[73,7],[649,7]]},"59":{"position":[[134,8],[169,7],[228,7],[246,7]]}}}],["storage/codex",{"_index":788,"t":{"45":{"position":[[635,13]]},"51":{"position":[[635,13]]}}}],["storage/logtool",{"_index":865,"t":{"57":{"position":[[153,16]]}}}],["storage/nim",{"_index":799,"t":{"47":{"position":[[336,11],[451,11]]},"49":{"position":[[282,11],[336,11],[390,11],[465,11],[585,11],[697,11]]},"51":{"position":[[776,11]]},"61":{"position":[[70,11]]}}}],["store",{"_index":23,"t":{"2":{"position":[[245,6]]},"4":{"position":[[657,5]]},"6":{"position":[[836,6]]},"15":{"position":[[138,7]]},"23":{"position":[[1329,6],[4325,6],[4523,6],[4757,5],[4817,7],[4878,5],[5251,6],[5317,5],[6515,6],[6767,7]]},"51":{"position":[[155,6]]},"59":{"position":[[143,5]]},"69":{"position":[[342,5],[380,5],[889,6]]},"71":{"position":[[666,5]]}}}],["stori",{"_index":837,"t":{"51":{"position":[[502,7]]},"53":{"position":[[212,7]]}}}],["strict",{"_index":731,"t":{"37":{"position":[[1079,6]]},"103":{"position":[[66,6]]}}}],["strong",{"_index":302,"t":{"17":{"position":[[75,6]]},"19":{"position":[[960,6]]}}}],["stronger",{"_index":256,"t":{"13":{"position":[[100,8]]}}}],["structur",{"_index":74,"t":{"4":{"position":[[158,9],[278,9],[592,9],[776,9]]},"11":{"position":[[398,10]]},"23":{"position":[[3424,9]]},"47":{"position":[[100,9]]}}}],["sub",{"_index":765,"t":{"43":{"position":[[52,3],[148,3]]}}}],["subgroup",{"_index":232,"t":{"11":{"position":[[17,9]]},"87":{"position":[[246,9]]}}}],["subject",{"_index":1086,"t":{"97":{"position":[[487,7],[572,7],[1318,7]]},"99":{"position":[[259,7]]}}}],["submit",{"_index":551,"t":{"23":{"position":[[5660,10]]},"51":{"position":[[100,6]]},"73":{"position":[[179,6]]},"75":{"position":[[73,9]]}}}],["subsect",{"_index":1202,"t":{"113":{"position":[[302,11]]}}}],["subsequ",{"_index":153,"t":{"6":{"position":[[735,10]]}}}],["substitut",{"_index":1121,"t":{"103":{"position":[[165,10]]}}}],["success",{"_index":844,"t":{"53":{"position":[[146,10]]}}}],["successfulli",{"_index":836,"t":{"51":{"position":[[441,12]]}}}],["succinct",{"_index":509,"t":{"23":{"position":[[3690,8]]}}}],["such",{"_index":348,"t":{"19":{"position":[[641,4]]},"23":{"position":[[786,4]]},"51":{"position":[[211,4]]},"69":{"position":[[572,4],[760,4],[1302,4]]},"71":{"position":[[232,4],[527,4]]},"73":{"position":[[186,4]]},"75":{"position":[[421,4],[477,4]]},"77":{"position":[[764,4]]},"95":{"position":[[584,4],[1622,5]]},"97":{"position":[[432,4]]},"99":{"position":[[291,4]]},"101":{"position":[[190,4],[281,4],[347,4],[456,4],[607,4],[731,4]]},"103":{"position":[[442,4],[498,4]]},"111":{"position":[[823,4],[1136,4]]}}}],["suffer",{"_index":328,"t":{"19":{"position":[[240,7]]}}}],["suit",{"_index":532,"t":{"23":{"position":[[4599,6]]},"37":{"position":[[154,5]]}}}],["suitabl",{"_index":850,"t":{"53":{"position":[[392,8]]},"95":{"position":[[463,11]]}}}],["summari",{"_index":766,"t":{"43":{"position":[[130,9]]},"97":{"position":[[837,7]]}}}],["supernod",{"_index":507,"t":{"23":{"position":[[3606,13]]}}}],["supersed",{"_index":1194,"t":{"113":{"position":[[99,9]]}}}],["supplement",{"_index":1103,"t":{"97":{"position":[[1358,12]]}}}],["suppli",{"_index":86,"t":{"4":{"position":[[322,6]]}}}],["support",{"_index":633,"t":{"30":{"position":[[53,7],[289,7]]},"37":{"position":[[166,7],[610,7],[661,10]]},"47":{"position":[[391,7]]},"101":{"position":[[272,8]]}}}],["swiss",{"_index":1136,"t":{"109":{"position":[[0,5]]},"111":{"position":[[1247,5],[1310,5],[1957,5]]}}}],["switzerland",{"_index":919,"t":{"67":{"position":[[317,11]]},"75":{"position":[[179,12],[330,11],[543,11],[645,11]]},"93":{"position":[[258,11]]},"111":{"position":[[1532,12]]}}}],["system",{"_index":263,"t":{"13":{"position":[[453,6]]},"23":{"position":[[249,8],[355,8],[589,6],[950,6],[1725,8],[2331,7],[2428,6],[2642,6],[3588,7]]},"39":{"position":[[23,6]]},"45":{"position":[[144,7]]},"47":{"position":[[602,6]]},"49":{"position":[[92,7]]},"51":{"position":[[12,6],[352,7],[404,6]]},"63":{"position":[[252,6],[444,6],[481,6]]},"77":{"position":[[426,8]]},"87":{"position":[[87,7]]}}}],["take",{"_index":119,"t":{"6":{"position":[[47,6]]},"34":{"position":[[233,4]]},"73":{"position":[[26,4]]},"85":{"position":[[3,4]]}}}],["task",{"_index":769,"t":{"45":{"position":[[53,6]]}}}],["tax",{"_index":1072,"t":{"95":{"position":[[1572,4]]}}}],["tcp/udp",{"_index":852,"t":{"55":{"position":[[10,7]]}}}],["team",{"_index":605,"t":{"25":{"position":[[10,4],[484,4]]},"27":{"position":[[52,6],[130,5],[200,4]]},"41":{"position":[[14,4]]},"43":{"position":[[56,6],[152,5]]},"45":{"position":[[20,4]]},"47":{"position":[[29,4]]},"49":{"position":[[156,4]]},"51":{"position":[[364,4]]}}}],["team'",{"_index":231,"t":{"11":{"position":[[10,6]]}}}],["tech",{"_index":305,"t":{"17":{"position":[[175,4]]},"21":{"position":[[94,4]]},"87":{"position":[[177,5]]}}}],["technic",{"_index":270,"t":{"13":{"position":[[641,9]]},"69":{"position":[[792,9]]},"97":{"position":[[303,9],[639,9]]}}}],["techniqu",{"_index":413,"t":{"23":{"position":[[775,10],[1251,10]]}}}],["technolog",{"_index":1017,"t":{"85":{"position":[[69,10]]},"97":{"position":[[156,11]]}}}],["ten",{"_index":429,"t":{"23":{"position":[[1138,3]]},"53":{"position":[[60,4]]}}}],["term",{"_index":131,"t":{"6":{"position":[[255,4]]},"19":{"position":[[167,5],[1295,5]]},"23":{"position":[[1080,6],[5116,4],[5896,4]]},"63":{"position":[[147,5],[369,5]]},"91":{"position":[[58,5],[81,5],[293,5],[439,5],[492,5]]},"93":{"position":[[34,5]]},"99":{"position":[[328,5]]},"101":{"position":[[82,5]]},"103":{"position":[[308,5]]},"105":{"position":[[271,5]]},"107":{"position":[[50,5],[186,5]]},"109":{"position":[[32,5]]},"111":{"position":[[9,6],[167,5]]},"113":{"position":[[14,5],[331,5],[473,5],[516,5],[610,5],[732,5],[867,5]]}}}],["test",{"_index":238,"t":{"11":{"position":[[125,8]]},"13":{"position":[[616,7]]},"23":{"position":[[4436,8]]},"25":{"position":[[206,4]]},"27":{"position":[[67,8]]},"34":{"position":[[98,4],[125,4],[287,5]]},"37":{"position":[[41,4],[77,5],[149,4],[303,7],[347,5],[825,5]]},"43":{"position":[[71,8]]},"53":{"position":[[4,7]]},"55":{"position":[[90,5],[108,5]]},"57":{"position":[[61,7]]},"61":{"position":[[23,7],[137,7]]}}}],["testnet",{"_index":209,"t":{"9":{"position":[[109,7]]},"11":{"position":[[155,7]]},"23":{"position":[[4465,7],[7796,7],[7926,7]]},"25":{"position":[[108,7],[137,7],[275,7]]},"41":{"position":[[120,7]]},"53":{"position":[[171,8],[296,7]]},"55":{"position":[[38,7],[239,7],[279,7]]},"63":{"position":[[108,8]]}}}],["theori",{"_index":1119,"t":{"103":{"position":[[112,6]]}}}],["there'",{"_index":420,"t":{"23":{"position":[[1011,7],[2477,7]]}}}],["therefor",{"_index":1003,"t":{"79":{"position":[[143,9]]}}}],["therein",{"_index":1114,"t":{"101":{"position":[[318,8],[385,7]]}}}],["thing",{"_index":1089,"t":{"97":{"position":[[612,7]]}}}],["third",{"_index":945,"t":{"71":{"position":[[60,5],[237,5]]},"79":{"position":[[46,5],[74,5],[229,5]]},"101":{"position":[[50,5],[157,5],[195,5],[286,5],[352,5],[461,5],[542,5],[612,5],[736,5]]}}}],["those",{"_index":104,"t":{"4":{"position":[[673,5]]},"6":{"position":[[165,5]]},"101":{"position":[[151,5]]}}}],["thread",{"_index":640,"t":{"30":{"position":[[185,9]]}}}],["threadsignalptr",{"_index":647,"t":{"30":{"position":[[254,15]]}}}],["three",{"_index":623,"t":{"27":{"position":[[37,5]]},"43":{"position":[[37,5]]}}}],["through",{"_index":260,"t":{"13":{"position":[[274,7]]},"23":{"position":[[3115,7]]},"95":{"position":[[1018,7]]},"97":{"position":[[462,7],[1174,7]]},"101":{"position":[[572,7],[633,7]]},"111":{"position":[[1204,7]]}}}],["ti",{"_index":138,"t":{"6":{"position":[[437,4]]}}}],["time",{"_index":181,"t":{"6":{"position":[[1457,5]]},"23":{"position":[[920,5],[5424,5],[5518,5],[7118,4]]},"69":{"position":[[413,4],[907,5],[1361,4]]},"81":{"position":[[64,4]]},"97":{"position":[[1378,5]]},"107":{"position":[[70,4]]},"111":{"position":[[1359,4],[2123,4]]}}}],["timelin",{"_index":1094,"t":{"97":{"position":[[755,9],[1273,8]]}}}],["timeout",{"_index":874,"t":{"57":{"position":[[389,7]]}}}],["tini",{"_index":422,"t":{"23":{"position":[[1026,4]]}}}],["token",{"_index":594,"t":{"23":{"position":[[7378,6],[7394,5],[7484,6],[7546,5],[7583,5],[7602,6]]},"95":{"position":[[1750,6]]},"97":{"position":[[376,6]]}}}],["tokenom",{"_index":739,"t":{"39":{"position":[[125,10]]}}}],["tool",{"_index":641,"t":{"30":{"position":[[195,5]]},"34":{"position":[[383,7]]},"57":{"position":[[81,7]]}}}],["top",{"_index":589,"t":{"23":{"position":[[7215,3],[7334,3]]},"30":{"position":[[243,3]]},"69":{"position":[[1310,3],[1321,3]]}}}],["tradit",{"_index":67,"t":{"4":{"position":[[66,11]]}}}],["traffic",{"_index":937,"t":{"69":{"position":[[1285,7]]}}}],["transfer",{"_index":988,"t":{"77":{"position":[[494,11]]}}}],["transmiss",{"_index":978,"t":{"75":{"position":[[584,12]]}}}],["treat",{"_index":1074,"t":{"95":{"position":[[1611,7]]}}}],["tree",{"_index":889,"t":{"63":{"position":[[275,4]]}}}],["trend",{"_index":935,"t":{"69":{"position":[[1179,6]]}}}],["tri",{"_index":668,"t":{"34":{"position":[[133,3]]},"37":{"position":[[870,3]]}}}],["trial",{"_index":1156,"t":{"111":{"position":[[620,5]]}}}],["tribun",{"_index":1178,"t":{"111":{"position":[[1627,8]]}}}],["truli",{"_index":362,"t":{"19":{"position":[[1052,5]]}}}],["trust",{"_index":830,"t":{"51":{"position":[[223,7]]}}}],["trustless",{"_index":308,"t":{"17":{"position":[[201,9]]}}}],["tune",{"_index":590,"t":{"23":{"position":[[7243,5],[7835,6],[7957,6]]}}}],["tweak",{"_index":721,"t":{"37":{"position":[[969,8]]}}}],["two",{"_index":214,"t":{"9":{"position":[[177,3]]},"34":{"position":[[114,3]]},"37":{"position":[[65,3]]}}}],["type",{"_index":78,"t":{"4":{"position":[[215,5]]},"6":{"position":[[35,6],[145,4]]},"23":{"position":[[4502,5],[4565,5],[4929,5],[6610,4],[7050,5]]},"37":{"position":[[185,5]]}}}],["unabl",{"_index":1163,"t":{"111":{"position":[[1016,6]]}}}],["unalt",{"_index":536,"t":{"23":{"position":[[4699,10]]}}}],["uncertainti",{"_index":1088,"t":{"97":{"position":[[524,12],[1051,11]]}}}],["under",{"_index":280,"t":{"15":{"position":[[246,5]]},"69":{"position":[[220,5]]},"83":{"position":[[138,5]]},"99":{"position":[[48,5]]},"103":{"position":[[34,5]]},"113":{"position":[[951,5]]}}}],["undergo",{"_index":522,"t":{"23":{"position":[[4406,10]]}}}],["understand",{"_index":1197,"t":{"113":{"position":[[139,15]]}}}],["undu",{"_index":1098,"t":{"97":{"position":[[1101,5]]}}}],["unenforc",{"_index":1204,"t":{"113":{"position":[[548,14]]}}}],["union",{"_index":970,"t":{"75":{"position":[[170,5],[635,5]]}}}],["unlawfulli",{"_index":999,"t":{"77":{"position":[[1029,11]]}}}],["unless",{"_index":959,"t":{"71":{"position":[[715,6]]}}}],["unlik",{"_index":397,"t":{"23":{"position":[[336,6],[7033,6]]},"75":{"position":[[90,8]]}}}],["unreli",{"_index":571,"t":{"23":{"position":[[6295,10]]}}}],["unstopp",{"_index":363,"t":{"19":{"position":[[1058,11]]}}}],["unsuit",{"_index":360,"t":{"19":{"position":[[1009,10]]}}}],["until",{"_index":481,"t":{"23":{"position":[[2471,5]]}}}],["up",{"_index":292,"t":{"15":{"position":[[449,2]]},"23":{"position":[[7115,2]]},"25":{"position":[[75,2]]},"37":{"position":[[848,2]]},"53":{"position":[[311,2]]}}}],["upcom",{"_index":525,"t":{"23":{"position":[[4449,8]]}}}],["updat",{"_index":592,"t":{"23":{"position":[[7258,7]]},"25":{"position":[[461,7]]},"27":{"position":[[205,7]]},"34":{"position":[[11,7]]},"37":{"position":[[320,7],[424,6],[536,7],[587,8]]},"47":{"position":[[406,7]]},"49":{"position":[[495,7]]},"65":{"position":[[18,8]]},"77":{"position":[[326,6]]},"91":{"position":[[18,8]]},"97":{"position":[[1212,6]]}}}],["upload",{"_index":166,"t":{"6":{"position":[[1078,7]]}}}],["upon",{"_index":361,"t":{"19":{"position":[[1032,4],[1144,4]]},"81":{"position":[[197,4]]},"95":{"position":[[1308,4]]},"107":{"position":[[229,4]]}}}],["us",{"_index":401,"t":{"23":{"position":[[485,3],[1246,4],[1419,4],[1882,5],[2727,3],[3203,5],[3635,3],[4101,4],[5888,3],[5973,3],[7735,3],[7848,3]]},"25":{"position":[[198,4],[259,5],[417,4]]},"37":{"position":[[191,5]]},"47":{"position":[[514,5]]},"49":{"position":[[69,4]]},"63":{"position":[[342,3]]},"69":{"position":[[529,3],[577,3],[609,3],[952,3]]},"71":{"position":[[145,3],[465,5]]},"75":{"position":[[389,3]]},"91":{"position":[[67,3],[90,5],[160,3],[302,3],[328,3],[356,3],[448,4],[501,4],[529,3]]},"93":{"position":[[43,4]]},"95":{"position":[[58,3],[498,3],[855,3]]},"97":{"position":[[369,3]]},"99":{"position":[[254,4]]},"101":{"position":[[144,3],[409,6],[514,3]]},"103":{"position":[[317,4],[371,3]]},"105":{"position":[[162,3],[280,4]]},"107":{"position":[[59,3],[195,3]]},"109":{"position":[[41,3]]},"111":{"position":[[176,4],[230,3],[713,3]]},"113":{"position":[[23,3],[340,3],[482,4],[525,3],[619,4],[741,4],[876,4]]}}}],["usag",{"_index":89,"t":{"4":{"position":[[378,6]]},"19":{"position":[[1326,6]]}}}],["user",{"_index":139,"t":{"6":{"position":[[476,5],[1073,4]]},"13":{"position":[[288,5]]},"19":{"position":[[176,4]]},"23":{"position":[[1466,6]]},"59":{"position":[[117,5],[186,4]]},"65":{"position":[[85,5]]},"69":{"position":[[83,5]]},"71":{"position":[[639,5]]},"99":{"position":[[153,5]]}}}],["user’",{"_index":774,"t":{"45":{"position":[[196,6]]}}}],["util",{"_index":593,"t":{"23":{"position":[[7306,7],[7594,7]]},"95":{"position":[[441,8]]}}}],["utilis",{"_index":91,"t":{"4":{"position":[[429,7]]}}}],["utils/json",{"_index":711,"t":{"37":{"position":[[714,10]]}}}],["v1",{"_index":226,"t":{"9":{"position":[[429,2]]}}}],["v1.0",{"_index":244,"t":{"11":{"position":[[280,4]]}}}],["v2",{"_index":703,"t":{"37":{"position":[[379,2]]}}}],["v4",{"_index":664,"t":{"34":{"position":[[80,2],[452,2]]}}}],["valid",{"_index":186,"t":{"6":{"position":[[1585,5]]},"23":{"position":[[5644,11],[5751,9],[5770,9],[5849,10]]},"51":{"position":[[484,11]]},"77":{"position":[[752,8]]}}}],["vari",{"_index":126,"t":{"6":{"position":[[150,5]]},"97":{"position":[[771,4]]}}}],["varieti",{"_index":964,"t":{"73":{"position":[[81,7]]}}}],["variou",{"_index":451,"t":{"23":{"position":[[1704,7],[4177,7],[4557,7]]},"25":{"position":[[47,7]]},"27":{"position":[[160,7],[216,7]]},"61":{"position":[[107,7]]}}}],["vast",{"_index":538,"t":{"23":{"position":[[4825,4]]}}}],["veri",{"_index":421,"t":{"23":{"position":[[1021,4]]}}}],["verifi",{"_index":168,"t":{"6":{"position":[[1121,6]]},"23":{"position":[[3885,6]]},"37":{"position":[[237,8],[272,8]]},"39":{"position":[[296,8]]}}}],["version",{"_index":219,"t":{"9":{"position":[[267,8]]},"25":{"position":[[222,7],[400,7]]},"34":{"position":[[469,8]]},"49":{"position":[[22,7]]}}}],["via",{"_index":655,"t":{"32":{"position":[[41,4]]},"45":{"position":[[564,3]]},"85":{"position":[[137,3]]},"111":{"position":[[1566,3]]}}}],["victim",{"_index":345,"t":{"19":{"position":[[568,6]]}}}],["video",{"_index":952,"t":{"71":{"position":[[410,6],[532,7],[880,6]]},"111":{"position":[[1570,5]]}}}],["view",{"_index":795,"t":{"47":{"position":[[258,6]]}}}],["violat",{"_index":1051,"t":{"95":{"position":[[325,9]]},"105":{"position":[[244,9]]}}}],["virtual/onlin",{"_index":1177,"t":{"111":{"position":[[1587,14]]}}}],["visit",{"_index":902,"t":{"65":{"position":[[185,8]]}}}],["visitor",{"_index":934,"t":{"69":{"position":[[1127,7],[1244,9]]}}}],["vital",{"_index":400,"t":{"23":{"position":[[475,5]]}}}],["wait",{"_index":480,"t":{"23":{"position":[[2465,5]]},"37":{"position":[[801,4]]}}}],["waiv",{"_index":1151,"t":{"111":{"position":[[453,6],[588,5],[2192,5]]},"113":{"position":[[778,6]]}}}],["waku",{"_index":311,"t":{"17":{"position":[[265,5]]},"34":{"position":[[395,4]]}}}],["want",{"_index":103,"t":{"4":{"position":[[649,4]]}}}],["wari",{"_index":596,"t":{"23":{"position":[[7431,4]]}}}],["warn",{"_index":279,"t":{"15":{"position":[[221,8]]}}}],["warrant",{"_index":1052,"t":{"95":{"position":[[356,7]]}}}],["warranti",{"_index":1043,"t":{"95":{"position":[[128,10],[205,10],[1343,8]]},"113":{"position":[[187,11]]}}}],["way",{"_index":445,"t":{"23":{"position":[[1589,3],[4257,3]]},"37":{"position":[[898,3]]},"69":{"position":[[684,3]]},"103":{"position":[[275,3]]}}}],["web3",{"_index":12,"t":{"2":{"position":[[127,4]]},"21":{"position":[[89,4]]},"23":{"position":[[4661,4]]},"87":{"position":[[187,5]]}}}],["websit",{"_index":900,"t":{"65":{"position":[[137,7],[145,12],[198,8]]},"69":{"position":[[96,8],[540,8],[588,7],[857,8],[1236,7]]},"71":{"position":[[130,7],[392,7]]},"73":{"position":[[117,7]]},"79":{"position":[[8,8],[58,9],[241,9]]},"81":{"position":[[106,7],[221,8]]},"91":{"position":[[50,7],[71,9],[172,8],[238,8],[285,7],[339,7],[367,7],[431,7],[484,7],[537,8]]},"93":{"position":[[26,7]]},"95":{"position":[[4,7],[66,7],[509,8],[538,7],[575,8],[740,7],[866,7],[1031,7],[1644,7]]},"97":{"position":[[4,7],[475,7],[1149,7],[1187,8],[1223,7]]},"99":{"position":[[4,7],[381,8]]},"101":{"position":[[18,7],[62,8],[169,9],[207,9],[298,8],[364,8],[473,8],[554,8],[584,8],[624,8],[645,8],[748,9]]},"103":{"position":[[300,7],[326,8],[354,8],[382,8]]},"105":{"position":[[173,8],[201,8],[263,7]]},"107":{"position":[[42,7],[132,7],[178,7],[253,8]]},"109":{"position":[[24,7]]},"111":{"position":[[159,7],[185,8],[213,8],[241,8]]},"113":{"position":[[6,7],[87,7],[242,8],[323,7],[465,7],[508,7],[602,7],[724,7],[859,7]]}}}],["week",{"_index":611,"t":{"25":{"position":[[179,5]]}}}],["welcom",{"_index":285,"t":{"15":{"position":[[300,7]]},"87":{"position":[[482,8]]}}}],["well",{"_index":1180,"t":{"111":{"position":[[1691,4]]}}}],["what’",{"_index":1095,"t":{"97":{"position":[[781,6]]}}}],["whenev",{"_index":920,"t":{"67":{"position":[[329,8]]},"93":{"position":[[270,8]]}}}],["wherev",{"_index":982,"t":{"77":{"position":[[98,8]]}}}],["whether",{"_index":287,"t":{"15":{"position":[[332,7]]},"95":{"position":[[1366,7],[1397,7]]},"109":{"position":[[82,7]]}}}],["whitepap",{"_index":201,"t":{"6":{"position":[[1934,10]]}}}],["wide",{"_index":76,"t":{"4":{"position":[[180,4]]}}}],["widespread",{"_index":60,"t":{"2":{"position":[[773,10]]}}}],["will",{"_index":543,"t":{"23":{"position":[[5240,7]]}}}],["wip",{"_index":151,"t":{"6":{"position":[[711,3]]},"37":{"position":[[1086,3]]},"51":{"position":[[604,5],[745,5]]},"61":{"position":[[39,5]]}}}],["wire",{"_index":772,"t":{"45":{"position":[[125,6]]}}}],["withdraw",{"_index":990,"t":{"77":{"position":[[550,8]]}}}],["withdrawn",{"_index":993,"t":{"77":{"position":[[807,9]]}}}],["within",{"_index":197,"t":{"6":{"position":[[1851,6]]},"111":{"position":[[1055,6],[2078,6]]}}}],["without",{"_index":359,"t":{"19":{"position":[[928,7]]},"23":{"position":[[4846,7]]},"81":{"position":[[73,7]]},"95":{"position":[[182,7]]},"97":{"position":[[1384,7]]},"105":{"position":[[220,7]]},"107":{"position":[[79,7]]},"109":{"position":[[115,7]]}}}],["word",{"_index":276,"t":{"15":{"position":[[121,6]]}}}],["work",{"_index":233,"t":{"11":{"position":[[31,7]]},"23":{"position":[[3295,5]]},"25":{"position":[[515,5]]},"30":{"position":[[80,7]]},"34":{"position":[[225,4]]},"37":{"position":[[579,4],[653,4]]},"45":{"position":[[485,4]]},"47":{"position":[[363,7],[481,7],[544,4]]},"49":{"position":[[178,4]]},"51":{"position":[[372,7]]},"57":{"position":[[334,7]]},"61":{"position":[[0,7]]},"87":{"position":[[210,7],[555,4]]}}}],["worker",{"_index":643,"t":{"30":{"position":[[218,6]]}}}],["workload",{"_index":856,"t":{"55":{"position":[[114,8]]}}}],["worldwid",{"_index":1030,"t":{"89":{"position":[[46,11]]}}}],["worthwhil",{"_index":483,"t":{"23":{"position":[[2514,11]]}}}],["wrap",{"_index":607,"t":{"25":{"position":[[70,4]]},"32":{"position":[[11,7]]}}}],["write",{"_index":247,"t":{"11":{"position":[[419,5]]},"34":{"position":[[281,5]]}}}],["written",{"_index":785,"t":{"45":{"position":[[587,7]]},"111":{"position":[[862,7]]},"113":{"position":[[204,7]]}}}],["wrote",{"_index":665,"t":{"34":{"position":[[83,5]]}}}],["x",{"_index":297,"t":{"15":{"position":[[524,1]]}}}],["ye",{"_index":491,"t":{"23":{"position":[[2793,4],[4147,4],[7787,4]]}}}],["year",{"_index":157,"t":{"6":{"position":[[771,5]]},"23":{"position":[[1150,6]]},"41":{"position":[[146,5]]},"111":{"position":[[2089,4]]}}}],["youtub",{"_index":950,"t":{"71":{"position":[[379,8],[422,8],[540,7],[649,7],[814,7]]}}}],["youtube’",{"_index":954,"t":{"71":{"position":[[471,9],[860,9]]}}}],["zero",{"_index":808,"t":{"49":{"position":[[77,4]]}}}],["zk",{"_index":44,"t":{"2":{"position":[[567,2]]},"11":{"position":[[231,2],[437,2]]},"49":{"position":[[100,5]]},"87":{"position":[[108,2]]}}}],["zug",{"_index":909,"t":{"67":{"position":[[200,3],[313,3]]},"93":{"position":[[140,3],[254,3]]},"111":{"position":[[1527,4]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file +[{"documents":[{"i":1,"t":"Description and architecture","u":"/about/architect","b":["About Codex"]},{"i":7,"t":"About Codex","u":"/about/","b":["About Codex"]},{"i":13,"t":"Current job openings","u":"/join-us","b":[]},{"i":15,"t":"Core contributors","u":"/about/team","b":["About Codex"]},{"i":17,"t":"Codex R&D Update for Week of Jan 12, 2024","u":"/news","b":[]},{"i":57,"t":"Development roadmap","u":"/about/roadmap","b":["About Codex"]},{"i":64,"t":"Join the community","u":"/community","b":["Community"]},{"i":66,"t":"Security","u":"/security","b":[]},{"i":68,"t":"Frequently asked questions","u":"/about/faq","b":["About Codex"]},{"i":70,"t":"Privacy Policy","u":"/privacy-policy","b":[]},{"i":90,"t":"Terms of Use","u":"/terms","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,2.25,1,2.25]],["t/7",[2,2.071]],["t/13",[3,1.906,4,1.906,5,1.906]],["t/15",[6,2.25,7,2.25]],["t/17",[2,0.892,8,1.183,9,1.183,10,1.183,11,1.183,12,1.183,13,1.183]],["t/57",[14,2.25,15,2.25]],["t/64",[16,2.25,17,2.25]],["t/66",[18,2.745]],["t/68",[19,1.906,20,1.906,21,1.906]],["t/70",[22,2.25,23,2.25]],["t/90",[24,2.25,25,2.25]]],"invertedIndex":[["12",{"_index":12,"t":{"17":{"position":[[33,3]]}}}],["2024",{"_index":13,"t":{"17":{"position":[[37,4]]}}}],["architectur",{"_index":1,"t":{"1":{"position":[[16,12]]}}}],["ask",{"_index":20,"t":{"68":{"position":[[11,5]]}}}],["codex",{"_index":2,"t":{"7":{"position":[[6,5]]},"17":{"position":[[0,5]]}}}],["commun",{"_index":17,"t":{"64":{"position":[[9,9]]}}}],["contributor",{"_index":7,"t":{"15":{"position":[[5,12]]}}}],["core",{"_index":6,"t":{"15":{"position":[[0,4]]}}}],["current",{"_index":3,"t":{"13":{"position":[[0,7]]}}}],["descript",{"_index":0,"t":{"1":{"position":[[0,11]]}}}],["develop",{"_index":14,"t":{"57":{"position":[[0,11]]}}}],["frequent",{"_index":19,"t":{"68":{"position":[[0,10]]}}}],["jan",{"_index":11,"t":{"17":{"position":[[29,3]]}}}],["job",{"_index":4,"t":{"13":{"position":[[8,3]]}}}],["join",{"_index":16,"t":{"64":{"position":[[0,4]]}}}],["open",{"_index":5,"t":{"13":{"position":[[12,8]]}}}],["polici",{"_index":23,"t":{"70":{"position":[[8,6]]}}}],["privaci",{"_index":22,"t":{"70":{"position":[[0,7]]}}}],["question",{"_index":21,"t":{"68":{"position":[[17,9]]}}}],["r&d",{"_index":8,"t":{"17":{"position":[[6,3]]}}}],["roadmap",{"_index":15,"t":{"57":{"position":[[12,7]]}}}],["secur",{"_index":18,"t":{"66":{"position":[[0,8]]}}}],["term",{"_index":24,"t":{"90":{"position":[[0,5]]}}}],["updat",{"_index":9,"t":{"17":{"position":[[10,6]]}}}],["us",{"_index":25,"t":{"90":{"position":[[9,3]]}}}],["week",{"_index":10,"t":{"17":{"position":[[21,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Incentivized decentralisation","u":"/about/architect","h":"#incentivized-decentralisation","p":1},{"i":5,"t":"Network architecture","u":"/about/architect","h":"#network-architecture","p":1},{"i":9,"t":"Motive","u":"/about/","h":"#motive","p":7},{"i":11,"t":"Decentralising data storage","u":"/about/","h":"#decentralising-data-storage","p":7},{"i":19,"t":"Development","u":"/news","h":"","p":17},{"i":21,"t":"Client","u":"/news","h":"","p":17},{"i":22,"t":"Epic: Nim Improvements","u":"/news","h":"#epic-nim-improvements","p":17},{"i":24,"t":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system","p":17},{"i":26,"t":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability","p":17},{"i":28,"t":"Marketplace","u":"/news","h":"","p":17},{"i":29,"t":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing","p":17},{"i":31,"t":"Research","u":"/news","h":"","p":17},{"i":33,"t":"Codex R&D Update for Week of December 11, 2023","u":"/news","h":"","p":17},{"i":35,"t":"Development","u":"/news","h":"","p":17},{"i":37,"t":"Client","u":"/news","h":"","p":17},{"i":39,"t":"Epic: Block Merkelization","u":"/news","h":"#epic-block-merkelization","p":17},{"i":41,"t":"Epic: nim-poseidon2","u":"/news","h":"#epic-nim-poseidon2","p":17},{"i":43,"t":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system-1","p":17},{"i":45,"t":"Testing and Infrastructure","u":"/news","h":"","p":17},{"i":47,"t":"Epic: 2023 Testnet setup","u":"/news","h":"#epic-2023-testnet-setup","p":17},{"i":49,"t":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability-1","p":17},{"i":51,"t":"Marketplace","u":"/news","h":"","p":17},{"i":53,"t":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing-1","p":17},{"i":55,"t":"Research","u":"/news","h":"","p":17},{"i":58,"t":"Releases","u":"/about/roadmap","h":"#releases","p":57},{"i":60,"t":"Milestones","u":"/about/roadmap","h":"#milestones","p":57},{"i":62,"t":"Roadmap rationale","u":"/about/roadmap","h":"#roadmap-rationale","p":57},{"i":72,"t":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":70},{"i":74,"t":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":70},{"i":76,"t":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":70},{"i":78,"t":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":70},{"i":80,"t":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":70},{"i":82,"t":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":70},{"i":84,"t":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":70},{"i":86,"t":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":70},{"i":88,"t":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":70},{"i":92,"t":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":90},{"i":94,"t":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":90},{"i":96,"t":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":90},{"i":98,"t":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":90},{"i":100,"t":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":90},{"i":102,"t":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":90},{"i":104,"t":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":90},{"i":106,"t":"8) Modifications","u":"/terms","h":"#8-modifications","p":90},{"i":108,"t":"9) Governing law","u":"/terms","h":"#9-governing-law","p":90},{"i":110,"t":"10) Disputes","u":"/terms","h":"#10-disputes","p":90},{"i":112,"t":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":90}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,4.004,1,3.414]],["t/5",[2,4.004,3,4.004]],["t/9",[4,4.759]],["t/11",[1,2.946,5,2.36,6,3.456]],["t/19",[7,4.058]],["t/21",[8,3.25]],["t/22",[9,1.515,10,2.946,11,2.611]],["t/24",[9,1.333,12,2.591,13,2.591,14,2.591]],["t/26",[8,2.076,9,1.333,11,2.296,15,2.591]],["t/28",[16,4.058]],["t/29",[9,1.333,17,3.706,18,2.296]],["t/31",[19,4.058]],["t/33",[20,2.233,21,2.233,22,2.233,23,2.233,24,2.233,25,1.904,26,1.904]],["t/35",[7,4.058]],["t/37",[8,3.25]],["t/39",[9,1.515,27,3.456,28,3.456]],["t/41",[9,1.515,10,2.946,29,3.456]],["t/43",[9,1.333,12,2.591,13,2.591,14,2.591]],["t/45",[18,3.025,30,4.004]],["t/47",[9,1.333,26,2.591,31,3.039,32,3.039]],["t/49",[8,2.076,9,1.333,11,2.296,15,2.591]],["t/51",[16,4.058]],["t/53",[9,1.333,17,3.706,18,2.296]],["t/55",[19,4.058]],["t/58",[33,4.759]],["t/60",[34,4.759]],["t/62",[35,4.004,36,4.004]],["t/72",[37,4.058]],["t/74",[5,1.401,38,1.749,39,1.749,40,2.051,41,1.749,42,1.749,43,1.749,44,1.401]],["t/76",[5,1.673,41,2.088,42,2.088,45,2.088,46,1.851,47,1.851]],["t/78",[44,1.673,48,2.088,49,2.449,50,2.449,51,2.449,52,2.449]],["t/80",[5,1.525,53,1.904,54,2.233,55,2.233,56,2.233,57,2.233,58,2.233]],["t/82",[59,2.946,60,3.456,61,2.946]],["t/84",[46,2.296,47,2.296,62,2.591,63,2.591]],["t/86",[64,2.591,65,3.039,66,3.039,67,3.039]],["t/88",[68,2.946,69,3.456,70,3.456]],["t/92",[37,4.058]],["t/94",[38,3.414,71,4.004]],["t/96",[45,2.591,72,3.039,73,3.039,74,3.039]],["t/98",[48,2.591,61,2.591,75,3.039,76,3.039]],["t/100",[44,1.853,46,2.05,47,2.05,53,2.313,63,2.313]],["t/102",[39,2.946,59,2.946,77,3.456]],["t/104",[62,3.414,78,4.004]],["t/106",[64,3.414,79,4.004]],["t/108",[68,2.946,80,3.456,81,3.456]],["t/110",[82,4.004,83,4.004]],["t/112",[25,2.591,43,2.591,44,2.076,84,3.039]]],"invertedIndex":[["1",{"_index":37,"t":{"72":{"position":[[0,2]]},"92":{"position":[[0,2]]}}}],["10",{"_index":82,"t":{"110":{"position":[[0,3]]}}}],["11",{"_index":25,"t":{"33":{"position":[[38,3]]},"112":{"position":[[0,3]]}}}],["2",{"_index":38,"t":{"74":{"position":[[0,2]]},"94":{"position":[[0,2]]}}}],["2023",{"_index":26,"t":{"33":{"position":[[42,4]]},"47":{"position":[[6,4]]}}}],["3",{"_index":45,"t":{"76":{"position":[[0,2]]},"96":{"position":[[0,2]]}}}],["4",{"_index":48,"t":{"78":{"position":[[0,2]]},"98":{"position":[[0,2]]}}}],["5",{"_index":53,"t":{"80":{"position":[[0,2]]},"100":{"position":[[0,2]]}}}],["6",{"_index":59,"t":{"82":{"position":[[0,2]]},"102":{"position":[[0,2]]}}}],["7",{"_index":62,"t":{"84":{"position":[[0,2]]},"104":{"position":[[0,2]]}}}],["8",{"_index":64,"t":{"86":{"position":[[0,2]]},"106":{"position":[[0,2]]}}}],["9",{"_index":68,"t":{"88":{"position":[[0,2]]},"108":{"position":[[0,2]]}}}],["architectur",{"_index":3,"t":{"5":{"position":[[8,12]]}}}],["block",{"_index":27,"t":{"39":{"position":[[6,5]]}}}],["chang",{"_index":67,"t":{"86":{"position":[[29,6]]}}}],["choic",{"_index":60,"t":{"82":{"position":[[8,7]]}}}],["client",{"_index":8,"t":{"21":{"position":[[0,6]]},"26":{"position":[[14,6]]},"37":{"position":[[0,6]]},"49":{"position":[[14,6]]}}}],["codex",{"_index":20,"t":{"33":{"position":[[0,5]]}}}],["collect",{"_index":40,"t":{"74":{"position":[[16,10]]}}}],["contact",{"_index":69,"t":{"88":{"position":[[3,7]]}}}],["data",{"_index":5,"t":{"11":{"position":[[15,4]]},"74":{"position":[[54,4]]},"76":{"position":[[38,4]]},"80":{"position":[[13,4]]}}}],["decemb",{"_index":24,"t":{"33":{"position":[[29,8]]}}}],["decentralis",{"_index":1,"t":{"3":{"position":[[13,16]]},"11":{"position":[[0,14]]}}}],["develop",{"_index":7,"t":{"19":{"position":[[0,11]]},"35":{"position":[[0,11]]}}}],["disclaim",{"_index":71,"t":{"94":{"position":[[3,11]]}}}],["disput",{"_index":83,"t":{"110":{"position":[[4,8]]}}}],["end",{"_index":17,"t":{"29":{"position":[[6,3],[13,3]]},"53":{"position":[[6,3],[13,3]]}}}],["epic",{"_index":9,"t":{"22":{"position":[[0,5]]},"24":{"position":[[0,5]]},"26":{"position":[[0,5]]},"29":{"position":[[0,5]]},"39":{"position":[[0,5]]},"41":{"position":[[0,5]]},"43":{"position":[[0,5]]},"47":{"position":[[0,5]]},"49":{"position":[[0,5]]},"53":{"position":[[0,5]]}}}],["european",{"_index":56,"t":{"80":{"position":[[30,8]]}}}],["export",{"_index":54,"t":{"80":{"position":[[3,9]]}}}],["forward",{"_index":72,"t":{"96":{"position":[[3,7]]}}}],["govern",{"_index":80,"t":{"108":{"position":[[3,9]]}}}],["improv",{"_index":11,"t":{"22":{"position":[[10,12]]},"26":{"position":[[6,7]]},"49":{"position":[[6,7]]}}}],["incentiv",{"_index":0,"t":{"3":{"position":[[0,12]]}}}],["indemn",{"_index":78,"t":{"104":{"position":[[3,9]]}}}],["inform",{"_index":70,"t":{"88":{"position":[[11,11]]}}}],["infrastructur",{"_index":30,"t":{"45":{"position":[[12,14]]}}}],["intellectu",{"_index":75,"t":{"98":{"position":[[3,12]]}}}],["law",{"_index":81,"t":{"108":{"position":[[13,3]]}}}],["liabil",{"_index":77,"t":{"102":{"position":[[17,9]]}}}],["limit",{"_index":39,"t":{"74":{"position":[[6,5]]},"102":{"position":[[3,10]]}}}],["link",{"_index":63,"t":{"84":{"position":[[15,5]]},"100":{"position":[[23,5]]}}}],["look",{"_index":73,"t":{"96":{"position":[[11,7]]}}}],["marketplac",{"_index":16,"t":{"28":{"position":[[0,11]]},"51":{"position":[[0,11]]}}}],["measur",{"_index":50,"t":{"78":{"position":[[12,8]]}}}],["merkel",{"_index":28,"t":{"39":{"position":[[12,13]]}}}],["mileston",{"_index":34,"t":{"60":{"position":[[0,10]]}}}],["modif",{"_index":79,"t":{"106":{"position":[[3,13]]}}}],["motiv",{"_index":4,"t":{"9":{"position":[[0,6]]}}}],["network",{"_index":2,"t":{"5":{"position":[[0,7]]}}}],["nim",{"_index":10,"t":{"22":{"position":[[6,3]]},"41":{"position":[[6,3]]}}}],["outsid",{"_index":55,"t":{"80":{"position":[[18,7]]}}}],["parti",{"_index":47,"t":{"76":{"position":[[9,5]]},"84":{"position":[[9,5]]},"100":{"position":[[9,5]]}}}],["person",{"_index":42,"t":{"74":{"position":[[45,8]]},"76":{"position":[[29,8]]}}}],["polici",{"_index":66,"t":{"86":{"position":[[16,6]]}}}],["poseidon2",{"_index":29,"t":{"41":{"position":[[10,9]]}}}],["privaci",{"_index":65,"t":{"86":{"position":[[8,7]]}}}],["process",{"_index":41,"t":{"74":{"position":[[31,10]]},"76":{"position":[[15,10]]}}}],["properti",{"_index":76,"t":{"98":{"position":[[16,8]]}}}],["prove",{"_index":13,"t":{"24":{"position":[[17,7]]},"43":{"position":[[17,7]]}}}],["r&d",{"_index":21,"t":{"33":{"position":[[6,3]]}}}],["rational",{"_index":36,"t":{"62":{"position":[[8,9]]}}}],["releas",{"_index":33,"t":{"58":{"position":[[0,8]]}}}],["research",{"_index":19,"t":{"31":{"position":[[0,8]]},"55":{"position":[[0,8]]}}}],["respect",{"_index":52,"t":{"78":{"position":[[32,7]]}}}],["right",{"_index":61,"t":{"82":{"position":[[20,6]]},"98":{"position":[[25,6]]}}}],["roadmap",{"_index":35,"t":{"62":{"position":[[0,7]]}}}],["secur",{"_index":49,"t":{"78":{"position":[[3,8]]}}}],["setup",{"_index":32,"t":{"47":{"position":[[19,5]]}}}],["stabil",{"_index":15,"t":{"26":{"position":[[21,9]]},"49":{"position":[[21,9]]}}}],["statement",{"_index":74,"t":{"96":{"position":[[19,10]]}}}],["storag",{"_index":6,"t":{"11":{"position":[[20,7]]}}}],["switzerland",{"_index":58,"t":{"80":{"position":[[49,11]]}}}],["system",{"_index":14,"t":{"24":{"position":[[25,6]]},"43":{"position":[[25,6]]}}}],["take",{"_index":51,"t":{"78":{"position":[[24,4]]}}}],["term",{"_index":84,"t":{"112":{"position":[[24,5]]}}}],["test",{"_index":18,"t":{"29":{"position":[[17,7]]},"45":{"position":[[0,7]]},"53":{"position":[[17,7]]}}}],["testnet",{"_index":31,"t":{"47":{"position":[[11,7]]}}}],["third",{"_index":46,"t":{"76":{"position":[[3,5]]},"84":{"position":[[3,5]]},"100":{"position":[[3,5]]}}}],["union",{"_index":57,"t":{"80":{"position":[[39,5]]}}}],["updat",{"_index":22,"t":{"33":{"position":[[10,6]]}}}],["us",{"_index":43,"t":{"74":{"position":[[69,3]]},"112":{"position":[[33,3]]}}}],["websit",{"_index":44,"t":{"74":{"position":[[80,7]]},"78":{"position":[[47,7]]},"100":{"position":[[15,7]]},"112":{"position":[[16,7]]}}}],["week",{"_index":23,"t":{"33":{"position":[[21,4]]}}}],["wire",{"_index":12,"t":{"24":{"position":[[6,6]]},"43":{"position":[[6,6]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"Codex is building a durable data storage engine that is fully decentralised, providing corruption and censorship resistance to web3 applications. It innately protects network participants by giving hosts plausible deniability over the data they store, and clients provable durability guarantees—up to 99.99%—while remaining storage and bandwidth efficient. These four key features combine to differentiate Codex from existing projects in the decentralised storage niche: Erasure coding: Provides efficient data redundancy, which increases data durability guarantees. ZK-based proof-of-retrievability: For lightweight data durability assurances. Lazy repair mechanism: For efficient data reconstruction and loss prevention. Incentivization: To encourage rational behaviour, widespread network participation, and the efficient provision of finite network resources.","s":"Description and architecture","u":"/about/architect","h":"","p":1},{"i":4,"t":"Incentivization mechanisms are one of the key pieces missing from traditional file-sharing networks. Codex believes that a robust marketplace-based incentive structure will ensure wide participation across the node types detailed below. The development of an adequate incentive structure is driven by the following goals: Supply and demand to encourage optimum network resource usage. Increase participation by enabling nodes to utilise their competitive advantages to maximise profits. Prevent spam and discourage malicious participation. Although still to be finalised, the Codex incentive structure will involve a marketplace of participants who want to store data, and those provisioning storage posting collateral, with the latter bidding on open storage contracts. This structure aims to ensure that participants' incentives align, resulting in Codex functioning as intended.","s":"Incentivized decentralisation","u":"/about/architect","h":"#incentivized-decentralisation","p":1},{"i":6,"t":"Codex is composed of multiple node types, each taking a different role in the network's operation. Similarly, the hardware demands for each node type vary, enabling those operating resource-restricted devices to participate. Storage nodes As Codex's long-term reliable storage providers, storage nodes stake collateral based on the collateral posted on the request side of contracts, and the number of slots that a contract has. This is tied to the durability demanded by the user. Failure to provide periodic proof of data possession results in slashing penalties. Aggregator Node A method for off-loading erasure coding, proof generation and proof aggregation by a client node with low-resources, currently a WIP and will be part of subsequent Codex release Q2/Q4 next year. Client nodes Client nodes make requests for other nodes to store, find, and retrieve data. Most of the Codex network will be Client nodes, and these participants can double as caching nodes to offset the cost of the network resources they consume. When a node commits to a storage contract and a user uploads data, the network will proactively verify that the storage node is online and that the data is retrievable. Storage nodes are then randomly queried to broadcast proofs of data possession over an interval corresponding to the contract duration and 9's of retrievability guarantee the protocol provides. If the storage node sends invalid proofs or fails to provide them in time, the network evicts the storage node from the slot, and the slot will become available for the first node that generates a valid proof for that slot. When the contract is reposted, some of the faulty node's collateral pays for the new storage node's bandwidth fees. Erasure coding complements the repair scheme by allowing the reconstruction of the missing chunks from data in other slots within the same storage contract hosted by faultless storage nodes. Read the Codex whitepaper","s":"Network architecture","u":"/about/architect","h":"#network-architecture","p":1},{"i":8,"t":"Codex is a decentralised data storage platform that provides exceptionally strong censorship resistance and durability guarantees. It serves as the storage layer of the Logos tech stack. Alongside the trustless agreement layer, Nomos, and the communications layer, Waku, it is one of the Logos Collective's foundational projects.","s":"About Codex","u":"/about/","h":"","p":7},{"i":10,"t":"The remote storage landscape is dominated by an increasingly small number of internet powerhouses—Google, Microsoft, Amazon, etc. While these services score highly in terms of user experience and convenience, centralised cloud data storage suffers from the following drawbacks: Censorship Lack of data ownership Breaches and outages High cost Centralised cloud storage providers have an established history of censoring data and, as de facto owners of said data, have the power to do so according to their own standards. Furthermore, centralised platforms have fallen victim to major data breaches and service outages on numerous occasions. Such incidents have created a gap in the market for a decentralised, censorship-resistant alternative. Existing peer-to-peer storage and file-sharing networks address some of these issues—such as robustness in the face of network disruptions, and desirable resistance to censorship. Yet without adequate incentives and strong data durability guarantees, they make for unsuitable foundations upon which to build truly unstoppable applications. Existing decentralised storage solutions purport to improve upon early P2P file-sharing platforms like eDonkey and Gnutella. However, the market still lacks a decentralised storage solution that is efficient in terms of storage and bandwidth usage, while offering performance and durability guarantees comparable to incumbents.","s":"Motive","u":"/about/","h":"#motive","p":7},{"i":12,"t":"Codex began in 2021 to address a need for a durable, decentralised storage layer for the web3 tech stack. The name \"Codex\" refers to an ancient form of book—an allusion to the data storage engine's extremely robust—99.99%—durability guarantees. Codex was announced as a core Logos Collective protocol in June 2023.","s":"Decentralising data storage","u":"/about/","h":"#decentralising-data-storage","p":7},{"i":14,"t":"Codex Protocol Engineer (Codex Client) Remote (Worldwide)","s":"Current job openings","u":"/join-us","h":"","p":13},{"i":16,"t":"Codex is developed by highly experienced protocol and software developers, distributed systems experts, and ZK-cryptography researchers with backgrounds in academia, mainstream tech, and web3. The contributors working on Codex are split into the subgroups below: Codex general Codex marketplace Codex client Codex research Codex is looking for more contributors to help build the network. Check out the open positions linked below. As an open-source public goods project Codex also welcomes community contributions. Please check out our Github repo here. Work with us","s":"Core contributors","u":"/about/team","h":"","p":15},{"i":18,"t":"The Codex team continues to make progress with various initiatives to wrap up the demo for the Q1/Q2 public testnet release. An internal testnet has been running for the past few weeks and has been used to test the latest version of Codex and can be accessed using the Codex Testnet Starter documentation. Ongoing and new lines of research and development will soon begin in preparation for the next version of Codex used for the mainnet release.. Here are the updates from different team members and their ongoing work.","s":"Codex R&D Update for Week of Jan 12, 2024","u":"/news","h":"","p":17},{"i":20,"t":"Development is currently broken into three distinct teams: Client, Testing, and Infrastructure Marketplace Research The different teams have actively moving on various fronts. The following are their team updates to various ongoing Epics.","s":"Development","u":"/news","h":"","p":17},{"i":23,"t":"Completed: Filed issue for adding Atlas / non-Nimble support for packages Start working on Atlas command changes Ongoing: Create a repo as a place to start implementing some core async-threading tools for Chronos like worker pool & disk io on top of the ThreadSignalPtr primitive plans to support refc & orc","s":"Epic: Nim Improvements","u":"/news","h":"#epic-nim-improvements","p":17},{"i":25,"t":"Completed: Wrapped ark-circom in a C FFI via: nim-circom-compat and circom-compat-ffi Ongoing: Integration of codex-storage-proofs-circuits with a PR in nim-codex","s":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system","p":17},{"i":27,"t":"Completed: Updated profiler branch for debugging Ported the profiler to Chronos V4 Wrote separate test runner for two client test to try to figure out the origin of a file size bug which magically disappeared Ongoing: Finish work to take down draft flag from PR Expiry per dataset Write tests for PR Safe block deletion (with ref count) Look into the CI/docker packaging/local build tooling for Waku and Nimbus as part of build improvements PR Chronos V4 branch Pinned versions for Chronos and json-rpc","s":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability","p":17},{"i":30,"t":"Completed: Rebased multinode integration test refactor which had two failing tests due to the erasure coding changes Rebased Marketplace integration test suite Added support for Result types using formatIt for logging proxy Finished the verifier contract Deployed a dummy verifier on local networks for testing Finished updates to nim-ethers, all tests passing, including in Nim v2 Fixed an issue in the nim-ethers json-rpc update Derived Signers could not access the derived getAddress and sendTransaction when their async raises were updated with SignerError Ongoing: Continue work on updating nim-ethers to support json-rpc breaking changes Continue work on supporting json-rpc breaking changes and pulling out utils/json to its own lib Integrate contract changes into nim-codex Look into removing wait For in integration tests Review and clean up nim-ethers changes Try to figure out a cleaner way to handle exceptions instead of catching all CatchableErrors Start tweaking the nim-json api to normalize both serialize and deserialize pragmas, with modes: OptOut, OptIn, and Strict WIP on adding PATCH call for Availabilities","s":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing","p":17},{"i":32,"t":"2024 R&D Goals Proving system and aggregation improvements (folding or lookups) Aggregator/validator design DHT improvements Tokenomics and incentive design Bandwidth incentives Dynamic data (appendable data) Completed: Frobenius endomorphism & pairing implementation Review the Solidity Groth16 verifier Ongoing: DAS simulator improvements to cover more diffusion models Start DAS sample query mechanism design Proof recursion ideation","s":"Research","u":"/news","h":"","p":17},{"i":34,"t":"The Codex dev team is moving forward rapidly. The organisation’s development efforts mainly focus on launching the beta testnet by the end of the year. Following are some recent research and development highlights.","s":"Codex R&D Update for Week of December 11, 2023","u":"/news","h":"","p":17},{"i":36,"t":"Development is currently broken into three distinct sub-teams: Client, Testing, and Infrastructure Marketplace Research Below are summaries of each sub-team.","s":"Development","u":"/news","h":"","p":17},{"i":38,"t":"For the client, the team is focused on these primary tasks: block merkelization, Poseidon2 Nim-poseidon2 implementation, and wiring the proving system. The client is the software that runs on the user’s local machine. It has all the components to handle the endpoints integration, data, block management, erasure coding, and interactions with the marketplace. See currently exposed endpoints for the Codex client (conform to OpenAPI specification) at: https://api.codex.storage Active work is ongoing to integrate the above Codex client endpoints to be accessible via the Codex frontend written in React here: https://github.com/codex-storage/codex-frontend","s":"Client","u":"/news","h":"","p":17},{"i":40,"t":"For block merkelization, the team is focused on reducing metadata overhead. They are optimising the structure for handling and indexing block data. This effort requires changes in block Merkelization. These are the most recent efforts, which can be publicly viewed on GitHub: Merkelization concrete PR (merged) https://github.com/codex-storage/nim-codex/pull/566 Working on nim-datastore to support atomic updates (in review) https://github.com/codex-storage/nim-datastore/pull/58 Working on safe block deletion - using ref-counting Continuing work for #566 to integrate with Poseidon2 and the proving system","s":"Epic: Block Merkelization","u":"/news","h":"#epic-block-merkelization","p":17},{"i":42,"t":"Poseidon2 is a faster version of the original Poseidon hash function used in zero-knowledge systems (zk). Nim-Poseidon2 is the Nim implementation the Codex team is developing to work efficiently and effectively with the Codex client. Merged outstanding PRs https://github.com/codex-storage/nim-poseidon2/pull/7 https://github.com/codex-storage/nim-poseidon2/pull/8 https://github.com/codex-storage/nim-poseidon2/pull/9 Added keyed compress https://github.com/codex-storage/nim-poseidon2/pull/10 Updated Merkle root with extra bits to mitigate possible attacks https://github.com/codex-storage/nim-poseidon2/pull/11 Fixed compilation problem with Constantine and secp256k1 https://github.com/codex-storage/nim-codex/pull/625","s":"Epic: nim-poseidon2","u":"/news","h":"#epic-nim-poseidon2","p":17},{"i":44,"t":"The proving system comprises a SNARK circuit that generates the proof. A Storage Provider must also submit the marketplace contract to prove it faithfully stores the associated slot data. Additional components, such as the trusted setup ceremony, hash functions, and the multiple manifests generated for different purposes, are included in the proving system. The team is working on ensuring the proving system is built out and functions to successfully remote audit the slot data by validators. These stories represent the most recent efforts: Nim reference implementation of the proof input generation (WIP) https://github.com/codex-storage/codex-storage-proofs-circuits/tree/master/reference/nim/proof_input Ongoing implementation of Groth16 (WIP) https://github.com/codex-storage/nim-groth16","s":"Epic: Wiring the Proving System","u":"/news","h":"#epic-wiring-the-proving-system-1","p":17},{"i":46,"t":"The testing and infrastructure group is preparing to deploy tens or hundreds of nodes and efficiently monitor the activity. This is crucial for a successful launch of the testnet. The following are the epics and stories of development for this process. The main areas of concern are ensuring the testnet is set up and configured properly. It will also include ensuring the client maintains a suitable level of stability.","s":"Testing and Infrastructure","u":"/news","h":"","p":17},{"i":48,"t":"Configure TCP/UDP port forwarding for Testnet deployment Configure Pods placement for D/C-Tests runners and tests workload Check available options to build a service to get Codex Public IP for announcement Deploy Codex Bootstrap nodes for Testnet Deploy Geth Bootstrap nodes for Testnet","s":"Epic: 2023 Testnet setup","u":"/news","h":"#epic-2023-testnet-setup","p":17},{"i":50,"t":"Ongoing debugging of performance and stability issues in the testing environment Tooling developed Elastic search log retrieval https://github.com/codex-storage/logtools https://vimeo.com/884370956/e8a32a58c8?share=copy DHT fixes related to performance and stability Fix: queue messages when there is no encryption key Fix: arrive at working keys in case of simultaneous cross-connect Fix timeout and delete","s":"Epic: Improve Client Stability","u":"/news","h":"#epic-improve-client-stability-1","p":17},{"i":52,"t":"The marketplace is a smart contract deployed on a blockchain. This smart contract defines all the logic required for users to ask for storage, store collaterals, assign storage nodes to user datasets, settle payments, deal with storage failures, storage provider proof issuance, and all the contract interactions.","s":"Marketplace","u":"/news","h":"","p":17},{"i":54,"t":"Working on integration testing cleanup (WIP) https://github.com/codex-storage/nim-codex/pull/607 Debugging various issues for end-to-end testing","s":"Epic: End-to-end Testing","u":"/news","h":"#epic-end-to-end-testing-1","p":17},{"i":56,"t":"Current research is mostly halted due to focus on implementing past research for the imminent launch of the testnet. Ongoing efforts include: Near-term: Ongoing “Groth16 prover” research and analysis. Details for the functionality of the current proof system Hash and Merkle tree conventions to make them safe Continuing research for Codex’s use of erasure coding Long-term: Figuring out how to aggregate proofs (proof compression) for proving system Determining the correct proof system for Codex","s":"Research","u":"/news","h":"","p":17},{"i":59,"t":"Codex is currently in its first proof of concept iteration, codenamed Dagger. Before Katana (its forthcoming testnet release, expected before the end of 2023) we aim to deliver two additional PoC clients, Scimitar and Longsword. Dagger: Codex's first PoC and current version. Scimitar: The PoC-2 client will implement fast erasure coding, the marketplace, and partial durability guarantees—expected end of Q3 2023. Katana: Codex v1 will offer SNARK-based remote auditing","s":"Releases","u":"/about/roadmap","h":"#releases","p":57},{"i":61,"t":"The Codex team's subgroups are working on the major milestones detailed below to deliver Codex with the qualities described: Testing: Develop and maintain testnet and devnet Client: Release Scimitar Develop initial data repair and ZK proving scheme Release Longsword Deploy Codex v1.0 Marketplace: Develop the marketplace for integration in PoC-2. Develop the marketplace bandwidth incentivization structure. Research: Write the initial ZK proving scheme Conduct Data Availability Sampling research with the Ethereum Foundation","s":"Milestones","u":"/about/roadmap","h":"#milestones","p":57},{"i":63,"t":"We believe the above roadmap to be the most logical approach to building a data storage engine with stronger durability guarantees and resistance to censorship than currently offered by Codex's centralised or decentralised counterparts. First, we must establish a mechanism through which users can initiate a contract with a storage provider to host their data. Then, we can add erasure coding, required for efficient redundancy and auditing. Next, the system will need a mechanism to prove the hosts still have data available. Finally, repairs must be incentivized. Naturally, each layer of sophistication requires testing for economic and technical feasibility. Contribute to Codex","s":"Roadmap rationale","u":"/about/roadmap","h":"#roadmap-rationale","p":57},{"i":65,"t":"The Codex project aims to create a decentralised durability engine that allows persisting data in p2p networks. In other words, it allows storing files and data with predictable durability guarantees for later retrieval. WARNING: This project is under active development and is considered pre-alpha. Welcome to the Codex Community! Whether you are interested in building with Codex, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone. Follow us on X Join the community on Discord","s":"Join the community","u":"/community","h":"","p":64},{"i":67,"t":"We take security seriously at Codex and across the Institute of Free Technology and its affiliates. Please report any security incidents via security@free.technology.","s":"Security","u":"/security","h":"","p":66},{"i":69,"t":"What is Codex? Codex is a state-of-the-art, decentralized storage protocol that provides a solution for highly durable data storage with high decentralization, aiming to resist censorship and prevent single points of failure inherent in centralized systems. How is Codex different from centralized storage solutions (eg. Google Cloud)? Unlike centralized systems, Codex is designed to offer data durability, resiliency to cloud failures, and censorship resistance, making it vital for use cases like preserving factual history records. What kind of durability does Codex promise? While no system can promise absolute data loss protection, Codex's architecture, economic incentives, and encoding algorithms aim to provide high data durability with the novel implementation of techniques such as Erasure Coding and Lazy Repair. What is Data Durability? Data Durability means how likely it is that data will stay safe over time. For instance, a storage system with durability of eleven nines (99.999999999%) means there's a very tiny chance (0.0000000001%) of losing data. In simple terms, you might lose only one file out of a million over ten million years. Data Durability is crucial because losing even a little data can be a big problem. Codex uses techniques like erasure coding to keep data safe. This method splits data and stores it in different places. So, if a piece is lost or damaged, the other pieces can be used to recreate the original data. This keeps users' data secure and intact. What is Erasure Coding and how does it relate to data storage in Codex? Erasure Coding is a way to protect data by breaking it into parts, adding extra data for safety, and then spreading these parts across various locations or systems. On Codex, this involves splitting data into pieces, known as \"shards,\" along with extra \"parity shards\" for backup. These parity shards are created using mathematical formulas based on the original data, helping to rebuild the data if some shards go missing or get damaged. This method lets Codex offer consistent and reliable data storage, meaning that as long as a certain number of shards (N out of M) are safe, the entire original data can be perfectly restored, ensuring a high level of data safety. What is Lazy Repair in the context of Codex? Lazy Repair is a method in distributed storage systems for managing data issues. In Codex, if a piece of data (a shard) is lost or damaged, the system doesn't fix it right away. It waits until there's enough damage to make repair worthwhile. This is efficient because it saves resources by not addressing small problems that don't harm the overall data. The system only repairs when the number of good shards drops too low, balancing resource use with keeping data safe and available. Is Codex part of Logos? Yes, Codex is expected to serve as the storage pillar of Logos, the protocol protecting Logos organizational data, aligning with the broader Logos initiative. How does Codex compare to other decentralized storage solutions currently out on the market? Codex distinguishes itself from other storage solutions in the market through several key features: having an Advanced Marketplace and Data Distribution, and using SNARKS for Data Loss Detection. How do the Advanced Marketplace and Data Distribution work? Codex features an advanced marketplace that promotes high levels of decentralization and efficient data distribution. This structure prevents the concentration of data in a few large nodes, enhancing the efficiency of data repair and retrieval. In contrast, other protocols design their systems to create \"supernodes\". How does Codex use SNARKS for Data Loss Detection? Codex incorporates succinct non-interactive arguments of knowledge (SNARKS) for efficient and reliable data loss detection. Storage Providers (SPs) respond to challenges by sending proofs to Proof Aggregators, who verify and post these proofs to the blockchain. If an SP fails to prove possession of data or sends invalid proof, their collateral is slashed, providing an economic incentive to ensure data durability. Can Codex be used for cold storage by blockchain networks? Yes, Codex is discussing with various blockchain projects to preserve their full chain state and history in a way that resists censorship and does not require full history to be stored locally by every node. Is Codex currently operational? Codex is currently undergoing extensive internal testing. The upcoming public testnet is planned for Q1 2024. What types of data can be stored on Codex? Codex can handle various types of data but is particularly suited for mission-critical history and state information for Web3 applications that need to remain unaltered, and accessible. Will every node be required to store full data history in Codex? No, the design allows for storing vast amounts of data without requiring every node to store the full history. What are all the different types of nodes in Codex’s network? Codex consists of a p2p network of Storage Nodes, Aggregator Nodes, Caching Nodes, and Client Nodes. What is a Storage Node? Storage nodes provide long-term reliable storage. For a storage node to operate it needs to stake a collateral proportional to the amount of data it's willing to store. Once the collateral has been staked and the node begins to store data, it needs to periodically provide proof of data possession. If a node fails to provide proof in time, it is penalized with a portion of its stake; if the node fails to provide proof several times in a row, it loses the entirety of the stake. What is an Aggregator Node? Aggregator nodes are in charge of collecting, validating, and submitting proofs to an adjudicator contract which rewards and penalizes storage and other validator nodes. A validator node also needs to stake collateral to be able to participate in the validation process. Note that we don't use the term \"adjudicator contract\" in the literal sense of an Ethereum contract. We use it to indicate anything that executes on a consensus engine. What is a Caching Node? Bandwidth incentives allow anyone to operate as a caching node, profiting only from caching and serving popular content. We expect this to have the emergent property of an organic CDN, where nodes with spare bandwidth but limited or unreliable storage can collectively scale the network depending on current demands. Any node can become a caching node for any period, even ephemeral nodes. What is a Client Node? Client Nodes engage with other nodes to store, find, and retrieve data from the network. We expect regular nodes to be the most common type of node in the Codex Network. These will consume services offered by other nodes in exchange for payments. A regular node can also be a caching node by storing previously consumed data that other nodes can retrieve from it. This allows nodes to offset some of the cost of participating in the network and it's expected to allow the majority of nodes to participate on an almost free basis after an initial entree fee. Unlike the other types of nodes, we expect the regular nodes to have intermittent up-time as they are running on personal computers and mobile devices. Can I build my application on top of Codex? Not yet. Stay tuned for more updates from the Codex project for when you can utilize your application on top of the Codex network. Does Codex have a token? No Codex token has been issued yet. Please be wary of impersonators claiming the issuance of Codex tokens or any form of Codex airdrop. What role will the Codex token have in the network? The Codex token is a utility token, serving as collateral for Storage Providers and a means of compensation in the storage contracts. Can I or would I be able to use my storage to participate in the Codex network? Yes. The testnet phase is set for Q1 2024, stay tuned. Can I use Codex right now? Not yet. However, you will be able to participate in the testnet phase of Q1 2024. Stay tuned.","s":"Frequently asked questions","u":"/about/faq","h":"","p":68},{"i":71,"t":"On this page Last updated: 9 February 2024 This Privacy Policy is intended to inform users of our approach to privacy in respect of this website (\"Website\"). In this regard, if you are visiting our Website, this Privacy Policy applies to you.","s":"Privacy Policy","u":"/privacy-policy","h":"","p":70},{"i":73,"t":"For the purposes of this Privacy Policy and the collection and processing of personal data as a controller, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we” or other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/privacy-policy","h":"#1-who-we-are","p":70},{"i":75,"t":"We aim to limit the collection and collection and processing of personal data from users of the Website. We only collect and process certain personal data for specific purposes and where we have the legal basis to do so under applicable privacy legislation. We will not collect or process any personal data that we don’t need and where we do store any personal data, we will only store it for the least amount of time needed for the indicated purpose. In this regard, we collect and process the following personal data from your use of the Website: IP address: As part of such use of the Website and from our use of Fathom Analytics, we briefly process your IP address but we have no way of identifying you. We however have a legitimate interest in processing such IP addresses to ensure the technical functionality and enhance the security measures of the Website. This IP address is not stored by us over time. Fathom Analytics: We note that we make use of Fathom Analytics, which you can read more about here: https://usefathom.com/. In short, Fathom Analytics is an alternative to Google Analytics, that doesn’t compromise visitor privacy for data. Fathom Analytics collects trends and insights, not personal details about specific website visitors. Fathom Analytics offers simple traffic insights such as top pages, top referrers, bounce rate, and average time people spend on a site.","s":"2) We limit the collection and processing of personal data from your use of the Website","u":"/privacy-policy","h":"#2-we-limit-the-collection-and-processing-of-personal-data-from-your-use-of-the-website","p":70},{"i":77,"t":"In addition to our limited and collection of personal data, third parties may collect or process personal data as a result of the Website making use of certain features or to provide certain content. To the extent you interact with such third party content or features, their respective privacy policies will apply. We would however like to draw your attention to the following: Youtube: The Website may embed videos from Youtube, a service provided by Google LLC, using Youtube’s privacy-enhanced mode. When you interact with such videos, Youtube may place cookies on your personal device. The cookies do not directly identify individual users and YouTube will not store information to personalise your experience unless you are logged in to a Google account. We do not have any control over these cookies set by Youtube and it is recommended that you review YouTube’s embedding videos information page.","s":"3) Third party processing of personal data","u":"/privacy-policy","h":"#3-third-party-processing-of-personal-data","p":70},{"i":79,"t":"As a general approach, we take data security seriously and we have implemented a variety of security measures on the Website to maintain the safety of your personal data when you submit such information to us.","s":"4) Security measures we take in respect of the Website","u":"/privacy-policy","h":"#4-security-measures-we-take-in-respect-of-the-website","p":70},{"i":81,"t":"We are obliged to protect the privacy of personal data that you may have submitted in the unlikely event that we export your personal data to places outside the European Union or Switzerland. This means that personal data will only be processed in countries or by parties that provide an adequate level of protection as deemed by Switzerland or the European Commission. Otherwise, we will use other forms of protections, such as specific forms of contractual clauses to ensure such personal data is provided the same protection as required in Switzerland or Europe. In any event, the transmission of personal data outside the European Union and Switzerland will always occur in conformity with applicable privacy legislation.","s":"5) Exporting data outside the European Union and Switzerland","u":"/privacy-policy","h":"#5-exporting-data-outside-the-european-union-and-switzerland","p":70},{"i":83,"t":"As explained in this Privacy Policy, we limit our collection and processing of your personal data wherever possible. Nonetheless, you still have certain choices and rights in respect of the personal data which we do collect and process. As laid out in relevant privacy legislation, you have the right to: Ask us to correct or update your personal data (where reasonably possible); Ask us to remove your personal data from our systems; Ask us for a copy of your personal data, which may also be transferred to another data controller at your request; Withdraw your consent to process your personal data (only if consent was asked for a processing activity), which only affects processing activities that are based on your consent and doesn’t affect the validity of such processing activities before you have withdrawn your consent; Object to the processing of your personal data; and File a complaint with the Federal Data Protection and Information Commissioner (FDPIC), if you believe that your personal data has been processed unlawfully.","s":"6) Your choices and rights","u":"/privacy-policy","h":"#6-your-choices-and-rights","p":70},{"i":85,"t":"On this Website, you may come across links to third party websites. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these third party websites.","s":"7) Third party links","u":"/privacy-policy","h":"#7-third-party-links","p":70},{"i":87,"t":"We may modify or replace any part of this Privacy Policy at any time and without notice. Please check the Website periodically for any changes. The new Privacy Policy will be effective immediately upon its posting on our Website.","s":"8) This Privacy Policy might change","u":"/privacy-policy","h":"#8-this-privacy-policy-might-change","p":70},{"i":89,"t":"To the extent that you have any questions about the Privacy Policy, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"9) Contact information","u":"/privacy-policy","h":"#9-contact-information","p":70},{"i":91,"t":"On this page Last updated: 14 February 2024 These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website. It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use. If you do not agree with these Website Terms of Use, you must not access or use the Website.","s":"Terms of Use","u":"/terms","h":"","p":90},{"i":93,"t":"For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at: Logos Collective Association c/o PST Consulting GmbH Baarerstrasse 10 6300 Zug Switzerland Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.","s":"1) Who we are","u":"/terms","h":"#1-who-we-are","p":90},{"i":95,"t":"The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk. We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law. We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws. The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein. The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such. Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.","s":"2) Disclaimers","u":"/terms","h":"#2-disclaimers","p":90},{"i":97,"t":"The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general. The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website. While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.","s":"3) Forward looking statements","u":"/terms","h":"#3-forward-looking-statements","p":90},{"i":99,"t":"The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.","s":"4) Intellectual property rights","u":"/terms","h":"#4-intellectual-property-rights","p":90},{"i":101,"t":"To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.","s":"5) Third-party website links","u":"/terms","h":"#5-third-party-website-links","p":90},{"i":103,"t":"We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.","s":"6) Limitation of liability","u":"/terms","h":"#6-limitation-of-liability","p":90},{"i":105,"t":"You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.","s":"7) Indemnity","u":"/terms","h":"#7-indemnity","p":90},{"i":107,"t":"We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.","s":"8) Modifications","u":"/terms","h":"#8-modifications","p":90},{"i":109,"t":"Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.","s":"9) Governing law","u":"/terms","h":"#9-governing-law","p":90},{"i":111,"t":"In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website. We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions. If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking. If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration. Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.","s":"10) Disputes","u":"/terms","h":"#10-disputes","p":90},{"i":113,"t":"These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website. The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use. If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them. If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology. This document is licensed under CC-BY-SA.","s":"11) About these Website Terms of Use","u":"/terms","h":"#11-about-these-website-terms-of-use","p":90}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,1.25,1,1.751,2,2.908,3,1.8,4,2.391,5,2.155,6,3.362,7,2.813,8,1.958,9,3.362,10,2.155,11,2.155,12,2.341,13,1.751,14,3.362,15,2.341,16,2.848,17,3.031,18,3.362,19,2.575,20,3.362,21,3.362,22,1.867,23,1.647,24,1.321,25,3.362,26,3.362,27,3.362,28,2.575,29,2,30,3.53,31,3.362,32,2.155,33,2.341,34,3.362,35,3.362,36,2.887,37,1.867,38,3.362,39,1.751,40,1.751,41,2.887,42,2.887,43,1.751,44,2.341,45,1.867,46,1.647,47,2.155,48,3.362,49,3.362,50,2.887,51,2.155,52,2.341,53,2.887,54,2.887,55,2.575,56,2.341,57,2.887,58,3.362,59,3.362,60,3.362,61,2.341,62,3.362,63,2.341]],["t/4",[0,1.442,3,0.928,4,2.06,16,2.453,17,4,23,1.639,32,2.143,42,2.872,45,1.857,52,2.329,55,2.561,56,2.329,57,2.872,61,2.329,63,2.329,64,2.143,65,2.872,66,2.561,67,3.343,68,1.741,69,2.872,70,2.143,71,2.872,72,2.06,73,4.123,74,4.123,75,2.802,76,3.343,77,2.802,78,2.329,79,2.143,80,2.329,81,1.385,82,2.561,83,3.343,84,1.546,85,2.872,86,3.343,87,2.561,88,3.343,89,2.872,90,2.872,91,3.343,92,3.343,93,3.343,94,3.343,95,2.561,96,3.343,97,3.343,98,3.343,99,3.343,100,2.329,101,3.343,102,2.872,103,3.343,104,2.561,105,2.143,106,2.329,107,3.343,108,3.343,109,2.872,110,1.639,111,1.989,112,2.872,113,1.989,114,1.857,115,2.561]],["t/6",[0,1.239,2,1.027,3,1.508,4,2.776,8,1.941,16,2.44,17,2.128,19,1.606,22,1.164,23,1.027,24,1.841,29,1.247,39,1.729,40,1.729,43,1.092,45,1.164,46,2.661,47,2.641,51,1.344,53,1.801,63,2.87,66,1.606,77,4.1,78,2.312,87,2.542,90,1.801,104,1.606,105,1.344,106,2.87,110,2.661,113,1.247,116,2.096,117,1.801,118,2.312,119,1.46,120,1.344,121,1.801,122,2.096,123,2.851,124,2.096,125,2.096,126,1.801,127,2.096,128,1.606,129,1.46,130,1.606,131,0.783,132,1.46,133,1.801,134,2.851,135,2.096,136,1.606,137,4.385,138,2.096,139,1.627,140,1.606,141,1.46,142,2.851,143,1.801,144,2.096,145,2.128,146,1.606,147,2.096,148,2.128,149,1.801,150,1.027,151,1.46,152,1.164,153,2.096,154,1.46,155,2.096,156,1.606,157,1.46,158,1.027,159,1.801,160,2.096,161,1.801,162,1.801,163,1.344,164,1.801,165,1.801,166,2.096,167,2.096,168,1.46,169,2.096,170,2.096,171,1.801,172,2.096,173,2.096,174,2.096,175,2.096,176,2.096,177,1.344,178,1.606,179,1.606,180,1.46,181,1.164,182,2.096,183,1.801,184,1.092,185,1.46,186,1.46,187,2.096,188,2.096,189,3.319,190,2.096,191,1.46,192,1.46,193,2.096,194,1.801,195,1.46,196,2.096,197,1.801,198,1.801,199,2.096,200,1.606,201,2.096]],["t/8",[0,1.239,2,2.297,3,1.301,4,2.58,7,2.788,8,1.941,10,3.004,11,3.004,37,2.603,43,2.441,64,3.004,202,4.025,203,4.686,204,4.025,205,4.025,206,4.947,207,3.783,208,3.59,209,4.025,210,4.686,211,4.686,212,4.025,213,4.686,214,3.264,215,4.025,216,4.686,217,3.59]],["t/10",[1,1.382,2,1.951,3,1.658,4,2.709,7,2.843,8,1.1,10,3.063,11,2.553,13,1.382,16,2.074,29,1.579,30,1.579,36,3.42,43,2.074,68,2.074,69,3.42,71,2.28,73,1.849,82,2.033,84,1.227,89,2.28,100,1.849,131,1.486,136,2.033,139,1.301,158,1.301,163,1.702,202,3.42,204,2.28,217,2.033,218,1.849,219,2.654,220,2.654,221,2.654,222,2.28,223,2.654,224,2.654,225,2.654,226,2.654,227,2.654,228,2.553,229,2.654,230,2.033,231,2.28,232,2.654,233,4.104,234,3.42,235,2.654,236,2.654,237,3.982,238,2.654,239,3.982,240,3.982,241,2.033,242,2.28,243,2.28,244,2.654,245,2.654,246,2.654,247,2.654,248,2.654,249,2.28,250,2.654,251,2.654,252,2.654,253,2.654,254,2.033,255,2.654,256,2.654,257,0.991,258,2.28,259,1.702,260,2.654,261,3.05,262,2.28,263,3.982,264,1.579,265,2.654,266,2.654,267,2.654,268,2.654,269,1.382,270,2.654,271,2.773,272,2.654,273,2.654,274,3.42,275,2.28,276,2.033,277,2.654,278,2.033,279,2.654,280,2.654,281,1.579,282,2.28,283,2.28,284,2.654]],["t/12",[0,1.696,2,2.262,3,1.282,4,2.556,7,2.746,12,3.215,43,2.404,177,2.96,206,3.536,207,2.96,208,3.536,209,3.965,264,2.746,285,4.617,286,4.617,287,3.215,288,4.617,289,2.564,290,4.617,291,3.215,292,4.617,293,4.617,294,4.617,295,4.617,296,4.617,297,3.965,298,3.965,299,2.564,300,4.617,301,3.965]],["t/14",[0,1.762,5,3.672,24,2.251,177,3.672,218,3.99,302,5.729]],["t/16",[0,1.854,1,1.989,12,2.659,16,1.989,24,1.501,37,2.121,44,2.659,72,1.67,80,3.595,81,2.138,109,4.433,148,2.448,177,2.448,208,2.925,214,2.659,230,2.925,303,3.818,304,3.279,305,2.925,306,1.766,307,3.818,308,3.818,309,2.867,310,3.818,311,3.818,312,3.818,313,5.162,314,2.029,315,3.279,316,3.279,317,2.659,318,2.659,319,3.279,320,3.595,321,2.688,322,3.818,323,2.659,324,3.818,325,2.659,326,3.279,327,3.279,328,2.925,329,1.989,330,3.279,331,3.279,332,2.659]],["t/18",[0,1.695,81,1.675,120,2.592,154,3.735,156,3.097,158,1.981,191,2.816,309,2.245,314,1.589,325,2.816,332,2.816,333,2.793,334,2.816,335,3.472,336,2.816,337,2.816,338,3.472,339,2.592,340,4.043,341,4.043,342,3.134,343,2.816,344,3.097,345,3.097,346,3.472,347,4.043,348,1.592,349,1.675,350,4.043,351,3.735,352,2.106,353,4.043,354,3.097,355,2.345,356,4.043,357,4.043,358,3.472,359,3.472,360,4.043,361,1.768,362,4.043]],["t/20",[24,1.961,72,2.182,81,2.067,84,2.307,120,3.198,150,2.445,309,2.771,333,3.46,336,4.273,349,2.067,355,2.182,361,2.182,363,4.285,364,4.285,365,4.285,366,3.821,367,2.771,368,4.285,369,4.989,370,4.285]],["t/23",[68,2.301,259,2.833,298,3.795,314,1.737,331,3.795,355,1.932,371,2.454,372,2.833,373,3.078,374,5.684,375,5.397,376,3.078,377,4.419,378,3.959,379,4.419,380,4.353,381,4.419,382,2.629,383,2.833,384,2.165,385,3.795,386,4.419,387,3.384,388,3.795,389,4.419,390,4.419,391,4.419,392,4.419,393,3.384,394,4.419,395,4.419,396,3.795,397,4.419,398,4.419]],["t/25",[0,1.63,4,2.199,46,2.465,338,4.32,355,2.199,371,2.793,399,5.03,400,6.667,401,5.03,402,6.165,403,3.503,404,3.668,405,6.165,406,2.992,407,4.32,408,3.503]],["t/27",[1,2.666,24,1.482,68,1.964,119,2.627,152,2.095,215,3.239,276,2.889,314,1.482,317,2.627,321,1.964,349,2.407,351,2.627,355,1.649,361,1.649,371,2.095,387,2.889,388,4.991,408,4.047,409,5.119,410,5.119,411,2.889,412,3.239,413,5.119,414,3.772,415,3.239,416,3.239,417,2.889,418,3.239,419,2.889,420,2.889,421,3.772,422,3.772,423,3.772,424,3.772,425,3.239,426,3.772,427,3.772,428,3.772,429,3.772,430,3.772,431,3.239,432,3.239,433,2.627,434,2.889,435,2.889,436,3.239,437,3.239,438,3.772,439,3.772,440,3.772,441,3.772,442,3.239,443,3.239]],["t/30",[0,0.714,16,1.407,39,1.407,40,1.407,72,1.181,78,1.881,110,1.977,113,1.607,151,1.881,168,2.809,180,1.881,184,1.407,314,1.585,317,1.881,321,2.101,334,2.809,339,1.731,348,0.714,349,2.49,352,1.407,355,1.181,361,2.342,371,1.5,372,1.731,373,2.809,378,3.363,380,2.069,382,3.409,385,2.32,404,3.706,406,3.186,417,2.069,418,2.32,419,2.069,425,3.464,442,4.599,443,4.146,444,4.034,445,2.701,446,2.701,447,2.32,448,2.32,449,2.701,450,2.069,451,2.701,452,1.731,453,2.701,454,1.881,455,5.355,456,2.701,457,1.181,458,2.701,459,1.881,460,4.034,461,2.701,462,2.701,463,2.701,464,2.701,465,2.701,466,3.464,467,2.701,468,2.701,469,2.701,470,2.32,471,2.32,472,1.731,473,2.701,474,2.701,475,1.881,476,1.881,477,2.701,478,2.701,479,2.701,480,2.701,481,2.701,482,2.701,483,2.701,484,2.32,485,2.701,486,2.701,487,2.701,488,2.32,489,2.701,490,2.701,491,2.32,492,2.701,493,2.701]],["t/32",[3,1.509,29,2.453,46,2.021,52,2.872,73,3.785,85,3.542,145,2.644,168,2.872,171,3.542,276,4.655,306,1.907,318,2.872,355,1.803,371,2.29,375,3.542,380,3.159,384,2.021,472,2.644,494,2.872,495,4.124,496,2.148,497,4.124,498,4.124,499,4.124,500,5.22,501,3.542,502,4.124,503,4.124,504,4.124,505,4.124,506,4.124,507,4.124,508,4.124,509,3.159,510,5.434,511,4.124,512,3.542,513,4.124,514,4.124,515,3.542,516,4.124,517,4.124]],["t/34",[0,1.341,81,2.567,84,2.345,157,3.532,309,2.816,333,2.641,342,2.641,368,4.355,518,5.071,519,3.884,520,5.071,521,5.071,522,3.251,523,5.071,524,4.355,525,3.884,526,5.071,527,3.884,528,3.884,529,5.071]],["t/36",[24,2.061,72,2.293,80,3.652,81,2.172,118,3.652,150,2.569,309,2.912,333,3.293,349,2.172,363,4.503,364,4.503,365,4.503,366,4.016,530,6.323,531,4.503]],["t/38",[0,1.556,3,1.073,24,2.474,39,2.013,40,2.013,72,1.691,150,1.895,304,3.32,306,1.788,314,1.519,332,2.693,333,2.013,344,2.961,352,2.013,355,1.691,367,2.147,384,1.895,403,2.693,404,2.3,406,3.097,434,3.987,454,2.693,476,2.693,496,2.013,532,3.32,533,3.866,534,3.866,535,3.32,536,3.987,537,3.866,538,3.866,539,3.866,540,3.32,541,5.885,542,3.32,543,2.693,544,3.866,545,3.866,546,3.32,547,3.866,548,2.478,549,3.866,550,2.961,551,5.205,552,2.961,553,3.866,554,2.3,555,3.32]],["t/40",[3,1.108,74,2.78,306,1.845,314,2.35,330,3.428,333,2.078,334,2.78,348,1.055,361,1.745,378,2.78,382,2.374,404,2.374,406,2.374,408,2.78,433,2.78,434,4.884,435,3.057,436,3.428,437,3.428,472,2.558,476,2.78,496,2.078,522,3.409,528,3.057,532,3.428,535,5.136,536,3.057,554,3.163,556,3.991,557,3.991,558,3.991,559,3.991,560,3.991,561,2.374,562,3.991,563,3.991,564,3.991,565,3.428,566,3.703,567,3.991,568,3.991,569,3.991,570,3.991,571,3.991]],["t/42",[0,1.365,24,1.501,30,2.272,32,2.448,44,2.659,81,1.582,114,2.121,306,1.766,314,1.501,333,1.989,348,1.01,351,2.659,361,1.67,373,2.659,384,1.871,404,3.071,408,2.659,420,2.925,459,2.659,536,3.954,554,4.012,565,3.279,566,4.697,572,3.818,573,3.818,574,2.925,575,3.818,576,2.925,577,2.448,578,3.818,579,3.818,580,3.818,581,3.818,582,3.279,583,3.818,584,3.279,585,3.818,586,3.279,587,3.818,588,3.818,589,2.659,590,3.818,591,3.818,592,3.818,593,3.279,594,3.818,595,3.818,596,3.818]],["t/44",[3,1.376,4,2.167,8,1.49,23,1.762,46,2.778,72,1.573,75,2.139,110,1.762,114,2.752,117,3.089,120,2.305,137,4.256,148,3.634,151,3.451,186,2.505,218,2.505,257,1.342,289,1.997,306,2.621,314,1.413,321,1.873,333,1.873,355,1.573,384,2.428,404,2.139,407,3.089,457,1.573,496,3.182,509,3.795,522,2.305,528,2.754,540,3.089,554,2.948,555,3.089,566,2.505,574,2.754,597,3.596,598,2.754,599,2.505,600,3.596,601,2.754,602,2.754,603,3.596,604,3.596,605,3.596,606,3.596,607,2.139,608,3.596,609,3.596,610,2.754,611,3.089,612,3.089,613,3.596,614,3.596]],["t/46",[24,1.775,30,2.686,75,3.429,77,2.686,81,1.871,84,2.088,339,2.895,342,3.002,349,1.871,359,3.878,366,3.458,367,2.508,370,3.878,452,2.895,457,1.975,525,3.458,611,3.878,615,4.515,616,3.878,617,3.878,618,4.515,619,3.878,620,4.515,621,2.508,622,4.515,623,4.515,624,3.878,625,3.145,626,3.878,627,4.515,628,3.458,629,3.878,630,3.458,631,3.878]],["t/48",[0,1.546,1,2.404,77,3.477,184,2.404,228,2.96,297,3.965,320,3.215,325,3.215,342,3.34,349,2.421,412,3.965,416,3.965,452,4.112,519,3.536,626,5.02,632,4.617,633,4.617,634,4.617,635,4.617,636,4.617,637,4.617,638,3.965,639,5.845,640,4.617]],["t/50",[32,3.677,47,2.874,81,1.857,282,4.927,314,1.762,349,1.857,355,1.96,372,2.874,387,3.433,411,3.433,435,3.433,450,3.433,459,4.645,501,3.85,554,2.667,631,4.927,641,3.85,642,4.483,643,4.483,644,4.483,645,4.483,646,2.49,647,4.483,648,4.483,649,4.483,650,4.483,651,3.85,652,4.483,653,4.483,654,3.85,655,4.483]],["t/52",[4,2.964,8,1.941,23,2.297,46,2.297,72,2.049,77,2.788,106,3.264,110,3.165,139,2.892,140,3.59,431,4.025,452,3.004,543,3.264,561,2.788,656,5.901,657,4.025,658,4.025,659,4.025,660,4.025,661,4.686,662,4.686,663,3.59,664,4.686,665,4.025]],["t/54",[151,3.747,314,2.114,336,3.747,349,2.66,372,3.449,406,3.201,411,4.121,527,4.918,554,3.201,566,3.747,666,5.38,667,5.38]],["t/56",[0,1.055,39,2.078,40,2.078,46,3.125,79,2.558,114,2.216,130,3.057,131,1.985,145,2.558,150,2.606,158,1.956,306,2.765,309,3.542,321,2.078,334,2.78,342,2.078,345,3.057,348,1.055,355,2.325,384,1.956,419,3.057,433,2.78,447,3.428,457,1.745,496,2.078,509,3.057,522,2.558,524,3.428,525,3.057,574,3.057,582,3.428,584,3.428,668,3.991,669,3.991,670,3.991,671,3.991,672,3.991,673,3.991,674,3.991,675,3.991,676,3.428,677,3.991,678,3.428]],["t/59",[0,1.406,2,1.956,24,2.09,39,2.078,40,2.078,45,2.216,46,1.956,72,1.745,111,2.374,129,2.78,150,2.606,154,2.78,185,3.703,218,2.78,281,2.374,301,4.567,342,2.078,351,2.78,384,1.956,417,3.057,527,4.073,598,3.057,602,3.057,610,3.057,679,3.991,680,3.991,681,3.991,682,5.317,683,4.073,684,5.317,685,3.991,686,2.78,687,3.428,688,5.136,689,4.567,690,3.428,691,3.428,692,3.991,693,3.991,694,3.991,695,3.991,696,3.991]],["t/61",[0,1.571,3,1.463,24,1.548,29,2.344,44,3.672,51,2.526,56,2.744,72,2.598,74,2.744,79,2.526,80,2.744,81,2.628,154,3.672,184,2.052,194,4.528,217,3.018,254,3.018,309,2.928,314,1.548,316,3.384,337,3.672,342,2.052,349,1.632,406,2.344,432,3.384,452,2.526,496,2.746,515,3.384,628,3.018,687,3.384,688,3.384,689,3.384,690,3.384,691,3.384,697,3.94,698,3.94,699,3.94,700,3.018,701,3.94,702,3.94,703,3.384,704,3.384]],["t/63",[0,1.01,1,1.989,2,1.871,3,1.623,4,2.257,5,2.448,7,2.272,8,1.582,10,2.448,11,2.448,19,3.954,30,2.272,39,1.989,40,1.989,41,3.279,43,1.989,51,2.448,52,3.595,56,2.659,70,2.448,100,2.659,110,1.871,118,2.659,129,2.659,139,1.871,150,1.871,156,2.925,184,1.989,185,2.659,206,2.925,233,3.279,242,3.279,281,2.272,287,2.659,306,1.766,328,2.925,337,2.659,349,1.582,496,1.989,550,2.925,561,3.071,610,2.925,659,3.279,705,3.279,706,2.925,707,3.818,708,3.818,709,2.272,710,3.818,711,3.279,712,3.279,713,3.818,714,3.279,715,2.925,716,3.818]],["t/65",[0,1.592,1,2.106,2,2.628,3,1.489,5,2.592,7,2.405,16,2.793,23,1.981,37,2.979,43,2.106,47,2.592,68,2.106,81,1.675,84,1.87,111,2.405,195,3.735,214,3.735,259,2.592,278,3.097,327,3.472,328,3.097,335,3.472,339,2.592,367,2.245,576,3.097,717,4.043,718,4.043,719,4.043,720,4.043,721,4.043,722,2.405,723,3.472,724,4.043,725,4.043,726,3.097,727,3.472,728,3.472,729,3.472,730,4.043,731,4.043,732,4.043,733,4.043,734,4.043,735,4.043]],["t/67",[0,1.423,119,3.747,258,4.621,329,2.802,403,3.747,736,4.117,737,4.621,738,4.621,739,4.621,740,4.621,741,5.38,742,5.38,743,5.38]],["t/69",[0,1.654,1,0.364,2,1.812,3,1.811,4,2.366,5,0.448,8,1.532,10,1.144,11,1.144,12,0.487,13,0.93,15,1.243,16,2.035,17,1.659,22,0.714,23,1.915,24,0.701,28,0.536,29,0.765,30,1.317,32,0.448,33,0.896,37,0.714,39,1.153,40,1.153,45,0.388,46,1.698,47,1.144,50,1.533,51,1.869,54,1.902,55,0.985,63,0.896,64,0.448,65,1.902,66,0.536,68,0.364,72,0.781,73,1.243,74,0.487,75,0.765,77,3.721,78,1.803,87,0.536,95,0.536,102,0.601,105,0.448,106,1.803,110,1.085,111,0.765,112,0.601,120,1.144,121,0.601,123,1.533,128,0.536,129,0.487,130,0.985,131,0.666,132,1.243,133,2.223,136,0.985,139,0.343,140,0.985,141,0.896,142,1.105,143,0.601,145,1.42,146,1.367,149,0.601,150,1.085,152,0.991,157,0.487,158,0.63,159,0.601,161,2.505,162,0.601,163,0.448,164,1.105,168,0.487,177,1.144,178,0.985,179,0.536,180,1.243,181,1.23,183,0.601,184,0.364,186,1.542,192,0.487,195,1.542,205,1.533,207,1.42,222,0.601,228,0.448,230,0.536,234,1.105,241,1.696,243,2.505,254,0.536,257,0.261,259,0.824,261,0.985,264,0.416,269,0.364,274,1.902,278,0.536,281,1.062,283,0.601,287,1.542,291,0.487,299,0.714,305,1.696,306,1.71,314,0.275,315,1.105,318,0.487,319,0.601,321,0.93,325,0.487,326,0.601,329,0.364,336,1.243,337,0.896,339,0.448,342,0.93,343,0.487,344,0.536,346,0.601,348,1.129,349,0.29,352,0.364,358,0.601,361,0.306,372,0.824,373,0.487,376,0.487,383,0.448,384,0.343,393,0.985,396,0.601,420,1.367,433,1.542,448,0.601,454,0.487,459,0.487,466,0.601,471,0.601,475,0.896,476,0.487,494,1.243,496,0.364,500,1.533,542,0.601,543,0.487,561,1.062,576,0.536,586,1.105,593,1.105,598,1.367,599,0.487,616,0.601,619,0.601,621,0.388,625,0.487,630,0.985,646,0.388,651,0.601,657,1.533,663,0.536,665,0.601,676,0.601,686,1.803,704,0.601,709,0.416,714,1.105,729,1.902,736,0.448,739,0.601,744,1.785,745,0.699,746,2.214,747,0.699,748,0.699,749,0.699,750,1.785,751,0.699,752,0.536,753,1.105,754,0.699,755,0.699,756,1.286,757,0.699,758,0.699,759,0.601,760,1.105,761,0.699,762,0.699,763,0.699,764,0.699,765,0.699,766,1.286,767,1.42,768,0.699,769,0.699,770,0.699,771,0.699,772,1.286,773,0.699,774,0.699,775,0.699,776,0.699,777,2.214,778,0.601,779,1.286,780,1.105,781,0.699,782,0.699,783,1.785,784,1.105,785,1.696,786,0.699,787,0.699,788,1.105,789,0.699,790,0.699,791,0.601,792,3.206,793,0.699,794,1.286,795,0.699,796,0.699,797,0.699,798,0.699,799,0.699,800,0.699,801,1.105,802,0.448,803,0.699,804,0.699,805,0.601,806,0.699,807,0.699,808,0.699,809,0.699,810,0.824,811,0.699,812,0.699,813,0.699,814,0.699,815,0.699,816,1.286,817,0.601,818,0.699,819,0.699,820,0.699,821,1.785,822,0.699,823,0.699,824,0.699,825,0.699,826,0.699,827,1.105,828,0.699,829,1.785,830,1.785,831,0.699,832,0.699,833,0.699,834,0.536,835,0.699,836,0.699,837,0.601,838,0.699,839,0.699,840,1.286,841,0.699,842,0.699,843,0.699,844,0.699,845,1.696,846,0.699,847,0.699,848,0.699,849,0.699,850,1.785,851,0.699,852,0.699,853,0.699,854,0.388,855,0.699,856,0.699,857,1.105,858,0.699,859,1.286,860,0.699,861,0.699,862,1.286,863,0.601,864,0.699,865,0.699,866,0.699,867,1.286,868,0.699,869,0.536,870,0.699,871,0.699,872,0.601,873,0.699,874,0.699,875,0.699,876,0.699,877,0.699,878,0.323,879,0.699,880,0.601,881,0.699,882,0.699,883,0.699,884,0.343,885,0.699,886,0.699,887,0.699,888,0.699,889,0.699,890,1.785,891,0.601,892,0.699,893,0.699,894,0.536,895,0.699,896,0.699,897,0.388,898,0.699,899,0.699,900,1.785,901,1.105,902,2.234,903,0.699,904,0.699,905,0.448,906,0.699,907,0.699,908,1.286,909,0.699]],["t/71",[115,3.852,139,2.465,361,2.199,494,3.503,706,3.852,854,2.793,910,3.503,911,4.32,912,5.03,913,4.32,914,3.083,915,3.211,916,3.224,917,2.04,918,3.503,919,5.03,920,3.503]],["t/73",[3,1.218,207,4.241,264,2.61,289,3.478,299,3.674,601,4.796,607,2.61,621,2.437,897,2.437,914,2.029,915,2.285,921,3.056,922,3.056,923,3.768,924,3.768,925,3.768,926,4.333,927,2.813,928,3.768,929,3.768,930,3.768,931,3.768,932,3.768,933,3.768,934,3.768,935,3.768,936,3.056,937,3.768,938,3.768]],["t/75",[3,1.669,13,1.407,22,1.5,23,2.366,75,1.607,79,1.731,84,1.249,111,1.607,114,1.5,139,1.324,152,1.5,158,1.324,181,2.681,200,2.069,257,1.802,262,2.32,264,3.186,281,1.607,287,2.809,299,3.339,318,1.881,332,1.881,348,1.416,393,3.089,475,1.881,548,2.586,607,2.4,621,3.339,638,4.599,715,2.069,722,1.607,727,2.32,736,1.731,752,2.069,778,2.32,802,1.731,834,2.069,857,2.32,869,2.069,872,2.32,884,1.324,894,2.069,897,3.339,910,1.881,914,1.865,917,1.753,918,1.881,927,1.731,939,2.069,940,2.701,941,6.011,942,6.23,943,2.701,944,2.069,945,2.701,946,2.32,947,2.701,948,2.701,949,2.32,950,2.701,951,4.034,952,2.701,953,4.034,954,2.701,955,2.701,956,2.701,957,2.701,958,2.701,959,2.701,960,2.701,961,2.069]],["t/77",[3,1.317,8,1.966,22,1.877,23,1.656,33,3.305,84,1.563,113,2.011,128,2.589,139,1.656,158,1.656,228,2.167,231,2.903,257,1.771,299,2.636,348,1.255,383,2.167,450,2.589,472,2.167,488,2.903,543,3.305,602,2.589,621,1.877,625,2.354,752,3.635,802,3.042,834,2.589,854,2.636,878,2.195,884,1.656,897,3.046,910,2.354,914,2.195,915,1.76,916,2.167,917,1.452,920,2.354,921,2.354,944,2.589,962,3.635,963,3.042,964,2.167,965,3.38,966,3.38,967,6.265,968,3.38,969,4.71,970,3.38,971,4.746,972,5.484,973,3.38,974,3.38,975,3.38,976,3.38,977,3.38,978,3.38,979,3.38]],["t/79",[3,1.746,119,3.621,148,3.333,257,1.941,384,2.548,599,3.621,628,3.982,706,3.982,736,4.033,737,4.465,788,4.465,854,2.887,897,2.887,917,1.591,946,4.465,980,5.199]],["t/81",[3,1.809,8,2.121,13,1.964,15,4.341,75,2.244,82,2.889,198,3.239,257,1.911,291,3.565,348,0.997,383,2.418,546,3.239,548,2.418,561,2.244,599,2.627,621,2.095,630,2.889,753,3.239,767,2.418,897,3.619,914,2.367,936,4.341,939,2.889,963,2.418,981,3.239,982,4.397,983,3.772,984,5.119,985,5.811,986,5.119,987,3.772,988,3.239,989,3.772,990,3.239,991,3.772,992,3.239,993,3.772,994,3.772,995,3.772,996,3.772]],["t/83",[3,1.936,15,2.291,45,1.827,68,1.713,70,2.109,100,2.291,134,2.826,186,2.291,257,1.228,299,2.586,306,1.521,321,1.713,361,1.439,367,3.002,470,2.826,589,3.243,621,3.756,660,5.047,678,2.826,683,2.52,802,2.109,810,2.985,854,1.827,884,1.612,897,3.756,914,2.153,915,1.713,916,2.109,921,2.291,922,2.291,939,2.52,949,2.826,997,3.29,998,3.29,999,3.29,1000,3.29,1001,3.29,1002,2.826,1003,2.826,1004,3.29,1005,3.29,1006,3.29,1007,5.877,1008,3.999,1009,3.29,1010,3.29,1011,3.29,1012,3.29,1013,3.29,1014,3.29,1015,3.29]],["t/85",[323,3.532,367,2.816,415,4.355,878,2.345,914,2.345,915,2.641,917,2.047,961,3.884,962,5.125,963,4.29,1016,5.071,1017,5.071,1018,5.071,1019,3.017,1020,4.355]],["t/87",[105,3.251,141,3.532,152,2.816,181,2.816,191,3.532,269,2.641,271,3.532,320,3.532,329,2.641,382,3.017,577,3.251,914,2.865,915,3.227,917,1.896,1021,3.532,1022,4.355,1023,3.532,1024,4.355]],["t/89",[329,2.851,354,4.193,722,3.257,914,2.532,915,2.851,964,3.51,1025,4.702,1026,4.702,1027,4.702,1028,4.193,1029,4.193,1030,4.702]],["t/91",[114,2.321,131,2.517,200,3.201,348,1.914,352,2.855,361,1.828,457,1.828,494,2.911,683,3.201,767,2.679,878,1.933,910,2.911,911,3.59,913,3.59,917,2.234,1019,2.487,1031,4.18,1032,4.18,1033,3.201,1034,3.201,1035,4.18,1036,5.482,1037,3.59,1038,3.59]],["t/93",[131,1.685,207,4.287,264,2.686,289,3.526,299,3.526,348,1.194,601,4.862,607,2.686,917,1.382,922,3.145,923,3.878,924,3.878,925,3.878,926,4.414,927,2.895,928,3.878,929,3.878,930,3.878,931,3.878,932,3.878,933,3.878,934,3.878,935,3.878,936,3.145,937,3.878,938,3.878]],["t/95",[8,1.059,13,2.015,37,1.419,43,1.331,110,1.252,115,1.957,132,1.78,158,1.896,165,2.195,184,2.015,257,1.444,259,1.638,269,1.331,271,1.78,281,2.302,291,1.78,323,1.78,345,1.957,348,1.235,352,2.432,371,1.419,376,1.78,454,1.78,457,1.118,607,2.302,624,2.195,629,2.195,646,2.149,686,1.78,700,1.957,709,1.52,723,3.323,726,2.964,736,1.638,759,2.195,760,2.195,810,1.638,854,2.594,878,2.409,880,2.195,884,1.252,894,2.964,901,2.195,902,1.957,905,1.638,917,1.973,920,1.78,927,2.994,961,1.957,964,1.638,981,2.195,990,2.195,1019,1.52,1034,2.964,1038,2.195,1039,3.577,1040,3.323,1041,1.957,1042,3.87,1043,4.011,1044,3.87,1045,3.323,1046,2.556,1047,2.556,1048,2.556,1049,2.556,1050,2.556,1051,2.195,1052,2.556,1053,3.323,1054,2.195,1055,2.556,1056,2.195,1057,2.195,1058,2.695,1059,2.556,1060,2.556,1061,2.195,1062,3.989,1063,2.195,1064,2.556,1065,1.957,1066,2.556,1067,2.195,1068,2.556,1069,2.195,1070,2.556,1071,2.556,1072,2.556,1073,2.556,1074,2.556,1075,2.556,1076,2.556,1077,3.87,1078,3.87,1079,2.556]],["t/97",[33,1.985,37,2.768,45,2.331,79,1.827,81,2.064,111,1.696,113,1.696,114,1.583,118,1.985,126,2.448,132,2.924,148,1.827,150,1.397,181,1.583,241,3.215,257,1.064,261,3.215,269,1.484,275,2.448,317,3.471,348,0.754,352,2.186,361,1.246,371,2.331,382,2.497,383,1.827,457,2.179,519,3.817,531,2.448,548,1.827,550,2.183,641,2.448,646,1.583,686,1.985,700,3.215,705,2.448,709,2.497,715,3.215,740,2.448,854,2.768,902,2.183,917,1.793,1019,1.696,1023,1.985,1034,3.817,1039,2.183,1040,2.448,1041,3.215,1054,2.448,1062,3.215,1067,2.448,1069,3.606,1080,5.861,1081,2.85,1082,2.85,1083,2.85,1084,2.85,1085,2.85,1086,4.28,1087,4.198,1088,4.198,1089,2.85,1090,2.448,1091,2.85,1092,2.85,1093,2.85,1094,4.198,1095,2.85,1096,2.448,1097,2.85,1098,2.85,1099,2.85,1100,2.85,1101,2.85,1102,2.85,1103,2.85]],["t/99",[84,2.043,131,1.649,139,2.165,184,2.301,195,3.078,257,1.649,289,2.454,305,3.384,329,2.301,343,3.078,348,1.169,457,1.932,561,2.629,607,2.629,722,2.629,802,2.833,845,3.384,878,2.628,891,3.795,917,1.739,1003,3.795,1021,3.078,1028,3.384,1029,3.384,1063,3.795,1086,3.795,1104,4.419,1105,5.684,1106,5.684,1107,4.419,1108,5.684,1109,4.419,1110,4.419,1111,4.419]],["t/101",[8,1.456,22,1.952,70,2.253,104,2.692,131,1.312,257,2.455,323,3.397,348,1.481,352,2.54,367,2.708,376,2.448,378,2.448,457,1.537,612,3.018,709,2.901,817,3.018,878,2.255,914,1.625,915,1.83,917,2.204,921,2.448,962,5.347,963,4.476,964,2.253,1019,2.091,1033,2.692,1039,2.692,1041,2.692,1045,3.018,1090,3.018,1096,3.018,1112,3.514,1113,3.514,1114,4.877,1115,3.018]],["t/103",[13,2.052,64,2.526,95,3.018,110,1.931,131,1.471,145,2.526,163,2.526,228,2.526,257,1.968,348,1.394,475,2.744,491,3.384,589,2.744,617,3.384,646,2.188,654,3.384,722,2.344,780,3.384,784,3.384,785,4.038,878,1.822,884,2.584,905,2.526,917,1.941,920,2.744,927,2.526,964,2.526,982,3.384,1020,5.103,1056,3.384,1057,3.384,1058,2.744,1115,3.384,1116,3.018,1117,3.94,1118,3.94,1119,3.94,1120,3.94,1121,3.94,1122,3.94,1123,3.94,1124,3.94,1125,3.018,1126,3.94,1127,3.94,1128,3.94,1129,3.94]],["t/105",[131,1.847,192,3.447,269,2.578,348,1.614,457,2.67,646,2.749,785,3.791,878,2.289,884,2.425,905,3.173,917,2.025,1051,4.251,1065,3.791,1125,3.791,1130,4.949,1131,4.949,1132,4.949,1133,4.251,1134,4.949,1135,4.949]],["t/107",[105,3.198,131,2.29,141,3.475,152,2.771,181,2.771,191,3.475,269,2.598,271,3.475,320,3.475,348,1.622,382,2.968,577,3.198,917,2.121,1019,2.968,1021,3.475,1022,4.285,1023,3.475,1024,4.285]],["t/109",[61,3.683,131,1.974,269,2.754,348,1.398,726,4.05,917,1.618,918,3.683,1033,4.05,1058,4.427,1136,4.542,1137,4.542,1138,4.05,1139,4.542,1140,4.542,1141,5.288]],["t/111",[13,1.118,17,1.377,22,1.193,64,2.168,68,1.118,70,1.377,84,0.993,113,1.277,131,1.263,146,1.645,157,1.496,158,1.658,163,1.377,178,1.645,181,1.879,185,1.496,192,2.356,197,2.905,214,1.496,249,2.905,257,1.263,289,1.879,321,1.118,329,1.118,343,2.356,348,1.107,403,1.496,457,1.479,472,1.377,522,2.168,552,1.645,577,2.168,589,1.496,625,1.496,646,1.193,663,1.645,703,1.844,709,1.277,711,1.844,712,1.844,738,1.844,767,1.377,791,1.844,801,1.844,810,2.683,837,1.844,869,1.645,878,0.993,884,1.658,905,3.311,916,1.377,917,1.453,922,1.496,926,1.645,936,1.496,963,1.377,969,1.844,988,1.844,992,1.844,1002,2.905,1023,2.356,1037,1.844,1058,1.496,1061,1.844,1062,1.645,1065,1.645,1116,1.645,1125,1.645,1133,2.905,1136,3.595,1137,5.258,1138,1.645,1139,2.905,1140,5.731,1142,2.147,1143,2.905,1144,2.147,1145,2.147,1146,3.383,1147,2.147,1148,2.147,1149,4.748,1150,2.147,1151,3.595,1152,2.147,1153,2.147,1154,2.147,1155,2.147,1156,2.147,1157,2.147,1158,2.147,1159,2.147,1160,2.147,1161,2.147,1162,2.147,1163,2.147,1164,2.147,1165,2.147,1166,2.147,1167,2.147,1168,2.147,1169,2.147,1170,2.147,1171,2.147,1172,4.185,1173,2.147,1174,1.844,1175,2.147,1176,2.147,1177,2.147,1178,2.147,1179,2.147,1180,2.147,1181,2.147,1182,2.147,1183,2.147,1184,2.147,1185,2.147,1186,2.147,1187,2.147,1188,2.147,1189,2.147,1190,2.147,1191,2.147,1192,2.147,1193,2.147]],["t/113",[28,3.663,61,2.38,131,2.498,152,2.656,179,2.617,180,2.38,212,4.108,289,1.898,329,1.78,348,1.77,354,2.617,484,2.935,512,2.935,548,2.191,552,2.617,577,2.191,658,2.935,722,2.033,728,2.935,767,2.191,805,2.935,810,2.191,827,2.935,845,2.617,863,2.935,884,1.675,916,2.191,917,2.123,918,2.38,944,2.617,1008,2.935,1021,2.38,1025,2.935,1026,2.935,1027,2.935,1028,2.617,1029,2.617,1030,2.935,1043,2.935,1053,2.935,1116,2.617,1138,2.617,1143,4.108,1151,2.935,1174,2.935,1194,3.417,1195,3.417,1196,3.417,1197,3.417,1198,3.417,1199,3.417,1200,3.417,1201,3.417,1202,3.417,1203,3.417,1204,3.417]]],"invertedIndex":[["",{"_index":375,"t":{"23":{"position":[[40,1],[230,1],[302,1]]},"32":{"position":[[243,1]]}}}],["0.0000000001",{"_index":776,"t":{"69":{"position":[[1038,15]]}}}],["10",{"_index":934,"t":{"73":{"position":[[305,2]]},"93":{"position":[[246,2]]}}}],["100",{"_index":1128,"t":{"103":{"position":[[528,3]]}}}],["14",{"_index":1031,"t":{"91":{"position":[[27,2]]}}}],["2",{"_index":691,"t":{"59":{"position":[[294,1]]},"61":{"position":[[345,2]]}}}],["2021",{"_index":286,"t":{"12":{"position":[[15,4]]}}}],["2023",{"_index":301,"t":{"12":{"position":[[309,5]]},"59":{"position":[[153,5],[409,5]]}}}],["2024",{"_index":494,"t":{"32":{"position":[[0,4]]},"69":{"position":[[4491,5],[7824,5],[7946,5]]},"71":{"position":[[38,4]]},"91":{"position":[[39,4]]}}}],["4.0",{"_index":1106,"t":{"99":{"position":[[83,3],[116,5]]}}}],["566",{"_index":571,"t":{"40":{"position":[[553,4]]}}}],["60",{"_index":1166,"t":{"111":{"position":[[1068,4]]}}}],["6300",{"_index":935,"t":{"73":{"position":[[308,4]]},"93":{"position":[[249,4]]}}}],["9",{"_index":912,"t":{"71":{"position":[[27,1]]}}}],["9'",{"_index":176,"t":{"6":{"position":[[1333,3]]}}}],["99.99%—while",{"_index":27,"t":{"2":{"position":[[301,12]]}}}],["99.999999999",{"_index":771,"t":{"69":{"position":[[989,15]]}}}],["abov",{"_index":550,"t":{"38":{"position":[[518,5]]},"63":{"position":[[15,5]]},"97":{"position":[[1073,6]]}}}],["absolut",{"_index":761,"t":{"69":{"position":[[608,8]]}}}],["academia",{"_index":311,"t":{"16":{"position":[[156,9]]}}}],["access",{"_index":352,"t":{"18":{"position":[[250,8]]},"30":{"position":[[457,6]]},"38":{"position":[[553,10]]},"69":{"position":[[4714,11]]},"91":{"position":[[149,6],[519,6]]},"95":{"position":[[773,11],[845,6],[1007,10]]},"97":{"position":[[451,10],[1163,10]]},"101":{"position":[[563,8],[600,6]]}}}],["accord",{"_index":249,"t":{"10":{"position":[[487,9]]},"111":{"position":[[1290,10],[1937,10]]}}}],["account",{"_index":977,"t":{"77":{"position":[[752,8]]}}}],["accur",{"_index":1096,"t":{"97":{"position":[[872,9]]},"101":{"position":[[399,9]]}}}],["accuraci",{"_index":1054,"t":{"95":{"position":[[421,9]]},"97":{"position":[[941,9]]}}}],["action",{"_index":1191,"t":{"111":{"position":[[2234,6]]}}}],["activ",{"_index":367,"t":{"20":{"position":[[141,8]]},"38":{"position":[[478,6]]},"46":{"position":[[114,9]]},"65":{"position":[[252,6]]},"83":{"position":[[646,10],[687,10],[780,10]]},"85":{"position":[[209,10]]},"101":{"position":[[524,10],[717,10]]}}}],["actual",{"_index":1092,"t":{"97":{"position":[[695,6]]}}}],["ad",{"_index":373,"t":{"23":{"position":[[27,6]]},"30":{"position":[[160,5],[1093,6]]},"42":{"position":[[419,5]]},"69":{"position":[[1636,6]]}}}],["add",{"_index":710,"t":{"63":{"position":[[375,3]]}}}],["addit",{"_index":602,"t":{"44":{"position":[[188,10]]},"59":{"position":[[181,10]]},"77":{"position":[[3,8]]}}}],["address",{"_index":264,"t":{"10":{"position":[[800,7]]},"12":{"position":[[23,7]]},"69":{"position":[[2578,10]]},"73":{"position":[[227,7]]},"75":{"position":[[552,8],[661,7],[768,9],[874,7]]},"93":{"position":[[167,7]]}}}],["adequ",{"_index":82,"t":{"4":{"position":[[259,8]]},"10":{"position":[[936,8]]},"81":{"position":[[288,8]]}}}],["adjud",{"_index":867,"t":{"69":{"position":[[5684,11],[5901,12]]}}}],["administ",{"_index":1170,"t":{"111":{"position":[[1227,12]]}}}],["administr",{"_index":1185,"t":{"111":{"position":[[1891,14]]}}}],["advanc",{"_index":829,"t":{"69":{"position":[[3155,8],[3252,8],[3319,8]]}}}],["advantag",{"_index":93,"t":{"4":{"position":[[455,10]]}}}],["advic",{"_index":1073,"t":{"95":{"position":[[1586,6]]}}}],["advis",{"_index":1126,"t":{"103":{"position":[[412,7]]}}}],["affect",{"_index":1008,"t":{"83":{"position":[[668,7],[741,6]]},"113":{"position":[[412,6]]}}}],["affili",{"_index":741,"t":{"67":{"position":[[88,11]]}}}],["against",{"_index":1133,"t":{"105":{"position":[[53,7]]},"111":{"position":[[102,7],[2276,7]]}}}],["aggreg",{"_index":145,"t":{"6":{"position":[[566,10],[650,11]]},"32":{"position":[[34,11]]},"56":{"position":[[395,9]]},"69":{"position":[[3868,12],[5014,10],[5581,10],[5598,10]]},"103":{"position":[[474,9]]}}}],["aggregator/valid",{"_index":499,"t":{"32":{"position":[[80,20]]}}}],["agre",{"_index":1036,"t":{"91":{"position":[[390,6],[467,5]]}}}],["agreement",{"_index":212,"t":{"8":{"position":[[211,9]]},"113":{"position":[[44,9],[155,11]]}}}],["aim",{"_index":111,"t":{"4":{"position":[[786,4]]},"59":{"position":[[162,3]]},"65":{"position":[[18,4]]},"69":{"position":[[160,6],[706,3]]},"75":{"position":[[3,3]]},"97":{"position":[[1205,3]]}}}],["airdrop",{"_index":906,"t":{"69":{"position":[[7512,8]]}}}],["algorithm",{"_index":764,"t":{"69":{"position":[[695,10]]}}}],["align",{"_index":112,"t":{"4":{"position":[[831,6]]},"69":{"position":[[2908,8]]}}}],["allow",{"_index":195,"t":{"6":{"position":[[1776,8]]},"65":{"position":[[72,6],[131,6]]},"69":{"position":[[4806,6],[6083,5],[6844,6],[6937,5]]},"99":{"position":[[146,6]]}}}],["allus",{"_index":293,"t":{"12":{"position":[[160,8]]}}}],["along",{"_index":793,"t":{"69":{"position":[[1805,5]]}}}],["alongsid",{"_index":210,"t":{"8":{"position":[[187,9]]}}}],["alpha",{"_index":725,"t":{"65":{"position":[[293,6]]}}}],["altern",{"_index":262,"t":{"10":{"position":[[731,12]]},"75":{"position":[[1070,11]]}}}],["although",{"_index":99,"t":{"4":{"position":[[540,8]]}}}],["alway",{"_index":995,"t":{"81":{"position":[[662,6]]}}}],["amazon",{"_index":226,"t":{"10":{"position":[[117,7]]}}}],["amend",{"_index":1102,"t":{"97":{"position":[[1347,7]]}}}],["amic",{"_index":1158,"t":{"111":{"position":[[755,8]]}}}],["amount",{"_index":857,"t":{"69":{"position":[[4830,7],[5220,6]]},"75":{"position":[[403,6]]}}}],["analysi",{"_index":673,"t":{"56":{"position":[[191,9]]}}}],["analyt",{"_index":942,"t":{"75":{"position":[[623,10],[920,10],[966,10],[1054,9],[1092,10],[1160,9],[1261,9]]}}}],["ancient",{"_index":290,"t":{"12":{"position":[[136,7]]}}}],["announc",{"_index":297,"t":{"12":{"position":[[255,9]]},"48":{"position":[[193,12]]}}}],["anoth",{"_index":1005,"t":{"83":{"position":[[509,7]]}}}],["anyon",{"_index":876,"t":{"69":{"position":[[6089,6]]}}}],["anyth",{"_index":873,"t":{"69":{"position":[[5992,8]]}}}],["api",{"_index":482,"t":{"30":{"position":[[991,3]]}}}],["append",{"_index":504,"t":{"32":{"position":[[191,11]]}}}],["appli",{"_index":920,"t":{"71":{"position":[[227,7]]},"77":{"position":[[309,6]]},"95":{"position":[[656,5]]},"103":{"position":[[587,5]]}}}],["applic",{"_index":13,"t":{"2":{"position":[[132,13]]},"10":{"position":[[1070,13]]},"69":{"position":[[4666,12],[7200,11],[7319,11]]},"75":{"position":[[226,10]]},"81":{"position":[[694,10]]},"95":{"position":[[697,10],[959,10]]},"103":{"position":[[628,10]]},"111":{"position":[[2017,10]]}}}],["approach",{"_index":706,"t":{"63":{"position":[[52,8]]},"71":{"position":[[98,8]]},"79":{"position":[[13,9]]}}}],["appropri",{"_index":1060,"t":{"95":{"position":[[806,11]]}}}],["arbitr",{"_index":1140,"t":{"109":{"position":[[102,12]]},"111":{"position":[[260,11],[427,11],[549,11],[1215,11],[1263,11],[1339,11],[1447,8],[1499,11],[1656,11],[1781,11],[1860,12],[1910,10],[1986,12],[2264,11]]}}}],["architectur",{"_index":762,"t":{"69":{"position":[[647,13]]}}}],["area",{"_index":623,"t":{"46":{"position":[[262,5]]}}}],["argument",{"_index":839,"t":{"69":{"position":[[3715,9]]}}}],["aris",{"_index":1125,"t":{"103":{"position":[[251,7]]},"105":{"position":[[130,7]]},"111":{"position":[[690,7]]}}}],["ark",{"_index":399,"t":{"25":{"position":[[19,3]]}}}],["aros",{"_index":1189,"t":{"111":{"position":[[2110,5]]}}}],["arriv",{"_index":650,"t":{"50":{"position":[[324,6]]}}}],["art",{"_index":745,"t":{"69":{"position":[[39,4]]}}}],["ask",{"_index":660,"t":{"52":{"position":[[126,3]]},"83":{"position":[[305,3],[381,3],[435,3],[623,5]]}}}],["assign",{"_index":661,"t":{"52":{"position":[[162,6]]}}}],["associ",{"_index":601,"t":{"44":{"position":[[166,10]]},"73":{"position":[[152,12],[255,11],[434,12]]},"93":{"position":[[92,12],[196,11],[385,12]]}}}],["assumpt",{"_index":1083,"t":{"97":{"position":[[118,11]]}}}],["assur",{"_index":49,"t":{"2":{"position":[[633,11]]}}}],["async",{"_index":385,"t":{"23":{"position":[[179,5]]},"30":{"position":[[518,5]]}}}],["atla",{"_index":374,"t":{"23":{"position":[[34,5],[91,5]]}}}],["atom",{"_index":569,"t":{"40":{"position":[[399,6]]}}}],["attack",{"_index":590,"t":{"42":{"position":[[552,7]]}}}],["attent",{"_index":966,"t":{"77":{"position":[[351,9]]}}}],["attorney",{"_index":1135,"t":{"105":{"position":[[113,10]]}}}],["attribut",{"_index":1105,"t":{"99":{"position":[[71,11],[299,11]]}}}],["audit",{"_index":610,"t":{"44":{"position":[[461,5]]},"59":{"position":[[462,8]]},"63":{"position":[[433,9]]}}}],["avail",{"_index":184,"t":{"6":{"position":[[1539,9]]},"30":{"position":[[1115,14]]},"48":{"position":[[129,9]]},"61":{"position":[[468,12]]},"63":{"position":[[517,10]]},"69":{"position":[[2758,10]]},"95":{"position":[[478,12],[1062,9]]},"99":{"position":[[38,9]]}}}],["averag",{"_index":958,"t":{"75":{"position":[[1353,7]]}}}],["award",{"_index":1154,"t":{"111":{"position":[[561,5]]}}}],["away",{"_index":811,"t":{"69":{"position":[[2456,5]]}}}],["baarerstrass",{"_index":933,"t":{"73":{"position":[[291,13]]},"93":{"position":[[232,13]]}}}],["background",{"_index":310,"t":{"16":{"position":[[141,11]]}}}],["backup",{"_index":795,"t":{"69":{"position":[[1842,7]]}}}],["balanc",{"_index":820,"t":{"69":{"position":[[2708,9]]}}}],["bandwidth",{"_index":29,"t":{"2":{"position":[[336,9]]},"6":{"position":[[1712,9]]},"10":{"position":[[1316,9]]},"32":{"position":[[157,9]]},"61":{"position":[[372,9]]},"69":{"position":[[6062,9],[6270,9]]}}}],["base",{"_index":45,"t":{"2":{"position":[[570,5]]},"4":{"position":[[142,5]]},"6":{"position":[[319,5]]},"59":{"position":[[449,5]]},"69":{"position":[[1910,5]]},"83":{"position":[[707,5]]},"97":{"position":[[65,5],[590,5]]}}}],["basi",{"_index":894,"t":{"69":{"position":[[6998,5]]},"75":{"position":[[205,5]]},"95":{"position":[[44,5],[1177,5]]}}}],["be",{"_index":1173,"t":{"111":{"position":[[1364,5]]}}}],["bear",{"_index":1097,"t":{"97":{"position":[[910,4]]}}}],["becom",{"_index":183,"t":{"6":{"position":[[1532,6]]},"69":{"position":[[6392,6]]}}}],["befor",{"_index":683,"t":{"59":{"position":[[78,6],[135,6]]},"83":{"position":[[791,6]]},"91":{"position":[[316,6]]}}}],["began",{"_index":285,"t":{"12":{"position":[[6,5]]}}}],["begin",{"_index":358,"t":{"18":{"position":[[366,5]]},"69":{"position":[[5307,6]]}}}],["behaviour",{"_index":59,"t":{"2":{"position":[[762,10]]}}}],["believ",{"_index":70,"t":{"4":{"position":[[107,8]]},"63":{"position":[[3,7]]},"83":{"position":[[978,7]]},"101":{"position":[[338,8]]},"111":{"position":[[294,7]]}}}],["below",{"_index":80,"t":{"4":{"position":[[230,6]]},"16":{"position":[[256,6],[425,6]]},"36":{"position":[[120,5]]},"61":{"position":[[72,5]]}}}],["beta",{"_index":526,"t":{"34":{"position":[[115,4]]}}}],["between",{"_index":1138,"t":{"109":{"position":[[62,7]]},"111":{"position":[[1714,7]]},"113":{"position":[[54,7]]}}}],["bid",{"_index":108,"t":{"4":{"position":[[736,7]]}}}],["big",{"_index":782,"t":{"69":{"position":[[1227,3]]}}}],["bind",{"_index":1064,"t":{"95":{"position":[[1214,7]]}}}],["bit",{"_index":587,"t":{"42":{"position":[[526,4]]}}}],["block",{"_index":434,"t":{"27":{"position":[[305,5]]},"38":{"position":[[60,5],[287,5]]},"40":{"position":[[4,5],[136,5],[180,5],[497,5]]}}}],["blockchain",{"_index":657,"t":{"52":{"position":[[50,11]]},"69":{"position":[[3921,11],[4126,10],[4185,10]]}}}],["book—an",{"_index":292,"t":{"12":{"position":[[152,7]]}}}],["bootstrap",{"_index":639,"t":{"48":{"position":[[219,9],[259,9]]}}}],["both",{"_index":484,"t":{"30":{"position":[[1008,4]]},"113":{"position":[[199,4]]}}}],["bounc",{"_index":956,"t":{"75":{"position":[[1336,6]]}}}],["bound",{"_index":1037,"t":{"91":{"position":[[403,5]]},"111":{"position":[[404,5]]}}}],["branch",{"_index":410,"t":{"27":{"position":[[28,6],[455,6]]}}}],["breach",{"_index":239,"t":{"10":{"position":[[312,8],[589,8]]}}}],["break",{"_index":466,"t":{"30":{"position":[[627,8],[681,8]]},"69":{"position":[[1612,8]]}}}],["briefli",{"_index":943,"t":{"75":{"position":[[637,7]]}}}],["bring",{"_index":1188,"t":{"111":{"position":[[2061,5]]}}}],["broadcast",{"_index":172,"t":{"6":{"position":[[1237,9]]}}}],["broader",{"_index":824,"t":{"69":{"position":[[2926,7]]}}}],["broadest",{"_index":1142,"t":{"111":{"position":[[34,8]]}}}],["broken",{"_index":363,"t":{"20":{"position":[[25,6]]},"36":{"position":[[25,6]]}}}],["bug",{"_index":422,"t":{"27":{"position":[[177,3]]}}}],["build",{"_index":1,"t":{"2":{"position":[[9,8]]},"10":{"position":[[1046,5]]},"16":{"position":[[370,5]]},"27":{"position":[[377,5],[422,5]]},"48":{"position":[[150,5]]},"63":{"position":[[64,8]]},"65":{"position":[[362,8]]},"69":{"position":[[7191,5]]}}}],["built",{"_index":608,"t":{"44":{"position":[[414,5]]}}}],["buy",{"_index":1077,"t":{"95":{"position":[[1694,3],[1734,3]]}}}],["c",{"_index":401,"t":{"25":{"position":[[35,1]]}}}],["c/o",{"_index":929,"t":{"73":{"position":[[267,3]]},"93":{"position":[[208,3]]}}}],["cach",{"_index":161,"t":{"6":{"position":[[953,7]]},"69":{"position":[[5032,7],[6048,7],[6112,7],[6146,7],[6401,7],[6751,7]]}}}],["calendar",{"_index":1167,"t":{"111":{"position":[[1073,8]]}}}],["call",{"_index":493,"t":{"30":{"position":[[1106,4]]}}}],["caption",{"_index":1199,"t":{"113":{"position":[[255,8]]}}}],["carefulli",{"_index":1035,"t":{"91":{"position":[[306,9]]}}}],["case",{"_index":651,"t":{"50":{"position":[[350,4]]},"69":{"position":[[489,5]]}}}],["catch",{"_index":479,"t":{"30":{"position":[[934,8]]}}}],["catchableerror",{"_index":480,"t":{"30":{"position":[[947,15]]}}}],["cc",{"_index":1029,"t":{"89":{"position":[[144,2]]},"99":{"position":[[109,3]]},"113":{"position":[[957,2]]}}}],["cdn",{"_index":882,"t":{"69":{"position":[[6242,4]]}}}],["censor",{"_index":244,"t":{"10":{"position":[[410,9]]}}}],["censorship",{"_index":10,"t":{"2":{"position":[[102,10]]},"8":{"position":[[82,10]]},"10":{"position":[[278,10],[710,10],[912,11]]},"63":{"position":[[149,10]]},"69":{"position":[[177,10],[442,10],[4274,10]]}}}],["central",{"_index":750,"t":{"69":{"position":[[237,11],[286,11],[343,11]]}}}],["centralis",{"_index":233,"t":{"10":{"position":[[209,11],[343,11],[534,11]]},"63":{"position":[[194,11]]}}}],["ceremoni",{"_index":605,"t":{"44":{"position":[[237,9]]}}}],["certain",{"_index":802,"t":{"69":{"position":[[2101,7]]},"75":{"position":[[133,7]]},"77":{"position":[[152,7],[183,7]]},"83":{"position":[[145,7]]},"99":{"position":[[270,7]]}}}],["chain",{"_index":846,"t":{"69":{"position":[[4228,5]]}}}],["challeng",{"_index":842,"t":{"69":{"position":[[3830,10]]}}}],["chamber",{"_index":1171,"t":{"111":{"position":[[1253,9]]}}}],["chanc",{"_index":775,"t":{"69":{"position":[[1031,6]]}}}],["chang",{"_index":382,"t":{"23":{"position":[[105,7]]},"30":{"position":[[109,7],[636,7],[690,7],[759,7],[862,7]]},"40":{"position":[[169,7]]},"87":{"position":[[135,8]]},"97":{"position":[[583,6],[1329,6]]},"107":{"position":[[161,8]]}}}],["charg",{"_index":866,"t":{"69":{"position":[[5622,6]]}}}],["check",{"_index":320,"t":{"16":{"position":[[389,5],[523,5]]},"48":{"position":[[123,5]]},"87":{"position":[[96,5]]},"107":{"position":[[119,8]]}}}],["choic",{"_index":1000,"t":{"83":{"position":[[153,7]]}}}],["chrono",{"_index":388,"t":{"23":{"position":[[205,7]]},"27":{"position":[[72,7],[444,7],[482,7]]}}}],["chunk",{"_index":196,"t":{"6":{"position":[[1819,6]]}}}],["ci/dock",{"_index":438,"t":{"27":{"position":[[351,9]]}}}],["circom",{"_index":400,"t":{"25":{"position":[[23,6],[50,6],[68,6]]}}}],["circuit",{"_index":407,"t":{"25":{"position":[[131,8]]},"44":{"position":[[37,7]]}}}],["circuits/tree/master/reference/nim/proof_input",{"_index":614,"t":{"44":{"position":[[664,46]]}}}],["claim",{"_index":905,"t":{"69":{"position":[[7453,8]]},"95":{"position":[[724,6]]},"103":{"position":[[503,6]]},"105":{"position":[[73,7]]},"111":{"position":[[87,5],[939,5],[2071,6],[2104,5],[2176,6]]}}}],["class",{"_index":1190,"t":{"111":{"position":[[2228,5]]}}}],["classwid",{"_index":1193,"t":{"111":{"position":[[2254,9]]}}}],["claus",{"_index":992,"t":{"81":{"position":[[459,7]]},"111":{"position":[[439,7]]}}}],["clean",{"_index":473,"t":{"30":{"position":[[842,5]]}}}],["cleaner",{"_index":474,"t":{"30":{"position":[[890,7]]}}}],["cleanup",{"_index":666,"t":{"54":{"position":[[31,7]]}}}],["client",{"_index":24,"t":{"2":{"position":[[256,7]]},"6":{"position":[[667,6],[777,6],[790,6],[902,6]]},"14":{"position":[[31,7]]},"16":{"position":[[301,6]]},"20":{"position":[[59,7]]},"27":{"position":[[118,6]]},"36":{"position":[[63,7]]},"38":{"position":[[8,7],[156,6],[406,6],[530,6]]},"42":{"position":[[226,7]]},"46":{"position":[[373,6]]},"59":{"position":[[196,8],[296,6]]},"61":{"position":[[174,7]]},"69":{"position":[[5051,6],[6462,6],[6475,6]]}}}],["cloud",{"_index":234,"t":{"10":{"position":[[221,5],[355,5]]},"69":{"position":[[328,7],[422,5]]}}}],["code",{"_index":40,"t":{"2":{"position":[[479,7]]},"6":{"position":[[615,7],[1736,6]]},"30":{"position":[[102,6]]},"38":{"position":[[313,7]]},"56":{"position":[[357,6]]},"59":{"position":[[331,7]]},"63":{"position":[[387,7]]},"69":{"position":[[802,6],[1275,6],[1513,6],[1577,6]]}}}],["codenam",{"_index":681,"t":{"59":{"position":[[60,9]]}}}],["codex",{"_index":0,"t":{"2":{"position":[[0,5],[406,5]]},"4":{"position":[[101,5],[576,5],[851,5]]},"6":{"position":[[0,5],[746,5],[880,5],[1928,5]]},"8":{"position":[[0,5]]},"12":{"position":[[0,5],[115,7],[245,5]]},"14":{"position":[[0,5],[24,6]]},"16":{"position":[[0,5],[221,5],[263,5],[277,5],[295,5],[308,5],[323,5],[471,5]]},"18":{"position":[[4,5],[233,5],[269,5],[411,5]]},"25":{"position":[[110,5],[157,5]]},"30":{"position":[[776,5]]},"34":{"position":[[4,5]]},"38":{"position":[[400,5],[524,5],[572,5]]},"42":{"position":[[150,5],[220,5]]},"48":{"position":[[173,5],[213,5]]},"56":{"position":[[492,5]]},"59":{"position":[[0,5],[423,5]]},"61":{"position":[[4,5],[89,5],[274,5]]},"63":{"position":[[678,5]]},"65":{"position":[[4,5],[315,5],[376,6]]},"67":{"position":[[30,5]]},"69":{"position":[[8,6],[15,5],[265,5],[364,5],[565,5],[1240,5],[1562,6],[1737,6],[2025,5],[2277,6],[2368,6],[2772,5],[2798,5],[2961,5],[3045,5],[3301,5],[3629,5],[3671,5],[4092,5],[4152,5],[4358,5],[4387,5],[4533,6],[4540,5],[4784,6],[4964,5],[6630,5],[7222,6],[7275,5],[7345,5],[7365,5],[7388,5],[7478,5],[7506,5],[7540,5],[7577,5],[7772,5],[7852,5]]}}}],["codex'",{"_index":129,"t":{"6":{"position":[[242,7]]},"59":{"position":[[237,7]]},"63":{"position":[[186,7]]},"69":{"position":[[639,7]]}}}],["codex/pull/566",{"_index":567,"t":{"40":{"position":[[348,14]]}}}],["codex/pull/607",{"_index":667,"t":{"54":{"position":[[82,14]]}}}],["codex/pull/625",{"_index":596,"t":{"42":{"position":[[709,14]]}}}],["codex’",{"_index":676,"t":{"56":{"position":[[334,7]]},"69":{"position":[[4947,7]]}}}],["cold",{"_index":843,"t":{"69":{"position":[[4110,4]]}}}],["collater",{"_index":106,"t":{"4":{"position":[[708,11]]},"6":{"position":[[308,10],[332,10],[1669,10]]},"52":{"position":[[149,12]]},"69":{"position":[[4006,10],[5189,10],[5267,10],[5805,10],[7620,10]]}}}],["collect",{"_index":299,"t":{"12":{"position":[[281,10]]},"69":{"position":[[5632,11],[6318,12]]},"73":{"position":[[48,10],[141,10],[244,10],[423,10]]},"75":{"position":[[20,10],[35,10],[113,7],[270,7],[471,7],[1170,8]]},"77":{"position":[[31,10],[78,7]]},"83":{"position":[[50,10],[216,7]]},"93":{"position":[[81,10],[185,10],[374,10]]}}}],["collective'",{"_index":216,"t":{"8":{"position":[[294,12]]}}}],["combin",{"_index":34,"t":{"2":{"position":[[381,7]]}}}],["come",{"_index":1016,"t":{"85":{"position":[[25,4]]}}}],["command",{"_index":381,"t":{"23":{"position":[[97,7]]}}}],["commerci",{"_index":1110,"t":{"99":{"position":[[243,10]]}}}],["commiss",{"_index":989,"t":{"81":{"position":[[358,11]]}}}],["commission",{"_index":1013,"t":{"83":{"position":[[949,12]]}}}],["commit",{"_index":165,"t":{"6":{"position":[[1037,7]]},"95":{"position":[[1200,10]]}}}],["common",{"_index":891,"t":{"69":{"position":[[6603,6]]},"99":{"position":[[63,7]]}}}],["commun",{"_index":214,"t":{"8":{"position":[[243,14]]},"16":{"position":[[491,9]]},"65":{"position":[[321,10],[535,9]]},"111":{"position":[[1699,14]]}}}],["compar",{"_index":283,"t":{"10":{"position":[[1386,10]]},"69":{"position":[[2967,7]]}}}],["compat",{"_index":405,"t":{"25":{"position":[[57,6],[75,6]]}}}],["compens",{"_index":907,"t":{"69":{"position":[[7668,12]]}}}],["competit",{"_index":92,"t":{"4":{"position":[[443,11]]}}}],["compil",{"_index":592,"t":{"42":{"position":[[621,11]]}}}],["complaint",{"_index":1011,"t":{"83":{"position":[[890,9]]}}}],["complement",{"_index":193,"t":{"6":{"position":[[1743,11]]}}}],["complet",{"_index":371,"t":{"23":{"position":[[0,10]]},"25":{"position":[[0,10]]},"27":{"position":[[0,10]]},"30":{"position":[[0,10]]},"32":{"position":[[209,10]]},"95":{"position":[[407,13]]},"97":{"position":[[894,8],[966,12]]}}}],["compli",{"_index":1038,"t":{"91":{"position":[[413,6]]},"95":{"position":[[940,9]]}}}],["compliant",{"_index":1059,"t":{"95":{"position":[[793,9]]}}}],["compon",{"_index":540,"t":{"38":{"position":[[233,10]]},"44":{"position":[[199,11]]}}}],["compos",{"_index":116,"t":{"6":{"position":[[9,8]]}}}],["compress",{"_index":582,"t":{"42":{"position":[[431,8]]},"56":{"position":[[419,12]]}}}],["compris",{"_index":597,"t":{"44":{"position":[[19,9]]}}}],["compromis",{"_index":950,"t":{"75":{"position":[[1116,10]]}}}],["comput",{"_index":898,"t":{"69":{"position":[[7155,9]]}}}],["concentr",{"_index":832,"t":{"69":{"position":[[3447,13]]}}}],["concept",{"_index":679,"t":{"59":{"position":[[41,7]]}}}],["concern",{"_index":624,"t":{"46":{"position":[[271,7]]},"95":{"position":[[392,10]]}}}],["concret",{"_index":564,"t":{"40":{"position":[[290,8]]}}}],["condit",{"_index":1090,"t":{"97":{"position":[[627,11]]},"101":{"position":[[92,11]]}}}],["conduct",{"_index":703,"t":{"61":{"position":[[455,7]]},"111":{"position":[[1556,9]]}}}],["confer",{"_index":1176,"t":{"111":{"position":[[1576,10]]}}}],["confidenti",{"_index":1182,"t":{"111":{"position":[[1747,13]]}}}],["configur",{"_index":626,"t":{"46":{"position":[[318,10]]},"48":{"position":[[0,9],[57,9]]}}}],["conflict",{"_index":1141,"t":{"109":{"position":[[133,8]]}}}],["conform",{"_index":546,"t":{"38":{"position":[[413,8]]},"81":{"position":[[678,10]]}}}],["connect",{"_index":654,"t":{"50":{"position":[[377,7]]},"103":{"position":[[279,9]]}}}],["consensu",{"_index":875,"t":{"69":{"position":[[6020,9]]}}}],["consent",{"_index":1007,"t":{"83":{"position":[[564,7],[611,7],[721,7],[822,8]]}}}],["consequenti",{"_index":1124,"t":{"103":{"position":[[217,13]]}}}],["consid",{"_index":723,"t":{"65":{"position":[[278,10]]},"95":{"position":[[1122,10],[1273,10]]}}}],["consist",{"_index":801,"t":{"69":{"position":[[2037,10],[4970,8]]},"111":{"position":[[1641,7]]}}}],["constantin",{"_index":594,"t":{"42":{"position":[[646,11]]}}}],["constitut",{"_index":1070,"t":{"95":{"position":[[1543,10]]}}}],["constru",{"_index":1076,"t":{"95":{"position":[[1662,9]]}}}],["consult",{"_index":931,"t":{"73":{"position":[[275,10]]},"93":{"position":[[216,10]]}}}],["consum",{"_index":164,"t":{"6":{"position":[[1016,8]]},"69":{"position":[[6656,7],[6786,8]]}}}],["contact",{"_index":1026,"t":{"89":{"position":[[75,7]]},"113":{"position":[[888,7]]}}}],["contain",{"_index":1034,"t":{"91":{"position":[[221,9]]},"95":{"position":[[1287,7],[1517,9]]},"97":{"position":[[21,7],[815,9],[994,9]]}}}],["contemporan",{"_index":1196,"t":{"113":{"position":[[123,15]]}}}],["content",{"_index":878,"t":{"69":{"position":[[6174,8]]},"77":{"position":[[191,8],[249,7]]},"85":{"position":[[197,7]]},"91":{"position":[[195,7]]},"95":{"position":[[522,7],[589,7],[762,7],[986,7]]},"99":{"position":[[20,8],[194,7]]},"101":{"position":[[310,7],[377,7]]},"103":{"position":[[339,7]]},"105":{"position":[[186,7]]},"111":{"position":[[198,7]]}}}],["context",{"_index":808,"t":{"69":{"position":[[2266,7]]}}}],["continu",{"_index":334,"t":{"18":{"position":[[15,9]]},"30":{"position":[[570,8],[644,8]]},"40":{"position":[[533,10]]},"56":{"position":[[310,10]]}}}],["contract",{"_index":110,"t":{"4":{"position":[[760,10]]},"6":{"position":[[373,10],[415,8],[1058,8],[1311,8],[1621,8],[1875,8]]},"30":{"position":[[246,8],[750,8]]},"44":{"position":[[123,8]]},"52":{"position":[[27,8],[73,8],[291,8]]},"63":{"position":[[309,8]]},"69":{"position":[[5696,8],[5914,9],[5960,9],[7696,10]]},"95":{"position":[[1190,9]]},"103":{"position":[[44,9]]}}}],["contractu",{"_index":991,"t":{"81":{"position":[[447,11]]}}}],["contrast",{"_index":835,"t":{"69":{"position":[[3549,9]]}}}],["contribut",{"_index":328,"t":{"16":{"position":[[501,14]]},"63":{"position":[[664,10]]},"65":{"position":[[383,12]]}}}],["contributor",{"_index":313,"t":{"16":{"position":[[197,12],[349,12]]}}}],["control",{"_index":921,"t":{"73":{"position":[[96,11]]},"77":{"position":[[780,7]]},"83":{"position":[[522,10]]},"101":{"position":[[443,7]]}}}],["controversi",{"_index":1144,"t":{"111":{"position":[[113,11]]}}}],["conveni",{"_index":232,"t":{"10":{"position":[[196,12]]}}}],["convent",{"_index":675,"t":{"56":{"position":[[280,11]]}}}],["cooki",{"_index":972,"t":{"77":{"position":[[558,7],[595,7],[799,7]]}}}],["copi",{"_index":1003,"t":{"83":{"position":[[448,4]]},"99":{"position":[[162,5]]}}}],["core",{"_index":298,"t":{"12":{"position":[[270,4]]},"23":{"position":[[174,4]]}}}],["correct",{"_index":678,"t":{"56":{"position":[[467,7]]},"83":{"position":[[315,7]]}}}],["correspond",{"_index":174,"t":{"6":{"position":[[1290,13]]}}}],["corrupt",{"_index":9,"t":{"2":{"position":[[87,10]]}}}],["cost",{"_index":163,"t":{"6":{"position":[[981,4]]},"10":{"position":[[338,4]]},"69":{"position":[[6879,4]]},"103":{"position":[[141,4]]},"111":{"position":[[373,4]]}}}],["count",{"_index":437,"t":{"27":{"position":[[330,6]]},"40":{"position":[[524,8]]}}}],["counterpart",{"_index":708,"t":{"63":{"position":[[223,13]]}}}],["countri",{"_index":987,"t":{"81":{"position":[[248,9]]}}}],["court",{"_index":1139,"t":{"109":{"position":[[93,5]]},"111":{"position":[[530,5],[1488,6]]}}}],["cover",{"_index":512,"t":{"32":{"position":[[344,5]]},"113":{"position":[[27,5]]}}}],["creat",{"_index":259,"t":{"10":{"position":[[661,7]]},"23":{"position":[[122,6]]},"65":{"position":[[26,6]]},"69":{"position":[[1874,7],[3599,6]]},"95":{"position":[[1136,8]]}}}],["creativ",{"_index":1104,"t":{"99":{"position":[[54,8]]}}}],["critic",{"_index":853,"t":{"69":{"position":[[4618,8]]}}}],["cross",{"_index":653,"t":{"50":{"position":[[371,5]]}}}],["crucial",{"_index":619,"t":{"46":{"position":[[132,7]]},"69":{"position":[[1176,7]]}}}],["cryptographi",{"_index":308,"t":{"16":{"position":[[111,12]]}}}],["current",{"_index":150,"t":{"6":{"position":[[699,9]]},"20":{"position":[[15,9]]},"36":{"position":[[15,9]]},"38":{"position":[[364,9]]},"56":{"position":[[0,7],[238,7]]},"59":{"position":[[9,9],[259,7]]},"63":{"position":[[165,9]]},"69":{"position":[[3016,9],[4364,9],[4396,9],[6362,7]]},"97":{"position":[[74,7]]}}}],["d/c",{"_index":635,"t":{"48":{"position":[[86,3]]}}}],["da",{"_index":510,"t":{"32":{"position":[[314,3],[378,3]]}}}],["dagger",{"_index":682,"t":{"59":{"position":[[70,7],[229,7]]}}}],["damag",{"_index":785,"t":{"69":{"position":[[1386,8],[1999,8],[2415,8],[2492,6]]},"103":{"position":[[231,7],[447,8]]},"105":{"position":[[81,7]]}}}],["data",{"_index":3,"t":{"2":{"position":[[28,4],[235,4],[506,4],[539,4],[617,4],[682,4]]},"4":{"position":[[663,5]]},"6":{"position":[[519,4],[862,5],[1086,5],[1173,4],[1257,4],[1831,4]]},"8":{"position":[[25,4]]},"10":{"position":[[227,4],[297,4],[420,4],[457,5],[584,4],[967,4]]},"12":{"position":[[176,4]]},"32":{"position":[[186,4],[203,5]]},"38":{"position":[[281,5]]},"40":{"position":[[142,5]]},"44":{"position":[[182,5],[476,4]]},"61":{"position":[[215,4],[463,4]]},"63":{"position":[[75,4],[356,5],[512,4]]},"65":{"position":[[90,4],[156,4]]},"69":{"position":[[119,4],[391,4],[617,4],[726,4],[834,4],[851,4],[895,4],[1064,5],[1157,4],[1213,4],[1290,4],[1320,4],[1449,5],[1473,4],[1546,4],[1604,4],[1649,4],[1768,4],[1932,5],[1961,4],[2061,4],[2169,4],[2226,4],[2352,4],[2389,4],[2632,5],[2744,4],[2902,5],[3180,4],[3220,4],[3277,4],[3400,4],[3464,4],[3519,4],[3650,4],[3774,4],[3971,4],[4071,4],[4511,4],[4574,4],[4768,4],[4841,4],[5230,4],[5323,5],[5371,4],[6541,4],[6795,4]]},"73":{"position":[[86,4]]},"75":{"position":[[73,4],[150,4],[302,4],[361,5],[514,4],[1147,5]]},"77":{"position":[[54,5],[106,4]]},"79":{"position":[[31,4],[165,4]]},"81":{"position":[[50,4],[134,4],[217,4],[491,4],[609,4]]},"83":{"position":[[93,4],[199,4],[347,4],[412,4],[470,5],[517,4],[597,4],[873,5],[917,4],[1005,4]]}}}],["dataset",{"_index":431,"t":{"27":{"position":[[273,7]]},"52":{"position":[[191,9]]}}}],["datastor",{"_index":568,"t":{"40":{"position":[[378,9]]}}}],["datastore/pull/58",{"_index":570,"t":{"40":{"position":[[463,17]]}}}],["date",{"_index":730,"t":{"65":{"position":[[455,4]]}}}],["day",{"_index":1168,"t":{"111":{"position":[[1082,4]]}}}],["de",{"_index":245,"t":{"10":{"position":[[433,2]]}}}],["deal",{"_index":664,"t":{"52":{"position":[[218,4]]}}}],["debug",{"_index":411,"t":{"27":{"position":[[39,9]]},"50":{"position":[[8,9]]},"54":{"position":[[97,9]]}}}],["decentr",{"_index":746,"t":{"69":{"position":[[44,13],[142,17],[2984,13],[3369,16]]}}}],["decentralis",{"_index":7,"t":{"2":{"position":[[62,14],[442,13]]},"8":{"position":[[11,13]]},"10":{"position":[[695,14],[1093,13],[1243,13]]},"12":{"position":[[53,13]]},"63":{"position":[[209,13]]},"65":{"position":[[35,13]]}}}],["decis",{"_index":1175,"t":{"111":{"position":[[1456,8]]}}}],["deem",{"_index":988,"t":{"81":{"position":[[320,6]]},"111":{"position":[[1396,6]]}}}],["defin",{"_index":658,"t":{"52":{"position":[[82,7]]},"113":{"position":[[378,7]]}}}],["degre",{"_index":1087,"t":{"97":{"position":[[505,6],[1032,6]]}}}],["delet",{"_index":435,"t":{"27":{"position":[[311,8]]},"40":{"position":[[503,8]]},"50":{"position":[[401,6]]}}}],["deliv",{"_index":687,"t":{"59":{"position":[[169,7]]},"61":{"position":[[81,7]]}}}],["demand",{"_index":87,"t":{"4":{"position":[[333,6]]},"6":{"position":[[123,7],[460,8]]},"69":{"position":[[6370,8]]}}}],["demo",{"_index":340,"t":{"18":{"position":[[82,4]]}}}],["deniabl",{"_index":21,"t":{"2":{"position":[[214,11]]}}}],["depend",{"_index":887,"t":{"69":{"position":[[6349,9]]}}}],["deploy",{"_index":452,"t":{"30":{"position":[[255,8]]},"46":{"position":[[53,6]]},"48":{"position":[[46,10],[206,6],[247,6]]},"52":{"position":[[36,8]]},"61":{"position":[[267,6]]}}}],["deriv",{"_index":460,"t":{"30":{"position":[[431,7],[468,7]]}}}],["describ",{"_index":700,"t":{"61":{"position":[[114,10]]},"95":{"position":[[1483,9]]},"97":{"position":[[1063,9],[1131,9]]}}}],["descript",{"_index":1085,"t":{"97":{"position":[[289,13]]}}}],["deseri",{"_index":486,"t":{"30":{"position":[[1027,11]]}}}],["design",{"_index":500,"t":{"32":{"position":[[101,6],[150,6],[405,6]]},"69":{"position":[[373,8],[3575,6],[4799,6]]}}}],["desir",{"_index":268,"t":{"10":{"position":[[888,9]]}}}],["detail",{"_index":79,"t":{"4":{"position":[[221,8]]},"56":{"position":[[201,7]]},"61":{"position":[[63,8]]},"75":{"position":[[1213,7]]},"97":{"position":[[313,8]]}}}],["detect",{"_index":830,"t":{"69":{"position":[[3230,10],[3660,10],[3784,10]]}}}],["determin",{"_index":677,"t":{"56":{"position":[[451,11]]}}}],["dev",{"_index":518,"t":{"34":{"position":[[10,3]]}}}],["develop",{"_index":81,"t":{"4":{"position":[[241,11]]},"16":{"position":[[9,9],[63,11]]},"18":{"position":[[344,11]]},"20":{"position":[[0,11]]},"34":{"position":[[65,11],[191,11]]},"36":{"position":[[0,11]]},"42":{"position":[[164,10]]},"46":{"position":[[223,11]]},"50":{"position":[[89,9]]},"61":{"position":[[134,7],[199,7],[298,7],[348,7]]},"65":{"position":[[259,11]]},"97":{"position":[[353,11],[649,13],[702,11]]}}}],["devic",{"_index":128,"t":{"6":{"position":[[201,7]]},"69":{"position":[[7176,8]]},"77":{"position":[[583,7]]}}}],["devnet",{"_index":701,"t":{"61":{"position":[[167,6]]}}}],["dht",{"_index":501,"t":{"32":{"position":[[108,3]]},"50":{"position":[[220,3]]}}}],["differ",{"_index":120,"t":{"6":{"position":[[56,9]]},"18":{"position":[[474,9]]},"20":{"position":[[120,9]]},"44":{"position":[[304,9]]},"69":{"position":[[271,9],[1342,9],[4919,9]]}}}],["differenti",{"_index":35,"t":{"2":{"position":[[392,13]]}}}],["diffus",{"_index":513,"t":{"32":{"position":[[355,9]]}}}],["directli",{"_index":973,"t":{"77":{"position":[[610,8]]}}}],["disappear",{"_index":424,"t":{"27":{"position":[[197,11]]}}}],["disclaim",{"_index":1042,"t":{"95":{"position":[[115,8],[639,11]]}}}],["discord",{"_index":735,"t":{"65":{"position":[[548,7]]}}}],["discourag",{"_index":97,"t":{"4":{"position":[[504,10]]}}}],["discret",{"_index":1040,"t":{"95":{"position":[[91,10],[894,10]]},"97":{"position":[[1415,11]]}}}],["discuss",{"_index":844,"t":{"69":{"position":[[4161,10]]}}}],["disk",{"_index":391,"t":{"23":{"position":[[232,4]]}}}],["disput",{"_index":1137,"t":{"109":{"position":[[53,8]]},"111":{"position":[[16,9],[338,8],[682,7],[828,8],[880,7],[922,8],[1047,7],[1118,8],[1141,7]]}}}],["disrupt",{"_index":267,"t":{"10":{"position":[[871,12]]}}}],["distinct",{"_index":365,"t":{"20":{"position":[[43,8]]},"36":{"position":[[43,8]]}}}],["distinguish",{"_index":825,"t":{"69":{"position":[[3051,13]]}}}],["distribut",{"_index":305,"t":{"16":{"position":[[75,11]]},"69":{"position":[[2311,11],[3185,13],[3282,12],[3405,13]]},"99":{"position":[[179,10]]}}}],["document",{"_index":354,"t":{"18":{"position":[[291,14]]},"89":{"position":[[117,8]]},"113":{"position":[[930,8]]}}}],["doesn't",{"_index":809,"t":{"69":{"position":[[2435,7]]}}}],["doesn’t",{"_index":949,"t":{"75":{"position":[[1108,7]]},"83":{"position":[[733,7]]}}}],["domicil",{"_index":928,"t":{"73":{"position":[[218,8]]},"93":{"position":[[158,8]]}}}],["domin",{"_index":220,"t":{"10":{"position":[[32,9]]}}}],["don't",{"_index":816,"t":{"69":{"position":[[2609,5],[5882,5]]}}}],["don’t",{"_index":940,"t":{"75":{"position":[[315,5]]}}}],["doubl",{"_index":160,"t":{"6":{"position":[[943,6]]}}}],["down",{"_index":426,"t":{"27":{"position":[[238,4]]}}}],["draft",{"_index":427,"t":{"27":{"position":[[243,5]]}}}],["draw",{"_index":965,"t":{"77":{"position":[[341,4]]}}}],["drawback",{"_index":236,"t":{"10":{"position":[[267,10]]}}}],["driven",{"_index":83,"t":{"4":{"position":[[291,6]]}}}],["drop",{"_index":819,"t":{"69":{"position":[[2693,5]]}}}],["due",{"_index":447,"t":{"30":{"position":[[83,3]]},"56":{"position":[[34,3]]}}}],["dummi",{"_index":453,"t":{"30":{"position":[[266,5]]}}}],["durabl",{"_index":2,"t":{"2":{"position":[[20,7],[273,10],[544,10],[622,10]]},"6":{"position":[[449,10]]},"8":{"position":[[108,10]]},"10":{"position":[[972,10],[1364,10]]},"12":{"position":[[44,8]]},"59":{"position":[[368,10]]},"63":{"position":[[109,10]]},"65":{"position":[[49,10],[178,10]]},"69":{"position":[[111,7],[396,11],[549,10],[731,10],[839,11],[856,10],[962,10],[1162,10],[4076,11]]}}}],["durat",{"_index":175,"t":{"6":{"position":[[1320,8]]}}}],["dynam",{"_index":503,"t":{"32":{"position":[[178,7]]}}}],["each",{"_index":118,"t":{"6":{"position":[[42,4],[135,4]]},"36":{"position":[[143,4]]},"63":{"position":[[578,4]]},"97":{"position":[[1303,4]]}}}],["earli",{"_index":277,"t":{"10":{"position":[[1149,5]]}}}],["econom",{"_index":714,"t":{"63":{"position":[[628,8]]},"69":{"position":[[661,8],[4042,8]]}}}],["edonkey",{"_index":279,"t":{"10":{"position":[[1187,7]]}}}],["effect",{"_index":577,"t":{"42":{"position":[[199,11]]},"87":{"position":[[175,9]]},"107":{"position":[[207,9]]},"111":{"position":[[359,9],[378,9]]},"113":{"position":[[681,7]]}}}],["effici",{"_index":30,"t":{"2":{"position":[[346,10],[496,9],[672,9],[815,9]]},"10":{"position":[[1282,9]]},"42":{"position":[[183,11]]},"46":{"position":[[90,11]]},"63":{"position":[[408,9]]},"69":{"position":[[2534,9],[3390,9],[3505,10],[3751,9]]}}}],["effort",{"_index":522,"t":{"34":{"position":[[77,7]]},"40":{"position":[[153,6],[227,8]]},"44":{"position":[[536,8]]},"56":{"position":[[125,7]]},"111":{"position":[[733,7],[782,7]]}}}],["eg",{"_index":751,"t":{"69":{"position":[[316,4]]}}}],["elast",{"_index":642,"t":{"50":{"position":[[99,7]]}}}],["eleven",{"_index":769,"t":{"69":{"position":[[976,6]]}}}],["emb",{"_index":968,"t":{"77":{"position":[[404,5]]}}}],["embed",{"_index":979,"t":{"77":{"position":[[870,9]]}}}],["emerg",{"_index":879,"t":{"69":{"position":[[6210,8]]}}}],["enabl",{"_index":90,"t":{"4":{"position":[[411,8]]},"6":{"position":[[156,8]]}}}],["encod",{"_index":763,"t":{"69":{"position":[[686,8]]}}}],["encourag",{"_index":57,"t":{"2":{"position":[[743,9]]},"4":{"position":[[343,9]]}}}],["encrypt",{"_index":649,"t":{"50":{"position":[[304,10]]}}}],["end",{"_index":527,"t":{"34":{"position":[[135,3]]},"54":{"position":[[126,3],[133,3]]},"59":{"position":[[146,3],[399,3]]}}}],["endomorph",{"_index":506,"t":{"32":{"position":[[230,12]]}}}],["endors",{"_index":1113,"t":{"101":{"position":[[260,8]]}}}],["endpoint",{"_index":541,"t":{"38":{"position":[[258,9],[382,9],[537,9]]}}}],["enforc",{"_index":1143,"t":{"111":{"position":[[51,11],[1472,8]]},"113":{"position":[[703,7],[798,7]]}}}],["engag",{"_index":889,"t":{"69":{"position":[[6488,6]]}}}],["engin",{"_index":5,"t":{"2":{"position":[[41,6]]},"14":{"position":[[15,8]]},"63":{"position":[[88,6]]},"65":{"position":[[60,6]]},"69":{"position":[[6030,7]]}}}],["engine'",{"_index":294,"t":{"12":{"position":[[189,8]]}}}],["english",{"_index":1184,"t":{"111":{"position":[[1804,8]]}}}],["enhanc",{"_index":834,"t":{"69":{"position":[[3491,9]]},"75":{"position":[[820,7]]},"77":{"position":[[489,8]]}}}],["enough",{"_index":813,"t":{"69":{"position":[[2485,6]]}}}],["ensur",{"_index":75,"t":{"4":{"position":[[173,6],[794,6]]},"44":{"position":[[383,8]]},"46":{"position":[[283,8],[360,8]]},"69":{"position":[[2201,8],[4064,6]]},"75":{"position":[[781,6]]},"81":{"position":[[470,6]]}}}],["enter",{"_index":1032,"t":{"91":{"position":[[100,7]]}}}],["entir",{"_index":805,"t":{"69":{"position":[[2153,6]]},"113":{"position":[[37,6]]}}}],["entireti",{"_index":865,"t":{"69":{"position":[[5547,8]]}}}],["entiti",{"_index":923,"t":{"73":{"position":[[121,6]]},"93":{"position":[[61,6]]}}}],["entre",{"_index":895,"t":{"69":{"position":[[7021,6]]}}}],["environ",{"_index":641,"t":{"50":{"position":[[69,11]]},"97":{"position":[[678,12]]}}}],["ephemer",{"_index":888,"t":{"69":{"position":[[6435,9]]}}}],["epic",{"_index":370,"t":{"20":{"position":[[232,6]]},"46":{"position":[[202,5]]}}}],["equit",{"_index":1118,"t":{"103":{"position":[[102,9]]}}}],["erasur",{"_index":39,"t":{"2":{"position":[[471,7]]},"6":{"position":[[607,7],[1728,7]]},"30":{"position":[[94,7]]},"38":{"position":[[305,7]]},"56":{"position":[[349,7]]},"59":{"position":[[323,7]]},"63":{"position":[[379,7]]},"69":{"position":[[794,7],[1267,7],[1505,7],[1569,7]]}}}],["essenc",{"_index":1107,"t":{"99":{"position":[[125,7]]}}}],["establish",{"_index":242,"t":{"10":{"position":[[387,11]]},"63":{"position":[[252,9]]}}}],["estim",{"_index":1081,"t":{"97":{"position":[[96,10]]}}}],["etc",{"_index":227,"t":{"10":{"position":[[125,4]]}}}],["ether",{"_index":455,"t":{"30":{"position":[[335,7],[408,6],[600,6],[855,6]]}}}],["ethereum",{"_index":704,"t":{"61":{"position":[[508,8]]},"69":{"position":[[5951,8]]}}}],["eur",{"_index":1127,"t":{"103":{"position":[[524,3]]}}}],["euro",{"_index":1129,"t":{"103":{"position":[[545,7]]}}}],["europ",{"_index":993,"t":{"81":{"position":[[558,7]]}}}],["european",{"_index":985,"t":{"81":{"position":[[161,8],[349,8],[626,8]]}}}],["even",{"_index":780,"t":{"69":{"position":[[1199,4],[6430,4]]},"103":{"position":[[391,4]]}}}],["event",{"_index":982,"t":{"81":{"position":[[99,5],[573,6]]},"103":{"position":[[463,6]]}}}],["everyon",{"_index":732,"t":{"65":{"position":[[501,9]]}}}],["evict",{"_index":182,"t":{"6":{"position":[[1475,6]]}}}],["except",{"_index":477,"t":{"30":{"position":[[912,10]]}}}],["exception",{"_index":203,"t":{"8":{"position":[[61,13]]}}}],["exchang",{"_index":892,"t":{"69":{"position":[[6699,8]]}}}],["execut",{"_index":874,"t":{"69":{"position":[[6006,8]]}}}],["exist",{"_index":36,"t":{"2":{"position":[[417,8]]},"10":{"position":[[744,8],[1084,8]]}}}],["expand",{"_index":728,"t":{"65":{"position":[[412,9]]},"113":{"position":[[394,7]]}}}],["expect",{"_index":686,"t":{"59":{"position":[[126,8]]},"69":{"position":[[2807,8],[6186,6],[6567,6],[6925,8],[7069,6]]},"95":{"position":[[1149,12]]},"97":{"position":[[82,13]]}}}],["expens",{"_index":1134,"t":{"105":{"position":[[93,9]]}}}],["experi",{"_index":231,"t":{"10":{"position":[[181,10]]},"77":{"position":[[704,10]]}}}],["experienc",{"_index":303,"t":{"16":{"position":[[29,11]]}}}],["expert",{"_index":307,"t":{"16":{"position":[[95,8]]}}}],["expiri",{"_index":429,"t":{"27":{"position":[[262,6]]}}}],["explain",{"_index":997,"t":{"83":{"position":[[3,9]]}}}],["export",{"_index":983,"t":{"81":{"position":[[113,6]]}}}],["expos",{"_index":545,"t":{"38":{"position":[[374,7]]}}}],["express",{"_index":1044,"t":{"95":{"position":[[152,7],[1374,7]]}}}],["extens",{"_index":848,"t":{"69":{"position":[[4417,9]]}}}],["extent",{"_index":964,"t":{"77":{"position":[[207,6]]},"89":{"position":[[7,6]]},"95":{"position":[[677,6]]},"101":{"position":[[7,6]]},"103":{"position":[[608,6]]}}}],["extra",{"_index":586,"t":{"42":{"position":[[520,5]]},"69":{"position":[[1643,5],[1816,5]]}}}],["extrem",{"_index":295,"t":{"12":{"position":[[198,9]]}}}],["face",{"_index":266,"t":{"10":{"position":[[855,4]]}}}],["facto",{"_index":246,"t":{"10":{"position":[[436,5]]}}}],["factual",{"_index":757,"t":{"69":{"position":[[511,7]]}}}],["fail",{"_index":180,"t":{"6":{"position":[[1432,5]]},"30":{"position":[[69,7]]},"69":{"position":[[3942,5],[5398,5],[5487,5]]},"113":{"position":[[695,4]]}}}],["failur",{"_index":140,"t":{"6":{"position":[[482,7]]},"52":{"position":[[236,9]]},"69":{"position":[[217,7],[428,9]]}}}],["faithfulli",{"_index":600,"t":{"44":{"position":[[144,10]]}}}],["fallen",{"_index":252,"t":{"10":{"position":[[561,6]]}}}],["fast",{"_index":692,"t":{"59":{"position":[[318,4]]}}}],["faster",{"_index":572,"t":{"42":{"position":[[15,6]]}}}],["fathom",{"_index":941,"t":{"75":{"position":[[616,6],[913,6],[959,6],[1047,6],[1153,6],[1254,6]]}}}],["faulti",{"_index":188,"t":{"6":{"position":[[1655,6]]}}}],["faultless",{"_index":199,"t":{"6":{"position":[[1894,9]]}}}],["fdpic",{"_index":1014,"t":{"83":{"position":[[962,8]]}}}],["feasibl",{"_index":716,"t":{"63":{"position":[[651,12]]}}}],["featur",{"_index":33,"t":{"2":{"position":[[372,8]]},"69":{"position":[[3135,9],[3307,8]]},"77":{"position":[[160,8],[260,9]]},"97":{"position":[[339,9]]}}}],["februari",{"_index":913,"t":{"71":{"position":[[29,8]]},"91":{"position":[[30,8]]}}}],["feder",{"_index":1012,"t":{"83":{"position":[[909,7]]}}}],["fee",{"_index":192,"t":{"6":{"position":[[1722,5]]},"69":{"position":[[7028,4]]},"105":{"position":[[124,5]]},"111":{"position":[[1837,4],[1921,4]]}}}],["few",{"_index":346,"t":{"18":{"position":[[175,3]]},"69":{"position":[[3474,3]]}}}],["ffi",{"_index":402,"t":{"25":{"position":[[37,3],[82,3]]}}}],["figur",{"_index":419,"t":{"27":{"position":[[140,6]]},"30":{"position":[[877,6]]},"56":{"position":[[375,8]]}}}],["file",{"_index":68,"t":{"4":{"position":[[78,4]]},"10":{"position":[[778,4],[1159,4]]},"23":{"position":[[11,5]]},"27":{"position":[[167,4]]},"65":{"position":[[146,5]]},"69":{"position":[[1111,4]]},"83":{"position":[[883,4]]},"111":{"position":[[1883,7]]}}}],["final",{"_index":711,"t":{"63":{"position":[[528,8]]},"111":{"position":[[1173,7]]}}}],["finalis",{"_index":101,"t":{"4":{"position":[[561,10]]}}}],["financi",{"_index":1071,"t":{"95":{"position":[[1554,10]]}}}],["find",{"_index":159,"t":{"6":{"position":[[843,5]]},"69":{"position":[[6522,5]]}}}],["finish",{"_index":425,"t":{"27":{"position":[[218,6]]},"30":{"position":[[224,8],[311,8]]}}}],["finit",{"_index":62,"t":{"2":{"position":[[838,6]]}}}],["first",{"_index":185,"t":{"6":{"position":[[1557,5]]},"59":{"position":[[26,5],[245,5]]},"63":{"position":[[237,6]]},"111":{"position":[[707,5]]}}}],["fit",{"_index":1047,"t":{"95":{"position":[[236,7]]}}}],["fix",{"_index":459,"t":{"30":{"position":[[382,5]]},"42":{"position":[[615,5]]},"50":{"position":[[224,5],[267,4],[319,4],[385,3]]},"69":{"position":[[2443,3]]}}}],["flag",{"_index":428,"t":{"27":{"position":[[249,4]]}}}],["focu",{"_index":524,"t":{"34":{"position":[[92,5]]},"56":{"position":[[41,5]]}}}],["focus",{"_index":532,"t":{"38":{"position":[[28,7]]},"40":{"position":[[37,7]]}}}],["fold",{"_index":497,"t":{"32":{"position":[[59,8]]}}}],["follow",{"_index":84,"t":{"4":{"position":[[305,9]]},"10":{"position":[[257,9]]},"20":{"position":[[180,9]]},"34":{"position":[[152,9]]},"46":{"position":[[184,9]]},"65":{"position":[[511,6]]},"75":{"position":[[495,9]]},"77":{"position":[[368,10]]},"99":{"position":[[371,9]]},"111":{"position":[[417,9]]}}}],["forc",{"_index":1174,"t":{"111":{"position":[[1373,6]]},"113":{"position":[[671,5]]}}}],["forecast",{"_index":1082,"t":{"97":{"position":[[107,10]]}}}],["form",{"_index":291,"t":{"12":{"position":[[144,4]]},"69":{"position":[[7498,4]]},"81":{"position":[[399,5],[438,5]]},"95":{"position":[[1165,7]]}}}],["format",{"_index":1109,"t":{"99":{"position":[[209,6]]}}}],["formatit",{"_index":449,"t":{"30":{"position":[[197,8]]}}}],["formula",{"_index":797,"t":{"69":{"position":[[1901,8]]}}}],["forthcom",{"_index":685,"t":{"59":{"position":[[97,11]]}}}],["forward",{"_index":519,"t":{"34":{"position":[[29,7]]},"48":{"position":[[23,10]]},"97":{"position":[[29,7],[205,7],[541,7]]}}}],["foundat",{"_index":217,"t":{"8":{"position":[[307,12]]},"10":{"position":[[1020,11]]},"61":{"position":[[517,10]]}}}],["four",{"_index":31,"t":{"2":{"position":[[363,4]]}}}],["free",{"_index":739,"t":{"67":{"position":[[64,4]]},"69":{"position":[[6993,4]]}}}],["frobeniu",{"_index":505,"t":{"32":{"position":[[220,9]]}}}],["front",{"_index":369,"t":{"20":{"position":[[168,7]]}}}],["frontend",{"_index":551,"t":{"38":{"position":[[578,8],[649,8]]}}}],["full",{"_index":845,"t":{"69":{"position":[[4223,4],[4306,4],[4763,4],[4888,4]]},"99":{"position":[[323,4]]},"113":{"position":[[666,4]]}}}],["fulli",{"_index":6,"t":{"2":{"position":[[56,5]]}}}],["function",{"_index":114,"t":{"4":{"position":[[857,11]]},"42":{"position":[[60,8]]},"44":{"position":[[252,10],[428,9]]},"56":{"position":[[217,13]]},"75":{"position":[[802,13]]},"91":{"position":[[207,13]]},"97":{"position":[[322,16]]}}}],["further",{"_index":1164,"t":{"111":{"position":[[1026,7]]}}}],["furthermor",{"_index":251,"t":{"10":{"position":[[521,12]]}}}],["futur",{"_index":1068,"t":{"95":{"position":[[1436,6]]}}}],["gap",{"_index":260,"t":{"10":{"position":[[671,3]]}}}],["gener",{"_index":148,"t":{"6":{"position":[[629,10],[1573,9]]},"16":{"position":[[269,7]]},"44":{"position":[[50,9],[290,9],[593,10]]},"79":{"position":[[5,7]]},"97":{"position":[[192,8]]}}}],["getaddress",{"_index":462,"t":{"30":{"position":[[476,10]]}}}],["geth",{"_index":640,"t":{"48":{"position":[[254,4]]}}}],["github",{"_index":330,"t":{"16":{"position":[[537,6]]},"40":{"position":[[268,7]]}}}],["give",{"_index":18,"t":{"2":{"position":[[191,6]]}}}],["gmbh",{"_index":932,"t":{"73":{"position":[[286,4]]},"93":{"position":[[227,4]]}}}],["gnutella",{"_index":280,"t":{"10":{"position":[[1199,9]]}}}],["go",{"_index":799,"t":{"69":{"position":[[1981,2]]}}}],["goal",{"_index":85,"t":{"4":{"position":[[315,6]]},"32":{"position":[[9,5]]}}}],["good",{"_index":326,"t":{"16":{"position":[[457,5]]},"69":{"position":[[2681,4]]}}}],["googl",{"_index":752,"t":{"69":{"position":[[321,6]]},"75":{"position":[[1085,6]]},"77":{"position":[[453,6],[745,6]]}}}],["govern",{"_index":1033,"t":{"91":{"position":[[137,6]]},"101":{"position":[[132,6]]},"109":{"position":[[10,7]]}}}],["groth16",{"_index":509,"t":{"32":{"position":[[288,7]]},"44":{"position":[[737,7],[788,7]]},"56":{"position":[[161,8]]}}}],["group",{"_index":615,"t":{"46":{"position":[[31,5]]}}}],["guarante",{"_index":43,"t":{"2":{"position":[[555,11]]},"6":{"position":[[1355,9]]},"8":{"position":[[119,11]]},"10":{"position":[[983,11],[1375,10]]},"12":{"position":[[233,11]]},"63":{"position":[[120,10]]},"65":{"position":[[189,10]]},"95":{"position":[[1355,10]]}}}],["guarantees—expect",{"_index":694,"t":{"59":{"position":[[379,19]]}}}],["guarantees—up",{"_index":26,"t":{"2":{"position":[[284,13]]}}}],["halt",{"_index":669,"t":{"56":{"position":[[27,6]]}}}],["handl",{"_index":476,"t":{"30":{"position":[[905,6]]},"38":{"position":[[247,6]]},"40":{"position":[[114,8]]},"69":{"position":[[4550,6]]}}}],["hardwar",{"_index":125,"t":{"6":{"position":[[114,8]]}}}],["harm",{"_index":817,"t":{"69":{"position":[[2615,4]]},"101":{"position":[[423,8]]}}}],["harmless",{"_index":1132,"t":{"105":{"position":[[35,8]]}}}],["hash",{"_index":574,"t":{"42":{"position":[[55,4]]},"44":{"position":[[247,4]]},"56":{"position":[[259,4]]}}}],["have",{"_index":828,"t":{"69":{"position":[[3145,6]]}}}],["head",{"_index":1200,"t":{"113":{"position":[[268,8]]}}}],["heard",{"_index":1152,"t":{"111":{"position":[[495,5]]}}}],["held",{"_index":1116,"t":{"103":{"position":[[15,4]]},"111":{"position":[[1519,4]]},"113":{"position":[[532,4]]}}}],["help",{"_index":319,"t":{"16":{"position":[[365,4]]},"69":{"position":[[1938,7]]}}}],["here",{"_index":332,"t":{"16":{"position":[[549,5]]},"18":{"position":[[448,4]]},"38":{"position":[[604,5]]},"75":{"position":[[1007,5]]}}}],["herein",{"_index":1062,"t":{"95":{"position":[[994,6],[1257,6],[1493,7],[1527,6]]},"97":{"position":[[825,6],[1004,7]]},"111":{"position":[[1422,6]]}}}],["high",{"_index":241,"t":{"10":{"position":[[333,4]]},"69":{"position":[[137,4],[721,4],[2212,4],[3354,4]]},"97":{"position":[[500,4],[1027,4]]}}}],["highli",{"_index":230,"t":{"10":{"position":[[157,6]]},"16":{"position":[[22,6]]},"69":{"position":[[104,6]]}}}],["highlight",{"_index":529,"t":{"34":{"position":[[203,11]]}}}],["histori",{"_index":243,"t":{"10":{"position":[[399,7]]},"69":{"position":[[519,7],[4244,7],[4311,7],[4627,7],[4773,7],[4893,8]]}}}],["hold",{"_index":1131,"t":{"105":{"position":[[27,4]]}}}],["host",{"_index":19,"t":{"2":{"position":[[198,5]]},"6":{"position":[[1884,6]]},"63":{"position":[[345,4],[495,5]]}}}],["https://api.codex.storag",{"_index":549,"t":{"38":{"position":[[452,25]]}}}],["https://creativecommons.org/licenses/by/4.0",{"_index":1111,"t":{"99":{"position":[[390,45]]}}}],["https://github.com/codex",{"_index":554,"t":{"38":{"position":[[610,24]]},"40":{"position":[[311,24],[426,24]]},"42":{"position":[[257,24],[311,24],[365,24],[440,24],[560,24],[672,24]]},"44":{"position":[[610,24],[751,24]]},"50":{"position":[[128,24]]},"54":{"position":[[45,24]]}}}],["https://usefathom.com",{"_index":947,"t":{"75":{"position":[[1013,23]]}}}],["https://vimeo.com/884370956/e8a32a58c8?share=copi",{"_index":645,"t":{"50":{"position":[[170,49]]}}}],["hundr",{"_index":617,"t":{"46":{"position":[[68,8]]},"103":{"position":[[537,7]]}}}],["ideat",{"_index":517,"t":{"32":{"position":[[428,8]]}}}],["identifi",{"_index":944,"t":{"75":{"position":[[691,11]]},"77":{"position":[[619,8]]},"113":{"position":[[277,11]]}}}],["ii",{"_index":1160,"t":{"111":{"position":[[965,4]]}}}],["immedi",{"_index":1024,"t":{"87":{"position":[[185,11]]},"107":{"position":[[217,11]]}}}],["immin",{"_index":670,"t":{"56":{"position":[[85,8]]}}}],["imperson",{"_index":904,"t":{"69":{"position":[[7439,13]]}}}],["implement",{"_index":384,"t":{"23":{"position":[[156,12]]},"32":{"position":[[253,14]]},"38":{"position":[[105,15]]},"42":{"position":[[131,14]]},"44":{"position":[[559,14],[719,14]]},"56":{"position":[[50,12]]},"59":{"position":[[308,9]]},"69":{"position":[[757,14]]},"79":{"position":[[67,11]]}}}],["impli",{"_index":1045,"t":{"95":{"position":[[163,8],[1385,7]]},"101":{"position":[[246,5]]}}}],["improv",{"_index":276,"t":{"10":{"position":[[1136,7]]},"27":{"position":[[428,12]]},"32":{"position":[[46,12],[112,12],[328,12]]}}}],["incent",{"_index":73,"t":{"4":{"position":[[148,9],[268,9],[582,9],[820,10]]},"10":{"position":[[945,10]]},"32":{"position":[[140,9],[167,10]]},"69":{"position":[[670,11],[4051,9],[6072,10]]}}}],["incentiv",{"_index":56,"t":{"2":{"position":[[723,16]]},"4":{"position":[[0,15]]},"61":{"position":[[382,15]]},"63":{"position":[[553,13]]}}}],["incid",{"_index":258,"t":{"10":{"position":[[646,9]]},"67":{"position":[[127,9]]}}}],["incident",{"_index":1123,"t":{"103":{"position":[[202,11]]}}}],["includ",{"_index":457,"t":{"30":{"position":[[362,9]]},"44":{"position":[[328,8]]},"46":{"position":[[352,7]]},"56":{"position":[[133,8]]},"91":{"position":[[181,9]]},"95":{"position":[[172,9]]},"97":{"position":[[243,7],[727,9],[1259,9]]},"99":{"position":[[233,9]]},"101":{"position":[[104,9]]},"105":{"position":[[103,9],[210,9]]},"111":{"position":[[74,8],[1873,9]]}}}],["incorpor",{"_index":837,"t":{"69":{"position":[[3677,12]]},"111":{"position":[[1409,12]]}}}],["increas",{"_index":42,"t":{"2":{"position":[[529,9]]},"4":{"position":[[385,8]]}}}],["increasingli",{"_index":221,"t":{"10":{"position":[[48,12]]}}}],["incumb",{"_index":284,"t":{"10":{"position":[[1400,11]]}}}],["indemnifi",{"_index":1130,"t":{"105":{"position":[[10,9]]}}}],["independ",{"_index":1017,"t":{"85":{"position":[[110,11]]}}}],["index",{"_index":560,"t":{"40":{"position":[[127,8]]}}}],["indic",{"_index":872,"t":{"69":{"position":[[5983,8]]},"75":{"position":[[433,9]]}}}],["individu",{"_index":974,"t":{"77":{"position":[[628,10]]}}}],["industri",{"_index":1084,"t":{"97":{"position":[[168,8]]}}}],["inform",{"_index":854,"t":{"69":{"position":[[4645,11]]},"71":{"position":[[78,6]]},"77":{"position":[[672,11],[887,11]]},"79":{"position":[[191,11]]},"83":{"position":[[937,11]]},"95":{"position":[[1076,13],[1245,11],[1505,11]]},"97":{"position":[[803,11],[982,11],[1246,12]]}}}],["infrastructur",{"_index":366,"t":{"20":{"position":[[80,14]]},"36":{"position":[[84,14]]},"46":{"position":[[16,14]]}}}],["infring",{"_index":1049,"t":{"95":{"position":[[278,12]]}}}],["inher",{"_index":749,"t":{"69":{"position":[[225,8]]}}}],["initi",{"_index":337,"t":{"18":{"position":[[55,11]]},"61":{"position":[[207,7],[429,7]]},"63":{"position":[[298,8]]},"69":{"position":[[2940,11],[7013,7]]}}}],["innat",{"_index":14,"t":{"2":{"position":[[149,8]]}}}],["input",{"_index":613,"t":{"44":{"position":[[587,5]]}}}],["insight",{"_index":953,"t":{"75":{"position":[[1190,9],[1293,8]]}}}],["instanc",{"_index":768,"t":{"69":{"position":[[930,9]]}}}],["instead",{"_index":478,"t":{"30":{"position":[[923,7]]}}}],["institut",{"_index":738,"t":{"67":{"position":[[51,9]]},"111":{"position":[[1275,11]]}}}],["intact",{"_index":787,"t":{"69":{"position":[[1489,7]]}}}],["integr",{"_index":406,"t":{"25":{"position":[[95,11]]},"30":{"position":[[29,11],[137,11],[740,9],[813,11]]},"38":{"position":[[268,12],[504,9]]},"40":{"position":[[561,9]]},"54":{"position":[[11,11]]},"61":{"position":[[326,11]]}}}],["intellectu",{"_index":1050,"t":{"95":{"position":[[294,12]]}}}],["intend",{"_index":115,"t":{"4":{"position":[[872,9]]},"71":{"position":[[66,8]]},"95":{"position":[[1042,8]]}}}],["interact",{"_index":543,"t":{"38":{"position":[[325,12]]},"52":{"position":[[300,13]]},"69":{"position":[[3703,11]]},"77":{"position":[[218,8],[513,8]]}}}],["interest",{"_index":727,"t":{"65":{"position":[[348,10]]},"75":{"position":[[737,8]]}}}],["intermitt",{"_index":896,"t":{"69":{"position":[[7102,12]]}}}],["intern",{"_index":343,"t":{"18":{"position":[[128,8]]},"69":{"position":[[4427,8]]},"99":{"position":[[87,13]]},"111":{"position":[[1325,13],[1972,13]]}}}],["internet",{"_index":223,"t":{"10":{"position":[[77,8]]}}}],["interpret",{"_index":1203,"t":{"113":{"position":[[423,14]]}}}],["interv",{"_index":173,"t":{"6":{"position":[[1281,8]]}}}],["invalid",{"_index":179,"t":{"6":{"position":[[1414,7]]},"69":{"position":[[3985,7]]},"113":{"position":[[537,7]]}}}],["involv",{"_index":102,"t":{"4":{"position":[[607,7]]},"69":{"position":[[1749,8]]}}}],["io",{"_index":392,"t":{"23":{"position":[[237,2]]}}}],["ip",{"_index":638,"t":{"48":{"position":[[186,2]]},"75":{"position":[[549,2],[658,2],[765,2],[871,2]]}}}],["issu",{"_index":372,"t":{"23":{"position":[[17,5]]},"30":{"position":[[391,5]]},"50":{"position":[[47,6]]},"54":{"position":[[115,6]]},"69":{"position":[[2357,7],[7409,6]]}}}],["issuanc",{"_index":665,"t":{"52":{"position":[[269,9]]},"69":{"position":[[7466,8]]}}}],["issues—such",{"_index":265,"t":{"10":{"position":[[822,11]]}}}],["it'",{"_index":859,"t":{"69":{"position":[[5235,4],[6920,4]]}}}],["iter",{"_index":680,"t":{"59":{"position":[[49,10]]}}}],["itself",{"_index":826,"t":{"69":{"position":[[3065,6]]}}}],["join",{"_index":734,"t":{"65":{"position":[[526,4]]}}}],["json",{"_index":442,"t":{"27":{"position":[[494,4]]},"30":{"position":[[415,4],[618,4],[672,4],[986,4]]}}}],["judg",{"_index":1153,"t":{"111":{"position":[[506,6]]}}}],["june",{"_index":300,"t":{"12":{"position":[[304,4]]}}}],["juri",{"_index":1155,"t":{"111":{"position":[[615,4]]}}}],["jurisdict",{"_index":1061,"t":{"95":{"position":[[826,13]]},"111":{"position":[[650,14]]}}}],["katana",{"_index":684,"t":{"59":{"position":[[85,6],[415,7]]}}}],["keep",{"_index":783,"t":{"69":{"position":[[1285,4],[1460,5],[2736,7]]}}}],["kept",{"_index":1181,"t":{"111":{"position":[[1742,4]]}}}],["key",{"_index":32,"t":{"2":{"position":[[368,3]]},"4":{"position":[[42,3]]},"42":{"position":[[425,5]]},"50":{"position":[[315,3],[342,4]]},"69":{"position":[[3131,3]]}}}],["kind",{"_index":759,"t":{"69":{"position":[[541,4]]},"95":{"position":[[146,5]]}}}],["knowledg",{"_index":576,"t":{"42":{"position":[[82,9]]},"65":{"position":[[427,10]]},"69":{"position":[[3728,9]]}}}],["known",{"_index":791,"t":{"69":{"position":[[1786,5]]},"111":{"position":[[2160,5]]}}}],["lack",{"_index":237,"t":{"10":{"position":[[289,4],[1235,5]]}}}],["laid",{"_index":1001,"t":{"83":{"position":[[240,4]]}}}],["landscap",{"_index":219,"t":{"10":{"position":[[19,9]]}}}],["languag",{"_index":1183,"t":{"111":{"position":[[1765,8]]}}}],["larg",{"_index":833,"t":{"69":{"position":[[3478,5]]}}}],["last",{"_index":911,"t":{"71":{"position":[[13,4]]},"91":{"position":[[13,4]]}}}],["later",{"_index":720,"t":{"65":{"position":[[204,5]]}}}],["latest",{"_index":350,"t":{"18":{"position":[[215,6]]}}}],["latter",{"_index":107,"t":{"4":{"position":[[729,6]]}}}],["launch",{"_index":525,"t":{"34":{"position":[[101,9]]},"46":{"position":[[157,6]]},"56":{"position":[[94,6]]}}}],["law",{"_index":1058,"t":{"95":{"position":[[708,4],[976,5]]},"103":{"position":[[639,4]]},"109":{"position":[[6,3],[145,4]]},"111":{"position":[[66,3]]}}}],["lawsuit",{"_index":1192,"t":{"111":{"position":[[2241,7]]}}}],["layer",{"_index":206,"t":{"8":{"position":[[156,5],[221,6],[258,6]]},"12":{"position":[[75,5]]},"63":{"position":[[583,5]]}}}],["lazi",{"_index":50,"t":{"2":{"position":[[645,4]]},"69":{"position":[[813,4],[2247,4],[2284,4]]}}}],["legal",{"_index":927,"t":{"73":{"position":[[212,5]]},"75":{"position":[[199,5]]},"93":{"position":[[152,5]]},"95":{"position":[[431,9],[785,7],[1565,6]]},"103":{"position":[[93,5]]}}}],["legal@free.technolog",{"_index":1027,"t":{"89":{"position":[[89,22]]},"113":{"position":[[902,22]]}}}],["legisl",{"_index":939,"t":{"75":{"position":[[245,12]]},"81":{"position":[[713,12]]},"83":{"position":[[269,12]]}}}],["legitim",{"_index":945,"t":{"75":{"position":[[726,10]]}}}],["let",{"_index":800,"t":{"69":{"position":[[2020,4]]}}}],["level",{"_index":630,"t":{"46":{"position":[[401,5]]},"69":{"position":[[2217,5],[3359,6]]},"81":{"position":[[297,5]]}}}],["liabil",{"_index":1020,"t":{"85":{"position":[[179,9]]},"103":{"position":[[73,10],[484,9],[572,9]]}}}],["liabl",{"_index":1115,"t":{"101":{"position":[[498,6]]},"103":{"position":[[20,6]]}}}],["lib",{"_index":469,"t":{"30":{"position":[[736,3]]}}}],["licenc",{"_index":1108,"t":{"99":{"position":[[138,7],[342,8]]}}}],["licens",{"_index":1028,"t":{"89":{"position":[[129,8]]},"99":{"position":[[101,7]]},"113":{"position":[[942,8]]}}}],["lightweight",{"_index":48,"t":{"2":{"position":[[605,11]]}}}],["limit",{"_index":884,"t":{"69":{"position":[[6284,7]]},"75":{"position":[[10,5]]},"77":{"position":[[19,7]]},"83":{"position":[[40,5]]},"95":{"position":[[190,10]]},"103":{"position":[[513,7],[558,10]]},"105":{"position":[[228,10]]},"111":{"position":[[570,8],[2039,12]]},"113":{"position":[[402,6]]}}}],["line",{"_index":356,"t":{"18":{"position":[[322,5]]}}}],["link",{"_index":323,"t":{"16":{"position":[[418,6]]},"85":{"position":[[37,5]]},"95":{"position":[[613,6]]},"101":{"position":[[39,5],[182,7]]}}}],["liter",{"_index":870,"t":{"69":{"position":[[5931,7]]}}}],["litig",{"_index":1146,"t":{"111":{"position":[[277,10],[474,10]]}}}],["littl",{"_index":781,"t":{"69":{"position":[[1206,6]]}}}],["llc",{"_index":970,"t":{"77":{"position":[[460,4]]}}}],["load",{"_index":147,"t":{"6":{"position":[[599,7]]}}}],["local",{"_index":454,"t":{"30":{"position":[[284,5]]},"38":{"position":[[203,5]]},"69":{"position":[[4332,7]]},"95":{"position":[[970,5]]}}}],["locat",{"_index":790,"t":{"69":{"position":[[1712,9]]}}}],["log",{"_index":450,"t":{"30":{"position":[[210,7]]},"50":{"position":[[114,3]]},"77":{"position":[[730,6]]}}}],["logic",{"_index":659,"t":{"52":{"position":[[98,5]]},"63":{"position":[[44,7]]}}}],["logo",{"_index":207,"t":{"8":{"position":[[169,5],[288,5]]},"12":{"position":[[275,5]]},"69":{"position":[[2786,6],[2850,6],[2881,5],[2934,5]]},"73":{"position":[[135,5],[238,5],[350,8],[417,5]]},"93":{"position":[[75,5],[179,5],[291,8],[368,5]]}}}],["long",{"_index":130,"t":{"6":{"position":[[250,4]]},"56":{"position":[[364,4]]},"69":{"position":[[2091,4],[5111,4]]}}}],["longsword",{"_index":690,"t":{"59":{"position":[[218,10]]},"61":{"position":[[257,9]]}}}],["look",{"_index":317,"t":{"16":{"position":[[332,7]]},"27":{"position":[[337,4]]},"30":{"position":[[782,4]]},"97":{"position":[[37,7],[213,7],[549,7]]}}}],["lookup",{"_index":498,"t":{"32":{"position":[[71,8]]}}}],["lose",{"_index":777,"t":{"69":{"position":[[1057,6],[1097,4],[1192,6],[5537,5]]}}}],["loss",{"_index":54,"t":{"2":{"position":[[706,4]]},"69":{"position":[[622,4],[3225,4],[3655,4],[3779,4]]}}}],["lost",{"_index":784,"t":{"69":{"position":[[1378,4],[2407,4]]},"103":{"position":[[127,4]]}}}],["low",{"_index":149,"t":{"6":{"position":[[684,3]]},"69":{"position":[[2703,4]]}}}],["m",{"_index":804,"t":{"69":{"position":[[2136,2]]}}}],["machin",{"_index":539,"t":{"38":{"position":[[209,8]]}}}],["made",{"_index":1063,"t":{"95":{"position":[[1057,4]]},"99":{"position":[[33,4]]}}}],["magic",{"_index":423,"t":{"27":{"position":[[187,9]]}}}],["main",{"_index":622,"t":{"46":{"position":[[257,4]]}}}],["mainli",{"_index":523,"t":{"34":{"position":[[85,6]]}}}],["mainnet",{"_index":360,"t":{"18":{"position":[[430,7]]}}}],["mainstream",{"_index":312,"t":{"16":{"position":[[166,10]]}}}],["maintain",{"_index":628,"t":{"46":{"position":[[380,9]]},"61":{"position":[[146,8]]},"79":{"position":[[128,8]]}}}],["major",{"_index":254,"t":{"10":{"position":[[578,5]]},"61":{"position":[[46,5]]},"69":{"position":[[6947,8]]}}}],["make",{"_index":158,"t":{"6":{"position":[[803,4]]},"10":{"position":[[1000,4]]},"18":{"position":[[28,4]]},"56":{"position":[[295,4]]},"69":{"position":[[465,6],[2502,4]]},"75":{"position":[[947,4]]},"77":{"position":[[138,6]]},"95":{"position":[[367,4],[716,4]]},"111":{"position":[[97,4],[953,7]]}}}],["malici",{"_index":98,"t":{"4":{"position":[[515,9]]}}}],["manag",{"_index":542,"t":{"38":{"position":[[293,11]]},"69":{"position":[[2343,8]]}}}],["manifest",{"_index":606,"t":{"44":{"position":[[280,9]]}}}],["manner",{"_index":1150,"t":{"111":{"position":[[388,7]]}}}],["market",{"_index":261,"t":{"10":{"position":[[682,6],[1222,6]]},"69":{"position":[[3037,7],[3108,6]]},"97":{"position":[[181,7],[620,6]]}}}],["marketplac",{"_index":72,"t":{"4":{"position":[[130,11],[617,11]]},"16":{"position":[[283,11]]},"20":{"position":[[95,11]]},"30":{"position":[[125,11]]},"36":{"position":[[99,11]]},"38":{"position":[[347,12]]},"44":{"position":[[111,11]]},"52":{"position":[[4,11]]},"59":{"position":[[343,12]]},"61":{"position":[[285,12],[310,11],[360,11]]},"69":{"position":[[3164,11],[3261,11],[3328,11]]}}}],["mathemat",{"_index":796,"t":{"69":{"position":[[1888,12]]}}}],["matter",{"_index":1069,"t":{"95":{"position":[[1475,7]]},"97":{"position":[[437,7],[1123,7]]}}}],["maximis",{"_index":94,"t":{"4":{"position":[[469,8]]}}}],["maximum",{"_index":1056,"t":{"95":{"position":[[669,7]]},"103":{"position":[[600,7]]}}}],["mean",{"_index":767,"t":{"69":{"position":[[867,5],[1005,5],[2075,7],[7659,5]]},"81":{"position":[[197,5]]},"91":{"position":[[375,5]]},"111":{"position":[[43,7]]},"113":{"position":[[760,4]]}}}],["measur",{"_index":946,"t":{"75":{"position":[[841,8]]},"79":{"position":[[101,8]]}}}],["mechan",{"_index":52,"t":{"2":{"position":[[657,10]]},"4":{"position":[[16,10]]},"32":{"position":[[395,9]]},"63":{"position":[[264,9],[472,9]]}}}],["meet",{"_index":1147,"t":{"111":{"position":[[305,5]]}}}],["member",{"_index":362,"t":{"18":{"position":[[489,7]]}}}],["merchant",{"_index":1046,"t":{"95":{"position":[[219,16]]}}}],["merg",{"_index":565,"t":{"40":{"position":[[302,8]]},"42":{"position":[[234,6]]}}}],["merkel",{"_index":535,"t":{"38":{"position":[[66,14]]},"40":{"position":[[10,14],[186,14],[276,13]]}}}],["merkl",{"_index":584,"t":{"42":{"position":[[503,6]]},"56":{"position":[[268,6]]}}}],["messag",{"_index":648,"t":{"50":{"position":[[278,8]]}}}],["metadata",{"_index":557,"t":{"40":{"position":[[57,8]]}}}],["method",{"_index":146,"t":{"6":{"position":[[584,6]]},"69":{"position":[[1306,6],[2013,6],[2301,6]]},"111":{"position":[[1602,7]]}}}],["microsoft",{"_index":225,"t":{"10":{"position":[[106,10]]}}}],["mileston",{"_index":698,"t":{"61":{"position":[[52,10]]}}}],["million",{"_index":779,"t":{"69":{"position":[[1125,7],[1142,7]]}}}],["miss",{"_index":66,"t":{"4":{"position":[[53,7]]},"6":{"position":[[1811,7]]},"69":{"position":[[1984,7]]}}}],["mission",{"_index":852,"t":{"69":{"position":[[4610,7]]}}}],["mitig",{"_index":588,"t":{"42":{"position":[[534,8]]}}}],["mobil",{"_index":899,"t":{"69":{"position":[[7169,6]]}}}],["mode",{"_index":488,"t":{"30":{"position":[[1053,6]]},"77":{"position":[[498,5]]}}}],["model",{"_index":514,"t":{"32":{"position":[[365,6]]}}}],["modifi",{"_index":1021,"t":{"87":{"position":[[7,6]]},"99":{"position":[[168,6]]},"107":{"position":[[7,6]]},"113":{"position":[[386,7]]}}}],["monitor",{"_index":618,"t":{"46":{"position":[[102,7]]}}}],["more",{"_index":318,"t":{"16":{"position":[[344,4]]},"32":{"position":[[350,4]]},"69":{"position":[[7253,4]]},"75":{"position":[[996,4]]}}}],["mostli",{"_index":668,"t":{"56":{"position":[[20,6]]}}}],["move",{"_index":368,"t":{"20":{"position":[[150,6]]},"34":{"position":[[22,6]]}}}],["multinod",{"_index":445,"t":{"30":{"position":[[19,9]]}}}],["multipl",{"_index":117,"t":{"6":{"position":[[21,8]]},"44":{"position":[[271,8]]}}}],["n",{"_index":803,"t":{"69":{"position":[[2126,2]]}}}],["name",{"_index":288,"t":{"12":{"position":[[110,4]]}}}],["natur",{"_index":712,"t":{"63":{"position":[[567,10]]},"111":{"position":[[908,6]]}}}],["near",{"_index":671,"t":{"56":{"position":[[142,4]]}}}],["need",{"_index":287,"t":{"12":{"position":[[33,4]]},"63":{"position":[[465,4]]},"69":{"position":[[4684,4],[5172,5],[5332,5],[5790,5]]},"75":{"position":[[321,4],[418,6]]}}}],["neglig",{"_index":1117,"t":{"103":{"position":[[54,11]]}}}],["network",{"_index":16,"t":{"2":{"position":[[167,7],[784,7],[845,7]]},"4":{"position":[[91,9],[361,7]]},"6":{"position":[[886,7],[993,7],[1096,7],[1467,7]]},"10":{"position":[[791,8],[863,7]]},"16":{"position":[[380,8]]},"30":{"position":[[290,8]]},"65":{"position":[[102,9],[403,8]]},"69":{"position":[[4137,9],[4955,8],[4988,7],[6341,7],[6555,8],[6636,8],[6908,7],[7351,8],[7564,8],[7778,8]]}}}],["network'",{"_index":122,"t":{"6":{"position":[[78,9]]}}}],["new",{"_index":191,"t":{"6":{"position":[[1693,3]]},"18":{"position":[[318,3]]},"87":{"position":[[148,3]]},"107":{"position":[[174,3]]}}}],["next",{"_index":156,"t":{"6":{"position":[[766,4]]},"18":{"position":[[395,4]]},"63":{"position":[[443,5]]}}}],["nich",{"_index":38,"t":{"2":{"position":[[464,6]]}}}],["nim",{"_index":404,"t":{"25":{"position":[[46,3],[153,3]]},"30":{"position":[[331,3],[375,3],[404,3],[596,3],[772,3],[851,3],[982,3]]},"38":{"position":[[91,3]]},"40":{"position":[[374,3]]},"42":{"position":[[106,3],[127,3]]},"44":{"position":[[545,3]]}}}],["nimbl",{"_index":377,"t":{"23":{"position":[[46,6]]}}}],["nimbu",{"_index":440,"t":{"27":{"position":[[404,6]]}}}],["nine",{"_index":770,"t":{"69":{"position":[[983,5]]}}}],["node",{"_index":77,"t":{"4":{"position":[[210,4],[420,5]]},"6":{"position":[[30,4],[140,4],[233,5],[296,5],[577,4],[674,4],[784,5],[797,5],[827,5],[909,6],[961,5],[1032,4],[1145,4],[1202,5],[1403,4],[1494,4],[1563,4],[1912,6]]},"46":{"position":[[80,5]]},"48":{"position":[[229,5],[269,5]]},"52":{"position":[[177,5]]},"69":{"position":[[3484,6],[4349,5],[4737,4],[4870,4],[4938,5],[5007,6],[5025,6],[5040,6],[5058,6],[5083,5],[5097,5],[5153,4],[5302,4],[5393,4],[5482,4],[5592,5],[5609,5],[5761,6],[5780,4],[6056,5],[6120,5],[6253,5],[6383,4],[6409,4],[6445,6],[6469,5],[6482,5],[6506,5],[6582,5],[6618,4],[6690,5],[6732,4],[6759,4],[6811,5],[6851,5],[6959,5],[7059,6],[7088,5]]}}}],["node'",{"_index":189,"t":{"6":{"position":[[1662,6],[1705,6]]}}}],["nomo",{"_index":213,"t":{"8":{"position":[[228,6]]}}}],["non",{"_index":376,"t":{"23":{"position":[[42,3]]},"69":{"position":[[3699,3]]},"95":{"position":[[274,3]]},"101":{"position":[[419,3]]}}}],["nonetheless",{"_index":999,"t":{"83":{"position":[[117,12]]}}}],["normal",{"_index":483,"t":{"30":{"position":[[998,9]]}}}],["note",{"_index":869,"t":{"69":{"position":[[5869,4]]},"75":{"position":[[934,4]]},"111":{"position":[[520,4]]}}}],["noth",{"_index":1075,"t":{"95":{"position":[[1628,7]]}}}],["notic",{"_index":1023,"t":{"87":{"position":[[81,7]]},"97":{"position":[[1392,6]]},"107":{"position":[[87,7]]},"111":{"position":[[870,6],[1108,6]]}}}],["novel",{"_index":765,"t":{"69":{"position":[[751,5]]}}}],["now",{"_index":909,"t":{"69":{"position":[[7864,4]]}}}],["number",{"_index":136,"t":{"6":{"position":[[392,6]]},"10":{"position":[[67,6]]},"69":{"position":[[2109,6],[2671,6]]}}}],["numer",{"_index":255,"t":{"10":{"position":[[621,8]]}}}],["object",{"_index":1010,"t":{"83":{"position":[[831,6]]}}}],["oblig",{"_index":981,"t":{"81":{"position":[[7,7]]},"95":{"position":[[1222,10]]}}}],["occas",{"_index":256,"t":{"10":{"position":[[630,10]]}}}],["occur",{"_index":996,"t":{"81":{"position":[[669,5]]}}}],["offer",{"_index":281,"t":{"10":{"position":[[1339,8]]},"59":{"position":[[437,5]]},"63":{"position":[[175,7]]},"69":{"position":[[385,5],[2031,5],[6673,7]]},"75":{"position":[[1271,6]]},"95":{"position":[[1685,5],[1725,5]]}}}],["offic",{"_index":925,"t":{"73":{"position":[[190,6]]},"93":{"position":[[130,6]]}}}],["offset",{"_index":162,"t":{"6":{"position":[[970,6]]},"69":{"position":[[6860,6]]}}}],["on",{"_index":64,"t":{"4":{"position":[[31,3]]},"8":{"position":[[277,3]]},"69":{"position":[[1107,3]]},"103":{"position":[[532,4]]},"111":{"position":[[1652,3],[2085,3]]}}}],["onc",{"_index":861,"t":{"69":{"position":[[5258,4]]}}}],["ongo",{"_index":355,"t":{"18":{"position":[[306,7],[507,7]]},"20":{"position":[[224,7]]},"23":{"position":[[113,8]]},"25":{"position":[[86,8]]},"27":{"position":[[209,8]]},"30":{"position":[[561,8]]},"32":{"position":[[305,8]]},"38":{"position":[[493,7]]},"44":{"position":[[711,7]]},"50":{"position":[[0,7]]},"56":{"position":[[117,7],[153,7]]}}}],["onlin",{"_index":169,"t":{"6":{"position":[[1153,6]]}}}],["open",{"_index":109,"t":{"4":{"position":[[747,4]]},"16":{"position":[[403,4],[438,4]]}}}],["openapi",{"_index":547,"t":{"38":{"position":[[425,7]]}}}],["oper",{"_index":123,"t":{"6":{"position":[[88,10],[171,9]]},"69":{"position":[[4374,12],[5161,7],[6099,7]]}}}],["optimis",{"_index":559,"t":{"40":{"position":[[85,10]]}}}],["optimum",{"_index":88,"t":{"4":{"position":[[353,7]]}}}],["optin",{"_index":490,"t":{"30":{"position":[[1068,6]]}}}],["option",{"_index":637,"t":{"48":{"position":[[139,7]]}}}],["optout",{"_index":489,"t":{"30":{"position":[[1060,7]]}}}],["oral",{"_index":1198,"t":{"113":{"position":[[216,5]]}}}],["orc",{"_index":398,"t":{"23":{"position":[[304,3]]}}}],["order",{"_index":1093,"t":{"97":{"position":[[741,5]]}}}],["organ",{"_index":881,"t":{"69":{"position":[[6234,7]]}}}],["organisation’",{"_index":521,"t":{"34":{"position":[[50,14]]}}}],["organiz",{"_index":823,"t":{"69":{"position":[[2887,14]]}}}],["origin",{"_index":420,"t":{"27":{"position":[[155,6]]},"42":{"position":[[37,8]]},"69":{"position":[[1440,8],[1923,8],[2160,8]]}}}],["otherwis",{"_index":990,"t":{"81":{"position":[[370,10]]},"95":{"position":[[549,9]]}}}],["out",{"_index":321,"t":{"16":{"position":[[395,3],[529,3]]},"27":{"position":[[147,3]]},"30":{"position":[[710,3],[884,3]]},"44":{"position":[[420,3]]},"56":{"position":[[384,3]]},"69":{"position":[[1116,3],[2129,3],[3026,3]]},"83":{"position":[[245,3]]},"111":{"position":[[896,3]]}}}],["outag",{"_index":240,"t":{"10":{"position":[[325,7],[610,7]]}}}],["outsid",{"_index":984,"t":{"81":{"position":[[149,7],[614,7]]}}}],["outstand",{"_index":578,"t":{"42":{"position":[[241,11]]}}}],["over",{"_index":22,"t":{"2":{"position":[[226,4]]},"6":{"position":[[1273,4]]},"69":{"position":[[915,4],[1133,4]]},"75":{"position":[[902,4]]},"77":{"position":[[788,4]]},"101":{"position":[[451,4]]},"111":{"position":[[272,4]]}}}],["overal",{"_index":818,"t":{"69":{"position":[[2624,7]]}}}],["overhead",{"_index":558,"t":{"40":{"position":[[66,9]]}}}],["owner",{"_index":247,"t":{"10":{"position":[[442,6]]}}}],["ownership",{"_index":238,"t":{"10":{"position":[[302,9]]}}}],["p2p",{"_index":278,"t":{"10":{"position":[[1155,3]]},"65":{"position":[[98,3]]},"69":{"position":[[4984,3]]}}}],["packag",{"_index":379,"t":{"23":{"position":[[65,8]]}}}],["packaging/loc",{"_index":439,"t":{"27":{"position":[[361,15]]}}}],["page",{"_index":910,"t":{"71":{"position":[[8,4]]},"75":{"position":[[1314,6]]},"77":{"position":[[899,5]]},"91":{"position":[[8,4]]}}}],["pair",{"_index":507,"t":{"32":{"position":[[245,7]]}}}],["pariti",{"_index":794,"t":{"69":{"position":[[1822,7],[1856,6]]}}}],["part",{"_index":152,"t":{"6":{"position":[[727,4]]},"27":{"position":[[414,4]]},"69":{"position":[[1629,6],[1691,5],[2778,4]]},"75":{"position":[[564,4]]},"87":{"position":[[29,4]]},"107":{"position":[[29,4]]},"113":{"position":[[494,4],[568,4]]}}}],["parti",{"_index":963,"t":{"77":{"position":[[66,7],[243,5]]},"81":{"position":[[264,7]]},"85":{"position":[[52,5],[80,5],[235,5]]},"101":{"position":[[56,5],[163,5],[201,5],[292,5],[358,5],[467,5],[548,5],[618,5],[742,5]]},"111":{"position":[[1726,7]]}}}],["partial",{"_index":693,"t":{"59":{"position":[[360,7]]}}}],["particip",{"_index":17,"t":{"2":{"position":[[175,12],[792,14]]},"4":{"position":[[185,13],[394,13],[525,14],[632,12],[806,13]]},"6":{"position":[[212,12],[926,12]]},"69":{"position":[[5830,11],[6887,13],[6968,11],[7753,11],[7907,11]]},"111":{"position":[[2211,11]]}}}],["particular",{"_index":1048,"t":{"95":{"position":[[250,10]]}}}],["particularli",{"_index":851,"t":{"69":{"position":[[4586,12]]}}}],["pass",{"_index":456,"t":{"30":{"position":[[353,8]]}}}],["past",{"_index":345,"t":{"18":{"position":[[170,4]]},"56":{"position":[[63,4]]},"95":{"position":[[1415,5]]}}}],["patch",{"_index":492,"t":{"30":{"position":[[1100,5]]}}}],["pay",{"_index":190,"t":{"6":{"position":[[1680,4]]}}}],["payment",{"_index":663,"t":{"52":{"position":[[208,9]]},"69":{"position":[[6712,9]]},"111":{"position":[[1813,7]]}}}],["peer",{"_index":263,"t":{"10":{"position":[[753,4],[761,4]]}}}],["penal",{"_index":862,"t":{"69":{"position":[[5436,9],[5723,9]]}}}],["penalti",{"_index":144,"t":{"6":{"position":[[555,10]]}}}],["peopl",{"_index":959,"t":{"75":{"position":[[1366,6]]}}}],["per",{"_index":430,"t":{"27":{"position":[[269,3]]}}}],["perfectli",{"_index":806,"t":{"69":{"position":[[2181,9]]}}}],["perform",{"_index":282,"t":{"10":{"position":[[1348,11]]},"50":{"position":[[21,11],[241,11]]}}}],["period",{"_index":141,"t":{"6":{"position":[[501,8]]},"69":{"position":[[5341,12],[6422,7]]},"87":{"position":[[114,12]]},"107":{"position":[[140,12]]}}}],["permit",{"_index":1057,"t":{"95":{"position":[[684,9]]},"103":{"position":[[615,9]]}}}],["persist",{"_index":717,"t":{"65":{"position":[[79,10]]}}}],["person",{"_index":897,"t":{"69":{"position":[[7146,8]]},"73":{"position":[[77,8]]},"75":{"position":[[64,8],[141,8],[293,8],[352,8],[505,8],[1204,8]]},"77":{"position":[[45,8],[97,8],[574,8]]},"79":{"position":[[156,8]]},"81":{"position":[[41,8],[125,8],[208,8],[482,8],[600,8]]},"83":{"position":[[84,8],[190,8],[338,8],[403,8],[461,8],[588,8],[864,8],[996,8]]}}}],["personalis",{"_index":975,"t":{"77":{"position":[[687,11]]}}}],["phase",{"_index":908,"t":{"69":{"position":[[7804,5],[7934,5]]}}}],["piec",{"_index":65,"t":{"4":{"position":[[46,6]]},"69":{"position":[[1369,5],[1405,6],[1778,7],[2380,5]]}}}],["pillar",{"_index":822,"t":{"69":{"position":[[2840,6]]}}}],["pin",{"_index":441,"t":{"27":{"position":[[462,6]]}}}],["place",{"_index":383,"t":{"23":{"position":[[141,5]]},"69":{"position":[[1352,7]]},"77":{"position":[[552,5]]},"81":{"position":[[142,6]]},"97":{"position":[[1095,5]]}}}],["placement",{"_index":634,"t":{"48":{"position":[[72,9]]}}}],["plan",{"_index":396,"t":{"23":{"position":[[280,5]]},"69":{"position":[[4476,7]]}}}],["platform",{"_index":202,"t":{"8":{"position":[[38,8]]},"10":{"position":[[546,9],[1172,9]]}}}],["plausibl",{"_index":20,"t":{"2":{"position":[[204,9]]}}}],["pleas",{"_index":329,"t":{"16":{"position":[[516,6]]},"67":{"position":[[100,6]]},"69":{"position":[[7421,6]]},"87":{"position":[[89,6]]},"89":{"position":[[68,6]]},"99":{"position":[[351,6]]},"111":{"position":[[513,6]]},"113":{"position":[[881,6]]}}}],["poc",{"_index":688,"t":{"59":{"position":[[192,3],[251,3],[290,3]]},"61":{"position":[[341,3]]}}}],["pod",{"_index":633,"t":{"48":{"position":[[67,4]]}}}],["point",{"_index":748,"t":{"69":{"position":[[207,6]]}}}],["polici",{"_index":915,"t":{"71":{"position":[[56,6],[220,6]]},"73":{"position":[[33,6]]},"77":{"position":[[295,8]]},"83":{"position":[[29,7]]},"85":{"position":[[130,9]]},"87":{"position":[[50,6],[160,6]]},"89":{"position":[[60,7]]},"101":{"position":[[122,9]]}}}],["pool",{"_index":390,"t":{"23":{"position":[[225,4]]}}}],["popular",{"_index":877,"t":{"69":{"position":[[6166,7]]}}}],["port",{"_index":412,"t":{"27":{"position":[[49,6]]},"48":{"position":[[18,4]]}}}],["portion",{"_index":863,"t":{"69":{"position":[[5453,7]]},"113":{"position":[[642,8]]}}}],["poseidon",{"_index":573,"t":{"42":{"position":[[46,8]]}}}],["poseidon2",{"_index":536,"t":{"38":{"position":[[81,9],[95,9]]},"40":{"position":[[576,9]]},"42":{"position":[[0,9],[110,9]]}}}],["poseidon2/pull/10",{"_index":583,"t":{"42":{"position":[[477,17]]}}}],["poseidon2/pull/11",{"_index":591,"t":{"42":{"position":[[597,17]]}}}],["poseidon2/pull/7",{"_index":579,"t":{"42":{"position":[[294,16]]}}}],["poseidon2/pull/8",{"_index":580,"t":{"42":{"position":[[348,16]]}}}],["poseidon2/pull/9",{"_index":581,"t":{"42":{"position":[[402,16]]}}}],["posit",{"_index":322,"t":{"16":{"position":[[408,9]]}}}],["possess",{"_index":142,"t":{"6":{"position":[[524,10],[1262,10]]},"69":{"position":[[3957,10],[5376,11]]}}}],["possibl",{"_index":589,"t":{"42":{"position":[[543,8]]},"83":{"position":[[107,9],[370,10]]},"103":{"position":[[427,11]]},"111":{"position":[[1613,9]]}}}],["post",{"_index":105,"t":{"4":{"position":[[700,7]]},"6":{"position":[[343,6]]},"69":{"position":[[3896,4]]},"87":{"position":[[206,7]]},"107":{"position":[[238,7]]}}}],["potenti",{"_index":1157,"t":{"111":{"position":[[670,11]]}}}],["power",{"_index":248,"t":{"10":{"position":[[472,5]]}}}],["powerhouses—googl",{"_index":224,"t":{"10":{"position":[[86,19]]}}}],["pr",{"_index":408,"t":{"25":{"position":[[147,2]]},"27":{"position":[[259,2],[297,2],[441,2]]},"40":{"position":[[299,2]]},"42":{"position":[[253,3]]}}}],["pragma",{"_index":487,"t":{"30":{"position":[[1039,8]]}}}],["pre",{"_index":724,"t":{"65":{"position":[[289,3]]}}}],["predict",{"_index":719,"t":{"65":{"position":[[166,11]]}}}],["prefer",{"_index":1145,"t":{"111":{"position":[[253,6]]}}}],["prepar",{"_index":359,"t":{"18":{"position":[[375,11]]},"46":{"position":[[40,9]]}}}],["present",{"_index":1067,"t":{"95":{"position":[[1421,7]]},"97":{"position":[[788,10]]}}}],["preserv",{"_index":756,"t":{"69":{"position":[[500,10],[4208,8]]}}}],["prevent",{"_index":55,"t":{"2":{"position":[[711,11]]},"4":{"position":[[487,7]]},"69":{"position":[[192,7],[3434,8]]}}}],["previous",{"_index":893,"t":{"69":{"position":[[6775,10]]}}}],["primari",{"_index":533,"t":{"38":{"position":[[45,7]]}}}],["primit",{"_index":395,"t":{"23":{"position":[[270,9]]}}}],["principl",{"_index":1148,"t":{"111":{"position":[[315,9]]}}}],["prior",{"_index":1195,"t":{"113":{"position":[[113,5]]}}}],["privaci",{"_index":914,"t":{"71":{"position":[[48,7],[110,7],[212,7]]},"73":{"position":[[25,7]]},"75":{"position":[[237,7],[1135,7]]},"77":{"position":[[287,7],[481,7]]},"81":{"position":[[30,7],[705,7]]},"83":{"position":[[21,7],[261,7]]},"85":{"position":[[122,7]]},"87":{"position":[[42,7],[152,7]]},"89":{"position":[[52,7]]},"101":{"position":[[114,7]]}}}],["proactiv",{"_index":167,"t":{"6":{"position":[[1109,11]]}}}],["problem",{"_index":593,"t":{"42":{"position":[[633,7]]},"69":{"position":[[1231,8],[2595,8]]}}}],["proceed",{"_index":1179,"t":{"111":{"position":[[1676,11]]}}}],["process",{"_index":621,"t":{"46":{"position":[[244,8]]},"69":{"position":[[5860,8]]},"73":{"position":[[63,10]]},"75":{"position":[[50,10],[125,7],[281,7],[483,7],[645,7],[749,10]]},"77":{"position":[[89,7]]},"81":{"position":[[235,9]]},"83":{"position":[[65,10],[228,8],[575,7],[635,10],[676,10],[769,10],[845,10],[1019,9]]}}}],["procur",{"_index":1120,"t":{"103":{"position":[[149,11]]}}}],["profil",{"_index":409,"t":{"27":{"position":[[19,8],[60,8]]}}}],["profit",{"_index":95,"t":{"4":{"position":[[478,8]]},"69":{"position":[[6126,9]]},"103":{"position":[[132,8]]}}}],["progress",{"_index":335,"t":{"18":{"position":[[33,8]]},"65":{"position":[[469,9]]}}}],["project",{"_index":37,"t":{"2":{"position":[[426,8]]},"8":{"position":[[320,9]]},"16":{"position":[[463,7]]},"65":{"position":[[10,7],[235,7]]},"69":{"position":[[4196,8],[7281,7]]},"95":{"position":[[1462,8]]},"97":{"position":[[134,11],[281,7],[386,9]]}}}],["promis",{"_index":760,"t":{"69":{"position":[[571,8],[600,7]]},"95":{"position":[[1318,8]]}}}],["promot",{"_index":831,"t":{"69":{"position":[[3345,8]]}}}],["proof",{"_index":46,"t":{"2":{"position":[[576,5]]},"6":{"position":[[510,5],[623,5],[644,5],[1247,6],[1422,6],[1591,5]]},"25":{"position":[[124,6]]},"32":{"position":[[412,5]]},"44":{"position":[[64,6],[581,5],[657,6]]},"52":{"position":[[263,5]]},"56":{"position":[[246,5],[405,6],[412,6],[475,5]]},"59":{"position":[[32,5]]},"69":{"position":[[3852,6],[3862,5],[3907,6],[3993,6],[5362,5],[5415,5],[5504,5],[5671,6]]}}}],["properli",{"_index":627,"t":{"46":{"position":[[329,9]]}}}],["properti",{"_index":880,"t":{"69":{"position":[[6219,8]]},"95":{"position":[[307,8]]}}}],["proport",{"_index":858,"t":{"69":{"position":[[5200,12]]}}}],["protect",{"_index":15,"t":{"2":{"position":[[158,8]]},"69":{"position":[[627,11],[1596,7],[2870,10]]},"81":{"position":[[18,7],[306,10],[408,12],[517,10]]},"83":{"position":[[922,10]]}}}],["protocol",{"_index":177,"t":{"6":{"position":[[1369,8]]},"12":{"position":[[292,8]]},"14":{"position":[[6,8]]},"16":{"position":[[41,8]]},"69":{"position":[[66,8],[2861,8],[3565,9]]}}}],["provabl",{"_index":25,"t":{"2":{"position":[[264,8]]}}}],["prove",{"_index":496,"t":{"32":{"position":[[15,7]]},"38":{"position":[[136,7]]},"40":{"position":[[594,7]]},"44":{"position":[[4,7],[135,5],[344,7],[396,7]]},"56":{"position":[[436,7]]},"61":{"position":[[234,7],[440,7]]},"63":{"position":[[485,5]]},"69":{"position":[[3951,5]]}}}],["prover",{"_index":672,"t":{"56":{"position":[[170,7]]}}}],["provid",{"_index":8,"t":{"2":{"position":[[77,9],[487,8]]},"6":{"position":[[277,10],[493,7],[1378,9],[1441,7]]},"8":{"position":[[52,8]]},"10":{"position":[[369,9]]},"44":{"position":[[81,8]]},"52":{"position":[[254,8]]},"63":{"position":[[333,8]]},"69":{"position":[[80,8],[713,7],[3803,9],[4029,9],[5103,7],[5354,7],[5407,7],[5496,7],[7643,9]]},"77":{"position":[[175,7],[441,8]]},"81":{"position":[[277,7],[499,8]]},"95":{"position":[[15,8]]},"101":{"position":[[26,8]]}}}],["provis",{"_index":61,"t":{"2":{"position":[[825,9]]},"4":{"position":[[679,12]]},"109":{"position":[[150,11]]},"113":{"position":[[445,10]]}}}],["proxi",{"_index":451,"t":{"30":{"position":[[218,5]]}}}],["pst",{"_index":930,"t":{"73":{"position":[[271,3]]},"93":{"position":[[212,3]]}}}],["public",{"_index":325,"t":{"16":{"position":[[450,6]]},"18":{"position":[[101,6]]},"48":{"position":[[179,6]]},"69":{"position":[[4458,6]]}}}],["publicli",{"_index":562,"t":{"40":{"position":[[249,8]]}}}],["pull",{"_index":467,"t":{"30":{"position":[[702,7]]}}}],["purport",{"_index":275,"t":{"10":{"position":[[1125,7]]},"97":{"position":[[858,7]]}}}],["purpos",{"_index":607,"t":{"44":{"position":[[314,9]]},"73":{"position":[[8,8]]},"75":{"position":[[168,8],[443,8]]},"93":{"position":[[8,8]]},"95":{"position":[[261,8],[1090,8]]},"99":{"position":[[224,8]]}}}],["q1",{"_index":850,"t":{"69":{"position":[[4488,2],[7821,2],[7943,2]]}}}],["q1/q2",{"_index":341,"t":{"18":{"position":[[95,5]]}}}],["q2/q4",{"_index":155,"t":{"6":{"position":[[760,5]]}}}],["q3",{"_index":695,"t":{"59":{"position":[[406,2]]}}}],["qualiti",{"_index":699,"t":{"61":{"position":[[104,9]]}}}],["queri",{"_index":171,"t":{"6":{"position":[[1226,7]]},"32":{"position":[[389,5]]}}}],["question",{"_index":1025,"t":{"89":{"position":[[32,9]]},"113":{"position":[[837,9]]}}}],["queue",{"_index":647,"t":{"50":{"position":[[272,5]]}}}],["r&d",{"_index":495,"t":{"32":{"position":[[5,3]]}}}],["rais",{"_index":464,"t":{"30":{"position":[[524,6]]}}}],["randomli",{"_index":170,"t":{"6":{"position":[[1217,8]]}}}],["rapidli",{"_index":520,"t":{"34":{"position":[[37,8]]}}}],["rate",{"_index":957,"t":{"75":{"position":[[1343,5]]}}}],["ration",{"_index":58,"t":{"2":{"position":[[753,8]]}}}],["react",{"_index":553,"t":{"38":{"position":[[598,5]]}}}],["read",{"_index":200,"t":{"6":{"position":[[1919,4]]},"75":{"position":[[991,4]]},"91":{"position":[[276,4]]}}}],["reason",{"_index":1002,"t":{"83":{"position":[[359,10]]},"111":{"position":[[722,10],[2149,10]]}}}],["rebas",{"_index":444,"t":{"30":{"position":[[11,7],[117,7]]}}}],["rebuild",{"_index":798,"t":{"69":{"position":[[1949,7]]}}}],["receiv",{"_index":1169,"t":{"111":{"position":[[1093,9]]}}}],["recent",{"_index":528,"t":{"34":{"position":[[171,6]]},"40":{"position":[[220,6]]},"44":{"position":[[529,6]]}}}],["recommend",{"_index":978,"t":{"77":{"position":[[832,11]]}}}],["reconstruct",{"_index":53,"t":{"2":{"position":[[687,14]]},"6":{"position":[[1789,14]]}}}],["record",{"_index":758,"t":{"69":{"position":[[527,8]]}}}],["recreat",{"_index":786,"t":{"69":{"position":[[1427,8]]}}}],["recurs",{"_index":516,"t":{"32":{"position":[[418,9]]}}}],["reduc",{"_index":556,"t":{"40":{"position":[[48,8]]}}}],["redund",{"_index":41,"t":{"2":{"position":[[511,11]]},"63":{"position":[[418,10]]}}}],["ref",{"_index":436,"t":{"27":{"position":[[326,3]]},"40":{"position":[[520,3]]}}}],["refactor",{"_index":446,"t":{"30":{"position":[[46,8]]}}}],["refc",{"_index":397,"t":{"23":{"position":[[297,4]]}}}],["refer",{"_index":289,"t":{"12":{"position":[[123,6]]},"44":{"position":[[549,9]]},"73":{"position":[[341,5],[381,11],[400,9]]},"93":{"position":[[282,5],[332,11],[351,9]]},"99":{"position":[[358,5]]},"111":{"position":[[1157,8],[1432,10]]},"113":{"position":[[352,9]]}}}],["referr",{"_index":955,"t":{"75":{"position":[[1325,10]]}}}],["regard",{"_index":918,"t":{"71":{"position":[[166,7]]},"75":{"position":[[460,7]]},"109":{"position":[[123,6]]},"113":{"position":[[73,9]]}}}],["regardless",{"_index":1186,"t":{"111":{"position":[[1999,10]]}}}],["regist",{"_index":924,"t":{"73":{"position":[[179,10]]},"93":{"position":[[119,10]]}}}],["regular",{"_index":890,"t":{"69":{"position":[[6574,7],[6724,7],[7080,7]]}}}],["regularli",{"_index":1100,"t":{"97":{"position":[[1231,10]]}}}],["regulatori",{"_index":1091,"t":{"97":{"position":[[667,10]]}}}],["relat",{"_index":646,"t":{"50":{"position":[[230,7]]},"69":{"position":[[1536,6]]},"95":{"position":[[559,8],[1446,8]]},"97":{"position":[[421,7]]},"103":{"position":[[239,7]]},"105":{"position":[[146,7]]},"111":{"position":[[141,8]]}}}],["releas",{"_index":154,"t":{"6":{"position":[[752,7]]},"18":{"position":[[116,8],[438,9]]},"59":{"position":[[117,8]]},"61":{"position":[[182,7],[249,7]]}}}],["relev",{"_index":922,"t":{"73":{"position":[[112,8]]},"83":{"position":[[252,8]]},"93":{"position":[[52,8]]},"111":{"position":[[1828,8]]}}}],["reli",{"_index":1066,"t":{"95":{"position":[[1301,6]]}}}],["reliabl",{"_index":132,"t":{"6":{"position":[[260,8]]},"69":{"position":[[2052,8],[3765,8],[5121,8]]},"95":{"position":[[450,12]]},"97":{"position":[[882,8],[951,11]]}}}],["relianc",{"_index":1099,"t":{"97":{"position":[[1107,8]]}}}],["remain",{"_index":28,"t":{"2":{"position":[[314,9]]},"69":{"position":[[4692,6]]},"113":{"position":[[632,9],[656,6]]}}}],["remedi",{"_index":1161,"t":{"111":{"position":[[974,6]]}}}],["remot",{"_index":218,"t":{"10":{"position":[[4,6]]},"14":{"position":[[39,6]]},"44":{"position":[[454,6]]},"59":{"position":[[455,6]]}}}],["remov",{"_index":470,"t":{"30":{"position":[[792,8]]},"83":{"position":[[391,6]]}}}],["repair",{"_index":51,"t":{"2":{"position":[[650,6]]},"6":{"position":[[1759,6]]},"61":{"position":[[220,6]]},"63":{"position":[[537,7]]},"69":{"position":[[818,7],[2252,6],[2289,6],[2507,6],[2654,7],[3524,6]]}}}],["replac",{"_index":1022,"t":{"87":{"position":[[17,7]]},"107":{"position":[[17,7]]}}}],["repo",{"_index":331,"t":{"16":{"position":[[544,4]]},"23":{"position":[[131,4]]}}}],["report",{"_index":742,"t":{"67":{"position":[[107,6]]}}}],["repost",{"_index":187,"t":{"6":{"position":[[1633,9]]}}}],["repres",{"_index":612,"t":{"44":{"position":[[510,9]]},"101":{"position":[[233,9]]}}}],["represent",{"_index":1053,"t":{"95":{"position":[[376,15],[1327,15]]},"113":{"position":[[167,15]]}}}],["request",{"_index":134,"t":{"6":{"position":[[357,7],[808,8]]},"83":{"position":[[541,8]]}}}],["requir",{"_index":561,"t":{"40":{"position":[[160,8]]},"52":{"position":[[104,8]]},"63":{"position":[[395,8],[607,8]]},"69":{"position":[[4298,7],[4745,8],[4854,9]]},"81":{"position":[[531,8]]},"99":{"position":[[278,12]]}}}],["research",{"_index":309,"t":{"16":{"position":[[124,11],[314,8]]},"18":{"position":[[331,8]]},"20":{"position":[[107,8]]},"34":{"position":[[178,8]]},"36":{"position":[[111,8]]},"56":{"position":[[8,8],[68,8],[178,8],[321,8]]},"61":{"position":[[409,9],[490,8]]}}}],["resili",{"_index":754,"t":{"69":{"position":[[408,10]]}}}],["resist",{"_index":11,"t":{"2":{"position":[[113,10]]},"8":{"position":[[93,10]]},"10":{"position":[[721,9],[898,10]]},"63":{"position":[[135,10]]},"69":{"position":[[170,6],[453,11],[4266,7]]}}}],["resolut",{"_index":1159,"t":{"111":{"position":[[809,10]]}}}],["resolv",{"_index":1149,"t":{"111":{"position":[[328,9],[744,7],[1034,7],[1181,8]]}}}],["resourc",{"_index":63,"t":{"2":{"position":[[853,10]]},"4":{"position":[[369,8]]},"6":{"position":[[181,8],[688,10],[1001,9]]},"69":{"position":[[2561,9],[2718,8]]}}}],["respect",{"_index":916,"t":{"71":{"position":[[121,7]]},"77":{"position":[[276,10]]},"83":{"position":[[175,7]]},"111":{"position":[[1845,7]]},"113":{"position":[[227,7]]}}}],["respond",{"_index":841,"t":{"69":{"position":[[3819,7]]}}}],["respons",{"_index":1019,"t":{"85":{"position":[[161,14]]},"91":{"position":[[258,14]]},"95":{"position":[[924,11]]},"97":{"position":[[918,14]]},"101":{"position":[[696,11]]},"107":{"position":[[103,11]]}}}],["restor",{"_index":807,"t":{"69":{"position":[[2191,9]]}}}],["restrict",{"_index":127,"t":{"6":{"position":[[190,10]]}}}],["result",{"_index":113,"t":{"4":{"position":[[838,9]]},"6":{"position":[[535,7]]},"30":{"position":[[178,6]]},"77":{"position":[[116,6]]},"97":{"position":[[718,8]]},"111":{"position":[[797,6]]}}}],["retriev",{"_index":47,"t":{"2":{"position":[[585,15]]},"6":{"position":[[853,8],[1181,12],[1340,14]]},"50":{"position":[[118,9]]},"65":{"position":[[210,10]]},"69":{"position":[[3535,10],[6532,8],[6821,8]]}}}],["review",{"_index":472,"t":{"30":{"position":[[831,6]]},"32":{"position":[[268,6]]},"40":{"position":[[418,7]]},"77":{"position":[[853,6]]},"111":{"position":[[536,6]]}}}],["reward",{"_index":868,"t":{"69":{"position":[[5711,7]]}}}],["right",{"_index":810,"t":{"69":{"position":[[2450,5],[7858,5]]},"83":{"position":[[165,6],[295,5]]},"95":{"position":[[338,7]]},"111":{"position":[[465,5],[603,6],[2202,5]]},"113":{"position":[[789,5]]}}}],["risk",{"_index":1041,"t":{"95":{"position":[[106,5]]},"97":{"position":[[515,4],[1042,4]]},"101":{"position":[[672,4]]}}}],["roadmap",{"_index":705,"t":{"63":{"position":[[21,7]]},"97":{"position":[[272,8]]}}}],["robust",{"_index":71,"t":{"4":{"position":[[123,6]]},"10":{"position":[[837,10]]}}}],["robust—99.99%—dur",{"_index":296,"t":{"12":{"position":[[208,24]]}}}],["role",{"_index":121,"t":{"6":{"position":[[66,4]]},"69":{"position":[[7526,4]]}}}],["root",{"_index":585,"t":{"42":{"position":[[510,4]]}}}],["row",{"_index":864,"t":{"69":{"position":[[5529,4]]}}}],["rpc",{"_index":443,"t":{"27":{"position":[[499,3]]},"30":{"position":[[420,3],[623,3],[677,3]]}}}],["rule",{"_index":1172,"t":{"111":{"position":[[1316,5],[1386,5],[1963,5]]}}}],["run",{"_index":344,"t":{"18":{"position":[[154,7]]},"38":{"position":[[184,4]]},"69":{"position":[[7135,7]]}}}],["runner",{"_index":416,"t":{"27":{"position":[[103,6]]},"48":{"position":[[96,7]]}}}],["sa",{"_index":1030,"t":{"89":{"position":[[150,3]]},"113":{"position":[[963,3]]}}}],["safe",{"_index":433,"t":{"27":{"position":[[300,4]]},"40":{"position":[[492,4]]},"56":{"position":[[305,4]]},"69":{"position":[[910,4],[1295,5],[2143,5],[2749,4]]}}}],["safeti",{"_index":788,"t":{"69":{"position":[[1658,7],[2231,7]]},"79":{"position":[[141,6]]}}}],["same",{"_index":198,"t":{"6":{"position":[[1862,4]]},"81":{"position":[[512,4]]}}}],["sampl",{"_index":515,"t":{"32":{"position":[[382,6]]},"61":{"position":[[481,8]]}}}],["save",{"_index":815,"t":{"69":{"position":[[2555,5]]}}}],["scale",{"_index":886,"t":{"69":{"position":[[6331,5]]}}}],["scheme",{"_index":194,"t":{"6":{"position":[[1766,6]]},"61":{"position":[[242,6],[448,6]]}}}],["scimitar",{"_index":689,"t":{"59":{"position":[[205,8],[276,9]]},"61":{"position":[[190,8]]}}}],["score",{"_index":229,"t":{"10":{"position":[[151,5]]}}}],["search",{"_index":643,"t":{"50":{"position":[[107,6]]}}}],["secp256k1",{"_index":595,"t":{"42":{"position":[[662,9]]}}}],["section",{"_index":1201,"t":{"113":{"position":[[289,8]]}}}],["secur",{"_index":736,"t":{"67":{"position":[[8,8],[118,8]]},"69":{"position":[[1478,6]]},"75":{"position":[[832,8]]},"79":{"position":[[36,8],[92,8]]},"95":{"position":[[1764,9]]}}}],["security@free.technolog",{"_index":743,"t":{"67":{"position":[[141,25]]}}}],["see",{"_index":544,"t":{"38":{"position":[[360,3]]}}}],["seek",{"_index":1162,"t":{"111":{"position":[[989,8]]}}}],["sell",{"_index":1078,"t":{"95":{"position":[[1701,5],[1741,4]]}}}],["send",{"_index":178,"t":{"6":{"position":[[1408,5]]},"69":{"position":[[3844,7],[3979,5]]},"111":{"position":[[852,4]]}}}],["sendtransact",{"_index":463,"t":{"30":{"position":[[491,15]]}}}],["sens",{"_index":871,"t":{"69":{"position":[[5939,5]]}}}],["separ",{"_index":415,"t":{"27":{"position":[[89,8]]},"85":{"position":[[97,8]]}}}],["serial",{"_index":485,"t":{"30":{"position":[[1013,9]]}}}],["serious",{"_index":737,"t":{"67":{"position":[[17,9]]},"79":{"position":[[45,9]]}}}],["serv",{"_index":205,"t":{"8":{"position":[[134,6]]},"69":{"position":[[2819,5],[6158,7],[7609,7]]}}}],["servic",{"_index":228,"t":{"10":{"position":[[142,8],[602,7]]},"48":{"position":[[158,7]]},"69":{"position":[[6664,8]]},"77":{"position":[[433,7]]},"103":{"position":[[176,9]]}}}],["set",{"_index":625,"t":{"46":{"position":[[307,3]]},"69":{"position":[[7813,3]]},"77":{"position":[[807,3]]},"111":{"position":[[888,7]]}}}],["settl",{"_index":662,"t":{"52":{"position":[[201,6]]}}}],["setup",{"_index":604,"t":{"44":{"position":[[231,5]]}}}],["sever",{"_index":827,"t":{"69":{"position":[[3123,7],[5510,7]]},"113":{"position":[[581,9]]}}}],["shall",{"_index":1065,"t":{"95":{"position":[[1264,5]]},"105":{"position":[[4,5]]},"111":{"position":[[841,5]]}}}],["shard",{"_index":792,"t":{"69":{"position":[[1795,9],[1830,7],[1863,6],[1974,6],[2119,6],[2397,6],[2686,6]]}}}],["share",{"_index":69,"t":{"4":{"position":[[83,7]]},"10":{"position":[[783,7],[1164,7]]}}}],["short",{"_index":948,"t":{"75":{"position":[[1040,6]]}}}],["side",{"_index":135,"t":{"6":{"position":[[365,4]]}}}],["signer",{"_index":461,"t":{"30":{"position":[[439,7]]}}}],["signererror",{"_index":465,"t":{"30":{"position":[[549,11]]}}}],["similar",{"_index":938,"t":{"73":{"position":[[373,7]]},"93":{"position":[[324,7]]}}}],["similarli",{"_index":124,"t":{"6":{"position":[[99,10]]}}}],["simpl",{"_index":778,"t":{"69":{"position":[[1073,6]]},"75":{"position":[[1278,6]]}}}],["simul",{"_index":511,"t":{"32":{"position":[[318,9]]}}}],["simultan",{"_index":652,"t":{"50":{"position":[[358,12]]}}}],["singl",{"_index":747,"t":{"69":{"position":[[200,6]]}}}],["site",{"_index":961,"t":{"75":{"position":[[1384,5]]},"85":{"position":[[86,5]]},"95":{"position":[[607,5]]}}}],["site.thes",{"_index":1055,"t":{"95":{"position":[[628,10]]}}}],["sixti",{"_index":1165,"t":{"111":{"position":[[1062,5]]}}}],["size",{"_index":421,"t":{"27":{"position":[[172,4]]}}}],["slash",{"_index":143,"t":{"6":{"position":[[546,8]]},"69":{"position":[[4020,8]]}}}],["slot",{"_index":137,"t":{"6":{"position":[[402,5],[1508,5],[1522,4],[1606,5],[1845,5]]},"44":{"position":[[177,4],[471,4]]}}}],["small",{"_index":222,"t":{"10":{"position":[[61,5]]},"69":{"position":[[2589,5]]}}}],["smart",{"_index":656,"t":{"52":{"position":[[21,5],[67,5]]}}}],["snark",{"_index":598,"t":{"44":{"position":[[31,5]]},"59":{"position":[[443,5]]},"69":{"position":[[3209,6],[3639,6],[3738,8]]}}}],["softwar",{"_index":304,"t":{"16":{"position":[[54,8]]},"38":{"position":[[170,8]]}}}],["sole",{"_index":1039,"t":{"95":{"position":[[86,4],[889,4],[917,6]]},"97":{"position":[[1410,4]]},"101":{"position":[[689,6]]}}}],["solicit",{"_index":1079,"t":{"95":{"position":[[1710,10]]}}}],["solid",{"_index":508,"t":{"32":{"position":[[279,8]]}}}],["solut",{"_index":274,"t":{"10":{"position":[[1115,9],[1265,8]]},"69":{"position":[[91,8],[306,9],[3006,9],[3091,9]]}}}],["someth",{"_index":731,"t":{"65":{"position":[[487,9]]}}}],["soon",{"_index":357,"t":{"18":{"position":[[361,4]]}}}],["sophist",{"_index":713,"t":{"63":{"position":[[592,14]]}}}],["sourc",{"_index":324,"t":{"16":{"position":[[443,6]]}}}],["sp",{"_index":840,"t":{"69":{"position":[[3813,5],[3939,2]]}}}],["spam",{"_index":96,"t":{"4":{"position":[[495,4]]}}}],["spare",{"_index":883,"t":{"69":{"position":[[6264,5]]}}}],["special",{"_index":1122,"t":{"103":{"position":[[193,8]]}}}],["specif",{"_index":548,"t":{"38":{"position":[[433,14]]},"75":{"position":[[159,8],[1227,8]]},"81":{"position":[[429,8]]},"97":{"position":[[1290,9]]},"113":{"position":[[828,8]]}}}],["spend",{"_index":960,"t":{"75":{"position":[[1373,5]]}}}],["split",{"_index":315,"t":{"16":{"position":[[231,5]]},"69":{"position":[[1313,6],[1758,9]]}}}],["spread",{"_index":789,"t":{"69":{"position":[[1675,9]]}}}],["stabil",{"_index":631,"t":{"46":{"position":[[410,10]]},"50":{"position":[[37,9],[257,9]]}}}],["stack",{"_index":209,"t":{"8":{"position":[[180,6]]},"12":{"position":[[99,6]]}}}],["stage",{"_index":1101,"t":{"97":{"position":[[1308,6]]}}}],["stake",{"_index":133,"t":{"6":{"position":[[302,5]]},"69":{"position":[[5181,5],[5287,6],[5468,6],[5563,6],[5799,5]]}}}],["standard",{"_index":250,"t":{"10":{"position":[[510,10]]}}}],["start",{"_index":380,"t":{"23":{"position":[[74,5],[150,5]]},"30":{"position":[[963,5]]},"32":{"position":[[372,5]]}}}],["starter",{"_index":353,"t":{"18":{"position":[[283,7]]}}}],["state",{"_index":744,"t":{"69":{"position":[[26,5],[4234,5],[4639,5]]}}}],["statement",{"_index":1080,"t":{"97":{"position":[[45,10],[221,11],[251,10],[410,10],[557,10]]}}}],["statu",{"_index":1112,"t":{"101":{"position":[[217,6]]}}}],["statut",{"_index":1187,"t":{"111":{"position":[[2028,7]]}}}],["stay",{"_index":729,"t":{"65":{"position":[[441,7]]},"69":{"position":[[905,4],[7238,4],[7830,4],[7952,4]]}}}],["still",{"_index":100,"t":{"4":{"position":[[549,5]]},"10":{"position":[[1229,5]]},"63":{"position":[[501,5]]},"83":{"position":[[134,5]]}}}],["storag",{"_index":4,"t":{"2":{"position":[[33,7],[324,7],[456,7]]},"4":{"position":[[692,7],[752,7]]},"6":{"position":[[225,7],[269,7],[288,7],[1050,7],[1137,7],[1194,7],[1395,7],[1486,7],[1697,7],[1867,7],[1904,7]]},"8":{"position":[[30,7],[148,7]]},"10":{"position":[[11,7],[232,7],[361,7],[766,7],[1107,7],[1257,7],[1304,7]]},"12":{"position":[[67,7],[181,7]]},"25":{"position":[[116,7]]},"44":{"position":[[73,7],[649,7]]},"52":{"position":[[134,8],[169,7],[228,7],[246,7]]},"63":{"position":[[80,7],[325,7]]},"69":{"position":[[58,7],[124,7],[298,7],[942,7],[1551,7],[2066,8],[2323,7],[2832,7],[2998,7],[3083,7],[3795,7],[4115,7],[4999,7],[5075,7],[5089,7],[5130,8],[5145,7],[5733,7],[6306,7],[7635,7],[7688,7],[7742,7]]}}}],["storage/codex",{"_index":555,"t":{"38":{"position":[[635,13]]},"44":{"position":[[635,13]]}}}],["storage/logtool",{"_index":644,"t":{"50":{"position":[[153,16]]}}}],["storage/nim",{"_index":566,"t":{"40":{"position":[[336,11],[451,11]]},"42":{"position":[[282,11],[336,11],[390,11],[465,11],[585,11],[697,11]]},"44":{"position":[[776,11]]},"54":{"position":[[70,11]]}}}],["store",{"_index":23,"t":{"2":{"position":[[245,6]]},"4":{"position":[[657,5]]},"6":{"position":[[836,6]]},"44":{"position":[[155,6]]},"52":{"position":[[143,5]]},"65":{"position":[[138,7]]},"69":{"position":[[1329,6],[4325,6],[4523,6],[4757,5],[4817,7],[4878,5],[5251,6],[5317,5],[6515,6],[6767,7]]},"75":{"position":[[342,5],[380,5],[889,6]]},"77":{"position":[[666,5]]}}}],["stori",{"_index":611,"t":{"44":{"position":[[502,7]]},"46":{"position":[[212,7]]}}}],["strict",{"_index":491,"t":{"30":{"position":[[1079,6]]},"103":{"position":[[66,6]]}}}],["strong",{"_index":204,"t":{"8":{"position":[[75,6]]},"10":{"position":[[960,6]]}}}],["stronger",{"_index":707,"t":{"63":{"position":[[100,8]]}}}],["structur",{"_index":74,"t":{"4":{"position":[[158,9],[278,9],[592,9],[776,9]]},"40":{"position":[[100,9]]},"61":{"position":[[398,10]]},"69":{"position":[[3424,9]]}}}],["sub",{"_index":530,"t":{"36":{"position":[[52,3],[148,3]]}}}],["subgroup",{"_index":316,"t":{"16":{"position":[[246,9]]},"61":{"position":[[17,9]]}}}],["subject",{"_index":1086,"t":{"97":{"position":[[487,7],[572,7],[1318,7]]},"99":{"position":[[259,7]]}}}],["submit",{"_index":599,"t":{"44":{"position":[[100,6]]},"69":{"position":[[5660,10]]},"79":{"position":[[179,6]]},"81":{"position":[[73,9]]}}}],["subsect",{"_index":1202,"t":{"113":{"position":[[302,11]]}}}],["subsequ",{"_index":153,"t":{"6":{"position":[[735,10]]}}}],["substitut",{"_index":1121,"t":{"103":{"position":[[165,10]]}}}],["success",{"_index":620,"t":{"46":{"position":[[146,10]]}}}],["successfulli",{"_index":609,"t":{"44":{"position":[[441,12]]}}}],["succinct",{"_index":838,"t":{"69":{"position":[[3690,8]]}}}],["such",{"_index":257,"t":{"10":{"position":[[641,4]]},"44":{"position":[[211,4]]},"69":{"position":[[786,4]]},"75":{"position":[[572,4],[760,4],[1302,4]]},"77":{"position":[[232,4],[527,4]]},"79":{"position":[[186,4]]},"81":{"position":[[421,4],[477,4]]},"83":{"position":[[764,4]]},"95":{"position":[[584,4],[1622,5]]},"97":{"position":[[432,4]]},"99":{"position":[[291,4]]},"101":{"position":[[190,4],[281,4],[347,4],[456,4],[607,4],[731,4]]},"103":{"position":[[442,4],[498,4]]},"111":{"position":[[823,4],[1136,4]]}}}],["suffer",{"_index":235,"t":{"10":{"position":[[240,7]]}}}],["suit",{"_index":448,"t":{"30":{"position":[[154,5]]},"69":{"position":[[4599,6]]}}}],["suitabl",{"_index":629,"t":{"46":{"position":[[392,8]]},"95":{"position":[[463,11]]}}}],["summari",{"_index":531,"t":{"36":{"position":[[130,9]]},"97":{"position":[[837,7]]}}}],["supernod",{"_index":836,"t":{"69":{"position":[[3606,13]]}}}],["supersed",{"_index":1194,"t":{"113":{"position":[[99,9]]}}}],["supplement",{"_index":1103,"t":{"97":{"position":[[1358,12]]}}}],["suppli",{"_index":86,"t":{"4":{"position":[[322,6]]}}}],["support",{"_index":378,"t":{"23":{"position":[[53,7],[289,7]]},"30":{"position":[[166,7],[610,7],[661,10]]},"40":{"position":[[391,7]]},"101":{"position":[[272,8]]}}}],["swiss",{"_index":1136,"t":{"109":{"position":[[0,5]]},"111":{"position":[[1247,5],[1310,5],[1957,5]]}}}],["switzerland",{"_index":936,"t":{"73":{"position":[[317,11]]},"81":{"position":[[179,12],[330,11],[543,11],[645,11]]},"93":{"position":[[258,11]]},"111":{"position":[[1532,12]]}}}],["system",{"_index":306,"t":{"16":{"position":[[87,7]]},"32":{"position":[[23,6]]},"38":{"position":[[144,7]]},"40":{"position":[[602,6]]},"42":{"position":[[92,7]]},"44":{"position":[[12,6],[352,7],[404,6]]},"56":{"position":[[252,6],[444,6],[481,6]]},"63":{"position":[[453,6]]},"69":{"position":[[249,8],[355,8],[589,6],[950,6],[1725,8],[2331,7],[2428,6],[2642,6],[3588,7]]},"83":{"position":[[426,8]]}}}],["take",{"_index":119,"t":{"6":{"position":[[47,6]]},"27":{"position":[[233,4]]},"67":{"position":[[3,4]]},"79":{"position":[[26,4]]}}}],["task",{"_index":534,"t":{"38":{"position":[[53,6]]}}}],["tax",{"_index":1072,"t":{"95":{"position":[[1572,4]]}}}],["tcp/udp",{"_index":632,"t":{"48":{"position":[[10,7]]}}}],["team",{"_index":333,"t":{"18":{"position":[[10,4],[484,4]]},"20":{"position":[[52,6],[130,5],[200,4]]},"34":{"position":[[14,4]]},"36":{"position":[[56,6],[152,5]]},"38":{"position":[[20,4]]},"40":{"position":[[29,4]]},"42":{"position":[[156,4]]},"44":{"position":[[364,4]]}}}],["team'",{"_index":697,"t":{"61":{"position":[[10,6]]}}}],["tech",{"_index":208,"t":{"8":{"position":[[175,4]]},"12":{"position":[[94,4]]},"16":{"position":[[177,5]]}}}],["technic",{"_index":715,"t":{"63":{"position":[[641,9]]},"75":{"position":[[792,9]]},"97":{"position":[[303,9],[639,9]]}}}],["techniqu",{"_index":766,"t":{"69":{"position":[[775,10],[1251,10]]}}}],["technolog",{"_index":740,"t":{"67":{"position":[[69,10]]},"97":{"position":[[156,11]]}}}],["ten",{"_index":616,"t":{"46":{"position":[[60,4]]},"69":{"position":[[1138,3]]}}}],["term",{"_index":131,"t":{"6":{"position":[[255,4]]},"10":{"position":[[167,5],[1295,5]]},"56":{"position":[[147,5],[369,5]]},"69":{"position":[[1080,6],[5116,4],[5896,4]]},"91":{"position":[[58,5],[81,5],[293,5],[439,5],[492,5]]},"93":{"position":[[34,5]]},"99":{"position":[[328,5]]},"101":{"position":[[82,5]]},"103":{"position":[[308,5]]},"105":{"position":[[271,5]]},"107":{"position":[[50,5],[186,5]]},"109":{"position":[[32,5]]},"111":{"position":[[9,6],[167,5]]},"113":{"position":[[14,5],[331,5],[473,5],[516,5],[610,5],[732,5],[867,5]]}}}],["test",{"_index":349,"t":{"18":{"position":[[206,4]]},"20":{"position":[[67,8]]},"27":{"position":[[98,4],[125,4],[287,5]]},"30":{"position":[[41,4],[77,5],[149,4],[303,7],[347,5],[825,5]]},"36":{"position":[[71,8]]},"46":{"position":[[4,7]]},"48":{"position":[[90,5],[108,5]]},"50":{"position":[[61,7]]},"54":{"position":[[23,7],[137,7]]},"61":{"position":[[125,8]]},"63":{"position":[[616,7]]},"69":{"position":[[4436,8]]}}}],["testnet",{"_index":342,"t":{"18":{"position":[[108,7],[137,7],[275,7]]},"34":{"position":[[120,7]]},"46":{"position":[[171,8],[296,7]]},"48":{"position":[[38,7],[239,7],[279,7]]},"56":{"position":[[108,8]]},"59":{"position":[[109,7]]},"61":{"position":[[155,7]]},"69":{"position":[[4465,7],[7796,7],[7926,7]]}}}],["theori",{"_index":1119,"t":{"103":{"position":[[112,6]]}}}],["there'",{"_index":772,"t":{"69":{"position":[[1011,7],[2477,7]]}}}],["therefor",{"_index":1018,"t":{"85":{"position":[[143,9]]}}}],["therein",{"_index":1114,"t":{"101":{"position":[[318,8],[385,7]]}}}],["thing",{"_index":1089,"t":{"97":{"position":[[612,7]]}}}],["third",{"_index":962,"t":{"77":{"position":[[60,5],[237,5]]},"85":{"position":[[46,5],[74,5],[229,5]]},"101":{"position":[[50,5],[157,5],[195,5],[286,5],[352,5],[461,5],[542,5],[612,5],[736,5]]}}}],["those",{"_index":104,"t":{"4":{"position":[[673,5]]},"6":{"position":[[165,5]]},"101":{"position":[[151,5]]}}}],["thread",{"_index":386,"t":{"23":{"position":[[185,9]]}}}],["threadsignalptr",{"_index":394,"t":{"23":{"position":[[254,15]]}}}],["three",{"_index":364,"t":{"20":{"position":[[37,5]]},"36":{"position":[[37,5]]}}}],["through",{"_index":709,"t":{"63":{"position":[[274,7]]},"69":{"position":[[3115,7]]},"95":{"position":[[1018,7]]},"97":{"position":[[462,7],[1174,7]]},"101":{"position":[[572,7],[633,7]]},"111":{"position":[[1204,7]]}}}],["ti",{"_index":138,"t":{"6":{"position":[[437,4]]}}}],["time",{"_index":181,"t":{"6":{"position":[[1457,5]]},"69":{"position":[[920,5],[5424,5],[5518,5],[7118,4]]},"75":{"position":[[413,4],[907,5],[1361,4]]},"87":{"position":[[64,4]]},"97":{"position":[[1378,5]]},"107":{"position":[[70,4]]},"111":{"position":[[1359,4],[2123,4]]}}}],["timelin",{"_index":1094,"t":{"97":{"position":[[755,9],[1273,8]]}}}],["timeout",{"_index":655,"t":{"50":{"position":[[389,7]]}}}],["tini",{"_index":774,"t":{"69":{"position":[[1026,4]]}}}],["token",{"_index":902,"t":{"69":{"position":[[7378,6],[7394,5],[7484,6],[7546,5],[7583,5],[7602,6]]},"95":{"position":[[1750,6]]},"97":{"position":[[376,6]]}}}],["tokenom",{"_index":502,"t":{"32":{"position":[[125,10]]}}}],["tool",{"_index":387,"t":{"23":{"position":[[195,5]]},"27":{"position":[[383,7]]},"50":{"position":[[81,7]]}}}],["top",{"_index":393,"t":{"23":{"position":[[243,3]]},"69":{"position":[[7215,3],[7334,3]]},"75":{"position":[[1310,3],[1321,3]]}}}],["tradit",{"_index":67,"t":{"4":{"position":[[66,11]]}}}],["traffic",{"_index":954,"t":{"75":{"position":[[1285,7]]}}}],["transfer",{"_index":1004,"t":{"83":{"position":[[494,11]]}}}],["transmiss",{"_index":994,"t":{"81":{"position":[[584,12]]}}}],["treat",{"_index":1074,"t":{"95":{"position":[[1611,7]]}}}],["tree",{"_index":674,"t":{"56":{"position":[[275,4]]}}}],["trend",{"_index":952,"t":{"75":{"position":[[1179,6]]}}}],["tri",{"_index":418,"t":{"27":{"position":[[133,3]]},"30":{"position":[[870,3]]}}}],["trial",{"_index":1156,"t":{"111":{"position":[[620,5]]}}}],["tribun",{"_index":1178,"t":{"111":{"position":[[1627,8]]}}}],["truli",{"_index":272,"t":{"10":{"position":[[1052,5]]}}}],["trust",{"_index":603,"t":{"44":{"position":[[223,7]]}}}],["trustless",{"_index":211,"t":{"8":{"position":[[201,9]]}}}],["tune",{"_index":900,"t":{"69":{"position":[[7243,5],[7835,6],[7957,6]]}}}],["tweak",{"_index":481,"t":{"30":{"position":[[969,8]]}}}],["two",{"_index":417,"t":{"27":{"position":[[114,3]]},"30":{"position":[[65,3]]},"59":{"position":[[177,3]]}}}],["type",{"_index":78,"t":{"4":{"position":[[215,5]]},"6":{"position":[[35,6],[145,4]]},"30":{"position":[[185,5]]},"69":{"position":[[4502,5],[4565,5],[4929,5],[6610,4],[7050,5]]}}}],["unabl",{"_index":1163,"t":{"111":{"position":[[1016,6]]}}}],["unalt",{"_index":855,"t":{"69":{"position":[[4699,10]]}}}],["uncertainti",{"_index":1088,"t":{"97":{"position":[[524,12],[1051,11]]}}}],["under",{"_index":722,"t":{"65":{"position":[[246,5]]},"75":{"position":[[220,5]]},"89":{"position":[[138,5]]},"99":{"position":[[48,5]]},"103":{"position":[[34,5]]},"113":{"position":[[951,5]]}}}],["undergo",{"_index":847,"t":{"69":{"position":[[4406,10]]}}}],["understand",{"_index":1197,"t":{"113":{"position":[[139,15]]}}}],["undu",{"_index":1098,"t":{"97":{"position":[[1101,5]]}}}],["unenforc",{"_index":1204,"t":{"113":{"position":[[548,14]]}}}],["union",{"_index":986,"t":{"81":{"position":[[170,5],[635,5]]}}}],["unlawfulli",{"_index":1015,"t":{"83":{"position":[[1029,11]]}}}],["unless",{"_index":976,"t":{"77":{"position":[[715,6]]}}}],["unlik",{"_index":753,"t":{"69":{"position":[[336,6],[7033,6]]},"81":{"position":[[90,8]]}}}],["unreli",{"_index":885,"t":{"69":{"position":[[6295,10]]}}}],["unstopp",{"_index":273,"t":{"10":{"position":[[1058,11]]}}}],["unsuit",{"_index":270,"t":{"10":{"position":[[1009,10]]}}}],["until",{"_index":812,"t":{"69":{"position":[[2471,5]]}}}],["up",{"_index":339,"t":{"18":{"position":[[75,2]]},"30":{"position":[[848,2]]},"46":{"position":[[311,2]]},"65":{"position":[[449,2]]},"69":{"position":[[7115,2]]}}}],["upcom",{"_index":849,"t":{"69":{"position":[[4449,8]]}}}],["updat",{"_index":361,"t":{"18":{"position":[[461,7]]},"20":{"position":[[205,7]]},"27":{"position":[[11,7]]},"30":{"position":[[320,7],[424,6],[536,7],[587,8]]},"40":{"position":[[406,7]]},"42":{"position":[[495,7]]},"69":{"position":[[7258,7]]},"71":{"position":[[18,8]]},"83":{"position":[[326,6]]},"91":{"position":[[18,8]]},"97":{"position":[[1212,6]]}}}],["upload",{"_index":166,"t":{"6":{"position":[[1078,7]]}}}],["upon",{"_index":271,"t":{"10":{"position":[[1032,4],[1144,4]]},"87":{"position":[[197,4]]},"95":{"position":[[1308,4]]},"107":{"position":[[229,4]]}}}],["us",{"_index":348,"t":{"18":{"position":[[198,4],[259,5],[417,4]]},"30":{"position":[[191,5]]},"40":{"position":[[514,5]]},"42":{"position":[[69,4]]},"56":{"position":[[342,3]]},"69":{"position":[[485,3],[1246,4],[1419,4],[1882,5],[2727,3],[3203,5],[3635,3],[4101,4],[5888,3],[5973,3],[7735,3],[7848,3]]},"75":{"position":[[529,3],[577,3],[609,3],[952,3]]},"77":{"position":[[145,3],[465,5]]},"81":{"position":[[389,3]]},"91":{"position":[[67,3],[90,5],[160,3],[302,3],[328,3],[356,3],[448,4],[501,4],[529,3]]},"93":{"position":[[43,4]]},"95":{"position":[[58,3],[498,3],[855,3]]},"97":{"position":[[369,3]]},"99":{"position":[[254,4]]},"101":{"position":[[144,3],[409,6],[514,3]]},"103":{"position":[[317,4],[371,3]]},"105":{"position":[[162,3],[280,4]]},"107":{"position":[[59,3],[195,3]]},"109":{"position":[[41,3]]},"111":{"position":[[176,4],[230,3],[713,3]]},"113":{"position":[[23,3],[340,3],[482,4],[525,3],[619,4],[741,4],[876,4]]}}}],["usag",{"_index":89,"t":{"4":{"position":[[378,6]]},"10":{"position":[[1326,6]]}}}],["user",{"_index":139,"t":{"6":{"position":[[476,5],[1073,4]]},"10":{"position":[[176,4]]},"52":{"position":[[117,5],[186,4]]},"63":{"position":[[288,5]]},"69":{"position":[[1466,6]]},"71":{"position":[[85,5]]},"75":{"position":[[83,5]]},"77":{"position":[[639,5]]},"99":{"position":[[153,5]]}}}],["user’",{"_index":538,"t":{"38":{"position":[[196,6]]}}}],["util",{"_index":901,"t":{"69":{"position":[[7306,7],[7594,7]]},"95":{"position":[[441,8]]}}}],["utilis",{"_index":91,"t":{"4":{"position":[[429,7]]}}}],["utils/json",{"_index":468,"t":{"30":{"position":[[714,10]]}}}],["v1",{"_index":696,"t":{"59":{"position":[[429,2]]}}}],["v1.0",{"_index":702,"t":{"61":{"position":[[280,4]]}}}],["v2",{"_index":458,"t":{"30":{"position":[[379,2]]}}}],["v4",{"_index":413,"t":{"27":{"position":[[80,2],[452,2]]}}}],["valid",{"_index":186,"t":{"6":{"position":[[1585,5]]},"44":{"position":[[484,11]]},"69":{"position":[[5644,11],[5751,9],[5770,9],[5849,10]]},"83":{"position":[[752,8]]}}}],["vari",{"_index":126,"t":{"6":{"position":[[150,5]]},"97":{"position":[[771,4]]}}}],["varieti",{"_index":980,"t":{"79":{"position":[[81,7]]}}}],["variou",{"_index":336,"t":{"18":{"position":[[47,7]]},"20":{"position":[[160,7],[216,7]]},"54":{"position":[[107,7]]},"69":{"position":[[1704,7],[4177,7],[4557,7]]}}}],["vast",{"_index":856,"t":{"69":{"position":[[4825,4]]}}}],["veri",{"_index":773,"t":{"69":{"position":[[1021,4]]}}}],["verifi",{"_index":168,"t":{"6":{"position":[[1121,6]]},"30":{"position":[[237,8],[272,8]]},"32":{"position":[[296,8]]},"69":{"position":[[3885,6]]}}}],["version",{"_index":351,"t":{"18":{"position":[[222,7],[400,7]]},"27":{"position":[[469,8]]},"42":{"position":[[22,7]]},"59":{"position":[[267,8]]}}}],["via",{"_index":403,"t":{"25":{"position":[[41,4]]},"38":{"position":[[564,3]]},"67":{"position":[[137,3]]},"111":{"position":[[1566,3]]}}}],["victim",{"_index":253,"t":{"10":{"position":[[568,6]]}}}],["video",{"_index":969,"t":{"77":{"position":[[410,6],[532,7],[880,6]]},"111":{"position":[[1570,5]]}}}],["view",{"_index":563,"t":{"40":{"position":[[258,6]]}}}],["violat",{"_index":1051,"t":{"95":{"position":[[325,9]]},"105":{"position":[[244,9]]}}}],["virtual/onlin",{"_index":1177,"t":{"111":{"position":[[1587,14]]}}}],["visit",{"_index":919,"t":{"71":{"position":[[185,8]]}}}],["visitor",{"_index":951,"t":{"75":{"position":[[1127,7],[1244,9]]}}}],["vital",{"_index":755,"t":{"69":{"position":[[475,5]]}}}],["wait",{"_index":471,"t":{"30":{"position":[[801,4]]},"69":{"position":[[2465,5]]}}}],["waiv",{"_index":1151,"t":{"111":{"position":[[453,6],[588,5],[2192,5]]},"113":{"position":[[778,6]]}}}],["waku",{"_index":215,"t":{"8":{"position":[[265,5]]},"27":{"position":[[395,4]]}}}],["want",{"_index":103,"t":{"4":{"position":[[649,4]]}}}],["wari",{"_index":903,"t":{"69":{"position":[[7431,4]]}}}],["warn",{"_index":721,"t":{"65":{"position":[[221,8]]}}}],["warrant",{"_index":1052,"t":{"95":{"position":[[356,7]]}}}],["warranti",{"_index":1043,"t":{"95":{"position":[[128,10],[205,10],[1343,8]]},"113":{"position":[[187,11]]}}}],["way",{"_index":475,"t":{"30":{"position":[[898,3]]},"69":{"position":[[1589,3],[4257,3]]},"75":{"position":[[684,3]]},"103":{"position":[[275,3]]}}}],["web3",{"_index":12,"t":{"2":{"position":[[127,4]]},"12":{"position":[[89,4]]},"16":{"position":[[187,5]]},"69":{"position":[[4661,4]]}}}],["websit",{"_index":917,"t":{"71":{"position":[[137,7],[145,12],[198,8]]},"75":{"position":[[96,8],[540,8],[588,7],[857,8],[1236,7]]},"77":{"position":[[130,7],[392,7]]},"79":{"position":[[117,7]]},"85":{"position":[[8,8],[58,9],[241,9]]},"87":{"position":[[106,7],[221,8]]},"91":{"position":[[50,7],[71,9],[172,8],[238,8],[285,7],[339,7],[367,7],[431,7],[484,7],[537,8]]},"93":{"position":[[26,7]]},"95":{"position":[[4,7],[66,7],[509,8],[538,7],[575,8],[740,7],[866,7],[1031,7],[1644,7]]},"97":{"position":[[4,7],[475,7],[1149,7],[1187,8],[1223,7]]},"99":{"position":[[4,7],[381,8]]},"101":{"position":[[18,7],[62,8],[169,9],[207,9],[298,8],[364,8],[473,8],[554,8],[584,8],[624,8],[645,8],[748,9]]},"103":{"position":[[300,7],[326,8],[354,8],[382,8]]},"105":{"position":[[173,8],[201,8],[263,7]]},"107":{"position":[[42,7],[132,7],[178,7],[253,8]]},"109":{"position":[[24,7]]},"111":{"position":[[159,7],[185,8],[213,8],[241,8]]},"113":{"position":[[6,7],[87,7],[242,8],[323,7],[465,7],[508,7],[602,7],[724,7],[859,7]]}}}],["week",{"_index":347,"t":{"18":{"position":[[179,5]]}}}],["welcom",{"_index":327,"t":{"16":{"position":[[482,8]]},"65":{"position":[[300,7]]}}}],["well",{"_index":1180,"t":{"111":{"position":[[1691,4]]}}}],["what’",{"_index":1095,"t":{"97":{"position":[[781,6]]}}}],["whenev",{"_index":937,"t":{"73":{"position":[[329,8]]},"93":{"position":[[270,8]]}}}],["wherev",{"_index":998,"t":{"83":{"position":[[98,8]]}}}],["whether",{"_index":726,"t":{"65":{"position":[[332,7]]},"95":{"position":[[1366,7],[1397,7]]},"109":{"position":[[82,7]]}}}],["whitepap",{"_index":201,"t":{"6":{"position":[[1934,10]]}}}],["wide",{"_index":76,"t":{"4":{"position":[[180,4]]}}}],["widespread",{"_index":60,"t":{"2":{"position":[[773,10]]}}}],["will",{"_index":860,"t":{"69":{"position":[[5240,7]]}}}],["wip",{"_index":151,"t":{"6":{"position":[[711,3]]},"30":{"position":[[1086,3]]},"44":{"position":[[604,5],[745,5]]},"54":{"position":[[39,5]]}}}],["wire",{"_index":537,"t":{"38":{"position":[[125,6]]}}}],["withdraw",{"_index":1006,"t":{"83":{"position":[[550,8]]}}}],["withdrawn",{"_index":1009,"t":{"83":{"position":[[807,9]]}}}],["within",{"_index":197,"t":{"6":{"position":[[1851,6]]},"111":{"position":[[1055,6],[2078,6]]}}}],["without",{"_index":269,"t":{"10":{"position":[[928,7]]},"69":{"position":[[4846,7]]},"87":{"position":[[73,7]]},"95":{"position":[[182,7]]},"97":{"position":[[1384,7]]},"105":{"position":[[220,7]]},"107":{"position":[[79,7]]},"109":{"position":[[115,7]]}}}],["word",{"_index":718,"t":{"65":{"position":[[121,6]]}}}],["work",{"_index":314,"t":{"16":{"position":[[210,7],[555,4]]},"18":{"position":[[515,5]]},"23":{"position":[[80,7]]},"27":{"position":[[225,4]]},"30":{"position":[[579,4],[653,4]]},"38":{"position":[[485,4]]},"40":{"position":[[363,7],[481,7],[544,4]]},"42":{"position":[[178,4]]},"44":{"position":[[372,7]]},"50":{"position":[[334,7]]},"54":{"position":[[0,7]]},"61":{"position":[[31,7]]},"69":{"position":[[3295,5]]}}}],["worker",{"_index":389,"t":{"23":{"position":[[218,6]]}}}],["workload",{"_index":636,"t":{"48":{"position":[[114,8]]}}}],["worldwid",{"_index":302,"t":{"14":{"position":[[46,11]]}}}],["worthwhil",{"_index":814,"t":{"69":{"position":[[2514,11]]}}}],["wrap",{"_index":338,"t":{"18":{"position":[[70,4]]},"25":{"position":[[11,7]]}}}],["write",{"_index":432,"t":{"27":{"position":[[281,5]]},"61":{"position":[[419,5]]}}}],["written",{"_index":552,"t":{"38":{"position":[[587,7]]},"111":{"position":[[862,7]]},"113":{"position":[[204,7]]}}}],["wrote",{"_index":414,"t":{"27":{"position":[[83,5]]}}}],["x",{"_index":733,"t":{"65":{"position":[[524,1]]}}}],["ye",{"_index":821,"t":{"69":{"position":[[2793,4],[4147,4],[7787,4]]}}}],["year",{"_index":157,"t":{"6":{"position":[[771,5]]},"34":{"position":[[146,5]]},"69":{"position":[[1150,6]]},"111":{"position":[[2089,4]]}}}],["youtub",{"_index":967,"t":{"77":{"position":[[379,8],[422,8],[540,7],[649,7],[814,7]]}}}],["youtube’",{"_index":971,"t":{"77":{"position":[[471,9],[860,9]]}}}],["zero",{"_index":575,"t":{"42":{"position":[[77,4]]}}}],["zk",{"_index":44,"t":{"2":{"position":[[567,2]]},"16":{"position":[[108,2]]},"42":{"position":[[100,5]]},"61":{"position":[[231,2],[437,2]]}}}],["zug",{"_index":926,"t":{"73":{"position":[[200,3],[313,3]]},"93":{"position":[[140,3],[254,3]]},"111":{"position":[[1527,4]]}}}]],"pipeline":["stemmer"]}}] \ No newline at end of file diff --git a/secure-cloudless-storage/index.html b/secure-cloudless-storage/index.html index c6983b4..5742df9 100644 --- a/secure-cloudless-storage/index.html +++ b/secure-cloudless-storage/index.html @@ -5,7 +5,7 @@ Codex | Embrace a Cloudless, P2P Storage Solution | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Embrace a Cloudless, P2P Storage Solution

Codex offers secure, persistent, and efficient data storage solutions.

Overview

The Challenge

Traditional cloud storage solutions often face challenges with centralisation, security, transparency, and efficiency, leading to potential vulnerabilities and inefficiencies.

Our Solution

Codex provides a decentralised cloudless storage solution, ensuring secure, persistent, and efficient data storage.

How it works

Codex's decentralised storage solution ensures that your data remains secure, persistent, and efficient, overcoming the limitations of traditional cloud storage services. Our solution is cloudless, which means your data does not live in a warehouse with a single point of failure.

Why Choose Codex

1

Decentralised storage

2

Enhanced security

3

Persistent data storage

Frequently Asked Questions

Codex provides secure cloud storage by decentralising data across multiple nodes and employing advanced cryptographic techniques to protect data integrity and privacy.
Codex offers a cost-effective and efficient alternative to traditional cloud storage, ensuring data persistence, security, and reduced risk of centralisation.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/secure-custodianless-data/index.html b/secure-custodianless-data/index.html index 159ef31..b8e91a3 100644 --- a/secure-custodianless-data/index.html +++ b/secure-custodianless-data/index.html @@ -5,7 +5,7 @@ Codex | Secure Custodianless Data with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Secure Custodianless Data with Codex

Codex offers decentralised and secure data management solutions.

Overview

The Challenge

Centralised data management platforms and applications often face security and privacy issues, making them vulnerable to data breaches and misuse.

Our Solution

Codex provides decentralised and secure data management solutions, ensuring your identity remains private and protected.

How it works

Codex's decentralised data management solution ensures that your identity data is secure and private, overcoming the limitations of centralised platforms.

Why Choose Codex

1

Decentralised data management

2

Enhanced privacy

3

Improved security

Frequently Asked Questions

Codex ensures secure platform development by decentralising data storage and employing cryptographic techniques to protect user data from unauthorised access and breaches.
Codex offers enhanced privacy and security for application developers, ensuring they maintain control over their data without relying on central authorities.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/secure-data-collaboration/index.html b/secure-data-collaboration/index.html index 4909347..d687627 100644 --- a/secure-data-collaboration/index.html +++ b/secure-data-collaboration/index.html @@ -5,7 +5,7 @@ Codex | Secure Data Collaboration with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Secure Data Collaboration with Codex

Codex offers secure and efficient data collaboration solutions, ensuring your data remains private and protected.

Overview

The Challenge

Data collaboration often faces challenges with security and privacy, making it difficult to ensure data integrity and protection.

Our Solution

Codex provides secure and efficient data collaboration solutions, ensuring your data remains private and protected.

How it works

Codex's secure data collaboration solution ensures that your data remains private and protected, overcoming the challenges of traditional collaboration methods.

Why Choose Codex

1

Secure data collaboration

2

Enhanced privacy

3

Improved data integrity

Frequently Asked Questions

Codex ensures secure data collaboration by decentralising data storage, encrypting data, and maintaining privacy throughout the collaboration process.
Codex provides a secure and efficient platform for data collaboration, ensuring that data remains private, protected, and accessible only to authorised parties.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/secure-ethereum-scalability/index.html b/secure-ethereum-scalability/index.html index 9f1a767..a294f67 100644 --- a/secure-ethereum-scalability/index.html +++ b/secure-ethereum-scalability/index.html @@ -5,7 +5,7 @@ Codex | Enhance Ethereum's Archival Data Storage | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Enhance Ethereum's Archival Data Storage

Codex offers secure archival data storage and persistence for Ethereum, ensuring your data remains accessible and durable.

Overview

The Challenge

The introduction of data sampling (‘data blob’) with the implementation of EIP-4844 is a step towards solving the scalability of the Ethereum Network, but dependence on external data availability introduces security risks for rollups and their dapp ecosystem.

Our Solution

Codex offers secure data storage and persistence for Ethereum, ensuring your data remains accessible and durable.

How it works

Codex's innovative data sampling technique ensures that Ethereum's scalability is enhanced without compromising on data persistence and security. Our solution mitigates the risks associated with external data availability, making rollups and dapp ecosystems more secure.

Why Choose Codex

1

Secure data availability

2

Improved scalability

3

Reduced security risks for rollups

Frequently Asked Questions

Codex is a state-of-the-art, decentralized storage protocol that provides a solution for highly durable data storage with high decentralization, aiming to resist censorship and prevent single points of failure inherent in centralized systems.
Unlike centralized systems, Codex is designed to offer data durability, resiliency to cloud failures, and censorship resistance, making it vital for use cases like preserving factual history records.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/secure-video-storage/index.html b/secure-video-storage/index.html index 1b6ad86..7f554ba 100644 --- a/secure-video-storage/index.html +++ b/secure-video-storage/index.html @@ -5,7 +5,7 @@ Codex | Prevent Media Censorship with Codex | Codex - + @@ -16,7 +16,7 @@ .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Prevent Media Censorship with Codex

Codex enables decentralised video storage, ensuring your content is safe from censorship.

Overview

The Challenge

Using corporatised video platforms and centralised video outlets represents massive censorship and outage risk. Many videos have been taken down due to their political content or other arbitrarily determined objectionable material.

Our Solution

Codex provides decentralised video storage, ensuring your content is safe from arbitrary takedowns and censorship.

How it works

Codex's decentralised storage solution ensures that your media remains accessible and secure, free from arbitrary censorship.

Why Choose Codex

1

Decentralised storage

2

Censorship resistance

3

Enhanced security

Frequently Asked Questions

Codex prevents censorship by storing your media across a decentralised network, ensuring that no single entity controls your content.
Decentralized video storage ensures that your content remains accessible, secure, and free from the risk of arbitrary takedowns by central authorities.

Get Started with Codex.

Subscribe to our newsletter

- + \ No newline at end of file diff --git a/security/index.html b/security/index.html index 71acb14..39a0d8a 100644 --- a/security/index.html +++ b/security/index.html @@ -5,7 +5,7 @@ Security | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}
- + \ No newline at end of file diff --git a/terms/index.html b/terms/index.html index d8bb622..7495a91 100644 --- a/terms/index.html +++ b/terms/index.html @@ -5,7 +5,7 @@ Terms of Use | Codex - + @@ -15,7 +15,7 @@ ) .lsd-dropdown__trigger:hover .lsd-dropdown__option-label,.lsd-dropdown:not(.lsd-dropdown--disabled):not( .lsd-dropdown--error ) .lsd-dropdown__trigger:focus .lsd-dropdown__option-label{-webkit-text-decoration:underline;text-decoration:underline;}.lsd-dropdown__label{display:block;}.lsd-dropdown__button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}.lsd-dropdown__trigger{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;border:none;cursor:pointer;background:none;}.lsd-dropdown__trigger:focus{outline:none;}.lsd-dropdown__option-label{cursor:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.lsd-dropdown__icons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:8px;}.lsd-dropdown__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.lsd-dropdown__supporting-text{margin:6px 14px;}.lsd-dropdown--error .lsd-dropdown__option-label{-webkit-text-decoration:line-through;text-decoration:line-through;}.lsd-dropdown--disabled{opacity:0.34;cursor:initial;}.lsd-dropdown--large{width:208px;}.lsd-dropdown--large.lsd-dropdown--error{width:230px;}.lsd-dropdown--large .lsd-dropdown__label{margin:0 0 6px 18px;}.lsd-dropdown--large .lsd-dropdown__button-container{height:40px;}.lsd-dropdown--large .lsd-dropdown__trigger{padding:10px 0px 10px 18px;}.lsd-dropdown--large .lsd-dropdown__icons{padding:0px 14px;}.lsd-dropdown--medium{width:188px;}.lsd-dropdown--medium.lsd-dropdown--error{width:210px;}.lsd-dropdown--medium .lsd-dropdown__label{margin:0 0 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__button-container{height:32px;}.lsd-dropdown--medium .lsd-dropdown__trigger{padding:6px 0px 6px 14px;}.lsd-dropdown--medium .lsd-dropdown__icons{padding:0px 12px;}.lsd-dropdown--small{width:164px;}.lsd-dropdown--small.lsd-dropdown--error{width:186px;}.lsd-dropdown--small .lsd-dropdown__label{margin:0 0 6px 12px;}.lsd-dropdown--small .lsd-dropdown__button-container{height:28px;}.lsd-dropdown--small .lsd-dropdown__trigger{padding:6px 0px 6px 12px;}.lsd-dropdown--small .lsd-dropdown__icons{padding:0px 10px;}.lsd-dropdown--outlined .lsd-dropdown__button-container{border:1px solid rgb(var(--lsd-border-primary));}.lsd-dropdown--underlined .lsd-dropdown__button-container{border:1px solid transparent;border-bottom:1px solid rgb(var(--lsd-border-primary));}

Terms of Use

Last updated: 14 February 2024

These website terms of use ('Website Terms of Use') are entered into by you and us, and they govern your access and use of this Website, including any content and functionality contained in the Website.

It is your responsibility to read the Website Terms of Use carefully before your use of the Website and your use of the Website means you have agreed to be bound and comply with these Website Terms of Use.

If you do not agree with these Website Terms of Use, you must not access or use the Website.

1) Who we are

For the purposes of these Website Terms of Use, the relevant entity is the Logos Collective Association, which has its registered office in Zug and its legal domicile address at:

Logos Collective Association
c/o PST Consulting GmbH
Baarerstrasse 10
6300 Zug
Switzerland

Whenever we refer to “Logos”, “we”, “us” or any other similar references, we are referring to the Logos Collective Association.

2) Disclaimers

The Website is provided by us on an ‘as is’ basis and you use the Website at your own sole discretion and risk.

We disclaim all warranties of any kind, express or implied, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement of intellectual property or other violation of rights. We do not warrant or make any representations concerning the completeness, accuracy, legality, utility, reliability, suitability or availability of the use of the Website, the content on this Website or otherwise relating to the Website, such content or on any sites linked to this site.These disclaimers will apply to the maximum extent permitted by applicable law.

We make no claims that the Website or any of its content is accessible, legally compliant or appropriate in your jurisdiction. Your access or use of the Website is at your own sole discretion and you are solely responsible for complying with any applicable local laws.

The content herein or as accessible through this website is intended to be made available for informational purposes only and should not be considered as creating any expectations or forming the basis of any contract, commitment or binding obligation with us. No information herein shall be considered to contain or be relied upon as a promise, representation, warranty or guarantee, whether express or implied and whether as to the past, present or the future in relation to the projects and matters described herein.

The information contained herein does not constitute financial, legal, tax, or other advice and should not be treated as such.

Nothing in this Website should be construed by you as an offer to buy or sell, or soliciting any offer to buy or sell any tokens or any security.

3) Forward looking statements

The Website may also contain forward-looking statements that are based on current expectations, estimates, forecasts, assumptions and projections about the technology, industry and markets in general.

The forward looking statements, which may include statements about the roadmap, project descriptions, technical details, functionalities, features, the development and use of tokens by projects, and any other statements related to such matters or as accessible through this website are subject to a high degree of risk and uncertainty. The forward looking statements are subject to change based on, among other things, market conditions, technical developments, and regulatory environment. The actual development and results, including the order and the timeline, might vary from what’s presented. The information contained herein is a summary and does not purport to be accurate, reliable or complete and we bear no responsibility for the accuracy, reliability or completeness of information contained herein. Because of the high degree of risk and uncertainty described above, you should not place undue reliance on any matters described in this website or as accessible through this website.

While we aim to update our website regularly, all information, including the timeline and the specifics of each stage, is subject to change and may be amended or supplemented at any time, without notice and at our sole discretion.

4) Intellectual property rights

The Website and its contents are made available under Creative Commons Attribution 4.0 International license (CC-BY 4.0). In essence this licence allows users to copy, modify and distribute the content in any format for any purpose, including commercial use, subject to certain requirements such as attributing us. For the full terms of this licence, please refer to the following website: https://creativecommons.org/licenses/by/4.0/.

To the extent the Website provides any links to a third party website, then their terms and conditions, including privacy policies, govern your use of those third party websites. By linking such third party websites, Status does not represent or imply that it endorses or supports such third party websites or content therein, or that it believes such third party websites and content therein to be accurate, useful or non-harmful. We have no control over such third party websites and will not be liable for your use of or activities on any third party websites accessed through the Website. If you access such third party websites through the Website, it is at your own risk and you are solely responsible for your activities on such third party websites.

6) Limitation of liability

We will not be held liable to you under any contract, negligence, strict liability, or other legal or equitable theory for any lost profits, cost of procurement for substitute services, or any special, incidental, or consequential damages related to, arising from, or in any way connected with these Website Terms of Use, the Website, the content on the Website, or your use of the Website, even if we have been advised of the possibility of such damages. In any event, our aggregate liability for such claims is limited to EUR 100 (one hundred Euros). This limitation of liability will apply to the maximum extent permitted by applicable law.

7) Indemnity

You shall indemnify us and hold us harmless from and against any and all claims, damages and expenses, including attorneys’ fees, arising from or related to your use of the Website, the content on the Website, including without limitation your violation of these Website Terms of Use.

8) Modifications

We may modify or replace any part of this Website Terms of Use at any time and without notice. You are responsible for checking the Website periodically for any changes. The new Website Terms of Use will be effective immediately upon its posting on the Website.

9) Governing law

Swiss law governs these Website Terms of Use and any disputes between you and us, whether in court or arbitration, without regard to conflict of laws provisions.

10) Disputes

In these terms, “dispute” has the broadest meaning enforceable by law and includes any claim you make against or controversy you may have in relation to these Website Terms of Use, the Website, the content on the Website, or your use of the Website.

We prefer arbitration over litigation as we believe it meets our principle of resolving disputes in the most effective and cost effective manner. You are bound by the following arbitration clause, which waives your right to litigation and to be heard by a judge. Please note that court review of an arbitration award is limited. You also waive all your rights to a jury trial (if any) in any and all jurisdictions.

If a (potential) dispute arises, you must first use your reasonable efforts to resolve it amicably with us. If these efforts do not result in a resolution of such dispute, you shall then send us a written notice of dispute setting out (i) the nature of the dispute, and the claim you are making; and (ii) the remedy you are seeking.

If we and you are unable to further resolve this dispute within sixty (60) calendar days of us receiving this notice of dispute, then any such dispute will be referred to and finally resolved by you and us through an arbitration administered by the Swiss Chambers’ Arbitration Institution in accordance with the Swiss Rules of International Arbitration for the time being in force, which rules are deemed to be incorporated herein by reference. The arbitral decision may be enforced in any court. The arbitration will be held in Zug, Switzerland, and may be conducted via video conference virtual/online methods if possible. The tribunal will consist of one arbitrator, and all proceedings as well as communications between the parties will be kept confidential. The language of the arbitration will be in English. Payment of all relevant fees in respect of the arbitration, including filing, administration and arbitrator fees will be in accordance with the Swiss Rules of International Arbitration.

Regardless of any applicable statute of limitations, you must bring any claims within one year after the claim arose or the time when you should have reasonably known about the claim. You also waive the right to participate in a class action lawsuit or a classwide arbitration against us.

11) About these Website Terms of Use

These Website Terms of Use cover the entire agreement between you and us regarding the Website and supersede all prior and contemporaneous understandings, agreements, representations and warranties, both written and oral, with respect to the Website.

The captions and headings identifying sections and subsections of these Website Terms of Use are for reference only and do not define, modify, expand, limit, or affect the interpretation of any provisions of these Website Terms of Use.

If any part of these Website Terms of Use is held invalid or unenforceable, that part will be severable from these Website Terms of Use, and the remaining portions will remain in full force and effect. If we fail to enforce any of these Website Terms of Use, that does not mean that we have waived our right to enforce them.

If you have any specific questions about these Website Terms of Use, please contact us at legal@free.technology.

This document is licensed under CC-BY-SA.

- + \ No newline at end of file