Compare commits

..

No commits in common. "948d6c0de2edc6df918d3c4cf2fccf3424cc5291" and "ba303b6e3eb8220bf2851a949db109e68ccd1f8c" have entirely different histories.

211 changed files with 96 additions and 165 deletions

View File

@ -2,11 +2,8 @@
- [Introduction](projectinca/intro.md) - [Introduction](projectinca/intro.md)
- [The Plan](projectinca/theplan_c.md) - [The Plan](projectinca/theplan_c.md)
- [Funding](projectinca/funding.md) - [Funding](projectinca/funding.md)
- [P2P Promotion](projectinca/peer2peer_promotion.md)fl - [P2P Promotion](projectinca/peer2peer_promotion.md)
- [Liquidity](projectinca/liquidity.md) - [Liquidity](projectinca/liquidity.md)
<<<<<<< HEAD
- [Collaboration INCA Launch](projectinca/collab.md)
=======
- [INCA Tokenomics](projectinca/tokens.md) - [INCA Tokenomics](projectinca/tokens.md)
- [INCA](projectinca/inca.md) - [INCA](projectinca/inca.md)
- [INCA Grants](projectinca/grants.md) - [INCA Grants](projectinca/grants.md)
@ -34,14 +31,10 @@
- [INCA Network Map](projectinca/networkmap.md) - [INCA Network Map](projectinca/networkmap.md)
- [Reward Simulation](projectinca/inca_farming_reward.md) - [Reward Simulation](projectinca/inca_farming_reward.md)
- [INCA Launch Collaboration](projectinca/collab.md) - [INCA Launch Collaboration](projectinca/collab.md)
>>>>>>> ba303b6e3eb8220bf2851a949db109e68ccd1f8c
- [Remuneration](projectinca/remuneration.md) - [Remuneration](projectinca/remuneration.md)
- [Promotion Effort](tfgrid3/promotion.md) - [Promotion Effort](tfgrid3/promotion.md)
- [Messaging](tfgrid3/messaging.md) - [Messaging](tfgrid3/messaging.md)
- [Teams](projectinca/teams.md) - [Teams](projectinca/teams.md)
<<<<<<< HEAD
- [Hero - Project Mycelium](projectinca/hero.md)
=======
- [INCA Grid Utilization](partners_utilization/partners.md) - [INCA Grid Utilization](partners_utilization/partners.md)
- [Hero - Project Mycelium](projectinca/hero.md) - [Hero - Project Mycelium](projectinca/hero.md)
- [Digital Freezone](partners_utilization/freezone.md) - [Digital Freezone](partners_utilization/freezone.md)
@ -59,23 +52,12 @@
- [AI Blocks](tfgrid4/aiblock.md) - [AI Blocks](tfgrid4/aiblock.md)
- [Cloud Blocks](tfgrid4/cloudblock.md) - [Cloud Blocks](tfgrid4/cloudblock.md)
- [Storage Blocks](tfgrid4/storageblock.md) - [Storage Blocks](tfgrid4/storageblock.md)
>>>>>>> ba303b6e3eb8220bf2851a949db109e68ccd1f8c
- [Project Info](projectinca/proj_info.md) - [Project Info](projectinca/proj_info.md)
- [About Us](tfgrid3/who_are_we.md) - [About Us](tfgrid3/who_are_we.md)
- [The Internet Today](tech/internet_today.md) - [The Internet Today](tech/internet_today.md)
- [History c64](tech/history/c64.md) - [History c64](tech/history/c64.md)
- [Too Many Layers](tech/history/layers.md) - [Too Many Layers](tech/history/layers.md)
- [Values](values/planet_people_first.md) - [Values](values/planet_people_first.md)
- [TFGrid Utilization](partners_utilization/partners.md)
- [Digital Freezone](partners_utilization/freezone.md)
- [Tanzania Internet](partners_utilization/tanzania.md)
- [Elestio](partners_utilization/elestio.md)
- [Earth Wallet](partners_utilization/earth_wallet.md)
- [Holochain](partners_utilization/holochain.md)
- [Sikana](partners_utilization/sikana.md)
- [vindo](partners_utilization/vindo.md)
- [vverse](partners_utilization/vverse.md)
- [Tier S Datacenter](partners_utilization/tier_s_datacenter.md)
- [Tech Key Innovations](tech/key_innovations_overview.md) - [Tech Key Innovations](tech/key_innovations_overview.md)
- [Mycelium Network](tech/mycelium_innovation.md) - [Mycelium Network](tech/mycelium_innovation.md)
- [Zero-OS](tech/zos_innovation.md) - [Zero-OS](tech/zos_innovation.md)
@ -87,27 +69,22 @@
- [Technology](tech/technology.md) - [Technology](tech/technology.md)
- [Architecture](tech/architecture.md) - [Architecture](tech/architecture.md)
- [Energy Efficient](tech/energy_efficient.md) - [Energy Efficient](tech/energy_efficient.md)
- [Why TFGrid](why/why.md) - [Why A New Cloud](why/why.md)
- [Cloud Too Centralized](why/current_cloud_too_centralized.md) - [Cloud Too Centralized](why/current_cloud_too_centralized.md)
- [Countries Don't Have Their Internet](why/countries_no_internet.md) - [Countries Don't Have Their Internet](why/countries_no_internet.md)
- [Human Right](why/internet_human_right.md) - [Human Right](why/internet_human_right.md)
- [Social Warming](why/social_warming.md) - [Social Warming](why/social_warming.md)
- [Appendix](projectinca/appendix.md) - [INCA Cloud Core Capabilities](tech/features.md)
- [TFConnect NG Spec](projectinca/tfconnect.md) - [Compute](tech/compute.md)
- [Tokenomics TFGrid 3.14](tfgrid3/tokenomics.md) - [Zero-OS](tech/zero_os.md)
- [Farming Reward TFGrid 3](tfgrid3/farming_reward.md) - [Infrastructure As Code](tech/smartcontract_iac.md)
- [Tokens Overview TFGrid 3](tfgrid3/tokens_overview.md) - [CoreX](tech/corex.md)
- [TFGrid Core Capabilities](tech/features.md) - [Storage](tech/qsss_home.md)
- [Compute](tech/compute.md) - [Quantum Safe Storage Algo](tech/qss_algorithm.md)
- [Zero-OS](tech/zos.md) - [Zero Knowledge proof](tech/qss_zero_knowledge_proof.md)
- [Infrastructure As Code](tech/smartcontract_iac.md) - [NFT Storage](tech/nft_storage.md)
- [CoreX](tech/corex.md) - [S3 Storage](tech/s3_interface)
- [Storage](tech/qsss_home.md) - [File System](tech/qss_filesystem.md)
- [Quantum Safe Storage Algo](tech/qss_algorithm.md) - [Network](tech/networking.md)
- [Zero Knowledge proof](tech/qss_zero_knowledge_proof.md) - [Mycelium](tech/mycelium.md)
- [NFT Storage](tech/nft_storage.md) - [Web Gateway](tech/webgw.md)
- [S3 Storage](tech/s3_interface)
- [File System](tech/qss_filesystem.md)
- [Network](tech/networking.md)
- [Mycelium](tech/mycelium.md)
- [Web Gateway](tech/webgw.md)

