Assets overhaul + demon list + several misc updates

I held back on pushing this since I wanted to wait for Rob to unblock level downloading, but it's probably gonna be a while since it's (likely) related to an unlisted level exploit

Anyways I totally overhauled how the assets work, and you can also browse through all the files by going to gdbrowser.com/assets, because why not

I also made many other changes and fixes during this timespan including the addition of the demon list, optimized custom lists along with a ?page param, and other random stuff that needed touching up

- Removed Herobrine
This commit is contained in:
GDColon 2021-01-04 10:21:58 -05:00
parent ceb05e50f6
commit ea5c732c75
638 changed files with 311 additions and 267 deletions

View file

@ -9,12 +9,10 @@ I mean, sure. Why not.
Just make sure to give credit, obviously. Via the bottom of the homepage, the credits button, or maybe even both if you're feeling extra nice.
Obviously, GDBrowser isn't perfect when it comes to GD private servers, since both requests and responses might be a bit different. Or a LOT, as I learned.
Obviously, GDBrowser isn't perfect when it comes to GD private servers, since both requests and responses might be a bit different. Or a LOT, as I learned. (seriously what's with that?)
You can also check out `settings.js` to tweak some additional settings (mainly GDPS related) such as whether to cache things or if timestamps should end with "ago"
GDPS compatibility is still a HUGE work in progress, so pull requests would be greatly appreciated if you manage to make any improvements!
# Folders
GDBrowser has a lot of folders. I like to keep things neat.
@ -33,24 +31,16 @@ Assets! Assets everywhere!
All the GD stuff was ripped straight from the GD spritesheets via [Absolute's texture splitter hack](https://youtu.be/pYQgIyNhow8). If you want a nice categorized version, [I've done all the dirty work for you.](https://www.mediafire.com/file/4d99bw1zhwcl507/textures.zip/file)
/blocks, /objects and /initial are used for the analysis page. I just put them in seperate folders for extra neatness.
/gdfaces holds all the difficulty faces
/css has the CSS stuff. They're in a special folder so browsers won't cache them (in case of updates)
Figure out what /gauntlets and /iconkitbuttons have.
I'd explain what's in all the subfolders but it's pretty obvious. I tried my best to organize everything nicely.
## Classes
What's a class you ask? I still have no idea.
Seriously, these things are *confusing*
What's a class you ask? Good question.
I guess the best way to put it is uh... super fancy functions???
Level.js parses the server's disgusting response and sends back a nice object with all the level info
XOR.js encrypts/decrypts stuff like GD passwords. I stole the code from somewhere so uh if you wrote it, please don't hunt me down
XOR.js encrypts/decrypts stuff like GD passwords
## HTML
The HTML files! Nothing too fancy, since it can all be seen directly from gdbrowser. Note that profile.html and level.html have [[VARIABLES]] (name, id, etc) replaced by the server when they're sent.
@ -64,8 +54,6 @@ parsePlist.js reads GJ_GameSheet02-uhd.plist and magically transforms it into ga
forms.json is a list of the different icon forms, their ingame filenames, and their index in responses from the GD servers
/iconkit is a folder for the little grey preview icons on the icon kit
## Misc
Inevitable misc folder
@ -77,22 +65,28 @@ colorProperties.json - Color channel cheatsheet
initialProperties.json - Level settings cheatsheet
objectProperties.json - Object property cheatsheet. Low budget version of [AlFas' one](https://github.com/gd-edit/GDAPI/blob/5a338c317b10ba0cb30d6175360c997a8a72502f/GDAPI/GDAPI/Enumerations/GeometryDash/ObjectParameter.cs)
objectProperties.json - Object property cheatsheet. Low budget version of [AlFas' one](https://github.com/AlFasGD/GDAPI/blob/master/GDAPI/GDAPI/Enumerations/GeometryDash/ObjectProperty.cs)
objects.json - IDs for portals, orbs, triggers, and misc stuff
**Not for level analysis**
colors.json - List of icon colors in RGB format
credits.json - Credits! (shown on the homepage)
dragscroll.js - Used on several pages for drag scrolling
level.json - An array of the official GD tracks, and also difficulty face stuff for level searching
sampleIcons.json - A pool of icons, one of which will randomly appear when visiting the icon kit. Syntax is [Name, ID, Col1, Col2, Glow],
secretStuff.json - GJP goes here, needed for level leaderboards. Not included in the repo for obvious reasons
settings.js - Tweak small settings here, mainly for local use or GDPS'es
sizecheck.js - Excecuted on most pages, used for the 'page isn't wide enough' message, back button, and a few other things
sizecheck.js - Excecuted on most pages. Used for the 'page isn't wide enough' message, back button, and a few other things
---
happy painting and god bless.
happy gdbrowsing and god bless.

View file

@ -97,10 +97,10 @@ module.exports = async (app, req, res, api, ID, analyze) => {
}
else if (level.difficulty == "Extreme Demon") {
request.get('https://www.pointercrate.com/api/v1/demons/?name=' + level.name.trim(), function (err, resp, demonList) {
request.get('https://www.pointercrate.com/api/v2/demons/?name=' + level.name.trim(), function (err, resp, demonList) {
if (err) return sendLevel()
let demon = JSON.parse(demonList)
if (demon[0] && demon[0].position <= 150) level.demonList = demon[0].position
if (demon[0] && demon[0].position) level.demonList = demon[0].position
return sendLevel()
})
}

View file

@ -69,10 +69,10 @@ module.exports = async (app, req, res, api, analyze) => {
}
if (level.difficulty == "Extreme Demon") {
request.get('http://www.pointercrate.com/api/v1/demons/?name=' + level.name.trim(), function (err, resp, demonList) {
request.get('http://www.pointercrate.com/api/v2/demons/?name=' + level.name.trim(), function (err, resp, demonList) {
if (err) return sendLevel()
let demon = JSON.parse(demonList)
if (demon[0] && demon[0].position <= 150) level.demonList = demon[0].position
if (demon[0] && demon[0].position) level.demonList = demon[0].position
return sendLevel()
})
}

View file

@ -1,11 +1,23 @@
const request = require('request')
const levels = require('../misc/level.json').music
const Level = require('../classes/Level.js')
let demonList = {list: [], lastUpdated: 0}
module.exports = async (app, req, res) => {
if (app.offline) return res.send("-1")
let demonMode = req.query.hasOwnProperty("demonlist") || req.query.hasOwnProperty("demonList") || req.query.type == "demonlist" || req.query.type == "demonList"
if (demonMode) {
if (!demonList.list.length || demonList.lastUpdated + 600000 < Date.now()) { // 10 minute cache
return request.get('http://www.pointercrate.com/api/v2/demons/listed/?limit=100', function (err, resp, list) {
if (err) return res.send("-1")
demonList = {list: JSON.parse(list).map(x => x.level_id), lastUpdated: Date.now()}
return app.run.search(app, req, res)
})
}
}
let amount = 10;
let count = +req.query.count
if (count && count > 0) {
@ -37,22 +49,24 @@ module.exports = async (app, req, res) => {
count: amount
}
if (req.query.gauntlet || req.query.hasOwnProperty("mappack") || req.query.hasOwnProperty("list") || req.query.type == "saved") filters.type = 10
if (req.query.songID && filters.customSong == 0 && levels.find(x => req.query.songID.toLowerCase() == x[0].toLowerCase())) {
filters.song = levels.findIndex(x => req.query.songID.toLowerCase() == x[0].toLowerCase())
}
if (req.query.type) {
let filterCheck = req.query.type.toLowerCase()
if (filterCheck == 'mostdownloaded') filters.type = 1
if (filterCheck == 'mostliked') filters.type = 2
if (filterCheck == 'trending') filters.type = 3
if (filterCheck == 'recent') filters.type = 4
if (filterCheck == 'featured') filters.type = 6
if (filterCheck == 'magic') filters.type = 7
if (filterCheck == 'awarded' || filterCheck == 'starred') filters.type = 11
if (filterCheck == 'halloffame' || filterCheck == 'hof') filters.type = 16
switch(filterCheck) {
case 'mostdownloaded': filters.type = 1; break;
case 'mostliked': filters.type = 2; break;
case 'trending': filters.type = 3; break;
case 'recent': filters.type = 4; break;
case 'featured': filters.type = 6; break;
case 'magic': filters.type = 7; break;
case 'awarded': filters.type = 11; break;
case 'starred': filters.type = 11; break;
case 'halloffame': filters.type = 16; break;
case 'hof': filters.type = 16; break;
}
}
if (req.query.hasOwnProperty("user")) {
@ -65,6 +79,15 @@ module.exports = async (app, req, res) => {
if (req.query.hasOwnProperty("creators")) filters.type = 12
if (req.params.text == "*") delete filters.str
let listSize = 10
if (demonMode || req.query.gauntlet || ["mappack", "list", "saved"].some(x => req.query.hasOwnProperty(x))) {
filters.type = 10
filters.str = demonMode ? demonList.list : filters.str.split(",")
listSize = filters.str.length
filters.str = filters.str.slice(filters.page*amount, filters.page*amount + amount).join()
filters.page = 0
}
request.post(app.endpoint + 'getGJLevels21.php', req.gdParams(filters), async function(err, resp, body) {
@ -118,8 +141,8 @@ module.exports = async (app, req, res) => {
}
else if (filters.type == 10) { // custom page stuff
level.results = levelArray.length
level.pages = amount ? +Math.ceil(levelArray.length / amount) : 1
level.results = listSize
level.pages = +Math.ceil(listSize / (amount || 10))
}
else { // normal page stuff

View file

@ -1,5 +1,5 @@
@font-face { font-family: Pusab; src: url('./../assets/Pusab.ttf') }
@font-face { font-family: Kaine; src: url('./../assets/boomlings/Kaine.ttf') }
@font-face { font-family: Pusab; src: url('../../assets/Pusab.ttf') }
@font-face { font-family: Kaine; src: url('../../assets/boomlings/Kaine.ttf') }
body {
margin: 0;
@ -139,7 +139,7 @@ h2 {
#borderbox {
border: 1.6vh solid;
border-image: url('./../assets/boomlings/border.png') 10% round;
border-image: url('../../assets/boomlings/border.png') 10% round;
border-radius: 3vh;
width: 110vh;
height: 75%;
@ -179,7 +179,7 @@ h2 {
border: 2.5vh solid transparent;
border-radius: 3vh;
background-color: #995533;
border-image: url('./../assets/brownbox.png') 10% round;
border-image: url('../../assets/brownbox.png') 10% round;
}
@-moz-keyframes spin {

View file

@ -1,4 +1,4 @@
@font-face {font-family: Pusab; src: url('./../assets/Pusab.ttf')}
@font-face {font-family: Pusab; src: url('../../assets/Pusab.ttf')}
body {
margin: 0;
@ -118,7 +118,7 @@ img, .noSelect {
cursor: default;
}
.outOfOrder {
.outOfOrder, .darkDiff {
filter: brightness(50%);
}
@ -236,7 +236,7 @@ input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:foc
.gdcheckbox {
vertical-align: middle;
display: inline-block;
background-image: url(../assets/check-off.png);
background-image: url(../../assets/check-off.png);
background-repeat: no-repeat;
background-size: contain;
padding-right: 20%;
@ -244,7 +244,7 @@ input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:foc
}
input[type=checkbox]:checked + label.gdcheckbox {
background-image: url(../assets/check-on.png);
background-image: url(../../assets/check-on.png);
}
::placeholder {
@ -315,14 +315,14 @@ input::-webkit-inner-spin-button {
border: 2.5vh solid transparent;
border-radius: 3vh;
background-color: #995533;
border-image: url('./../assets/brownbox.png') 10% round;
border-image: url('../../assets/brownbox.png') 10% round;
}
.blueBox {
border: 2.5vh solid transparent;
border-radius: 3vh;
background-color: #334499;
border-image: url('./../assets/bluebox.png') 10% round;
border-image: url('../../assets/bluebox.png') 10% round;
}
.fancybox {
@ -331,7 +331,7 @@ input::-webkit-inner-spin-button {
border: 3.5vh solid transparent;
border-radius: 3vh;
background-color: #001931;
border-image: url('./../assets/fancybox.png') 10% stretch;
border-image: url('../../assets/fancybox.png') 10% stretch;
border-image-slice: 65;
}
@ -341,14 +341,14 @@ input::-webkit-inner-spin-button {
.epicbox {
border: 3.5vh solid transparent;
border-image: url('./../assets/epicbox.png') 20% stretch;
border-image: url('../../assets/epicbox.png') 20% stretch;
border-image-slice: 85 77;
border-image-width: 9.5vh;
}
.leaderboardBox {
border: 3.5vh solid transparent;
border-image: url('./../assets/leaderboardbox.png') 20% stretch;
border-image: url('../../assets/leaderboardbox.png') 20% stretch;
border-image-slice: 85 77;
border-image-width: 9.5vh;
}
@ -387,6 +387,7 @@ input::-webkit-inner-spin-button {
margin-left: 0.8%;
margin-right: 0.8%;
filter: brightness(50%);
text-align: center;
}
.diffDiv img {
@ -394,13 +395,13 @@ input::-webkit-inner-spin-button {
}
.demonDiff {
margin-left: 2%;
margin-right: 2%;
margin-left: 1.93%;
margin-right: 1.93%;
text-align: center;
}
.demonDiff .smallTextWoo {
margin-top: 3%;
margin-top: 3.5%;
font-size: 2.7vh;
}

View file

@ -1,5 +1,5 @@
@import url('https://fonts.googleapis.com/css?family=Roboto');
@font-face {font-family: Pusab; src: url('./../assets/Pusab.ttf')}
@font-face {font-family: Pusab; src: url('../../assets/Pusab.ttf')}
.gdButton {
cursor: pointer;
@ -291,7 +291,7 @@ input:focus, select:focus, textarea:focus, button:focus {
}
.iconSelected {
border-image: url('./../assets/select.png') 10 stretch !important;
border-image: url('../../assets/select.png') 10 stretch !important;
}
.iconTabButton, .glowToggle, .copyForm {
@ -418,7 +418,7 @@ input:focus, select:focus, textarea:focus, button:focus {
border: 17px solid transparent;
border-radius: 25px;
background-color: #995533;
border-image: url('./../assets/brownbox.png') 10% round;
border-image: url('../../assets/brownbox.png') 10% round;
}
.xButton {
@ -455,7 +455,7 @@ input[type=checkbox] {
.gdcheckbox {
vertical-align: middle;
display: inline-block;
background-image: url(../assets/check-off.png);
background-image: url(../../assets/check-off.png);
background-repeat: no-repeat;
background-size: contain;
padding-right: 40px;
@ -465,7 +465,7 @@ input[type=checkbox] {
}
input[type=checkbox]:checked + label.gdcheckbox {
background-image: url(../assets/check-on.png);
background-image: url(../../assets/check-on.png);
}
.bounce {

BIN
assets/deatheffects/0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View file

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View file

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

View file

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View file

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

View file

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View file

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View file

Before

Width:  |  Height:  |  Size: 822 B

After

Width:  |  Height:  |  Size: 822 B

View file

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View file

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View file

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View file

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View file

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View file

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View file

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 9 KiB

View file

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View file

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View file

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View file

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View file

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

Before

Width:  |  Height:  |  Size: 6 KiB

After

Width:  |  Height:  |  Size: 6 KiB

View file

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View file

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View file

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View file

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View file

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View file

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

View file

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View file

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View file

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

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