{
  "config": {},
  "extra": {
    "ds": {
      "offset": [
        4933.333333333333,
        -3066.4043209876545
      ],
      "scale": 0.2867256637168142
    },
    "frontendVersion": "1.48.7"
  },
  "groups": [
    {
      "bounding": [
        -2200,
        4750,
        1270,
        840
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 1,
      "title": "Prompt Enhancer (Optional)"
    },
    {
      "bounding": [
        -3160,
        4060,
        930,
        1530
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 2,
      "title": "User Inputs"
    },
    {
      "bounding": [
        -900,
        4060,
        1400,
        1540
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 3,
      "title": "Upscale Video to 2K (Optional)"
    },
    {
      "bounding": [
        -2200,
        4060,
        1270,
        670
      ],
      "color": "#A88",
      "flags": {},
      "id": 4,
      "title": "Video Generation (Core)"
    },
    {
      "bounding": [
        -2830,
        5190,
        350,
        360
      ],
      "color": "#3f789e",
      "flags": {},
      "id": 5,
      "title": "Feature Flags"
    }
  ],
  "id": "c23969d8-7734-4984-ac92-ee71859d3c74",
  "last_link_id": 42,
  "last_node_id": 30,
  "links": [
    [
      17,
      7,
      0,
      12,
      1,
      "STRING"
    ],
    [
      18,
      10,
      0,
      13,
      1,
      "VIDEO"
    ],
    [
      21,
      14,
      0,
      12,
      0,
      "STRING"
    ],
    [
      23,
      12,
      0,
      8,
      0,
      "STRING"
    ],
    [
      25,
      19,
      0,
      13,
      2,
      "BOOLEAN"
    ],
    [
      26,
      18,
      0,
      12,
      2,
      "BOOLEAN"
    ],
    [
      41,
      30,
      0,
      13,
      0,
      "VIDEO"
    ],
    [
      40,
      30,
      0,
      2,
      0,
      "VIDEO"
    ],
    [
      22,
      14,
      0,
      7,
      3,
      "STRING"
    ],
    [
      10,
      2,
      0,
      10,
      0,
      "VIDEO"
    ],
    [
      12,
      8,
      0,
      10,
      4,
      "STRING"
    ],
    [
      20,
      13,
      0,
      11,
      0,
      "VIDEO"
    ],
    [
      38,
      28,
      0,
      30,
      0,
      "IMAGE"
    ],
    [
      39,
      29,
      0,
      30,
      1,
      "IMAGE"
    ],
    [
      42,
      12,
      0,
      30,
      3,
      "STRING"
    ]
  ],
  "nodes": [
    {
      "flags": {
        "collapsed": false
      },
      "id": 2,
      "inputs": [
        {
          "link": 40,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "format.codec",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format.codec"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "shape": 7,
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 12,
      "outputs": [
        {
          "links": [
            10
          ],
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -1720,
        4140
      ],
      "properties": {},
      "size": [
        740,
        150
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video/video/MiniMax_H3_flf2v_768P",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "codec": "auto",
        "filename_prefix": "video/video/MiniMax_H3_flf2v_768P",
        "format": "auto",
        "format.codec": "auto"
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 7,
      "inputs": [
        {
          "link": null,
          "localized_name": "first_frame",
          "name": "first_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 22,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "ratio",
          "name": "model.ratio",
          "type": "COMBO",
          "widget": {
            "name": "model.ratio"
          }
        },
        {
          "link": null,
          "localized_name": "image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        }
      ],
      "mode": 0,
      "order": 8,
      "outputs": [
        {
          "links": [
            17
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        -2170,
        4830
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03ContextIRNode"
      },
      "size": [
        400,
        295
      ],
      "type": "MinimaxHailuo03ContextIRNode",
      "widgets_values": [
        "MiniMax H3",
        "",
        5,
        "adaptive"
      ],
      "widgets_values_named": {
        "model": "MiniMax H3",
        "model.duration": 5,
        "model.prompt": "",
        "model.ratio": "adaptive"
      }
    },
    {
      "flags": {},
      "id": 8,
      "inputs": [
        {
          "link": 23,
          "localized_name": "text",
          "name": "text",
          "type": "STRING"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMBO",
          "widget": {
            "name": "format"
          }
        }
      ],
      "mode": 0,
      "order": 10,
      "outputs": [
        {
          "links": [
            12
          ],
          "localized_name": "text",
          "name": "text",
          "type": "STRING"
        }
      ],
      "pos": [
        -1710,
        4830
      ],
      "properties": {
        "Node name for S&R": "SaveText"
      },
      "size": [
        750,
        650
      ],
      "type": "SaveText",
      "widgets_values": [
        "H3_prompt",
        "txt"
      ],
      "widgets_values_named": {
        "filename_prefix": "H3_prompt",
        "format": "txt"
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 10,
      "inputs": [
        {
          "link": 10,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "first_frame",
          "name": "first_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 12,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": null,
          "localized_name": "image_1",
          "name": "model.reference_images.image_1",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "video_1",
          "name": "model.reference_videos.video_1",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "audio_1",
          "name": "model.reference_audios.audio_1",
          "shape": 7,
          "type": "AUDIO"
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 13,
      "outputs": [
        {
          "links": [
            18
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -830,
        4570
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03RegenerateNode"
      },
      "size": [
        400,
        306
      ],
      "type": "MinimaxHailuo03RegenerateNode",
      "widgets_values": [
        "MiniMax H3",
        "",
        "2K",
        false
      ],
      "widgets_values_named": {
        "model": "MiniMax H3",
        "model.prompt": "",
        "model.resolution": "2K",
        "watermark": false
      }
    },
    {
      "flags": {},
      "id": 11,
      "inputs": [
        {
          "link": 20,
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        },
        {
          "link": null,
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          }
        },
        {
          "link": null,
          "localized_name": "format",
          "name": "format",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "format.codec",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "format.codec"
          }
        },
        {
          "link": null,
          "localized_name": "codec",
          "name": "codec",
          "shape": 7,
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "codec"
          }
        }
      ],
      "mode": 0,
      "order": 15,
      "outputs": [
        {
          "links": [],
          "localized_name": "video",
          "name": "video",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -350,
        4570
      ],
      "properties": {},
      "size": [
        680,
        150
      ],
      "type": "SaveVideo",
      "widgets_values": [
        "video/Minimax_h3_max",
        "auto",
        "auto",
        "auto"
      ],
      "widgets_values_named": {
        "codec": "auto",
        "filename_prefix": "video/Minimax_h3_max",
        "format": "auto",
        "format.codec": "auto"
      }
    },
    {
      "bgcolor": "#533",
      "color": "#322",
      "flags": {},
      "id": 12,
      "inputs": [
        {
          "link": 21,
          "localized_name": "on_false",
          "name": "on_false",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": 17,
          "localized_name": "on_true",
          "name": "on_true",
          "shape": 7,
          "type": "STRING"
        },
        {
          "link": 26,
          "localized_name": "switch",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          }
        }
      ],
      "mode": 0,
      "order": 9,
      "outputs": [
        {
          "links": [
            23,
            42
          ],
          "localized_name": "output",
          "name": "output",
          "type": "STRING"
        }
      ],
      "pos": [
        -2100,
        5340
      ],
      "properties": {
        "Node name for S&R": "ComfySwitchNode"
      },
      "size": [
        270,
        110
      ],
      "type": "ComfySwitchNode",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "switch": false
      }
    },
    {
      "bgcolor": "#533",
      "color": "#322",
      "flags": {},
      "id": 13,
      "inputs": [
        {
          "link": 41,
          "localized_name": "on_false",
          "name": "on_false",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": 18,
          "localized_name": "on_true",
          "name": "on_true",
          "shape": 7,
          "type": "VIDEO"
        },
        {
          "link": 25,
          "localized_name": "switch",
          "name": "switch",
          "type": "BOOLEAN",
          "widget": {
            "name": "switch"
          }
        }
      ],
      "mode": 0,
      "order": 14,
      "outputs": [
        {
          "links": [
            20
          ],
          "localized_name": "output",
          "name": "output",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -750,
        4990
      ],
      "properties": {
        "Node name for S&R": "ComfySwitchNode"
      },
      "size": [
        270,
        110
      ],
      "type": "ComfySwitchNode",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "switch": false
      }
    },
    {
      "flags": {},
      "id": 14,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "STRING",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 0,
      "outputs": [
        {
          "links": [
            21,
            22
          ],
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING"
        }
      ],
      "pos": [
        -2850,
        4770
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "size": [
        410,
        380
      ],
      "title": "Text (Prompt)",
      "type": "PrimitiveStringMultiline",
      "widgets_values": [
        "[Segment 1]\nStyle: dream physics, deep-blue monochrome with a misty diffusion in the glow, shadows keeping faint layers instead of pure black, spatial scale distortion, photoreal texture.\nAction: [0s-1.5s] The projected face breathes with light shifts, dust drifting, his silhouette still; [1.5s-4s] The camera pulls back slowly and the giant face shrinks with it, revealing that this colossal face floats on the wall of a vast bedroom: a projection inside a dream-room, his silhouette standing at the bedside looking up; [4s-8s] The camera keeps pulling back past the room's boundary as the walls curl inward like paper, folding into the darkness of a second dream layer, the giant face shrinking with the curling walls into a floating glowing mask suspended in the void, the man motionless and looking up throughout, the frame ending with the mask hovering directly above him. No text. Camera: one continuous pull-back, slight warping as the space folds, no cuts. Audio: a low drone wrapped in an underwater-feeling muted reverb, paper-like stretching as the space curls, one distant bell.\n\n[Segment 2]\nStyle: same dreamy haze, the blue one shade darker, a deeper dream layer.\nAction: [0s-2s] The glowing mask rotates slowly above him; he raises a hand, and the instant his fingertips near it the whole space collapses in scale: the mask becomes a reflection inside a pupil, his body edge receding into silhouette; [2s-5s] The viewpoint reveals itself as his eye all along: the frame wavers slightly, we have been looking through his pupil, the blue iris texture rings into view at the frame's edge; [5s-8s] The giant face in the pupil breathes once with light, the dream begins to dissolve: the image tears slightly like a bad signal, the reflection flickers twice, locking finally on the extreme eye close-up, a deeper blue surfacing slowly in the depths of the iris. No text. Camera: an objective view snapping into pupil-POV, the switch made through a slight signal-tear, no cuts. Audio: a heartbeat approaching to become the main beat, one falling bass note as the mask shrinks, signal noise through the tear, every sound sucked away on the last beat leaving a faint ringing in the ears.\n\n[Shared]\nDreamy haze over the blue monochrome, faint layers in the shadows, photoreal texture, spatial scale distorting with each dream layer. Negative: no water ripples, no third-person frontal face, no color shift away from the blue monochrome, no text overlays, no subtitles, no dissolve transitions, no extra light sources, no logo."
      ],
      "widgets_values_named": {
        "value": "[Segment 1]\nStyle: dream physics, deep-blue monochrome with a misty diffusion in the glow, shadows keeping faint layers instead of pure black, spatial scale distortion, photoreal texture.\nAction: [0s-1.5s] The projected face breathes with light shifts, dust drifting, his silhouette still; [1.5s-4s] The camera pulls back slowly and the giant face shrinks with it, revealing that this colossal face floats on the wall of a vast bedroom: a projection inside a dream-room, his silhouette standing at the bedside looking up; [4s-8s] The camera keeps pulling back past the room's boundary as the walls curl inward like paper, folding into the darkness of a second dream layer, the giant face shrinking with the curling walls into a floating glowing mask suspended in the void, the man motionless and looking up throughout, the frame ending with the mask hovering directly above him. No text. Camera: one continuous pull-back, slight warping as the space folds, no cuts. Audio: a low drone wrapped in an underwater-feeling muted reverb, paper-like stretching as the space curls, one distant bell.\n\n[Segment 2]\nStyle: same dreamy haze, the blue one shade darker, a deeper dream layer.\nAction: [0s-2s] The glowing mask rotates slowly above him; he raises a hand, and the instant his fingertips near it the whole space collapses in scale: the mask becomes a reflection inside a pupil, his body edge receding into silhouette; [2s-5s] The viewpoint reveals itself as his eye all along: the frame wavers slightly, we have been looking through his pupil, the blue iris texture rings into view at the frame's edge; [5s-8s] The giant face in the pupil breathes once with light, the dream begins to dissolve: the image tears slightly like a bad signal, the reflection flickers twice, locking finally on the extreme eye close-up, a deeper blue surfacing slowly in the depths of the iris. No text. Camera: an objective view snapping into pupil-POV, the switch made through a slight signal-tear, no cuts. Audio: a heartbeat approaching to become the main beat, one falling bass note as the mask shrinks, signal noise through the tear, every sound sucked away on the last beat leaving a faint ringing in the ears.\n\n[Shared]\nDreamy haze over the blue monochrome, faint layers in the shadows, photoreal texture, spatial scale distorting with each dream layer. Negative: no water ripples, no third-person frontal face, no color shift away from the blue monochrome, no text overlays, no subtitles, no dissolve transitions, no extra light sources, no logo."
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 17,
      "inputs": [],
      "mode": 0,
      "order": 1,
      "outputs": [],
      "pos": [
        -3800,
        4090
      ],
      "properties": {},
      "size": [
        580,
        1220
      ],
      "title": "Note: Guide",
      "type": "MarkdownNote",
      "widgets_values": [
        "## How this graph is wired\n\nThis is a MiniMax H3 Max **first-last-frame to video** template. It has **one required path** and **two optional stages**. You choose whether to run the optional stages. Both start **off**.\n\nOn the canvas, two nodes are marked **red**. Those are **Switch** nodes. Each is the on/off gate for an optional stage, driven by a boolean in the **Feature Flags** group.\n\n### 1. Video generation (required)\n\n**MiniMax H3 First-Last-Frame to Video** is the core. It always runs. Feed it **Text (Prompt)**, **Load Image (First Frame)**, and **Load Image (Last Frame)**. The first **Save Video** is the first-pass output.\n\n### 2. Prompt enhance (optional)\n\n**Boolean (Prompt Enhance)** feeds the red **Switch** in **Prompt Enhancer (Optional)**.\n\n- Set it to `true` to rewrite the prompt with **MiniMax H3 Context IR (Prompt Enhancer)** before generation.\n- Leave it `false` to send your raw prompt straight to video generation.\n\n### 3. Video upscale (optional)\n\n**Boolean (Upscale to 2K)** feeds the red **Switch** in **Upscale Video to 2K (Optional)**.\n\n- Set it to `true` to run **MiniMax H3 Regenerate to 2K** on the first-pass video.\n- Leave it `false` to save the first-pass video as-is.\n\nUpscale **only accepts 768P** source video. If you turn this stage on, generate at **768P**. Other resolutions are not supported by **MiniMax H3 Regenerate to 2K**.\n\nYou can enable section 2, section 3, both, or neither.\n\n### Duration must match\n\nKeep **duration** the same on every MiniMax node you actually use (generation, prompt enhance, and upscale). The clip length must match across those stages. If one node is 5s and another is 6s, enhance or upscale will be out of sync with the generated video.\n\n### Extra inputs must be duplicated\n\nThe generate node, the prompt-enhance node, and the upscale node do **not** share extra context automatically.\n\n**Load Image (First Frame)** and **Load Image (Last Frame)** are already wired into generation. If you turn on prompt enhance or upscale, **also plug those same two images** (and any other extra inputs you add: another image, a reference video, audio) into:\n\n- **MiniMax H3 Context IR (Prompt Enhancer)**, so prompt enhance sees the same frames and references\n- **MiniMax H3 Regenerate to 2K**, so upscale sees the same frames and references\n\nIf you only wire extras into generation, enhance and upscale will run without that context and the result will drift."
      ],
      "widgets_values_named": {
        "text": "## How this graph is wired\n\nThis is a MiniMax H3 Max **first-last-frame to video** template. It has **one required path** and **two optional stages**. You choose whether to run the optional stages. Both start **off**.\n\nOn the canvas, two nodes are marked **red**. Those are **Switch** nodes. Each is the on/off gate for an optional stage, driven by a boolean in the **Feature Flags** group.\n\n### 1. Video generation (required)\n\n**MiniMax H3 First-Last-Frame to Video** is the core. It always runs. Feed it **Text (Prompt)**, **Load Image (First Frame)**, and **Load Image (Last Frame)**. The first **Save Video** is the first-pass output.\n\n### 2. Prompt enhance (optional)\n\n**Boolean (Prompt Enhance)** feeds the red **Switch** in **Prompt Enhancer (Optional)**.\n\n- Set it to `true` to rewrite the prompt with **MiniMax H3 Context IR (Prompt Enhancer)** before generation.\n- Leave it `false` to send your raw prompt straight to video generation.\n\n### 3. Video upscale (optional)\n\n**Boolean (Upscale to 2K)** feeds the red **Switch** in **Upscale Video to 2K (Optional)**.\n\n- Set it to `true` to run **MiniMax H3 Regenerate to 2K** on the first-pass video.\n- Leave it `false` to save the first-pass video as-is.\n\nUpscale **only accepts 768P** source video. If you turn this stage on, generate at **768P**. Other resolutions are not supported by **MiniMax H3 Regenerate to 2K**.\n\nYou can enable section 2, section 3, both, or neither.\n\n### Duration must match\n\nKeep **duration** the same on every MiniMax node you actually use (generation, prompt enhance, and upscale). The clip length must match across those stages. If one node is 5s and another is 6s, enhance or upscale will be out of sync with the generated video.\n\n### Extra inputs must be duplicated\n\nThe generate node, the prompt-enhance node, and the upscale node do **not** share extra context automatically.\n\n**Load Image (First Frame)** and **Load Image (Last Frame)** are already wired into generation. If you turn on prompt enhance or upscale, **also plug those same two images** (and any other extra inputs you add: another image, a reference video, audio) into:\n\n- **MiniMax H3 Context IR (Prompt Enhancer)**, so prompt enhance sees the same frames and references\n- **MiniMax H3 Regenerate to 2K**, so upscale sees the same frames and references\n\nIf you only wire extras into generation, enhance and upscale will run without that context and the result will drift."
      }
    },
    {
      "flags": {},
      "id": 18,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "BOOLEAN",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 2,
      "outputs": [
        {
          "links": [
            26
          ],
          "localized_name": "BOOLEAN",
          "name": "BOOLEAN",
          "type": "BOOLEAN"
        }
      ],
      "pos": [
        -2790,
        5270
      ],
      "properties": {
        "Node name for S&R": "PrimitiveBoolean"
      },
      "size": [
        270,
        90
      ],
      "title": "Boolean (Prompt Enhance)",
      "type": "PrimitiveBoolean",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "value": false
      }
    },
    {
      "flags": {},
      "id": 19,
      "inputs": [
        {
          "link": null,
          "localized_name": "value",
          "name": "value",
          "type": "BOOLEAN",
          "widget": {
            "name": "value"
          }
        }
      ],
      "mode": 0,
      "order": 3,
      "outputs": [
        {
          "links": [
            25
          ],
          "localized_name": "BOOLEAN",
          "name": "BOOLEAN",
          "type": "BOOLEAN"
        }
      ],
      "pos": [
        -2790,
        5420
      ],
      "properties": {
        "Node name for S&R": "PrimitiveBoolean"
      },
      "size": [
        270,
        90
      ],
      "title": "Boolean (Upscale to 2K)",
      "type": "PrimitiveBoolean",
      "widgets_values": [
        false
      ],
      "widgets_values_named": {
        "value": false
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 21,
      "inputs": [],
      "mode": 0,
      "order": 4,
      "outputs": [],
      "pos": [
        -3150,
        5430
      ],
      "properties": {},
      "size": [
        290,
        120
      ],
      "title": "Note: Requirement for Video Upscale",
      "type": "MarkdownNote",
      "widgets_values": [
        "Upscale only accepts **768P** source video. Generate at 768P if you turn on **Boolean (Upscale to 2K)**. Other resolutions are not supported."
      ],
      "widgets_values_named": {
        "text": "Upscale only accepts **768P** source video. Generate at 768P if you turn on **Boolean (Upscale to 2K)**. Other resolutions are not supported."
      }
    },
    {
      "bgcolor": "#000",
      "color": "#222",
      "flags": {},
      "id": 27,
      "inputs": [],
      "mode": 0,
      "order": 5,
      "outputs": [],
      "pos": [
        -4170,
        4090
      ],
      "properties": {},
      "size": [
        320,
        370
      ],
      "type": "MarkdownNote",
      "widgets_values": [
        "## Input Assets\n\n- [dream_face_first.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_first.png)\n- [dream_face_last.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_last.png)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      ],
      "widgets_values_named": {
        "text": "## Input Assets\n\n- [dream_face_first.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_first.png)\n- [dream_face_last.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_last.png)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
      }
    },
    {
      "flags": {},
      "id": 28,
      "inputs": [
        {
          "link": null,
          "localized_name": "image",
          "name": "image",
          "type": "COMBO",
          "widget": {
            "name": "image"
          }
        },
        {
          "link": null,
          "localized_name": "choose file to upload",
          "name": "upload",
          "type": "IMAGEUPLOAD",
          "widget": {
            "name": "upload"
          }
        }
      ],
      "mode": 0,
      "order": 6,
      "outputs": [
        {
          "links": [
            38
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -3050,
        4240
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        290,
        380
      ],
      "title": "Load Image (First Frame)",
      "type": "LoadImage",
      "widgets_values": [
        "dream_face_first.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "dream_face_first.png",
        "upload": "image"
      }
    },
    {
      "flags": {},
      "id": 29,
      "inputs": [
        {
          "link": null,
          "localized_name": "image",
          "name": "image",
          "type": "COMBO",
          "widget": {
            "name": "image"
          }
        },
        {
          "link": null,
          "localized_name": "choose file to upload",
          "name": "upload",
          "type": "IMAGEUPLOAD",
          "widget": {
            "name": "upload"
          }
        }
      ],
      "mode": 0,
      "order": 7,
      "outputs": [
        {
          "links": [
            39
          ],
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE"
        },
        {
          "links": null,
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK"
        }
      ],
      "pos": [
        -2670,
        4240
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": [
        290,
        380
      ],
      "title": "Load Image (Last Frame)",
      "type": "LoadImage",
      "widgets_values": [
        "dream_face_last.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "dream_face_last.png",
        "upload": "image"
      }
    },
    {
      "bgcolor": "#653",
      "color": "#432",
      "flags": {},
      "id": 30,
      "inputs": [
        {
          "link": 38,
          "localized_name": "first_frame",
          "name": "first_frame",
          "type": "IMAGE"
        },
        {
          "link": 39,
          "localized_name": "last_frame",
          "name": "last_frame",
          "shape": 7,
          "type": "IMAGE"
        },
        {
          "link": null,
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          }
        },
        {
          "link": 42,
          "localized_name": "prompt",
          "name": "model.prompt",
          "type": "STRING",
          "widget": {
            "name": "model.prompt"
          }
        },
        {
          "link": null,
          "localized_name": "resolution",
          "name": "model.resolution",
          "type": "COMBO",
          "widget": {
            "name": "model.resolution"
          }
        },
        {
          "link": null,
          "localized_name": "duration",
          "name": "model.duration",
          "type": "INT",
          "widget": {
            "name": "model.duration"
          }
        },
        {
          "link": null,
          "localized_name": "prompt_expansion_mode",
          "name": "model.prompt_expansion_mode",
          "type": "COMBO",
          "widget": {
            "name": "model.prompt_expansion_mode"
          }
        },
        {
          "link": null,
          "localized_name": "seed",
          "name": "seed",
          "type": "INT",
          "widget": {
            "name": "seed"
          }
        },
        {
          "link": null,
          "localized_name": "watermark",
          "name": "watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "watermark"
          }
        }
      ],
      "mode": 0,
      "order": 11,
      "outputs": [
        {
          "links": [
            40,
            41
          ],
          "localized_name": "VIDEO",
          "name": "VIDEO",
          "type": "VIDEO"
        }
      ],
      "pos": [
        -2160,
        4140
      ],
      "properties": {
        "Node name for S&R": "MinimaxHailuo03FirstLastFrameNode"
      },
      "size": [
        400,
        315
      ],
      "type": "MinimaxHailuo03FirstLastFrameNode",
      "widgets_values": [
        "MiniMax H3 Max",
        "",
        "768P",
        5,
        "balanced",
        4098290433,
        "randomize",
        false
      ],
      "widgets_values_named": {
        "control_after_generate": "randomize",
        "model": "MiniMax H3 Max",
        "model.duration": 5,
        "model.prompt": "",
        "model.prompt_expansion_mode": "balanced",
        "model.resolution": "768P",
        "seed": 4098290433,
        "watermark": false
      }
    }
  ],
  "revision": 0,
  "version": 0.4
}