{
    "mode": "FDM",
    "internal": 0,
    "bedHeight": 2.5,
    "bedWidth": 256,
    "bedDepth": 256,
    "bedRound": false,
    "maxHeight": 256,
    "originCenter": false,
    "gcodeFan": [
        "M106 P1 S{fan_speed}"
    ],
    "gcodeTrack": [
        "M73 P{progress}"
    ],
    "gcodeLayer": [
        "; ===== CHANGE_LAYER ==============================",
        "; layer num/total_layer_count: {layer}/{layers}",
        "M622.1 S1                ; for prev firware, default turned on",
        "M1002 judge_flag timelapse_record_flag",
        "M622 J1",
        "M971 S11 C10 O0          ; timelapse without wipe tower",
        "M623",
        "M73 L{layer}",
        "M991 S0 P{layer-1}       ; notify layer change",
        ";; IF { layer == 0 }",
        "M204 S500                ; reduce first layer acceleration",
        ";; ELSE",
        "M204 S5000               ; faster acceleration",
        ";; END"
    ],
    "gcodePre": [
        "; total layer number: {layers}",
        "; model label id: {model_labels}",
        ";; PREAMBLE",
        ";; DEFINE BAMBU-AMS 0,1,2,3",
        "; ===== HEADER ====================================",
        "M73 P0 R24                                         ; Initial progress and time remaining",
        "M201 X12000 Y12000 Z1500 E5000                     ; Set max acceleration",
        "M203 X500 Y500 Z30 E30                             ; Set max feed rates",
        "M204 P12000 R5000 T12000                           ; Set acceleration",
        "M205 X9.00 Y9.00 Z3.00 E2.50                       ; Set advanced settings",
        "M106 S0                                            ; Set part fan speed to 0",
        "M106 P2 S0                                         ; Turn off aux fan",
        ";===== Machine: A1 ================================",
        "G392 S0                                            ; Disable clog detection",
        "M9833.2                                            ; Custom command (unknown function)",
        ";===== Start Heating ==============================",
        "M1002 gcode_claim_action : 2",
        "M1002 set_filament_type:PLA                        ; Set filament type to PLA",
        "M104 S140                                          ; Set nozzle temperature",
        "M140 S65                                           ; Set bed temperature",
        ";===== Startup Sound ==============================",
        "M17                                                ; Enable steppers",
        "M400 S1                                            ; Wait for movements to complete",
        "M1006 S1                                           ; Start printer sound",
        "M1006 A0 B10 L100 C37 D10 M60 E37 F10 N60",
        "M1006 A0 B10 L100 C41 D10 M60 E41 F10 N60",
        "M1006 A0 B10 L100 C44 D10 M60 E44 F10 N60",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N60",
        "M1006 A43 B10 L100 C46 D10 M70 E39 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N80",
        "M1006 A0 B10 L100 C43 D10 M60 E39 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N80",
        "M1006 A0 B10 L100 C41 D10 M80 E41 F10 N80",
        "M1006 A0 B10 L100 C44 D10 M80 E44 F10 N80",
        "M1006 A0 B10 L100 C49 D10 M80 E49 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M80 E0 F10 N80",
        "M1006 A44 B10 L100 C48 D10 M60 E39 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N80",
        "M1006 A0 B10 L100 C44 D10 M80 E39 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N80",
        "M1006 A43 B10 L100 C46 D10 M60 E39 F10 N80",
        "M1006 W                                            ; Play audio",
        "M18                                                ; Disable steppers",
        ";===== Avoid End Stop =============================",
        "G91                                                ; Set relative positioning",
        "G380 S2 Z40 F1200                                  ; Move Z up to 40mm",
        "G380 S3 Z-15 F1200                                 ; Move Z down to -15mm",
        "G90                                                ; Set absolute positioning",
        ";===== Reset Machine Status =======================",
        "M204 S6000                                         ; Set acceleration to 6000 mm/s^2",
        "M630 S0 P0                                         ; Custom command (unknown function)",
        "G91                                                ; Set relative positioning",
        "M17 Z0.3                                           ; Lower Z motor current",
        "G90                                                ; Set absolute positioning",
        "M17 X0.65 Y1.2 Z0.6                                ; Reset motor currents",
        "M960 S5 P1                                         ; Turn on logo lamp",
        "G90                                                ; Set absolute positioning",
        "M220 S100                                          ; Reset feedrate",
        "M221 S100                                          ; Reset flowrate",
        "M73.2 R1.0                                         ; Reset estimated time remaining",
        ";===== Enable Noise Reduction =====================",
        "M982.2 S1                                          ; Turn on noise reduction",
        ";===== Home XY & Prepare Print ====================",
        "M1002 gcode_claim_action : 13",
        "G28 X                                              ; Home X-axis",
        "G91                                                ; Set relative positioning",
        "G1 Z5 F1200                                        ; Move Z up by 5mm",
        "G90                                                ; Set absolute positioning",
        "G0 X128 F30000                                     ; Move X to 128mm",
        "G0 Y254 F3000                                      ; Move Y to 254mm",
        "G91                                                ; Set relative positioning",
        "G1 Z-5 F1200                                       ; Move Z down by 5mm",
        "M109 S25 H140                                      ; Set tool preheat temperature",
        "M17 E0.3                                           ; Set extruder motor current",
        "M83                                                ; Set extruder to relative mode",
        "G1 E10 F1200                                       ; Extrude 10mm",
        "G1 E-0.5 F30                                       ; Retract 0.5mm",
        "M17 D                                              ; Restore motor current",
        ";===== Home Z with Low Precision ==================",
        "G28 Z P0 T140                                      ; Home Z with low precision",
        "M104 S220                                          ; Set nozzle temperature",
        ";===== Build Plate Detection ======================",
        "M1002 judge_flag build_plate_detect_flag",
        "M622 S1",
        " G39.4                                             ; Custom build plate detection command",
        " G90                                               ; Set absolute positioning",
        " G1 Z5 F1200                                       ; Move Z up by 5mm",
        "M623",
        ";===== Prepare Print Temperature & Material =======",
        "M1002 gcode_claim_action : 24",
        "M400                                               ; Wait for all movements to complete",
        "M211 X0 Y0 Z0                                      ; Turn off soft endstops",
        "M975 S1                                            ; Enable tool vibration suppression",
        "G90                                                ; Set absolute positioning",
        "G1 X-28.5 F30000                                   ; Move X-axis",
        "G1 X-48.2 F3000                                    ; Move further on X",
        "M620 M                                             ; Enable material remap",
        "M620 S0A                                           ; Switch material if AMS exists",
        " M1002 gcode_claim_action : 4",
        " M400                                              ; Wait for heating",
        " M1002 set_filament_type:UNKNOWN                   ; Set filament type as unknown",
        " M109 S220                                         ; Set and wait hotend temperature",
        " M104 S250                                         ; Set nozzle purge temp",
        " M400                                              ; Wait for heating",
        " T0                                                ; Select Tool 0",
        " G1 X-48.2 F3000                                   ; Move X again",
        " M400                                              ; Wait for completion",
        " M620.1 E F523.843 T240                            ; Extrude for purge sequence",
        " M109 S250                                         ; Wait for nozzle flush temp",
        " M106 P1 S0                                        ; Turn off nozzle cooling fan",
        " G92 E0                                            ; Reset extruder position",
        " G1 E50 F200                                       ; Extrude 50mm to clear nozzle",
        " M400                                              ; Wait for all movements to complete",
        " M1002 set_filament_type:PLA                       ; Confirm filament type",
        "M621 S0A                                           ; Confirm material switch",
        "M109 S240 H300                                     ; Set nozzle temp",
        "G92 E0                                             ; Reset extruder position",
        "G1 E50 F200                                        ; Extrude 50mm slowly to prevent clog",
        "M400                                               ; Wait for completion",
        "M106 P1 S178                                       ; Set nozzle cooling fan speed",
        "G92 E0                                             ; Reset extruder position",
        "G1 E5 F200                                         ; Extrude 5mm slowly",
        "M104 S220                                          ; Lower nozzle temperature",
        "G92 E0                                             ; Reset extruder position",
        "G1 E-0.5 F300                                      ; Retract filament slightly",
        ";===== Wipe and Shake Nozzle ======================",
        "G1 X-28.5 F30000                                   ; Move X-axis",
        "M73 P1 R23                                         ; Update print progress",
        "G1 X-48.2 F3000                                    ; Move back on X-axis",
        "M73 P2 R23                                         ; Update print progress",
        "G1 X-28.5 F30000                                   ; Wipe nozzle",
        "G1 X-48.2 F3000                                    ; Move back on X",
        "G1 X-28.5 F30000                                   ; Wipe nozzle",
        "G1 X-48.2 F3000                                    ; Move back on X",
        "M400                                               ; Wait for all movements to complete",
        "M106 P1 S0                                         ; Turn off nozzle cooling fan",
        ";===== Auto Extrude Calibration Start =============",
        "M975 S1                                            ; Enable extruder calibration",
        "G90                                                ; Set absolute positioning",
        "M83                                                ; Set extruder to relative mode",
        "T1000                                              ; Select tool 1000",
        "G1 X-48.2 Y0 Z10 F10000                            ; Move to calibration start position",
        "M400                                               ; Wait for all moves to complete",
        "M1002 set_filament_type:UNKNOWN                    ; Set filament type to unknown",
        "M412 S1                                            ; Enable filament runout detection",
        "M400 P10                                           ; Wait for 10ms",
        "M620.3 W1                                          ; Enable filament tangle detection",
        "M400 S2                                            ; Wait for 2ms",
        "M1002 set_filament_type:PLA                        ; Set filament type to PLA",
        "M1002 judge_flag extrude_cali_flag                 ; Check extruder calibration flag",
        "M622 J1",
        " M1002 gcode_claim_action : 8",
        " M109 S220                                         ; Set hotend temperature",
        " G1 E10 F377.08                                    ; Extrude 10mm at 377.08 mm/min",
        " M983 F6.28466 A0.3 H0.4                           ; Perform dynamic extrusion compensation",
        " M106 P1 S255                                      ; Set nozzle cooling fan to max speed",
        " M400 S5                                           ; Wait for 5 seconds",
        " G1 X-28.5 F18000                                  ; Move X for wipe",
        " G1 X-48.2 F3000                                   ; Move X back",
        " G1 X-28.5 F18000                                  ; Wipe motion",
        " G1 X-48.2 F3000                                   ; Move X back",
        " M73 P3 R23                                        ; Update progress",
        " G1 X-28.5 F12000                                  ; Wipe and shake",
        " G1 X-48.2 F3000                                   ; Move X back",
        " M400                                              ; Wait for all movements to complete",
        " M106 P1 S0                                        ; Turn off nozzle cooling fan",
        " M1002 judge_last_extrude_cali_success",
        " M622 J0",
        "  M983 F6.28466 A0.3 H0.4                          ; Perform dynamic extrusion compensation",
        "  M106 P1 S255                                     ; Set nozzle cooling fan to max speed",
        "  M400 S5                                          ; Wait for 5 seconds",
        "  G1 X-28.5 F18000                                 ; Move X for wipe",
        "  G1 X-48.2 F3000                                  ; Move X back",
        "  G1 X-28.5 F18000                                 ; Wipe motion",
        "  G1 X-48.2 F3000                                  ; Move X back",
        "  G1 X-28.5 F12000                                 ; Wipe and shake",
        "  M400                                             ; Wait for all movements to complete",
        "  M106 P1 S0                                       ; Turn off nozzle cooling fan",
        " M623                                              ; End of calibration routine",
        " M73 P4 R23                                        ; Update progress",
        " G1 X-48.2 F3000                                   ; Move X back",
        " M400                                              ; Wait for all movements to complete",
        " M984 A0.1 E1 S1 F6.28466 H0.4                     ; Apply extruder calibration parameters",
        " M106 P1 S178                                      ; Set nozzle cooling fan to moderate speed",
        " M400 S7                                           ; Wait for 7 seconds",
        " G1 X-28.5 F18000                                  ; Move X for wipe",
        " G1 X-48.2 F3000                                   ; Move X back",
        " G1 X-28.5 F18000                                  ; Wipe motion",
        " G1 X-48.2 F3000                                   ; Move X back",
        " G1 X-28.5 F12000                                  ; Wipe and shake",
        " G1 X-48.2 F3000                                   ; Move X back",
        " M400                                              ; Wait for all movements to complete",
        " M106 P1 S0                                        ; Turn off nozzle cooling fan",
        "M623                                               ; End of extruder calibration process",
        "M104 S170                                          ; Prepare to wipe nozzle",
        "M106 S255                                          ; Turn on fan",
        ";===== Mech Mode Fast Check Start =================",
        "M1002 gcode_claim_action : 3",
        "G1 X128 Y128 F20000                                ; Move to check position",
        "G1 Z5 F1200                                        ; Raise Z-axis",
        "M400 P200                                          ; Wait for movements to complete",
        "M970.3 Q1 A5 K0 O3                                 ; Execute fast check routine",
        "M974 Q1 S2 P0                                      ; Confirm fast check step",
        "M970.2 Q1 K1 W58 Z0.1                              ; Additional fast check",
        "M974 S2                                            ; Confirm step",
        "G1 X128 Y128 F20000                                ; Repeat move to check position",
        "G1 Z5 F1200                                        ; Raise Z-axis",
        "M400 P200                                          ; Wait for movements to complete",
        "M970.3 Q0 A10 K0 O1                                ; Execute another fast check routine",
        "M974 Q0 S2 P0                                      ; Confirm step",
        "M970.2 Q0 K1 W78 Z0.1                              ; Another additional check",
        "M974 S2                                            ; Confirm step",
        "M975 S1                                            ; Confirm vibration suppression",
        "G1 F30000                                          ; Set movement speed",
        "G1 X0 Y5                                           ; Move to next step",
        "G28 X                                              ; Re-home XY",
        "G1 Z4 F1200                                        ; Lower Z-axis",
        ";===== Wipe Nozzle ================================",
        "M1002 gcode_claim_action : 14",
        "M975 S1                                            ; Enable wipe mode",
        "M106 S255                                          ; Turn on fan (G28 turns off fan)",
        "M211 S                                             ; Push soft endstop status",
        "M211 X0 Y0 Z0                                      ; Turn off Z-axis endstop",
        ";===== Remove Waste by Touching Start =============",
        "M104 S170                                          ; Set nozzle temp",
        "M83                                                ; Set extruder to relative mode",
        "G1 E-1 F500                                        ; Retract filament",
        "G90                                                ; Set absolute positioning",
        "M83                                                ; Set extruder to relative mode",
        "M109 S170                                          ; Set nozzle temperature",
        "G0 X108 Y-0.5 F30000                               ; Move to wipe position",
        "G380 S3 Z-5 F1200                                  ; Lower nozzle to wipe",
        "; Repeat wipe sequence",
        "G1 Z2 F1200",
        "G1 X110 F10000",
        "G380 S3 Z-5 F1200",
        "M73 P22 R18",
        "G1 Z2 F1200",
        "G1 X112 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X114 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X116 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X118 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X120 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X122 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X124 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X126 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X128 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X130 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X132 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X134 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X136 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X138 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X140 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X142 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X144 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X146 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z2 F1200",
        "G1 X148 F10000",
        "G380 S3 Z-5 F1200",
        "G1 Z5 F30000                                       ; Raise Z",
        ";===== Remove Waste by Touching End ===============",
        "G1 Z10 F1200                                       ; Lift nozzle",
        "G0 X118 Y261 F30000                                ; Move to safe position",
        "G1 Z5 F1200                                        ; Lower Z",
        "M109 S170                                          ; Set nozzle temperature",
        "G28 Z P0 T300                                      ; Home Z with low precision",
        "G29.2 S0                                           ; Turn off ABL",
        "M104 S140                                          ; Prepare for auto bed leveling",
        "G0 Z5 F20000                                       ; Lift Z",
        "G0 X128 Y261 F20000                                ; Move to exposed steel surface",
        "G0 Z-1.01 F1200                                    ; Lower nozzle to stop position",
        "G91                                                ; Set relative positioning",
        "G2 I1 J0 X2 Y0 F2000.1                             ; Execute wipe motion",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G90                                                ; Set absolute positioning",
        "G1 Z10 F1200                                       ; Raise Z",
        ";===== Brush Material Wipe Nozzle =================",
        "G90                                                ; Set absolute positioning",
        "G1 Y250 F30000                                     ; Move to brush position",
        "G1 X55                                             ; Move X",
        "G1 Z1.300 F1200                                    ; Lower nozzle",
        "G1 Y262.5 F6000                                    ; Wipe motion",
        "G91                                                ; Set relative positioning",
        "G1 X-35 F30000                                     ; Move along brush",
        "G1 Y-0.5",
        "G1 X45",
        "G1 Y-0.5",
        "G1 X-45",
        "G1 Y-0.5",
        "G1 X45",
        "G1 Y-0.5",
        "G1 X-45",
        "G1 Y-0.5",
        "G1 X45",
        "G1 Z5.000 F1200                                    ; Lift nozzle",
        "G90                                                ; Set absolute positioning",
        "G1 X30 Y250.000 F30000                             ; Move to brush position",
        "G1 Z1.300 F1200                                    ; Lower nozzle",
        "G1 Y262.5 F6000                                    ; Wipe motion",
        "G91                                                ; Set relative positioning",
        "G1 X35 F30000                                      ; Move along brush",
        "G1 Y-0.5",
        "G1 X-45",
        "G1 Y-0.5",
        "G1 X45",
        "G1 Y-0.5",
        "G1 X-45",
        "G1 Y-0.5",
        "G1 X45",
        "G1 Y-0.5",
        "G1 X-45",
        "G1 Z10.000 F1200                                   ; Lift nozzle",
        ";===== Brush Material Wipe Nozzle End ============",
        "G90                                                ; Set absolute positioning",
        "G1 Y250 F30000                                     ; Move to safe position",
        "G1 X138",
        "G1 Y261",
        "G0 Z-1.01 F1200                                    ; Stop nozzle",
        "G91                                                ; Set relative positioning",
        "G2 I1 J0 X2 Y0 F2000.1",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "M73 P23 R18",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "G2 I1 J0 X2",
        "G2 I-0.75 J0 X-1.5",
        "M109 S140                                          ; Set nozzle temperature",
        "M106 S255                                          ; Turn on fan (G28 turns off fan)",
        "M211 R                                             ; Restore soft endstop status",
        ";===== Bed Leveling ===============================",
        "M1002 judge_flag g29_before_print_flag             ; Check bed leveling flag",
        "G90                                                ; Set absolute positioning",
        "G1 Z5 F1200                                        ; Lift nozzle",
        "G1 X0 Y0 F30000                                    ; Move to home position",
        "G29.2 S1                                           ; Turn on ABL (auto bed level)",
        "M190 S65                                           ; Set and wait bed temp",
        "M109 S140                                          ; Set and wait nozzle temp",
        "M106 S0                                            ; Turn off fan (reduce noise)",
        "M622 J1",
        " M1002 gcode_claim_action : 1",
        " G29 A1 X115.2 Y115.2 I25.6 J25.6                  ; Perform bed leveling",
        " M400                                              ; Wait for all movements to complete",
        " M500                                              ; Save calibration data",
        "M623                                               ; End bed leveling",
        ";===== Home After Wipe Mouth ======================",
        "M1002 judge_flag g29_before_print_flag             ; Check if bed leveling was performed",
        "M622 J0                                            ; Signal start of sequence",
        " M1002 gcode_claim_action : 13                     ; Claim home action",
        " G28                                               ; Home all axes",
        "M623                                               ; End sequence",
        ";===== Home After Wipe Mouth End ==================",
        "G1 X108.000 Y-0.500 F30000                         ; Move to start position",
        "G1 Z0.300 F1200                                    ; Lower Z for calibration",
        "M400                                               ; Wait for moves to complete",
        "G2814 Z0.32                                        ; Set Z offset",
        "M104 S220                                          ; Set nozzle temperature to 220°C for printing",
        ";===== Nozzle Load Line ===========================",
        ";G90                                                ; Set absolute positioning",
        ";M83                                                ; Set extruder to relative mode",
        ";G1 Z5 F1200                                        ; Raise Z before priming",
        ";G1 X88 Y-0.5 F20000                                ; Move to priming position",
        ";G1 Z0.3 F1200                                      ; Lower nozzle for priming",
        ";M109 S220                                          ; Wait for nozzle temperature to reach 220°C",
        ";G1 E2 F300                                         ; Extrude filament",
        ";G1 X168 E4.989 F6000                               ; Extrude along the line",
        ";G1 Z1 F1200                                        ; Lift Z after priming",
        ";===== Extrude Calibration Test ====================",
        "M400                                               ; Wait for all commands to complete",
        "M900 S                                             ; Start calibration",
        "M900 C                                             ; Start calibration cycle",
        "G90                                                ; Set absolute positioning",
        "M83                                                ; Set extruder to relative mode",
        "M109 S220                                          ; Set and wait nozzle temp",
        "G0 X128 E8  F904.991                               ; Extrude calibration test pattern",
        "G0 X133 E.3742  F1508.32",
        "G0 X138 E.3742  F6033.27",
        "G0 X143 E.3742  F1508.32",
        "G0 X148 E.3742  F6033.27",
        "G0 X153 E.3742  F1508.32",
        "G91                                                ; Set relative positioning",
        "G1 X1 Z-0.300                                      ; Lower nozzle slightly",
        "G1 X4                                ",
        "G1 Z1 F1200                                        ; Raise back up",
        "G90                                                ; Return to absolute positioning",
        "M400                                               ; Wait for completion",
        "M900 R                                             ; Reset calibration",
        "M1002 judge_flag extrude_cali_flag                 ; Check calibration status",
        "M622 J1                                            ; Signal start of sequence",
        " G90                                               ; Set absolute positioning",
        " G1 X108.000 Y1.000 F30000                         ; Move to calibration position",
        " G91                                               ; Set relative positioning",
        " G1 Z-0.700 F1200                                  ; Lower nozzle slightly",
        " G90                                               ; Return to absolute positioning",
        " M83                                               ; Set extruder to relative mode",
        " G0 X128 E10  F904.991                             ; Run extrusion test",
        " G0 X133 E.3742  F1508.32",
        " G0 X138 E.3742  F6033.27",
        " G0 X143 E.3742  F1508.32",
        " G0 X148 E.3742  F6033.27",
        " G0 X153 E.3742  F1508.32",
        " G91                                               ; Set relative positioning",
        " G1 X1 Z-0.300                                     ; Lower slightly",
        " G1 X4",
        " G1 Z1 F1200                                       ; Raise back up",
        " G90                                               ; Return to absolute positioning",
        " M400                                              ; Wait for completion",
        "M623                                               ; End sequence",
        "G1 Z0.2                                            ; Lower nozzle slightly",
        "M1002 gcode_claim_action : 0                       ; Claim action",
        "M400                                               ; Wait for actions to complete",
        ";===== Final Print Prep ===========================",
        "G29.1 Z-0.02                                       ; Adjust Z height for PEI plate",
        "M960 S1 P0                                         ; Turn off laser",
        "M960 S2 P0                                         ; Turn off laser",
        "M106 S0                                            ; Turn off fan",
        "M106 P2 S0                                         ; Turn off auxiliary fan",
        "M106 P3 S0                                         ; Turn off chamber fan",
        "M975 S1                                            ; Enable mechanical suppression mode",
        "G90                                                ; Set absolute positioning",
        "M83                                                ; Set extruder to relative mode",
        "T1000                                              ; Tool selection",
        "M211 X0 Y0 Z0                                      ; Disable soft endstops",
        "M1007 S1                                           ; Enable mass estimation",
        "G29.4                                              ; Start additional leveling routine",
        "G90                                                ; Set absolute positioning",
        "G21                                                ; Set units to millimeters",
        "M83                                                ; Set extruder to relative mode",
        "M106 P3 S200                                       ; Set chamber fan speed",
        "M981 S1 P20000                                     ; Open spaghetti detector"
    ],
    "gcodePost": [
        "; ===== FOOTER ====================================",
        "M204 S6000                                         ; Set acceleration to 6000 mm/s^2",
        "M1003 S0                                           ; Disable power loss recovery",
        "M106 S0                                            ; Turn off part cooling fan",
        "M106 P2 S0                                         ; Turn off auxiliary cooling fan",
        "M981 S0 P20000                                     ; Close spaghetti detector",
        "M106 P3 S0                                         ; Turn off chamber fan",
        "G392 S0                                            ; Turn off nozzle clog detection",
        "M400                                               ; Wait for buffer to clear",
        "G92 E0                                             ; Zero the extruder",
        "G1 E-0.8 F1800                                     ; Retract filament by 0.8mm",
        "G1 Z26.1 F900                                      ; Raise Z-axis slightly",
        "G1 X0 Y128 F18000                                  ; Move to safe position",
        "G1 X-13.0 F3000                                    ; Move to another safe position",
        ";===== Timelapse Sequence ========================",
        "M1002 judge_flag timelapse_record_flag",
        "M622 J1",
        " M400 P100",
        " M971 S11 C11 O0",
        " M991 S0 P-1                                       ; End timelapse at safe pos",
        "M623                                               ; End conditional block",
        ";===== End of Print ==============================",
        "M140 S0                                            ; Turn off heated bed",
        "M106 S0                                            ; Turn off all cooling fans",
        "M106 P2 S0                                         ; Turn off auxiliary cooling fan",
        "M106 P3 S0                                         ; Turn off chamber cooling fan",
        ";===== Pull Back Filament ========================",
        "M620 S255                                          ; Retract filament to AMS",
        "G1 X267 F15000                                     ; Move to retract position",
        "T255                                               ; Select tool 255 (AMS retract)",
        "G1 X-28.5 F18000",
        "G1 X-48.2 F3000",
        "G1 X-28.5 F18000",
        "G1 X-48.2 F3000",
        "M621 S255                                          ; Complete filament unload",
        "M104 S0                                            ; Turn off hotend",
        "M400                                               ; Wait for all motion to complete",
        "M17 S                                              ; Enable steppers",
        "M17 Z0.4                                           ; Reduce Z stepper motor current",
        "G1 Z125.6 F600                                     ; Move Z-axis up",
        "G1 Z123.6",
        "M400 P100",
        "M17 R                                              ; Restore Z motor current",
        "G90                                                ; Set absolute positioning",
        "G1 X-48 Y180 F3600                                 ; Move to parking position",
        "M220 S100                                          ; Reset feedrate to 100%",
        "M201.2 K1.0                                        ; Reset acceleration magnitude",
        "M73.2 R1.0                                         ; Reset remaining time estimation",
        "M1002 set_gcode_claim_speed_level : 0",
        ";===== Printer Finish Sound ======================",
        "M17",
        "M400 S1",
        "M1006 S1",
        "M1006 A0 B20 L100 C37 D20 M40 E42 F20 N60",
        "M1006 A0 B10 L100 C44 D10 M60 E44 F10 N60",
        "M1006 A0 B10 L100 C46 D10 M80 E46 F10 N80",
        "M1006 A44 B20 L100 C39 D20 M60 E48 F20 N60",
        "M1006 A0 B10 L100 C44 D10 M60 E44 F10 N60",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N60",
        "M1006 A0 B10 L100 C39 D10 M60 E39 F10 N60",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N60",
        "M1006 A0 B10 L100 C44 D10 M60 E44 F10 N60",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N60",
        "M1006 A0 B10 L100 C39 D10 M60 E39 F10 N60",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N60",
        "M1006 A0 B10 L100 C48 D10 M60 E44 F10 N80",
        "M1006 A0 B10 L100 C0 D10 M60 E0 F10 N80",
        "M1006 A44 B20 L100 C49 D20 M80 E41 F20 N80",
        "M1006 A0 B20 L100 C0 D20 M60 E0 F20 N80",
        "M1006 A0 B20 L100 C37 D20 M30 E37 F20 N60",
        "M1006 W",
        "M400                                               ; Wait for completion",
        "M18 X Y Z                                          ; Disable motors",
        "M73 P100 R0                                        ; Set progress to 100%"
    ],
    "gcodeChange": [
        "; BEGIN tool change from {last_tool} to {tool}",
        "M620 S{tool}A                 ; prepare tool change",
        "M204 S9000                    ; Set acceleration to 9000 mm/s^2",
        "M620.11 S0                    ; Reset filament retraction state",
        "M400                          ; wait for moves to complete",
        "M620.1 E F187 T240            ; set purge rate 187 temp 240",
        "T{tool}                       ; initiate tool change",
        "M620.1 E F374 T240            ; set purge rate 374 temp 240",
        "M620.11 S0                    ; Reset filament retraction state",
        "G92 E0                        ; reset extruder position",
        "M400                          ; wait for moves to complete",
        "                              ; -- PURGE --",
        "M109 S240                     ; Set nozzle temperature to 240°C",
        "G1 E23.7 F187                 ; Extrude 23.7mm of filament at flowrate 187",
        "G1 E0.914611 F50              ; Pulsatile extrusion",
        "G1 E10.518 F187               ; Continue extrusion at flowrate 187",
        "G1 E0.914611 F50              ; Pulsatile extrusion",
        "G1 E10.518 F374               ; Continue extrusion at flowrate 374",
        "G1 E0.914611 F50              ; Pulsatile extrusion",
        "G1 E10.518 F374               ; Continue extrusion at flowrate 374",
        "G1 E0.914611 F50              ; Pulsatile extrusion",
        "G1 E10.518 F374               ; Continue extrusion at flowrate 374",
        "G1 E-2 F1800                  ; Retract filament by 2mm",
        "G1 E2 F300                    ; Recover retraction slowly",
        "M400                          ; Wait for all movements to complete",
        "M109 S{temp}                  ; Set nozzle temperature back to print temp",
        "                              ; -- SHAKE --",
        "M106 P1 S255                  ; Turn on nozzle cooling fan to full speed",
        "M400 S3                       ; Wait for all movements to complete",
        "G1 X70 F5000                  ; Move to X70",
        "G1 X90 F3000                  ; Move to X90",
        "G1 Y255 F4000                 ; Move to Y255",
        "G1 X105 F5000                 ; Move to X105",
        "G1 Y265                       ; Move to Y265",
        "G1 X70 F10000                 ; Rapid move to X70",
        "G1 X100 F5000                 ; Move to X100",
        "G1 X70 F10000                 ; Rapid move back to X70",
        "G1 X100 F5000                 ; Move to X100",
        "G1 X70 F10000                 ; Shake filament residue",
        "G1 X80 F15000",
        "G1 X60",
        "G1 X80",
        "G1 X60",
        "G1 X80                        ; Shake to put down garbage",
        "G1 X100 F5000                 ; Move to X100",
        "G1 X165 F15000                ; Wipe and shake",
        "G1 Y256                       ; Move Y aside to prevent collision",
        "M400                          ; Wait for all movements to complete",
        "M204 S10000                   ; Set acceleration to 10000 mm/s^2",
        "M621 S{tool}A                 ; complete tool change",
        "; END tool change"
    ],
    "gcodeProc": "",
    "gcodeFExt": "gcode",
    "extruders": [
        {
            "extFilament": 1.75,
            "extNozzle": 0.4,
            "extOffsetX": 0,
            "extOffsetY": 0
        },
        {
            "extFilament": 1.75,
            "extNozzle": 0.4,
            "extOffsetX": 0,
            "extOffsetY": 0
        },
        {
            "extFilament": 1.75,
            "extNozzle": 0.4,
            "extOffsetX": 0,
            "extOffsetY": 0
        },
        {
            "extFilament": 1.75,
            "extNozzle": 0.4,
            "extOffsetX": 0,
            "extOffsetY": 0
        }
    ],
    "new": false,
    "deviceName": "Bambu A1",
    "bedBelt": false,
    "fwRetract": false,
    "filamentSource": "direct",
    "extras": {
        "bbl": {
            "luke": {
                "host": "10.20.20.75",
                "code": "20709223",
                "serial": "01P09C482401767",
                "modified": true
            },
            "leia": {
                "host": "10.20.20.76",
                "code": "35129782",
                "serial": "01P09C461603301",
                "modified": true
            },
            "vader": {
                "host": "10.20.20.77",
                "code": "17711811",
                "serial": "01P00A413100516",
                "modified": true
            },
            "Scrappy": {
                "host": "10.10.2.5",
                "serial": "01S00A292500224",
                "code": "38373335",
                "modified": true
            }
        }
    },
    "imageURL": "",
    "deviceZMax": 0,
    "gcodeTime": 1,
    "gcodeFeature": [],
    "profiles": [
        {
            "processName": "Bambu PLA",
            "sliceHeight": 0.2,
            "sliceShells": 2,
            "sliceShellOrder": "in-out",
            "sliceLayerStart": "last",
            "sliceFillAngle": 45,
            "sliceFillOverlap": 0.35,
            "sliceFillSparse": 0.1,
            "sliceFillType": "grid",
            "sliceAdaptive": false,
            "sliceMinHeight": 0,
            "sliceSupportDensity": 0.5,
            "sliceSupportOffset": 0.4,
            "sliceSupportGap": 1,
            "sliceSupportSize": 5,
            "sliceSupportArea": 0.25,
            "sliceSupportExtra": 0,
            "sliceSupportAngle": 60,
            "sliceSupportNozzle": 0,
            "sliceSolidMinArea": 0,
            "sliceBottomLayers": 2,
            "sliceTopLayers": 3,
            "firstLayerRate": 20,
            "firstLayerPrintMult": 1,
            "firstLayerYOffset": 0,
            "firstLayerBrim": 0,
            "firstLayerBeltLead": 0,
            "firstLayerFanSpeed": 0,
            "outputTemp": 220,
            "outputBedTemp": 65,
            "outputFanSpeed": 255,
            "outputFeedrate": 120,
            "outputFinishrate": 90,
            "outputSeekrate": 200,
            "outputShellMult": 1.2,
            "outputFillMult": 1.2,
            "outputSparseMult": 1.2,
            "outputRetractDist": 2,
            "outputRetractSpeed": 80,
            "outputRetractWipe": 0,
            "outputRetractDwell": 0,
            "outputShortPoly": 100,
            "outputMinSpeed": 5,
            "outputCoastDist": 0,
            "outputLayerRetract": false,
            "zHopDistance": 0,
            "antiBacklash": 0,
            "sliceFillWidth": 1,
            "sliceFillRate": 0,
            "sliceSupportEnable": false,
            "firstSliceHeight": 0.3,
            "firstLayerFillRate": 80,
            "firstLayerLineMult": 1,
            "firstLayerNozzleTemp": 210,
            "firstLayerBedTemp": 60,
            "firstLayerBrimTrig": 0,
            "firstLayerBrimGap": 0,
            "outputRaft": false,
            "outputRaftSpacing": 0.2,
            "outputBrimCount": 0,
            "outputBrimOffset": 2,
            "outputPurgeTower": 0,
            "outputInvertX": false,
            "outputInvertY": false,
            "arcTolerance": 0,
            "ranges": [],
            "sliceLineWidth": 0,
            "sliceFillRepeat": 2,
            "firstLayerBrimIn": 0,
            "firstLayerBeltBump": 0,
            "outputBeltFirst": false,
            "outputLoops": 0,
            "sliceFillGrow": 0,
            "sliceSolidRate": 0,
            "sliceSupportSpan": 5,
            "sliceSupportOutline": true,
            "firstLayerFlatten": 0,
            "outputDraftShield": false,
            "outputAvoidGaps": true,
            "sliceDetectThin": "off",
            "outputAlternating": false,
            "sliceLayerStartX": 0,
            "sliceLayerStartY": 0,
            "sliceSupportGrow": 0,
            "outputFanLayer": 1,
            "outputNozzle": 0,
            "sliceAngle": 45,
            "sliceZInterleave": false
        }
    ]
}