View File

@ -0,0 +1,16 @@
Here is a detailed explanation of how the storage system works based on the context documents:
The storage system is designed to be decentralized and operate in a peer-to-peer manner across a network of nodes called 3Nodes. Data is dispersed and split into fragments that are distributed across multiple 3Nodes in a quantum-safe way, so no single node contains all the information to reconstruct the data.
This dispersed storage approach provides extreme resilience against data loss or corruption. Even if multiple nodes fail, the data can be rebuilt from the remaining fragments. The system actively monitors for and fixes any data rot that could occur.
The storage algorithm manages the distributed fragments and provides interfaces for storage and retrieval. This allows various storage applications to be built on top, like S3 object storage, filesystems, backups etc.
A key component is the Zero-Stor storage engine which handles dispersing data across nodes. It requires only 20% overhead to be resilient to 4 simultaneous node failures, far less than the 400% overhead needed by traditional storage systems.
The system provides data sovereignty as users have full control over where data is stored. Data remains in the country rather than relying on external centralized providers.
It also utilizes end-to-end encryption for secure data transmission. The quantum-safe dispersal makes it impervious to hacking, even by quantum computers.

View File

@ -1,9 +1,25 @@
!!wiki.include page:'tech:fungistor_innovation_short0.md' ### The Problem
Existing blockchain, internet, and P2P content delivery and storage systems suffer from sluggish performance and are too expensive. Content retrieval is often slow, and the overhead for ensuring redundancy is excessive. We require innovative approaches to facilitate efficient information sharing among users.
Content delivery frequently represents the most significant expense for social networks. Running a basic social video network for 10 million users currently costs approximately $2 million per month using traditional cloud providers. We have the potential to reduce this cost by several orders of magnitude.
### Introducing FungiStor
FungiStor is a peer-to-peer (P2P) content delivery layer designed to store and distribute an extensive range of objects, including images, videos, files, and more. It has the capability to handle trillions of objects and files efficiently. FungiStor serves as an excellent solution for content delivery networks (CDNs), significantly reducing costs for organizations seeking to stream or deliver substantial data volumes to their user base.
Furthermore, FungiStor will act as the backend infrastructure for the Flists within our own system. It is versatile and can be utilized by anyone in need of a global-level content delivery system for files, objects, and images.
### The Benefits
- **Global scalability, sub-50ms lookups:** FungiStor scales worldwide with ultra-fast data retrieval under 50 milliseconds.
- **Localized content delivery:** prioritizes local data access for optimized speed and efficiency.
- **Quantum-Safe security:** incorporates robust quantum security measures.
- **Interoperability:** works seamlessly with IPFS, Torrent, and more.
- **Cost efficiency:** offers significant cost savings, potentially 10 to 100 times less than conventional solutions.
### Status ### Status
Planned for the end of 2024 Planned for the end of 2024
Remark, FungiStor will act as the backend infrastructure for the Flists within our own system. It is versatile and can be utilized by anyone in need of a global-level content delivery system for files, objects, and images.

