├── .github
└── workflows
│ └── dependency-review.yml
├── ESPFlasherGUI.py
├── ESPFlasherGUI.spec
├── ICON.ico
├── Material Design
├── app.js
├── css
│ ├── material.blue-indigo.min.css
│ ├── mui.min.css
│ └── style.css
├── esptool.exe
├── index.html
├── js
│ ├── jquery-3.2.1.min.js
│ ├── material.min.js
│ ├── mui.min.js
│ └── task.js
├── node_modules
│ ├── jquery
│ │ ├── AUTHORS.txt
│ │ ├── LICENSE.txt
│ │ ├── README.md
│ │ ├── bower.json
│ │ ├── dist
│ │ │ ├── core.js
│ │ │ ├── jquery.js
│ │ │ ├── jquery.min.js
│ │ │ ├── jquery.min.map
│ │ │ ├── jquery.slim.js
│ │ │ ├── jquery.slim.min.js
│ │ │ └── jquery.slim.min.map
│ │ ├── external
│ │ │ └── sizzle
│ │ │ │ ├── LICENSE.txt
│ │ │ │ └── dist
│ │ │ │ ├── sizzle.js
│ │ │ │ ├── sizzle.min.js
│ │ │ │ └── sizzle.min.map
│ │ ├── package.json
│ │ └── src
│ │ │ ├── .eslintrc.json
│ │ │ ├── ajax.js
│ │ │ ├── ajax
│ │ │ ├── jsonp.js
│ │ │ ├── load.js
│ │ │ ├── parseXML.js
│ │ │ ├── script.js
│ │ │ ├── var
│ │ │ │ ├── location.js
│ │ │ │ ├── nonce.js
│ │ │ │ └── rquery.js
│ │ │ └── xhr.js
│ │ │ ├── attributes.js
│ │ │ ├── attributes
│ │ │ ├── attr.js
│ │ │ ├── classes.js
│ │ │ ├── prop.js
│ │ │ ├── support.js
│ │ │ └── val.js
│ │ │ ├── callbacks.js
│ │ │ ├── core.js
│ │ │ ├── core
│ │ │ ├── DOMEval.js
│ │ │ ├── access.js
│ │ │ ├── init.js
│ │ │ ├── nodeName.js
│ │ │ ├── parseHTML.js
│ │ │ ├── ready-no-deferred.js
│ │ │ ├── ready.js
│ │ │ ├── readyException.js
│ │ │ ├── stripAndCollapse.js
│ │ │ ├── support.js
│ │ │ └── var
│ │ │ │ └── rsingleTag.js
│ │ │ ├── css.js
│ │ │ ├── css
│ │ │ ├── addGetHookIf.js
│ │ │ ├── adjustCSS.js
│ │ │ ├── curCSS.js
│ │ │ ├── hiddenVisibleSelectors.js
│ │ │ ├── showHide.js
│ │ │ ├── support.js
│ │ │ └── var
│ │ │ │ ├── cssExpand.js
│ │ │ │ ├── getStyles.js
│ │ │ │ ├── isHiddenWithinTree.js
│ │ │ │ ├── rmargin.js
│ │ │ │ ├── rnumnonpx.js
│ │ │ │ └── swap.js
│ │ │ ├── data.js
│ │ │ ├── data
│ │ │ ├── Data.js
│ │ │ └── var
│ │ │ │ ├── acceptData.js
│ │ │ │ ├── dataPriv.js
│ │ │ │ └── dataUser.js
│ │ │ ├── deferred.js
│ │ │ ├── deferred
│ │ │ └── exceptionHook.js
│ │ │ ├── deprecated.js
│ │ │ ├── dimensions.js
│ │ │ ├── effects.js
│ │ │ ├── effects
│ │ │ ├── Tween.js
│ │ │ └── animatedSelector.js
│ │ │ ├── event.js
│ │ │ ├── event
│ │ │ ├── ajax.js
│ │ │ ├── alias.js
│ │ │ ├── focusin.js
│ │ │ ├── support.js
│ │ │ └── trigger.js
│ │ │ ├── exports
│ │ │ ├── amd.js
│ │ │ └── global.js
│ │ │ ├── jquery.js
│ │ │ ├── manipulation.js
│ │ │ ├── manipulation
│ │ │ ├── _evalUrl.js
│ │ │ ├── buildFragment.js
│ │ │ ├── getAll.js
│ │ │ ├── setGlobalEval.js
│ │ │ ├── support.js
│ │ │ ├── var
│ │ │ │ ├── rcheckableType.js
│ │ │ │ ├── rscriptType.js
│ │ │ │ └── rtagName.js
│ │ │ └── wrapMap.js
│ │ │ ├── offset.js
│ │ │ ├── queue.js
│ │ │ ├── queue
│ │ │ └── delay.js
│ │ │ ├── selector-native.js
│ │ │ ├── selector-sizzle.js
│ │ │ ├── selector.js
│ │ │ ├── serialize.js
│ │ │ ├── traversing.js
│ │ │ ├── traversing
│ │ │ ├── findFilter.js
│ │ │ └── var
│ │ │ │ ├── dir.js
│ │ │ │ ├── rneedsContext.js
│ │ │ │ └── siblings.js
│ │ │ ├── var
│ │ │ ├── ObjectFunctionString.js
│ │ │ ├── arr.js
│ │ │ ├── class2type.js
│ │ │ ├── concat.js
│ │ │ ├── document.js
│ │ │ ├── documentElement.js
│ │ │ ├── fnToString.js
│ │ │ ├── getProto.js
│ │ │ ├── hasOwn.js
│ │ │ ├── indexOf.js
│ │ │ ├── pnum.js
│ │ │ ├── push.js
│ │ │ ├── rcssNum.js
│ │ │ ├── rnothtmlwhite.js
│ │ │ ├── slice.js
│ │ │ ├── support.js
│ │ │ └── toString.js
│ │ │ └── wrap.js
│ └── serial-node
│ │ ├── .gitattributes
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── serial-node.js
└── package.json
├── README.md
├── dist
├── ESPFlasherGUI
└── ESPFlasherGUI.exe
├── espLogo.png
├── esptool.exe
├── esptool.py
├── esptoolGUIUI.py
├── esptoolGUIUI.pyc
└── micropython-esp32
├── application.bin
├── bootloader.bin
└── partitions.bin
/.github/workflows/dependency-review.yml:
--------------------------------------------------------------------------------
1 | # Dependency Review Action
2 | #
3 | # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
4 | #
5 | # Source repository: https://github.com/actions/dependency-review-action
6 | # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
7 | name: 'Dependency Review'
8 | on: [workflow_dispatch]
9 |
10 |
11 | permissions:
12 | contents: read
13 |
14 | jobs:
15 | dependency-review:
16 | runs-on: ubuntu-latest
17 | steps:
18 | - name: 'Checkout Repository'
19 | uses: actions/checkout@v3
20 | - name: 'Dependency Review'
21 | uses: actions/dependency-review-action@v2
22 |
--------------------------------------------------------------------------------
/ESPFlasherGUI.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python -*-
2 |
3 | block_cipher = None
4 |
5 |
6 | a = Analysis(['ESPFlasherGUI.py'],
7 | pathex=['D:\\Python\\ESPToolGUI'],
8 | binaries=[],
9 | datas=[('esptool.exe','.'),('esptool.py','.'),('espLogo.png','.'),('ICON.ico','.')],
10 | hiddenimports=[],
11 | hookspath=[],
12 | runtime_hooks=[],
13 | excludes=[],
14 | win_no_prefer_redirects=False,
15 | win_private_assemblies=False,
16 | cipher=block_cipher)
17 | pyz = PYZ(a.pure, a.zipped_data,
18 | cipher=block_cipher)
19 | exe = EXE(pyz,
20 | a.scripts,
21 | a.binaries,
22 | a.zipfiles,
23 | a.datas,
24 | name='ESPFlasherGUI',
25 | debug=False,
26 | strip=False,
27 | upx=True,
28 | console=False , icon='ICON.ico')
29 |
--------------------------------------------------------------------------------
/ICON.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/neoxharsh/ESP32-GUI-Flasher/89ef8c1354fd53e0bfacc7d2139550c6a5537291/ICON.ico
--------------------------------------------------------------------------------
/Material Design/app.js:
--------------------------------------------------------------------------------
1 | const {app, BrowserWindow} = require('electron')
2 | const path = require('path')
3 | const url = require('url')
4 |
5 | // Keep a global reference of the window object, if you don't, the window will
6 | // be closed automatically when the JavaScript object is garbage collected.
7 | let win
8 | var theWindow = BrowserWindow.getFocusedWindow();
9 | function createWindow () {
10 | // Create the browser window.
11 | win = new BrowserWindow({width: 600, height: 600, resizable:true,frame:false})
12 |
13 | // and load the index.html of the app.
14 | win.loadURL(url.format({
15 | pathname: path.join(__dirname, 'index.html'),
16 | protocol: 'file:',
17 | slashes: true
18 | }))
19 |
20 | // Open the DevTools.
21 |
22 |
23 | // Emitted when the window is closed.
24 | win.on('closed', () => {
25 | // Dereference the window object, usually you would store windows
26 | // in an array if your app supports multi windows, this is the time
27 | // when you should delete the corresponding element.
28 | win = null
29 | })
30 | }
31 |
32 | // This method will be called when Electron has finished
33 | // initialization and is ready to create browser windows.
34 | // Some APIs can only be used after this event occurs.
35 | app.on('ready', createWindow)
36 |
37 | // Quit when all windows are closed.
38 | app.on('window-all-closed', () => {
39 | // On macOS it is common for applications and their menu bar
40 | // to stay active until the user quits explicitly with Cmd + Q
41 | if (process.platform !== 'darwin') {
42 | app.quit()
43 | }
44 | })
45 |
46 | app.on('activate', () => {
47 | // On macOS it's common to re-create a window in the app when the
48 | // dock icon is clicked and there are no other windows open.
49 | if (win === null) {
50 | createWindow()
51 | }
52 | })
53 |
--------------------------------------------------------------------------------
/Material Design/css/style.css:
--------------------------------------------------------------------------------
1 |
2 | .tite-div{
3 | background-color: rgb(33,150,243);
4 | font-family: "Roboto","Helvetica","Arial",sans-serif;
5 | font-size: 20px;
6 | line-height: 1;
7 | letter-spacing: 0.02em;
8 | font-weight: 400;
9 | color: white;
10 | padding: 3%;
11 |
12 | text-align: center;
13 | }
14 | div.mdl-layout__header-row{
15 | padding: 12px;
16 | }
17 | .first-div{
18 | #border: solid 2px black;
19 |
20 | }
21 | .first-div .row
22 | {
23 | #border: solid 3px black;
24 | display: flex;
25 | }
26 |
27 | .first-div .row label{
28 | #border: solid 3px black;
29 | width: 100%;
30 | padding: 1%;
31 | margin: 1%;
32 | }
33 | .first-div .row button{
34 | width: 50%;
35 | margin: 1%;
36 | }
37 | .second-div {
38 | display: flex;
39 | flex-wrap: wrap;
40 | #border: solid 3px black;
41 | }
42 | .second-div .mui-dropdown{
43 | display: flex;
44 |
45 | margin-left: auto;
46 | margin-right: auto;
47 |
48 |
49 | }
50 | .second-div .mui-dropdown button{
51 |
52 | margin-left: auto;
53 | margin-right: auto;
54 | width: 100%;
55 | }
56 | .second-div button
57 | {
58 | margin-right: auto;
59 | margin-left: auto;
60 | margin-top: auto;
61 | margin-bottom: auto;
62 |
63 | }
64 | .mui-panel
65 | {
66 | word-wrap: break-word;
67 | width: 94%;
68 | }
69 | .mdl-layout__header-row button{
70 | position: absolute;
71 | left: 560px;
72 | top:9px;
73 | }
74 |
75 | .material-icons{
76 | -webkit-app-region: no-drag;
77 | }
78 | .mdl-layout__drawer-button{
79 | -webkit-app-region: no-drag;
80 | }
81 | #outputPanel{
82 | overflow: scroll;
83 | height: 238px;
84 | overflow-x: hidden;
85 | overflow-y: auto;
86 | }
--------------------------------------------------------------------------------
/Material Design/esptool.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/neoxharsh/ESP32-GUI-Flasher/89ef8c1354fd53e0bfacc7d2139550c6a5537291/Material Design/esptool.exe
--------------------------------------------------------------------------------
/Material Design/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/Material Design/js/task.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by neoha on 17-04-2017.
3 | */
4 | let jqery = require('jquery');
5 | let util = require('util');
6 |
7 | const {dialog} = require('electron').remote;
8 |
9 | let bootloaderLable, partitionLable,applicationLable;
10 |
11 | let outputPanel;
12 |
13 | let currentflashSize, currentbaudRate, currentport, currentchip = 'ESP32';
14 |
15 |
16 | let memoryESP8266 = ['detect','512KB','256KB','1MB','2MB','4MB','2MB-c1','4MB-c1','4MB-c2'];
17 | let memoryESP32 = ['detect','1MB','2MB','4MB','8MB','16MB'];
18 | let baudRate = ['921600','512000','256000','230400','115200'];
19 | let theWindow;
20 |
21 | let SerialPort= require('serial-node'), serial = new SerialPort();
22 |
23 |
24 |
25 |
26 | jqery(document).ready(function () {
27 |
28 | bootloaderLable = document.getElementById("bootloaderLable");
29 | partitionLable = document.getElementById("partitionLable");
30 | applicationLable = document.getElementById("applicationLable");
31 | outputPanel = document.getElementById("outputPanel");
32 | let flashSizeButton = document.getElementById("flashSizeButton");
33 | let baudButton = document.getElementById("baudButton");
34 | let portButton = document.getElementById("portButton");
35 | const {BrowserWindow} = require('electron').remote;
36 | theWindow = BrowserWindow.getFocusedWindow();
37 |
38 | for (let baud of baudRate)
39 | {
40 | jqery('.baudSelectList').append(""+baud+"");
41 | }
42 | for (let memory of memoryESP32)
43 | {
44 | jqery('.flashSelectList').append(""+memory+"");
45 | }
46 |
47 |
48 | jqery('.chipSelect').click(function (event) {
49 | event.preventDefault();
50 | let id = jqery(this).html();
51 | currentchip = id;
52 | if (currentchip==="ESP32")
53 | {
54 | jqery('.current-chip-div').html("");
55 | jqery('.current-chip-div').html("ESP32")
56 | jqery('.flashSelectList').html("");
57 | jqery('.flashSelectList').html("");
58 | jqery('#partitionButton').css("visibility", "visible");
59 | jqery('#applicationButton').css("visibility", "visible");
60 | jqery('#partitionLable').css("visibility", "visible");
61 | jqery('#applicationLable').css("visibility", "visible");
62 | jqery('#bootloaderLable').html("Bootloader");
63 | jqery('#bootloaderButton').html('Bootloader');
64 | for (let memory of memoryESP32)
65 | {
66 | jqery('.flashSelectList').append(""+memory+"")
67 | }
68 | }
69 | else
70 | {
71 | jqery('.current-chip-div').html("");
72 | jqery('.current-chip-div').html("ESP8266")
73 | jqery('.flashSelectList').html("");
74 | jqery('#partitionButton').css("visibility", "hidden");
75 | jqery('#applicationButton').css("visibility", "hidden");
76 | jqery('#partitionLable').css("visibility", "hidden");
77 | jqery('#applicationLable').css("visibility", "hidden");
78 | jqery('#bootloaderLable').html("Application");
79 | jqery('#bootloaderButton').html('Application');
80 | for (let memory of memoryESP8266)
81 | {
82 | jqery('.flashSelectList').append(""+memory+"")
83 | }
84 | }
85 | let d = document.querySelector('.mdl-layout');
86 | d.MaterialLayout.toggleDrawer();
87 | console.log(id)
88 | });
89 |
90 | jqery('.flashSelectList').on('click','.flashSelect',function () {
91 | currentflashSize= jqery(this).html();
92 | flashSizeButton.innerHTML = currentflashSize;
93 | });
94 |
95 | jqery('.baudSelectList').on('click','.baudSelect',function () {
96 | currentbaudRate= jqery(this).html();
97 | baudButton.innerHTML = currentbaudRate;
98 | });
99 |
100 |
101 | jqery('.portSelectList').on('click','.portSelect',function(){
102 | currentport = jqery(this).html();
103 | portButton.innerHTML = currentport;
104 | });
105 |
106 |
107 |
108 | });
109 |
110 | function eraseButtonClicked() {
111 |
112 | const spawn = require('child_process').exec;
113 | let cmd;
114 | if (currentchip==='ESP32')
115 | {
116 | cmd = util.format('%s\\esptool.exe --chip esp32 --port %s --baud %s erase_flash', process.cwd(),currentport,currentbaudRate );
117 | console.log(cmd)
118 | }
119 | else
120 | {
121 | cmd = util.format('%s\\esptool.exe --chip esp8266 --port %s --baud %s erase_flash', process.cwd(),currentport,currentbaudRate );
122 | console.log(cmd);
123 |
124 | }
125 |
126 | const ls = spawn(cmd);
127 | ls.stdout.on('data', (data) => {
128 | console.log(`stdout: ${data}`);
129 | jqery('#outputPanel').append(data +"
")
130 | });
131 |
132 | ls.stderr.on('data', (data) => {
133 | console.log(`stderr: ${data}`);
134 | jqery('#outputPanel').append(data +"
")
135 | });
136 |
137 | ls.on('close', (code) => {
138 | console.log(`child process exited with code ${code}`);
139 | jqery('#outputPanel').append(data +"
")
140 | });
141 | }
142 | function flashButtonClicked() {
143 | const spawn = require('child_process').exec;
144 | let cmd;
145 | if (currentchip==='ESP32')
146 | {
147 | cmd = util.format('%s\\resources\\app\\esptool.exe --chip esp32 --port %s --baud %s --before default_reset --after hard_reset write_flash -z --flash_freq 80m --flash_mod dio --flash_size %s 0x1000 %s 0x8000 %s 0x10000 %s', process.cwd(), currentport,currentbaudRate,currentflashSize,bootloaderLable.innerHTML,partitionLable.innerHTML,applicationLable.innerHTML);
148 | console.log(cmd)
149 | }
150 | else
151 | {
152 | cmd = util.format('%s\\resources\\app\\esptool.exe --chip esp8266 --port %s --baud %s --before default_reset --after hard_reset write_flash --flash_size %s 0 %s', process.cwd(), currentport,currentbaudRate,currentflashSize,bootloaderLable.innerHTML);
153 | console.log(cmd);
154 |
155 | }
156 |
157 | const ls = spawn(cmd);
158 | ls.stdout.on('data', (data) => {
159 | console.log(`stdout: ${data}`);
160 | jqery('#outputPanel').append(data +"
")
161 | var $cont = jqery('.mui-panel');
162 | $cont[0].scrollTop = $cont[0].scrollHeight;
163 | });
164 |
165 | ls.stderr.on('data', (data) => {
166 | console.log(`stderr: ${data}`);
167 | jqery('#outputPanel').append(data +"
")
168 | });
169 |
170 | ls.on('close', (code) => {
171 | console.log(`child process exited with code ${code}`);
172 | jqery('#outputPanel').append(data +"
")
173 | });
174 | }
175 |
176 | function bootloaderButtonClicked() {
177 | bootloaderLable.innerHTML = dialog.showOpenDialog({title:"Select Bootloader", properties: ['openFile'], filters:[{name: 'bootloader', extensions: ['bin']}] })[0]
178 | }
179 |
180 | function partitionButtonClicked() {
181 | partitionLable.innerHTML = dialog.showOpenDialog({title:"Select Partition", properties: ['openFile'],filters:[{name: 'partition', extensions: ['bin']}]})[0]
182 | }
183 |
184 | function applicationButtonClicked() {
185 | applicationLable.innerHTML = dialog.showOpenDialog({properties: ['openFile'],filters:[{name: 'application', extensions: ['bin']}],title:"Select Application"})[0]
186 | }
187 | function closeWindow() {
188 | theWindow.close()
189 | }
190 |
191 |
192 | function portButtonClicked() {
193 | try {
194 | listc = serial.list();
195 | jqery('.portSelectList').html("");
196 | for (i = 0; i < listc.length; i++) {
197 | console.log(listc[i]);
198 | console.log(""+listc[i]+"")
199 | jqery('.portSelectList').append(""+listc[i]+"")
200 |
201 | }
202 | }
203 | catch (err)
204 | {
205 |
206 | }
207 |
208 | }
--------------------------------------------------------------------------------
/Material Design/node_modules/jquery/AUTHORS.txt:
--------------------------------------------------------------------------------
1 | Authors ordered by first contribution.
2 |
3 | John Resig
4 | Gilles van den Hoven
5 | Michael Geary
6 | Stefan Petre
7 | Yehuda Katz
8 | Corey Jewett
9 | Klaus Hartl
10 | Franck Marcia
11 | Jörn Zaefferer
12 | Paul Bakaus
13 | Brandon Aaron
14 | Mike Alsup
15 | Dave Methvin
16 | Ed Engelhardt
17 | Sean Catchpole
18 | Paul Mclanahan
19 | David Serduke
20 | Richard D. Worth
21 | Scott González
22 | Ariel Flesler
23 | Jon Evans
24 | TJ Holowaychuk
25 | Michael Bensoussan
26 | Robert Katić
27 | Louis-Rémi Babé
28 | Earle Castledine
29 | Damian Janowski
30 | Rich Dougherty
31 | Kim Dalsgaard
32 | Andrea Giammarchi
33 | Mark Gibson
34 | Karl Swedberg
35 | Justin Meyer
36 | Ben Alman
37 | James Padolsey
38 | David Petersen
39 | Batiste Bieler
40 | Alexander Farkas
41 | Rick Waldron
42 | Filipe Fortes
43 | Neeraj Singh
44 | Paul Irish
45 | Iraê Carvalho
46 | Matt Curry
47 | Michael Monteleone
48 | Noah Sloan
49 | Tom Viner
50 | Douglas Neiner
51 | Adam J. Sontag
52 | Dave Reed
53 | Ralph Whitbeck
54 | Carl Fürstenberg
55 | Jacob Wright
56 | J. Ryan Stinnett
57 | unknown
58 | temp01
59 | Heungsub Lee
60 | Colin Snover
61 | Ryan W Tenney
62 | Pinhook
63 | Ron Otten
64 | Jephte Clain
65 | Anton Matzneller
66 | Alex Sexton
67 | Dan Heberden
68 | Henri Wiechers
69 | Russell Holbrook
70 | Julian Aubourg
71 | Gianni Alessandro Chiappetta
72 | Scott Jehl
73 | James Burke
74 | Jonas Pfenniger
75 | Xavi Ramirez
76 | Jared Grippe
77 | Sylvester Keil
78 | Brandon Sterne
79 | Mathias Bynens
80 | Timmy Willison <4timmywil@gmail.com>
81 | Corey Frang
82 | Digitalxero
83 | Anton Kovalyov
84 | David Murdoch
85 | Josh Varner
86 | Charles McNulty
87 | Jordan Boesch
88 | Jess Thrysoee
89 | Michael Murray
90 | Lee Carpenter
91 | Alexis Abril
92 | Rob Morgan
93 | John Firebaugh
94 | Sam Bisbee
95 | Gilmore Davidson
96 | Brian Brennan
97 | Xavier Montillet
98 | Daniel Pihlstrom
99 | Sahab Yazdani
100 | avaly
101 | Scott Hughes
102 | Mike Sherov
103 | Greg Hazel
104 | Schalk Neethling
105 | Denis Knauf
106 | Timo Tijhof
107 | Steen Nielsen
108 | Anton Ryzhov
109 | Shi Chuan
110 | Berker Peksag
111 | Toby Brain
112 | Matt Mueller
113 | Justin
114 | Daniel Herman
115 | Oleg Gaidarenko
116 | Richard Gibson
117 | Rafaël Blais Masson
118 | cmc3cn <59194618@qq.com>
119 | Joe Presbrey
120 | Sindre Sorhus
121 | Arne de Bree
122 | Vladislav Zarakovsky
123 | Andrew E Monat
124 | Oskari
125 | Joao Henrique de Andrade Bruni
126 | tsinha
127 | Matt Farmer
128 | Trey Hunner
129 | Jason Moon
130 | Jeffery To
131 | Kris Borchers
132 | Vladimir Zhuravlev
133 | Jacob Thornton
134 | Chad Killingsworth
135 | Nowres Rafid
136 | David Benjamin
137 | Uri Gilad
138 | Chris Faulkner
139 | Elijah Manor
140 | Daniel Chatfield
141 | Nikita Govorov
142 | Wesley Walser
143 | Mike Pennisi
144 | Markus Staab
145 | Dave Riddle
146 | Callum Macrae
147 | Benjamin Truyman
148 | James Huston
149 | Erick Ruiz de Chávez
150 | David Bonner
151 | Akintayo Akinwunmi
152 | MORGAN
153 | Ismail Khair
154 | Carl Danley
155 | Mike Petrovich
156 | Greg Lavallee
157 | Daniel Gálvez
158 | Sai Lung Wong
159 | Tom H Fuertes
160 | Roland Eckl
161 | Jay Merrifield
162 | Allen J Schmidt Jr
163 | Jonathan Sampson
164 | Marcel Greter
165 | Matthias Jäggli
166 | David Fox
167 | Yiming He
168 | Devin Cooper
169 | Paul Ramos
170 | Rod Vagg
171 | Bennett Sorbo
172 | Sebastian Burkhard
173 | Zachary Adam Kaplan
174 | nanto_vi
175 | nanto
176 | Danil Somsikov
177 | Ryunosuke SATO
178 | Jean Boussier
179 | Adam Coulombe
180 | Andrew Plummer
181 | Mark Raddatz
182 | Isaac Z. Schlueter
183 | Karl Sieburg
184 | Pascal Borreli
185 | Nguyen Phuc Lam
186 | Dmitry Gusev
187 | Michał Gołębiowski
188 | Li Xudong
189 | Steven Benner
190 | Tom H Fuertes
191 | Renato Oliveira dos Santos
192 | ros3cin
193 | Jason Bedard
194 | Kyle Robinson Young
195 | Chris Talkington
196 | Eddie Monge
197 | Terry Jones
198 | Jason Merino
199 | Jeremy Dunck
200 | Chris Price
201 | Guy Bedford
202 | Amey Sakhadeo
203 | Mike Sidorov
204 | Anthony Ryan
205 | Dominik D. Geyer
206 | George Kats
207 | Lihan Li
208 | Ronny Springer
209 | Chris Antaki
210 | Marian Sollmann
211 | njhamann
212 | Ilya Kantor
213 | David Hong
214 | John Paul
215 | Jakob Stoeck
216 | Christopher Jones
217 | Forbes Lindesay
218 | S. Andrew Sheppard
219 | Leonardo Balter
220 | Roman Reiß
221 | Benjy Cui
222 | Rodrigo Rosenfeld Rosas
223 | John Hoven
224 | Philip Jägenstedt
225 | Christian Kosmowski
226 | Liang Peng
227 | TJ VanToll
228 | Senya Pugach
229 | Aurelio De Rosa
230 | Nazar Mokrynskyi
231 | Amit Merchant
232 | Jason Bedard
233 | Arthur Verschaeve
234 | Dan Hart
235 | Bin Xin
236 | David Corbacho
237 | Veaceslav Grimalschi
238 | Daniel Husar
239 | Frederic Hemberger
240 | Ben Toews
241 | Aditya Raghavan
242 | Victor Homyakov
243 | Shivaji Varma
244 | Nicolas HENRY
245 | Anne-Gaelle Colom
246 | George Mauer
247 | Leonardo Braga
248 | Stephen Edgar
249 | Thomas Tortorini
250 | Winston Howes
251 | Jon Hester
252 | Alexander O'Mara
253 | Bastian Buchholz
254 | Arthur Stolyar
255 | Calvin Metcalf
256 | Mu Haibao
257 | Richard McDaniel
258 | Chris Rebert