{"id":50399127,"url":"https://github.com/parallel-7/flashforgeemulator","last_synced_at":"2026-05-30T22:03:02.480Z","repository":{"id":292631078,"uuid":"981471078","full_name":"Parallel-7/FlashForgeEmulator","owner":"Parallel-7","description":"FlashForge 3D Printer API Emulator","archived":false,"fork":false,"pushed_at":"2025-11-07T01:33:05.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-07T03:23:59.835Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Parallel-7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-11T07:19:33.000Z","updated_at":"2025-11-07T01:33:09.000Z","dependencies_parsed_at":"2025-05-11T08:27:16.008Z","dependency_job_id":"27f86378-96d6-4616-a25d-9747f94d0ff5","html_url":"https://github.com/Parallel-7/FlashForgeEmulator","commit_stats":null,"previous_names":["parallel-7/flashforgeemulator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Parallel-7/FlashForgeEmulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parallel-7%2FFlashForgeEmulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parallel-7%2FFlashForgeEmulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parallel-7%2FFlashForgeEmulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parallel-7%2FFlashForgeEmulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Parallel-7","download_url":"https://codeload.github.com/Parallel-7/FlashForgeEmulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parallel-7%2FFlashForgeEmulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33711018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-30T22:03:02.336Z","updated_at":"2026-05-30T22:03:02.464Z","avatar_url":"https://github.com/Parallel-7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eFlashForge Printer Emulator\u003c/h1\u003e\n  \u003cp\u003eA comprehensive dual-protocol network emulator for FlashForge 3D printers\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/python-3.6%2B-blue.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platforms-Win%20%7C%20macOS%20%7C%20Linux-blue\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Protocols-TCP%20%2B%20HTTP-green\"\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eTest FlashForge client applications without physical hardware\u003c/p\u003e\n  \u003cp\u003eFull support for both legacy TCP protocol and modern HTTP API\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eProtocol Support\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Protocol | Port | Status | Description |\n|----------|------|--------|-------------|\n| UDP Discovery | 48899 | Full Support | Automatic printer detection on network |\n| TCP Commands | 8899 | Full Support | Legacy G-code protocol for all FlashForge printers |\n| HTTP API | 8898 | Full Support | Modern REST API for Adventurer 5M/Pro/5X series |\n| Dual-Mode | All | Full Support | Run both protocols simultaneously |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003ePrinter Mode Emulation\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Printer Model | Emulation Status | Camera Support | Material Station | Filtration System |\n|---------------|------------------|----------------|------------------|-------------------|\n| Adventurer 5M | Full | No | No | No |\n| Adventurer 5M Pro | Full | Yes | No | Yes |\n| Adventurer 5X | Full | Yes | Yes (4-slot IFS) | Yes |\n| Legacy Models (3/4) | Full | No | No | No |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eFeatures\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eCore Capabilities\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Feature | Description |\n|---------|-------------|\n| Dual Protocol Operation | Run TCP and HTTP servers simultaneously or independently |\n| Complete Protocol Implementation | Fully emulates both FlashForge network protocols |\n| Discovery Protocol | UDP broadcast for automatic printer detection |\n| Material Station Emulation | 4-slot IFS support for AD5X multi-color printing |\n| Enhanced File Management | File metadata, thumbnails, and upload support |\n| Persistent Configuration | JSON-based auto-save/load configuration system |\n| Cumulative Statistics | Track lifetime print time and filament usage |\n| Real-time Simulation | Dynamic temperature changes and print progress |\n| Multi-platform | Windows, macOS, and Linux support |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eHTTP API Endpoints\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| /product | POST | Get printer control states and capabilities |\n| /detail | POST | Get comprehensive printer status and metrics |\n| /control | POST | Send control commands (temperature, LED, fans, etc) |\n| /gcodeList | POST | Get list of recent and local files |\n| /gcodeThumb | POST | Get base64 thumbnail for file preview |\n| /uploadGcode | POST | Upload new G-code files to printer |\n| /printGcode | POST | Start printing a file from storage |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eAdvanced Features\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Feature | Description |\n|---------|-------------|\n| HTTP Monitoring UI | Real-time inspection of all API requests and responses |\n| Network Simulation | Simulate latency, packet loss, and connection failures |\n| Print Status State Machine | Multiple states: ready, busy, printing, paused, completed, cancelled, error |\n| Temperature Simulation | Realistic heating and cooling curves |\n| Material Station Control | Manage filament slots, colors, and material types for multi-color prints |\n| File Metadata Management | Track print time, filament usage, layer counts, and tool configurations |\n| Configuration Auto-save | Automatic persistence with restart scheduling |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eSetup\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Step | Command |\n|------|---------|\n| Clone the repository | git clone https://github.com/Parallel-7/FlashForgeEmulator.git |\n| Navigate to directory | cd FlashForgeEmulator |\n| Install dependencies | pip install -r requirements.txt |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eUsage\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Step | Command / Description |\n|------|----------------------|\n| Start the emulator | python main.py |\n| GUI Application | Modern ttkbootstrap interface with tabbed controls |\n| UDP Discovery | Automatically broadcasts on port 48899 |\n| TCP Server | Listens on port 8899 for legacy G-code commands |\n| HTTP Server | Listens on port 8898 for REST API requests |\n| Protocol Mode | Choose TCP-only, HTTP-only, or Dual-mode operation |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eConfiguration\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003ePrinter Identity\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Setting | Description |\n|---------|-------------|\n| Printer Name | Customize the name displayed to client applications |\n| Serial Number | Set a unique identifier for the emulated printer |\n| Machine Type | Set printer model (5M, 5M Pro, 5X, etc) |\n| Firmware Version | Set the reported firmware version |\n| MAC Address | Required for HTTP API clients |\n| Check Code | Authentication code for HTTP API |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eProtocol Configuration\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Mode | TCP Server | HTTP Server | Use Case |\n|------|------------|-------------|----------|\n| TCP Only | Running | Stopped | Test legacy clients and older printers |\n| HTTP Only | Stopped | Running | Test modern API clients (5M/Pro/5X) |\n| Dual Mode | Running | Running | Test comprehensive client compatibility |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003ePrinter Mode Selection\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Mode | Model Emulated | Camera | Filtration | Material Station |\n|------|----------------|--------|------------|------------------|\n| 5M | Adventurer 5M | No | No | No |\n| 5M Pro | Adventurer 5M Pro | Yes | Yes | No |\n| AD5X | Adventurer 5X | Yes | Yes | Yes (4-slot IFS) |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eMaterial Station (AD5X Mode)\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Setting | Description |\n|---------|-------------|\n| Slot Count | Number of filament slots (default: 4) |\n| Current Slot | Active slot being used for printing |\n| Slot Configuration | Configure material type, color, and presence per slot |\n| Material Mappings | Define tool-to-slot mappings for multi-color prints |\n| Loading State | Simulate filament loading and unloading operations |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003ePrint Simulation\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Setting | Description |\n|---------|-------------|\n| Print Status | Set to ready, busy, printing, paused, completed, cancelled, or error |\n| Print Progress | Adjust the reported progress percentage (0-100) |\n| Current File | Set the filename of the currently printing model |\n| Layer Progress | Automatically calculated based on print progress |\n| Print Duration | Elapsed time for current print job |\n| Remaining Time | Estimated time remaining for print completion |\n| Filament Estimates | Set total filament length and weight for current job |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eTemperature Control\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Setting | Description |\n|---------|-------------|\n| Hotend Temperature | Set current and target temperatures for the hotend |\n| Bed Temperature | Set current and target temperatures for the heated bed |\n| Chamber Temperature | Set chamber temperature (Pro/5X models) |\n| Simulation Mode | Realistic heating and cooling curves with configurable rates |\n| Idle Temperatures | Default temperatures when not printing |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eNetwork Simulation\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Setting | Description |\n|---------|-------------|\n| Network Interface | Select which network interface to use for discovery |\n| Latency Simulation | Add artificial delay to responses (testing robustness) |\n| Packet Loss | Simulate random connection failures |\n| Connection Failures | Test client retry and error handling |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eStatistics Tracking\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Statistic | Description |\n|-----------|-------------|\n| Cumulative Print Time | Total lifetime print time in minutes |\n| Cumulative Filament | Total lifetime filament usage in meters |\n| Job History | Track completed prints and their metadata |\n| Auto-persistence | Statistics saved automatically to configuration file |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eSupported Commands\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eTCP Protocol - Status Commands\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Command | Description |\n|---------|-------------|\n| M115 | Get printer information and capabilities |\n| M105 | Get current temperature readings |\n| M119 | Get endstop and machine status |\n| M27 | Get print status and progress |\n| M114 | Get current position (X/Y/Z) |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eTCP Protocol - Control Commands\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Command | Description |\n|---------|-------------|\n| M601/M602 | Login and logout authentication |\n| M146 | Control LED on/off |\n| M405/M406 | Control filament runout sensor |\n| G28 | Home all axes |\n| G1 | Move printer head to position |\n| M24/M25/M26 | Resume, pause, and stop print |\n| M104/M140 | Set extruder and bed temperature |\n| M109/M190 | Set and wait for temperature targets |\n| M661 | List files on printer storage |\n| M662 | Get thumbnail image for a file |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eHTTP API - Control Commands\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Command | Parameters | Description |\n|---------|------------|-------------|\n| switchLight | status: open/close | Control printer LED |\n| setTargetTemperature | heaterIndex, temperature | Set target temperature for extruder or bed |\n| setChamberTemperature | temperature | Set chamber target temperature (Pro/5X) |\n| setExternalFan | status: open/close | Control external filtration fan (Pro/5X) |\n| setInternalFan | status: open/close | Control internal filtration fan (Pro/5X) |\n| pause | - | Pause current print |\n| resume | - | Resume paused print |\n| cancel | - | Cancel current print |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eUser Interface\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Tab | Description |\n|-----|-------------|\n| Main | Basic controls, server start/stop, protocol mode selection, status logging |\n| Configuration | Printer identity, protocol mode, printer mode, virtual file management |\n| Printer State | Temperature controls, print status, progress simulation, filament estimates |\n| Material Station | 4-slot IFS configuration for multi-color printing (AD5X mode) |\n| HTTP Monitor | Real-time inspection of all HTTP API requests and responses |\n| Network | Interface selection, network simulation settings |\n| Printer Details | Hardware specifications and dimensions |\n| Filesystem | Virtual file system and metadata management |\n| Logs | Application logging and debugging output |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eProtocol Details\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eUDP Discovery Protocol\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Property | Value |\n|----------|-------|\n| Protocol | UDP Broadcast |\n| Port | 48899 |\n| Response Format | Binary format with printer name and serial number |\n| Purpose | Automatic printer detection by FlashForge clients |\n| Compatibility | All FlashForge printers and client software |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eTCP Command Protocol\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Property | Value |\n|----------|-------|\n| Protocol | TCP |\n| Port | 8899 |\n| Command Format | ~GCODE [parameters] |\n| Response Format | CMD GCODE Received.[newline][response data][newline]ok |\n| Use Case | Legacy protocol for Adventurer 3/4 and older models |\n| Client Compatibility | FlashPrint, OrcaSlicer (legacy mode), custom clients |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eHTTP REST API\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Property | Value |\n|----------|-------|\n| Protocol | HTTP/1.1 |\n| Port | 8898 |\n| Format | JSON request/response bodies |\n| Authentication | Serial number and check code validation |\n| Use Case | Modern protocol for Adventurer 5M/Pro/5X series |\n| Client Compatibility | FlashForgeUI, OrcaSlicer (new API mode), custom clients |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eFile Management\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Feature | Description |\n|---------|-------------|\n| Virtual Files | Pre-configured test files with metadata |\n| File Upload | Simulate file uploads via HTTP API |\n| Thumbnail Storage | Base64-encoded preview images |\n| File Metadata | Track print time, filament usage, layer counts |\n| Multi-color Files | Support for Material Station tool mappings |\n| Recent Files | Return last 10 files for client display |\n| Local Files | Full file list with detailed metadata (mode-dependent) |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eFile Metadata Fields\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Field | Description |\n|-------|-------------|\n| gcodeFileName | Name of the G-code file |\n| printingTime | Estimated print duration in seconds |\n| uploadTime | ISO timestamp of file upload |\n| fileSize | File size in bytes |\n| totalFilamentWeight | Total filament weight in grams |\n| useMatlStation | Whether file uses Material Station (multi-color) |\n| gcodeToolCnt | Number of tools/extruders used |\n| gcodeToolDatas | Array of tool configurations with slot mappings |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eTesting Coverage\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Client Software | Protocol | Testing Status | Notes |\n|----------------|----------|----------------|-------|\n| FlashForgeUI | HTTP API | Fully Tested | All printer modes supported |\n| OrcaSlicer | TCP + HTTP | Fully Tested | Both legacy and new API modes |\n| Orca-FlashForge | TCP | Fully Tested | Legacy protocol support |\n| FlashPrint | TCP | Fully Tested | Official FlashForge software |\n| Custom Clients | Both | Supported | Full protocol documentation available |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eDevelopment\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Tool | Purpose |\n|------|---------|\n| Claude Code Integration | CLAUDE.md file provides AI assistant context |\n| Configuration Persistence | JSON auto-save prevents data loss |\n| Hot Reload | Configuration changes applied without restart where possible |\n| HTTP Monitoring | Built-in request/response inspection for debugging |\n| Network Simulation | Test client robustness under adverse conditions |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eArchitecture\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Component | File | Description |\n|-----------|------|-------------|\n| Core Emulator | emulator/printer.py | Central state management and coordination |\n| TCP Server | emulator/server.py | Legacy protocol server |\n| HTTP Server | emulator/http_server_async.py | Async HTTP API server using aiohttp |\n| Command Processing | emulator/commands.py | G-code command parser and dispatcher |\n| HTTP Responses | emulator/http_responses.py | JSON response generation for REST API |\n| File Manager | emulator/file_manager.py | Enhanced file and metadata management |\n| Printer Modes | emulator/printer_modes.py | Mode-specific features and Material Station |\n| Configuration | config.py | Centralized configuration and defaults |\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003eDependencies\u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n| Package | Purpose |\n|---------|---------|\n| ttkbootstrap | Modern GUI theming and widgets |\n| Pillow | Thumbnail image processing |\n| aiohttp | Async HTTP server implementation |\n| Standard Library | asyncio, threading, json, socket, struct |\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel-7%2Fflashforgeemulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparallel-7%2Fflashforgeemulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel-7%2Fflashforgeemulator/lists"}