View File

@ -1,22 +0,0 @@
### The Problem
Existing blockchain, internet, and P2P content delivery and storage systems suffer from sluggish performance and are too expensive. Content retrieval is often slow, and the overhead for ensuring redundancy is excessive. We require innovative approaches to facilitate efficient information sharing among users.
Content delivery frequently represents the most significant expense for social networks. Running a basic social video network for 10 million users currently costs approximately $2 million per month using traditional cloud providers. We have the potential to reduce this cost by several orders of magnitude.
### Introducing FungiStor
FungiStor is a peer-to-peer (P2P) content delivery layer designed to store and distribute an extensive range of objects, including images, videos, files, and more. It has the capability to handle trillions of objects and files efficiently. FungiStor serves as an excellent solution for content delivery networks (CDNs), significantly reducing costs for organizations seeking to stream or deliver substantial data volumes to their user base.
### The Benefits
- **Global scalability, sub-50ms lookups:** FungiStor scales worldwide with ultra-fast data retrieval under 50 milliseconds.
- **Localized content delivery:** prioritizes local data access for optimized speed and efficiency.
- **Quantum-Safe security:** incorporates robust quantum security measures.
- **Interoperability:** works seamlessly with IPFS, Torrent, and more.
- **Cost efficiency:** offers significant cost savings, potentially 10 to 100 times less than conventional solutions.

View File

@ -3,17 +3,17 @@
![](nature.png) ![](nature.png)
- Just like we have trillions of cells in our body, so can billions of hero's live next to each other - Just like we have trillions of cells in our body, so can billions of 3bots live next to each other
- Each Hero (3bot) has memory, knows how to communicate, has knowledge, history, ... - Each 3bot has memory, knows how to communicate, has knowledge, history, ...
- Heroes like cells cannot live without a body = which is the network of the Heroes. - 3Botss like cells cannot live without a body = which is the network of the 3Nodes.
## This approach scales for ever ## This approach scales for ever
![](scaleout.png) ![](scaleout.png)
- There can be unlimited amounts Nodes and Heroes - There can be unlimited amounts 3Nodes and 3Bots
- There are no bottlenecks nor centralization points - There are no bottlenecks nor centralization points
- Our peer2peer mycelium network technology takes care of routing and security issues between the Twins and the Nodes. The shortest paths is always looked for. - Our peer2peer network technology takes care of routing and security issues between the Twins and the 3Nodes. The shortest paths is always looked for.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 959 KiB

After

Width:  |  Height:  |  Size: 315 KiB

View File

@ -1 +0,0 @@
mycelium.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

View File

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 267 KiB

View File

@ -1,10 +1,4 @@
<<<<<<< HEAD
# Mycelium: Our Planetary Network as used in the TFGrid
![alt text](img/mycelium.png)
=======
# Mycelium: Our Planetary Network # Mycelium: Our Planetary Network
The planetary network called Mycelium is an overlay network which lives on top of the existing Internet or other peer-to-peer networks created. The planetary network called Mycelium is an overlay network which lives on top of the existing Internet or other peer-to-peer networks created.
@ -12,7 +6,42 @@ The planetary network called Mycelium is an overlay network which lives on top o
![](img/planet_net_.jpg) ![](img/planet_net_.jpg)
In the Mycelium network, everyone is connected to everyone. End-to-end encryption between users of an app and the app runs behind the network wall. In the Mycelium network, everyone is connected to everyone. End-to-end encryption between users of an app and the app runs behind the network wall.
>>>>>>> ba303b6e3eb8220bf2851a949db109e68ccd1f8c
Each user end network point is strongly authenticated and uniquely identified, independent of the network carrier used. There is no need for a centralized firewall or VPN solutions, as there is a circle-based networking security in place.
### Key Benefits
- It finds shortest possible paths between peers
- There is full security through end-to-end encrypted messaging
- It allows for peer-to-peer links, like meshed wireless
- It can survive broken Internet links and re-route when needed
- It resolves the shortage of IPV4 addresses
Whereas current computer networks depend heavily on very centralized design and configuration, this networking concept breaks this mold by making use of a global-spanning tree to form a scalable IPv6 encrypted mesh network. This is a peer-to-peer implementation of a networking protocol.
The following table illustrates the high-level differences between traditional networks like today's Internet, and the Planetary Network created by ThreeFold:
| Characteristic | Traditional | Mycelium |
| --------------------------------------------------------------- | ----------- | ----------------- |
| End-to-end encryption for all traffic across the network | No | Yes |
| Decentralized routing information shared using a DHT | No | Yes |
| Cryptographically-bound IPv6 addresses | No | Yes |
| Node is aware of its relative location to other nodes | No | Yes |
| IPv6 address remains with the device even if moved | No | Yes |
| Topology extends gracefully across different mediums, i.e. mesh | No | Yes |
## What are the problems solved here?
The Internet as we know it today doesnt conform to a well-defined topology. This has largely happened over time - as the Internet has grown, more and more networks have been “bolted together." The lack of defined topology gives us some unavoidable problems:
- The routing tables that hold a “map” of the Internet are huge and inefficient
- There isnt really any way for a computer to know where it is located on the Internet relative to anything else
- It is difficult to examine where a packet will go on its journey, from source to destination, without actually sending it
- It is very difficult to install reliable networks into locations that change often or are non-static, i.e. wireless mesh networks
These problems have been partially mitigated (but not really solved) through centralization - rather than your computers at home holding a copy of the global routing table, your ISP does it for you. Your computers and network devices are configured just to “send it upstream” and to let your ISP decide where it goes from there, but this does leave you entirely at the mercy of your ISP, who can redirect your traffic anywhere they like and to inspect, manipulate, or intercept it.
In addition, wireless meshing requires you to know a lot about the network around you, which would not typically be the case when you have outsourced this knowledge to your ISP. Many existing wireless mesh routing schemes are not scalable or efficient, and do not bridge well with existing networks.
![](img/planetary_net.jpg)
!!wiki.include page:'tech:mycelium_incl.md'

View File

@ -1,42 +0,0 @@
Mycelium is an overlay network which lives on top of the existing Internet or other peer-to-peer networks created. In this network, everyone is connected to everyone. End-to-end encryption between users of an app and the app runs behind the network wall.
Each user end network point is strongly authenticated and uniquely identified, independent of the network carrier used. There is no need for a centralized firewall or VPN solutions, as there is a circle-based networking security in place.
### Key Benefits
- It finds shortest possible paths between peers
- There is full security through end-to-end encrypted messaging
- It allows for peer-to-peer links, like meshed wireless
- It can survive broken Internet links and re-route when needed
- It resolves the shortage of IPV4 addresses
Whereas current computer networks depend heavily on very centralized design and configuration, this networking concept breaks this mold by making use of a global-spanning tree to form a scalable IPv6 encrypted mesh network. This is a peer-to-peer implementation of a networking protocol.
The following table illustrates the high-level differences between traditional networks like today's Internet, and the Planetary Network created by ThreeFold:
| Characteristic | Traditional | Mycelium |
| --------------------------------------------------------------- | ----------- | -------- |
| End-to-end encryption for all traffic across the network | No | Yes |
| Decentralized routing information shared using a DHT | No | Yes |
| Cryptographically-bound IPv6 addresses | No | Yes |
| Node is aware of its relative location to other nodes | No | Yes |
| IPv6 address remains with the device even if moved | No | Yes |
| Topology extends gracefully across different mediums, i.e. mesh | No | Yes |
| Post Quantum Safe | No | Yes |
## What are the problems solved here?
The Internet as we know it today doesnt conform to a well-defined topology. This has largely happened over time - as the Internet has grown, more and more networks have been “bolted together." The lack of defined topology gives us some unavoidable problems:
- The routing tables that hold a “map” of the Internet are huge and inefficient
- There isnt really any way for a computer to know where it is located on the Internet relative to anything else
- It is difficult to examine where a packet will go on its journey, from source to destination, without actually sending it
- It is very difficult to install reliable networks into locations that change often or are non-static, i.e. wireless mesh networks
These problems have been partially mitigated (but not really solved) through centralization - rather than your computers at home holding a copy of the global routing table, your ISP does it for you. Your computers and network devices are configured just to “send it upstream” and to let your ISP decide where it goes from there, but this does leave you entirely at the mercy of your ISP, who can redirect your traffic anywhere they like and to inspect, manipulate, or intercept it.
In addition, wireless meshing requires you to know a lot about the network around you, which would not typically be the case when you have outsourced this knowledge to your ISP. Many existing wireless mesh routing schemes are not scalable or efficient, and do not bridge well with existing networks.
![](img/planetary_net.jpg)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,7 +0,0 @@
![](img/qsss_intro2.png.jpg)
# Quantum Safe Storage System benefits
!!wiki.include page:'technology:qss_benefits0.md'
!!wiki.include page:'technology:qsss_toc.md'

View File

@ -1,6 +0,0 @@
- Up to 10x more efficient (power and usage of hardware)
- Ultra reliable, data can not be lost
- Ultra safe & private
- Ultra scalable
- Sovereign, data is close to you in the country of your choice
- Truly peer-to-peer, by everyone for everyone

View File

@ -1,21 +0,0 @@
![](img/qsstorage_architecture.jpg)
# Quantum Safe Storage System
Imagine a storage system with the following benefits
!!!include:qss_benefits_
> This is not a dream but does exist and is the underpinning of the TFGrid.
Our storage architecture follows the true peer-to-peer design of the TF grid. Any participating node only stores small incomplete parts of objects (files, photos, movies, databases...) by offering a slice of the present (local) storage devices. Managing the storage and retrieval of all of these distributed fragments is done by a software that creates development or end-user interfaces for this storage algorithm. We call this '**dispersed storage**'.
Peer-to-peer provides the unique proposition of selecting storage providers that match your application and service of business criteria. For example, you might be looking to store data for your application in a certain geographic area (for governance and compliance) reasons. Also, you might want to use different "storage policies" for different types of data. Examples are live versus archived data. All of these uses cases are possible with this storage architecture and could be built by using the same building blocks produced by farmers and consumed by developers or end-users.
!!!include:qsss_toc
!!!def alias:qsss,quantum_safe_storage_system

View File

@ -1,6 +0,0 @@
<h1> Quantum Safe Storage More Info </h1>
<h2>Table of Contents</h2>
- [Quantum Safe Storage Overview](qsss_home.md)
- [Quantum Safe Filesystem](qss_filesystem)

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 247 KiB

View File

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 293 KiB

View File

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View File

Before

Width:  |  Height:  |  Size: 390 KiB

After

Width:  |  Height:  |  Size: 390 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 209 KiB

View File

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

View File

Before

Width:  |  Height:  |  Size: 349 KiB

After

Width:  |  Height:  |  Size: 349 KiB

View File

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 272 KiB

View File

Before

Width:  |  Height:  |  Size: 304 KiB

After

Width:  |  Height:  |  Size: 304 KiB

View File

Before

Width:  |  Height:  |  Size: 333 KiB

After

Width:  |  Height:  |  Size: 333 KiB

View File

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 188 KiB

View File

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

View File

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

View File

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Some files were not shown because too many files have changed in this diff Show More